01-QOS配置
本章节下载 (578.89 KB)
目 录
QoS(Quality of Service,服务质量)是各种存在服务供需关系的场合中普遍存在的概念,它评估服务方满足客户服务需求的能力。评估通常不是精确的评分,而是注重分析在什么条件下服务是好的,在什么情况下还存在着不足,以便有针对性地做出改进。
在Internet中,QoS所评估的就是网络转发分组的服务能力。由于网络提供的服务是多样的,因此对QoS的评估可以基于不同方面。通常所说的QoS,是对分组转发过程中为延迟、抖动、丢包率等核心需求提供支持的服务能力的评估。
传统的IP网络无区别地对待所有的报文,设备处理报文采用的策略是FIFO(First In First Out,先入先出),它依照报文到达时间的先后顺序分配转发所需要的资源。所有报文共享网络和设备的资源,至于得到资源的多少完全取决于报文到达的时机。这种服务策略称作Best-Effort,它尽最大的努力将报文送到目的地,但对分组转发的延迟、抖动、丢包率和可靠性等需求不提供任何承诺和保证。
传统的Best-Effort服务策略只适用于对带宽、延迟不敏感的WWW、文件传输、e-mail等业务。
随着计算机网络的高速发展,越来越多的网络接入Internet。Internet无论从规模、覆盖范围和用户数量上都拓展得非常快。越来越多的用户使用Internet作为数据传输的平台,开展各种应用。
除了传统的WWW、e-mail、FTP应用外,用户还尝试在Internet上拓展新业务,比如远程教学、远程医疗、可视电话、电视会议、视频点播等。企业用户也希望通过VPN技术,将分布在各地的分支机构连接起来,开展一些事务性应用:比如访问公司的数据库或通过Telnet管理远程设备。
这些新业务有一个共同特点,即对带宽、延迟、抖动等传输性能有着特殊的需求。比如电视会议、视频点播需要高带宽、低延迟和低抖动的保证。事务处理、Telnet等关键任务虽然不一定要求高带宽,但非常注重低延迟,在拥塞发生时要求优先获得处理。
新业务的不断涌现对IP网络的服务能力提出了更高的要求,用户已不再满足于能够简单地将报文送达目的地,而是还希望在转发过程中得到更好的服务,诸如支持为用户提供专用带宽、减少报文的丢失率、管理和避免网络拥塞、调控网络的流量、设置报文的优先级。所有这些,都要求网络应当具备更为完善的服务能力。
传统网络所面临的服务质量问题,主要是由网络拥塞引起的。所谓拥塞,是指由于供给资源的相对不足而造成转发速率下降、引入额外的延迟的一种现象。
在Internet分组交换的复杂环境下,拥塞极为常见。以下图中的两种情况为例:
图1-1 相同速率接口流量的拥塞
(1) 分组流从高速链路进入设备,由低速链路转发出去。
(2) 分组流从相同速率的多个接口同时进入网络设备,由一个相同速率的接口转发出去。
如果流量以线速到达,那么就会遭遇资源的瓶颈而导致拥塞。
不仅仅是链路带宽的瓶颈会导致拥塞,任何用以正常转发处理的资源的不足,如可分配的处理器时间、缓冲区、内存资源的不足,都会造成拥塞。此外,在某个时间内对所到达的流量控制不力,使之超出了可分配的网络资源,也是引发网络拥塞的一个因素。
拥塞有可能会引发一系列的负面影响:
l 拥塞增加了报文传输的延迟和抖动,过高的延迟会引起报文重传。
l 过高的延迟会引起报文重传。
l 拥塞使网络的有效吞吐率降低,造成网络资源的利用率降低。
l 拥塞加剧会耗费大量的网络资源(特别是存储资源),不合理的资源分配甚至可能导致系统陷入资源死锁而崩溃。
可见,拥塞使流量不能及时获得资源,是造成服务性能下降的源头。然而在分组交换以及多用户业务并存的复杂环境下,拥塞又是常见的,因此必须慎重加以对待。
增加网络带宽是解决资源不足的一个直接途径,然而它并不能解决所有导致网络拥塞的问题。
解决网络拥塞问题的一个更有效的办法是在网络中增加流量控制和资源分配上的功能,为有不同服务需求的业务提供有区别的服务,正确地分配和使用资源。在进行资源分配和流量控制的过程中,尽可能地控制好那些可能引发网络拥塞的直接或间接因素,减少拥塞发生的概率;在拥塞发生时,依据业务的性质及其需求特性权衡资源的分配,将拥塞对QoS的影响减到最小。
流分类、流量监管、流量整形、拥塞管理和拥塞避免是构造有区别地实施服务的基石,它们主要完成如下功能:
l 流分类:依据一定的匹配规则识别出对象。流分类是有区别地实施服务的前提。
l 流量监管:对进入设备的特定流量的规格进行监管。当流量超出规格时,可以采取限制或惩罚措施,以保护运营商的商业利益和网络资源不受损害。
l 流量整形:一种主动调整流的输出速率的流控措施,通常是为了使流量适配下游设备可供给的网络资源,避免不必要的报文丢弃和拥塞。
l 拥塞管理:拥塞管理是必须采取的解决资源竞争的措施。通常是将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序。
l 拥塞避免:过度的拥塞会对网络资源造成损害。拥塞避免监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量来解除网络的过载。
在这些流量管理技术中,流分类是基础,它依据一定的匹配规则识别出报文,是有区别地实施服务的前提;而流量监管、流量整形、拥塞管理和拥塞避免从不同方面对网络流量及其分配的资源实施控制,是有区别地提供服务思想的具体体现。
一般情况下,QoS执行以下功能:
l 流分类
l 访问控制
l 流量监管和流量整形
l 拥塞管理
l 拥塞避免
流分类采用一定的规则识别符合某类特征的报文,它是有区别地进行服务的前提和基础。
流分类规则可以使用IP报文头的ToS(Type of Service,服务类型)字段的优先级位,识别出有不同优先级特征的流量;也可以由网络管理者设置流分类的策略,例如综合源地址、目的地址、MAC地址、IP协议或应用程序的端口号等信息对流进行分类。一般的分类依据都局限在封装报文的头部信息,使用报文的内容作为分类的标准是比较少见的。分类的结果是没有范围限制的,它可以是一个由五元组(源地址、源端口号、协议号、目的地址、目的端口号)确定的狭小范围,也可以是到某网段的所有报文。
一般在网络边界对报文分类时,同时设置报文IP头的ToS字段中的优先级位。这样,在网络的内部就可以直接使用IP优先级作为分类标准。而队列技术也可以使用这个优先级来对报文进行不同的处理。下游网络可以选择接收上游网络的分类结果,也可以按照自己的标准重新进行分类。
进行流分类是为了有区别地提供服务,它必须与某种流控或资源分配动作关联起来才有意义。具体采取何种流控动作,与所处的阶段以及网络当前的负载状况有关。例如,当报文进入网络时依据承诺速率对它进行监管;流出结点之前进行整形;拥塞时的队列调度管理;拥塞加剧时要采取拥塞避免措施等。
下面介绍一下几种优先级。
图2-1 DS域和ToS字节
如图2-1所示,IP header的ToS字段有8个bit,其中前3个bit表示的就是IP优先级,取值范围为0~7;第3~6这4个bit表示的是ToS优先级,取值范围为0~15;在RFC2474中,重新定义了IP报文头部的ToS域,称之为DS域,其中DSCP优先级用该域的前6位(0-5位)表示,取值范围为0~63,后2位(6、7位)是保留位。
如果不限制用户发送的流量,那么大量用户不断突发的数据只会使网络更拥挤。为了使有限的网络资源能够更好地发挥效用,更好地为更多的用户服务,必须对用户的流量加以限制。比如限制每个时间间隔某个流只能得到承诺分配给它的那部分资源,防止由于过分突发所引发的网络拥塞。
流量监管和流量整形就是一种通过对流量规格的监督,来限制流量及其资源使用的流控策略。进行流量监管或整形有一个前提条件,就是要知道流量是否超出了规格,然后才能根据评估结果实施调控策略。一般采用令牌桶(Token Bucket)对流量的规格进行评估。
令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。
在用令牌桶评估流量规格时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文(通常用一个令牌关联一个比特的转发权限),称流量遵守或符合(conforming)这个规格,否则称为不符合或超标(excess)。
评估流量时令牌桶的参数设置包括:
l 平均速率:向桶中放置令牌的速率,即允许的流的平均速度。通常设置为CIR(Committed Information Rate,承诺信息速率)。
l 突发尺寸:令牌桶的容量,即每次突发所允许的最大的流量尺寸。通常设置为CBS(Committed Burst Size,承诺突发尺寸),设置的突发尺寸必须大于最大报文长度。
每到达一个报文就进行一次评估。每次评估,如果桶中有足够的令牌可供使用,则说明流量控制在允许的范围内,此时要从桶中取走与报文转发权限相当的令牌数量;否则说明已经耗费太多令牌,流量超标了。
为了评估更复杂的情况,实施更灵活的调控策略,可以设置两个令牌桶。例如TP(Traffic Policing,流量监管)中有三个参数:
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桶都没有足够的令牌”的情况,可以分别实施不同的流控策略。
TP(Traffic Policing流量监管)的典型应用是监督进入网络的某一流量的规格,把它限制在一个合理的范围之内,或对超出的部分流量进行“惩罚”,以保护网络资源和运营商的利益。例如可以限制HTTP报文不能占用超过50%的网络带宽。如果发现某个连接的流量超标,流量监管可以选择丢弃报文,或重新设置报文的优先级。
流量监管广泛的用于监管进入Internet服务提供商ISP的网络流量。流量监管还包括对所监管流量的流分类服务,并依据不同的评估结果,实施预先设定好的监管动作。这些动作可以是:
l 转发:比如对评估结果为“符合”的报文继续正常转发的处理。
l 丢弃:比如对评估结果为“不符合”的报文进行丢弃。
l 改变优先级并转发:比如对评估结果为“符合”的报文,将之标记为其它的优先级后再进行转发。
l 改变优先级并进入下一级的监管:比如对评估结果为“符合”的报文,将之标记为其它的优先级后进入下一级的监管。
l 进入下一级的监管:流量监管可以逐级堆叠,每级关注和监管更具体的目标。
TS(Traffic Shaping,流量整形)是一种主动调整流量输出速率的措施。一个典型应用是基于下游网络结点的TP指标来控制本地流量的输出。
流量整形与流量监管的主要区别在于,流量整形对流量监管中需要丢弃的报文进行缓存,通常是将它们放入缓冲区或队列内,如图2-3所示。当令牌桶有足够的令牌时,再均匀的向外发送这些被缓存的报文。流量整形与流量监管的另一区别是,整形可能会增加延迟,而监管几乎不引入额外的延迟。
例如,在图2-4所示的应用中,设备VG1向VG2发送报文。VG2要对VG1发送来的报文进行TP监管,对超出规格的流量直接丢弃。
图2-4 流量整形的应用
为了减少报文的无谓丢失,可以在VG1的出口对报文进行流量整形处理。将超出流量整形特性的报文缓存在VG1中。当可以继续发送下一批报文时,流量整形再从缓冲队列中取出报文进行发送。这样,发向VG2的报文将都符合VG2的流量规定。
利用LR(Line Rate,物理接口限速)可以在一个物理接口上限制发送报文(包括紧急报文)的总速率。
LR也是采用令牌桶进行流量控制。如果在设备的某个接口上配置了LR,所有经由该接口发送的报文首先要经过LR的令牌桶进行处理。如果令牌桶中有足够的令牌,则报文可以发送;否则,报文将进入QoS队列进行拥塞管理。这样,就可以对通过该物理接口的报文流量进行控制。
由于采用了令牌桶控制流量,当令牌桶中存有令牌时,可以允许报文的突发性传输;当令牌桶中没有令牌时,报文必须等到桶中生成了新的令牌后才可以继续发送。这就限制了报文的流量不能大于令牌生成的速度,达到了限制流量,同时允许突发流量通过的目的。
与流量监管相比,物理接口限速能够限制在物理接口上通过的所有报文。流量监管在IP层实现,对于不经过IP层处理的报文不起作用。当用户只要求对所有报文限速时,使用物理接口限速比较简单。
表2-1 配置说明
配置 |
配置说明 |
相关链接 |
应用TP列表的流量监管 |
配置TP列表 |
|
在接口应用TP策略 |
||
应用ACL的流量监管 |
配置ACL |
|
在接口应用TP策略 |
||
适配所有流的监管配置过程 |
在接口应用TP策略 |
|
基于ACL的流量整形配置 |
配置ACL |
|
在接口配置流量整形 |
||
适配所有流的流量整形配置 |
在接口配置流量整形 |
|
物理接口限速配置过程 |
设置接口限速 |
流量监管的配置包括两方面的任务,一是定义那些需要实施监管的报文的特征,二是定义对这些报文的监管策略。
表2-2 基于TP列表的流量监管配置过程
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
配置TP策略 |
qos carl carl-index { precedence precedence-value | mac mac-address | dscp dscp-list } |
必选 |
|
显示TP规则 |
display qos carl [ carl-index ] |
可选 display命令可以在任意视图下执行 |
|
进入接口视图或端口组视图 |
进入接口视图 |
interface interface-type interface-number |
二者必选其一 进入接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 关于端口组的配置,请参见“接入分册”中的“链路聚合”模块 |
进入端口组视图 |
port-group aggregation agg-id |
||
在接口应用TP策略 |
qos car { inbound | outbound } carl carl-index cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] [ green action ] [ red action ] |
必选 cbs缺省为单位时间内cir的一半,如果计算得的缺省值小于1875,则取1875为缺省值。 ebs缺省为0 green action缺省为pass red action缺省为discard |
|
显示TP在接口上的信息 |
display qos car interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
表2-3 基于ACL的流量监管配置过程
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
配置ACL规则 |
请参见“安全分册”中的“ACL配置” |
必选 |
|
进入接口视图或端口组视图 |
进入接口视图 |
interface interface-type interface-number |
二者必选其一 进入接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 关于端口组的配置,请参见“接入分册”中的“链路聚合”模块 |
进入端口组视图 |
port-group aggregation agg-id |
||
在接口应用TP策略 |
qos car { inbound | outbound } acl [ ipv6 ] acl-number cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] [ green action ] [ red action ] |
必选 cbs缺省为单位时间内cir的一半,如果计算得的缺省值小于1875,则取1875为缺省值。 ebs缺省为0 green action缺省为pass red action缺省为discard |
|
显示TP在接口上的信息 |
display qos car interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
表2-4 适配所有流的流量监管配置过程
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入接口视图或端口组视图 |
进入接口视图 |
interface interface-type interface-number |
二者必选其一 进入接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 关于端口组的配置,请参见“接入分册”中的“链路聚合”模块 |
进入端口组视图 |
port-group aggregation agg-id |
||
在接口应用TP策略 |
qos car { inbound | outbound } any cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] [ green action ] [ red action ] |
必选 cbs缺省为单位时间内cir的一半,如果计算得的缺省值小于1875,则取1875为缺省值 ebs缺省为0 green action缺省为pass red action缺省为discard |
|
显示TP在接口上的信息 |
display qos car interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
监管配置的命令中对数据包采取的动作有以下几种:
l continue:继续由下一个CAR策略处理。
l discard:丢弃数据包。
l pass:发送数据包。
l remark-dscp-continue new-dscp:设置报文新的DSCP值,并继续由下一个CAR策略处理,取值范围0~63,用文字表示时,可以选取af11、af12、af13、af21、af22、af23、af31、af32、af33、af41、af42、af43、cs1、cs2、cs3、cs4、cs5、cs6、cs7、default、ef。
l remark-dscp-pass new-dscp:设置报文新的DSCP值,并发送数据包到目的地址,取值范围0~63,用文字表示时,可以选取af11、af12、af13、af21、af22、af23、af31、af32、af33、af41、af42、af43、cs1、cs2、cs3、cs4、cs5、cs6、cs7、default、ef。
l remark-prec-continue new-precedence:设置新的IP优先级new-precedence,并继续由下一个CAR策略处理,取值范围0~7。
l remark-prec-pass new-precedence:设置新的IP优先级new-precedence,并发送数据包到目的地址,取值范围0~7。
TP策略可以应用于报文到达的接口,也可应用于报文离开的接口。
在GigabitEthernet0/1接口上进行TP配置,对由GigabitEthernet0/1接口发送的报文进行流量控制,报文流量不能超过1Mbps,如果超过流量限制则将违规报文丢弃。
# 进入系统视图。
<VG> system-view
# 进入接口视图。
[VG] interface gigabitethernet0/1
# 配置监管参数。
[VG-GigabitEthernet0/1] qos car outbound any cir 1000 cbs 1000000 ebs 0 green pass red discard
流量整形配置分为以下几种:
l 基于ACL的流量整形配置:为匹配某一ACL的流设置整形参数,使用不同的ACL可以为不同的流设置整形参数。
l 适配所有流的流量整形配置:为所有的流设置整形参数。
& 说明:
软转发流量整形不支持IPv6。
表2-5 基于ACL的流量整形配置
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
定义ACL |
请参见“安全分册”中的“ACL配置” |
必选 |
|
进入接口视图或端口组视图 |
进入接口视图 |
interface interface-type interface-number |
二者必选其一 进入接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 关于端口组的配置,请参见“接入分册”中的“链路聚合”模块 |
进入端口组视图 |
port-group aggregation agg-id |
||
在接口配置流量整形 |
qos gts acl acl-number cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] [ queue-length queue-length ] ] |
必选 cbs缺省为单位时间内cir的一半,如果计算得的缺省值小于1875,则取1875为缺省值。 ebs缺省为0 queue-length缺省为50 |
|
显示流量整形配置运行信息 |
display qos gts interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
表2-6 适配所有流的流量整形配置
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入接口视图或端口组视图 |
进入接口视图 |
interface interface-type interface-number |
二者必选其一 进入接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 关于端口组的配置,请参见“接入分册”中的“链路聚合”模块 |
进入端口组视图 |
port-group aggregation agg-id |
||
在接口配置流量整形 |
qos gts any cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] [ queue-length queue-length ] ] |
必选 cbs缺省为单位时间内cir的一半,如果计算得的缺省值小于1875,则取1875为缺省值。 ebs缺省为0 queue-length缺省为50 |
|
显示流量整形配置运行信息 |
display qos gts interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
在GigabitEthernet0/1接口上配置TS,对该接口发送的报文进行流量整形,对超过500kbps的报文流进行整形。
# 进入系统视图。
<VG> system-view
# 进入接口视图。
[VG] interface gigabitethernet0/1
# 配置整形参数。
[VG-gigabitEthernet0/1] qos gts any cir 500
配置物理接口限速就是限制物理接口向外发送数据或者接收数据的速率。
表2-7 接口限速配置过程
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入接口视图或端口组视图 |
进入接口视图 |
interface interface-type interface-number |
者必选其一 进入接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 关于端口组的配置,请参见“接入分册”中的“链路聚合”模块 |
进入端口组视图 |
port-group aggregation agg-id |
||
设置接口限速 |
qos lr outbound cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] |
必选 cbs缺省为单位时间内cir的一半,如果计算得的缺省值小于1875,则取1875为缺省值。 ebs缺省为0。 |
|
设置二层接口模块限速 |
qos lr { inbound |outbound } cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] |
必选 当二层模块接口为固定接口或接口数为4、9时,二层模块接口不支持inbound、cbs和ebs参数。 当二层模块接口数为16、24、48时,二层模块接口不支持ebs参数,且cbs缺省值为4096byte。 |
|
进入端口组视图 |
port-group aggregation agg-id |
- |
|
设置端口组限速 |
qos lr { inbound |outbound } cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] |
必选 当二层模块接口数为16、24、48时,可以支持端口组 缺省值情况和二层接口模块相同 |
|
显示接口的LR配置和统计信息 |
display qos lr interface [ interface-type interface-number ] |
display命令可以在任意视图下执行 |
把接口GigabitEthernet0/1的出速度限制为500kbps。
# 进入系统视图。
<VG> system-view
# 进入接口视图。
[VG] interface gigabitethernet0/1
# 配置限速参数,接口出速率限制为500kbps。
[VG-GigabitEthernet0/1] qos lr outbound cir 500
在完成上述配置后,在任意视图下执行display命令可以显示配置后流量监管/流量整形/物理接口限速的运行情况,通过查看显示信息验证配置的效果。
表2-8 流量监管/流量整形/物理接口限速显示和维护
操作 |
命令 |
显示TP规则 |
display qos carl [ carl-index ] |
显示TP在接口上的信息 |
display qos car interface [ interface-type interface-number ] |
显示流量整形配置运行信息 |
display qos gts interface [ interface-type interface-number ] |
显示接口的LR配置和统计信息 |
display qos lr interface [ interface-type interface-number ] |
QoS策略包含了三个要素:类、流行为、策略。用户可以通过QoS策略将指定的类和流行为绑定起来,方便的进行QoS配置。
类是用来识别流的。
类的要素包括:类的名称和类的规则。
用户可以通过命令定义一系列的规则,来对报文进行分类。同时用户可以通过命令指定规则之间的关系:and和or。
l and:报文只有匹配了所有的规则,设备才认为报文属于这个类。
l or:报文只要匹配了类中的一个规则,设备就认为报文属于这个类。
流行为用来定义针对报文所做的QoS动作。
流行为的要素包括:流行为的名称和流行为中定义的动作。
用户可以通过命令在一个流行为中定义多个动作。
策略用来将指定的类和指定的流行为绑定起来。
策略的要素包括:策略名称、绑定在一起的类和流行为的名称。
QoS策略的配置步骤如下:
(1) 定义类,并在类视图中定义一组流分类规则
(2) 定义流行为,并在流行为视图中定义一组QoS动作
(3) 定义策略,在策略视图下为使用的类中指定对应的流行为
(4) 在接口视图下应用QoS策略
表3-1 各种QoS策略的介绍
策略名称 |
绑定的类 |
定义流行为的命令 |
CAR(流量监管) |
用户根据需要使用if-match match-criteria定义类 |
car |
GTS(流量整形) |
用户根据需要使用if-match match-criteria定义类 |
gts |
流量过滤 |
用户根据需要使用if-match match-criteria定义类 |
filter |
流量重定向 |
用户根据需要使用if-match match-criteria定义类 |
redirect |
优先级重标记 |
用户根据需要使用if-match match-criteria定义类 |
remark |
队列 |
用户根据需要使用if-match match-criteria定义类 |
queue |
拥塞避免 |
用户根据需要使用if-match match-criteria定义类 |
wred |
l 确定了策略中类的名称、类的规则
l 确定了策略中流行为的名称、流行为中包含的动作
l 确定了策略的名称
l 确定了应用策略的接口
定义类首先要创建一个类名称,然后在此类视图下配置其匹配规则。
表3-2 定义类
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义类并进入类映射视图 |
traffic classifier tcl-name [ operator { and | or } ] |
必选 缺省为and,即类视图下各匹配规则之间的关系为逻辑与 |
定义匹配所有数据包的规则 |
if-match [ not ] match-criteria |
必选 |
显示类信息 |
display traffic classifier { system-defined | user-defined } [ tcl-name ] |
可选 display命令可以在任意视图下执行 |
(1) 组网需求
配置一个类test_class,分类规则是满足IP优先级为6的数据包。
(2) 配置步骤
# 进入系统视图。
<Sysname> system-view
# 定义类并进入类映射视图。
[VG] traffic classifier test_class
# 配置分类规则。
[VG-classifier-test_class] if-match ip-precedence 6
定义流行为首先需要创建一个流行为名称,然后在此流行为视图下配置其特性。
表3-3 定义流行为
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 |
配置使用流量监管 |
car cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size ] ] [ green action ] [ red action ] |
必选 用户根据需要配置相应的流行为 |
配置流量过滤动作 |
filter { deny | permit } |
|
配置流量整形动作 |
gts cir committed-information-rate [ cbs committed-burst-size [ ebs excess-burst-size [ queue-length queue-length ] ] ] |
|
配置流量重定向动作 |
redirect { cpu | interface interface-type interface-number } |
|
配置标记报文的DSCP值 |
remark dscp dscp-value |
|
配置标记报文的802.1p优先级 |
remark dot1p 8021p |
|
配置标记报文的IP优先级值 |
remark ip-precedence ip-precedence-value |
|
标记报文的qos-local-id值 |
remark qos-local-id local-id-value |
|
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
& 说明:
软转发流量整形不支持IPv6。
(1) 组网需求
配置一个流行为test_behavior,使用流量监管,流的承诺速率是100kbps。
(2) 配置步骤
# 进入系统视图。
<VG> system-view
# 定义流行为并进入流行为视图。
[VG] traffic behavior test_behavior
# 配置流行为。
[VG-behavior-test_behavior] car cir 100
策略定义该策略中类和流行为的对应关系,而每个流行为由一组QoS动作组成。
每个策略下可以配置多组类和流行为的对应关系,过滤的时候按照配置的顺序进行。
表3-4 在策略中为类指定流行为
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义策略并进入策略视图 |
qos policy policy-name |
必选 |
在策略中为类指定采用的流行为 |
classifier tcl-name behavior behavior-name |
必选 |
显示指定策略中指定类及与类关联的流行为的配置信息 |
display qos policy user-defined [ policy-name [ classifier tcl-name ] ] |
可选 display命令可以在任意视图下执行 |
& 说明:
如果QoS策略在定义流分类规则时引用了ACL,则QoS策略应用在不同接口上处理过程不同:
l 若QoS策略应用到软件口上,当if-match中引用的ACL规则的动作为deny时,则跳出该if-match,继续进行后续规则的查找。
l 若QoS策略应用到硬件口上,则忽略ACL规则的动作,以流行为中定义的动作为准。报文匹配只使用ACL中的分类域。
qos apply policy命令将一个策略应用到具体的接口。一个策略可以在多个接口上得到应用。接口的每个方向(出/入两个方向)只能应用一个策略。
表3-5 在接口上应用策略
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入接口视图或端口视图 |
进入接口视图 |
interface interface-type interface-number |
二者必选其一 进入接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 关于端口组的配置,请参见“接入分册”中的“链路聚合”模块 |
进入端口组视图 |
port-group aggregation agg-id |
||
在接口上应用关联的策略 |
qos apply policy policy-name { inbound | outbound [ dynamic ] } |
必选 |
|
显示指定端口或所有端口上策略的配置信息和运行情况 |
display qos policy interface [ interface-type interface-number ] [ inbound | outbound ] |
可选 display命令可以在任意视图下执行 |
|
显示指定策略或所有策略中指定类或所有类及与类关联的行为的配置信息 |
display qos policy { system-defined | user-defined } [ policy-name [ classifier tcl-name ] ] |
& 说明:
如果QoS策略应用在接口的出方向,则QoS策略对本地协议报文不起作用。(本地协议报文的含义及其作用如下:某些内部发起的报文是维持设备正常运行的重要的协议报文,为了确保这些报文能够被不受影响的发送出去,遂将其定义为本地协议报文,使得QoS不对其进行处理,降低了因配置QoS而误将这些报文丢弃或进行其他处理的风险。一些常见的本地协议报文如下:链路维护报文、ISIS、OSPF、RIP、BGP、LDP、RSVP、SSH等。)
(1) 组网需求
配置一个策略test_policy,策略里指定类为test_class的数据的流行为是test_behavior,并把该策略应用到GigabitEthernet0/1入接口上。
(2) 配置步骤
# 进入系统视图。
<VG> system-view
# 定义策略并进入策略视图。
[VG] qos policy test_policy
# 为类指定流行为。
[VG-qospolicy-test_policy] classifier test_class behavior test_behavior
[VG-qospolicy-test_policy] quit
# 进入接口视图。
[VG] interface gigabitethernet 0/1
# 把策略应用到接口上。
[VG-GigabitEthernet0/1] qos apply policy test_policy inbound
在完成上述配置后,在任意视图下执行display命令可以显示QoS策略的运行情况,通过查看显示信息验证配置的效果。
表3-6 QoS策略显示和维护
操作 |
命令 |
显示指定策略或所有策略中指定类或所有类及与类关联的行为的配置信息 |
display qos policy { system-defined | user-defined } [ policy-name [ classifier tcl-name ] ] |
显示指定端口或所有端口上策略的配置信息和运行情况 |
display qos policy interface [ interface-type interface-number ] [ inbound | outbound ] |
显示配置的流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
显示配置的类信息 |
display traffic classifier { system-defined | user-defined } [ tcl-name ] |
当分组到达的速度大于接口发送分组的速度时,在该接口处就会产生拥塞。如果没有足够的存储空间来保存这些分组,它们其中的一部分就会丢失。分组的丢失又可能会导致发送该分组的设备因超时而重传此分组,这将导致恶性循环。
拥塞管理的中心内容就是当拥塞发生时如何制定一个资源的调度策略,决定报文转发的处理次序。
对于拥塞管理,一般采用队列技术,使用一个队列算法对流量进行分类,之后用某种优先级别算法将这些流量发送出去。每种队列算法都是用以解决特定的网络流量问题,并对带宽资源的分配、延迟、抖动等有着十分重要的影响。
这里介绍几种常用的队列调度机制。
如上图所示,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号队列是用户队列,如图4-3所示。用户可以配置流分类的规则,指定16个用户队列占用接口带宽的比例关系。在队列调度时,系统队列中的分组被优先发送。直到系统队列为空,再采用轮询的方式按照预先配置的带宽比例依次从1到16号用户队列中取出一定数量的分组发送出去。建议用户不要将普通数据报文放入0号队列,否则将引起其它队列长时间得不到调度。这样,就可以使不同业务的分组获得不同的带宽,既可以保证关键业务能获得较多的带宽,又不至于使非关键业务得不到带宽。缺省情况下,数据流进入1号队列。
定制队列的另一个优点是:可根据业务的繁忙程度分配带宽,适用于对带宽有特殊需求的应用。虽然16个用户队列的调度是轮询进行的,但对每个队列不是固定地分配服务时间片——如果某个队列为空,那么马上换到下一个队列调度。因此,当没有某些类别的报文时,CQ调度机制能自动增加现存类别的报文可占的带宽。
在介绍加权公平队列前,先要理解公平队列FQ(Fair Queuing)。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 Queuing,低延迟队列),为语音报文这样的对延迟敏感的数据流提供严格优先发送服务。
LLQ将严格优先队列机制与CBQ结合起来使用,用户在定义类时可以指定其享受严格优先服务,这样的类称作优先类。所有优先类的报文将进入同一个优先队列,在入队列之前需对各类报文进行带宽限制的检查。报文出队列时,将首先发送优先队列中的报文,直到发送完后才发送其他类对应的队列的报文。在发送其他队列报文时将仍然按照加权公平的方式调度。
为了不让其他队列中的报文延迟时间过长,在使用LLQ时将会为每个优先类指定可用最大带宽,该带宽值用于拥塞发生时监管流量。 如果拥塞未发生,优先类允许使用超过分配的带宽。如果拥塞发生,优先类超过分配带宽的数据包将被丢弃。LLQ还可以指定Burst-size。
系统在为报文匹配规则时,规则如下:
l 先匹配优先类,然后再匹配其他类;
l 对多个优先类,按照配置顺序逐一匹配;
l 对其他类,也是按照配置顺序逐一匹配;
l 对类中多个规则,按照配置顺序逐一匹配。
RTP优先队列是一种保证实时业务(包括语音与视频业务)服务质量的简单的队列技术。其原理就是将承载语音或视频的RTP报文送入高优先级队列,使其得到优先发送,保证时延和抖动降低为最低限度,从而保证了语音或视频这种对时延敏感业务的服务质量。
如上图所示,RTP优先队列将RTP报文送入一个具有较高优先级的队列。RTP报文是端口号在一定范围内为偶数的UDP报文,端口号的范围可以配置。RTP优先队列可以同任何一种队列(包括FIFO、PQ、CQ、WFQ与CBQ)结合使用,而它的优先级是最高的。但由于CBQ中的LLQ也可以保证实时业务数据的转发,所以一般不推荐将RTP优先队列与CBQ结合应用。
路由器上提供了以上拥塞管理技术,突破了传统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是接口缺省使用的队列调度机制,可以通过配置命令改变其队列长度。
表4-2 FIFO队列配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
设置接口队列长度 |
qos fifo queue-length queue-length |
必选 FIFO队列的缺省长度为75 |
# 把接口的先进先出队列的长度配置为100。
<VG> system-view
[VG] interface gigabitethernet 0/1
[VG-GigabitEthernet0/1] qos fifo queue-length 100
可以给一个优先列表的组定义多条规则,然后把该组规则应用在某接口上。当一个分组到达该接口时(需要由此接口发送出去),系统沿规则链匹配该分组,如果匹配上某规则,则进入相应的队列,匹配结束;如果分组不与任何规则匹配,则进入缺省队列。缺省队列的缺省值为normal。
系统以规则被配置的顺序来匹配分组,如果发现分组与某个规则匹配,便结束整个查找过程。
将一组优先列表应用到接口上。对于同一个接口,优先队列的应用命令的重复使用将为接口设定新的优先列表组。
表4-3 优先队列配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置优先列表 |
qos pql pql-index protocol ip queue-key key-value queue { bottom | middle | normal | top } 或者 qos pql pql-index inbound-interface interface-type interface-number queue { bottom | middle | normal | top } |
必选 可以根据需要选择优先列表的配置命令 |
设置缺省队列 |
qos pql pql-index default-queue { bottom | middle | normal | top } |
可选 本配置用来指明不匹配规则的数据包的入队队列 缺省情况下,为normal |
配置队列长度 |
qos pql pql-index queue{ bottom | middle | normal | top } queue-length queue-length |
可选 队列缺省长度值: top为20,middle为40,normal为60,bottom为80 |
进入接口视图 |
interface interface-type interface-number |
- |
应用优先列表 |
qos pq pql pql-index |
必选 缺省情况下,接口不使用PQ,而使用FIFO |
显示接口上优先列表的配置情况 |
display qos pq interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
定制列表共可分为16个组(1~16),每个组指明了什么样的分组进入什么样的队列、各队列的长度和每次轮询各队列所能连续发送的字节数等信息。在一个接口上只能应用一个组。
表4-4 定制队列配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置定制列表 |
qos cql cql-index protocol ip queue-key key-value queue queue-number 或者 qos cql cql-index inbound-interface interface-type interface-number queue queue-number |
可选 可以根据需要选择优先列表的配置命令 |
设置缺省队列 |
qos cql cql-index default-queue queue-number |
可选 本配置指明不匹配规则的数据包的入队队列。 缺省情况下,队列号为1。 |
配置队列长度 |
qos cql cql-index queue queue-number queue-length queue-length |
可选 缺省情况下,队列长度为20。 |
配置连续发送字节数 |
qos cql cql-index queue queue-number serving byte-count |
可选 缺省情况下,发送字节数为1500。 |
进入接口视图 |
interface interface-type interface-number |
- |
应用定制列表 |
qos cq cql cql-index |
必选 缺省情况下,接口不使用CQ,而使用FIFO |
显示定制列表在接口上应用情况 |
display qos cq interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
& 说明:
除链路层使用X.25协议的接口外,所有物理接口都可以应用定制队列。
配置定制队列,来自接口GigabitEthernet0/1的数据进入队列1,队列1每次轮询所发送数据包的字节数为2000。。
# 进入系统视图。
<VG> system-view
# 配置定制规则。
[VG] qos cql 1 inbound-interface gigabitethernet 0/1 queue 1
[VG] qos cql 1 queue 1 serving 2000
# 在接口Serial1/0:15上启用定制队列规则组1。
[VG] interface serial 1/0:15
[VG-Serial 1/0:15] qos cq cql 1
当接口没有使用WFQ策略时,使用qos wfq命令可以使接口使用WFQ策略,同时指定WFQ的参数。如果接口已经使用了WFQ策略,使用qos wfq命令可以修改WFQ的参数。
表4-5 加权公平队列配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置加权队列 |
qos wfq [ precedence | dscp ] [ queue-length max-queue-length [ queue-number total-queue-number ] ] |
必选 缺省情况下,接口不使用WFQ,而使用FIFO |
显示接口加权公平队列的配置统计信息 |
display qos wfq interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
基于类的队列CBQ的配置步骤如下:
(1) 配置接口最大可用带宽
(2) 定义类,并在类视图中定义一组流分类规则
(3) 定义流行为,并在流行为视图中定义一组QoS特性
(4) 定义策略,在策略视图下为使用的类中指定对应的流行为
(5) 在接口视图下应用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特性:
l ef:定义了一个特性为入EF队列,占用带宽为接口可用带宽的20%
l af:定义了一个特性为入AF队列,占用带宽为接口可用带宽的20%
l be:不定义任何特性
系统预定义了一个策略,为该策略指定了使用的预定义类,并为这些类指定预定义的动作。该策略名为default,具有缺省的CBQ动作。
default策略的具体规则如下:
l 预定义类ef,采用预定义流行为ef
l 预定义类af1~af4,采用预定义流行为af
l default-class类,采用预定义流行为be
最大可用带宽指CBQ中报文入队列带宽检查时使用的最大接口带宽,并非指物理接口的实际带宽。
表4-6 配置接口最大可用带宽
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
配置接口最大可用带宽 |
qos max-bandwidth bandwidth |
必选 |
在未配置各种接口的最大可用带宽的条件下,计算CBQ时实际使用的基准带宽如下:
l 对于物理接口,其取值为物理接口实际的波特率或速率;
& 说明:
l 建议最大可用带宽的取值小于物理接口或逻辑链路的实际可用带宽。
l 修改接口最大可用带宽的配置会导致CBQ重新分配队列宽度;而修改物理接口的波特率或速率不会引起这个结果。
l 将QoS策略配置到逻辑接口后,需要将所有绑定到该逻辑接口的物理接口使用shutdown命令逐一关闭,再使用undo shutdown命令将这些物理接口重新启动,才能正常使用QoS策略。
(1) 组网需求
配置接口的最大可用带宽是60kbps。
(2) 配置步骤
# 进入系统视图。
<VG> system-view
# 进入接口视图。
[VG] interface gigabitethernet 0/1
# 在接口GigabitEthernet0/1上配置最大可用带宽。
[VG-GigabitEthernet0/1] qos max-bandwidth 60
定义类首先要创建一个类名称,然后在此类视图下配置其匹配规则。
表4-7 定义类
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义类并进入类映射视图 |
traffic classifier tcl-name [ operator { and | or } ] |
必选 缺省为and,即类视图下各匹配规则之间的关系为逻辑与 |
定义匹配所有数据包的规则 |
if-match [ not ] match-criteria |
必选 |
显示类信息 |
display traffic classifier { system-defined | user-defined } [ tcl-name ] |
可选 display命令可以在任意视图下执行 |
(1) 组网需求
配置一个类test,分类规则是满足IP优先级为6的数据包。
(2) 配置步骤
# 进入系统视图。
<VG> system-view
# 定义类并进入类映射视图。
[VG] traffic classifier test
# 配置分类规则。
[VG-classifier-test] if-match ip-precedence 6
定义流行为首先需要创建一个流行为名称,然后在此流行为视图下配置其特性。
(1) 配置确保转发(AF),并配置最小可保证带宽
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 behavior-name:流行为名,不允许为系统预定义流行为 |
配置确保转发(AF),并配置最小可保证带宽 |
queue af bandwidth { bandwidth | pct percentage } |
必选 |
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
& 说明:
l 该行为只能应用在接口的出方向。
l 在同一流行为下需要用同一单位配置queue ef和queue af,或者用bandwidth,或者用百分比进行配置。
l 在一个流行为下,queue ef,queue af和queue wfq不能同时使用。
(2) 配置加速转发(EF),并配置最大带宽
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 behavior-name:流行为名,不允许为系统预定义流行为 |
配置加速转发(EF),并配置最大带宽 |
queue ef bandwidth { bandwidth [ cbs burst ] | pct percentage [ cbs-ratio ratio] } |
必选 |
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
& 说明:
l 本配置在流行为视图下不能与queue af,queue-length,wred同时使用。
l 缺省类不能与包含加速转发的行为关联。
l 在同一策略下各个类需用同一单位配置queue ef和queue af,或者用bandwidth,或者用百分比进行配置。
(3) 配置采用公平队列
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 behavior-name:流行为名,不允许为系统预定义流行为 |
配置采用公平队列 |
queue wfq [ queue-number total-queue-number ] |
必选 |
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
& 说明:
配置了公平队列的流行为仅可以与缺省类(default-class)关联使用。
(4) 配置最大队列长度
配置最大队列长度,丢弃方式为尾丢弃。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 behavior-name:流行为名,不允许为系统预定义流行为 |
配置最大队列长度 |
queue-length queue-length |
必选 |
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
& 说明:
最大队列长度命令必须在配置了queue af或queue wfq后使用;执行undo queue af或undo queue wfq命令,则queue-length也同时被取消。
(5) 配置丢弃方式为随机丢弃方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 behavior-name:流行为名,不允许为系统预定义流行为 |
配置丢弃方式为随机丢弃方式 |
wred [ dscp | ip-precedence ] |
必选 dscp:表明在为一个包计算丢弃概率时使用的是DSCP值 ip-precedence:表明在为一个包计算丢弃概率时使用的是IP优先级值,作为缺省配置 |
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
& 说明:
l wred [ dscp | ip-precedence ]命令必须在配置了queue af或queue wfq后使用。wred和queue-length是互斥的。
l 删除WRED时将删除在该随机丢弃下的其他配置。
l 当接口上应用了包含WRED特性的QoS策略后,原有的接口级的WRED配置失效。
(6) 设置WRED计算平均队列长度的指数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 behavior-name:流行为名,不允许为系统预定义流行为 |
配置WRED计算平均队列长度的指数 |
wred weighting-constant exponent |
必选 缺省情况下,WRED计算平局队列长度的指数为9 |
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
& 说明:
wred weighting-constant必须在配置了queue af或queue wfq,并已用wred使能了WRED丢弃方式后才可以进行配置。
(7) 配置WRED各DSCP的下限、上限和丢弃概率分母
在进行本配置前需已用wred dscp使能了基于DSCP的WRED丢弃方式。
表4-14 设置WRED各DSCP的下限、上限和丢弃概率分母
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 behavior-name:流行为名,不允许为系统预定义流行为 |
配置WRED各DSCP的下限、上限和丢弃概率分母 |
wred dscp dscp-value low-limit low-limit high-limit high-limit [ discard-probability discard-prob ] |
必选 |
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
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。
& 说明:
l 需要配置了queue af和wred 后,才能进行此配置。
l 取消wred配置,wred dscp配置同时被取消。
l 取消queue af或queue wfq配置,丢弃参数的配置同时被取消。
(8) 配置WRED各IP优先级的下限、上限和丢弃概率分母
进行本配置前需已用wred ip-precedence使能了基于IP优先级的WRED丢弃方式。
表4-15 配置WRED各IP优先级的下限、上限和丢弃概率分母
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义一个流行为并进入流行为视图 |
traffic behavior behavior-name |
必选 behavior-name:流行为名,不允许为系统预定义流行为 |
设置WRED各优先级的下限、上限和丢弃概率分母 |
wred ip-precedence precedence low-limit low-limit high-limit high-limit [ discard-probability discard-prob ] |
必选 |
显示流行为信息 |
display traffic behavior { system-defined | user-defined } [ behavior-name ] |
可选 display命令可以在任意视图下执行 |
& 说明:
l 需要配置了queue af和wred 后,才能进行此配置。
l 取消WRED配置,wred ip-precedence配置同时被取消。
l 取消queue af或queue wfq配置,丢弃参数的配置同时被取消。
(1) 组网需求
配置一个流行为test,配置确保转发(AF),并配置最小可保证带宽是200kbps。
(2) 配置步骤
# 进入系统视图。
<VG> system-view
# 定义流并进入流行为视图。
[VG] traffic behavior test
# 配置分类规则。
[VG-behavior-test] queue af bandwidth 200
[VG-behavior-test]
策略定义该策略中类和流行为的对应关系,而每个流行为由一组QoS动作组成。例如队列调度,包括EF,AF,WFQ,流量监管,流量整形,WRED、标记等等。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
定义策略并进入策略视图 |
qos policy policy-name |
- |
在策略中为类指定采用的流行为 |
classifier tcl-name behavior behavior-name |
必选 tcl-name:类名,必须是已经定义的类,可以是系统定义或用户定义类 behavior-name:必须是已定义的流行为名,可以是系统定义或用户定义流行为 |
显示指定策略中指定类及与类关联的流行为的配置信息 |
display qos policy { system-defined | user-defined } [ policy-name [ classifier tcl-name ] ] |
可选 display命令可以在任意视图下执行 |
qos apply policy命令将一个策略映射到具体的物理接口或ATM PVC。一个策略映射可以在多个物理端口或ATM PVC上得到应用。
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入接口视图或端口组视图 |
进入接口视图 |
interface interface-type interface-number |
二者必选其一 进入接口视图后,下面进行的配置只在当前接口生效;进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 关于端口组的配置,请参见“接入分册”中的“链路聚合”模块 |
进入端口组视图 |
port-group aggregation agg-id |
||
在接口上应用关联的策略 |
qos apply policy policy-name { inbound | outbound [ dynamic ] } |
必选 |
|
进入端口组视图 |
port-group aggregation agg-id |
- |
|
在端口组上应用关联的策略 |
qos apply policy policy-name inbound |
当二层模块接口数为16、24、48时,可以支持端口组 进入端口组视图后,下面进行的配置将在端口组中的所有端口生效 |
|
显示指定接口、指定ATM接口的指定PVC或所有接口与PVC上策略的配置信息和运行情况 |
display qos policy interface [ interface-type interface-number [ inbound | outbound ] [ pvc { pvc-name [ vpi/vci ] | vpi/vci } ] ] |
可选 display命令可以在任意视图下执行 |
策略在接口视图下应用的规格如下:
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)。所以只配置了流量整形与流量监管的策略可以应用到子接口。
l 对于虚拟接口模板(Virtual Template)、VE等逻辑接口,在没有与物理接口绑定的情况下,由于其默认带宽为0Kbps,因此如果配置含有队列(queue ef、queue af)的策略,需要在该接口下配置qos max-bandwidth,使该接口带宽能满足包含队列的策略的带宽需求。
(1) 组网需求
配置一个策略test,策略里指定类为test_class的数据的流行为是test_behavior,并把该策略应用到GigabitEthernet0/1入接口上。
(2) 配置步骤
# 进入系统视图。
<VG> system-view
# 定义策略并进入策略视图。
[VG]qos policy test
# 为类指定流行为。
[VG-qospolicy-test] classifier test_class behavior test_behavior
[VG-qospolicy-test] quit
# 进入接口视图。
[VG] interface gigabitethernet 0/1
# 把策略应用到接口上。
[VG-GigabitEthernet0/1] qos apply policy test inbound
在完成上述配置后,在任意视图下执行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 ] ] |
表4-19 RTP队列配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
应用RTP队列 |
qos rtpq start-port first-rtp-port-number end-port last-rtp-port-number bandwidth bandwidth [ cbs cbs ] |
必选 |
配置最大预留带宽占接口实际可用带宽的百分比 |
qos reserved-bandwidth pct percent |
可选 缺省值为80 |
显示接口RTP队列的配置统计信息 |
display qos rtpq interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
过度的拥塞会对网络资源造成极大危害,必须采取某种措施加以解除。拥塞避免(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可以通过命令qos wred weighting-constant进行配置。
当队列机制采用WFQ时,可以为不同优先级的报文设定计算队列平均长度时的指数、上限、下限、丢弃概率,从而对不同优先级的报文提供不同的丢弃特性。
当队列机制采用FIFO、PQ、CQ时,可以为每个队列设定计算队列平均长度时的指数、上限、下限、丢弃概率,为不同类别的报文提供不同的丢弃特性。
WRED和队列机制的关系如下图所示。
当WRED和WFQ配合使用时,可以实现基于流的WRED。在进行分类的时候,不同的流有自己的队列,对于流量小的流,由于其队列长度总是比较小,所以丢弃的概率将比较小。而流量大的流将会有较大的队列长度,从而丢弃较多的报文,保护了流量较小的流的利益。
WRED有两种配置方式:
l 接口配置方式:在接口上配置WRED的各种参数,并使能WRED。此种配置方式适合于三层路由接口。
在进行WRED配置时,需要事先确定如下参数:
l 队列上限和下限:当队列平均长度小于下限时,不丢弃报文。当队列平均长度在上限和下限之间时,设备随机丢弃报文,队列越长,丢弃概率越高。当队列平均长度超过上限时,丢弃所有到来的报文。
l 丢弃优先级:在进行报文丢弃时参考的参数,0对应红色报文、1对应黄色报文、2对应绿色报文,红色报文将被优先丢弃。
l 计算平均队列长度的指数:指数越大,计算的平均队列长度时对队列的实时变化越敏感。
l 计算丢弃概率的分母:在计算丢弃概率的公式中作为分母。取值越大,计算出的丢弃概率越小。
l 确定了计算平均队列长度的指数数值(可选)
l 确定了各个优先级对应的队列的低限和高限数值(可选)
表5-1 WRED配置过程
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
应用WFQ队列 |
qos wfq [ precedence | dscp ] [ queue-length max-queue-length [ queue-number total-queue-number ] ] |
必选 |
使能WRED |
qos wred [ dscp | ip-precedence ] enable |
必选 |
设置计算平均队列长度的指数 |
qos wred weighting-constant exponent |
可选 缺省情况下,该指数取值为9 |
设置各优先级的对应的参数 |
qos wred { ip-precedence ip-precedence | dscp dscp-value } low-limit low-limit high-limit high-limit discard-probability discard-prob |
可选 缺省情况下,low-limit为10,high-limit为30,discard-prob为10 |
显示接口的WRED配置情况和统计信息 |
display qos wred interface [ interface-type interface-number ] |
可选 display命令可以在任意视图下执行 |
注意:
在配置qos wred enable前,需要先在接口上应用WFQ队列,并使能wred。
l 在接口上配置基于IP优先级的WRED
l 设置IP优先级为3的报文的队列下限为20、上限为40、丢弃概率分母为15
l 设置计算平均队列长度的指数为6
# 进入系统视图。
<VG> system-view
# 进入接口视图。
[VG] interface gigabitethernet 0/1
#应用WFQ队列
[VG-GigabitEthernet0/1] qos wfq
# 使能基于IP优先级的WRED。
[VG-GigabitEthernet0/1] qos wred ip-precedence enable
# 设置优先级为3的报文的队列下限为20,上限为40,丢弃概率分母为15。
[VG-GigabitEthernet0/1] qos wred ip-precedence 3 low-limit 20 high-limit 40 discard-probability 15
# 配置计算平均队列长度的指数为6。
[VG-GigabitEthernet0/1] qos wred weighting-constant 6
在完成上述配置后,在任意视图下执行display命令可以显示配置后WRED的运行情况,通过查看显示信息验证配置的效果。
表5-2 WRED显示和维护
操作 |
命令 |
显示接口的WRED配置情况和统计信息 |
display qos wred interface [ interface-type interface-number ] |
显示WRED表配置情况 |
display qos wred table [ table-name ] |
在二层端口上应用基于队列的WRED表。
# 进入系统视图
<VG> system-view
# 配置一张基于队列的WRED表。
[VG] qos wred queue table queue-table1
[VG-wred-table-queue-table1] quit
# 进入接口视图。
[VG] interface ethernet 1/0
# 在接口上应用WRED表。
[VG-Ethernet1/0] qos wred apply queue-table1
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!