Catalyst 3550 交换机的Tail Drop
Tail Drop是3550交换机的千兆端口上的缺省的管理机制。每个千兆端口可以有两个尾部极限值。每个Tail Drop极限值所标识的整套的DSCP 使用同样的DSCP极限值映射表,本文档的WRED章节已经定义。当达到极限值,所有的数据包都将被丢弃的极限值。使用下面命令配置尾部丢弃极限值:
(config-if)# wrr-queue threshold-percentage2
threshold
queue-id
threshold-percentage1
下面的配置示例定义了Q1的尾部丢弃极限值1 = 50%,极限值2 = 100%,以及极限值1 = 70% 和极限值2 = 100%
Switch(config-if)# wrr-queue threshold 1 50 100
Switch(config-if)# wrr-queue threshold 2 70 100
Switch(config-if)# wrr-queue threshold 3 60 100
Switch(config-if)# wrr-queue threshold 4 80 100
配置千兆端口上的队列大小
3550 交换机使用中央缓存。这意味着每个端口上没有固定的缓存大小。
但是,千兆端口上的固定数量的数据包可以被排列。这些数量固定为4096。缺省的,千兆端口上的每个队列可以达到1024个数据包,而不管包的大小。可以使用下面的命令更改这4096个数据包在四个队列中的分配:
wrr-queue queue-limit Q_size1 Q_size2 Q_size3 Q_size4
如下例所示:
3550(config)# interface gigabitethernet0/1
3550(config-if)# wrr-queue queue-limit 4 3 2 1
这些队列的大小参数是相关的,上例表示队列Q1的数据包大小是Q4的4倍,Q2是Q4的3倍,Q3是Q4的2倍。4096个数据包被重新分配如下:
. Q1 = [4 /(1+2+3+4) ] * 4096 = 1639 packets
. Q2 = 0.3 * 4096 = 1229 packets
. Q3 = 0.2 * 4096 = 819 packets
. Q1 = 0.1 * 4096 = 409 packets
下面的命令可以显示四个队列中分割的缓冲区之间相关的权值:
cat3550# sh mls qos int buffers
GigabitEthernet0/1
Notify Q depth:
qid-size 1 - 4 2 - 3 3 - 2 4 - 1
...
你也可以使用下面的命令来察看每个队列中还保持了多少空闲的数据包:
(config-if)# sh mls qos int gig x/x stat
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1639
2 : 0 0 1229
3 : 0 0 819
4 : 0 0 409
3550交换机QoS时序及队列讨论(三)
3550交换机QoS时序及队列讨论(三) 作者:lion_dong 发文时间:2004.07.13
空闲队列的计数参数是动态的。空闲计数根据最大的队列大小减去当前队列中数据包的数量得出。例如,当前有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,可以使用下面的命令: