更新时间:2024-01-10
1 QoS配置
如果您关心如何充分使用您的线路带宽,以及如何更有效的利用您的网络资源,那么服务质量的配置将可能满足您的需求。
1.1 QoS概述
1.1.1 QoS概念
通常情况下,交换机工作在尽力而为服务模式(Best-Effort served),在这种工作模式下,交换机平等的对待所有的流,竭尽全力来投递所有的流;这样,如果发生了拥塞,所有的流被丢弃的几率是相同的。但是在实际的网络中,不同的流的重要性是不同的,交换机QoS功能可以根据流的重要程度对不同的流提供不同的服务,使得比较重要的流得到较好的服务。
如何来划分流的重要性,目前的网络上有两种主要的划分方法:
• 根据802.1Q帧头中标签(Tag),该标签长度为两个字节,其中最高位的3个比特用来表示报文的优先级,总共有8个优先级,0为最低优先级,7为最高优先级。
• 根据IP报文中IP头部的DSCP字段,该字段使用IP头中TOS域的低6个比特。
在实际的网络应用中,由边缘的交换机根据流的重要性为不同的流分配不同的优先级,其它的所有交换机根据流的优先级信息来为不同优先级的流提供不同的服务,这样就实现了端到端的QoS服务。
另外,还可以对网络中的某一台交换机进行配置,使得它对具有特定特征(根据报文的MAC层、三层信息等等)的报文做特定的处理,这样的行为称为一跳行为。
交换机的QoS功能,将使得有限的网络带宽得到最有效的使用,从而大大提高网络的整体性能。
1.1.2 端对端QoS模型
服务模型描述了一组端对端的QoS能力,即网络从一端到另外一端传送特殊网络通信所要求的服务的能力。QoS软件支持二种类型的服务模型:尽力而为的以及区分式服务。
1.1.2.1尽力而为服务(Best-Effort Service)
尽力而为服务是一种单一的服务模型。在这种服务模型中,应用能够在任何必要的时候发送任意数量的数据,而不需要申请许可或者事先通知网络。对于尽力而为服务来说,如果条件允许的话,网络就能够传输数据,而不需要在可靠性、延时范围或者吞吐量方面的保证。实现尽力而为服务的交换机QoS功能是先到先服务(First come, first served,简写为FCFS)排队。
1.1.2.2区分式服务(Differentiated Service)
对于区分式服务来说,网络如果想要传送的是一种特殊的服务,就要在每一个数据包中指定相应的QoS标记。这种指定能够以多种不同的方式体现,例如,在IP数据包中使用IP优先权位设置。交换机使用这个QoS规定来进行分类,并且完成智能化排队的任务。交换机QoS提供的严格优先级轮转(Strict Priorty,简写为SP),加权优先级轮转(Weighted Round Robin, 简写为WRR)以及先到先服务(First come ,first served, 简写为FCFS)可用于发送区分式服务。
1.1.3 QoS的各种队列算法
QoS的各种排队算法是实现QoS的重要保证。本公司交换机中实现了严格优先级轮转(Strict Priorty,简写为SP),加权优先级轮转(Weighted Round Robin, 简写为WRR)以及先到先服务(First come first served, 简写为FCFS)队列算法。
1.1.3.1严格优先级轮转(Strict Priorty)
严格优先级轮转的队列算法指的是对优先级高的流提供最先服务,直到该优先级没有流为止才对次高优先级的流提供服务。这种队列算法为高优先级的流提供了较好的服务,但是它的弊端是会导致优先级低的流一直得不到服务,导致饿死。
1.1.3.2加权优先级轮转(Weighted Round Robin)
加权优先级轮转算法是解决严格优先级轮转时低优先级队列被饿死的有效方法,每个优先级队列被分配一定的带宽,按优先级从高到低依次为各个优先级队列提供服务,当高优先级队列已经用完分配给它的所有带宽后,自动转向次优先级的队列,提供服务。
1.1.3.3先到先服务(First come first served)
先到先服务队列算法严格按照报文到达交换机的顺序来为流提供服务,对先到交换机的报文提供优先服务。
1.2 QoS 配置任务列表
通常情况下,交换机尽最大的可能来投递每一个报文,当拥塞发生时,所有的报文因为拥塞而被丢弃的几率相同。但是,在实际中不同的报文的重要性各不相同,我们需要对重要的报文提供更好的服务,QoS功能就可以为不同的报文提供不同的优先级进行服务,从而使网路具有更好的性能和更有效的使用率。
本章描述了如何对交换机的QoS功能进行配置。
QoS配置任务有:
• 配置全局cos优先级队列
• 配置cos优先级队列带宽
• 配置cos优先级队列调度策略
• 配置cos优先级队列调度基准
• 配置端口的缺省cos值
• 配置端口的cos优先级队列
• 建立QoS策略映射
• 配置QoS策略映射的描述
• 配置QoS策略映射的匹配数据流
• 配置QoS策略映射匹配数据流的动作
• 在端口上应用QoS策略
• 显示QoS策略映射表
• 配置端口流量速率限制
• 实现扩展的QinQ功能
1.3 QoS配置任务
1.3.1 配置全局cos优先级队列
配置QoS优先级队列就是把8个IEEE802.1p定义的服务质量类别CoS值映射到交换机的优先级队列中,交换机8个优先级队列。交换机针对不同的队列采用相应的调度策略,从而实现QoS服务。
在全局模式下配置cos优先级队列将影响所有端口cos优先级队列映射,当二层端口下面配置了优先级队列时,则在该端口使用它下面配置的优先级队列,否则使用全局的配置。
进入特权模式下按下列步骤来配置全局cos优先级队列。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no] cos map quid cos1..cosn
|
设置cos优先级队列。
quid为cos优先级队列的ID。
cos1..cosn为IEEE802.1p定义的CoS值。
|
exit
|
退回到管理配置模式。
|
write
|
保存配置 。
|
1.3.2 配置cos优先级队列带宽
优先级队列带宽即配置在cos优先级队列调度策略为wrr(加权轮转调度)或wfq时,各个优先级队列所分配的带宽比例,此款交换机有8个优先级队列。
使用该命令,将影响所有端口优先级队列带宽。只有在配置了队列调度策略为wrr或wfq时该命令才有效,它确定使用wrr或wfq调度策略时CoS优先级队列带宽权值。
进入特权模式下按下列步骤来配置cos优先级队列带宽。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no] scheduler weight bandwidth weight1...weightn
|
设置CoS优先级队列带宽。
weight1...weightn为WRR八个CoS优先级队列权值。
|
exit
|
退回到管理配置模式。
|
write
|
保存配置 。
|
1.3.3 配置cos优先级队列调度策略
交换机每个端口有多个输出队列,此款交换机有8个优先级队列。而输出队列调度可采用下面的三种方式:
• SP(Sheer Priority):绝对优先级调度,只有在高优先级队列为空时才转发低优先级队列中的包,如果高优先级队列中有数据包,则无条件的转发高优先级队列中的包。
• WRR(Weighted Round Robin):加权轮转调度,为每个队列的带宽分配一定的权值,根据每个队列的权值比例来分配带宽。
• FCFS(First Come First Served):先到先服务调度,严格按照报文到达交换机的顺序来为流提供服务,对先到交换机的报文提供优先服务。
进入特权模式下按下列步骤来配置cos优先级队列调度策略。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no] scheduler policy { sp | wrr|fcfs|wfq}
|
设置CoS优先级队列调度策略 。
sp为使用sp调度策略。
wrr为使用wrr调度策略 。
fcfs为使用fcfs调度策略。
wfq为使用wfq调度策略。
|
exit
|
退回到管理配置模式。
|
write
|
保存配置。
|
1.3.4 配置cos优先级队列调度基准
优先级队列调度基准即配置在cos优先级队列调度策略为wrr(加权轮转调度)或wfq时,不同优先级队列所分配带宽比例的衡量标准。主要有两种标准:
• packet-count:基于包的个数来表示占用的带宽。
• latency:基于发送的时间片来表示占用的带宽。
此款交换机仅支持上面的packet-count调度基准,packet-count也是默认的调度基准。
1.3.5配置端口的cos优先级队列最小带宽和最大带宽
端口cos优先级队列可以通过配置来更改其最小和最大带宽,即低于最小带宽的流会全部通过,不会在队列中丢弃,高于最大带宽的流会全部丢弃。
进入特权模式下配置:
命令
|
目的
|
config
|
进入全局配置模式。
|
interface g1/1
|
进入要配置的端口下。
|
[no] cos bandwidth quid min-bandwidth max-bandwidth
|
quid配置优先级队列。
min-bandwidth配置最小带宽。
Max-bandwidth配置最大带宽。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
write
|
保存配置 。
|
1.3.6配置WRED(Weighted Random Early Detection)加权随机早期检测
进入特权模式下配置:
命令
|
目的
|
config
|
进入全局配置模式。
|
scheduler wred [ queue quid {drop-level drop-level | low-limit limit-percent | slope slope}]
no scheduler wred [queue quid]
|
配置WRED。
quid配置队列。
drop-level配置丢弃级别。
limit-percent配置起始百分比。
Slop配置斜率
|
exit
|
退回到管理配置模式。
|
write
|
保存配置。
|
1.3.7配置SRED(Simple Random Early Detection)简单随机早期检测
进入特权模式下配置:
命令
|
目的
|
config
|
进入全局配置模式。
|
scheduler sred [queue quid {drop-level drop-level | low-limit limit-percent | droprate drop-rate}]
no scheduler sred [queue quid]
|
配置WRED。
quid配置队列。
drop-level配置丢弃级别。
limit-percent配置起始百分比。
droprate配置丢弃率。丢弃率范围0-7.
|
exit
|
退回到管理配置模式。
|
write
|
保存配置。
|
1.3.8 配置端口的缺省cos值
如果端口收到的是没有标签的数据帧,则交换机会为它加上一个默认的cos优先级。配置端口的缺省cos值就是将端口收到的无标签帧的cos默认值设置为指定值。
进入特权模式下按下列步骤来配置端口的cos默认值。
命令
|
目的
|
config
|
进入全局配置模式。
|
interface g1/1
|
进入要配置的端口下。
|
[no] cos default cos
|
配置端口收到的无标签帧的CoS值。
cos为对应的cos值。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
write
|
保存配置 。
|
1.3.9 配置基于dscp的cos优先级队列
根据dscp值重新映射cos队列,修改dscp值。
进入特权模式下按下列步骤来配置端口的cos默认值。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no]dscp map word {dscp dscp-value | cos cos-value }
|
Word配置dscp范围表。
Dscp-value配置映射重新的dscp值
Cos-value配置映射的优先级cos。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
1.3.10建立QoS策略映射
QoS策略映射是指采用一定的规则(可以根据MAC层或者IP层的头信息)识别出符合某类特征的报文,并对其采取指定的动作。
对于匹配数据流的IP访问列表和MAC访问列表规则中的动作(permit或者deny)为permit时,该规则用来区分数据流,为deny时,该规则不起作用,即不会被用来匹配数据流。IP访问列表中的端口号必须是确定的,而不可以是一个范围。
进入特权模式下按下列步骤来新建QoS策略映射 。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no]policy-map name
|
进入QoS策略表配置模式。
name为该策略的名称 。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
1.3.11 配置QoS策略映射的描述
进入特权模式下按下列步骤来配置QoS策略映射的描述。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no]policy-map name
|
进入QoS策略表配置模式。
name为该策略的名称 。
|
description description-text
|
配置该QoS策略的描述。
description-text为描述该策略的文本。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
1.3.12 配置QoS策略映射的匹配数据流
QoS数据流的分类规则(classification rule)指配置管理员根据管理需求配置的过滤规则。可以很简单,比如可根据IP报文头的ToS字段识别出有不同优先级特征的流量,也可以很复杂,如综合链路层、网络层、传输层信息,诸如MAC地址,IP协议源地址、目的地址或应用程序的端口号等相关信息来对报文进行分类。一般的分类依据都局限在封装报文的头部信息,使用报文的内容作为分类的标准是比较少见的。
按照下面所示的步骤进入策略配置模式,并配置策略的匹配数据流,该数据流将覆盖上次的配置。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no]policy-map name
|
进入QoS策略表配置模式。
name为该策略的名称 。
|
classify {seq seq-num | any | cos cos | icos icos | vlan vlanid | ivlan ivlanid | ethernet-type ethernet-type | precedence precedence-value | dscp dscp-value | tos tos-value | diffserv diffserv-value | ip ip-access-list | ipv6 ipv6-access-list | mac mac-access-list }
no classify {seq seq-num | cos | icos | vlan | ivlan | ethernet-type | precedence | dscp | tos | diffserv | ip | ipv6 | mac }
|
seq-num为指定条目序号
any为匹配任何数据包。
cos为配置匹配的COS值,0-7。
icos为配置匹配的内层COS值,0-7。
vlanid为配置匹配的VLAN,1-4094。
ivlanid为配置匹配的内层VLAN,1-4094。
ethernet-type为配置匹配的报文类型,0x0600-0xFFFF
precedence-value为ip报文中tos中优先级字段(tos的5-7位),0-7.
dscp-value为ip报文中的tos中dscp字段(tos的2-7位),0~63。
tos-value为ip报文中的tos中代表延迟、吞吐量、可靠性和花费字段(tos的1-4位),0~15。
diffserv-value为Ip报文中整个tos字段8位,0-255.
Ip-access-list为配置匹配的ip访问列表名称,1-20个字符。
Ipv6-access-list为配置匹配的ipv6访问列表名称,1-20个字符。
Mac-access-list为配置匹配的MAC访问列表名称,1-20个字符。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
1.3.13 配置QoS策略映射匹配数据流的动作
定义数据流的动作是指正对符合过滤规则的数据流采取相应的动作,具体包括带宽限制,丢弃,更新头的相关域等动作。
进入特权模式下按照下面所示的步骤配置策略的匹配数据流动作,该动作将覆盖上次的配置。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no]policy-map name
|
进入QoS策略表配置模式。
name为该策略的名称 。
|
action{seq seq-num | bandwidth max-band | {cir commit-band {bc commit-burst-size {ebs excess-burst-size | eir eir-band ebs excess-burst-size} } | [conform {forward | dscp dscp-value} | exceed {forward | drop | dscp dscp-value | discardable {green | yellow | red}} | violate {forward | drop | dscp dscp-value | discardable {green | yellow | red}}]} | cos cos | drop | dscp dscp-value | precedence precedence-value | forward | icos icos | ivlan {add ivlanid | del ivlanid | ivlanid} | cpicos | mac mac-addr | monitor session-value | queue queue-value | redirect interface-id | stat-packet | stat-byte | vlanID { add vlanid | vlanid }|copy-to-cpu{{bandwidth max-band | {cir commit-band {bc commit-burst-size {be peak-burst-size | pir pir-band } } | [conform {forward | dscp dscp-value} | exceed {forward | drop | dscp dscp-value | discardable {green | yellow | red}} | violate {forward | drop | dscp dscp-value | discardable {green | yellow | red}}]} | cos cos | drop | dscp dscp-value | precedence precedence-value | forward | icos icos | ivlan {add ivlanid | del ivlanid | ivlanid} | cpicos | mac mac-addr | monitor session-value | queue queue-value | redirect interface-id | stat-packet | stat-byte | vlanID { add vlanid | vlanid }}}
no action {seq seq-num | bandwidth | cir | cos | drop | dscp | precedence | forward | icos | ivlan | cpicos | mac | monitor | queue | redirect | stat-packet | stat-byte | vlanID}
|
seq-num为指定条目序号
Max-band占用的最大带宽,1-163840单位64Kbps。
配置policing:
cir commit-band 保证带宽1-163840单位64Kbps;
bc commit-burst-size突发数据包大小0-4096单位Kb;
ebs peak-burst-size峰值突发大小 4-4096单位Kb;
eir pir-band 峰值带宽1-163840单位64Kbps;
conform {forward | dscp dscp-value} 保证带宽动作,forward 不执行任何动作,dscp修改dscp值,0-63;
exceed {forward | drop | dscp dscp-value}带宽大于cir小于pir的动作,forward不执行任何动作,drop丢弃,dscp修改dscp值,0-63;
violate {forward | drop | dscp dscp-value}带宽大于pir的动作,forward不执行任何动作,drop丢弃,dscp修改dscp值,0-63;cos设置匹配流的cos字段为cos-value 0~7。
drop丢弃匹配的报文
dscp-value设置匹配流的dscp字段,0~63。
Precedence-value设置匹配流ip报文中tos的优先级字段(tos的5-7位)。0-7.
forward不对匹配报文进行任何操作。
icos设置匹配流的内层cos字段为cos-value 0~7。
ivlanid设置替换、添加或删除内层vlanid,1-4094.
cpicos设置将外层cos替换成内层cos值。
mac-addr设置目的mac地址。
session-value设置镜像,1-4。
queue-value设置映射队列,1-8.
Interface-id重新定向匹配流的出口。
Stat-packet统计数据包数。
Stat-byte统计字节数。
vlanID设置替换或添加外层vlanid,1-4094。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
1.3.14 配置扩展QinQ功能
扩展的QinQ功能其实是采用Qos功能对传统的QinQ功能的扩展实现,较之传统的QinQ功能只能对源报文的vlan ID讯息进行匹配和操作的情况下进行了改进,扩展的QinQ功能可以对流入交换机的报文的mac地址,IP地址,COS值等更多的信息进行匹配操作,并且在对于报文vlan tag的处理方式上,具有更多的可操作性。
当基于Qos实现的QinQ功能和传统的QinQ功能发生冲突时,前者拥有更高的优先级。
命令
|
目的
|
config
|
进入全局配置模式。
|
[no]policy-map name
|
进入QoS策略表配置模式。
name为该策略的名称 。
|
[no]classify {ip access-list-name | dscp dscp-value | mac mac-access-name | vlan vlan-id | ivlan vlan-id | icos cos | cos cos | any }
|
配置QoS策略表的匹配数据流。
access-list-name为配置匹配的IP访问列表名称;
dscp-value为IP报文中的diffserv字段;
mac-access-name为配置匹配的MAC访问列表名称;
vlan-id为配置匹配的VLAN的ID;
cos为配置匹配的COS值;
any表示匹配任意数据包 ;
ivlan和icos在开启dot1q—tunnel功能后用来匹配报文的vlan和cos值;
|
action {bandwidth max-band | cos cos-value | dscp dscp-value | vlanID { add } vlan-id | icos cos-value | ivlanID { add } vlan-id | redirect interface-id | drop | stat | monitor| forward }
|
配置QoS策略表的匹配数据流策略 。
max-band为数据流所允许占用的最大带宽。
cos-value表示设置匹配流的cos字段为
cos-value
dscp-value表示设置匹配流的dscp字段为dscp-value;
interface-id为重新定向匹配流的出口;
drop表示丢弃配置的报文。
stat表示交换机统计相应的匹配流的信息。
monitor表示将该数据包发送到镜像端口。
Forward表示不对报文进行任何操作。
vlanID和Inner用于在dot1q—tunnel功能开启以后,分别用于对报文的内外层tag中的vlanid或cos值进行操作。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
1.3.15在端口上应用QoS策略
可以将QoS策略具体应用到某个端口上,同一个端口可以应用多个策略,同一个策略也可以应用到多个端口上。同一端口上应用的策略,先应用的优先级比较高,后应用的优先级比较低,即如果报文同时匹配两条策略并且动作冲突的话,以先匹配的策略的动作为准。当端口上应用了策略之后,交换机会在该端口上默认添加一个阻塞其它没有允许通过的数据流的策略,当端口上所有策略删除时,交换机会自动将端口上的默认阻塞策略去掉。
进入特权模式下使用下面的命令在端口上应用QoS策略。
命令
|
目的
|
config
|
进入全局配置模式。
|
interface g1/1
|
进入要配置的端口下。
|
[no] qos policy name { ingress|egress}
|
在该端口上应用QoS策略。
name为QoS策略映射名称;
ingress表示对入口起作用。
egress表示对出口起作用。
|
exit
|
退回到全局配置模式。
|
exit
|
退回到管理配置模式。
|
1.3.16 在全局应用QoS策略
可以将QoS策略应用到线卡上。通过在全局配置态实现。
进入特权模式下使用下面的命令在线卡上应用QoS策略。
命令
|
目的
|
config
|
进入全局配置模式。
|
qos policy name slot slot-id { ingress|egress}
no qos policy name slot slot-id
|
在该端口上应用QoS策略。
name为QoS策略映射名称;
Slot-id表示线卡所在槽位号;
ingress表示对入口起作用。
egress表示对出口起作用。
|
exit
|
退回到管理配置模式。
|
1.3.17显示QoS策略映射表
可以通过show命令显示所有或者指定的QoS策略映射表。
进入特权模式下使用下面的命令显示QoS策略映射表。
命令
|
目的
|
show policy-map {policy-map-name | interface [interface-id] | slot slot-id}
|
显示所有或者指定的QoS策略映射表。
policy-map-name为策略映射表名称。
Interface-id为端口号。
Slot-id为线卡所在槽位号。
|
1.4 QoS配置示例
1.4.1 在端口上应用QoS策略示例
在端口g1/2上配置把报文cos值改为2的策略:
ip access-list extended ipacl
permit ip 192.168.20.2 255.255.255.255 192.168.20.210 255.255.255.255
policy-map pmap
classify ip ipacl
action cos 2
interface g1/2
qos policy pmap ingress
1.4.2 在端口上应用QoS策略示例
网络环境:
功能需求:
基于灵活QINQ功能,同一QINQ端口需封装不同外层标签。其中IP网业务VLAN1101-2000,需要封装标签为3002;IPTV业务VLAN2101-3000,需要封装标签为3001;QINQ端口还需透传单层业务VLAN3101-4000支持VPN业务。下联口为G2/1,G2/2,G2/3聚合端口。
QinQ配置在LS48GT上, GigaEthernet2/1,2/2,2/3聚合作为下连口,GigaEthernet2/16作为上连口。相关配置如下:
policy-map pppoe
classify ivlan 1101 - 2000
action vlanID add 3002
!
policy-map iptv
classify ivlan 2101 – 3000
action vlanID add 3001
!
interface Port-aggregator1
switchport mode trunk
switchport pvid 2
switchport trunk vlan-untagged 3001,3002
!
interface GigaEthernet 2/1
switchport mode trunk
switchport pvid 2
switchport trunk vlan-untagged 3001,3002
aggregator-group 1 mode static
qos policy iptv ingress
qos policy pppoe ingress
!
interface GigaEthernet 2/2
switchport mode trunk
switchport pvid 2
switchport trunk vlan-untagged 3001,3002
aggregator-group 1 mode static
qos policy iptv ingress
qos policy pppoe ingress
!
interface GigaEthernet 2/3
switchport mode trunk
switchport pvid 2
switchport trunk vlan-untagged 3001,3002
aggregator-group 1 mode static
qos policy iptv ingress
qos policy pppoe ingress
!!
interface GigaEthernet2/16
switchport mode dot1q-tunnel-uplink
switchport pvid 3
switchport trunk vlan-untagged 2
!
dot1q-tunnel
vlan 1-3, 3000-3002,3101 - 4000