3 DSCP概述
DSCP是Differentiated Services Code Point的简称,即差分服务代码点。DS(差分服务)是网络QoS能力的一种模型,DSCP是DS模型中包含的bit值。DSCP将QoS的8bit分为三部分,其中1-3bit为第一部分,表示类选择器;4-6bit为第二部分,表示包丢弃概率;7-8bit为第三部分,表示是否支持ECN。
3.1 类选择器
DSCP的类选择器(CS,Class Selector)与“2.1 IP重要性”中提到的重要性相似,也就是说DSCP是IP优先级的超集,DSCP兼容IP优先级。DSCP的类分为AF(Assurd Forwarding,确保转发)、EF(Expedited Forwarding,加速转发)和BE(尽力服务)。其中,类选择器是001、010、011和100时对应的AF类;当类选择器是101时对应的是EF类;当类选择器是000时对应的是BE类。需要注意的是,从“2.1 IP重要性”中可以看出,EF类的优先级大于AF类,AF类的优先级大于BE类。在CS0~CS7中,CS0属于BE类;CS1~CS4属于AF类;CS5属于EF类;CS6和CS7属于“2.1 IP重要性”中提到的“网间控制”和“网络控制”。
3.2 包丢弃概率
DSCP的4-6bit表示包丢弃概率,在实际使用中第6bit使用是0,实际上4-5bit表示包丢弃概率,对于路由器/交换机来说,包丢弃概率值越大,越容易被丢弃。在“3.1 类选择器
”中提到的EF类,其包丢弃概率始终是11,所以EF对应的前6位bit值是101110;BE包丢弃概率始终是00,所以BE对应的前6位bit值是000000;AF类包含12种类型,如表3所示。
表3 AF的种类
类名称 | bit值 | 类名称 | bit值 |
AF11 | 001010 | AF12 | 001100 |
AF13 | 001110 | AF21 | 010010 |
AF22 | 010100 | AF23 | 010110 |
AF31 | 011010 | AF32 | 011100 |
AF33 | 011110 | AF41 | 100010 |
AF42 | 100100 | AF43 | 100110 |
其中,AF名称中第一个数字是“类选择器”的十进制值;第二个数字是包丢弃概率中的前两位,即第4bit和第5bit的十进制值。
从以上分析可知,DSCP差别服务的优先级从大到小排列为CS7>CS6>EF>AF41>AF42>AF43>AF31>AF32>AF31>AF21>AF22>AF23>AF11>AF12>AF11>BE。
3.3 是否支持ECN
ENC是Explicit Congestion Notification的简称,即显式拥塞报告。为了避免路由器拥塞带来的丢包而产生一系列问题,TCP/IP设计者创建了用于路由器的标准。这些标准描述了在IP路由器上进行的主动队列管理算法,使得路由器能够监控转发队列的状态,以提供一个路由器向发送端报告发生拥塞的机制,让发送端在路由器开始丢包前降低发送速率。这种路由器报告和主机响应机制称为显式拥塞报告。在IP包头部的ToS中,通过最后两个bit表示发送该数据包的主机是否支持ECN。当最后两个bit值是00时表示主机不支持ECN,当是01或者10时,表示主机支持ECN,11表示路由器正在经历拥塞。
4 通过Wireshark看DSCP
在Wireshark的显示过滤器中输入过滤语句“!(ip.dsfield.dscp == 0) && tcp”,其含义是显示tcp数据包,并且其IP包头的dscp值不为零(dscp全零表示默认优先值),显示如图2和图3的数据包。
图2 Wireshark抓取到的DSCP
图3 Wireshark抓取到的DSCP
从图2中可以看出,该数据包DSCP的值是001010即AF11,发送该数据包的主机不支持ECP。从图3中可以看出,该数据包DSCP的值是011000,其第4-5bit位是00,不属于“3.2 包丢弃概率”中提到的丢弃概率的取值范围,因此,该数据包的DSCP属于CS3类,而不属于AF类,发送该数据包的主机不支持ECP。