拥塞管理

qos的策略在拥塞管理技术体现出来,而对于拥塞的管理方法就是排队,也就是我们说的队列技术。

队列技术的原理就是使报文在路由器中按一定的策略暂时缓存到队列中,然后再按一定的调度策略把报文从队列额中取出再接口上发送出去,常见的队列技术有很多,但是注意,这些队列技术在接口中只能使用一个。

队列技术都用在出方向。

先进先出队列fifo

fifo队列,不对报文进行分类,当报文进入接口的速度大于接口能发送的速度时,fifo按报文到达接口的先后顺序让报文进入队列。

其实fifo并不能算是真正 意义上的qos队列技术,因为它并没有对数据包进行任何调度,除了速率小于2mbps的串行接口以外的所有接口,默认都使用fifo队列机制

优先级队列pq

pq可以根据ip报文的优先级/dscp等条件进行分类,最多分成4类,

pq的4个队列分别为高优先队列、中优先队列、正常优先队列和低优先队列、他们的优先级一次降低。

pq一个非常显著地特点是:如果高优先级的队列没有发送完成,低优先级的数据将永远不会发送

pq的深度是20、40、60、80.

配置pq

定义优先级列表,可以基于协议或基于进站接口:

基于协议定义此类型协议的优先级:

cisco(config)#priority-list list-number protocol

protocol-name{high | medium | normal | low}

基于进站接口进来的流量定义它的优先级:

config(config)#priority-list list-number interface

interface-type interface-number{high | medium | normal | low}

定义默认的优先级队列,未分配的流量默认被分配进该队列,优先级默认normal:

cisco(config)#priority-list {list} default

{high | medium | normal | low}

定义每个队列中数据包的最大个数,由高到底默认20,40,60和80.可以更改

cisco(config)#priority-list {list} queue-limit {high-limit medium-limit normal-limit low-limit}

把优先级列表应用到接口上

cisco(config-if)#priority-group { list }

自定义队列cq

cq对报文分成最多16类,实际上队列的号码是0-16一共17个,0号队列是超级有限队列,路由器总是先处理0号队列,然后才处理1到16 队列,所以0号队列一般作为系统队列。1到16队列可以定义他们占用接口带宽的比例。

CQ

cq使用中存在一些限制:

1、由于cq是静态配置的,因此它不能适应网络结构的改变。

2、由于数据包要经过处理器卡的分类,因此cq对数据包转发的速度要比fifo慢些

配置cq

queue-list 1 protocol ip 1 tcp telnet

queue-list 1 protocol ip 2 list 100

queue-list 1 protocol ip 3 udp 53

queue-list 1 interface ethernet 0/0 4

queue-list 1 queue 1 byte-count 3000

queue-list 1 queue 2 byte-count 4500

queue-list 1 queue 3 byte-count 3000

queue-list 1 queue 4 byte-count 1500

queue-list 1 default 4

interface serial 2/1

ip unnumberedd loopback 0

custom-queue-list 1

access-list 100 permit tcp host 10.0.0.1 any eq http

show queueing custom

加权公平队列(wfq)

wfq对报文按流进行分类,每一个流被分配到一个队列。

wfq尽量将不同的流分入不同的队列,队列数目可以配置。

在出站的时候,wfq按流的ip优先级来分配应占有出口的带宽。

优先级的数值越小所得的带宽越少,数值越大所得的带宽越多。

这样保证了相同优先级业务之间的公平,提现了不同优先级业务之间的权重。

wfq队列是在传输速率小于2m的串行链路默认的队列机制。

配置wfq

interface serial 0

fair-queue 100队列深度丢弃阀值 500队列数 20预留 默认64 256 0

show queueing fair

基于类的加权公平队列cbwfq

可以简单的理解为一个llq+64个wfq

和wfq基于相同的调度机制,

报文的权重可以手工指定,

可以很简单的为某类的报文流指定保证的带宽

基于mqc的进行配置

用bandwidth命令直接指定每个类的最小带宽,

cbwfq不支持

多链路ppp(mlp),拨号接口

隧道,以太网子接口

配置cbwfq

class-map premium

match acess-group 150

class-map low-priority

match protocol napster

policy-map cbwfq-sample

class premium

bandwidth 512

class low-priority

shape average 128

shape peak 512

class class-default

fair-queue 64

interface serial 2/1

ip unnumbered loopback 0

max-reserved-bandwidth 85

service-policy output cbwfq-sample

access-list 150 permit ip host 10.0.0.1 any

rtp优先队列

只针对udp报文,因为语音,视频等等对延迟,抖动敏感的流量都是基于udp

只能是在配置的范围内的udp端口的报文可以进入rtp队列

设定上限,通过流量测量和监管

多余的报文也会遭到丢弃

rtp pq的优先级高于llq

rtp优先队列用于解决实时业务包括语音与视频业务服务资粮的简单队列技术。

在所有队列中,它的优先级最高。

rtp配置

interface serial 2/1

ip unnumbered loopback 0

ip rtp priority 16384 16383 256

拥塞避免

传统的尾丢包,在网络发生拥塞时对后来的报文并不加以区分,而是全部丢弃

导致了tcp慢启动,全局同步化

拥塞避免:在网络没有发生拥塞以前根据队列状态进行有选择性的丢包

red处理

red有三种处理状态:

不丢弃--当队列深度小于minimum threshold(最小的界限开始)

随即丢弃--当队列深度在minimum和maximum threshold之间时

尾部丢弃--当队列深度大于maximum threshold时

随即丢弃可以有效的预防拥塞的产生还可以推迟尾部丢弃到来的时间

wred

为不同ip优先级dscp设定不同的队列长度、队列阀值、丢弃概率

wred可以再接口上配置

可以再policy上进行配置,可以基于precedence进行red,也可以基于dscp值进行red。

配置wred

policy-map avoid

class gold

handwidth percent 50

random-detect

class bronze

bandwidth percent 15

random-detect dscp-based

random-detect dscp af31 20 40 10

random-detect dscp af32 20 40 20

random-detect dscp af33 20 40 30

基于接口的配置

interface serial 0/0

ip address 200.200.14.250 255.255.255.252

random-detect

random-detect precedence 0 10 25 10

random-detect precedence 1 20 35 10

random-detect precedence 2 15 25 10

random-detect precedence 3 25 35 10

random-detect precedence 4 1 2 1

random-detect precedence 5 35 40 10

random-detect precedence 6 30 40 10

random-detect precedence 7 30 40 10