QoS中的队列机制
常见的几种队列机制:
1.先进先出(FIFO).
2.加权公平队列(WFQ).
3.基于分类的加权公平队列(CBWFQ).
4.自定义队列(CQ).
5.优先级队列(PQ).
注意,一个只能使用一种队列机制.
Pt.2 FIFO Queueing
FIFO Queueing Overview
FIFO队列机制也叫先到先服务(FIFS)队列机制.这种队列机制不提供优先级和流量分类的特性.并且只有一个队列,所有的包被公平的对待.包 按抵达接口的先后顺序被转发出去.当没有使用其他的队列机制时,除了传输速率大于2.048Mbps的串行接口以外的所有接口,默认都使用这种队列机制.
Pt.3 Weighted Fair Queueing
WFQ Overview
WFQ是一种对网络中所有流量提供公平的带宽分配的动态调度方式.WFQ根据权重,优先级来鉴别流量,把它加入到某个队列里,并决定队列之间的带宽分
配.WFQ采用基于流是算法,该算法把交互式的流量同时调度到队列的最前端来减少响应时间,并公平的分配剩余的带宽.当拥塞信息产生的时候,高带宽的数据
流的信息将被丢弃;而低带宽的数据流的信息仍然被加到队列中.WFQ是传输速率低于2.048Mbps的串行接口默认的队列机制.帧中继的FE
位,FECN位,和BECN位将影响WFQ权重的分配.
Restrictions
WFQ的一些限制:
1.WFQ不支持隧道接口或采用了加密技术的接口,因为这些技术要修改数据包中WFQ用于分类的信息.
2.WFQ提供的带宽控制的精确度不如CBWFQ和CQ等队列机制.
Bandwidth Allocation
对于IP优先级高的队列,WFQ会分配更多的带宽给它.WFQ还给每个数据流分配权重,来决定这些队列的转发顺序.权重低的优先被转发.Cisco IOS软件把IP优先级做为除数,得到的值就是权重.
WFQ对每个队列的带宽分配的方式,由权重来决定,而权重又取决于IP优先级.公式为:
队列的带宽分配百分比=(该队列IP优先级+1)/(所有队列的IP优先级+1)
RSVP使用WFQ来分配缓冲区空间和对数据包进行调度,并保证了对数据流带宽的保留.RSVP允许对应用程序所使用的带宽的保留.RSVP是IP网络中 唯一的提供端到端的信令标准的协议.
Configuring WFQ
接口下启用WFQ:
Aiko(config-if)#fair-queue
Monitoring Fair Queueing
一些辅助性的命令:
1.显示公平队列的配置状态:
Aiko#show queueing fair
2.显示接口的队列信息:
Aiko#show queue [interface]
Pt.4 Class-Based Weighted Fair Queueing
CBWFQ Overview
CBWFQ是WFQ的扩展,根据用户自己定义的类别把数据包进行分类,再加到某个队列中去.当每个队列中数据包的数目达到上限的时候,队列将采用尾丢弃的 方式将这些数据包丢弃;或者根据每个类的策略,进行数据包的丢弃.
CBWFQ一般采用尾丢弃的机制,除非你定义了采用加权早期随机检测(WRED)来对超过队列上限的数据包进行丢弃.注意,如果你打算为一个或多个队列采 用WRED而不是采用尾丢弃的方式来进行数据包的丢弃,必须保证应用了服务策略的接口没有配置WRED.
如果在policy
map中是通过bandwidth命令来定义默认的分类,没有划分类的流量将被划分到单独的采用FIFO机制的队列中;如果在policy
map中是通过fair-queue命令来定义默认的分类,没有划分类的流量将以尽力而为的方式被处理;如果没有定义默认的分类,那么所有流量将被以尽力
而为的方式被处理.并且数据流的方式是基于WFQ的.
Bandwidth Allocation
带宽分配的总和不能超过接口带宽的75%,剩余25%的带宽用于别的负载,比如路由协议的流量,尽力而为的流量.
RSVP也可以和CBWFQ协同工作.当一个接口同时配置了CBWFQ和RSVP,它们之间的工作是独立的.并且当CBWFQ不存在的时候RSVP还是会 继续工作.
Restrictions
CBWFQ的一些限制:
1.目前流量和整形不支持CBWFQ.
2.CBWFQ不支持以太网子接口.
Configuring CBWFQ
配置CBWFQ的3个过程:
1.定义分类的策略,即class map.
2.关联策略,即定义policy map.
3.把policy map应用在相关接口上.
定义class map步骤如下:
1.定义class map:
Aiko(config)#class-map [match-all|match-any] {map-name}
2.定义匹配语句:
Aiko(config-cmap)#{condition}
一些条件选项:
命令
含义
match access-group {ACL}
匹配IP ACL
match protocol {protocol}
匹配协议
match input-interface {interface}
匹配进站接口
match qos-group {Group ID}
匹配组ID
match destination-address {mac MAC-address}
匹配目标MAC地址
match source-address {mac MAC-address}
匹配源MAC地址
match ip {dscp dscp}
匹配IP DSCP值
match ip {precedence precedence}
匹配IP优先级
match class-map {map-name}
匹配class map
定义分类的策略,即policy map的步骤如下:
1.设置policy map:
Aiko(config)#policy-map {policy-name}
2.调用class map或默认的class-map(所有未分类的流量默认都属于该分类,否则未分类的流量将以尽力而为的方式被处理):
Aiko(config-pmap)#class {class-map|class-default}
3.设置策略:
Aiko(config-pmap-c)#bandwidth {kbps|percent percent}
4.定义尾丢弃机制允许的队列中数据包的上限,默认值为64:
Aiko(config-pmap-c)#queue-limit {packets}
在接口上应用policy map:
Aiko(config-if)#service-policy output {policy-name}
Example 1
限制源自192.168.10.0的流量的带宽为1000kbps:
!
class-map match-all aiko
match access-group 1
!
policy-map asuqa
class aiko
bandwidth 1000
queue-limit 30
class class-default
!
interface Serial1
ip address 172.16.10.1 255.255.255.252
service-policy output asuqa
!
access-list 1 permit 192.168.10.0
!
Configuring the Bandwidth Limiting Factor
更改用于RSVP和CBWFQ等队列机制保留的最大带宽值(默认为75%):
Aiko(config-if)#max-reserved-bandwidth {percent}
Verifying Configuration of Policy Maps and Their Classes
一些辅助性的命令:
1.查看policy map信息:
Aiko#show policy-map [policy-name]
2.查看接口的policy map信息:
Aiko#show policy-map interface [interface]
3.显示接口的队列信息:
Aiko#show queue [interface]
Pt.5 IP RTP Priority
IP RTP Priority Overview
IP实时传输协议(RTP)优先级对延迟比较敏感的数据流,比如语音数据,提供了优先级队列机制的特性.该特性表示如果某些数据包存在于优先级队列中,它
们的出列顺序将优先于别的队列中的数据包.IP
RTP优先级特性无需知道语音呼叫的端口号,它提供了鉴别放进优先级队列中的数据流的端口号范围的能力.并且你可以定义整个用于语音数据流的端口范围
(UDP端口号16384到32767),来保证所有的与语音数据流都可以得到优先级服务.IP
RTP优先级特性对带宽低于1.544Mbps的链路尤为有用.
IP RTP优先级特性可以和使用了WFQ或CBWFQ的出站接口结合使用.匹配IP RTP优先级某个端口范围的数据包将优先于别的CBWFQ分类.
一般语音数据包的体积较小,如果有体积较大的数据包要从该接口被转发出去,该接口应配置链路分片和交叉(LFI)特性.体积较大的数据包被分片为体积较小
的数据包.该特性防止语音数据包要等待到体积较大的数据包被转发完毕之后才能被转发,这样语音数据包可以和被分片的数据包交叉被转发出去,从而减少了语音
数据包转发消耗的时间.
Configuring IP RTP Priority
配置IP RTP优先级:
Aiko(config-if)#ip rtp priority {starting-rtp-port-number port-number-range} {bandwidth}
Monitoring and Maintaining IP RTP Priority
一些辅助性的命令:
1.显示接口队列信息:
Aiko#show queue [interface]
2.调试优先级队列:
Aiko#debug priority
Pt.6 Low Latency Queueing
LLQ Overview
低延迟队列(LLQ)把优先级队列的特性加入到了CBWFQ中,这点和IP
RTP优先级特性类似.如果没有LLQ,对于一些实时的数据流量,比如语音数据流量,CBWFQ对于每个定义好的分类的操作是基于WFQ的,采用了LLQ
之后,该分类的操作将优先于别的分类.LLQ减少了语音会话的抖动.LLQ和IP RTP优先级特性的区别在于,它不受UDP端口号的限制.
Configuring LLQ
配置LLQ:
Aiko(config-pmap-c)#priority {bandwidth}
Monitoring and Maintaining LLQ
一些辅助性的命令:
1.显示接口队列信息:
Aiko#show queue [interface]
2.调试优先级队列:
Aiko#debug priority
Pt.7 Custom Queueing
CQ Overview
自定义队列(CQ)可以自定义16个队列,为每个队列定义一定字节数的数据包,这些被定义好的数据包采用轮循的方式被转发.当接口启用了CQ之后,队列0
为系统队列,系统队列为优先级最高的队列,当系统队列中的数据包全部被转发完毕之后,接下来才会轮到自定义队列(队列1到16).自定义队列中的数据包也
按照队列号顺序被转发,当队列为空或超出本次队列允许发送的数据包时,接下来会轮到下一个队列.
Determining Byte Count Values for Queues
为了能够为每个队列分配一定的带宽,必须为每个队列定义一定字节数的数据包.自定义队列中的数据包也按照队列号顺序被转发,当队列为空或超出本次队列允许
发送的数据包时,接下来会轮到下一个队列.但是假如定义的字节数为100字节,而某个数据包的大小为1024字节,那么该队列每次将转发的数据包的大小即
为1024字节,而不是100字节.
假如有3个队列,每个队列中的数据包大小分别为500字节,300字节和200字节,如果想让这3个队列平均的占用带宽,为这3个队列定义的字节数分别为
200字节,200字节和200字节,但是实际上生效的带宽占用比为5/3/2.因此如果把队列中数据包的字节数定义的过小的话,将导致带宽分配的不尽如
人意.但是如果把队列中数据包的字节数定义的过大,那么将导致下一个队列中的数据包被转发的等待时间过长.
Restrictions
CQ的一些限制:
1.由于CQ是静态配置的,因此它不能适应网络结构的改变.
2.由于数据包要经过处理器卡的分类,因此CQ对数据包转发的速度要比FIFO慢.
Configuring CQ
配置CQ的步骤如下:
1.定义CQ列表:
Aiko(config-if)#custom-queue-list {list}
2.定义队列中数据包的字节数或最大个数,默认为20个.可选:
Aiko(config)#queue-list {list} queue {queue-number} {limit number|byte-count bytes}
3.把数据包分配进特定的CQ中,可以基于协议或基于进站接口:
Aiko(config)#queue-list {list} {protocol protocol|interface interface} {queue-number}
4.定义默认的CQ队列,未分类的流量默认被分配进该队列:
Aiko(config)#queue-list {list} default {queue-number}
Monitoring CQ Lists
一些辅助性的命令:
1.显示接口队列信息:
Aiko#show queue [interface]
2.显示CQ列表信息:
Aiko#show queueing custom
Pt.8 Priority Queueing
PQ Overview
优先级队列(PQ)通过为队列指定优先级,根据优先级对队列中的数据包进行转发.当优先级最高的队列为空时,接下来对优先级次高的队列进行处理.
4个优先级类别:
1.high.
2.medium.
3.normal.
4.low.
未指定优先级的数据包默认属于normal队列.
Restrictions
PQ的一些限制:
1.由于PQ是静态配置的,因此它不能适应网络结构的改变.
2.由于数据包要经过处理器卡的分类,因此PQ对数据包转发的速度要比FIFO慢.
3.PQ不支持隧道接口.
Configuring PQ
配置PQ的步骤如下:
1.定义优先级列表,可以基于协议或基于进站接口:
Aiko(config)#priority-list {list} {protocol protocol|interface interface} {queue-number} {high|medium|normal|low}
2.定义默认的优先级队列,未分类的流量默认被分配进该队列,优先级为normal:
Aiko(config)#priority-list {list} default {high|medium|normal|low}
3.定义每个队列中数据包的最大个数,由高到低,默认为20,40,60和80.可选:
Aiko(config)# priority-list {list} queue-limit {high-limit medium-limit normal-limit low-limit}
4.把优先级列表应用在接口上:
Aiko(config)#priority-group {list}
Monitoring PQ Lists
一些辅助性的命令:
1.显示接口队列信息:
Aiko#show queue [interface]
2.显示PQ列表信息:
Aiko#show queueing priority
阅读(2488) | 评论(0) | 转发(0) |