08-QoS操作
本章节下载 (510.75 KB)
目 录
服务质量(Quality of Service,简称QoS)是各种存在服务供需关系的场合中普遍存在的概念,它评估服务方满足客户服务需求的能力。评估通常不是精确的评分,而是注重分析在什么条件下服务是好的,在什么情况下还存在着不足,以便有针对性地作出改进。
在因特网中,QoS所评估的就是网络投递分组的服务能力。由于网络提供的服务是多样的,因此对QoS的评估可以基于不同方面。通常所说的QoS,是对分组投递过程中可为延迟、延迟抖动、丢包率等核心需求提供支持的服务能力的评估。
传统的IP网络无区别地对待所有的报文,路由器处理报文采用的策略是先进先出FIFO(First In First Out),它依照报文到达时间的先后顺序分配转发所需要的资源。
所有报文共享网络和路由器的资源,至于得到资源的多少完全取决于报文到达的时机。这种服务策略称作Best-Effort(尽力而为),它尽最大的努力将报文送到目的地,但对分组投递的延迟、延迟抖动、丢包率和可靠性等需求不提供任何承诺和保证。
传统的Best-Effort服务策略只适用于对带宽、延迟性能不敏感的WWW、文件传输、e-mail等业务。
随着计算机网络的高速发展,越来越多的网络接入因特网。Internet无论从规模、覆盖范围和用户数量上都拓展得非常快。越来越多的用户使用Internet作为数据传输的平台,开展各种应用。同样地,服务提供商也希望通过新业务的开展来增加收益。
除了传统的WWW、e-mail、FTP应用外,用户还尝试在Internet上拓展新业务,比如远程教学、远程医疗、可视电话、电视会议、视频点播等。企业用户也希望通过VPN技术,将分布在各地的分支机构连接起来,开展一些事务性应用:比如访问公司的数据库或通过Telnet管理远程设备。
这些新业务有一个共同特点,即对带宽、延迟、延迟抖动等传输性能有着特殊的需求。比如电视会议、视频点播需要高带宽、低延迟和低延迟抖动的保证。事务处理、Telnet等关键任务虽然不一定要求高带宽,但非常注重低延迟,在拥塞发生时要求优先获得处理。
新业务的不断涌现对IP网络的服务能力提出了更高的要求,用户已不再满足于能够简单地将报文送达目的地,而是还希望在投递过程中得到更好的服务,诸如支持为用户提供专用带宽、减少报文的丢失率、管理和避免网络拥塞、调控网络的流量、设置报文的优先级。所有这些,都要求网络应当具备更为完善的服务能力。
传统网络所面临的服务质量问题,主要是由网络拥塞引起的。所谓拥塞,是指由于供给资源的相对不足而造成服务速率下降(引入了额外的延迟)的一种现象。
在因特网分组交换的复杂环境下,拥塞极为常见。以下图中的两种情况为例:
图1-1 流量拥塞示意图
(1) 分组流从高速链路进入路由器,由低速链路转发出去。
(2) 分组流从相同速率的多个接口同时进入路由器,由一个相同速率的接口转发出去。
如果流量以线速到达,那么就会遭遇资源的瓶颈而导致拥塞。
不仅仅是链路带宽的瓶颈会导致拥塞,任何用以正常转发处理的资源的不足,如可分配的处理器时间、缓冲区、内存资源的不足,都会造成拥塞。此外,在某个时间内对所到达的流量控制不力,使之超出了可分配的网络资源,也是引发网络拥塞的一个因素。
拥塞有可能会引发一系列的负面影响:
l 拥塞增加了报文传输的延迟和延迟抖动。
l 过高的延迟会引起报文重传。
l 拥塞使网络的有效吞吐率降低,造成网络资源的损害。
l 拥塞加剧会耗费大量的网络资源(特别是存储资源),不合理的资源分配甚至可能导致系统陷入资源死锁而崩溃。
可见,拥塞使流量不能及时获得资源,是造成服务性能下降的源头。然而在分组交换以及多用户业务并存的复杂环境下,拥塞又是常见的,因此必须慎重加以对待。
& 说明:
当发生拥塞后,设备的处理性能会有所下降。当网络的吞吐率降低到QoS能够处理的范围内后,设备的处理性能会逐渐恢复正常。
增加网络带宽是解决资源不足的一个直接途径,然而它并不能解决所有导致网络拥塞的问题。
解决网络拥塞问题的一个更有效的办法是增加网络层在流量控制和资源分配上的功能,为有不同服务需求的业务提供有区别的服务,正确地分配和使用资源。在进行资源分配和流量控制的过程中,尽可能地控制好那些可能引发网络拥塞的直接或间接因素,减少拥塞发生的概率;并在拥塞发生时,依据业务的性质及其需求特性权衡资源的分配,将拥塞对QoS的影响减到最小。
流分类、流量监管、流量整形、拥塞管理、拥塞避免和物理接口限速是构造有区别地实施服务的基石,它们主要完成如下功能:
l 流分类:依据一定的匹配规则识别出对象。流分类是有区别地实施服务的前提。
l 流量监管:对进入路由器的特定流量的规格进行监管。当流量超出规格时,可以采取限制或惩罚措施,以保护运营商的商业利益和网络资源不受损害。流量监管是在IP层上实现的。
l 拥塞管理:网络拥塞是必须采取的解决资源竞争的措施。通常是将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序。
l 拥塞避免:过度的拥塞会对网络资源造成损害。拥塞避免监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量来解除网络的过载。
l 流量整形:一种主动调整流的输出速率的流控措施,通常是为了使流量适配下游路由器可供给的网络资源,避免不必要的报文丢弃和拥塞。流量整形也是在IP层上实现的。
l 物理接口限速:与TP相比,LR能够限制在物理接口上通过的所有报文。TP在IP层实现,对于不经过IP层处理的报文不起作用。当用户只要求对所有报文限速时,使用LR比较简单。
在这些流量管理技术中,流分类是基础,它依据一定的匹配规则识别出报文,是有区别地实施服务的前提;而流量监管、流量整形、拥塞管理和拥塞避免从不同方面对网络流量及其分配的资源实施控制,是有区别地提供服务思想的具体体现。
一般情况下,QoS执行以下功能:
l 流分类
l 流量监管和流量整形
l 拥塞管理
l 拥塞避免
流分类采用一定的规则识别符合某类特征的报文,它是有区别地进行服务的前提和基础。
流分类规则可以使用IP报文头的ToS字段的优先级位,识别出有不同优先级特征的流量;也可以由网络管理者设置流分类的策略,例如综合源地址、目的地址、MAC地址、IP协议或应用程序的端口号等信息对流进行分类。一般的分类依据都局限在封装报文的头部信息,使用报文的内容作为分类的标准是比较少见的。分类的结果是没有范围限制的,它可以是一个由五元组(源地址、源端口号、协议号码、目的地址、目的端口号)确定的狭小范围,也可以是到某网段的所有报文。
一般在网络边界对报文分类时,同时设置报文IP头的ToS字段中的优先级位,这样,在网络的内部就可以直接使用IP优先级作为分类标准。而队列技术如WFQ也可以使用这个优先级来对报文进行不同的处理。下游(downstream)网络可以选择接收上游(upstream)网络的分类结果,也可以按照自己的标准重新进行分类。
进行流分类是为了有区别地提供服务,它必须与某种流控或资源分配动作关联起来才有意义。具体采取何种流控动作,与所处的阶段以及网络当前的负载状况有关。例如,当报文进入网络时依据承诺速率对它进行监管;流出结点之前进行整形;拥塞时的队列调度管理;拥塞加剧时要采取拥塞避免措施等。
如果不限制用户发送的流量,那么大量用户不断突发的数据只会使网络更拥挤。为了使有限的网络资源能够更好地发挥效用,更好地为更多的用户服务,必须对用户的流量加以限制。比如限制每个时间间隔某个流只能得到承诺分配给它的那部分资源,防止由于过分突发所引发的网络拥塞。
流量监管和流量整形就是一种通过对流量规格的监督,来限制流量及其资源使用的流控策略。进行流量监管或整形有一个前提条件,就是要知道流量是否超出了规格,然后才能根据评估结果实施调控策略。一般采用令牌桶(Token Bucket)对流量的规格进行评估。
令牌桶可以看作是一个存放令牌的容器,它有一定的容量。系统按设定的速度向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。
在用令牌桶评估流量规格时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文(通常用一个令牌关联一个比特的转发权限),称流量遵守或符合(conform)这个规格,否则称为不符合或超标(excess)。
评估流量时令牌桶的参数设置包括:
l 平均速率:向桶中放置令牌的速率,即允许的流的平均速度。通常设置为承诺信息速率(Committed Information Rate,CIR)。
l 突发尺寸:令牌桶的容量,即每次突发所允许的最大的流量尺寸。通常设置为承诺突发尺寸(Committed Burst Size,CBS),设置的突发尺寸必须大于最大报文长度。
每到达一个报文就进行一次评估。每次评估,如果桶中有足够的令牌可供使用,则说明流量控制在允许的范围内,此时要从桶中取走与报文转发权限相当的令牌数量;否则说明已经耗费太多令牌,流量超标了。
为了评估更复杂的情况,实施更灵活的调控策略,可以设置两个令牌桶。例如流量监管(Traffic Policing,简称TP)中有三个参数:
l 承诺信息速率CIR(Committed Information Rate)
l 承诺突发尺寸CBS(Committed Burst Size)
l 超出突发尺寸EBS(Excess Burst Size)
它使用了两个令牌桶,每个桶投放令牌的速率一样,均为CIR,只是尺寸不同——分别为CBS和CBS+EBS(这两个桶简称C桶和E桶),代表所允许的不同突发级别。每次评估时,依据“C桶有足够的令牌”、“C桶令牌不足,但E桶足够”以及“C桶和E桶都没有足够的令牌”的情况,可以分别实施不同的流控策略。
流量监管(Traffic Policing)的典型应用是监督进入网络的某一流量的规格,把它限制在一个合理的范围之内,或对超出的部分流量进行“惩罚”,以保护网络资源和运营商的利益,例如可以限制HTTP报文不能占用超过50%的网络带宽。如果发现某个连接的流量超标,流量监管可以选择丢弃报文,或重新设置报文的优先级。
流量监管广泛地用于监管进入因特网服务提供商ISP的网络流量。TP还包括对所监管流量的流分类服务,并依据不同的评估结果,实施预先设定好的监管动作。这些动作可以是:
l 转发:比如对评估结果为“符合”的报文继续正常转发的处理。
l 丢弃:比如对评估结果为“不符合”的报文进行丢弃。
l 改变优先级并转发:比如对评估结果为“部分符合”的报文,将之标记为其它的优先级后再进行转发。
l 进入下一级的监管:流量监管可以逐级堆叠,每级关注和监管更具体的目标。
流量整形(Traffic Shaping)是一种主动调整流量输出速率的措施。一个典型应用是基于下游网络结点的TP指标来控制本地流量的输出。
流量整形与流量监管的主要区别在于,流量整形对流量监管中需要丢弃的报文进行缓存——通常是将它们放入缓冲区或队列内,也称流量整形(Traffic Shaping,简称TS),如图2-2所示。当令牌桶有足够的令牌时,再均匀的向外发送这些被缓存的报文。流量整形与流量监管的另一区别是,整形可能会增加延迟,而监管几乎不引入额外的延迟。
图2-2 TS示意图
例如,在下图所示的应用中,RouterA向RouterB发送报文。RouterB要对RouterA发送来的报文进行TP监管,对超出规格的流量直接丢弃。
为了减少报文的无谓丢失,可以在RouterA的出口对报文进行TS处理。将超出TS流量特性的报文缓存在路由器中。当可以继续发送下一批报文时,TS再从缓冲队列中取出报文进行发送。这样,发向RouterB的报文将都符合RouterB的流量规定。
利用物理接口限速(Line Rate,LR)可以在一个物理接口上限制发送报文(包括紧急报文)的总速率。
LR也是采用令牌桶进行流量控制。如果在路由器的某个接口上配置了LR ,所有经由该接口发送的报文首先要经过LR的令牌桶进行处理。如果令牌桶中有足够的令牌,则报文可以发送;否则,报文将入QoS队列进行拥塞管理。这样,就可以对通过该物理接口的报文流量进行控制。
图2-4 LR处理过程示意图
由于采用了令牌桶控制流量,当令牌桶中存有令牌时,可以允许报文的突发性传输;当令牌桶中没有令牌时,报文必须等到桶中生成了新的令牌后才可以继续发送。这就限制了报文的流量不能大于令牌生成的速度,达到了限制流量,同时允许突发流量通过的目的。
与TP相比,LR能够限制在物理接口上通过的所有报文。TP在IP层实现,对于不经过IP层处理的报文不起作用。当用户只要求对所有报文限速时,使用LR比较简单。
流量监管配置主要包括:
l 配置CAR列表
l 应用CAR策略
流量整形配置主要包括:
l 为某一类别的流设置整形参数
l 为所有的流设置整形参数
物理接口限速配置主要包括:
l 设置物理接口限速LR
流量监管的配置包括两方面的任务,一是定义那些需要实施监管的报文的特征,二是定义对这些报文的监管策略。
在应用CAR策略之前,可以通过创建CAR列表对报文进行分类。对于不同的carl-index,本命令的重复执行将创建多个CAR列表;对于同一个carl-index,本命令的重复执行将修改CAR列表的参数。
请在系统视图下进行下列配置。
操作 |
命令 |
创建/修改CAR列表 |
qos carl carl-index { precedence precedence-value | dscp dscp-value | mac mac-address } |
删除CAR列表 |
undo qos carl carl-index |
当需要在一条CAR列表中同时匹配多个优先级或DSCP值时,可指定多个不同的precedence-value或dscp-value。
本命令的重复执行将在接口上配置多个CAR策略。本命令只对IP数据包进行处理,对其他的数据包不进行处理。
请在接口视图下进行下列配置。
操作 |
命令 |
应用CAR策略 |
qos car { inbound | outbound } { any | acl acl-number | carl carl-index } cir committed-information-rate cbs committed-burst-size ebs excess-burst-size green action red action |
删除CAR策略 |
undo qos car { inbound | outbound } { any | acl acl-number | carl carl-index } cir committed-information-rate cbs committed-burst-size ebs excess-burst-size |
其中,CIR不能超过CBS×20。
命令中对数据包采取的动作(action)有以下几种:
l continue:继续由下一个CAR策略处理。
l discard:丢弃数据包。
l pass:发送数据包。
l remark-prec-continue new-precedence:设置新的IP优先级new-precedence,并继续由下一个CAR策略处理,取值范围0~7。
l remark-prec-pass new-precedence:设置新的IP优先级new-precedence,并发送数据包到目的地址,取值范围0~7。
CAR策略可以应用于报文到达的接口,也可应用于报文离开的接口。
为某一类流或所有的流设置整形参数就可以使系统开始进行整形。
qos gts acl用来为符合某一ACL的流设置整形参数,使用不同的ACL可以为不同的流设置整形参数。
qos gts any用来为所有的流设置整形参数,重复使用将替代原来的设置。
qos gts acl不能和qos gts any同时使用。
请在接口视图下进行下列设置。
操作 |
命令 |
为某一类别的流设置整形参数 |
qos gts { any | acl acl-number } cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size [ queue-length queue-length ] ] ] |
取消对某一类别的流整形 |
undo qos gts { any | acl acl-number } |
配置接口限速就是限制物理接口向外发送数据的速率。
请在接口视图下进行下列配置。
操作 |
命令 |
设置接口限速 |
qos lr cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] |
取消接口限速 |
undo qos lr |
在完成上述配置后,在任意视图下执行display命令可以显示TP的某条规则或所有访问规则,通过查看显示信息验证配置的效果。
操作 |
命令 |
显示TP规则 |
display qos carl [ carl-index ] |
在完成上述配置后,在任意视图下执行display命令可以显示TP在各接口上的参数设置情况和运行统计信息,通过查看显示信息验证配置的效果。
表2-6 显示接口的TP配置情况和统计信息
操作 |
命令 |
显示接口的TP配置情况和统计信息 |
display qos car interface [ interface-type interface-number ] |
在完成上述配置后,在任意视图下执行display命令可以显示某个接口或所有接口的TS配置情况和统计信息,通过查看显示信息验证配置的效果。
表2-7 显示接口的TS配置情况和统计信息
操作 |
命令 |
显示接口的TS配置情况和统计信息 |
display qos gts interface [ interface-type interface-number ] |
在完成上述配置后,在任意视图下执行display命令可以显示某个接口或所有接口的LR配置情况和统计信息,通过查看显示信息验证配置的效果。
表2-8 显示接口的LR配置情况和统计信息
操作 |
命令 |
显示接口的LR配置情况和统计信息 |
display qos lr interface [ interface-type interface-number ] |
如图2-5所示,Router1通过接口GigabitEthernet1/0和Router2的接口GigabitEthernet2/0互连,Server、PC1、PC2可经由Router1和Router2访问Internet。Server、PC1与Router1的GigabitEthernet2/0接口在同一网段,PC2与Router1的GigabitEthernet3/0接口在同一网段。要求在Router2上对接口GigabitEthernet2/0接收到的源自Server和PC1的报文流分别实施流量控制如下:
来自server的报文流量约束为54000bps,流量小于54000bps时可以正常发送,流量超过54000bps时则将违规报文的优先级设置为0后进行发送;
来自PC的报文流量约束为8000bps,流量小于8000bps时可以正常发送,流量超过8000bps时则丢弃违规报文;
同时,对Router2的GigabitEthernet 2/0和GigabitEthernet 1/0接口收发报文有如下要求:
l Router2的GigabitEthernet 2/0接口接收报文的总流量限制为0.5Mbps,如果超过流量限制则将违规报文丢弃;
l 经由Router2的GigabitEthernet 1/0接口进入Internet的报文流量限制为1Mbps,如果超过流量限制则将违规报文丢弃。
(1) 配置Router1:
# 在Router1的GigabitEthernet1/0接口上配置TS,对该接口发送的报文进行流量整形(对超过0.5Mbps的报文流进行整形),以降低在Router2接口GigabitEthernet2/0处的丢包率。
[H3C] interface gigabitethernet1/0
[H3C-GigabitEthernet1/0] qos gts any cir 500000
(2) 配置Router2:
# 配置ACL规则列表,分别匹配来源于Server和PC1的报文流。
[H3C] acl number 2001
[H3C-acl-basic-2001] rule permit source 1.1.1.1 0.0.0.0
[H3C] acl number 2002
[H3C-acl-basic-2002] rule permit source 1.1.1.2 0.0.0.0
# 在GigabitEthernet2/0接口上进行TP配置,对GigabitEthernet2/0接收到的不同报文流进行相应流量控制。
[H3C] interface gigabitethernet2/0
[H3C-GigabitEthernet2/0] qos car inbound acl 2001 cir 54000 cbs 54000 ebs 0 green pass red remark-prec-pass 0
[H3C-GigabitEthernet2/0] qos car inbound acl 2002 cir 80000 cbs 80000 ebs 0 green pass red discard
[H3C-GigabitEthernet2/0] qos car inbound any cir 500000 cbs 500000 ebs 0 green pass red discard
# 在GigabitEthernet1/0接口上进行TP配置,对由GigabitEthernet 1/0接口发送的报文进行流量控制,报文流量不能超过1Mbps,如果超过流量限制则将违规报文丢弃。
[H3C] interface GigabitEthernet1/0
[H3C-GigabitEthernet1/0] qos car outbound any cir 1000000 cbs 1000000 ebs 0 green pass red discard
对于网络单元,当分组到达的速度大于该接口发送分组的速度时,在该接口处就会产生拥塞。如果没有足够的存储空间来保存这些分组,其中的一部分就会丢失。分组的丢失又可能会导致发送该分组的主机或路由器因超时而重传此分组,这将导致恶性循环。
拥塞管理的中心内容就是当拥塞发生时如何制定一个资源的调度策略,决定报文转发的处理次序。
对于拥塞管理,一般采用排队技术,使用一个队列算法对流量进行分类,之后用某种优先级别算法将这些流量发送出去。每种队列算法都是用以解决特定的网络流量问题,并对带宽资源的分配、延迟、延迟抖动等有着十分重要的影响。
这里介绍几种常用的队列调度机制。
如上图所示,FIFO按照时间到达的先后决定分组的转发次序。用户的业务流在路由器能够获得的资源取决于分组的到达时机及当时的负载情况。Best-Effort报文投递方式采用的就是FIFO的排队策略。
如果路由器的每个端口只有一个基于FIFO的输入或输出队列,那么恶性的应用可能会占用所有的网络资源,严重影响关键业务数据的传送。
每个队列内部报文的发送(次序)关系默认是FIFO。
PQ队列是针对关键业务应用设计的。关键业务有一个重要的特点,即在拥塞发生时要求优先获得服务以减小响应的延迟。PQ可以根据网络协议(比如IP,IPX)、数据流入接口、报文长短、源地址/目的地址等灵活地指定优先次序。 优先队列将报文分成4类,分别为高优先队列(top)、中优先队列(middle)、正常优先队列(normal)和低优先队列(bottom),它们的优先级依次降低。缺省情况下,缺省数据流进入normal队列。
在队列调度时,PQ严格按照优先级从高到低的次序,优先发送较高优先级队列中的分组,当较高优先级队列为空时,再发送较低优先级队列中的分组。这样,将关键业务的分组放入较高优先级的队列,将非关键业务的分组放入较低优先级的队列,可以保证关键业务的分组被优先传送,非关键业务的分组在处理关键业务数据的空闲间隙被传送。
PQ的缺点是如果较高优先级队列中长时间有分组存在,那么低优先级队列中的报文将可能一直得不到服务。
CQ按照一定的规则将分组分成17类(对应于17个队列),分组根据自己的类别按照先进先出的策略进入相应的CQ队列。
在CQ的17个队列中,0号队列是系统队列(图中未画出),不允许用户配置;1到16号队列是用户队列,如图3-3所示。用户可以配置流分类的规则,指定16个用户队列占用接口带宽的比例关系。在队列调度时,系统队列中的分组被优先发送。直到系统队列为空,再采用轮询的方式按照预先配置的带宽比例依次从1到16号用户队列中取出一定数量的分组发送出去。这样,就可以使不同业务的分组获得不同的带宽,既可以保证关键业务能获得较多的带宽,又不至于使非关键业务得不到带宽。缺省情况下,缺省数据流进入1号队列。
定制队列的另一个优点是:可根据业务的繁忙程度分配带宽,适用于对带宽有特殊需求的应用。虽然16个用户队列的调度是轮询进行的,但对每个队列不是固定地分配服务时间片——如果某个队列为空,那么马上换到下一个队列调度。因此,当没有某些类别的报文时,CQ调度机制能自动增加现存类别的报文可占的带宽。
在介绍加权公平队列前,先要理解公平队列FQ(Fair Queue)。FQ是为了公平地分享网络资源,尽可能使所有流的迟延和延迟抖动达到最优而推出的。它照顾了各方面的利益,主要表现在:
l 不同的队列获得公平的调度机会,从总体上均衡各个流的延迟。
l 短报文和长报文获得公平的调度:如果不同队列间同时存在多个长报文和短报文等待发送,应当顾及短报文的利益,让短报文优先获得调度,从而在总体上减少各个流的报文间的延迟抖动。
与FQ相比,WFQ在计算报文调度次序时增加了优先权方面的考虑。从统计上,WFQ使高优先权的报文获得优先调度的机会多于低优先权的报文。WFQ能够按流的“会话”信息(协议类型、源和目的TCP或UDP端口号、源和目的IP地址、ToS域中的优先级位等)自动进行流分类,并且尽可能多地提供队列,以将每个流均匀地放入不同队列中,从而在总体上均衡各个流的延迟。在出队的时候,WFQ按流的优先级(precedence)来分配每个流应占有出口的带宽。优先级的数值越大,所得的带宽越多。
例如:接口中当前共有5个流,它们的优先级分别为0、1、2、3、4,则带宽总配额为所有 (流的优先级+1)的和。即
1 + 2 + 3 + 4 + 5 = 15
每个流所占带宽比例为:(自己的优先级数 + 1)/(所有 (流的优先级 + 1) 的和)。即每个流可得的带宽分别为:1/15,2/15,3/15,4/15,5/15。
由于WFQ在拥塞发生时能均衡各个流的延迟和延迟抖动,所以WFQ在一些特殊场合得到了有效的应用。比如在使用资源预留协议RSVP(Resource Reservation Protocol)的保证型业务中,通常就是采用WFQ作为调度策略;在流量整形TS中,也采用WFQ调度缓存的报文。
CBQ是对WFQ功能的扩展,为用户提供了定义类的支持。CBQ为每个用户定义的类分配一个单独的FIFO预留队列,用来缓冲同一类的数据。在网络拥塞时,CBQ对输出报文根据用户定义的类规则进行匹配,并使其进入相应的队列,在入队列之前必须进行拥塞避免机制(尾部丢弃或WRED,Weighted Random Early Detection,加权随机早期检测)和带宽限制的检查。在报文出队列时,加权公平调度每个类对应的队列中的报文。
CBQ提供一个紧急队列,紧急报文入紧急队列,该紧急队列采用FIFO调度,没有带宽限制。这样,如果CBQ加权公平对待所有类的队列,语音报文这类对延迟敏感的数据流就可能不能及时发送。为此将PQ特性引入CBQ,称其为LLQ(Low Latency Queueing,低延迟队列),为语音报文这样的对延迟敏感的数据流提供严格优先发送服务。
LLQ将严格优先队列机制与CBQ结合起来使用,用户在定义类时可以指定其享受严格优先服务,这样的类称作优先类。所有优先类的报文将进入同一个优先队列,在入队列之前需对各类报文进行带宽限制的检查。报文出队列时,将首先发送优先队列中的报文,直到发送完后才发送其他类对应的队列的报文。在发送其他队列报文时将仍然按照加权公平的方式调度。
为了不让其他队列中的报文延迟时间过长,在使用LLQ时将会为每个优先类指定可用最大带宽,该带宽值用于拥塞发生时监管流量。 如果拥塞未发生,优先类允许使用超过分配的带宽。如果拥塞发生,优先类超过分配带宽的数据包将被丢弃。LLQ还可以指定Burst-size。
系统在为报文匹配规则时,总是先匹配优先类,然后再匹配其他类。对多个优先类,按照配置顺序逐一匹配;对其他类,也是按照配置顺序逐一匹配。对类中多个规则,按照配置顺序逐一匹配。
RTP优先队列是一种解决实时业务(包括语音与视频业务)服务质量的简单的队列技术。其原理就是将承载语音或视频的RTP报文送入高优先级队列,使其得到优先发送,保证时延和抖动降低为最低限度,从而保证了语音或视频这种对时延敏感业务的服务质量。
图3-5 RTP队列示意图
如上图所示,RTP优先队列将RTP报文送入一个具有较高优先级的队列。RTP报文是端口号在一定范围内为偶数的UDP报文,端口号的范围可以配置。RTP优先队列可以同任何一种队列(包括FIFO、PQ、CQ、WFQ与CBQ)结合使用,而它的优先级是最高的。但由于CBQ中的LLQ也可以解决实时业务,所以一般不推荐将RTP优先队列与CBQ结合应用。
H3C路由器提供了以上拥塞管理技术。突破了传统IP设备的单一FIFO拥塞管理策略,提供了强大的QoS能力,使得IP设备可以满足不同业务所要求的不同服务质量的要求。为了更好的利用拥塞管理技术,现对各种队列技术做一比较。
类型 |
队列数 |
优点 |
缺点 |
FIFO |
1 |
1、不需要配置,易于使用。 2、处理简单,延迟小。 |
1、所有的报文,无论紧急与否,语音还是数据,均进入一个“先进先出”的队列,发送报文所占用的带宽、延迟时间、丢失的概率均由报文到达队列的先后顺序决定。 2、对不配合的数据源(即没有流控机制的流,如UDP报文发送)无约束力,不配合的数据源会造成配合的数据源(如TCP报文发送)带宽受损失。 3、对时间敏感的实时应用(如VoIP)的延迟得不到保证。 |
PQ |
4 |
可对不同业务的数据提供绝对的优先,对时间敏感的实时应用(如VoIP)的延迟可以得到保证。对优先业务的报文的带宽占用可以绝对优先。 |
1、需配置,系统开销大。 2、如果不对高优先级的报文的带宽加限制,会造成低优先级的报文得不到带宽。 |
CQ |
16 |
1、可对不同业务的报文按带宽比例分配带宽。 2、当没有某些类别的报文时,能自动增加现存类别的报文可占的带宽。 |
需配置,系统开销大。 |
WFQ |
可配置 |
1、配置容易。 2、可以保护配合(交互)的数据源(如TCP报文发送)的带宽。 3、可以减小延迟抖动。 4、可以减小数据量小的交互式应用的延迟。 5、可以为不同优先级的流分配不同的带宽。 6、当流的数目减少时,能自动增加现存流可占的带宽。 |
系统开销比FIFO要大,但比PQ、CQ要小。 |
CBQ |
可配置(0~64) |
1、可以对数据根据灵活、多样的分类规则进行划分,分别为EF(加速转发)、AF(确保转发)、BE(尽力转发)业务提供不同的队列调度机制。 2、可以为AF业务提供严格、精确的带宽保证,并且保证各类AF业务之间根据权值按一定的比例关系进行队列调度。 3、可以为EF业务提供绝对优先的队列调度,确保实时数据的时延;同时通过对高优先级数据流量的限制,克服了PQ的低优先级队列可能“饿死”的弊病。 4、对于尽力转发的缺省类数据,提供WFQ队列调度。 |
系统开销大 |
先进先出队列FIFO的配置包括:
l 配置FIFO队列的长度
FIFO是接口缺省使用的队列调度机制,可以通过配置命令改变其队列长度。
请在接口视图下进行下列配置。
表3-2 配置FIFO队列的长度
操作 |
命令 |
配置FIFO队列的长度 |
qos fifo queue-length queue-length |
恢复FIFO队列的缺省长度 |
undo fifo queue-length |
l 配置优先列表
l 在接口上应用优先列表组
根据协议类型对分组进行分类,使之进入不同的队列。对于同一个pql-index,本命令的重复使用可以为pql-index建立多个规则。
系统以规则被配置的顺序来匹配分组,如果发现分组与某个规则匹配,便结束整个查找过程。
请在系统视图下进行下列配置。
操作 |
命令 |
根据网络层协议配置优先列表 |
qos pql pql-index protocol ip [ queue-key key-value ] queue { top | middle | normal | bottom } |
删除pql-index中相应的分类规则 |
undo qos pql pql-index protocol ip [ queue-key key-value ] |
根据分组来自的路由器接口进行分类,使之进入不同的队列。
请在系统视图下进行下列配置。
操作 |
命令 |
根据分组来自的接口配置优先列表 |
qos pql pql-index inbound-interface interface-type interface-number queue { top | middle | normal | bottom } |
删除pql-index中相应的分类规则 |
undo qos pql pql-index inbound-interface interface-type interface-number |
为不与任何规则匹配的包指定一个缺省队列。
请在系统视图下进行下列配置。
操作 |
命令 |
配置缺省队列 |
qos pql pql-index default-queue { top | middle | normal | bottom } |
恢复缺省队列的缺省值 |
undo qos pql pql-index default-queue |
可以给一个优先列表的组定义多条规则,然后把该组规则应用在某接口上。当一个分组到达该接口时(需要由此接口传送出去),系统沿规则链匹配该分组,如果匹配上某规则,则进入相应的队列,匹配结束;如果分组不与任何规则匹配,则进入缺省队列。
缺省队列的缺省值为normal。
设置各队列的长度(即队列所能容纳的分组的个数)。
请在系统视图下进行下列配置。
操作 |
命令 |
配置队列长度 |
qos pql pql-index queue { top | middle | normal | bottom } queue-length queue-length |
形式恢复各队列长度的缺省值 |
undo qos pql pql-index queue { top | middle | normal | bottom } queue-length |
各队列的缺省长度如下表所示。
队列 |
长度 |
top |
20 |
middle |
40 |
normal |
60 |
bottom |
80 |
将一组优先列表应用到接口上。对于同一个接口,本命令的重复使用将为接口设定新的优先列表组。
请在接口视图下进行下列配置。
操作 |
命令 |
在接口上应用优先列表组 |
qos pq pql pql-index |
取消使用PQ |
undo qos pq |
缺省情况下,接口不使用PQ,而使用FIFO。
在完成上述配置后,在任意视图下执行display命令可以显示优先列表及在接口上的应用情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
显示优先列表的状态 |
display qos pql [ pql-index ] |
显示接口上优先列表的配置情况 |
display qos pq interface [ interface-type interface-number ] |
定制队列CQ的配置包括:
l 配置定制列表
l 在接口上应用定制列表组
定制列表共可分为16个组(1~16),每个组指明了什么样的分组进入什么样的队列、各队列的长度和每次轮询各队列所能连续发送的字节数等信息。在一个接口上只能应用一个定制列表组。
根据协议类型对分组进行分类,使之进入不同的队列。目前,Comware只支持对IP报文进行分类。
请在系统视图下进行下列配置。
操作 |
命令 |
根据网络层协议配置定制列表 |
qos cql cql-index protocol ip [ queue-key key-value ] queue queue-number |
删除cql-index中相应的分类规则 |
undo qos cql cql-index protocol ip [ queue-key key-value ] |
建立基于接口的分类规则。对于同一个cql-index,本命令的重复使用可以为cql-index增加新的规则。
请在系统视图下进行下列配置。
操作 |
命令 |
根据分组来自的接口配置定制列表组 |
qos cql cql-index inbound-interface interface-type interface-number queue queue-number |
删除cql-index中相应的分类规则 |
undo qos cql cql-index inbound-interface interface-type interface-number |
为那些不与任何规则匹配的分组指定一个缺省队列。
请在系统视图下进行下列配置。
操作 |
命令 |
配置缺省队列 |
qos cql cql-index default-queue queue-number |
恢复缺省队列的缺省值 |
undo qos cql cql-index default-queue |
我们可以给一个定制列表的组定义多条规则,然后把该组应用在某接口上。当一个分组到达该接口时(由此接口传送出去),系统沿规则链匹配该分组,如果匹配上某规则,则进入相应的队列,匹配结束;如果分组不与任何规则匹配,则进入缺省队列。
缺省队列的缺省值为1。
设置各定制队列的长度(即队列所能容纳的分组的个数)。
请在系统视图下进行下列配置。
操作 |
命令 |
配置队列长度 |
qos cql cql-index queue queue-number queue-length queue-length |
恢复各队列长度的缺省值 |
undo qos cql cql-index queue queue-number queue-length |
其中:queue-length为队列的最大长度,缺省值为20。
设置各队列每次轮询所发送分组的字节数。
请在系统视图下进行下列配置。
操作 |
命令 |
配置连续发送字节数 |
qos cql cql-index queue queue-number serving byte-count |
恢复发送字节数的缺省值 |
undo qos cql cql-index queue queue-number serving |
其中:
byte-count:当路由器调度CQ的用户队列时,它连续从这个队列中取出分组进行发送,直到发送的字节数不少于为该队列配置的byte-count的值或者队列为空,再转而调度CQ的下一个用户队列。因此,byte-count的值会影响CQ各用户队列之间占用接口带宽的比例关系,并且决定了多长时间路由器才会调度CQ的下一个队列。byte-count的缺省字节数为1500。
如果byte-count的值过小,由于路由器每次至少发送一个分组才会转向下一个队列,各个队列实际获得的带宽很可能与预想的效果相差甚远;如果byte-count值过大,则可能会造成队列间切换延迟太大。
请在接口视图下进行下列配置。
操作 |
命令 |
在接口上应用定制列表 |
qos cq cql cql-index |
取消使用CQ |
undo qos cq |
缺省情况下,接口不使用CQ,而使用FIFO。
在完成上述配置后,在任意视图下执行display命令可以显示定制列表状态及在接口上的应用情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
显示定制列表状态 |
display qos cql [ cql-index ] |
显示定制列表在接口上应用情况 |
display qos cq interface [ interface-type interface-number ] |
加权公平队列WFQ的配置包括:
l 在接口上应用加权公平队列
WFQ对报文按流进行分类,对于IP网络,五元组(源IP地址、目的IP地址、源端口号、目的端口号、协议号)和IP优先级或者DSCP相同的报文属于同一个流。在接入层的网络中,通常使用IP优先级和五元组配合进行流分类;在汇聚层网络中通常使用DSCP值和五元组配合进行流分类。WFQ默认是使用IP优先级和五元组配合进行流分类,用户可以通过下面命令来做出选择。
当接口没有使用WFQ策略时,使用本命令可以使接口使用WFQ策略,同时可指定WFQ的参数。如果接口已经使用了WFQ策略,使用本命令可以修改WFQ的参数。
请在接口视图下进行如下配置。
操作 |
命令 |
使用加权公平队列或修改WFQ的参数 |
qos wfq [ precedence | dscp ] [ queue-length max-queue-length [ queue-number total-queue-number ] ] |
取消使用WFQ |
undo qos wfq |
缺省情况下,接口不使用WFQ,而使用FIFO。
total-queue-number:队列的总数目,可取的值为:16、32、64、128、256、512、1024、2048、4096,缺省值为256。
注意:
l Dialer口上可以应用WFQ队列,但是只有当物理接口上配置为缺省队列,WFQ队列才能成功应用到Dialer口上。
l 在Dialer口上应用队列配置时,如果和Dialer口绑定的物理接口已经和相连的设备建立了连接,则Dialer口上的配置无法马上更新到该物理接口上。只有当物理接口再次建立连接时,Dialer口上的配置才能更新到该物理接口上。
在完成上述配置后,在任意视图下执行display命令可以显示接口加权公平队列的配置情况和统计信息,通过查看显示信息验证配置的效果。
操作 |
命令 |
显示接口加权公平队列的配置情况和统计信息 |
display qos wfq interface [ interface-type interface-number ] |
基于类的队列CBQ的配置包括:
l 配置接口最大可用带宽
l 定义类,并在类视图中定义一组流分类规则
l 定义流行为,并在流行为视图中定义一组QoS特性
l 定义策略,在策略视图下为使用的类中指定对应的流行为
l 在接口视图下应用QoS策略
为方便用户使用,系统预定义了一些类、流行为以及策略,具体如下。
系统预定义了一些类,并为这些类定义了通用的规则,用户定义策略时可直接使用这些类,这些类包括:
(1) 缺省类
default-class:匹配的是缺省数据流。
(2) 基于DSCP的预定义类
ef、af1、af2、af3、af4:分别匹配IP DSCP值ef、af1、af2、af3、af4
(3) 基于IP优先级的预定义类
ip-prec0,ip-prec1,…ip-prec7:分别匹配IP优先级0,1,…7
系统预定义了一些流行为,并为这些流行为定义了QoS特性:
(1) ef:定义了一个特性为入EF队列,占用带宽为接口可用带宽的20%
(2) af:定义了一个特性为入AF队列,占用带宽为接口可用带宽的20%
(3) be:不定义任何特性
系统预定义了一个策略,为该策略指定了使用的预定义类,并为这些类指定预定义的动作。该策略名为default,具有缺省的CBQ动作。
default策略的具体规则如下:
(1) 预定义类ef,采用预定义流行为ef
(2) 预定义类af1~af4,采用预定义流行为af
(3) default-class类,采用预定义流行为be
该带宽指CBQ中报文入队列带宽检查时使用的最大接口带宽,并非指物理接口的实际带宽。
请在接口视图下进行下列配置。
表3-19 配置MP绑定带宽
操作 |
命令 |
配置本接口的带宽 |
qos max-bandwidth bandwidth |
恢复本接口的带宽缺省值 |
undo qos max-bandwidth |
bandwidth是接口的可用带宽,单位Kbps,范围为1到1000000。缺省情况下,对于物理接口,其取值为物理接口实际的波特率或速率;对于虚拟接口模板(Virtual Template)、VE等逻辑接口,取值为64Kbps。
建议该值小于物理接口或逻辑链路的实际可用带宽。
定义类首先要创建一个类名称,然后在此类视图下配置其匹配规则。
请在系统视图下进行下列配置。
操作 |
命令 |
定义类并进入类映射视图 |
traffic classifier tcl-name [ operator { and | or } ] |
删除类并进入类映射视图 |
undo traffic classifier tcl-name |
用户定义的类名tcl-name不允许为系统预定义类。
缺省为and,即类视图下各匹配规则之间的关系为逻辑与。
请在类视图下进行下列配置。
操作 |
命令 |
定义匹配所有数据包的规则 |
if-match [ not ] any |
删除匹配所有数据包的规则 |
undo if-match [ not ] any |
请在类视图下进行下列配置。
操作 |
命令 |
定义classifier匹配规则 |
if-match [ not ] classifier tcl-name |
删除classifier匹配规则 |
undo if-match [ not ] classifier tcl-name |
该命令不能递归使用,例如,traffic classifier A定义了匹配traffic classifier B的规则,traffic classifier B不能再直接或者间接的引用traffic classifier A。
定义ACL匹配规则。
请在类视图下进行下列配置。
表3-23 定义或删除ACL匹配规则
操作 |
命令 |
定义ACL匹配规则 |
if-match [ not ] acl access-list-number |
删除ACL匹配规则 |
undo if-match [ not ] acl access-list-number |
请在类视图下进行下列配置。
表3-24 定义或删除MAC地址匹配规则
操作 |
命令 |
定义MAC地址匹配规则 |
if-match [ not ] { destination-mac | source-mac } mac-address |
删除MAC地址匹配规则 |
undo if-match [ not ] { destination-mac | source-mac } mac-address |
目的MAC地址匹配规则只对出方向的策略有意义,并且只对以太类型的接口有意义。
源MAC地址匹配规则只对入方向的策略有意义,并且只对以太类型的接口有意义。
请在类视图下进行下列配置。
操作 |
命令 |
定义类的入接口匹配规则 |
if-match [ not ] inbound-interface type number |
删除类的入接口匹配规则 |
undo if-match [ not ] inbound-interface type number |
匹配的接口删除时,该规则自动删除。
DSCP(Differentiated Services CodePoint,差分服务编码点)是IETF DiffServ工作组将IP报文头ToS字节的高6位重新定义的域,ToS字节因而也改名为DS字节。在DiffServ方案中,在网络入口处根据服务要求对业务进行分类、流量控制,同时设置DSCP,在网络中将依据分组的DSCP值来区分每一类通信并为之服务(包括资源分配、分组丢弃策略等)。
用户可以根据DSCP值来设置分类的匹配规则。
请在类视图下进行下列配置。
表3-26 定义或删除DSCP匹配规则
操作 |
命令 |
定义DSCP匹配规则 |
if-match [ not ] dscp { dscp-value } |
删除DSCP匹配规则 |
undo if-match [ not ] dscp { dscp-value } |
请在类视图下进行下列配置。
表3-27 定义或删除IP优先值匹配规则
操作 |
命令 |
定义IP优先值匹配规则 |
if-match [ not ] ip-precedence { ip-precedence-value } |
删除IP优先值匹配规则 |
undo if-match [ not ] ip-precedence |
配置时将需要配置的IP优先值用一条命令进行配置,否则最后配置的if-match ip-precedence命令会覆盖前面的配置。
请在类视图下进行下列配置。
表3-28 定义或删除RTP协议端口匹配规则
操作 |
命令 |
定义RTP协议端口匹配规则 |
if-match [ not ] rtp start-port starting-port-number end-port end-port-number |
删除RTP协议端口匹配规则 |
undo if-match [ not ] rtp start-port starting-port-number end-port end-port-number |
由于RTP队列优先于CBQ,所以如果同时配置了RTP队列与基于匹配RTP协议的类的调度队列,只有RTP队列生效。
请在类视图下进行下列配置。
操作 |
命令 |
定义协议匹配规则 |
if-match [ not ] protocol protocol-name |
删除协议匹配规则 |
undo if-match [ not ] protocol protocol-name |
其中protocol-name为IP协议。
定义流行为首先需要创建一个流行为名称,然后在此流行为视图下配置其特性。
请在系统视图下进行下列配置。
操作 |
命令 |
定义一个流行为并进入流行为视图 |
traffic behavior behavior–name |
删除流行为 |
undo traffic behavior behavior–name |
behavior-name:流行为名,不允许为系统预定义流行为。
请在流行为视图下进行下列配置。
表3-31 配置确保转发(AF),并配置最小可保证带宽
操作 |
命令 |
配置确保转发(AF),并配置最小可保证带宽 |
queue af bandwidth { bandwidth | pct percentage } |
删除确保转发配置 |
undo queue af |
该行为只能应用在接口的出方向。
在同一流行为下需要用同一单位配置queue ef和queue af,或者用bandwidth,或者用百分比进行配置。
请在流行为视图下进行下列配置。
表3-32 配置加速转发(EF),并配置至少保证的最大带宽
操作 |
命令 |
配置加速转发(EF),并配置至少保证的最大带宽 |
queue ef bandwidth { bandwidth [ cbs committed-burst-size ] | pct percentage [ cbs_ratio ratio] } |
取消该配置 |
undo queue ef |
该命令在流行为视图下不能与queue af,queue-length,wred同时使用。
缺省类不能与包含该命令的行为关联。
在同一策略下各个类需用同一单位配置queue ef和queue af,或者用bandwidth,或者用百分比进行配置。
请在流行为视图下进行下列配置。
操作 |
命令 |
配置采用公平队列 |
queue wfq [ queue-number total-queue-number ] |
取消采用公平队列的配置 |
undo queue wfq |
配置了该特性的流行为仅可以与缺省类关联使用。
配置最大队列长度,丢弃方式为尾丢弃。
请在流行为视图下进行下列配置。
操作 |
命令 |
配置最大队列长度 |
queue-length queue-length |
取消最大队列长度的配置 |
undo queue-length |
该命令必须在配置了queue af和queue wfq后使用;执行undo queue af或undo queue wfq命令,则queue-length也同时被取消。
如果是缺省类,必须在配置了queue af或queue wfq后使用。
请在流行为视图下进行下列配置。
操作 |
命令 |
配置丢弃方式为随机丢弃方式 |
wred [ dscp | ip-precedence ] |
恢复缺省配置 |
undo wred |
dscp:表明在为一个包计算丢弃概率时使用的是DSCP值。
ip-precedence:表明在为一个包计算丢弃概率时使用的是IP优先级值,作为缺省配置。
该命令必须在配置了queue af或queue wfq后使用。wred和queue-length是互斥的。删除时将删除在该随机丢弃下的其他配置。当接口上应用了包含WRED特性的QoS策略后,原有的接口级的WRED配置失效。
缺省类default-class只能与配置基于IP优先级的随机丢弃方式的行为关联。
请在流行为视图下进行下列配置。
表3-36 设置WRED计算平均队列长度的指数
操作 |
命令 |
配置WRED计算平均队列长度的指数 |
wred weighting-constant exponent |
取消WRED计算平均队列长度的指数的配置 |
undo wred weighting-constant |
需配置了queue af或queue wfq,并已用wred使能了WRED丢弃方式后才可以配置该命令。
请在流行为视图下进行下列配置。
表3-37 设置WRED各DSCP的下限、上限和丢弃概率分母
操作 |
命令 |
配置WRED各DSCP的下限、上限和丢弃概率分母 |
wred dscp dscp-value low-limit low-limit hjgh-limit high-limit [ discard-probability discard-prob ] |
取消WRED各DSCP的下限、上限和丢弃概率分母的配置 |
undo wred dscp dscp-value |
dscp-value:DSCP值,取值范围为0~63,或可以是如下关键字:ef,af11,af12,af13,af21,af22,af23,af31,af32,af33,af41,af42,af43,cs1,cs2,cs3,cs4,cs5,cs6,cs7或default。
需已用wred dscp使能了基于DSCP的WRED丢弃方式。
取消wred配置,wred dscp dscp-value配置同时被取消。
取消queue af或queue wfq配置,丢弃参数的配置同时被取消。
请在流行为视图下进行下列配置。
表3-38 配置WRED各优先级的下限、上限和丢弃概率分母
操作 |
命令 |
设置WRED各优先级的下限、上限和丢弃概率分母 |
wred ip-precedence precedence low-limit low-limit hjgh-limit high-limit [ discard-probability discard-prob ] |
取消WRED各优先级的下限、上限和丢弃概率分母的配置 |
undo wred ip-precedence precedence |
需已用wred ip-precedence使能了基于优先级的WRED丢弃方式。
缺省情况下,已使能基于IP优先级的WRED丢弃方式。
取消wred配置,wred ip-precedence配置同时被取消。
取消queue af或queue wfq配置,丢弃参数的配置同时被取消。
请在流行为视图下进行下列配置。
操作 |
命令 |
配置使用流量监管 |
car cir committed-information-rate [ cbs committed-burst-size ebs excess-burst-size ] [ green action [ red action ] ] |
配置取消流量监管 |
undo car |
其中,CIR 不能超过 CBS×20。action是对数据包采取的动作,有以下几种:
l discard:丢弃数据包
l pass:发送数据包。
l remark-dscp-pass new-dscp:设置新的DSCP值new-dscp,并发送。取值范围为0~63。
l remark-prec-pass new-precedence:设置新的IP优先级new-precedence,并发送。取值范围为0~7。
策略中的类关联了包含TP特性的行为时,可以应用到接口的入或出方向。
策略中的类关联了包含TP特性的行为时,将导致接口上原有的qos car命令失效。
如果多次使用本命令在同一个流行为上配置,最后一次的配置将覆盖前面的配置。
使用流量监管但未使用AF或EF配置的类,如果通过了监管的检测可以发送,但遇到接口拥塞,则将进入缺省队列。
请在流行为视图下进行下列配置。
操作 |
命令 |
配置使用流量整形 |
gts cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size [ queue-length queue-length ] ] ] |
配置取消流量整形 |
undo gts |
接口上应用的类策略中使用具有gts的流行为时,只能应用到接口的出方向。
接口上应用包含TS的类策略,将导致接口上原有的qos gts命令失效。
如果多次使用本命令在同一个流行为上配置,最后一次的配置将覆盖前面的配置。
使用流量整形但未使用AF或EF配置的类,如果通过了整形的检测可以发送,但遇到接口拥塞,则将进入缺省队列。
请在流行为视图下进行下列配置。
操作 |
命令 |
配置标记报文的DSCP值 |
remark dscp dscp-value |
取消标记报文的DSCP值的配置 |
undo remark dscp |
请在流行为视图下进行下列配置。
表3-42 配置标记报文的IP优先级值
操作 |
命令 |
配置标记报文的IP优先级值 |
remark ip-precedence ip-precedence-value |
取消标记报文的IP优先级值的配置 |
undo remark ip-precedence |
策略映射定义该策略中每个类的流行为,而每个流行为由一组特性要求组成,例如EF,AF,WFQ,流量监管(TP),流量整形(TS),WRED、标记等。
请在系统视图下进行下列配置。
操作 |
命令 |
定义策略并进入策略视图 |
qos policy policy-name |
删除指定策略 |
undo qos policy policy-name |
策略名不允许是系统预定义策略。
策略创建时,缺省具有缺省类default-class,该类关联be行为。
如果某接口应用了该策略,则不允许删除该策略,需要在应用的接口上取消对该策略的应用,然后再使用undo qos policy删除该策略。
请在策略视图下进行下列配置。
操作 |
命令 |
在策略中为类指定采用的流行为 |
classifier tcl-name behavior behavior-name |
取消指定类在策略中的使用 |
undo classifier tcl-name |
tcl-name:类名,必须是已经定义的类,可以是系统定义或用户定义类。
behavior-name:必须是已定义的流行为名,可以是系统定义或用户定义流行为。
qos apply policy命令是将一个策略映射到具体的接口上。一个策略映射可以在多个接口上得到应用。
请在接口视图下进行下列配置。
操作 |
命令 |
在接口上应用关联的策略 |
qos apply policy policy-name { inbound | outbound } |
在接口上删除关联的策略 |
undo qos apply policy { inbound | outbound } |
QoS策略在接口视图下应用的规则如下:
l 普通物理接口和MP引用的VT,可以应用配置了各种特性(包括remark、car、gts、queue af、queue ef、queue wfq、wred等)的策略。
l 配置了流量整形(gts)和队列(queue ef、queue af、queue wfq)特性的策略,不能作为入方向策略应用在入接口上。
l 子接口不支持队列(queue ef、queue af、queue wfq)特性,但是支持流量整形(gts)与流量监管(car)。所以只配置了流量整形与流量监管的策略可以应用到子接口。
在完成上述配置后,在任意视图下执行display命令可以显示基于类的队列的运行情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
显示路由器配置的类信息 |
display traffic classifier { system-defined | user-defined } [ tcl-name ] |
显示路由器配置的流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
显示指定策略中指定类及与类关联的流行为的配置信息 |
display qos policy { system-defined | user-defined } [ policy-name [ classifier tcl-name ] ] |
显示指定接口或所有接口上策略的配置信息和运行情况 |
display qos policy interface [ interface-type interface-number [ inbound | outbound ] ] |
显示指定接口或所有接口的基于类的队列配置信息和运行情况。 |
display qos cbq interface [ interface-type interface-number ] |
显示队列调试信息 |
debugging qos cbq { ef | af | be } |
RTP报文队列的配置包括:
l 在接口上应用RTP队列
l 配置带宽限制
l RTP队列的显示和调试
设置接口上应用RTP队列。此命令没有缺省配置。
请在接口视图下进行如下配置。
操作 |
命令 |
在接口上应用RTP队列 |
qos rtpq start-port start-port-number end-port end-port-number bandwidth bandwidth [ cbs committed-burst-size ] |
关闭RTP队列在接口上的应用 |
undo qos rtpq |
注意:
Dialer口上可以应用RTP队列,但是只有当物理接口上配置为缺省队列,同时物理接口带宽足够的情况下,RTP队列才能成功应用到Dialer口上。
配置最大预留带宽占接口实际可用带宽的百分比。
请在接口视图下进行下列配置。
操作 |
命令 |
配置带宽限制 |
qos reserved-bandwidth pct percentage |
恢复缺省的带宽限制 |
undo qos reserved-bandwidth |
参数percentage是预留带宽占可用带宽的百分比,取值范围为1~100,缺省值为80。
在完成上述配置后,在任意视图下执行display命令可以显示当前RTP队列机制的队列信息,包括当前的RTP队列长度和RTP报文的丢包数,显示所有接口的RTP队列配置情况和统计信息,通过查看显示信息验证配置的效果。
表3-49 显示接口RTP队列的配置情况和统计信息
操作 |
命令 |
显示接口RTP队列的配置情况和统计信息 |
display qos rtpq interface [ interface-type interface-number ] |
如图3-6所示,Server1和PC1通过Router1向PC2发送数据(其中Server1发送关键业务数据,PC1发送非关键业务数据)时,由于Router1入接口GigabitEthernet1/0的速率大于出接口GigabitEthernet3/0的速率,在GigabitEthernet3/0接口处可能发生拥塞,导致丢包。要求在网络拥塞时保证server1发送的关键业务数据得到优先处理。
(1) 配置Router1:
# 配置ACL规则列表,分别匹配来源于Server1和PC1的报文。
[H3C] acl number 2001
[H3C-acl-basic-2001] rule permit source 1.1.1.1 0
[H3C] acl number 2002
[H3C-acl-basic-2002] rule permit source 1.1.1.2 0
# 配置优先队列规则组,使得网络拥塞发生时,源自Server1的报文能够进入PQ的top队列缓存,源自PC1的报文能够进入bottom队列缓存,并且设定top队列的最大队列长度为50、bottom队列的最大队列长度为100。
[H3C] qos pql 1 protocol ip acl 2001 queue top
[H3C] qos pql 1 protocol ip acl 2002 queue bottom
[H3C] qos pql 1 queue top queue-length 50
[H3C] qos pql 1 queue bottom queue-length 100
# 在接口GigabitEthernet3/0上启用优先队列规则组1
[H3C] interface gigabitethernet3/0
[H3C-GigabitEthernet3/0] qos pq pql 1
在下面的组网图中,从RouterC发出的数据流经过RouterA和RouterB到达RouterD。RouterC发出的数据流根据IP报文的DSCP域分为3类,要求配置QoS策略,对于DSCP域为AF11和AF21的流进行确保转发(AF),最小带宽为5%;对于DSCP域为EF的流进行加速转发(EF),最大带宽为30%。
EF流可以保证一定带宽,并保证时延和时延抖动,对于EF流的优先保证是通过LLQ技术实现的。AF流只保证带宽,default流(即不匹配任何定义的类的流)则没有带宽和时延保证。
在开始下面的配置之前,应保证:
l RouterC发出的流能够通过RouterA和RouterB可达RouterD。
l 报文的DSCP域在进入RouterA之前已经设置完毕。
在RouterA上进行配置。
# 定义三个类,分别匹配DSCP域为AF11、AF21和EF的IP报文。
[H3C] traffic classifier af11_class
[H3C-classifier-af11_class] if-match dscp af11
[H3C-classifier-af11_class] traffic classifier af21_class
[H3C-classifier-af21_class] if-match dscp af21
[H3C-classifier-af21_class] traffic classifier ef_class
[H3C-classifier-ef_class] if-match dscp ef
[H3C-classifier-ef_class] quit
# 定义流行为,配置AF,并分配最小可用带宽。
[H3C] traffic behavior af11_behav
[H3C-behavior-af11_behav] queue af bandwidth pct 5
[H3C-behavior-af11_behav] traffic behavior af21_behav
[H3C-behavior-af21_behav] queue af bandwidth pct 5
[H3C-behavior-af21_behav] quit
# 定义流行为,配置EF,并分配最小可用带宽(对于EF流,将同时保证带宽和时延)。
[H3C] traffic behavior ef_behav
[H3C-behavior-ef_behav] queue ef bandwidth pct 30
[H3C-behavior-ef_behav] quit
# 定义QoS策略,将已配置的流行为指定给不同的类。
[H3C] qos policy dscp
[H3C-qospolicy-dscp] classifier af11_class behavior af11_behav
[H3C-qospolicy-dscp] classifier af21_class behavior af21_behav
[H3C-qospolicy-dscp] classifier ef_class behavior ef_behav
[H3C-qospolicy-dscp] quit
# 将已定义的QoS策略应用在RouterA的GigabitEthernet1/0出方向。
[H3C] interface gigabitethernet1/0
[H3C-GigabitEthernet1/0] ip address 1.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] qos apply policy dscp outbound
配置完成后,当发生拥塞时,可以观察到EF流被以较高的优先级转发。
在下面的组网图中,两台路由器RouterA和RouterB通过Internet连接,连接RouterA的PC机作为FTP以及HTTP的服务器端,连接RouterB的PC机作为FTP以及HTTP的客户端。配置路由使得数据流均经过RouterA的接口转发至RouterB。
在开始下列配置前应保证:
l RouterA与RouterB建立起连接,并且两台PC机建立起FTP连接。
l 连接RouterB的PC机作为客户端从连接RouterA的server端下载一个较大的文件,同时用RouterB端的PC机用http协议从RouterA端的http server上下载大文件。
定制FTP数据流与HTTP数据流以1:2的比例分享链路带宽。
在RouterA上进行配置。
# 配置acl规则分别匹配FTP报文与HTTP报文:
[H3C] acl number 3001
[H3C-acl-adv-3001] rule 0 permit tcp source-port eq ftp
[H3C-acl-adv-3001] rule 1 permit tcp source-port eq ftp-data
[H3C-acl-adv-3001] rule 2 deny ip
[H3C] quit
[H3C] acl number 3002
[H3C-acl-adv-3001] rule 0 permit tcp source-port eq www
[H3C-acl-adv-3001] rule 1 deny ip
[H3C-acl-adv-3001] quit
# 配置CQ规则,定制FTP流与HTTP流按1:2的比例分享链路带宽。
[H3C] qos cql 1 queue 11 serving 1000
[H3C] qos cql 1 queue 12 serving 2000
[H3C] qos cql 1 protocol ip acl 3001 queue 11
[H3C] qos cql 1 protocol ip acl 3002 queue 12
# 将该规则应用在接口的出方向上。
[H3C] interface gigabitethernet1/0
[H3C-GigabitEthernet1/0] ip address 10.1.1.1 255.255.255.0
[H3C-GigabitEthernet1/0] qos cq cql 1
[H3C-GigabitEthernet1/0] quit
过度的拥塞会对网络资源造成极大危害,必须采取某种措施加以解除。这里所说的拥塞避免(Congestion Avoidance),是指通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载的一种流控机制。
与端到端的流控相比,这里的流控有更广泛的意义,它影响到路由器中更多的业务流的负载。当然,路由器在丢弃报文时,并不排斥与源端的流控动作比如TCP流控的配合,更好地调整网络的流量到一个合理的负载状态。好的丢包策略和源端流控机制的组合,总是追求网络的吞吐量和利用效率最大化,并且使报文丢弃和延迟最小化。
传统的丢包策略采用尾部丢弃(Tail-Drop)的方法。当队列的长度达到某一最大值后,所有新到来的报文都将被丢弃。
这种丢弃策略会引发TCP全局同步现象——当队列同时丢弃多个TCP连接的报文时,将造成多个TCP连接同时进入拥塞避免和慢启动状态以降低并调整流量,而后又会在某个时间同时出现流量高峰,如此反复,使网络流量忽大忽小,造成网络带宽利用率降低,使带宽利用率总在高峰和低谷间振荡。
为避免TCP全局同步现象,可使用RED(Random Early Detection,随机早期检测)或WRED(Weighted Random Early Detection,加权随机早期检测)。
在RED类算法中,为每个队列都设定一对低限和高限值,并规定:
l 当队列的长度小于低限时,不丢弃报文。
l 当队列的长度超过高限时,丢弃所有到来的报文。
l 当队列的长度在低限和高限之间时,开始随机丢弃到来的报文。方法是为每个到来的报文赋予一随机数,并用该随机数与当前队列的丢弃概率比较,如果大于丢弃概率则被丢弃。队列越长,丢弃概率越高——但有一个最大丢弃概率。
与RED不同,WRED生成的随机数是基于优先权的,它引入IP优选权区别丢弃策略,考虑了高优先权报文的利益并使其被丢弃的概率相对较小。
RED和WRED通过随机丢弃报文避免了TCP的全局同步现象——当某个TCP连接的报文被丢弃,开始减速发送的时候,其他的TCP连接仍然有较高的发送速度。这样,无论什么时候,总有TCP连接在进行较快的发送,提高了线路带宽的利用率。
直接采用队列的长度和低限、高限比较并进行丢弃(这是设置队列门限的绝对长度),将会对突发性的数据流造成不公正的待遇,不利于数据流的传输。所以,在和低限、高限比较并进行丢弃时,采用队列的平均长度(这是设置队列门限与平均长度比较的相对值)。计算WRED平均队列长度的公式:
平均队列长度=(以前的平均队列长度*(1-1/(2的n次方)))+(当前队列长度*(1/(2的n次方)))
其中n是权重因子,是一个可配的参数。队列的平均长度既反映了队列的变化趋势,又对队列长度的突发变化不敏感,避免了对突发性数据流的不公正待遇。
当队列机制采用WFQ时,可以为不同优先级(precedence)的报文设定不同的权重因子、上限、下限、丢弃概率,从而对不同优先级的报文提供不同的丢弃特性。
WRED和队列机制的关系如下图所示。
图4-1 WRED和队列机制关系示意图
当WRED和WFQ配合使用时,可以实现基于流的WRED。这是因为,在进行分类的时候,不同的流有自己的队列,对于流量小的流,由于其队列长度总是比较小,所以丢弃的概率将比较小。而流量大的流将会有较大的队列长度,从而丢弃较多的报文,保护了流量较小的流的利益。
WRED的配置包括:
l 使用WRED
l 设置WRED计算平均队列长度的指数
l 设置WRED各优先级参数
请在接口视图下进行下列配置。
操作 |
命令 |
使用WRED |
qos wred [ ip-precedence | dscp ] |
恢复缺省形式 |
undo qos wred |
WRED只能和WFQ共同使用,不能单独使用或和其它的队列共同使用。
缺省情况为不使用WRED,队列的丢弃方法为尾部丢弃。
& 说明:
使用WRED之前接口上必须已经应用了WFQ。
设置WRED计算平均队列长度的滤波系数。
请在接口视图下进行下列配置。
表4-2 设置WRED计算平均队列长度的指数
操作 |
命令 |
qos wred weighting-constant exponent |
|
恢复指数的缺省值 |
undo qos wred weighting-constant |
其中exponent为计算平均队列长度的滤波系数,取值范围为1~16,缺省值为9。
必须先使用qos wred在接口上应用WRED,才可以配置WRED的参数。
当接口配置加权公平队列时,可以设置WRED各优先级的下限、上限以及丢弃概率分母。
请在接口视图下进行下列配置。
表4-3 设置WRED各优先级参数
操作 |
命令 |
设置WRED优先级参数 |
qos wred ip-precedence ip-precedence low-limit low-limit high-limit high-limit discard-probability discard-prob |
恢复各优先级参数的缺省值 |
undo qos wred ip-precedence ip-precedence |
必须先使用qos wred在接口上应用WRED,才可以配置WRED的参数。
当接口配置加权公平队列时,可以设置WRED各DSCP的下限、上限以及丢弃概率分母。
请在接口视图下进行下列配置。
表4-4 设置WRED各DSCP参数
操作 |
命令 |
设置WRED各DSCP参数 |
qos wred dscp dscp-value low-limit low-limit high-limit high-limit discard-probability discard-prob |
恢复各DSCP参数的缺省值 |
undo qos wred dscp dscp-value |
必须先使用qos wred在接口上应用WRED,才可以配置WRED的参数。
在完成上述配置后,在任意视图下执行display命令可以显示接口的WRED配置情况和统计信息,通过查看显示信息验证配置的效果。
表4-5 显示接口的WRED配置情况和统计信息
操作 |
命令 |
显示接口的WRED配置情况和统计信息 |
display qos wred interface [ interface-type interface-number ] |
该命令可以显示某个接口或所有接口的WRED配置情况和统计信息
l interface-type为接口类型。
l interface-number为接口号。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!