QoS一直是许多读者朋友感到非常头痛的一项设备技术,也很少有书进行了比较全面、系统的介绍。笔者也是经过相当长时间的研究,才最终把这部分内容进行了消化,并在我的最新著作——《Cisco/H3C交换机高级配置与管理技术手册》一书中全面剖析。本书是目前国内唯一一本专门介绍Cisco和H3C交换机高级功能配置与管理的大型手册。目前该书已在京东网、卓越网、当当网上有售:

    京东网上的链接:http://book.360buy.com/10959197.html

    当当网上的链接:http://product.dangdang.com/product.aspx?product_id=22621538

     卓越网上的链接:http://www.amazon.cn/Cisco-H3C%E4%BA%A4%E6%8D%A2%E6%9C%BA%E9%AB%98%E7%BA%A7%E9%85%8D%E7%BD%AE%E4%B8%8E%E7%AE%A1%E7%90%86%E6%8A%80%E6%9C%AF%E6%89%8B%E5%86%8C-%E7%8E%8B%E8%BE%BE/dp/B007RSKBYS/ref=sr_1_3?s=books&ie=UTF8&qid=1333753607&sr=1-3

    本文仅就通信过程中的几种QoS优先级类型进行系统地介绍,它们是进行QoS策略配置的基础。

    在QoS的分类流程中最关键的是对各种不同包配置不同的优先级,对流入交换机的数据包按优先级排列,然后交换机就会根据这个优先级值执行相应的QoS行为。而对数据包进行优先化排列的第一步就要对数据包进行分类。

   分类规则可以使用IP报文头的ToS(Type of Service,服务类型)字段的优先级位,识别出不同优先级特征的流量;也可以由网络管理者设置流分类的策略,例如综合源地址、目的地址、MAC地址、IP协议或应用程序的端口号等信息对流进行分类。一般的分类依据都局限在封装报文的头部信息,使用报文的内容作为分类的标准是比较少见的。分类的结果是没有范围限制的,它可以是一个由五元组(源地址、源端口号、协议号、目的地址、目的端口号)确定的狭小范围,也可以是到某网段的所有报文。这个优先级信息所在的位置要区分是二层通信流还是三层通信流。

1. 三层通信流中的优先级信息

     三层IP包可以携带IP优先级值,或者DSCP (Differentiated Services Code Point,区分服务代码点)值。QoS支持使用任何一种优先级值,因为DSCP值向后兼容IP优先级值的。IP包头的ToS字段有8位,如图6-2左图所示。其中:0~2这两位表示的是IP优先级,取值范围为0~7;3~6这四位表示的是ToS优先级,取值范围为0~15;最后一位为固定的0值。

    RFC2474又重新定义了原来IP包头部的ToS字段,称之为DS字段,其中0~5这六位用来表示DSCP(Differentiated Services Code Point,差分服务代码点)优先级,取值范围为0~63,最后两位保留,如图6-2右图所示。IPv4和IPv6包中的IP优先级和DSCP优先级位在IP包的包头位置如图6-3所示。

clip_image002

图6-2 ToS字段中的IP优先级和DS字段中的DSCP优先级

clip_image004

图6-3 IP优先级和DSCP优先级位在包头中的位置

     总的来说,也就是在IPv4协议包头的ToS字段(1个字节)中定义了最高3个有效位作为IP优先级位,其取值范围为0(最低)~7(最高)。而三层的区分服务代码点(DSCP)是由IETF发布的,它是利用ToS字段中的最高的6个有效位作为DSCP的。路由包的每跳行为是由配置的DSCP值来表示,DSCP的取值范围为0~63。前面说了,DSCP优先级是向后兼容IP优先级的,IP优先级与DSCP优先级值的对应关系如表6-1所示。

表6-1 IP优先级与DSCP优先级的对应关系

image

2. 二层帧的优先级  

     在二层帧的帧头中也有用来对通信进行分类的优先级位。如果是二层ISL(Inter-Switch Link,交换机内链路)帧,则其帧头有一个1字节的用户(User)字段,在其中的最低3个有效位中就携带了IEEE 802.1p CoS(class of service,服务分类)值。这个CoS值就是用来对通信进行分类的其取值范围为0(最低)~7(最高)。如果是二层802.1Q或802.1p帧,则其帧头中有一个2个字节的Tag协议标识(TPID)字段,其中最高的3个有效位(称为“用户优先级位”——User Priority)中携带了CoS值。ISL和802.1Q、802.1p帧中的CoS优先级所在位置如图6-4所示。其他帧类型不能携带二层CoS值。

clip_image006

图6-4 ISL和802.1Q、802.1p帧中的CoS优先级所在位置

      802.1p优先级位于二层报文头部(如图6-4所示),适用于不需要分析三层报文头,而需要在二层环境下保证QoS的场合。4个字节的802.1Q标签头包含了2个字节的TPID(Tag Protocol Identifier,标签协议标识,取值为0x8100)和2个字节的TCI(Tag Control Information,标签控制信息),如图6-5所示。TCI部分中Priority字段(完整表述应为“User Priority”)就是802.1p优先级,也称为CoS优先级,如图6-6所示。它由3个bit位组成,取值范围为0~7。之所以称此优先级为802.1p优先级,是因为有关这些优先级的应用是在802.1p规范中被详细定义。

clip_image007

图6-5带有802.1Q标签头的以太网帧

clip_image008

图6-6 802.1Q标签头格式

3. 本地优先级  

    除了前面所说的802.1p优先级外,交换机的二层帧还有一个本地优先级。它是交换机为报文分配的一种具有本地意义的优先级,对应queue0~queue7八个出端口队列,本地优先级值大的报文将被安排在优先级高的队列被优先处理。本地优先级只在本端口的队列调度时有效。帧在进入交换机以后,交换机会根据自身支持的情况和相应的规则为报文标记802.1p优先级(它决定了报文在队列中的优先级高低)、本地优先级(它决定了报文所在端口队列的优先级高低)等参数。

    对端口接收到的不带有802.1Q标签头的报文,交换机使用接收端口的优先级(也就是“端口优先级”,来自优先级高的端口的报文将优先处理)作为报文的802.1p优先级,然后根据802.1p优先级和本地优先级映射关系,为报文分配本地优先级进行队列调度。

     对端口接收到的带有802.1Q标签头的报文,用户可以配置优先级信任模式:信任端口优先级模式和信任报文优先级模式。当选择信任端口优先级模式时,在交换机端口接收到带有802.1Q标签头的报文时,会使用接收端口的端口优先级值替换接收到的报文的802.1p优先级值,然后根据802.1p优先级和本地优先级映射关系,为报文分配本地优先级进行队列调度;当选择信任报文优先级模式时,交换机根据报文自身携带的802.1p优先级建立802.1p优先级到本地优先级映射表,然后为报文分配本地优先级进行队列调度。 交换机提供缺省的802.1p优先级到本地优先级映射表,如表6-2所示。

6-2 802.1p优先级到本地优先级映射表

802.1p优先级(CoS)

本地优先级(local precedence)

0

2

1

0

2

1

3

3

4

4

5

5

6

6

7

7

     所有访问Internet的交换机和路由器都依赖分类信息来为具有相同分类信息的包提供相同优先级对待,为具有不同分类信息的包提供不同的优先级对待。包中的分类信息可以由转发路径中的终端主机,或者交换机,或者路由器来赋值,依据是所配置的策略,详细的包检查,或者同时依据两者。包的详细检查将会发生在网络边缘,以便核心交换机和路由器不会因为当前路径下的转发任务而超载。

    转发路径中的交换机和路由器可以使用分类信息来限制分配给每个类别通信的资源量。每个设备在处理不同区分服务架构通信的行为称之为每跳(per-hop)行为。如果整个路径中的所有设备都能提供一致的每跳行为,则你可以构成端到端(end-to-end)的QoS解决方案。