网络QoS
网络协议中,常见的承载QoS优先级的方式:
- IP层的ToS(Type of Service)优先级(RFC791)
- IP层的DSCP(Differentiated Services Codepoint)优先级(RFC 2474)
- 802.3报文的IEEE802.1p优先级
- 802.11 MAC优先级AC_VO、AC_VI、AC_BE、AC_BK
IP ToS
早期RFC791定义,IP数据包是依赖ToS字段来标识数据优先级, ToS字段由8个比特组成, 其中BIT0~2的Precedence字段标识了IP报文的优先级。

字段 | Bit | 说明 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Precedence | Bit0~2 | 指示IP优先级0~7,值越大优先级越高。
| ||||||||||||||||||
ToS | Bit3~6 | 指示报文关键特性/业务类型要求。 每个IP报文的Bit3~6只有一个Bit = 0,分别对应D(Delay)、T(Throughput)、R(Reliability)、C(Cost),因此实际只有5个值。
| ||||||||||||||||||
Reserved | Bit7 | 恒等于0 |
IP DSCP
新的RFC 2474 标准中,重新定义了IP 报文头的ToS 字段为DS(Differentiated Services,差分服务)字段,长度和ToS字段一致,均为8bits。

字段 | Bit | 说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DSCP | Bit0~5 | DSCP共6bits,可提供64种优先级,而目前并未全部定义。 Bit0~2为类别选择器(Class Selector, CS),指示了优先级CS0~7 = IP Precedence0~7,以确保兼容性。 Bit3~4为丢弃优先级(Drop Precedence, DP),由RFC2597定义为保证转发服务类型(assured forwarding, AF),仅用于CS1~CS4,其中01、10、11分别对应低、中、高丢弃优先级。 DSCP = 000000为尽力转发服务类型(Best Effort, BE),为默认服务类型。 DSCP = 101110为加速转发服务类型(Expedited Forwarding, EF),适用于低丢包率,低延迟,低抖动及保证带宽的业务,如VOIP。 详见下表。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CU | Bit6~7 | Currently Unused,当前未使用 |
IEEE 802.1p CoS
IEEE 802.1Q VLAN标准在以太网数据帧加入4Bytes的802.1Q Tag,用以标识VLAN信息,以帮助设备分辨不同的VLAN报文。
802.1Q中未定义和使用PRI字段,而802.1P 中则定义了该字段,用以标志有线帧的优先级。

字段 | 大小 | 说明 |
TPID | 16bits | 标签协议标识符(Tag Protocol Identifier, TPID)标识该报文类型,可以根据该字段识别为802.1q协议报文。 |
PRI | 3bits | 也称为服务码(code of service,CoS),指示优先级0~7(低到高),与IP Precedence和DSCP的CS一一对应。 |
CFI | 1bit | 标准格式指示位(Canonical Format Indicator,CFI),指示MAC地址在不同的传输媒介是否以标准格式封装。 本文不展开。 |
VID | 12bits | VLAN ID |
注:802.1p 优先级位于L2报文头,适用于不需要分析L3报头,而需要在L2下保证QoS 的场景。
IEEE802.11 AC
802.11协议定义了4类接入类别(Access Category, AC):AC_VO、AC_VI、AC_BE、AC_BK。
接入类别 | 延迟敏感度 | 实例 |
AC_VO(Voice) | 高 | 语音通话 |
AC_VI(Video) | 高 | 视频 |
AC_BE(Best-effort) | 默认无线流量类型。 对延迟有一定需求,但敏感较低 | 网页浏览数据流量 |
AC_BK(Background) | 不敏感 | 文件传输等 |
外部网络的报文的QoS映射到802.11的接入类别
EDCA和HCCA机制在MAC层提供QoS控制。然而,EDCA和HCCA使用的QoS控制参数不能直接与互连外部网络的其他QoS控制参数匹配。因此,要将外部QoS控制参数映射到802.11 QoS参数。
将外部网络的报文的QoS映射到802.11的接入类别的默认步骤如下:
- 解析外部网络的报文的QoS。对于直接来自L3的IP报文,可以将IP报文头的Precedence或DSCP字段对应的优先级映射为MAC层的用户优先级;对于有线报文,可以将802.1Q Tag里的PRI字段对应的优先级映射为MAC层的用户优先级。
- 将外部网络QoS优先级映射为用户优先级(User priority, UP),对应8011中的TID
- MAC根据用户优先级,映射到接入类别(Access category, AC)
注1:non-AP STA可以在ADDTS Request帧中使用TSPEC和TCLAS元素来在BSS中建立TS流,此时业务优先级在TCLAS元素中指定。
注2:不同的外部网络可以为相同的服务使用不同的DSCP集,此时可以用到QoS Map分布机制交互映射信息。


DSCP to UP映射的实现
不同网络的L3 实现可能不同,比如相同的服务/应用,可能不同网络下的优先级映射可能不同。
如果交互双方的DSCP-UP的映射关系不一致,可能会带来如下问题:
- 由于non-AP STA 使用 不正确的UP,导致AP 的准入控制可能会错误地拒绝服务请求
- non-AP STA 可能在 TSPEC 和 TCLAS 元素中使用不正确的用户优先级值。
- 在 IEEE 802.11 网络上,用户可能会获得与预期不同的 QoS,例如,提供的 QoS 可能比 STA 预期的要低。
因此,交互双方需要保证DSCP到UP的映射关系一致。
DSCP to UP映射的传统实现方案仅通过使用DSCP值的3个最高有效位执行用户优先级的映射。这种实现方式,导致将标记为DSCP = 101110(Expedited Forwarding, EF)的快速转发业务(适用于低丢包率,低延迟,低抖动及保证带宽的业务,如VOIP)的语音流分配到UP = 5(AC_VI),而不是UP = 6或7(AC_VO)。
RFC 8325中定义的DSCP-to-UP映射表解决了传统映射表的不一致问题。默认情况下,使用RFC 8325映射表可确保Wi-Fi上的QoS处理与网络行业一致认同的QoS流量标记之间的一致性。

如果启用QoS Map功能,可以修改DSCP-to-UP的映射关系,此时将采用协商的映射关系而不是IETF RFC 8325 DSCP-to-UP的映射关系来发送数据。
QoS Map功能
概述
QoS映射功能提供了网络中STA交互QoS映射信息的方法。
启用了Qos Map的AP会通过(Re)Association Response/QoS Map Configure帧将QoS Map element发给STA,STA将其作为DSCP-to-UP映射表而替代掉默认 DSCP-to-UP映射表。
dot11QosMapActivated | Extended Capabilities element->QoS Map字段值 |
False | 0 |
True | 1 |
AP收到Extended Capabilities element->QoS Map = 1的(Re)Association Request帧,应在(Re)Association Response帧中包含QoS Map element。
注:对于 AP 传输的已准入的 TS 的帧,从 TS 的 TCLAS 元素获得的 UP 应使用 UP 代替从 QoS 映射导出的 UP;对于 AP 传输的已准入的 TS 的帧,如果没有对应TCLAS 元素,UP 应从 QoS 映射中导出。
帧格式
QoS Map Configure帧格式
AP通过发送QoS Map Configure帧给non-AP STA,来提供QoS映射信息。
其中Action字段包含Category、QoS Action、QoS Map element、0~多个Intra-Access Category Priority elements(可选)字段。

字段 | Octets | 说明 |
Category | 1 | 指示Action帧类别。QoS Map Configure帧属于QoS Action帧,因此该字段为1。 |
QoS Action | 1 | 指示QoS Action的子类型,QoS Map Configure帧的QoS Action = 18。 |
QoS Map element | 4+2n(n≤21 ) | 指示将IP层的DSCP字段映射到802.11 UP的方法。 |
Intra-Access Category Priority element | 3n | 指示STA 应使用的 AC 内优先级。 dot11SCSActivated = true时该字段存在。 |
QoS Map element格式
QoS Map element定义了将IP层的DSCP字段映射到802.11 UP的方法。
启用了Qos Map的AP会通过(Re)Association Response/QoS Map Configure帧将QoS Map element发给STA,STA将其作为DSCP-to-UP映射表而替代掉默认 DSCP-to-UP映射表。

字段 | 大小 | 说明 | |||||||||
Element ID | 1 Octet | 指示管理帧的元素ID。QMF Map元素ID为110。 | |||||||||
Length | 1 Octet | 指示该帧除了Element ID 和Length字段以外的剩余字节数。 | |||||||||
DSCP Exception List | n×2 Octets (n≤21 ) | 指示特定DSCP的例外列表。 包含0~21个DSCP Exception字段。每个DSCP Exception字段都有一个唯一的DSCP Value。
Non-AP STA将IP报头中的DSCP字段与DSCP Exception->DSCP Value相匹配,如果成功,则使用DSCP Exception->User Priority相应UP中的UP;如果没有找到匹配,则Non-AP STA尝试将DSCP与UP n DSCP Range字段匹配,如果成功,则使用n作为UP;否则将使用UP=0。 | |||||||||
UP n DSCP Range | 2 Octets | 指定DSCP Low Value~DSCP High Value范围内的DSCP值映射为UP n。 其中DSCP Range value取值范围为[0,63]&255。 其中: 每个UP n对应一个UP n DSCP Range字段;每个UP的DSCP Range不重叠; DSCP High Value大于或等于DSCP Low Value; 如果DSCP High Value和DSCP Low Value都等于255,则不使用相应的UP。 |
Intra-Access Category Priority element格式
Intra-Access Category Priority element可选地出现在ADDTS Request、QoS Map Configure、 SCS Request帧中。该元素指示了STA 应使用的 AC 内优先级。

字段 | 大小 | 说明 | ||||||
Element ID | 1 Octet | 指示管理帧的元素ID。QMF Map元素ID为110。 | ||||||
Length | 1 Octet | 指示该帧除了Element ID 和Length字段以外的剩余字节数。 | ||||||
User Priority | 3bits | 指示与该元素相关的流的 MSDU 或 A-MSDU 的 UP | ||||||
Alternate Queue | 1bit | 指示用于此传输流的期望的主要或备选EDCA队列。
dot11AlternateEDCAActivated = false时该字段预留。 | ||||||
Drop Eligibility | 1bit | 指示当资源不足时,该TS流是否适合被丢弃。 如果资源不足,STA应该丢弃Drop Eligibility = 1的TS的MSDU/AMSDU。 | ||||||
Reserved | 3bits | 预留 |
QoS映射管理
QoS映射信息包含在QoS Map element中,AP可通过(Re)Association Response帧告知、或关联后出现QoS映射关系变化时主动发送QoS Map element告知non-AP STA。
使用QoS Map element更新QoS映射关系变化的步骤如下:
- AP的SME发现QoS映射关系改变
- AP MLME调用MLME-QOS-MAP.request原语,其中MAC地址为non-AP STA的地址(独立地址)
- AP MAC实体发送QoS Map Configure帧携带新的QoS Map element,来更新non-AP STA的QoS映射信息
- non-AP STA的MAC实体收到并解析AP的QoS Map Configure 帧
- non-AP STA的MLME发送MLME-QOS-MAP.indication原语给SME
- non-AP STA的SME收到 QoS Map 响应,将QoS映射关系告知高层
- 高层使用更新后的QoS映射关系

QoS的使用期限和漫游
当使用QoS Map在STA上配置一个非默认DSCP-to-UP映射表时,在STA与其BSSID关联期间,该配置均适用。因此,如果网络使用QoS Map配置一个STA,且之后该STA漫游到网络中的另一个BSS,那么目标BSS中的AP必须使用QoS Map配置相同的映射表。该配置必须在漫游(重)关联期间完成或漫游(重)关联后立即完成,以便STA在漫游后继续执行一致的DSCP-to-UP映射。