前言
随着Internet市场的不断发展,用户对通信的需求已从传统的电话、传真、电报等低速业务逐渐向高速的Internet接入、可视电话、视频点播VOD(Video On Demand)等宽带业务领域延伸,Internet以其低廉的价格和全球范围内的可用性使其成为传统广域网的替代品。但是,在ip网络中所有的数据包都是根据所谓尽力(Best-Effort)的原则传送的,因此目前的Internet可以很好的支持Web浏览和E-Mail服务,但却不能很好的支持实时的语音和图像的传递。IP网络对QoS能力的需求越来越迫切。Quidway S8500系列路由交换机是华为3Ccom公司自主开发的大容量、模块化的L2/L3线速交换设备,主要面向大型企业网及园区网的网络骨干、交换核心、汇聚中心和宽带城域网。它提供丰富的业务功能,可以满足高端用户对多业务、高可靠、大容量和模块化的需求。同时,S8500交换机所选用的芯片具有足够强大而灵活的QOS能力,足以能满足现代运营商构建智能城域网的需求。
名词解释
1.QoS,Quality of Service,服务质量是指答应用户在吞吐量、延迟抖动、延迟,丢包率等方面获得可预期的服务水平的一系列技术的集合。
2.流,即业务流(traffic),指所有通过交换机的报文。
3.流分类(traffic classification),是指治理员采用一定的规则,识别出符合某类特征的报文,以备QOS之用。
4.流量监管(traffic policing),为了使有限的网络资源可以更好地为用户服务,QoS在输入端口上可以对特定用户的业务流进行监管,使之适应分配给它的那部分网络资源。
5.优先级标记(PRiority marking):以太网交换机可为特定报文提供优先级标记的服务,标记内容包括TOS、DSCP、802.1p等。
6.流量整形(traffic shaping):使业务流中的分组延时输出以符合业务模型的规定。
7.队列调度(Congestion Management):把交换机的输出队列进行排队,以使高优先级的报文能够被优先发送。
8.拥塞避免(Congestion Avoidance):交换机发生拥塞时丢包释放队列资源的算法。包括尾丢弃、WRED等。
9.本地优先级(Local-precdence):交换机为报文分配的一种具有本地意义的优先级。其仅在本交换机内部起作用。具有不同的LP的报文进入到不同的队列。
10.遵守级别(Conform-Level):交换机为报文分配的一种具有本地意义的服务参数。其本身不对QOS直接作用,但是交换机会根据它而生成各种服务参数,从而影响QOS。在本文中也就是丢弃优先级(Drop-precedence)。
11.丢弃优先级(Drop-precedence):队形调度中,在进行报文丢弃的时候会参考的参数。分为0、1、2三个等级,也可称为报文的着色,分别对应红、黄、绿三种颜色。
S8500QOS特点
● 每端口8个优先级队列,每个队列又可分3个丢弃优先级
● 支持基于输出端口队列的shapping
● 队列治理:支持Three color RED(GRED)和Tail Drop
● 调度:支持SP和WRR的可编程组合
● 支持TOS、EXP、802.1p字段的标记和重标记
● 支持802.1p优先级到本地优先级、丢弃优先级的映射
● 支持IPv4 TOS到本地优先级、丢弃优先级的映射
S8500QOS特点分析
S8500是一款高性能路由交换机,为使其达到二、三层的转发线速,故其QOS特性主要由芯片来保证。其选取的芯片是Prestera芯片组,是Galileo公司(现被美国Mavell公司收购)今年推出的可用于企业网\城域网\骨干网的L3+解决方案的系列芯片。
在8500交换机上,QOS实现流程如下:
入接口流分类---->服务参数自动分配或流量监管和优先级标记---->出接口输出队列---->队列调度与拥塞避免---->流量整形
下面我们按照以上顺序来进行QOS8500交换机上特性及配置的分析。
1.流分类
对于QOS来说,第一步是进行流分类。8500的流分类是比较丰富的,它可以基于数据流报文中的VLAN标签、基于以太网报文中携带的MAC信息、基于IP报文头部的IPv4子网和协议信息,以及可以根据报文流经的物理端口来分类。分类所使用的工具是ACL,在交换机的入口处通过ACL将报文流分为不同的类别,为在后面交换机进行QOS打下一个良好的基础。
2.服务参数自动分配
服务参数是一套QoS相关的参数,包括802.1p优先级(也称为COS优先级)、DSCP优先级、本地优先级、遵守级别。在这些参数中,802.1p优先级是位于报文的VLAN TAG上,是报文的二层信息;DSCP优先级是在IP首部中,是报文的三层信息;而本地优先级和遵守级别则是在交换机内部给交换机分配的一种信息,仅在交换机内部有效,报文出此交换机时,此信息就丢失了。
交换机在接收到报文之后,会参考一定的规则自动给报文分配一套服务参数。分配的依据是报文的802.1p优先级及在交换机端口上可配置的端口优先级。首先交换机会根据报文的802.1p优先级查找下面的映射表来获取报文的丢弃优先级和本地优先级:“COS—>Drop-precedence”映射表和“COS —>Local-precdence”映射表。在这里,“Drop-precedence”也对应于我们前面提到的遵守级别,意即我们有后面进行流量监管和优先级标记时所需要的遵守级别是从这里获得的。假如没有做其它配置的话,这里获得的丢弃优先级也就是报文着色的结果,其值0、1、2分别对应于着色的红、黄、绿。交换机提供这些映射表的缺省取值,用户可以根据需要重新配置这些映射表;假如没有成功为报文分配到本地优先级或丢弃优先级,交换机就会使用报文接收端口的缺省本地优先级作为报文的本地优先级,使用报文接收端口的缺省Drop-precedence做报文的着色处理。
系统提供缺省的“COS —>Local-precdence”及“COS—>Drop-precedence”映射表。
缺省的“COS —>Local-precdence”映射表
缺省的“COS—>Drop-precedence”映射表
3.流量监管和优先级标记
报文进入交换机后,就按照服务参数自动分配的规则分配了服务参数。但假如这些自动分配的服务参数不符合我们的QOS要求,则需要采用流量监管或优先级标记来达到我们的目的了。
流量监管是基于流的速率限制,它可以监督某一流量的速率,假如流量超出指定的规格,就采用相应的措施,如丢弃那些超出规格的报文或重新设置它们的优先级。注重在8500中,只能对进入交换机的流进行流量监管的配置。
以下为流量监管的命令:
traffic-limit inbound { link-group { acl-number acl-name } [ rule rule ] ip-group { acl-number acl-name } [ rule rule ] } cir cbs ebs [ pir ] [ conform { [ remark-cos ] [ remark-drop-priority ] remark-policed-service } ] [ exceed { forward drop } ]
从命令中可以看出,交换机的流量监管动作中不但包括了限制流量,还可以实现限定流量内的流与超出流量的流分别对待。因为报文在进入交换机后已经着色,也就是已经有了遵守级别,所以对于在限制流量内的流,可根据报文的Conform-Level重新设置丢弃优先级,也可根据“Local-precedence + Conform-level—>802.1p优先级”映射表来重新设置报文的802.1p优先级。或者,根据“DSCP+Conform-Level—>服务参数”映射表来重新分配流的服务参数。我们还可以配置对超出流量的报文是继续发送还是丢弃。此外,流量监管动作中本身也包含了报文的着色处理,其主要是根据流的流量来进行,规则是:小于CIR的报文为绿色,介于CIR与PIR之间的为黄色,大于PIR的为红色。包的不同颜色分别对应于不同的丢弃优先级。
以下为一个“DSCP+Conform-Level—>服务参数”映射表的例子:
“DSCP + Conform-level—>服务参数”映射表
从上图可以看,交换机依据报文的DSCP和Conform-level重新给报文分配DSCP值、802.1p值、LP值以及丢弃优先级。
相对于上个映射表,“Local-precedence + Conform-level—>802.1p优先级”映射表就简单一些了:
“Local-precedence + Conform-level—>802.1p优先级”映射表
从上表可看出,交换机依据报文的LP和CL重新给报文分配802.1p值。
在默认情况下,交换机并没有启用流量监管,所以上述两个映射表是不起作用的。假如根据需要启用了流量监管,则需要我们根据具体情况合理配置这两个表,以达到我们想要的结果。
优先级标记配置就是为匹配设定ACL的报文重新分配一套服务参数。我们在前面看到,报文一进入交换机就被自动分配了服务参数,但优先级标记所能分配的服务参数更加丰富。
以下为优先级标记的命令:
traffic-priority inbound { link-group { acl-number acl-name } [ rule rule ] ip-group { acl-number acl-name } [ rule rule ] } { auto remark-policed-service { trust-dscp dscpdscp-value untrusted dscp dscp-value cos cos-value local-precedence local-precedence drop-priority drop-level } }
可以看出,优先级标记配置包括如下动作:使用交换机自动分配的服务参数、根据报文的DSCP值查找映射表为报文重新分配服务参数、根据用户设定的DSCP值查找映射表为报文重新分配服务参数、用户自己为报文指定一套服务参数等等。
4.队列调度与拥塞避免
8500交换机的每个端口支持8个输出队列,交换机依据报文的本地优先级进行入端口输出队列操作。当网络拥塞时,必须解决多个报文同时竞争使用资源的问题,通常采用队列调度加以解决。8500交换机能够支持SP调度算法和WRR调度算法。
SP调度算法:严格按照优先级从高到低的次序优先发送较高优先级队列中的分组,当较高优先级队列为空时,再发送较低优先级队列中的分组。此种调度适合于要害业务,是8500交换机队列调度的默认算法。
WRR调度算法:队列之间进行轮流调度,保证每个队列都得到一定的服务时间。此种调度算法适用于需要为每个流都保证一定带宽的情况下。
8500交换机还支持队列调度的编程组合。可以分别设置SP调度组、WRR优先级组1、WRR优先级组2,然后再从这几个调度组中进行综合调度,这样就更加灵活了。
比如,我们可以做做如下的调度:设置队列0~5的调度模式为WRR,队列0、1、2加入WRR优先级队列1,权重分别为20、20、30,队列3、4、5加入WRR优先级队列2,权重分别为20、20、40,队列6、7采用缺省的严格优先级调度。
当拥塞发生时,交换机会尽快的丢包释放队列资源,同时尽量不将报文放入高延迟的队列中,以消除拥塞。交换机在接收报文时为报文分配了遵守级别(也可以称为对报文进行着色)。遵守级别取值为0、1、2,0代表红色,1代表黄色,2代表绿色。在拥塞发生时,红色报文将首先被丢弃,绿色报文最后才会被丢弃。
在8500上,拥塞避免的参数和丢弃阀值可以分队列、分遵守级别进行配置。
交换机支持两种丢弃算法:
(1) 尾丢弃:当进行报文丢弃时,可以区分队列设置丢弃阀值。当红、黄、绿报文分别超过红、黄、绿队列的上限队列长度,系统就开始丢弃上限队列长度之后的报文。此算法不考虑丢弃级别。
(2) WRED丢弃算法:在按照队列对报文进行丢弃时综合考虑了丢弃级别。当红、黄、绿报文分别超过红、黄、绿队列的下限队列长度时,系统就开始以某一斜率丢弃下限队列长度与上限度列长度之间的报文。当红、黄、绿报文开始超过它们的上限队列长度时,系统就开始丢弃上限度列长度之后的所有报文。
尾丢弃的算法是交换机的默认算法,但是会引起TCP全局同步现象。就是在碰到尾丢包时,所有与该流有关的发送者都会因此同时重新发送。这种重新发送的全局同步化,会造成流量忽大忽小,在网络上产生很大的破坏。而WRED算法能够随机地丢弃数据包,将避免使多个TCP连接同时降低发送速度,从而避免了TCP的全局同步现象。当某个TCP连接的数据包被丢弃,开始减速发送的时候,其他的TCP连接仍然有较高的发送速度。这样,无论什么时候,总有TCP连接在进行较快的发送,提高了线路带宽的利用率。
5.流量整形
流量整形是对输出报文的速率进行控制,并对超出流量约定的报文进行缓冲,并在合适的时候将缓冲的报文发送,从而使交换机的输出流量平滑缓和。流量整形通常是为了是报文速率与下游设备相匹配,以避免不必要的报文丢弃和拥塞。它和流量监管的主要区别在于流量整形是缓存超过速率限制的报文,使报文以均匀的速率发送出去,而流量监管则是丢弃超过流量速率限制的报文。但是流量整形会增加延迟,而流量监管不会引入额外的延迟。
以下为流量整形的命令:
traffic-shape [ queue queue-id ] max-rate burst-size [ queue-depth ]
可以看到,流量整形是比较简单的,它不涉及到报文的优先级。
小结
综上所述,流分类是进行QOS的基础。服务参数自动分配是交换机默认进行的,但其只是基于报文二层信息,虽简单易用,但功能不够强大。故在复杂的情况下,可以用流量监管及优先级标记方法来使交换机能够依据三层信息来分配不同的服务参数,从而流入不同的队列。而流量监管的功能偏重于对入流量的限制,虽然它也能够对报文的服务参数进行重新标记,但始终不如优先级那么全面。无论是优先级标记也好,流量监管也好,都必须依靠队列调度来最终实现QOS。队列调度是起到了保证优先级高的数据流的服务质量的作用。假如流量过大,交换机还是会发生拥塞,出现拥塞后,交换机需要丢包,传统的尾丢弃的丢包算法会导致TCP全局同步问题,解决的办法是采用WRED丢弃算法。而流量整形仅对流出交换机的流起作用,它使输出的流的速率尽量均匀,从而使下游的设备受益。