上次我们讲到traffic classifier根据报文IP precedence、IP DCSP、MPLS EXP等分类报文,那么今天我们就来详细讲讲traffic classifier常用的几种优先级字段

为了在Internet上针对不同的业务提供有差别的QoS服务质量,人们根据报文头中的某些字段记录QoS信息,从而让网络中的各设备根据此信息提供有差别的服务质量。

1、Precedence字段

根据RFC791定义,IP报文头ToS(Type of Service)域由8个比特组成,其中3个比特的Precedence字段标识了IP报文的优先级,Precedence在报文中的位置如图1所示。




qos read_iops_sec 合理值 qos ef_字段

图1 IP Precedence/DSCP字段



比特0~2表示Precedence字段,代表报文传输的8个优先级,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。最高优先级是7或6,经常是为路由选择或更新网络控制通信保留的,用户级应用仅能使用0~5。下面有一个IPP值和名字的对应关系,看看就好。

Precedence0,routine

Precedence1,priority

Precedence2,immediate

Precedence3,flash

Precedence4,flash override

Precedence5,critic

Precedence6,Internetwork control

Precedence7,network control

除了Predecence字段外,ToS域中还包括D、T、R三个比特:

  • D比特表示延迟要求(Delay,0代表正常延迟,1代表低延迟)。
  • T比特表示吞吐量(Throughput,0代表正常吞吐量,1代表高吞吐量)。
  • R比特表示可靠性(Reliability,0代表正常可靠性,1代表高可靠性)。

发现问题了没?优先级的数量太少了,所以就产生了DSCP。

2、DSCP字段

RFC1349重新定义了IP报文中的ToS域,增加了C比特,表示传输开销(Monetary Cost)。之后,IETF DiffServ工作组在RFC2474中将IPv4报文头ToS域中的比特0~5重新定义为DSCP,并将ToS域改名为DS(Differentiated Service)字节。DSCP在报文中的位置如图1所示。

DS字段的前6位(0位~5位)用作区分服务代码点DSCP(DS Code Point),后2位(6位、7位)是保留位。DS字段的前3位(0位~2位)是类选择代码点CSCP(Class Selector Code Point),相同的CSCP值代表一类DSCP。DS节点根据DSCP的值选择相应的PHB(Per-Hop Behavior)。

IETF DifferServ工作组定义了四种PHB。

Default PHB:提供best-effort服务,数值为0;

Class-selector PHB:后3位数值为0,头三位数值非0的DSCP,用来和IPP兼容;(就是上文讲的IP Precedence哦)

Expedited Forwording PHB:服务于低延迟应用,数值为46;

Assured Forwording PHB:用于提供带宽保证,数值参照下图2;




qos read_iops_sec 合理值 qos ef_IP_02

图2 DSCP各类服务代码



对着这张图,配着下面这段文字,您还真得好好得看一看,看着看着就晕了,不勉强吧,趣味阅读,主要讲的就是这6位二进制数的搭配问题。

1.Default PHB是所有未显示定义的报文所使用的QoS标记,数值是0(000000);

2.ClassSelector,又称为类选择器,可以根据PHB的取值把流量分为7个级别,它的特征后3位为0,前3位非0。共有7个值CS1(001000)、CS2(010000)、CS3(011000)...CS7(111000)。加上000000这种情况,正好8个级别,映射到IPP,看图右上角。

3.AF PHB(Assured Forwording PHB),规则是这样的①二进制数最后1位为0②倒数第2、3位取值为01、10、11数值越大丢弃的可能性越大③前三位001、010、011、111数字越大,转发级别越高。例如AF41>AF43>AF31,体会一下吧?看图左下角。

4.EF类,这一类数值对应二进制数是101110,数值为46,多分配给时延敏感的VoIP流量。

3、VLAN帧头中的802.1q优先级

通常二层设备之间交互VLAN帧。根据IEEE 802.1Q定义,VLAN帧头中的PRI字段(即802.1p优先级),或称CoS(Class of Service)字段,标识了服务质量需求。VLAN帧中的PRI字段位置如图3所示。




qos read_iops_sec 合理值 qos ef_优先级_03

图3 VLAN帧中的802.1p优先级



在802.1Q头部中包含3比特长的PRI字段。PRI字段定义了8种业务优先级CoS,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。

4、MPLS EXP字段

MPLS报文与普通的IP报文相比增加了标签信息。标签的长度为4个字节,封装结构如图4所示。




qos read_iops_sec 合理值 qos ef_字段_04

图4 MPLS标签的封装格式



标签共有4个域:

  • Label:20比特,标签值字段,用于转发的指针。
  • EXP:3比特,保留字段,用于扩展,现在通常用做CoS。
  • S:1比特,栈底标识。MPLS支持标签的分层结构,即多重标签,S值为1时表明为最底层标签。
  • TTL:8比特,和IP分组中的TTL(Time To Live)意义相同。

对于MPLS报文,通常将标签信息中的EXP域作为MPLS报文的CoS域,与IP网络的ToS域等效,用来区分数据流量的服务等级,以支持MPLS网络的DiffServ。EXP字段表示8个传输优先级,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。

  • 在IP网络,由IP报文的IP优先级或DSCP标识服务等级。但是对于MPLS网络,由于报文的IP头对LSR(Label Switching Router)设备是不可见的,所以需要在MPLS网络的边缘对MPLS报文的EXP域进行标记。
  • 缺省的情况下,在MPLS网络的边缘,将IP报文的IP优先级直接拷贝到MPLS报文的EXP域;但是在某些情况下,如ISP不信任用户网络、或者ISP定义的差别服务类别不同于用户网络,则可以根据一定的分类策略,依据内部的服务等级重新设置MPLS报文的EXP域,而在MPLS网络转发的过程中保持IP报文的ToS域不变。
  • 在MPLS网络的中间节点,根据MPLS报文的EXP域对报文进行分类,并实现拥塞管理,流量监管或者流量整形等PHB行为。

5、优先级映射

优先级映射是在交换机或路由器内部把报文携带的QoS优先级与设备内部优先级做转换,从而使设备根据内部优先级提供有差别的QoS服务质量的过程。




qos read_iops_sec 合理值 qos ef_IP_05

图5 优先级映射



用户可以根据网络规划在不同网络中使用不同的QoS优先级字段,例如在VLAN网络中使用802.1p,IP网络中使用DSCP,MPLS网络中使用EXP。当报文经过不同网络时,为了保持报文的优先级,需要在连接不同网络的设备上配置这些优先级字段的映射关系。当设备连接不同网络时,所有进入设备的报文,其外部优先级字段(包括802.1p、DSCP和MPLS EXP)都被映射为内部优先级;设备发出报文时,将内部优先级映射为某种外部优先级字段。