使用输出调度可确保在出现严重超订用时不会丢弃重要流量。本文讨论在Catalyst 6500/6000交换机上进行输出调度涉及的所有技术和算法。本文档还说明如何在运行Cisco IOS®软件的Catalyst 6500/6000上配置和验证输出调度的操作。
有关加权随机早期检测(WRED)、加权轮询(WRR)和尾部丢弃的详细信息,请参阅运行CatOS系统软件的Catalyst 6500/6000系列交换机上的QoS输出调度。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
输出丢弃是由拥塞的接口导致的。造成这种情况的一个常见原因可能是来自高带宽链路的流量切换到低带宽链路,或来自多个入站链路的流量切换到单个出站链路。
例如,如果有大量数据流突然从千兆输入接口涌入并被切换到 100 Mbps 输出接口上,这可能导致 100 Mbps 接口的输出丢包增加。这是因为流入和流出的带宽之间的速度不匹配,导致接口的输出队列被超额数据流淹没。传出接口上的流量速率无法接受应发送的所有数据包。
为了解决问题,最佳的解决方案是提高线速。但是,如果您不希望提高线路速度,也有用于防止、减少或控制输出丢弃的方法。只有当输出丢弃的是短期突发数据时,可以防止输出丢弃。如果输出丢弃是由恒定高速率流导致的,则无法防止丢弃。但是,您可以对其进行控制。
如果不确定端口的排队功能,请发出show queueing interface {gigabitethernet | fastethernet} mod/port命令。此处显示的是show queueing interface命令的输出行。该端口位于Supervisor引擎1A线卡上:
cosmos#show queueing interface gigabitethernet 1/1 Interface GigabitEthernet1/1 queueing strategy: Weighted Round-Robin QoS is disabled globally Trust state: trust DSCP Default COS is 0 Transmit group-buffers feature is enabled Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 !--- Output suppressed.
输出显示此端口的输出队列类型称为1p2q2t。
查看特定端口上可用的队列类型的另一种方法是发出show interface capabilities命令:
la-orion#show interface gigabitethernet 6/2 capabilities GigabitEthernet6/2 Model: WS-SUP720-BASE Type: No GBIC Speed: 1000 Duplex: full Trunk encap. type: 802.1Q,ISL Trunk mode: on,off,desirable,nonegotiate Channel: yes Broadcast suppression: percentage(0-100) Flowcontrol: rx-(off,on,desired),tx-(off,on,desired) Membership: static Fast Start: yes QOS scheduling: rx-(1p1q4t), tx-(1p2q2t) CoS rewrite: yes ToS rewrite: yes Inline power: no SPAN: source/destination UDLD yes Link Debounce: yes Link Debounce Time: yes Ports on ASIC: 1-2
Catalyst 6500/6000交换机上有几种类型的队列。下表说明了端口QoS架构的表示法:
发送(Tx)/接收(Rx) | 队列表示法 | 队列数量 | 优先级队列 | WRR队列数量 | WRR队列数量及类型阈值 |
---|---|---|---|---|---|
Tx | 2q2t | 2 | — | 2 | 2个可配置尾部丢弃 |
Tx | 1p2q2t | 3 | 1 | 2 | 2个可配置WRED |
Tx | 1p3q1t | 4 | 1 | 3 | 1个可配置WRED |
Tx | 1p2q1t | 3 | 1 | 2 | 1个可配置WRED |
Rx | 1q4t | 1 | — | — | 4个可配置尾部丢弃 |
Rx | 1p1q4t | 2 | 1 | 1 | 4个可配置尾部丢弃 |
Rx | 1p1q0t | 2 | 1 | 1 | 不可配置 |
Rx | 1p1q8t | 2 | 1 | 1 | 8个可配置WRED |
Tx | 1p3q8t | 4 | 1 | 3 | 8个可配置WRED或尾部丢弃 |
Tx | 1p7q8t | 8 | 1 | 7 | 8个可配置WRED或尾部丢弃 |
Rx | 1q2t | 1 | — | — | 1个可配置尾部丢弃= 1个不可配置 |
Rx | 1q8t | 1 | — | — | 8个可配置尾部丢弃 |
Rx | 2q8t | 2 | — | 2 | 8个可配置尾部丢弃 |
下表列出了接口或端口的Rx和Tx端中的一些模块和队列类型。如果此处未列出模块,请使用show interface capabilities命令确定可用的队列功能。show interface capabilities命令在Catalyst 6500/6000上不同线卡的输出排队功能一节中描述。
module | 接收队列 | 发送队列 |
---|---|---|
WS-X6K-S2-PFC2 | 1p1q4t | 1p2q2t |
WS-X6K-SUP1A-2GE | 1p1q4t | 1p2q2t |
WS-X6K-SUP1-2GE | 1q4t | 2q2t |
WS-X6501-10GEX4 | 1p1q8t | 1p2q1t |
WS-X6502-10GE | 1p1q8t | 1p2q1t |
WS-X6516-GBIC | 1p1q4t | 1p2q2t |
WS-X6516-GE-TX | 1p1q4t | 1p2q2t |
WS-X6416-GBIC | 1p1q4t | 1p2q2t |
WS-X6416-GE-MT | 1p1q4t | 1p2q2t |
WS-X6316-GE-TX | 1p1q4t | 1p2q2t |
WS-X6408A-GBIC | 1p1q4t | 1p2q2t |
WS-X6408-GBIC | 1q4t | 2q2t |
WS-X6524-100FX-MM | 1p1q0t | 1p3q1t |
WS-X6324-100FX-SM | 1q4t | 2q2t |
WS-X6324-100FX-MM | 1q4t | 2q2t |
WS-X6224-100FX-MT | 1q4t | 2q2t |
WS-X6548-RJ-21 | 1p1q0t | 1p3q1t |
WS-X6548-RJ-45 | 1p1q0t | 1p3q1t |
WS-X6348-RJ-21 | 1q4t | 2q2t |
WS-X6348-RJ21V | 1q4t | 2q2t |
WS-X6348-RJ-45 | 1q4t | 2q2t |
WS-X6348-RJ-45V | 1q4t | 2q2t |
WS-X6148-RJ-45V | 1q4t | 2q2t |
WS-X6148-RJ21V | 1q4t | 2q2t |
WS-X6248-RJ-45 | 1q4t | 2q2t |
WS-X6248A-TEL | 1q4t | 2q2t |
WS-X6248-TEL | 1q4t | 2q2t |
WS-X6024-10FL-MT | 1q4t | 2q2t |
本节介绍在运行Cisco IOS软件的Catalyst 6500/6000上配置输出调度所需的所有步骤。有关Catalyst 6500/6000默认配置,请参阅案例1:QoS已启用,并且使用了默认参数部分。
配置Catalyst 6500/6000意味着以下五个步骤:
配置WRR权重(可选)
配置分配给每个队列的缓冲区(可选)
配置每个队列的阈值级别(可选)
注:除步骤1外,这些步骤均为可选步骤。您可以决定保留一个或多个参数的默认值。
首先,启用QoS。请记住,QoS默认值禁用。禁用QoS后,您配置的CoS映射不会影响结果。有一个队列以先进先出(FIFO)方式提供服务,所有数据包都会在此丢弃。
cosmos#configure terminal Enter configuration commands, one per line. End with CNTL/Z. cosmos(config)#mls qos QoS is enabled globally Microflow policing is enabled globally QoS global counters: Total packets: 552638 IP shortcut packets: 0 Packets dropped by policing: 0 IP packets with TOS changed by policing: 0 IP packets with COS changed by policing: 0 Non-IP packets with CoS changed by policing: 0
对于所有队列类型,将CoS分配到队列和阈值。为2q2t类型的端口定义的映射未应用于任何1p2q2t端口。此外,2q2t的映射应用于具有2q2t排队机制的所有端口。在接口下发出以下cos-map命令:
wrr-queue cos-map Q_number_(1-2) threshold_number_(1-2) cos_value_1 cos_value_2 priority-queue cos-map Q_number_(always 1) cos_value_1 cos_value_2
注意:这些命令应位于一行。
您可以单独配置WRR队列。如果存在优先级队列,可以使用priority-queue命令对其进行配置。
注意:队列始终从可能的最低优先级队列开始编号,以可用的严格优先级队列结束。例如:
队列1是低优先级WRR队列。
队列2是高优先级WRR队列。
队列3是严格优先级队列。
对所有类型的队列重复此操作,否则默认CoS分配将保留。以下是1p2q2t的示例配置:
cosmos#configure terminal cosmos(config)#interface gigabitethernet 1/1 cosmos(config-if)#priority-queue cos-map 1 5 !--- Assign a CoS of 5 to priority queue. cos-map configured on: Gi1/1 Gi1/2 cosmos(config-if)#wrr-queue cos-map 1 1 0 1 !--- Assign CoS 0 and 1 to the first threshold of low-priority WRR queue. cos-map configured on: Gi1/1 Gi1/2 cosmos(config-if)#wrr-queue cos-map 1 2 2 3 !--- Assign CoS 2 and 3 to the second threshold of low-priority WRR queue. cos-map configured on: Gi1/1 Gi1/2 cosmos(config-if)#wrr-queue cos-map 2 1 4 6 !--- Assign CoS 4 and 6 to the first threshold of high-priority WRR queue. cos-map configured on: Gi1/1 Gi1/2 cosmos(config-if)#wrr-queue cos-map 2 2 7 !--- Assign CoS 7 to the first threshold of high-priority WRR queue. cos-map configured on: Gi1/1 Gi1/2
检查配置:
cosmos#show queueing interface gigabitethernet 1/1 !--- Output suppressed. queue thresh cos-map --------------------------------------- 1 1 0 1 1 2 2 3 2 1 4 6 2 2 7 3 1 5 !--- Output suppressed.
配置两个WRR队列的WRR权重。发出以下接口命令:
wrr-queue bandwidth weight_for_Q1 weight_for_Q2
权重1与队列1相关,队列1应是低优先级WRR队列。请始终将此权重保持在比权重2低一个水平。权重可以采用1到255之间的任意值。使用以下公式分配百分比:
排队1 - [权重1 /(权重1 +权重2)]
排队2 - [权重2 /(权重1 +权重2)]
必须定义所有类型队列的权重。这些加权类型不必相同。以下是2q2t的示例,其中队列1的服务时间为20%,队列2的服务时间为80%:
cosmos#configure terminal Enter configuration commands, one per line. End with CNTL/Z. cosmos(config)#interface gigabitethernet 1/1 cosmos(config-if)#wrr-queue bandwidth ? <1-255> enter bandwidth weight between 1 and 255 cosmos(config-if)#wrr-queue bandwidth 20 80 !--- Queue 1 is served 20% of the time, and queue 2 is served !--- 80% of the time. cosmos(config-if)#
检查配置:
cosmos#show queueing interface gigabitethernet 1/1 Interface GigabitEthernet1/1 queueing strategy: Weighted Round-Robin Port QoS is enabled Port is untrusted Default cos is 0 Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 WRR bandwidth ratios: 20[queue 1] 80[queue 2] queue-limit ratios: 90[queue 1] 5[queue 2] !--- Output suppressed.
注意:当无法使用CatOS软件时,您可以为每个接口配置不同的WRR权重。
必须定义传输队列比率。这决定了缓冲区如何在不同队列之间拆分。
wrr-queue queue-limit percentage_WRR_Q1 percentage_WRR_Q2
cosmos(config)#interface gigabitethernet 1/2
cosmos(config-if)#wrr-queue queue-limit 70 15
!--- Queue 1 has 70% of the buffers. !--- Queues 2 and 3 both have 15% of the buffers.
queue-limit configured on: Gi1/1 Gi1/2
注意:如果千兆端口的排队功能为1p1q2t,则需要对严格优先级队列和高优先级WRR队列使用相同的级别。这些级别不能因硬件原因而不同。仅配置两个WRR队列的带宽。如果存在,则自动将相同值用于高优先级WRR队列和严格优先级队列。
某些队列类型的队列大小不可调。例如,1p3q1t(在WS-X6548RJ45上可用)。这些队列类型是固定的,您不能修改它们。
检查配置:
cosmos#show queueing interface gigabitethernet 1/2 Interface GigabitEthernet1/2 queueing strategy: Weighted Round-Robin Port QoS is enabled Port is untrusted Default cos is 0 Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 WRR bandwidth ratios: 5[queue 1] 255[queue 2] queue-limit ratios: 70[queue 1] 15[queue 2]
注意:最好保留低优先级WRR队列缓冲区的最大部分。这是需要启用其他缓冲的队列。其他队列的优先级更高。
最后,配置WRED队列或尾部丢弃队列的阈值级别。此列表提供以下命令:
对于使用WRED作为阈值丢弃机制的队列,请发出以下命令:
wrr-queue random-dtect min-threshold Q_number threshold_1_value threshold_2_value wrr-queue random-dtect max-threshold Q_number threshold_1_value threshold_2_value
注意:这些命令应位于一行。
对于使用尾部丢弃作为丢弃机制的队列,请发出以下命令:
wrr-queue threshold Q_number threshold_1_value threshold_2_value
注意:此命令应位于一行。
配置WRED队列:
cosmos(config)#interface gigabitethernet 1/1 cosmos(config-if)#wrr-queue random-detect min-threshold 1 20 50 !--- This sets the threshold of queue 1 to 20 and 50% minimum threshold !--- configured on Gi1/1 Gi1/2. cosmos(config-if)#wrr-queue random-detect min-threshold 2 20 50 !--- This sets the threshold of queue 2 to 20 and 50% minimum threshold !--- configured on Gi1/1 Gi1/2. cosmos(config-if)#wrr-queue random-detect max-threshold 1 50 80 !--- This sets the threshold of queue 1 to 50 and 80% maximum threshold !--- configured on Gi1/1 Gi1/2. cosmos(config-if)#wrr-queue random-detect max-threshold 2 40 60 !--- This sets the threshold of queue 2 to 49 and 60% maximum threshold !--- configured on Gi1/1 Gi1/2.
尾部丢弃队列的配置:
cosmos(config)#interface fastethernet 3/1 cosmos(config-if)#wrr-queue threshold ? <1-2> enter threshold queue id (1-2) cosmos(config-if)#wrr-queue threshold 1 ? <1-100> enter percent of queue size between 1 and 100 cosmos(config-if)#wrr-queue threshold 1 50 100 !--- This sets the tail drop threshold for this 2q2t interface for !--- queue 1 (low-priority) to 50 and 100% of the buffer. threshold configured on: Fa3/1 Fa3/2 Fa3/3 Fa3/4 Fa3/5 Fa3/6 Fa3/7 Fa3/8 Fa3/9 Fa3/10 Fa3/11 Fa3/12 cosmos(config-if)# cosmos(config-if)# cosmos(config-if)#wrr-queue threshold 2 40 100 !--- This sets the tail drop threshold for this 2q2t interface for !--- queue 2 (high-priority) to 40 and 100% of the buffer. threshold configured on: Fa3/1 Fa3/2 Fa3/3 Fa3/4 Fa3/5 Fa3/6 Fa3/7 Fa3/8 Fa3/9 Fa3/10 Fa3/11 Fa3/12 cosmos(config-if)#
检查配置:
cosmos#show queueing interface gigabitethernet 1/1 Interface GigabitEthernet1/1 queueing strategy: Weighted Round-Robin Port QoS is enabled Port is untrusted Default cos is 0 Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 WRR bandwidth ratios: 20[queue 1] 80[queue 2] queue-limit ratios: 70[queue 1] 15[queue 2] queue random-detect-min-thresholds ----------------------------- 1 20[1] 50[2] 2 20[1] 50[2] queue random-detect-max-thresholds ---------------------------------- 1 50[1] 80[2] 2 40[1] 60[2] cosmos#show queueing interface fastethernet 3/1 Interface FastEthernet3/1 queueing strategy: Weighted Round-Robin Port QoS is enabled Port is untrusted Default cos is 0 Transmit queues [type = 2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 WRR bandwidth ratios: 100[queue 1] 255[queue 2] queue-limit ratios: 90[queue 1] 10[queue 2] queue tail-drop-thresholds -------------------------- 1 50[1] 100[2] 2 40[1] 100[2]
您无法配置阈值并将CoS分配给每个端口的队列。所有的更改都应用到一组连续的端口
千兆线卡的四个端口 — 端口1至4共用,端口5至8共用。
根据1q4t/2q2t排队(1到12、13到24、25到36和36到48),10/100端口或100光纤端口的12个端口。
要确定属于同一ASIC的确切端口,请使用show interface capabilities命令。
要验证端口的当前运行时配置(与输出调度有关),最简单的命令是show queueing interface {gigabitethernet | fastethernet} slot/port命令。此命令显示端口上的队列类型、CoS到不同队列和阈值的映射、缓冲区共享和WRR权重。此处,队列1的WRR为20%,队列2的WRR为80%。该命令还显示输出调度的所有配置信息以及每个阈值在每个队列中丢弃的数据包数:
cosmos#show queueing interface gigabitethernet 1/1 Interface GigabitEthernet1/1 queueing strategy: Weighted Round-Robin Port QoS is enabled Port is untrusted Default COS is 0 Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 WRR bandwidth ratios: 20[queue 1] 80[queue 2] queue-limit ratios: 70[queue 1] 15[queue 2] queue random-detect-max-thresholds ---------------------------------- 1 50[1] 80[2] 2 40[1] 60[2] queue thresh cos-map --------------------------------------- 1 1 0 1 1 2 2 3 2 1 4 6 2 2 7 3 1 5 Receive queues [type = 1p1q4t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 Standard 4 2 Priority 1 queue tail-drop-thresholds -------------------------- 1 100[1] 100[2] 100[3] 100[4] queue thresh cos-map --------------------------------------- 1 1 0 1 1 2 2 3 1 3 4 1 4 6 7 2 1 5 Packets dropped on Transmit: BPDU packets: 0 queue thresh dropped [cos-map] --------------------------------------------------- 1 1 0 [0 1 ] 1 2 0 [2 3 ] 2 1 0 [4 6 ] 2 2 0 [7 ] 3 1 0 [5 ] Packets dropped on Receive: BPDU packets: 0 queue thresh dropped [cos-map] --------------------------------------------------- 1 1 0 [0 1 ] 1 2 0 [2 3 ] 1 3 0 [4 ] 1 4 0 [6 7 ] 2 1 0 [5 ]
此流量注入到Catalyst 6500/6000:
在千兆端口1/2:一千兆流量,优先值为零优先于0的1千兆流量
在千兆端口5/2:
133MB流量,优先级为7
133MB流量,优先于6
133MB流量,优先级为5
133MB流量,优先级为4
133MB流量,优先于三
133MB流量,优先于2
133MB流量,优先于1
每个端口千兆1/1的所有单播流量都会从交换机流出,这非常超订用。
在本例中,show queueing interface gigabitethernet 1/1命令配置所有输出。该命令提供有关输入调度的其他信息。但是,由于本文档仅涵盖输出调度,因此会抑制该输出。
当全局启用QoS且所有默认参数都在使用时,此输出将在几分钟后产生:
nelix#show queueing interface gigabitethernet 1/1 Interface GigabitEthernet1/1 queueing strategy: Weighted Round-Robin Port QoS is enabled Trust state: trust DSCP Default cos is 0 Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 WRR bandwidth ratios: 100[queue 1] 255[queue 2] queue-limit ratios: 90[queue 1] 5[queue 2] queue random-detect-max-thresholds ---------------------------------- 1 40[1] 100[2] 2 40[1] 100[2] queue thresh cos-map --------------------------------------- 1 1 0 1 1 2 2 3 2 1 4 2 2 6 7 3 1 5 Packets dropped on Transmit: BPDU packets: 0 queue thresh dropped [cos-map] --------------------------------------------------- 1 1 149606424 [0 1 ] 1 2 0 [2 3 ] 2 1 16551394 [4 ] 2 2 4254446 [6 7 ] 3 1 0 [5 ]
在此输出中,默认值为:
队列1 - 100的WRR权重/(100 + 255)= 28%
队列2 - 255的WRR权重/(255 + 100)= 72%
缓冲共享: — 队列1为90%,队列2为5%,严格优先级队列为5%
低优先级WRR队列中的大多数数据包被丢弃,但是对于这两个阈值,高优先级WRR队列中的一些数据包仍被丢弃。共有170,412,264个丢弃(149,606,424 + 16,551,394 + 4,254,446)。 这些丢包的拆分如下:
149,606,424 / 170,412,264 =队列1中丢弃的88%(第一个阈值数据包,带CoS 0和1)
16,551,394 / 170,412,264 =队列2中丢包的10%(第一个阈值数据包,带CoS 4)
4,254,446 / 170,412,264 =队列2中丢包的2%(CoS为6或7的第二个阈值数据包)
注意:在严格优先级队列中看不到任何丢包。
如案例1所述:QoS已启用且使用了默认参数部分,队列2中的数据包仍在被丢弃。修改WRR权重,为队列2提供更多带宽。现在,队列1的清空时间为4%,队列2的清空时间为96%:
show run interface gigabitethernet 1/1 interface GigabitEthernet1/1 no ip address wrr-queue bandwidth 10 255 mls qos trust dscp switchport switchport mode access end nelix#show queueing interface gigabitethernet 1/1 Interface GigabitEthernet1/1 queueing strategy: Weighted Round-Robin Port QoS is enabled Trust state: trust DSCP Default cos is 0 Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 WRR bandwidth ratios: 10[queue 1] 255[queue 2] queue-limit ratios: 90[queue 1] 5[queue 2] queue random-detect-max-thresholds ---------------------------------- 1 40[1] 100[2] 2 40[1] 100[2] queue thresh cos-map --------------------------------------- 1 1 0 1 1 2 2 3 2 1 4 2 2 6 7 3 1 5 Packets dropped on Transmit: BPDU packets: 0 queue thresh dropped [cos-map] --------------------------------------------------- 1 1 2786205 [0 1 ] 1 2 0 [2 3 ] 2 1 11363 [4 ] 2 2 69 [6 7 ] 3 1 0 [5 ]
如此输出所示,队列2中丢包的百分比现在要低得多。总共2,797,637个丢包以这种方式分离:
2,786,205 / 2,797,637 =队列1中99.591%的丢包(包含CoS 0和1)
11,363 / 2,797,637 =队列2中0.408%的丢包(数据包CoS 4的第一个阈值)
69 / 2,797,637 =队列2中丢包的0.001%(CoS 6和7的数据包的第二阈值)
如果使用各种WRR权重,它可确保队列2中的QoS更高。
使用WRR重量时,您可以更积极。在此示例输出中,队列1仅分配0.39%的权重:
show run interface gigabitethernet 1/1 interface GigabitEthernet1/1 no ip address wrr-queue bandwidth 1 255 mls qos trust dscp switchport switchport mode access end nelix#show queueing interface gigabitethernet 1/1 Interface GigabitEthernet1/1 queueing strategy: Weighted Round-Robin Port QoS is enabled Trust state: trust DSCP Default cos is 0 Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 WRR bandwidth ratios: 1[queue 1] 255[queue 2] queue-limit ratios: 90[queue 1] 5[queue 2] queue random-detect-max-thresholds ---------------------------------- 1 40[1] 100[2] 2 40[1] 100[2] queue thresh cos-map --------------------------------------- 1 1 0 1 1 2 2 3 2 1 4 2 2 6 7 3 1 5 Packets dropped on Transmit: BPDU packets: 0 queue thresh dropped [cos-map] --------------------------------------------------- 1 1 2535315 [0 1 ] 1 2 0 [2 3 ] 2 1 705 [4 ] 2 2 73 [6 7 ] 3 1 0 [5 ]
即使WRR权重过大,数据包仍在队列2中被丢弃。但是,相比之下,它并不多。现在队列2中只有0.03%的丢包。
如案例2所示:修改WRR权重和案例3:其他WRR权重修改部分,数据包仍在队列2中丢弃,尽管WRR百分比可确保丢弃最小。但是,当队列2中达到第二个阈值(设置为100%)时,某些数据包会继续丢弃。
为了改善此情况,请更改队列限制(分配给每个队列的缓冲区大小)。 在本例中,队列1的队列限制设置为70%,队列2的队列限制设置为15%,严格优先级队列的队列限制设置为15%:
show run gigabitethernet 1/1 interface GigabitEthernet1/1 no ip address wrr-queue bandwidth 1 255 wrr-queue queue-limit 70 15 mls qos trust dscp switchport switchport mode access end nelix#show queueing interface gigabitethernet 1/1 Interface GigabitEthernet1/1 queueing strategy: Weighted Round-Robin Port QoS is enabled Trust state: trust DSCP Default cos is 0 Transmit queues [type = 1p2q2t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 WRR low 2 2 WRR high 2 3 Priority 1 WRR bandwidth ratios: 1[queue 1] 255[queue 2] queue-limit ratios: 70[queue 1] 15[queue 2] queue random-detect-max-thresholds ---------------------------------- 1 40[1] 100[2] 2 40[1] 100[2] queue thresh cos-map --------------------------------------- 1 1 0 1 1 2 2 3 2 1 4 2 2 6 7 3 1 5 Receive queues [type = 1p1q4t]: Queue Id Scheduling Num of thresholds ----------------------------------------- 1 Standard 4 2 Priority 1 queue tail-drop-thresholds -------------------------- 1 100[1] 100[2] 100[3] 100[4] queue thresh cos-map --------------------------------------- 1 1 0 1 1 2 2 3 1 3 4 1 4 6 7 2 1 5 Packets dropped on Transmit: BPDU packets: 0 queue thresh dropped [cos-map] --------------------------------------------------- 1 1 154253046 [0 1 ] 1 2 0 [2 3 ] 2 1 0 [4 ] 2 2 0 [6 7 ] 3 1 0 [5 ]
现在,丢弃仅发生在队列1中。
输出调度示例部分的案例研究证明了实施输出调度以避免在输出端口超订用时VoIP或任务关键型流量丢弃的优点。超订用在正常网络(尤其是在千兆链路上)中不会非常频繁。 超订用只应在流量高峰期或在非常短的时间内突发流量期间发生。
即使没有超订用,在端到端实施QoS的网络中,输出调度也可以起到很大帮助。本节提供输出调度如何帮助减少延迟和抖动的示例。
数据包的延迟会因每台交换机等待传输时缓冲区中的“丢失”时间而增加。例如,在大型备份或文件传输期间,CoS为5的小语音数据包从端口发出。假设输出端口没有QoS,并且小语音数据包在10个大1500字节数据包之后排队。在这种情况下,您可以轻松计算传输10个大数据包所需的千兆速度时间为:
(10 x 1500 x 8)= 120,000位在120微秒内传输
如果此数据包在通过网络时需要通过八台或九台交换机,则可能导致大约1毫秒的延迟。这仅包括网络中交叉的交换机输出队列中的延迟。
注意:如果您需要在10MB接口(例如,连接到IP电话和PC)上将相同的10个大数据包排入队列,则延迟引入为:
(10 x 1500 x 8)=在12毫秒内传输120,000位
输出调度的实施确保CoS为5的语音数据包被置于严格优先级队列中,并在CoS小于5的任何数据包之前发送。这减少了延迟。
输出调度的另一个重要优势是减少抖动。抖动是同一流中数据包的延迟变化。此示例场景显示输出调度如何减少抖动:
在此场景中,同一输出端口需要发送两个流:
10MB以太网端口上的一个传入语音流。
1千兆以太网上行链路端口上的一个传入FTP流。
两个流通过相同的输出端口离开交换机。此示例显示不使用输出调度时可能发生的情况。所有大型数据包都可以在两个语音数据包之间交错。这会在从同一流接收语音数据包时产生抖动。当交换机传输大数据包时,数据包1的接收与数据包n+1之间的延迟较大。但是,n+1和n+2之间的延迟可忽略。这导致了语音业务流中的抖动。使用严格优先级队列可以轻松避免此问题。确保将语音数据包的CoS值映射到严格优先级队列。
在本文档中,您已看到有关如何在运行Cisco IOS软件的Catalyst 6500/6000上配置输出队列调度并排除其故障的案例研究。您还看到,在大多数语音流量网络中,输出调度具有以下优势:
避免在输出端口超订用的情况下丢弃关键流量。
减少延迟。
减少抖动。