序言
本文按照顺序是应该讨论EDCA/HCCA的,可是在此以前,咱们须要从新回顾下802.11e中的优先级部分。咱们知道802.11协议其实是一个纵深很长的协议,由于802.11既须要考虑到商业级WiFi的场景和需求,又须要考虑到低成本轻量级的终端。因此其设计的部分实际上有不少潜在内容,很很差让别人理解。html
比如前面咱们说了802.11e的优先级有默认的4种类型,可是实际上状况下,用户能不能根据本身需求自定义呢。这里就是本文讨论的Admission Control机制了,因此本文咱们要说明下802.11e中几个很是容易混淆的概念,TID,TC,TS,TSpec,TClas。微信
再谈802.11的优先级
在咱们前面的说明中,咱们知道在802.11e中一共定义了4种流量种类。分别以下:
网络


上图说明,当流量MSDU到达802.11e定义的MAC层时,会根据其802.1D的tag标识被分别存放到4个不一样的queue里,分别是AC_VO,AC_VI,AC_BE,AC_BK。这里对应关系咱们在《802.11协议精读21:802.11e的优先级》一文中梳理过。架构
可是若是结合下图,估计不少人会比较晕,前面是4个优先级队列,而后下图变成了8个优先级队列了,笔者在这个点上也晕了好久。框架


这是802.1D(802.1p)和802.11的QoS对应关系,由于前者是8个优先级,后者是4个。因此在数据到达MAC层的时候,每2个优先级队列还须要汇总一下,这个时候的汇老是采用队列调度的方式,最后按照802.11e的物理层参数发送出去。802.1D和802.11e的优先级对应关系以下:less


不过实际上还不止如此。要理解好这个问题,咱们须要从新看一下QoS Control字段了。ide
QoS Control


QoS control是802.11e中新增的一个MAC层的字段(Remark:802.11协议在演进的时候,MAC头部也会增长东西,如上图QoS Control是802.11e增长的,HT Control是802.11n增长的)。url
QoS Control包含的内容以下:spa


咱们这里关于TID字段,TID字段的全称是Traffic identifier。咱们能够注意到这个TID有4个Bit(即上图的B0-B3),因此一共能够表示16个类型。这里就要和咱们前面发现的TC的问题关联起来了,这里TID一共能够表示16个,里面8个是对应TC,另外8个对应的是TS。.net


- TC(Traffic Category):这个是对应的默认的QoS类型,也就是前面咱们说的0~7,这几个TC类型。
- TS(Traffic Stream):这个是自定义的QoS类型,节点能够经过ADDTS过程和AP(WLC)协商,从而特定设置一些对应的QoS参数。
咱们能够看到一些材料上,802.11e是能够进行流量准入控制的Admission Control,这个就是针对TS类型而言的,而TC是设置用于默认传输的,其会按照默认的传输参数进行竞争信道,并传输数据。


能够具体看下抓包记录,里面有标识TID,这里默认的TID为0就是Best effort流量类型。放上图还有一个缘由是看下优先级下面这一位:


第B4位,这一位解析会复杂一点,与上下行有关。若是是下行的那么就是EOSP的标志位,EOSP为End Of Service Period。而若是是上行的话,这是一个标志位,若是是0,那么表明TXOP Duration Request,若是是1,那么表明Queue size 。
另外这给出几个抓包的结果,能够参考下有个直观的感受。


其实就是协议一共支持16个类型,其中8个是默认的TC(对应默认的4个优先级),这里对应8个主要是对应了EDCA/HCCA使用时的参数,另外还有8个是以TS的形式,这个是节点能够和AP协商配置的。下面咱们讨论下TS的接入方式。
Admission Control
咱们如下图讨论一下Admission Control机制。


Admission Control其实是一个会话的创建过程。其实很相似于前面咱们说的ADDBA会话创建过程,这里是一个ADDTS的会话创建过程:


实际上过程也很简单,并且相似于ADDBA的过程。STA首先发送一个ADDTS Request给AP,而后AP须要作AC(Admission Control),这个有的时候也被称呼为CAC(Call Admission Control),应该是与其主要与语音业务有关。AP接收到以后,会反馈给STA一个ADDTS Response。STA发送过去的ADDTS Request中的参数是具备协商意味的,因此最终的QoS参数是以AP反馈过来的ADDTS Response为主。这里的QoS参数就是TSpec了,另外在Status中会告知AP这个TS会话是否创建成功。因为这个会话是通过“AP”判决的,因此就叫作Admission Control机制。
一般状况下,Admission Control的开启与否是在WLC上面配置的,以下图Cisco的WLC上面能够配置开启。


咱们能够看下Cisco教材那里给出的ADDTS的抓包记录(额,这个我本身没抓到过,因此就直接复制了),这里须要注意下,ADDTS Request和ADDTS Response都是两个Action帧。




而后前面是创建会话的,和ADDBA类型,ADDTS也有一个结束会话的,DELTS帧。这个帧咱们就不贴上了,其实我也没有找到抓包记录。
另外关于ADDTS帧的接入交换过程,包含ACK反馈,接入优先级之类的都和ADDBA同样的,能够参考前面的描述,这里不重复了。
以上咱们仅仅描述了Admission Control框架,如今留下的问题就是,若是利用这个框架自定义一个TS,并对其作QoS了,因此下面咱们要讨论TSpec和TClas两个参数。
配置TS类型(TSpec和TClas)
学过QoS的童鞋都知道,QoS简单起来就是两个部分,1)抓流量,专业点就是定义一个流量,2)给流量配置参数。因此针对这两个需求,咱们就须要理解TClas(对应定义流量),TSpec(定义配置QoS参数)。Remark:这个部分参考台湾一个廖冠雄老师的PPT,其实里面写的还比较清楚。
TClas和TSpec都是Element字段,TClas以下:


其中Classifier Parameters对应以下:


上面是什么意思呢,其实是给出了一种定义数据包种类的格式。一般咱们定义数据流,好比用ACL来抓流量,而后Class-map作匹配。不过这个是在无线环境下,STA须要用一种特殊的方式去定义有线对应的数据流量,因此就是这个TClas字段。TClas字段实际上简单的就是三个部分,Type,Mask和Parameters,其中咱们关注下Parameters,因为咱们定义的流量有多是Ethernet类型的(好比Type 0),有多是基于TCP/UDP数据包的(好比Type 1,其中包含了IPv4和IPv6两种,不过公用一个Classifier Type),还有多是802.1Q的(Type 2,实际上就是基于VLAN Tag的)。经过以上这种结构来定义流量。
咱们用下图的抓包结果可能清楚点:


这个也是一个ADDTS Request的帧,可是由于wireshark解析的问题,其显示的类型是Management Notification(17)。这个里面的Traffic Classification字段就是对应的TClas部分。
这个定义流量的部分,还有一个部分就是配置QoS参数了,此时须要用到TSpec部分。TSpec以下图所示:


TSpec实际上对应到图中的TS Info部分,这里参数比较多,能够看一下下面的解析:


以上部分图中已经写的很清楚了,因此笔者就不进一步展开了。
当TSpec和TClas都以Element的形式,添加在ADDTS Response发给AP后,AP(或者转给WLC)会进行Admission Control判断。
若是如今网络中的资源是够的,那么就容许这个TS类型接入,以下图的抓包反馈:


能够看到Status code是Admission accepted的。若是此时AP发现资源不够,那么会拒绝这个TS进行接入,那么这个TS的业务就会被按照默认的TC类型进行接入了。


上图就是一个被拒绝的ADDTS Response反馈。
本文咱们讨论802.11e中关于优先级定义的额外内容,以及对应的Admission Control机制。这个部分目前只有一些商业WLC+AP的架构可能才会用的上,并且须要一些专业的语音设备配合之类的。可是这个确实是802.11e中很是容易混淆的部分,重点是理清楚,TID,TC,TS,TSpec,TClas这几个概念以及Admission Control的机制。
本文为原创文章,如需转载须注明出处和原文连接。


欢迎你们关注咱们的微信公众号:无线技术大讲堂,请搜索公众号(must_wireless)。