目录
一. 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
2. ADDTS response
3. ADDTS DELTS
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
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 | 取值 | 说明 |
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)为了和TOS兼容也被用于表示IP优先级,当然在DSCP中可以有个新名字,叫 CS (Class Selector,类别选择器)。
- 紧接着的两位(bit3-4)表示丢弃概率,bit3表示流量类别,值越大表示转发的优先级越高;bit4表示丢弃优先级,值越大表示丢弃概率越大。把bit3-4这两位又称之为AF(Assured Forwarding,保证转发),表示流量类别为i,丢弃优先级为j的数据报,j用bit3-4两位来表示,总共可以表示4中优先级,但是实际只使用了1~3这三个优先级。例如表示数据报的流量类别为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) ECN:Explicit 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