QoS基础
QoS(质量服务)是一项非常复杂的技术,但应用广泛。可实现的主要功能包括流量监管(对进入接口的,超出限制速率的报文进行丢弃)、流量整形(对接口发送的,超出限制速率的报文先进行缓存,等待流量不超出速率时发送)、拥塞避免(在出现网络拥塞时对符合条件的报文进行丢弃)、拥塞管理(在出现网络拥塞时采用队列调度的方法对符合条件的队列中的报文优先发送)、流策略(可根据不同的流分类实现诸如禁止/允许通过,重标记报文优先级、重标记报文VLAN标签、重定向流量、过滤报文、流量镜像、启用流量统计功能等行为)。
QoS基础
QoS(Quality ofService,服务质量)是一种可以为不同类型业务流提供差分(即“不同”)服务等级的技术。通过QoS可以给那些对带宽、时延、时延抖动、丢包率等敏感的业务流提供更加优先的服务等级,使业务能满足用户正常、高性能使用的需求。
一、QoS概述
在传统的IP网络中,所有的报文都被无区别的同等对待。即每个网络设备对所有的报文均采用FIFO(First In First Out,先进先出)的策略进行处理,依照报文到达时间的先后次序分配所需的资源,尽最大的努力(Best-Effort)将报文送到目的地。这种方式下,对报文传送的可靠性、传递延迟、丢包率等性能不能提供任何保证,仅适用于对服务性能不敏感的普通业务,如WWW、FTP、Email等。
随着IP互联网上新型应用不断出现,对IP网络的服务质量提出新要求,如远程教学、远程医疗,可视电话、视频点播等,对实时性和连续性方面要求更加苛刻,如果报文传送延时太长将是用户无法接受的,这类应用中不能容忍中间停顿现象。为支持具有不同服务需求的话音、视频以及数据等业务,要求网络能够区分出不同的业务类型,进而为之提供相应等级的服务。QoS正是这样一种可以为不同业务类型报文提供差分服务的技术,通过对网络流量进行调控,可避免并管理网络拥塞,减少报文丢包率。
QoS服务等级就是指对业务流所需的带宽、时延、时延抖动、丢包率等核心需求的评估。不同类型的业务所需要评估的因素并不一样,如普通数据流在带宽、丢包率方面要求更高,而视屏通讯之类的业务流则在时延和时延抖动方面要求更高。
1、带宽
“带宽”又称为吞吐量,表示在一定时间内业务流的平均速率,单位通常是kbit/s。QoS可以为不同业务流分配不同的端口带宽,以实现高优先级,或者对带宽需求更高的业务流(如视频流等)分配到更大的端口带宽,实现更加快速的数据传输。
2、时延
“时延”表示业务流穿过网络时需要的平均时间。对于网络中的一个设备来说,一般将时延的需求理解为几种等级。通过优先队列(端口有几个优先级不同的数据发送队列)的调度方法使得高优先级的队列业务尽可能的获得传输服务,而低优先级的队列业务则需要等待没有高优先级业务时才能获得传输服务。
3、延时抖动
“延时抖动”表示业务流穿过网络的时间的变化。不同的业务流对时延抖动的敏感度也不一样,像话音、视频类实时要求比较高的业务要求延时抖动更小,否则可能出现话音、视频流断断续续,不连续或失真现象。
4、丢包率
“丢包率”表示业务流在传送过程中的丢失比率。信息的丢失往往发生在网络出现拥塞时。不同业务流对丢包率的敏感度不一样,如话音、视频流对丢包率不是很敏感,而对于数据文件来说就非常敏感,可能导致数据最终无法使用。
在QoS的分类流程中最关键的是对各种不同业务流配置不同的优先级,对流入设备的业务流按其优先级进行分类,然后为不同类型业务流定义一个相应的流行为,设备就会为对应的业务流执行相应的QoS行为。
不同的报文使用不同的QoS优先级,例如二层VLAN报文使用802.1p优先级,三层IP报文使用DSCP优先级,MPLS报文使用EXP优先级。
二、二层VLAN帧中的优先级
二层帧中的优先级是专门针对VLAN帧的,因为普通二层帧中是不携带优先级字段的。VLAN帧中的优先级就是我们常说的802.1p优先级(由IEEE802.1p协议定义),位于VLAN帧中的“802.1Q Tag”字段的“PRI”子字段中,如下图:
IEEE802.1p是IEEE802.1Q(VLAN标签技术)标准的扩充协议,它们协同工作。IEEE802.1p的出现,使得第二层交换机能够提供流量优先级和动态组播过滤服务,其中流量优先级规范工作在媒体访问控制(MAC)层,组播流量过滤功能可确保该流量不超出第二层交换网络范围。
IEEE802.1Q标准定义了为以太网MAC帧添加的标签,但并没有定义和使用优先级字段,而使用IEEE 802.1p修改后的以太网MAC帧的以太网协议头中则定义了该字段。802.1p优先级位于二层VLAN帧头部,适用于不需要分析三层报文头,而需要在二层环境下保证QoS的场合。4个字节的802.1Q标签头包含了2个字节的TPID(Tag Protocol Identifier,标签协议标识,取值为0x8100)和2个字节的TCI(Tag ControlInformation,标签控制信息)。
TCI部分中PRI子字段就是802.1p优先级,也称为CoS优先级。它由3位组成,取值范围为0~7,共可表示8个优先级。其中,最高优先级为7,应用于网络管理和关键性网络流量,如路由选择信息协议(RIP)和开放最短路径优先(OSPF)协议的路由表更新;优先级6和5主要用于延迟敏感(delay-sensitive)应用程序,分别对应交互式话音和视频;优先级4到1主要用于受控负载(controlled-load)应用程序、流式多媒体(streaming multimedia)、关键性业务流量(business-scritical traffic),如SAP数据和后台流量。优先级0是缺省值,并在没有设置其他优先级值的情况下自动启用。
三、三层IP报文中的优先级
二层VLAN帧优先级比较简单,就是由PRI子字段的三位来标识,共有8中优先级,但在三层IP报文中,优先级的描述就要复杂许多,并且在不同时期出现了两种不同的优先级类型和不同的标识方法。
1、ToS字段标的IP优先级
在早期的RFC791标准中,IP数据包是依赖ToS(Type ofService,服务类型)字段来标识数据优先级值的。ToS是IP数据包中的IP报头中的一个字段(共1个字节),用来指定IP包的优先级,设备会优先转发ToS值高的数据包。
ToS字段共一个字节(8位),包括3个部分:0~2共3位用来定义数据包的IP优先级(IP Precedence)、ToS(4位)和最后一个固定为0的位,如下图:
(1)IPPrecedence部分
IP优先级部分共3位,取值范围为0~7(值越大,优先级越高)。用名称表示时,这8个取值分别为routine(普通,值为000)、priority(优先,值为001)、immediate(快速,值为010)、flash(闪速,值为011)、flash-override(急速,值为100)、critical(关键,值为101)、internetwork control(网间控制,值为110)和network control(网络控制,值为111),分别对应于数字0~7。
以上IP优先级中,6和7一般保留给网络控制数据使用,比如路由;5推荐给话音数据使用;4推荐由视频会议和视频流使用;3推荐给话音控制数据使用;1和2推荐给数据业务使用;0为缺省标记值。在IP优先级配置时,既可以使用0~7这样的数值,也可使用上述对应的优先级名称。
(2)ToS
在IP报头的ToS字段中紧接着IP优先级字段后面的四位是ToS部分,代表需要为对应报文提供的服务类型(标识报文所注重的特性要求)。一开始,RFC791中只用到了第3~5位,分别代表IP包在Delay(延时),Throughput(吞吐量),Reliability(可靠性)这三方面的特性要求(每个报文在这三位中只有一位可能置1,此时表示IP包在对应方面有特别要求)。后来在RFC1349标准中又宽展到第6位,表示IP包在路径开销(cost)方面的特性要求。
要注意的是,虽然ToS部分共有4位,但每个IP包中这4位中只能有一位为1,所以实际上只有5个取值(包括全为0的值)。这5个值所对应的名称和数值分别为normal(一般服务,取值为0000)、min-monetary-cost(最小开销,取值为0001,确保路径开销最小)、max-reliability(最高可靠性,取值为0010,确保可靠性最高)、max-throughput(最大吞吐量,取值为0100,确保传输速率最高)、min-delay(最小时延,取值为1000,确保传输时延最小)。
2、DS字段的DSCP优先级和PHB
在新的RFC2474标准中,重新定义了原来IP包头部的ToS字段,并改称为DS(DifferentiatedServices,差分服务)字段,也是共一个字节(8位)。总的来说,第0~5位(共6位)用来表示DSCP(Differentiated Services Code Point,差分服务代码点)优先级,取值范围为0~63,共能标识出64个优先级值(值越大,优先级越高),最后两位保留,用于显示拥塞通知(Explicit Congestion Notification,ECN),如下图:
后来在IETF RFC2597标准中定义了PHB(Per-HopBehavior,逐跳行为),通过PHB值可以确定在网关处对IP包的转发行为。这个PHB值是通过DSCP优先级部分的第0~4位来标识的,其中第0~2位用来标识PHB类别(PHB Class)值,共8个值,对应表示为CS0~CS7,对应在RFC791定义的8个IP优先级,而第3~4位用来标识PHB类别选择(PHB Class Selector)值,见上图。PHB类别值和PHB类别选择值共同组成PHB值。DSCP值是由PHB的5位再加上第5位(固定为0),但在PHB类别中的3位不能全为0。
在RFC2597中定义了4种确保转发(AssureForwarding,AF)PHB组(称为AF PHB)。它使用了DS字段中的第0~2位定义PHB类别,而使用DS字段中的第3和4位代表报文的“丢弃优先级”,用AF(x,y)表示,其中x表示流分类,y表示对应的丢弃优先级。
所谓“确保转发”就是允许管理员在没有超过线路允许速率的情况下提供尽可能的传输质量保证,但如果超出用户线路速率则可能在出现拥塞时丢弃数据包。
在确保转发PHB中,定义了4种PHB类别(也即“流分类”),它们的值分别为001、010、011、和100(对应CS1~CS4),它们本身代表了流的不同优先级(值越大转发优先级越高),然后通过第3和4位的丢弃优先级值(取非0的3个值,分别为01、10和11,值越大丢弃优先级越高)进一步区分同一类流不同IP包的丢弃优先级。它们共同针对4种PHB分类组成了4组AF等级,它们所对应的AF值和对应的DSCP值如下表所示(此时第5位的值固定为0)。
再后来在RFC3246标准中,又定义一个加速转发(Expedited Forwarding,EF)PHB,对应CS5,即在DS字段中的第0~2位取值为101,第3~4位取值固定为11,第5位固定为0,这样一来对应的DSCP值就为46(101110)。EF PHB具有低延时、低开销和低抖动特性,适用于话音、视频和其他实时服务,一般具有比其他通信类型更加优先的队列。
除了AF和EF外,还有一个缺省的PHB,那就是尽力服务类型,它所对应的DSCP值为000000,即十进制的0。另外还定义了CS6和CS7,CS6用于网间控制,对应的DSCP为110000,即十进制的48;CS7用于网内控制,对应的DSCP值为111000,即十进制的56。
在配置DSCP优先级时,既可以使用对应的DSCP名称,如CS6、CS7、AF11、AF12(在CS1~CS4中每个包含了一组DSCP值,所以要指定具体的DSCP名称),又可以使用对应的DSCP十进制值,如48、56等。
3、IP优先级与DSCP优先级的对应关系
DSCP优先级是向后兼容IP优先级的,当支持DSCP的设备收到仅支持ToS中的IP优先级的报文时,缺省情况下它们之间是有一种映射关系的,具体如下表。当然,如果设备仅支持ToS的IP优先级,缺省情况下是不能识别报文中的DSCP优先级值的,这时需要事先在接收设备配置好DSCP优先级与IP优先级的映射关系。
四、三种QoS服务模型
“服务模型”就是设备为不同业务流提供服务的一种模式。总体来说,包括Best Effort、IntServ和DiffServ三种服务模型。
1、Best Effort模型
Best Effort(尽力而为)模型是一种为所有业务流提供相同服务等级的服务模型,也是最简单的服务模型。在Best Effort模型中,应用程序可以在任何时候发出任意数量的报文,而且不需要事先获得批准,也不需要通知网络,网络尽最大的可能性发送每一个数据报文,但对时延、可靠性等性能不提供任何保证。
Best Effort模型是Internet的缺省服务模型,它适用于绝大多数网络,如FTP、Email等,通过先进先出(FIFO)调度方式来实现。
2、IntServ模型
IntServ(IntegratedService,综合服务)模型的主要特点是在发送报文前要先向网络提出申请。这个请求是通过协议信令来完成的,如RSVP(Resource Reservation Protocol,资源预留协议)。应用程序首先通过RSVP信令通知网络它的QoS需求(如时延、带宽、丢包率等指标),在收到资源预留请求后,传送路径上的网络节点实施许可控制(Admission control),验证用户的合法性并检查资源的可用性,决定是否为应用程序预留资源。一旦认可并为应用程序的报文分配了资源,则只要应用程序的报文控制在流量参数描述的范围内,网络节点将承若满足应用程序的QoS需求。传输路径上的网路节点可以通过执行报文的分类、流量监管、低延迟的排队调度等行为,来满足对应程序的承诺。
IntServ模型常与组播应用结合,使用于需要保证带宽、低延迟的实时多媒体应用,如电视会议、视频点播等。当前,采用RSVP协议的IntServ模型定义了两种业务类型:
(1)保证型服务(GuaranteedService):提供保证的带宽和时延限制来满足应用程序的要求。如VoIP应用可预留10MB带宽和要求不超过1s的时延。
(2)负载控制型服务(Controlled-LoadService):保证即使在网络过载(overload)的情况下,仍能对报文提供类似Best Effort模型在未过载时的服务质量,保证某些应用程序报文的低时延和低丢包率需求。
IntServ模型的最大优点是可以提供端到端的QoS传输服务,最大缺点是可扩展性不好:网络节点需要为每个资源预留维护一些必要的软状态(Soft State)信息;在与组播应用相结合时,还要定期地向网络发资源请求和路径刷新信息,以支持组播成员的动态加入和退出。而这些操作要耗费网络节点较多的处理时间和内存资源。在网络规模扩大时,维护的开销幅度增加,对网络节点特别是核心节点线速处理报文的性能造成严重影响。因此IntServ模型不适宜于在流量汇集的骨干网上大量应用。
3、DiffServ模型
为了在Internet上针对不同的业务提供有差别的服务,IETF定义了DiffServ(Differentiated Service,差分服务)模型。
DiffServ模型是一种多服务模型,可以满足不同用户业务流的QoS需求。它与IntServ模型不同的是应用程序在发出报文前通过设置报文头部的优先级字段,向网络中各设备通告自己的QoS需求,而不需要通知途径的网络设备为其预留资源,网络不需要为每个流维护状态,仅根据每个报文携带的优先级就可确定所需为对应流提供的服务等级。
DiffServ模型一般用来为一些重要的应用提供端到端的QoS。通常在配置DiffServ模型后,边界设备通过报文的源地址和目的地址等信息对报文进行分类,对不同的报文设置不同的优先级,并标记在报文头部,而其他设备只需要根据设置的优先级来进行报文的调度。
在DiffServ模型中,流分类、流量监管、流量整形、拥塞管理和拥塞避免是对不同类型报文提供有区别服务的基石,它们主要完成如下功能:
(1)流分类:依据一定的匹配规则识别出不同类型的报文,是有区别地实施服务的前提。
(2)流量监管:对进入交换机的特定流量的规格进行监管。当流量超出规格时,可以采取限制或惩罚措施,以保护运营商的商业利益和网络资源不受损害。
(3)流量整形:一种主动调整流的输出速率的措施,使流量适配下游交换机可供给的网络资源,避免不必要的报文丢弃和拥塞。
(4)拥塞管理:在发生网络拥塞时必须采取解决资源竞争的措施。通常是将报文放入队列缓存,并采取某种调度算法安排报文的转发次序。
(5)拥塞避免:过渡的拥塞会对网络资源造成损害。拥塞避免功能可以监督网络资源的使用情况,在发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量措施来解除网络的过载。
在这些功能组件中:流分类是基础,它依据一定的匹配规则识别出报文,是有区别地实施服务的前提;流量监管、流量整形、拥塞管理和拥塞避免从不同方面对网络流量及其分配的资源实施控制,是有区别的提供服务具体体现。
五、DiffServ模型体系结构
DiffServ体系结构定义了实现差分服务的系统模型和基本功能组件,如下图:
在一个网络节点上,实现差分服务的基本功能组件包括“逐跳行为”(PHB)、业务流分类和流量调整(包括流量监管与流量整形、拥塞避免与拥塞管理)等功能。差分服务建立在DS(差分服务)域模型之上,并规定了一个DS域的边界点和内部节点。在DS域边界节点上,对进入网络的业务流进行分类、流量调整和优先级标记,并按照DS域所支持的PHB组中的一个PHB进行转发。在内部节点上,将根据边界节点标记的DSCP或802.1p优先级所定义的PHB来选择该业务流的转发行为,为业务流分配带宽资源。
1、DS域
DiffServ模型的现实基于DS域,DS域由一组采用相同的服务提供策略和实现了相同PHB组集合的相连DS节点组成。一个DS域由DS边界节点和DS内部节点组成,边界节点构成了DS域的边界,内部节点构成了DS域的核心。
2、DS节点
DS节点指实现DiffServ功能的网络节点。DS节点可分为DS边界节点和DS内部节点。
(1)DS边界节点
DS边界节点负责连接另一个DS域或者连接一个没有DS功能的域的节点。DS边界节点负责将进入此DS域的业务流进行分类和可能的流量调整,以保证穿过此DS域的业务流被适当标记,并按照DS域所支持的PHB组中的一个PHB进行转发。
对于不同方向的业务流,DS边界节点既可以是DS域的输入(Ingress)节点,又可以是DS域的输出(Egress)节点。业务流在Ingress节点处进入DS域,在Egress节点处离开DS域。Ingress节点负责保证进入DS域的业务流符合本域和此节点直连的另一个域之间的SLA(Service Level Agreement,服务等级协议)或TCA(TrafficConditioning Agreement,流量控制协议)。Egress节点依据两个域之间的TCA细节,对转发到其直连的对等域的业务流执行流量调整功能。
(2)DS内部节点
DS内部节点负责连接同一DS域中的其他DS内部节点或DS边界节点。DS内部节点负责根据IP报头中的DS字段或VLAN报文的802.1p字段所定义的PHB来为该业务流选择转发行为。无论是DS边界节点还是DS内部节点都必须根据业务流的DSCP或802.1p选择相应的PHB进行转发操作。
3、SLA
SLA(服务等级协定)指用户(个人、企业、有业务往来的相邻ISP等)和服务提供商签署的关于业务流在网络中国传递时所应当获得的待遇。SLA包括很多方面,例如付费协议,其中的技术说明部分被称为SLS(Service Level Specification,服务等级规范)。
4、TCA
TCA(流量控制协定)指用户与服务提供商签署的关于业务分类准则、业务模型及相应处理的协定。去掉了商业条款的TCA称为TCS(Traffic Conditioning Specification,流量控制规范),一个SLA中可以包含TCA。对于业务的处理而言,SLA或SLS指明的是比较一般的内容,例如采用什么样的机制,而TCA或TCS则比较具体,例如具体的带宽要求。
5、DS区
一个或多个邻接的DS域统称为DS区。DS区可以支持贯穿区内多个DS域的分类业务。DS区中的DS域可能支持不同的PHB组,和QoS优先级到PHB的映射规则。不同DS域可有不同的PHB,以实现不同的服务提供策略。它们之间通过SLA和TCA协调提供跨区域服务。SLA/TCA指明了如何在DS域边界节点调整从一个DS域传向另一个DS域的业务流。
QoS优先级映射
优先级映射用来实现报文携带的QoS优先级与设备内部优先级(又称为本地优先级,是设备为报文分配的具有本地意义的优先级)之间的转换,从而使设备根据内部优先级为不同报文提供有差别的QoS服务质量。不同S系列交换机所支持的优先级信任模式和优先级映射模式都有所不同。
一、优先级映射
不同网络中的报文使用不同类型的QoS优先级字段,例如VLAN网络中的报文使用802.1p优先级,IP网络中的报文使用IP优先级或DSCP优先级。当报文经过不同网络时,为了保持报文的优先级,需要在连接不同网络的设备上配置这些优先级字段的映射关系。当设备连接不同网络时,所有进入设备的报文优先级(包括802.1p和DSCP,统称为“外部优先级”)字段根据所配置优先级映射表都被转换为交换机端口的内部优先级;当设备发出报文时,又需要根据优先级映射表将报文中携带的内部优先级恢复为原来的对应外部优先级。
这里涉及到设备信任报文的哪种优先级,也就是优先级信任模式,以及对应的内、外部优先级映射模式。
1、优先级信任模式
配置优先级信任模式可以确定设备根据哪种优先级进行映射。相当于你说你有多种身份,但最终要确定以哪种身份来衡量你的地位。
(1)三种优先级信任模式
在华为S系列交换机中,有三种优先级信任模式
①信任报文的802.1p优先级:配置信任802.1p优先级时,设备根据报文的802.1p优先级对报文进行分类并进行后续的优先级映射,得到报文映射后的802.1p优先级,IP优先级,或DSCP优先级。缺省情况下,端口信任报文的802.1p优先级。
②信任报文的DSCP优先级:配置信任DSCP优先级时,设备根据报文的DSCP优先级对报文进行分类并进行后续的优先级映射,得到报文映射后的802.1p优先级,或DSCP优先级,或丢弃优先级(只有支持DSCP优先级的IP报文才可映射丢弃优先级,因为只有这类报文才有这样的数据位。)
③信任报文的IP优先级:配置交换机端口信任IP优先级,此时将按照报文中所携带的IP优先级查找对应的IP优先级映射表,得到报文映射后的802.1p优先级或IP优先级。
在报文进入设备端口之后,如果报文携带了VLAN标签,则可以选择信任802.1p优先级;如果报文没有携带VLAN标签,则报文或根据端口缺省的802.1p优先级进行转发,该端口优先级即报文转发时进入的端口队列号。在三层转发时,可以选择信任DSCP优先级。
2、优先级映射模式
为了保证不同报文的服务质量,对于进入设备的报文,设备可以根据配置将报文携带的优先级映射为内部优先级,并根据内部优先级与队列之间的映射关系确定报文进入的队列,从而针对队列进行流量整形、拥塞避免、队列调度等处理;报文从设备发送出去时,设备可以根据配置修改报文发送出去时所携带的优先级,以便其他设备根据报文的优先级提供相应的QoS服务。配置优先级映射模式可以确定报文优先级与内部优先级的映射关系,以便设备在后续转发中根据内部优先级提供有差别的QoS服务。
(1)优先级映射模式
总体来说,华为S系列交换机所支持的所有优先级映射模式包括以下几种:
①内部优先级和队列之间的映射
②DSCP优先级到802.1p、新的DSCP优先级、丢弃优先级的映射
③IP优先级到802.1p、新的IP优先级的映射
④802.1p优先级到PHB行为/颜色的映射
⑤PHB行为/颜色到802.1p优先级的映射
⑥DSCP优先级到PHB行为/颜色的映射
⑦PHB行为/颜色到DSCP优先级的映射
(2)华为S系列交换机对优先级信任模式的支持
①在S2700SI/2700EI/2700SI系列交换机中仅支持“内部优先级和队列之间的映射”模式。
②在S2700-52P-EI/2700-52P-PWR-EI/S3700SI/3700EI/5700SI/5700EI/5700LI/5700S-LI系列交换机中支持以下3种优先级映射模式。
- 内部优先级和队列之间的映射
- DSCP优先级到802.1p、新的DSCP优先级、丢弃优先级的映射
- IP优先级到802.1p、新的IP优先级的映射
③在S5700HI/5710EI/6700/7700/9300/9300E/9700系列交换机中,支持以下几种优先级映射模式。
- 在接口入方向,将802.1p优先级映射为PHB行为/颜色
- 在接口出方向,将PHB行为/颜色映射为802.1p优先级
- 在接口入方向,将DSCP优先级映射为PHB行为/颜色
- 在接口出方向,将PHB行为/颜色映射为DSCP优先级。
在S5700HI/5710EI/6700/7700/9300/9300E/9700系列交换机中,支持RFC2597和RFC3246标准中的PHB,用户可以根据DiffServ域中定义逇报文优先级与PHB行为/颜色之间的映射关系对报文进行分类。对于来自上游设备的报文,在设备的入接口上绑定DiffServ域,在DiffServ域中将报文携带的优先级信息映射到相应的PHB行为/颜色,然后根据内部优先级与队列之间的映射关系确定报文进入的队列;在设备的出接口上,根据报文的PHB行为进行拥塞管理,根据报文的颜色进行拥塞避免;然后对于流向下游设备的报文,在设备的出接口上绑定DiffServ域,在DiffServ域中将报文的PHB行为/颜色映射为相应的优先级,下游设备根据报文的优先级提供相应的QoS服务。
二、内部优先级与802.1p和入队列索引的映射扮戏
“内部优先级”是指设备对报文进行处理的优先级,报文中携带的优先级只有在与内部优先级进行了映射后,才能体现报文在对应设备的最终优先级,设备对报文的处理优先级不是直接按照报文中所携带的各种优先级进行的,而是按照设备中配置的内部优先级进行的。不同PHB行为定义了8种“内部优先级”,从低到高的顺序依次是:BE、AF1、AF2、AF3、AF4、EF、CS6和CS7(不区分大小写)。
1、802.1p优先级与内部优先级的映射关系
缺省情况下,所有华为S系列交换机的802.1p优先级与内部优先级的映射关系是一样的,如下表。这些交换机中802.1p优先级与内部优先级的缺省映射关系是按等级一一对应的,即最低的802.1p优先级0对应最低的内部优先级BE,最高的802.1p优先级7对应最高的内部优先级CS7。
2、内部优先级与入队列索引的映射关系
在实际部署时有时需要调整服务等级与入端口队列的映射关系,或者将不同的服务等级放入同一入端口队列中进行调度,从而有效地节约设备缓存。设备按照内部优先级将报文送入不同的入端口队列,从而针对队列进行流量整形、拥塞避免、队列调度等处理。不同S系列交换机的内部优先级与入队列的索引关系也有所不同。
内部优先级与入队列的映射配置仅在S2700SI/3700/5700/6700系列交换机上支持,其他系列仅可采用缺省映射关系。
不同S系列交换机中内部优先级与队列索引之间的映射关系有所不同。在S2700-52P-EI/2700-52P-PWR-EI/3700SI/3700EI/5700HI/5710EI系列交换机中,缺省情况下,8个内部优先级与8个入队列索引号之间是由低到高(指优先级和入队列索引号)一一对应的映射关系,如下表左。但在S2700SI系列,以及除S2700-52P-EI和S2700-52P-PWR-EI之外的其他S2700EI系列交换机中,仅支持4个入队列,所以每两个内部优先级映射同一个入队列(如BE和AF1这两个最低的内部优先级同时映射最小的0号队列,而CS6和CS7这两个最高的内部优先级同时映射最大的3号队列),但总体上也是由低到高一一对应的。
在S6700系列以及S7700系列的ES1D2X40SFC0单板、ES1D2L02QFC0单板,S9300系列的LE0DX40SFC00单板、LE1D2L02QFC0单板和S9300E的LE0DX40SFC00单板和LH2D2L02QFC0单板,S9700系列的EH1D2X40SFC0单板、EH1D2L02QFC0单板中内部优先级与各队列之间的对应关系如下表,从中可见,内部优先级和入队列的映射关系还要看报文是否是已知的单播报文,如果是已知单播报文,则与上表左部一样,只是针对非已知单播报文情况下的映射关系有所不同。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
qos各种队列以及qos的详解:
在有区别地对待和处理网络通信流之前,首先需要对通信流和"标记"或"颜色"进行分类,以保证特殊的数据包能够得到与其它数据包不同(或更好)的对待和处理。今天,Cisco IOS工具可以根据一些不同的标准对数据包进行分类,然后使用IP数据报头中的3个IP优先级位信息对这些数据包进行标记。
图2 IP数据包头中的IP优先级字段
网络操作员最多可以定义6个服务等级(使用IP头中服务类型(ToS)字段的3个优先级位,其中的2个值保留作它用)。然后,可以使用QoS功能制定适当的通信流处理政策,包括针对每一通信流等级的拥塞管理、带宽分配以及延迟限制。
图3 边界处进行的通信流分类
以下是分类功能选项的示例:
- 某一特定T1上接收到的所有数据包都被划分为高优先级(基于端口的分类)
- 所有超文本传输协议(HTTP)通信流都被划分为中优先级(根据应用进行分类)
- 来自某一特定IP地址的视频通信流被划分为中优先级
- 前往某一特定目的地的数据包都被划分为高优先级(例如,国际通信流或以外部网中的某一特定客户为目的地的通信流)
队列和时序计划(拥塞管理)
Cisco 7200和7500路由器所使用的不同队列功能包括:
- 优先级队列
- 自定义队列
- 基于流的加权公平队列(WFQ)
- 基于等级的加权公平队列(CB-WFQ)
- 分布式加权公平队列(DWFQ)
优先级队列
优先级输出队列允许一个网络管理员为给定的端口定义4种通信流优先级-高、标准、中和低。当通信流到达路由器时,将安排其进入4个输出队列中的一个。最高优先级队列中的数据包将首先被输出。当这一队列变为空时,下一个最高优先级中的通信流将被输出,依此类推。
这一机制可以确保在拥塞期间最高优先级数据不会因为低优先级通信流而被延迟。以下是如何使用优先级队列的例子:
- 字节计数值少于200的DECnet将被安排进入中优先级队列
- 来自某一特定TCP端口或以某一特定TCP端口(如用于远程登录通信流的端口23)为目的地的IP数据包将被安排进入中优先级队列
- 来自用户数据报协议(UDP)端口53或以其为目的地的IP数据包将被安排进入中优先级队列
- 所有IP数据包都将被安排进入高优先级队列
图4 优先级队列和严格优先级时序计划
当使用优先级队列时有可能出现一种不希望看到的副作用:低优先级队列可能被锁死。换句话说,如果在一个没有尽头的到达流中出现太多的高优先级通信流,低速链路上的低优先级通信流就有可能永远得不到处理。如果这些低优先级通信流确实不重要,那么这可能正是所要求的结果。
自定义队列
如果您的目标是确保所有通信流的服务级别,您可以使用自定义队列。例如,您可以指定系统网络体系结构(SNA)通信流应占有25%的可用带宽,而TCP通信流应占有10%的带宽,剩余65%的带宽留给其它应用程序。
图5 自定义队列
虽然自定义队列有优势,但缺点是一个等级内的服务(延迟)仍然是不可预期的。
加权公平队列
基于流的加权公平队列(WFQ)的目标是确保拥塞发生时剩余的流能够获得足够的带宽,并对延迟作出限制,使其能够满足最低要求。在使用标准WFQ时,数据包是按流来排队的。拥有相同源IP地址、目的地IP地址、源传输控制协议(TCP)或UDP端口、或者目的地TCP或UDP端口的数据包将属于同一个流。
图6 加权公平队列
基于流的WFQ中"公平"一词的含义是指公平分享可用带宽。这种机制可以防止因带宽不足而引起的资源处理能力得不到使用的问题。
图7 基于流的WFQ
图8 基于等级的WFQ
基于等级的加权公平队列允许用户创建通信流等级并为每一个这样的等级指定一个权重。例如,一个企业客户可以创建三个通信流等级,一个用于语音,一个用于关键任务ERP通信流,第三个用于Web通信流。基于等级的WFQ允许为分配给每个通信流等级的带宽提供确定性的或"硬"的担保。例如,30%用于语音,30%用于ERP,而余下的40%用于Web通信流。虽然CB-WFQ对于等级间公平共享的重视不及其它WFQ,但它对于高速链路或主干来说是一种功能强大的QoS工具,在这两种情况下,重点是带宽分配的硬性担保,而并非是象低速链路上那样重点在于稀疏带宽的公平共享。在低速链路上,通常是使用基于流的WFQ。
图9 到达的数据包被安排到一个等级队列
VIP分布式WFQ(DWFQ)
基于VIP的分布式WFQ通过将WFQ的排队和时序计划任务分散到通用接口处理器上,可以增加Cisco 7500的转发能力。由于从原则上讲每个VIP可以为一个单独的高速接口提供服务,所以每个数据包有望获得的转发性能要高于由多个端口共享的基于路由交换处理器(RSP)的处理性能。
它可以支持以下使用VIP2-40或更高接口处理器的路由器:
- 使用RSP7000的Cisco 7000系列
- Cisco 7500系列
当VIP上端口适配器的汇聚线速率高于DS3时,建议使用VIP2-50接口处理器。当速率达到OC-3时,需要使用一个VIP2-50卡。当基于RSP的WFQ的可扩展性(基于CPU利用率)是考虑解决的重点问题时,基于VIP的DWFQ是一个有吸引力的可选解决方案,特别是对于高速接口。
与传统的自时钟同步WFQ算法相比,DWFQ在进行WFQ排序时使用的是日历队列,这使DWFQ对CPU的压力较低。
拥塞回避
网络拥塞会导致性能的降低和LAN/WAN带宽得不到高效的使用。
因此,我们的目标是通过使用算法(如随机早期检测[RED]算法)避免在任何可能的地方出现拥塞,这些算法利用TCP通信流的适应性特性,通过丢弃数据包来降低TCP传输速率。不过,如果您拥有多个TCP源,那么在所有源中统一进行数据包的丢弃将会导致所有这些源的退回,并随后同时开始重新发送。这种情况将会导致波浪式的拥塞,也被称为"全局同步"。如图表中所示,这种情况将会导致吞吐量的急剧下降。
通过有选择地从特定的TCP流中丢弃数据包,RED解决了这一问题,只有很少的TCP发送方会出现退回和重发的现象。
图10 全局TCP同步
与等待路由器缓冲区满以后对后来数据包进行丢弃(到达的数据包因无缓冲区而被丢弃)的情况不同,路由器对缓冲区的长度进行监视并对选定的数据包(以及选定的连接)执行早期丢弃。
图11 使用RED执行丢弃
网络操作员设置输出缓冲区的最小和最大队列长度阈值,路由器随后在作出数据包转发决策的同时对这些阈值进行监视。数据包交换决策过程对平均队列长度进行检查。如果平均队列长度小于最小阈值,数据包将进入队列并与随后被交换。如果平均队列长度超过最小阈值而小于最大阈值,数据包将按照一定的概率被丢弃。如果平均队列长度超过了最大阈值,所有数据包都将被丢弃。
Cisco加权随机早期检测(WRED)协议将IP优先级和RED结合起来,为优先通信流(高优先级)提供与标准通信流(优先级较低)有差别的丢弃阈值。换句话说,WRED根据IP优先级对数据包进行丢弃。这种情况实际上是允许Internet服务供应商(ISP)在丢弃优先客户的数据包之前首先丢弃标准客户的数据包。
图12 使用WRED实现的差别丢弃阈值
因为WRED监视路由器中队列的平均长度,所以它可以根据队列长度决定何时开始丢弃数据包。当平均队列长度超过用户规定的"最小阈值"时,WRED开始根据一定的概率丢弃数据包(包括TCP和UDP)。如果平均队列长度超过用户规定的"最大阈值",则WRED转为"后来(数据包)丢弃",即所有后面到达的数据包都将被丢弃。WRED的意图就是使将队列长度维持在最小和最大阈值之间的某个水平。
WRED也可以运行在VIP分布式模式之下,以增加Cisco 7500的性能。不过,为实现这一点,所有接口都必须启用VIP分布式Cisco快速转发(DCEF)功能。
政策制订和通信流整形
政策制订/速率限制
Cisco承诺接入速率(CAR)工具是一种速率限制或政策制订工具(分类规则也可以通过Cisco IOS软件中的CAR工具进行设置)。企业客户可以使用速率限制工具来限制从Internet进入到企业网络的通信流(如点播通信流)的速率,服务供应商可以使用速率限制工具来加强服务级别协议(SLA)。速率限制工具对所有超过规定速率的通信流都执行数据包丢弃,其使用目标并非是对通信流进行整形或排队。
图13 使用CAR实现的速率限制
CAR速率限制可以在输入或输出接口以及子接口上实现,包括帧中继和ATM子接口。在这一功能实现并规定了一个或更多的速率以后,可以将政策制订的原则(或CAR对超过某一规定速率的通信流可以采取的措施)设置为以下之一:
- 传输(如同一个松懈的交通警察)
- 丢弃(丢弃数据包)
- 设置优先级并传输(将IP数据包头中ToS字段的优先级位设置为一个优先级较低的值—或首次对其进行标记/染色并进行传输)。这种方式实际上是以较低的优先级传输超出规定的数据包,在当时仍有可用带宽的情况下使这些数据包仍有机会到达自己的目的地。
可以规定多个CAR速率限制。这种层叠式方式可以对数据包实行一系列的速率限制,也可用于规定更加细致的政策。例如,一个企业客户可以对TCP通信流进行速率限制,同时进一步为基于TCP的Web通信流规定第二个速率限制。
- 继续(评估其是否符合一系列速率限制中的下一个速率限制)
- 设置优先级并继续(将优先级设置为一个较低的规定的值,然后评估其是否符合一系列速率限制中的下一个速率限制)
以上的两个选项是CAR中层叠式多速率限制的例子。
整形
整形(即所谓的通信流整形[GTS])的原因有很多,例如,企业客户为确保SLA一致性而对输出通信流进行整形,以防止服务供应商丢弃超过限制的通信流。整形的目的(与速率限制/政策制订相对比)是永远不会发生丢弃数据包这样的事情。在通常意义上讲,如果一个上游路由器知道自己的下游路由器采用了政策制订的方法,那么该上游路由器就必须对通信流进行整形。
图14 进行通信流整形的必要
Cisco GTS提供了一种在某一特定接口上对通信流进行控制的机制。通过将特定通信流的速率限制为某一特定位速率,这一功能可以减少输出通信流以避免拥塞的发生(这也被称为令牌存储桶方法),同时对猝发性的特定通信流进行排队处理。因此,对符合某一特征的通信流进行整形以后可以使其能够满足下游的要求,消除了因数据传输速率不匹配而导致的拓扑结构上的瓶颈。GTS可以每一接口(或每一子接口)为应用对象,能够通过访问列表来选择将被整形的通信流,并能够使用多种Layer 2技术。换句话说,GTS可以不依赖于Layer 2接口或封装而对Layer 3通信流进行整形。
VIP分布式通信流整形
VIP分布式通信流整形(DTS)将GTS和帧中继通信流整形(FRTS)的优点结合在一个工具之中。在将分布式Cisco快速转发作为首选交换模式的网络之中,在VIP上进行DTS是合乎逻辑的通信流整形方法。
对于ATM/帧中继固定虚拟线路(PVC),DTS是在接口级、子接口级或逻辑接口级上对通信流整形进行配置。通信流整形可基于以下的标准:
- 通过该物理接口或逻辑接口的所有通信流
- 通过简单或扩展IP访问控制列表(ACL)(IP地址、TCP/UDP端口、IP优先级)进行分类的通信流
- 根据QoS群组(上游路由器通过CAR或QPPB加盖的内部数据包标签)进行分类的通信流
DTS在每个VIP上最高可以支持200个整形队列,当数据包平均大小为250个字节或更高以及使用一个拥有8M SRAM的VIP2-50(或更高)时,支持的速率最高可以达到OC-3。与常规的通信流整形(GTS)不同,DTS不要求启用WFQ功能。相反,DTS在实现整形队列时使用的是公平队列或分布式先入先出(FIFO)机制。
信令
图15 RSVP是实现端对端QoS信令功能的一种选择
资源保留协议(RSVP)为应用程序(或一个代表应用程序的路由器)提供了一种向网络发出信令以要求所需QoS级别的方法。RSVP是一种Layer 3信令协议,允许一个应用程序以每个流为单位请求QoS服务。
RSVP依赖于在两个端点之间周期性地交换PATH/REVP消息;它被认为是一种"接收方发起"性质的协议,因为作为数据流的接收方,它为该特定流发起并维护资源保留处理过程。由于RSVP要求每个中间路由器维护每个RSVP流的状态信息,所以当被用于消息需要通过大量路由器的基础设施(如Internet)中时,可能会产生可扩展性和成本方面的问题。当必须实现清晰的QoS功能和粒度化时,RSVP是可以派上用场的,如一个低速WAN链路。
图16 RSVP使用示例(视频会议)
Cisco路由器支持RSVP,当终端用户应用本身没有发出RSVP信令的能力时,Cisco路由器经常被用于为这些终端用户应用代理发送RSVP信令。
除了路由器/应用程序以外,H.323语音网关也可以代表自己的客户机发出RSVP信令。这些客户机可以是Cisco(Selsius)电话,这些电话能够为语音通信流加上Layer 3信息标记(如IP优先级),从而使其能够被区分开来。
图17 Cisco电话(对通信流)加上IP优先级标记
Cisco IOS软件还包括了能够将RSVP映射到非RSVP子网(如仅使用IP优先级或DiffServ的网络、IEEE 802.1q/p网络或ATM交换主干)的工具。Cisco使用户能够部署多种不同的设备,而不必过分担心可以在这些设备上实现的QoS的粒度化。
链路效率机制
H.323建议使用实时传输协议(RTP)来传输IP语音通信流。不过,当您在封装一个语音数据包时在IP头内部使用了RTP和UDP时,将会产生一个40字节的数据包头(12个字节的RTP头加上8字节的UDP以及20个字节的IP头)。考虑到一个音频应用可以将一个RTP数据包的的有效载荷部分压缩到20到160个字节,这么大的一个数据包头确实是太大。一个40个字节的数据包头配上20字节的有效载荷,这样的效率太低了。
象压缩RTP(CRTP)这样的头压缩技术可以将40个字节的RTP头压缩到2到5个字节。对于低速链路(如64kb的帧中继链路)来说这是非常有用的,在这种情况下,语音通信流会与数据通信流争夺稀缺的带宽。
图18 压缩RTP(CRTP)头压缩功能
另一种链路效率工具是链路分段和交叉(LFI),它的实质是对较大的数据包进行分解,而较小的数据包被插入到这些较大的数据包之间,以减少语音通信流的延迟。
图19 速度较慢的链路上的LFI
通过Layer 2 WAN主干(帧中继和ATM)实现Cisco 7200和7500的互联
当IP网络的边界与由ATM或帧中继交换机组成的Layer 2互联主干相连时,必须确保边界QoS的定义不会被该主干忽略。考虑到这一事实,Layer 2中包括了以下不同的IP QoS工具:
帧中继内核和通信流整形(FRTS)
在一个帧中继子接口上,通过集成后向显式拥塞通告(BECN)信号,可以安装能够动态适应可用带宽的GTS,或安装能够根据预设速率进行整形的GTS。FRTS可被应用于每一数据链路连接识别器(DLCI),但不是被应用于整个物理接口。
图20 帧中继通信流整形
IP QoS到ATM CoS的映射
虽然在IP网络中可以使用IP QoS来表示数据包的优先级并基于这一优先级来表示通信流的等级(如使用IP优先级),但为确保端对端的服务,能够将这种优先级映射为ATM内核中QoS功能的工具是非常重要的。
使用ATM端口适配器(PA)-A3的Cisco 7200和7500能够将IP等级(每种等级拥有自己的WRED丢弃阈值)集体映射到前往不同地点的ATM虚拟线路(VC),或以个别方式映射到前往同一目的地的不同ATM VC。
在第一种情况下,将只对前往已经拥塞的VC/目的地对的流执行WRED丢弃,而不是对所有的流执行WRED丢弃。如果没有这一功能,WRED算法将会不必要地对流经一个VC前往未拥塞目的地的通信流执行丢弃操作,WRED以前只有在整个ATM接口出现拥塞时才对此进行检测,而不是在VC级出现拥塞时进行检测。
图21 智能数据包丢弃
在后一种情况下,个体WRED阈值被映射到相同地点之间的多个ATM VC,使管理员能够为运载IP优先级各个等级通信流的VC定义ATM服务(如可变位速率[VBR]和未定位速率[UBR]或在多协议标签交换中定义的等级)。
在Cisco QoS映射到ATM解决方案的下一个阶段,将为每VC提供WFQ,这将使WFQ算法能够对每VC进行带宽管理。新兴起的ATM通信流等级,如帧速率担保(GFR)以及加权UBR(UBRw),将作为管理选项被加入。此外,通过使用ATM的可用位速率(ABR)机制,可以将一组完整的WRED阈值映射到一个VC,以提供拥塞反馈功能,最终将可以提供一个近于无损的内核和VC数减少的选项。
今天,您还可以使用ATM PA-A3将Cisco 7200和7500中的特殊RSVP通信流指定给ATM SVC。特别地,对于跨ATM网络的通信流,RSVP保留可以被映射到动态创建的VBR ATM交换虚拟线路(SVC)。
图22 IP优先级到ATM PVC的一对一映射
使用以上的映射功能, 可以确保IP路由器上定义和实现的QoS政策不会被忽略。
总而言之,Cisco Systems提供了一个全面的QoS工具箱。通过这些工具可以对通信流进行分类/标记/染色或排队/时序计划,从而提供了对拥塞进行管理的能力。如果以拥塞先占为目标,则可以通过一些工具来避免适应流/非适应流的拥塞。如果要解决的问题是SLA一致性,则企业客户/ISP客户可以通过一些工具对通信流进行政策制订/整形,以使其符合已达成协议的SLA。如果要解决的问题是信令/进入控制,Cisco IOS软件提供的工具能够将QoS以信号的方式通知网络。最终,可以通过一些工具管理实时通信流(如语音)的链路效率。
无论是需要在园区网中实现QoS还是需要在WAN中实现QoS,无论Layer 2介质是ATM还是帧中继-用户都无须担心,Cisco IOS软件可以使所有这些内容透明化,而且用户能够将自己的计划限制到Layer 3 QoS为止,无论下面的Layer 2机制如何,都可以实现端对端的透明运行。
==================================================================================
QOS
在资源有限的情况下,提升网络的服务质量,优化网络流量
一般设备:识别二、三、四层头部
特殊设备:应用层头部,应用层内容(DPI/DFI 应用层、防火墙 )
5.视频语音流(优先级高,丢弃概率也高)
1.2.3 紧急的业务流 3.4 语音视频 4.视频专属
DSCP(有对应位,可以映射IP PRECE)
前三位决定传输(值越大优先级越高) 四五位决定丢弃(越小丢弃越先)
队列的设置
队列的调度
CIR 承诺信息速率
TC 令牌下发间隔(ms)
bc 每次下发令牌数量
be 超发令牌
Cir=bc/tc
取到令牌的流量会染成绿色
未取到会染成红色
在超发令牌桶中取得令牌的流量染成黄色(默认)
默认绿色为放行,红色被滞留(缓存/丢弃)
Police指令红色流量如果是drop那么流量会被丢弃,常用于限速场景
Shape指令红色流量如果是drop那么流量会被缓存(等待下次发送),常用与整形场景
1. 单速率双色单桶
Cir=bc/tc
单速率:容量为一个常量,发放令牌速率固定,初始桶满
双色:取到令牌被染为绿色,未取到染为红色,默认放行绿色
单桶:只有一个令牌桶
缺点:上一秒令牌未用完,则下一秒将会被清空
2. 单速率三色双桶
第一个桶满,当前一个桶中的令牌未消耗完,将会被存入下一个桶;当超发时,第一个桶被用尽,则会去第二桶继续取用之前积存的令牌。最大量为两个桶之和。(超发前提:第二个桶中有积存)
三色:从第一个桶取到令牌染为绿色,从第二个桶取到令牌染为黄色,未取到染为红色,红色不允许通过
双桶:有两个令牌桶。可以有积存机制,解决超发问题
3. 双速率三色双桶
双速率:两个桶各自拥有一个速率,一个容量为pir,一个为cir
先查看流量是否超过cir,未超过,从cir中取;超过cir,从pir中取。若超过pir,则会被丢弃
管制—限速,令牌桶做令牌发放速率限制,从而限制发送速度
整形—红色流量进行缓存,等待下次获得令牌通过,未被丢弃。一般适用于高带宽向低带宽发送数据
1.PQ(绝对优先队列) high medium normal low
饿死现象:高队列绝对优先,全部转发后才轮到次一级队列,导致低队列很难得到转发
2.CQ(轮询队列) ROBIN 16个队列 0队列为优先队列
16个队列轮流发——1队列发第一位,轮到2队列发第一位,轮完后到1队列发第二位
3.WFQ(加权公平队列) 默认256个队列 低于2.048串行线路的默认队列
自动分类—根据流(元素相同为一个流)
3 4 0 3+1/3+1+4+1+0+1=0.4
每个队列都可以拿到一定份额的带宽值,每个队列(最少)都有一定数量的包可以出去
权重值高先出,若权重相等流量先来先出
4.CBWFQ 手动设置队列和占用带宽值(带宽的百分比占用默认不能大于75%)
队列的丢弃机制(流量优先调用)
和优先级无关,无法插队,重新排队,选择丢弃优先级低的
======================================================================================
优先级映射概述
优先级映射用来实现报文携带的QoS优先级与设备内部优先级(又称为本地优先级,是设备内部区分报文服务等级的优先级)之间的转换,从而设备根据内部优先级提供有差别的QoS服务质量。
用户可以根据网络规划在不同网络中使用不同的QoS优先级字段,例如在VLAN网络中使用802.1p,IP网络中使用DSCP,MPLS网络中使用EXP。当报文经过不同网络时,为了保持报文的优先级,需要在连接不同网络的设备上配置这些优先级字段的映射关系。当设备连接不同网络时,所有进入设备的报文,其外部优先级字段(包括802.1p、DSCP和MPLS EXP)都被映射为内部优先级;设备发出报文时,将内部优先级映射为某种外部优先级字段。
原理描述:
不同的报文使用不同的QoS优先级,例如VLAN报文使用802.1p,IP报文使用DSCP,MPLS报文使用EXP。当报文经过不同网络时,为了保持报文的优先级,需要在连接不同网络的网关处配置这些优先级字段的映射关系。
优先级映射实现从QoS优先级到内部优先级(或者本地优先级)或从内部优先级到QoS优先级的映射,并利用DiffServ域来管理和记录QoS优先级和服务等级之间的映射关系。对于进入设备的报文,设备将报文携带的优先级或者端口优先级映射为内部优先级,然后根据内部优先级与队列之间的映射关系确定报文进入的队列,从而针对队列进行流量整形、拥塞避免、队列调度等处理,并可以根据配置修改报文发送出去时所携带的优先级,以便其他设备根据报文的优先级提供相应的QoS服务。
QoS优先级字段:
为了在Internet上针对不同的业务提供有差别的QoS服务质量,人们根据报文头中的某些字段记录QoS信息,从而让网络中的各设备根据此信息提供有差别的服务质量。这些和QoS相关的报文字段包括:
根据RFC791定义,IP报文头ToS(Type of Service)域由8个比特组成,其中3个比特的Precedence字段标识了IP报文的优先级,Precedence在报文中的位置如下图所示:
图:IP Precedenc/DSCP字段
比特0~2表示Precedence字段,代表报文传输的8个优先级,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。最高优先级是7或6,经常是为路由选择或更新网络控制通信保留的,用户级应用仅能使用0~5。
除了Predecence字段外,ToS域中还包括D、T、R三个比特:
- D比特表示延迟要求(Delay,0代表正常延迟,1代表低延迟)。
- T比特表示吞吐量(Throughput,0代表正常吞吐量,1代表高吞吐量)。
- R比特表示可靠性(Reliability,0代表正常可靠性,1代表高可靠性)。
DSCP字段
RFC1349重新定义了IP报文中的ToS域,增加了C比特,表示传输开销(Monetary Cost)。之后,IETF DiffServ工作组在RFC2474中将IPv4报文头ToS域中的比特0~5重新定义为DSCP,并将ToS域改名为DS(Differentiated Service)字节。
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)。
lDSCP值有两种表达方式:(PHB)
- 数字形式:DSCP取值范围为0~63;
- 关键字表达方式:用关键字标识的DSCP值。
图:DSCP优先级
AFxy中,x代表不同的类别,根据不同的分类后续可以定义进入相对应的队列,y代表当队列被装满的时候丢包的概率,例如AF1类中的报文,其中丢包概率由小到大排序为AF11<AF12<AF13。
不同关键字常用于标识不同报文(可自行定义):
- CS6和CS7默认用于协议报文,而且是大多数厂商设备的硬件队列里最高优先级的报文,因为如果这些报文无法接收的话会引起协议中断。
- EF常用于承载语音的流量,因为语音要求低延迟,低抖动,低丢包率,是仅次于协议报文的最重要的报文。
- AF4用来承载语音的信令流量.
- AF3可以用来承载IPTV的直播流量,直播的实时性很强,需要连续性和大吞吐量的保证。
- AF2可以用来承载VOD(Videoon Demand:视频点播)的流量,相对于直播流量来说,VOD对实时性要求没那么强烈,允许有时延或者缓冲。
- AF1可以用来承载普通上网业务。
通常二层设备之间交互VLAN帧。根据IEEE 802.1Q定义,VLAN帧头中的PRI字段(即802.1p优先级),或称CoS(Class of Service)字段,标识了服务质量需求。
VLAN帧中的PRI字段位置如下图所示:
图:VLAN帧中的802.1p优先级
- 在802.1Q头部中包含3比特长的PRI字段。PRI字段定义了8种业务优先级CoS,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。
MPLS报文与普通的IP报文相比增加了标签信息。标签的长度为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行为。
DSCP/ IP-Precedence/ 802.1p/ EXP值表:
图:映射表
配置优先级映射:
-
信任报文的802.1p优先级
- 对于带VLAN Tag的报文,设备根据报文携带的802.1p优先级查找优先级映射表,确定报文进入的队列,并可以修改报文的优先级值。
- 对于不带VLAN Tag的报文,设备将使用端口优先级作为802.1p优先级,查找优先级映射表,确定报文进入的队列,并可以修改报文的优先级值。
-
信任报文的DSCP优先级
设备按照报文携带的DSCP优先级查找DSCP优先级映射表,确定报文进入的队列,并可以修改报文的优先级值。
-
信任报文的MPLS EXP优先级
设备按照报文携带的MPLS EXP优先级查找MPLS EXP优先级映射表,确定报文进入的队列,并可以修改报文的优先级值。
input 0 to 15 output 0
//配置各优先级之间的映射关系。
port priority priority-value
//配置端口优先级值。
qos map-table
//用来进入Dot1p、MPLS EXP或DSCP映射表视图。
trust { 8021p [ override ] | dscp [ override ] | exp }
//指定对报文按照某类优先级进行映射。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
简单流分类:
- 简单流分类是指根据IP报文的IP优先级或DSCP值、MPLS报文的EXP域值、VLAN报文的802.1p值,将报文划分为多个优先级或多个服务等级。配置基于简单流分类的流量策略可以将一种网络流量中的优先级映射到另外一种网络流量中,使流量在另外一种网络中按照原来的优先级传送。
- 简单流分类的应用场景:在IP,MPLS,VLAN报文跨域转换时,可以使用简单流分类实现DSCP/IP-PRE/EXP/802.1P之间的映射,并保证报文的服务等级不受变化。
- 简单流分类通常配置在网络的核心位置。
- 简单流分类不止应用在物理端口,还可以用于逻辑端口。在企业组网中逻辑端口有更加广阔的应用。
复杂流分类:
复杂流分类是指根据五元组(源地址、源端口号、协议号码、目的地址、目的端口号)等报文信息对报文进行分类(一般的分类依据都局限在封装报文的头部信息,使用报文内容作为分类的标准比较少见),缺省应用于网络的边缘位置。报文进入边缘节点时,网络管理者可以灵活配置分类规则。分类的结果是没有范围限制的,它可以是一个由五元组(源地址、源端口号、协议号码、目的地址、目的端口号)确定的狭小范围,也可以是匹配某网段的所有报文。
复杂流分类通过提取报文信息,如报文优先级、源IP、目的IP、源MAC、目的MAC、802.1p、报文封装类型等等,组成关键字去匹配规则表,然后通过匹配规则得到一个索引,再根据索引查动作表,将报文映射为内部优先级,除了映射内部优先级外,复杂流分类还可以支持流量监管(CAR)、PBR( Policy-basedRouting )、重标记,报文过滤、采样、镜像等其它动作。
链路效率机制
VRP提供了两种链路效率机制:IP报文头压缩协议(IPHeader Compression,IPHC)和链路分片与交叉(LinkFragmentation and Interleaving,LFI)。 其中IP报文头压缩协议可以对RTP和TCP报文头进行压缩。
对于同一个流的数据部,IP头部的大部分字段是相同的,因此可以对这些字段进行压缩,提高链路传输的效率。
LFI技术主要在低速链路上使用,目的是减小实时数据报文的延时和抖动。
IPHC:
IP报文头压缩协议(IPHeader Compression,IPHC)是一个主机-主机协议,用于在IP网络上承载语音、视频等实时多媒体业务,是在PPP链路和FR链路应用的低速链路技术。IPHC支持对RTP和TCP报文头的压缩。
RTP包括数据部分和头部分,RTP的数据部分相对较小,而RTP的头部分较大。12字节的RTP头,加上20字节的IP头和8字节的UDP头,就是40字节的IP/UDP/RTP头。而RTP典型的负载是20字节到160字节。为了避免不必要的带宽消耗,可以使用IPHC特性对报文头进行压缩。IPHC将IP/UDP/RTP头从40字节压缩到2~4字节,对于40字节的负载,头压缩到4字节,压缩比为(40+40)/(40+4),约为1.82,可见效果是相当可观的。
对于TCP数据包,IP头加上TCP头一共40字节,使用TCP压缩,可以压缩到3~5字节。
LFI:
链路分片与交叉是在PPP链路和FR链路应用的低速链路技术。
在低速串行链路上,实时交互式通信,如Telnet和VoIP,往往会由于大型分组的发送而导致阻塞延迟,例如,正好在大报文被调度而等待发送时,语音报文到达,它需要等该大报文被传输完毕后才能被调度。对于诸如交互式语音等实时应用而言,大报文导致的这种阻塞延迟太长了,对端将听到断断续续的话音。交互式语音要求端到端的延迟不大于100~150ms。
一个1500bytes(即通常MTU的大小)的报文需要花费215ms穿过56Kbps的链路,这超过了人所能忍受的延迟限制。为了在相对低速的链路上限制实时报文的延迟时间,例如56KbpsFrame Relay或64KbpsISDN B通道,需要一种方法将大报文进行分片,将小报文和大报文的分片一起加入到队列。
LFI将大型数据帧分割成小型帧,与其他小片的报文一起发送,从而减少在速度较慢的链路上的延迟和抖动。