初探802.11协议(4)——Wi-Fi QoS

news2024/11/19 6:19:46

目录

一. QoS引入

二. QoS机制

2.1 IEEE 802.11e

2.1.1 802.11e与WMM

2.1.2 详细说明​

2.1.2.1 QoS Control 

2.1.2.2 TC

2.1.2.3 TS

2.2 WFA QoS Management

2.2.1 MSCS

2.2.2 DSCP​​​​​​​

三. 影响QoS机制的因素分析

小结

REF

一. QoS引入

由初探802.11协议(0)——PCF/DCF与CSMA/CA机制介绍的“基于 CSMA/CD 的 DCF 调度模式”可知,

  • 所有STA平等地竞争无线资源,在同一个无线网络中如果在某一时刻同时有多个STA使用网络,就会引起冲突;
  • 由于没有区分业务优先级,AP和STA对外发送的帧会按同等优先级对待,当发生流量拥塞时,需要优先处理的报文(例如语音报文)和普通的报文(例如浏览网页的报文)会按相同的概率被丢弃。

Wi-Fi为了应对各类的业务体验,则需要进行服务的区分对待,从而引入Wi-Fi QoS。

二. QoS机制

调控Wi-Fi QoS相关的手段应该是有很多的,这里介绍几种常见的。

2.1 IEEE 802.11e

初始的802.11协议中有DCF和PCF两种工作模式,但是不支持QoS,后来在802.11e中引入了QoS,从而支持QoS的DCF模式就变成了EDCA模式,支持QoS的PCF就变成了HCCA模式,两者最大的共同点就是都支持TXOP。HCCA相对简单点,可以简单理解PCF+TXOP;而EDCA会复杂一点,其除了支持TXOP外,还需要对竞争参数有一些修改。

本篇重点在EDCA的说明。

2.1.1 802.11e与WMM

初探802.11协议(0)——开篇(IEEE802.11历史与Wi-Fi速率计算)中介绍过,IEEE对于Wi-Fi QoS的相关描述主要定义在802.11e。在2004年中期IEEE 802.11 Task Group通过了 802.11e 协议,同年,Wi-Fi Alliance也颁布了WMM(Wi-Fi MultiMedia)。一般情况下,我们可以粗略认为802.11e和WMM是同一个事物,只是来源于不同的定义。

802.11e中的e是Enhancements的缩写 ,表示增强的MAC层(enhancements to the MAC layer)。

 如下图所示(摘自 《The IEEE 802.11 Universe》),从差异上考虑,WMM 是 802.11e 中有关EDCA 这部分的分支,关于 HCCA 部分,WMM 是没有兼容实现的。

2.1.2 详细说明​

当数据包到达MAC层时,会根据一定的映射关系将原始数据包中的优先级映射到802.1e的不同优先级队列中。

 摘自《IEEE std 802.11e-2005》

 摘自《Next Generation Wireless LANs-802.11n and 802.11ac》2th

802.11e一共提供了4个不同的优先级,也可称为接入类别(Access Categories),优先级从高到低分别是:
1. 语音服务(Voice,AC_VO):一般为 VoIP 流量类型,对延迟最为敏感,同时也是优先级最高的流量。
2. 视频服务(Video,AC_VI):视频流量的优先级低于语音服务。视频服务也是延迟敏感类型的服务,所以具有一定的优先级。
3. 尽力传输(Best-effort,AC_BE):默认的无线流量类型就是best-effort类型,比如网页访问的数据流量类型。对于延迟有一定需求,但是没有那么敏感。
4. 背景流量(Background,AC_BK):对于延迟要求最不敏感的流量,比如文件传输,打印作业的流量。

2.1.2.1 QoS Control 

802.11e QoS 机制会涉及到 Wi-Fi Frame format 中的哪些字段呢?
802.11e 中新增了一个 QoS control 字段。

在 初探802.11协议(1)——帧结构_802.11 frame formats 中提到过 QoS Control 字段,这里做进一步的说明。

QoS Control field中比较重要的字段是TID(Traffic identifier)。TID有4个Bit(B0-B3),一共可以表示16个类型,其中8个对应TC,另外8个对应TS,TS的参数是通过STA与AP协商的,后面小节会说明。也就是说TID不仅仅被设置为AC_BK、AC_BE、AC_VI和AC_VO,还可以使用TS进行协商。

2.1.2.2 TC

2.1.2.2.1 EDCA

EDCA相对于DCF实际上就可以几个参数加以了控制:
1. 竞争backoff前“等待”的IFS时间,即AIFS时间。
       在EDCA中,为了提供优先级,等待几个Slot时间是可以配置的,即AIFS[i]中的i是可变值。
2. backoff时候选择随机数的CW大小。
       传统的DCF中,CWmin=15,CWmax=1023,这个是所有的竞争节点都是相同设置的。但是在EDCA中,由于节点的优先级与CW值关联起来,所以针对不同的AC,其CWmin和CWmax设置会不同。

以下是Spec中给的EDCA的默认参数,但是很多厂商会将EDCA参数调的很激进以便在资源竞争中获得更多的优势。Qcom平台可以在WCNSS_qcom_cfg.ini去做配置。

EDCA是L2层的配置,L3层的IP DSCP也可能影响到QoS,后面的DSCP章节做进一步的说明。

2.1.2.3 TS

 TS流程主要是ADDTS Request和ADDTS Response的交互,和ADDBA一样TS中也有DELTS。

STA首先发送一个ADDTS Request给AP,然后AP需要做AC(Admission Control),紧接着AP会反馈ADDTS Response给STA,在Response的Status字段中会告知TS会话是否建立成功。STA发送的ADDTS Request中的TSPEC参数是具有协商意味的,最终的QoS参数是以AP反馈过来的ADDTS Response为主。 
1. STA可以通过向AP发送DELTS Request来终止由ADDTS Request产生的所有QoS服务(包括U-APSD Coexistence)的使用。
2. STA可以向AP发送多个ADDTS Request,其中最后接收到的(并同意的)ADDTS Request将覆盖任何先前接收到的ADDTS Request。
 

TSPEC参数即双方协商的QoS参数,例如Norminal/Max MSDU Size。如下图所示,TSPEC字段中带有TS Info和各种参数,TS Info中还会有各种参数。

2.1.2.3.1 TS流程包分析

本地没有带有AC功能的AP环境,暂时没有抓包,这里可以看下网上的素材。

在Catalyst 9800 WLC上使用Cisco 8821配置语音WLAN - Cisco

1. ADDTS request

Second packet capture

 2. ADDTS response

Second packet capture

3. ADDTS DELTS

SIP termination

2.2 WFA QoS Management

802.11 e中通过配置EDCA主要是作用在STA端,让STA有很多机会去竞争资源发包,而WFA QoS Management是让AP和STA协商和/或请求将识别出的IP流划分到特定接入类别的功能。

QoS Management功能的支持需要平台支持MSCS和DSCP,这也是WFA QoS Management认证强制要求的两项功能。

 Wi-Fi QoS Management | Wi-Fi Alliance

https://www.wi-fi.org/system/files/Wi-Fi_CERTIFIED_QoS_Management_Highlights_202110_Simplified_Chinese.pdf

根据Android bootcamp里面的介绍,MSCS不需要fwk的支持,而DSCP需要fwk支持。

QoS Management相关 - 知乎

2.2.1 MSCS

  Android平台的支持情况:从wpa提交记录来看,MSCS相关的代码是2020年合入的。

/wpa_supplicant_8$ git log | grep MSCS
    afcadbbf4 wpa_cli: Add support for SCS, MSCS, and DSCP commands
    e433d06dd Allow MSCS support to be disabled for testing purposes
    354f87e2e MSCS: Fix MSCS Response frame Status field parsing
    0f7989d8a MSCS: Fix decapsulating subelements from MSCS descriptor
    93a73ce02 MSCS: Fix issues due to incorrect usage of wpa_hexdump_buf()
    d21dde9da MSCS: Send MSCS change/remove frames only if MSCS setup exists
    af8ab3208 MSCS: Parse result of MSCS setup in (Re)Association Response frames
    c504ff539 MSCS: Add support to populate MSCS Descriptor IE in (Re)AssocReq
    bbd3178af MSCS: Add support to process MSCS Response frames
    a11804724 MSCS: Add support to send MSCS Request frames

 AP根据某个STA发送而来的MSDU的映射规则,为自身的单播MSDU分配一个同样的用户优先级(UP),再简单点说就是STA-AP上下行设置成了相同的优先级,这也就是所谓的Mirror(镜像)。
比如说STA1发送给AP的MSDU中UP设为AC_BE,那么AP在收到STA1后也会将AP发送给STA1的UP设为AC_BE,从而STA1和AP之间的这个ip flow的上下行优先级都是AC_BE了。

Q:TC vs MSCS
A:之前单纯地在STA去配置TC也只能解决STA端的优先级,STA是左右不了AP针对这个STA的优先级的,但是MSCS是可以让STA和AP之间的UP保持一致。

2.2.1.1 MSCS流程包分析

MSCS配置过程有如下两种方式:
1. 方式一:STA向AP发送MSCS Request帧;
2. 方式二:如果STA支持的话,在关联时发送一个嵌入在 (Re)Association Request中的请求。

请求帧都包含一个MSCS Descriptor,以规定相应参数。协商MSCS参数可在关联时或关联后的任何时间完成。对于每个STA而言,AP最多有一个激活的MSCS。

支持Wi-Fi QoS Management的设备在 (Re)Association Request/ Association Response/Beacon/ Probe->Extended Capabilities->(Mirrored )SCS中指明对MSCS的支持。
本地没有MSCS的设备环境,下图来自网上。

 MSCS Request/Response

 

Association Request/ Association Response

2.2.2 DSCP

     DSCP (differentiated services code point) 字段应该是属于L3层,这一小节主要介绍DSCP(L3)与Wi-Fi QoS(L2)的关系。

2.2.2.1 从 IP TOS 到 IP DSCP

TOS :RFC 791 - Internet Protocol

DSCP:
RFC 5865: A Differentiated Services Code Point (DSCP) for Capacity-Admitted Traffic

RFC 2474 - Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers

1. IP TOS

 如上为IPV4的协议头格式,其中有个TOS(Type of Service)的字段,TOS有8位,详细说明如下:

TOS取值说明
Precedence111Network Control(网络控制),用于网络控制
110Internetwork Control(网间控制),用于网络控制,如路由协议

101

Critical(关键),用于语音传输

100

Flash Override(疾速),用于视频业务

011

Flash(闪速),用于语音传输
010Immediate(立即),用于高优先级数据业务

001

Priority(优先) ,用于数据业务

000

Routine(常规)

D(Delay)0 或 10 = Normal Delay,      1 = Low Delay.
T(Throughput)0 或 10 = Normal Throughput, 1 = High Throughput.
R(Reliability)0 或 10 = Normal Relibility, 1 = High Relibility.
bit6-700Reserved for Future Use.

2. DSCP

后来在RFC 2474 标准中,重新定义了IP 报文头的TOS 字段为DSCP 服务字段,也是8bits。

(1) DSCP:bit0-5,占6位。

  • 前3位(bit0-2)为了和TOS兼容也被用于表示IP优先级,当然在DSCP中可以有个新名字,叫 CS (Class Selector,类别选择器)。
  • 紧接着的两位(bit3-4)表示丢弃概率,bit3表示流量类别,值越大表示转发的优先级越高;bit4表示丢弃优先级,值越大表示丢弃概率越大。把bit3-4这两位又称之为AF(Assured Forwarding,保证转发),AF_{ij}表示流量类别为i,丢弃优先级为j的数据报,j用bit3-4两位来表示,总共可以表示4中优先级,但是实际只使用了1~3这三个优先级。例如AF_{32}表示数据报的流量类别为3,丢弃优先级为2。
  • bit6一直设定为0。

结合上面对前3位(bit0-2)和中间2位(bit3-4)的说明可知,bit0-2和bit3-4的组合可以有两大类,即CS和AF,实际情况下还有EF(Expedited Forwarding,加速转发)和VOICE-ADMIT。EF表示应享受较低的延时、抖动和丢包率,VOICE-ADMIT表示容量许可。

DSCP与TOS IP precedence值的对应关系如下:(表中的CoS字段在下面的"VLAN中的DSCP"小结会有介绍)

这些组合(bit0~5)根据当前的发展阶段也被分为了如下3大类:

 (2) ECNExplicit Congestion Notification,显示拥塞通知。从RFC协议上看,最初是被标记为CU,当前未被使用的,后面又被使用起来了。

通过上面的介绍可知,不同的DSCP取值类型会有不同的转发处理行为,这种处理行为称之为PHB(per-hop behavior,每跳行为)。

2.2.2.2 QoS Map

上面介绍了L3层中的DSCP,后面的"2.2.2.2 QoS Map"和"VLAN中的DSCP"将简单介绍DSCP是如何从L3层映射到L2层。

默认情况下,使用RFC 8325中的映射关系(如下图所示) 可以保证Wi-Fi QoS处理与IP QoS流量标记一致。但是实际情况下STA和AP所处的L3层的网络情况可能是不一样的,或者说大家没有严格按照RFC来,那么就可能出现不一致的情况,因此需要通过交互来保证双方的DSCP到UP的映射关系一致。

协商修改DSCP-to-UP的映射关系需要设备启用QoS Map功能。

AP收到QoS Map = 1的(Re)Association Request帧,应在(Re)Association Response帧中包含QoS Map element,STA收到Response后会将替代掉默认的 DSCP-to-UP映射表。

QoS Map的协议格式这里就不做进一步的说明了。

在实际情况下,互联网上传的数据包中的DSCP可能大都是由网络入口点的设备填写的,而不是从用户那里出来时的DSCP。

2.2.2.3 VLAN中的DSCP

在VLAN中,802.1Q引入了Q-Tag字段,Q-Tag字段中包含PCP(Priority Code Point)字段,用来表示优先级,通常我们也将该字段描述为cos(code of service),CoS与DSCP的映射关系如下。

三. 影响QoS机制的因素分析

TODO

小结

REF

1. https://www.zhihu.com/people/edward_xu
2.《IEEE 802.11-2016
IEEE Standard for Information technology–Telecommunications and information exchange between systems Local and metropolitan area networks–Specific requirements - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications》
3. 《IEEE802.11-2020 Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications》:9.6.18.6 MSCS Request frame format / 9.6.18.7 MSCS Response frame format
4. Wi-Fi QoS Management | Wi-Fi Alliance
5. 《OReilly-802.11_Definitive Guide》802.11无线权威指南
6. 《 IEEE Std 802.11e-2005 Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) specifications Amendment 8: Medium Access Control (MAC) Quality of Service Enhancements
7. 802.11e协议介绍-新华三集团-H3C
8. 《WiFi接入机制及QoS机制分析》ppt
9. QoS Management相关 - 知乎
10. 802.11 - QoS Management_802.11 qos_非常正人类研究中心的博客-CSDN博客
11. 《Network Warrior, 2nd Edition》
12. RFC 8325 - Mapping Diffserv to IEEE 802.11
13. RFC 8325 – WiFi QoS Mappings | mrn-cciew

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/928029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

被控诉不正当竞争,李跳跳宣布无限期停更

我是卢松松,点点上面的头像,欢迎关注我哦! 互联网巨头再次推出力作:律师函寄给李跳跳的作者。原因是李跳跳通过无障碍模式帮助用户点击“跳过广告”按钮,给企业的广告投放业务造成了损失。通过屏蔽、过滤腾X浏览器的广…

KiCad 已经打开 交错保存 错误

期望结果: 打开工程 .pro 文件后,双击工程文件列表中的的 原理图:*.kicad_sch 能够打开原理图。 实际结果: 打开工程 .pro 文件后,双击工程文件列表中的的 原理图,弹出错误提示框如下: 重现步…

docker在阿里云上的镜像仓库管理

目录 一.登录进入阿里云网站,点击个人实例进行创建 二.创建仓库,填写相关信息 三.在访问凭证中设置固定密码用于登录,登录时用户名是使用你注册阿里云的账号名称,密码使用设置的固定密码 四.为镜像打标签并推送到仓库 五.拉取…

滚珠螺杆导程对精度有影响吗?

滚珠螺杆的导程也称螺距,即螺杆每旋转一周螺母直线运动的距离,导程与直线速度有关,在输入转速一定的情况下,导程越大速度越快。正常来说,选择导程时,尽量选5和10最好。 很多人一直觉得导程会影响滚珠螺杆的…

2023科隆游戏展:虚幻5游戏百花齐放,云渲染助力虚幻5高速渲染

8月23日,欧洲权威级游戏展示会——科隆游戏展拉开帷幕。今年的参展游戏也相当给力,数十款游戏新预告片在展会上公布,其中有不少游戏使用虚幻5引擎制作,开创了游戏开发新纪元。 虚幻5游戏百花齐放,渲染堪比电影级效果 …

报名倒计时!| 基于RflySim平台飞控底层算法开发专题培训(第二期)

RflySim 暑期学校 飞思实验室“基于RflySim平台飞控底层算法开发”系列专题培训第二期开启报名了!专题培训由戴训华副教授以及飞思实验室学生&工程师团队主讲,采用“线上线下”集中授课形式,培训时间为8月28日-9月3日;课程内…

vscode c++编译时报错

文章目录 1. 报错内容:GDB Failed with message;2. 报错内容:Unable to start debugging. 1. 报错内容:GDB Failed with message; 例如上图报错,一般就是编译器选择错误,有两种方法解决: 打开 tasks.json …

CVE-2022-34527 D-Link DSL-3782命令注入漏洞复现

一、漏洞描述 CVE-2022-34527 D-Link DSL-3782 v1.03及以下版本被发现包含通过函数byte_4C0160的命令注入漏洞,根据已知公开在cfg_manger 文件的代码 sub_474c78 函数中,byte_4C0160作为system的参数执行。 固件地址:https://media.dlink.e…

【开发】安防监控视频智能分析平台新功能:安全帽/反光衣/安全带AI识别详解

人工智能技术已经越来越多地融入到视频监控领域中,近期我们也发布了基于AI智能视频云存储/安防监控视频AI智能分析平台的众多新功能,该平台内置多种AI算法,可对实时视频中的人脸、人体、物体等进行检测、跟踪与抓拍,支持口罩佩戴检…

Java单元测试 JUnit 5 快速上手

一、背景 什么是 JUnit 5?首先就得聊下 Java 单元测试框架 JUnit,它与另一个框架 TestNG 占据了 Java领域里单元测试框架的主要市场,其中 JUnit 有着较长的发展历史和不断演进的丰富功能,备受大多数 Java 开发者的青睐。 而说到…

【ArcGIS Pro二次开发】(63):批量更改字段别名

在我工作中遇到的大多数图斑,字段名称一般是英文,字段别名是中文,使用起来是比较方便的。 但有时候也会遇到一些不一样的情况,不知是经过了怎样的处理,图斑的字段别名被修改成了和字段名称一样的英文,这样…

零日攻击利用 WinRAR 安全漏洞锁定交易者

Group-IB 的最新发现显示,自 2023 年 4 月以来, WinRAR 压缩软件中一个最近修补的安全漏洞已被利用为零日漏洞。 该漏洞被标记为 CVE-2023-38831,允许威胁者仿用文件扩展名,从而在伪装成看似无害的图像或文本文件的压缩包中启动恶…

Redis 的混合持久化

RDB 相比于 AOF,数据恢复的速度更快,因为是二进制数据,直接加载进内存即可,但是 RDB 的频率不好把握。 如果频率太低,在两次快照期间服务器发生宕机,可能会丢失较多的数据如果频率太高,频繁写入…

大数据开发要学习什么?学完又能做什么

学习大数据需要掌握什么语言基础? 1、Java基础 大数据框架90%以上都是使用Java开发语言,所以如果要学习大数据技术,首先要掌握Java基础语法以及JavaEE方向的相关知识。 2、MySQL数据库 这是学习大数据必须掌握的知识之一。数据的操作语言是…

【DETR】3、Conditional DETR | 拆分 content 和 spatial 来实现对 DETR 的加速

文章目录 一、Conditional DETR 是怎么被提出来的二、Conditional DETR 的具体实现2.1 框架结构2.2 DETR 的 cross-attention 和 Conditional DETR 的 cross-attention 对比 三、效果 论文:Conditional DETR for Fast Training Convergence 代码:https:…

linux————keepalived+LVS(DR模式)

一、作用 使用keepalived解决LVS的单点故障 高可用集群 二、 调度器配置 环境 两台LVS服务 一主一备 两台web服务 采用nginx (实现LVS负载均衡) 服务ip 主LVS 192.168.100.3 备LVS 192.168.100.6 web1 192.…

Java——一个使用Java Swing实现的考试系统的窗体类

这是一个使用Java Swing实现的考试系统的窗体类。主要包括菜单栏、题目内容、选项、按钮等组件,并且实现了开始考试、上一题、下一题和提交按钮的功能。 在窗体的构造方法中,设置了窗体的标题、大小和位置,并调用了init方法和setVisible方法…

30天涨粉50万+ ,知识区诞生黑马UP主

飞瓜数据(B站版)数据显示,UP主你的同桌狗兄在近30天内,涨粉数累积达到53.4万,多次登上飞瓜数据(B站版)【涨粉榜】。 从粉丝变化趋势图可以看到,涨粉高峰期就是在8月。其实UP主并不是…

NSSCTF——Web题目2

目录 一、[HNCTF 2022 Week1]2048 二、[HNCTF 2022 Week1]What is Web 三、[LitCTF 2023]1zjs 四、[NCTF 2018]签到题 五、[SWPUCTF 2021 新生赛]gift_F12 一、[HNCTF 2022 Week1]2048 知识点:源代码审计 解题思路: 1、打开控制台,查看…

【Python】通过现象和本质理解python赋值、浅拷贝、深拷贝

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、看问题本质1.认识赋值、浅拷贝、深拷贝 二.看问题现象1.改变1级数据,这里要改变d2.改变2级数据,这里改变a或者…