目录
一. 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
由初探802.11协议(0)——PCF/DCF与CSMA/CA机制介绍的“基于 CSMA/CD 的 DCF 调度模式”可知,
Wi-Fi为了应对各类的业务体验,则需要进行服务的区分对待,从而引入Wi-Fi QoS。
调控Wi-Fi QoS相关的手段应该是有很多的,这里介绍几种常见的。
初始的802.11协议中有DCF和PCF两种工作模式,但是不支持QoS,后来在802.11e中引入了QoS,从而支持QoS的DCF模式就变成了EDCA模式,支持QoS的PCF就变成了HCCA模式,两者最大的共同点就是都支持TXOP。HCCA相对简单点,可以简单理解PCF+TXOP;而EDCA会复杂一点,其除了支持TXOP外,还需要对竞争参数有一些修改。
本篇重点在EDCA的说明。
初探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 是没有兼容实现的。
当数据包到达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):对于延迟要求最不敏感的流量,比如文件传输,打印作业的流量。
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进行协商。
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章节做进一步的说明。
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中还会有各种参数。
本地没有带有AC功能的AP环境,暂时没有抓包,这里可以看下网上的素材。
在Catalyst 9800 WLC上使用Cisco 8821配置语音WLAN - Cisco
1. ADDTS request
2. ADDTS response
3. ADDTS DELTS
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相关 - 知乎
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保持一致。
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
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 | 取值 | 说明 |
Precedence | 111 | Network Control(网络控制),用于网络控制 |
110 | Internetwork Control(网间控制),用于网络控制,如路由协议 | |
101 |
Critical(关键),用于语音传输 |
|
100 |
Flash Override(疾速),用于视频业务 |
|
011 |
Flash(闪速),用于语音传输 | |
010 | Immediate(立即),用于高优先级数据业务 | |
001 |
Priority(优先) ,用于数据业务 |
|
000 |
Routine(常规) |
|
D(Delay) | 0 或 1 | 0 = Normal Delay, 1 = Low Delay. |
T(Throughput) | 0 或 1 | 0 = Normal Throughput, 1 = High Throughput. |
R(Reliability) | 0 或 1 | 0 = Normal Relibility, 1 = High Relibility. |
bit6-7 | 00 | Reserved for Future Use. |
2. DSCP
后来在RFC 2474 标准中,重新定义了IP 报文头的TOS 字段为DSCP 服务字段,也是8bits。
(1) DSCP:bit0-5,占6位。
结合上面对前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) ECN:Explicit Congestion Notification,显示拥塞通知。从RFC协议上看,最初是被标记为CU,当前未被使用的,后面又被使用起来了。
通过上面的介绍可知,不同的DSCP取值类型会有不同的转发处理行为,这种处理行为称之为PHB(per-hop behavior,每跳行为)。
上面介绍了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。
在VLAN中,802.1Q引入了Q-Tag字段,Q-Tag字段中包含PCP(Priority Code Point)字段,用来表示优先级,通常我们也将该字段描述为cos(code of service),CoS与DSCP的映射关系如下。
TODO
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