802.11协议精读21:802.11e的优先级

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fzxy002763/article/details/78821286

序言

我们在思考如何实现QoS的时候,一般可以把QoS模型简化为二个步骤(Remark:我们这里关注的是区分服务的QoS模型)。

  1. 抓取流量,即对流量进行优先级分类,打标签,存储。
  2. 设置策略,按照不同的传输规则对不同类型的流量进行传输调度。

在上一篇文章中,我们仅仅简介了IEEE 802.11e其QoS的一种基本示例(类似于上述的设置策略)。本文我们关注802.11e中的抓取流量,进行优先级分类的方法。同时本文也着重梳理很多资料中,关于802.11e优先级,802.1q,802.1d和802.1p的关系。

802.11e的优先级

802.11最初没有提供服务区分,所有的流量都被视为best-effort流量。现在为了提供优先级,我们要对数据流量进行分类。

当数据包到达MAC层时,根据802.1d的映射关系(目前看到的官方指南都是这种写法,实际上是802.1p的映射),将原始数据包中的优先级映射到802.1e的不同优先级队列中。如下图(参考自Generation Wireless LANs 802.11n and 802.11ac教材,第8.6节“Enhanced distributed channel access”):


802.11e一共可以提供4个不同的优先级,也可以称为接入类别(Access categories),从高到低排序分别是:

  • 语音服务(Voice,AC_VO):一般为VoIP流量类型,对延迟最为敏感,同时也是优先级最高的流量。
  • 视频服务(Video,AC_VI):视频流量的优先级低于语音服务,高于其他两项。视频服务也是延迟敏感类型的服务,所以具有一定的优先级。
  • 尽力传输(Best-effort,AC_BE):默认的无线流量类型就是best-effort类型,比如网页访问的数据流量类型。对于延迟有一定需求,但是没有那么敏感。
  • 背景流量(Background,AC_BK):对于延迟要求最不敏感的流量,比如文件传输,打印作业的流量。

802.1d,802.1p和802.1q

按照802.11相关的参考书中所述,实际上仅仅提到的是802.1d。而我们一般认知上,802.1d在说的都是生成树协议,而没有包含优先级之类的内容。所以这里实际上我们要接受一个观点,也就是802.1p和802.1q都是802.1d一部分。故802.11协议中所涉及QOS部分提到都802.1d实际上所指为802.1q和802.1p,这也是从协议发行版的角度而言,可能目前的发行版中已经将802.1q和802.p并入到802.1d到最新发行版中了。这种关系在802.11的一些协议版本中也有体现。

802.11e的优先级实际通过802.1p的优先级映射的,802.1p的优先级实际上是放在802.1q定义的Q-Tag中的。802.1q是关于VLAN的协议,其定义了VLAN的Q-TAG格式。

802.3 with Q-Tag(即802.1q)是一种扩展形式的有线帧数据结构(初始的有线帧格式是在802.3中定义的),其在传统的802.3数据帧结构的Length/Type字段前面增加了一个Q-Tag字段,


该字段初始是为了VLAN的功能设计的。Q-Tag的具体结构如下(下图中是VLAN TAG):


TPID(Tag Protocol Identifier),这个字段是16位,对应原来的802.3的Length/Type字段,其固定值为0x8100。TPID是为了协议的兼容性设计的,支持Q-Tag的节点可以解析,不支持的节点会将其当做Length/Type字段进行解析。在Ethernet中,如果Length/Type小于0x0600的时候,会被当做Length字段解析,如果Length/Type大于0x0600的时候,会被当做type字段解析。由于TPID的固定值为0x8100,所以不支持Q-Tag的节点会无法识别该type,从而不接收,不会导致误识别的问题发生。

TCI(Tag Control Information)包含了3个部分,分别是PCP,CFI/DEI(注:802.1Q里面),VID。

  • PCP(Priority Code Point):该字段就是优先级字段,通常我们也将该字段描述为cos(code of service)字段,cos这种说法更常见一点,同时cos的说法也是对应tos的说法(type of service)。PCP一共是占据3个字节,能够表示2^3=8个优先级,802.1d也就是基于这三个字节定义优先级的。
  • CFI(Canonical Format Indicator) / DEI(Drop Eligible Indicator):CFI字段是由于演进过程中,指示Ethernet和Token Ring的兼容。到了QinQ(802.1ad)中,CFI字段演进为了DEI字段。QinQ也可以说是一种二层VPN的技术,既然是二层VPN,那么就会存在公网穿越的问题,从而在传输数据帧的过程中,就需要考虑丢弃优先级了,从而DEI字段就是为了这个目的。
  • VID(VLAN Identifier, VID):该字段标识了VLAN ID,一共是12位。由于我们关注的是优先级问题,所以关于VLAN的具体内容,我们不进行扩展。

802.1q中规定了cos字段,这个cos字段具体如何使用的,如何标识优先级的,就是在802.1p协议中进行固定的。(图参考Network Warrior第425页)


在上图中,实际描述的是在区分服务场景下,不同cos对应的服务类型。该图本来是描述的是cos和tos的对应关系的,tos现在是属于dscp的一部分。有关cos,tos以及dscp由于我们这里是讨论802.11e的问题,所以就不过多展开了。

我们可以大致理解下这个流程,首先是抓取数据流,这个抓取有可能是在二层上做,也可能是在三层上做。如果是在二层做分类,那么就是抓取流量后,在不同数据包的cos上,添加上相应的标识。如果在三层上做的话,就是在dscp的位置上,做相应的标识。二层和三层的分类标识,也就是cos和tos是可以互相映射的,上一个表格就是一种映射关系。

802.1d与802.11e之间的优先级传递

在802.1d中,优先级是标识在cos位中的,并且和tos(dscp)互相映射的。在802.11e中,也是会存在的这样的映射关系,也就是cos映射到802.11e到优先级,其映射关系如下图:


图中,802.1d user priority就相当于cos,也就是有线数据帧中的优先级标识。在一个802.11终端中,其会将有线端的优先级首先转义到本地到发送队列,这里也就是不同的AC所表示的发送队列,从而对流量进行分类。由于802.11数据帧不仅仅可以工作在单跳的基础架构模式下,其还可以工作在mesh以及扩展服务集的模式,所以协议中还需要设计qos的传递属性。


qos的传递属性也就是说,在有线qos传递到无线以后,无线需要将这种qos传递到无线relay到场景下,最终保证目的节点接受的时候,这个qos是一直被保障的。在后面发送的过程中,这些信息再次映射到802.11e中所增加的qos control字段内(如上图,参考Cambridge.Next Generation Wireless LANs 802.11n),从而达到优先级传递的目的。其映射关系如下图(参考CWNA书)


从而我们以上大致介绍了802.11e的优先级,以及其优先级的映射关系(包含有线和无线部分),其余一些别的内容,比如上图的ACK policy,txop之类的,我们之后的内容再进行讨论。

猜你喜欢

转载自blog.csdn.net/fzxy002763/article/details/78821286