3550交换机QoS时序及队列讨论(三)
空闲队列的计数参数是动态的。空闲计数根据最大的队列大小减去当前队列中数据包的数量得出。例如,当前有39个数据包在Q1中,则有1600个空闲的数据包,如下所示:
(config-if)# sh mls qos int gig x/x stat
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1600
2 : 0 0 1229
3 : 0 0 819
4 : 0 0 409
非千兆端口的队列治理和队列大小
10/100M端口上没有提供队列治理机制(WRED或者具有两个极限值得Tail Drop)。所有的队列都采用先进先出(FIFO)的方式。也不像千兆端口那样最大可预留4096个数据包。10/100M端口在每个队列中存储数据包,直到由于资源本身匮乏为止。可以为每个队列保留一个最小数量的数据包。缺省情况下,最小值设定为每个队列100个数据包。你可以通过定义一个不同的最小预留值并且将值分配到每个队列来更改队列中的最小预留值。
需要执行以下的步骤:
1. 为每个全局性的最小预留值分配缓冲区大小;
通过下面的命令可以配置8个不同的最小预留值中的一个最大值:
(Config)# mls qos min-reserve min-reserve-level min-reserve-buffersize
这些最小预留值是交换机的全局属性。缺省时,所有的预留值设定为100个数据包。
例如,要配置1级最小预留值为150个数据包以及2级最小预留值为50个数据包,使用下面的命令:
nifnif(config)#mls qos min-reserve ?
<1-8> Configure min-reserve level
nifnif(config)#mls qos min-reserve 1 ?
<10-170> Configure min-reserve buffers
nifnif(config)#mls qos min-reserve 1 150
nifnif(config)#mls qos min-reserve 2 50
2. 为每个队列分配一个最小预留值。
每个队列都需要被分配一个最小预留值,以明确该队列的缓冲区使用情况。缺省时,表现为以下情形:
¨ Q1 被分配最小预留值级别1.
¨ Q2 被分配最小预留值级别2.
¨ Q3 被分配最小预留值级别3.
¨ Q4 被分配最小预留值级别4.
缺省情况下,所有的最小预留值设定为100。
可以使用端口命令为每个队列分配不同的最小预留值:
(config-if)# wrr-queue min-reserve queue-id min-reserve-level
例如,为Q1分配最小预留值2,为Q2分配最小预留值1,可以使用下面的命令:
nifnif(config)#int fas 0/1
nifnif(config-if)#wrr-queue min-reserve ?
<1-4> queue id
nifnif(config-if)#wrr-queue min-reserve 1 ?
<1-8> min-reserve level
nifnif(config-if)#wrr-queue min-reserve 1 2
nifnif(config-if)#wrr-queue min-reserve 2 1
最小预留值的使用情况可使用下面命令进行验证:
nifnif#sh mls qos int fas 0/1 buffers
FastEthernet0/1
Minimum reserve buffer size:
150 50 100 100 100 100 100 100
!--- Showing the value of all eight min-reserve level.
Minimum reserve buffer level select:
2 1 3 4
!--- Showing the min-reserve level assigned to
!--- each 队列 (from Q1 to Q4).
结束语
在3550交换机上配置队列及时序需要采用下列步骤:
1. 为每个队列分配相应的服务类别(CoS)
2. 根据需要,启用绝对优先级队列
3. 分配WRR权值,重点考虑队列中期望的数据包大小。
4. 更改队列大小(仅限于千兆端口)
5.启用队列治理机制(Tail Drop或者WRED,仅限于千兆端口)
适当的队列及时序安排可以减少语音/视频数据流的延迟及偏移,避免重要的数据丢失。确信坚持以下的指导以获得最大的时序性能。
· 使用可信的或者非凡的标记对网络中的流量进行分类;
· 修正超标的数据流。