输出调度可确保在严重超订用的情况下不会丢弃重要流量。本文档讨论在运行Catalyst OS(CatOS)系统软件的Cisco Catalyst 6500/6000系列交换机上输出调度涉及的所有技术和算法。本文档还简要概述了Catalyst 6500/6000交换机的排队功能以及如何配置输出调度的不同参数。
注意:如果在Catalyst 6500/6000上运行Cisco IOS®软件,请参阅运行Cisco IOS系统软件的Catalyst 6500/6000系列交换机上的QoS输出调度以了解详细信息。
本文档没有任何特定的要求。
本文档中的示例是从Catalyst 6000(带Supervisor引擎1A和策略功能卡(PFC))创建的。 但是,这些示例对带PFC2的Supervisor引擎2或带PFC3的Supervisor引擎720也有效。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
输出丢弃是由拥塞的接口导致的。造成这种情况的一个常见原因可能是来自高带宽链路的流量被切换到低带宽链路,或者来自多个入站链路的流量被切换到单个出站链路。
例如,如果大量突发流量进入千兆接口并切换到100 Mbps接口,这可能导致100 Mbps接口上的输出丢弃增加。这是因为流入和流出的带宽之间的速度不匹配,导致接口的输出队列被超额数据流淹没。传出接口上的流量速率无法接受应发送的所有数据包。
解决此问题的最终解决方案是提高线路速度。但是,如果您不希望提高线路速度,也有用于防止、减少或控制输出丢弃的方法。只有当输出丢弃的是短期突发数据时,可以防止输出丢弃。如果输出丢弃是由恒定高速率流导致的,则无法防止丢弃。但是,您可以对其进行控制。
尾部丢弃是基本的拥塞避免机制。尾部丢弃对所有流量均等处理,当队列在拥塞期间开始填满时,不区分服务类别(CoS)。当输出队列已满且尾部丢弃有效时,数据包将被丢弃,直到拥塞消除和队列不再满为止。尾部丢弃是避免拥塞的最基本类型,不考虑任何QoS参数。
Catalyst 6000已实施高级版尾部丢弃拥塞避免,当达到一定百分比的缓冲区填充时,会丢弃具有特定CoS的所有数据包。使用加权尾部丢弃,可以定义一组阈值并将CoS与每个阈值关联。在本节的示例中,有四个可能的阈值。每个阈值的定义如下:
当50%的缓冲区被填充时,阈值1达到。CoS 0和1分配给此阈值。
当60%的缓冲区被填充时,阈值2达到。CoS 2和3被分配到此阈值。
当80%的缓冲区被填充时,阈值3达到。CoS 4和5已分配到此阈值。
当100%的缓冲区被填充时,达到阈值4。CoS 6和7分配到此阈值。
在图1中的图中,如果缓冲区已满50%,则CoS为0或1的所有数据包都会被丢弃。如果缓冲区已满60%,则CoS为0、1、2或3的所有数据包都将被丢弃。当缓冲区完全填充时,CoS为6或7的数据包将被丢弃。
图 1
注意:一旦缓冲区填充量降低到某个阈值以下,具有关联CoS的数据包就不再被丢弃。
加权随机早期检测(WRED)是一种拥塞避免机制,当缓冲区达到定义的填充阈值时,它会随机丢弃具有特定IP优先级的数据包。WRED是以下两个功能的组合:
尾部丢弃
随机早期检测 (RED)
RED不感知优先级或CoS感知。当缓冲区的阈值已满时,RED使用单个阈值之一。RED开始随机丢弃数据包(但不是所有数据包,如尾部丢弃),直到达到最大(最大)阈值。达到最大阈值后,所有数据包都会被丢弃。数据包被丢弃的概率随着缓冲区填充量的增加而线性增加。图2中的图表显示了丢包概率:
图2 — 数据包丢弃概率
注意:此图中的标记概率以红色可调,这意味着线性丢包概率的斜率是可调的。
RED和WRED是基于TCP的流量的非常有用的拥塞避免机制。对于其他类型的流量,RED效率不高。这是因为RED利用TCP用于管理拥塞的窗口机制。RED可避免当多个TCP会话通过同一路由器端口时路由器上出现的典型拥塞。该机制称为全局网络同步。图3中的图表显示了RED对负载的平滑效果:
图3 - RED用于避免拥塞
有关RED如何减少拥塞并平滑通过路由器的流量的详细信息,请参阅拥塞避免概述文档的路由器与TCP交互方式。
WRED类似于RED,因为它们都定义了一些最小(min)阈值,当达到这些最小阈值时,数据包会随机丢弃。WRED还定义了某些最大阈值,当达到这些最大阈值时,所有数据包都会被丢弃。WRED也是CoS感知,这意味着将一个或多个CoS值添加到每个最小阈值/最大阈值对。当超出最小阈值时,数据包随分配的CoS随机丢弃。请考虑以下示例,队列中有两个阈值:
将CoS 0和1分配给最小阈值1和最大阈值1。最小阈值1设置为缓冲区填充的50%,最大阈值1设置为80%。
将CoS 2和3分配给最小阈值2和最大阈值2。最小阈值2设置为缓冲区填充的70%,最大阈值2设置为100%。
一旦缓冲区超过最小阈值1(50%),CoS 0和1的数据包就会开始随机丢弃。随着缓冲区利用率的增加,会丢弃更多数据包。如果达到最小阈值2(70%),则CoS 2和CoS 3的数据包开始随机丢弃。
注意:在此阶段,CoS 0和1的数据包的丢弃概率远高于CoS 2或CoS 3的数据包的丢弃概率。
每当达到最大阈值2时,CoS 0和1的数据包都会被丢弃,而CoS 2和3的数据包会继续随机丢弃。最后,当达到100%(最大阈值2)时,CoS 2和3的所有数据包都会被丢弃。
图4 - WRED,带两组最小阈值和最大阈值(两项服务)图5 - WRED,带两组服务,但最小阈值均等于0
WRED的早期CatOS实现只设置最大阈值,而最小阈值硬编码为0%。图5中图的底部突出显示了结果行为。
注意:数据包的丢弃概率始终为非空,因为此概率始终高于最小阈值。此行为已在软件版本6.2及更高版本中得到纠正。
加权轮询(WRR)是Catalyst 6000上另一种输出调度机制。WRR在两个或多个队列之间工作。WRR的队列以循环方式清空,您可以配置每个队列的权重。默认情况下,端口在Catalyst 6000上有两个WRR队列。默认值为:
为高优先级WRR队列服务70%的时间
为低优先级WRR队列提供30%的时间
图6中的图表显示了一个WRR,该WRR有三个以WRR方式提供服务的队列。高优先级队列(红色数据包)发送的数据包比另外两个队列发送的数据包多:
图6 — 输出调度:WRR
注意:大多数6500线卡确实按带宽实施WRR。WRR每带宽的这种实施意味着,每当调度程序允许队列传输数据包时,都允许传输一定数量的字节。此字节数可代表多个数据包。例如,如果依次发送5120字节,则可以发送3个1518字节的数据包,总共4554字节。超额字节丢失(5120 - 4554 = 566字节)。 因此,对于某些极大权重(如队列1的1%和队列2的99%),可能无法达到精确配置的权重。这种无法达到确切权重的情况通常是数据包较大的情况。
一些新一代线卡(如6548-RJ-45)通过实施赤字加权轮询(DWRR)来克服这一限制。DWRR从队列传输,但不会使低优先级队列饿死。DWRR跟踪正在传输的低优先级队列,并在下一轮中进行补偿。
Catalyst 6000中的另一种队列(严格优先级队列)始终先清空。一旦在严格优先级队列中有数据包,就会发送该数据包。
WRR或WRED队列仅在清空严格优先级队列后被检查。从WRR队列或WRED队列传输每个数据包后,会检查并清空严格优先级队列(如果需要)。
注意:所有排队类型类似于1p2q1t、1p3q8t和1p7q8t的线卡都使用DWRR。其他线卡使用标准WRR。
如果您不确定端口的排队功能,可以发出show port capabilities命令。以下是WS-X6408-GBIC线卡上的命令输出:
Model WS-X6408-GBIC Port 4/1 Type No GBIC Speed 1000 Duplex full Trunk encap type 802.1Q,ISL Trunk mode on,off,desirable,auto,nonegotiate Channe yes Broadcast suppression percentage(0-100) Flow control receive-(off,on,desired),send-(off,on,desired) Security yes MembershIP static,dynamic Fast start yes QOS scheduling rx-(1q4t),tx-(2q2t) CoS rewrite yes ToS rewrite DSCP UDLD yes SPAN source,destination COPS port group none
此端口具有一种称为2q2t的队列输出。
Catalyst 6500/6000交换机上提供多种类型的队列。此部分中的表可能会随着新线路卡的发布而不完整。新线卡可以引入新的队列组合。有关Catalyst 6500/6000交换机模块可用的所有队列的当前说明,请参阅Catalyst 6500系列软件文档的CatOS版本的配置QoS部分。
注意:思科通信媒体模块(CMM)不支持所有QoS功能。检查特定软件版本的版本说明以确定支持的功能。
下表说明了端口QoS架构的表示法:
Tx1 /Rx2 ide | 队列表示法 | 队列数量 | 优先级队列 | 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 | — | 1 | 4个可配置尾部丢弃 |
Rx | 1p1q4t | 2 | 1 | 1 | 4个可配置尾部丢弃 |
Rx | 1p1q0t | 2 | 1 | 1 | 不可配置 |
Rx | 1p1q8t | 2 | 1 | 1 | 8个可配置WRED |
1 Tx =传输。
2 Rx =接收。
下表列出了接口或端口的Rx和Tx端的所有模块和队列类型:
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 |
Catalyst 6500/6000上的三个字段用于实现QoS:
IP优先级 — IP报头中服务类型(ToS)字段的前三位
差分服务代码点(DSCP)- IP报头中ToS字段的前六位
CoS — 第2层(L2)级别使用的三位
这三个位是交换机间链路(ISL)报头的一部分,或位于IEEE 802.1Q(dot1q)标记内。无标记以太网数据包内没有CoS。
当从要传输的数据总线发送帧时,数据包的CoS是唯一考虑的参数。然后,数据包会通过调度程序,调度程序将选择将数据包放入的队列。因此,请记住,本文档讨论的输出调度和所有机制都只是CoS感知。
带有多层交换功能卡(MSFC)的Catalyst 6500/6000使用内部DSCP对数据包进行分类。当在PFC级别做出转发决策时,配置了启用QoS的Catalyst 6500/6000会分配DSCP值。此DSCP分配给任何数据包(包括非IP数据包),并映射到CoS以启用输出调度。您可以在Catalyst 6500/6000上配置从DSCP到CoS值的映射。如果保留默认值,则可以从DSCP派生CoS。其公式为:
DSCP_value / 8
此外,如果数据包是ISL或dot1q(非本征VLAN)标记的IP数据包,则DSCP值会映射到传出数据包的CoS。DSCP值也写在IP报头的ToS字段中。
图7中的图示为1p2q2t队列。使用WRR调度程序清空WRR队列。还有一个仲裁器,用于检查来自WRR队列的每个数据包,以确定严格优先级队列中是否存在某些内容。
图 7
ToS字段在IP报头和802.1p/ISL CoS字段中重写。
通过可配置映射基于CoS选择调度队列和阈值。
每个队列都有可配置的大小和阈值,有些队列有WRED。
出队在两个队列之间使用WRR。
传出封装可以是dot1q、ISL或无。
本节提供Catalyst 6500/6000上默认QoS配置的示例输出,以及这些值的含义和如何调整这些值的信息。
当您发出以下命令时,QoS将默认禁用:
set qos disable
此列表中的命令显示2q2t端口中每个CoS的默认分配。队列1将CoS 0和1分配给其第一阈值,将CoS 2和3分配给其第二阈值。队列2将CoS 4和5分配给其第一个阈值,将CoS 6和7分配给其第二个阈值:
set qos map 2q2t tx 1 1 cos 0 set qos map 2q2t tx 1 1 cos 1 set qos map 2q2t tx 1 2 cos 2 set qos map 2q2t tx 1 2 cos 3 set qos map 2q2t tx 2 1 cos 4 set qos map 2q2t tx 2 1 cos 5 set qos map 2q2t tx 2 2 cos 6 set qos map 2q2t tx 2 2 cos 7
以下命令默认显示每个队列的2q2t端口上的阈值级别:
set qos drop-threshold 2q2t tx queue 1 80 100 set qos drop-threshold 2q2t tx queue 2 80 100
您可以为每个WRR队列分配默认权重。发出以下命令以分配队列1和队列2的默认权重:
注:低优先级队列的服务时间是5/260%,高优先级队列的服务时间是25/260%。
set qos wrr 2q2t 5 255
总缓冲区可用性在两个队列之间拆分。低优先级队列正确分配给80%的可用缓冲区,因为这是最有可能缓冲数据包并保持一段时间的队列。发出以下命令以定义可用性:
set qos txq-ratio 2q2t 80 20
您可以在此配置中查看1p2q2t端口的类似设置:
set qos map 1p2q2t tx 1 1 cos 0 set qos map 1p2q2t tx 1 1 cos 1 set qos map 1p2q2t tx 1 2 cos 2 set qos map 1p2q2t tx 1 2 cos 3 set qos map 1p2q2t tx 2 1 cos 4 set qos map 1p2q2t tx 3 1 cos 5 set qos map 1p2q2t tx 2 1 cos 6 set qos map 1p2q2t tx 2 2 cos 7 set qos wrr 1p2q2t 5 255 set qos txq-ratio 1p2q2t 70 15 15 set qos wred 1p2q2t tx queue 1 80 100 set qos wred 1p2q2t tx queue 2 80 100
注意:默认情况下,CoS 5(语音流量)分配给严格优先级队列。
第一个配置步骤是启用QoS。请记住,QoS默认值禁用。禁用QoS时,CoS映射无关。有一个队列用作FIFO,所有数据包都在该队列中丢弃。
bratan> (enable) set qos enable QoS is enabled bratan> (enable) show qos status QoS is enabled on this switch
CoS值需要分配给所有队列类型的队列或阈值。为2q2t类型的端口定义的映射不应用于任何1p2q2t端口。此外,为2q2t创建的映射将应用于具有2q2t排队机制的所有端口。发出以下命令:
set qos map queue_type tx Q_number threshold_number cos value
注:队列总是进行编号,以尽可能最低的优先级队列开始,以可用的严格优先级队列结束。示例如下:
队列1是低优先级WRR队列
队列2是高优先级WRR队列
队列3是严格优先级队列
必须对所有类型的队列重复此操作。否则,将保留默认CoS分配。以下是1p2q2t的示例:
set qos map 1p2q2t tx 1 1 cos 0 !--- This is the low-priority WRR queue threshold 1, CoS 0 and 1. set qos map 1p2q2t tx 1 1 cos 1 and 1 set qos map 1p2q2t tx 1 2 cos 2 !--- This is the low-priority WRR queue threshold 2, CoS 2 and 3. set qos map 1p2q2t tx 1 2 cos 3 and 3 set qos map 1p2q2t tx 2 1 cos 4 !--- This is the high-priority WRR queue threshold 1, CoS 4. set qos map 1p2q2t tx 3 1 cos 5 !--- This is the strict priority queue, CoS 5. set qos map 1p2q2t tx 2 1 cos 6 !--- This is the high-priority WRR queue threshold 2, CoS 6. set qos map 1p2q2t tx 2 2 cos 7 and 7
tamer (enable) set qos map 1p2q2t tx 1 1 cos 0 QoS tx priority queue and threshold mapped to cos successfully
您必须为两个WRR队列配置WRR权重。发出以下命令:
set qos wrr Q_type weight_1 weight_2
Weight_1与队列1相关,队列1应是低优先级WRR队列。Weight_1必须始终低于weight_2。权重可以采用介于1和255之间的任意值。您可以使用以下公式分配百分比:
队列 1:
weight_1 / (weight_1 + weight_2)
队列 2:
weight_2 / (weight_1 + weight_2)
您还必须定义各种类型的队列的权重。重量不必相同。例如,对于2q2t,其中队列1的服务时间为30%,队列2的服务时间为70%,您可以发出以下命令以定义权重:
set qos wrr 2q2t 30 70 !--- This ensures that the high-priority WRR queue is served 70 percent of the time !--- and that the low-priority WRR queue is served 30 percent of the time.
tamer (enable) set qos wrr 2q2t 30 70 QoS wrr ratio is set successfully
您还必须定义传输队列比率,该比率是指缓冲区在不同队列之间拆分的方式。发出以下命令:
set qos txq-ratio port_type queuel_val queue2_val ... queueN_val
注意:如果您有三个队列(1p2q2t),则必须出于硬件原因将高优先级WRR队列和严格优先级队列设置在同一级别。
set qos txq-ratio 1p2q2t 70 15 15 !--- This gives 70 percent of the buffer of all 1p2q2t ports to the low-priority WRR !--- queue and gives 15 percent to each of the other two queues. set qos txq-ratio 2q2t 80 20 !--- This gives 80 percent of the buffer to the low-priority queue, !--- and gives 20 percent of the buffer to the high-priority queue.
tamer (enable) set qos txq-ratio 1p2q2t 70 15 20 Queue ratio values must be in range of 1-99 and add up to 100 Example: set qos txq-ratio 2q2t 20 80 tamer (enable) set qos txq-ratio 1p2q2t 70 30 30 Queue ratio values must be in range of 1-99 and add up to 100 Example: set qos txq-ratio 2q2t 20 80 tamer (enable) set qos txq-ratio 1p2q2t 80 10 10 QoS txq-ratio is set successfully
如此控制台输出所示,队列值之和必须为100。请保留低优先级WRR队列缓冲区的最大部分,因为此队列需要的缓冲最多。其他队列的优先级更高。
最后一步是对WRED队列或者尾端丢弃队列配置阈值级别。发出以下命令:
set qos wred port_type [tx] queue q_num thr1 thr2 ... thrn set qos drop-threshold port_type tx queue q_num thr1 ... thr2
set qos drop-threshold 2q2t tx queue 1 50 80 !--- For low-priority queues in the 2q2t port, the first threshold is defined at 50 !--- percent and the second threshold is defined at 80 percent of buffer filling. set qos drop-threshold 2q2t tx queue 2 40 80 !--- For high-priority queues in the 2q2t port, the first threshold is defined at 40 !--- percent and the second threshold is defined at 80 percent of buffer filling. set qos wred 1p2q2t tx queue 1 50 90 !--- The commands for the 1p2q2t port are identical. set qos wred 1p2q2t tx queue 2 40 80
tamer (enable) set qos drop-threshold 2q2t tx queue 1 50 80 Transmit drop thresholds for queue 1 set at 50% 80% tamer (enable) set qos drop-threshold 2q2t tx queue 2 40 80 Transmit drop thresholds for queue 2 set at 40% 80% tamer (enable) set qos wred 1p2q2t tx queue 1 50 90 WRED thresholds for queue 1 set to 50 and 90 on all WRED-capable 1p2q2t ports tamer (enable) set qos wred 1p2q2t tx queue 2 40 80 WRED thresholds for queue 2 set to 40 and 80 on all WRED-capable 1p2q2t ports
set qos wred 1p2q2t tx queue 2 40 80命令与CoS配合使用,用于阈值映射。例如,当您发出下面列表中的命令时,您确保在传输方向的1p2q2t端口上,CoS 0、1、2和3的数据包在第一个队列(低WRR队列)中发送。 当队列中的缓冲区已满50%时,WRED开始丢弃CoS 0和1的数据包。只有队列中的缓冲区已满90%时,CoS 2和3的数据包才会被丢弃。
set qos map 1p2q2t tx 1 1 cos 0 set qos map 1p2q2t tx 1 1 cos 1 set qos map 1p2q2t tx 1 2 cos 2 set qos map 1p2q2t tx 1 2 cos 3 set qos wred 1p2q2t tx queue 1 50 90
用于验证端口输出调度的当前运行时配置的简单命令是show qos info runtime mod/port命令。命令显示以下信息:
端口上的队列类型
CoS到不同队列和阈值的映射
缓冲区共享
WRR重量
在本例中,队列1的值为20% WRR,队列2的值为80% WRR:
tamer (enable) show qos info runtime 1/1 Run time setting of QoS: QoS is enabled Policy Source of port 1/1: Local Tx port type of port 1/1 : 1p2q2t Rx port type of port 1/1 : 1p1q4t Interface type: port-based ACL attached: The qos trust type is set to untrusted Default CoS = 0 Queue and Threshold Mapping for 1p2q2t (tx): Queue Threshold CoS ----- --------- ------- 1 1 0 1 1 2 2 3 2 1 4 6 2 2 7 3 1 5 Queue and Threshold Mapping for 1p1q4t (rx): All packets are mapped to a single queue Rx drop thresholds: Rx drop thresholds are disabled Tx drop thresholds: Tx drop-thresholds feature is not supported for this port type Tx WRED thresholds: Queue # Thresholds - percentage (* abs values) ------- ------------------------------------------ 1 80% (249088 bytes) 100% (311168 bytes) 2 80% (52480 bytes) 100% (61440 bytes) Queue Sizes: Queue # Sizes - percentage (* abs values) ------- ------------------------------------- 1 70% (311296 bytes) 2 15% (65536 bytes) 3 15% (65536 bytes) WRR Configuration of ports with speed 1000Mbps: Queue # Ratios (* abs values) ------- ------------------------------------- 1 20 (5120 bytes) 2 80 (20480 bytes) (*) Runtime information may differ from user configured setting due to hardware granularity. tamer (enable)
在下一个示例中,请注意,WRR权重不是默认值1。对于队列1,权重设置为20,对于队列2,权重设置为80。此示例使用流量生成器将2 Gb的流量发送到Catalyst 6000。这些2 Gb的流量应通过端口1/1退出。由于端口1/1超订用,因此许多数据包被丢弃(1 Gbps)。 show mac命令显示存在大量输出丢弃:
tamer (enable) show mac 1/1 Port Rcv-Unicast Rcv-Multicast Rcv-Broadcast -------- -------------------- -------------------- -------------------- 1/1 0 1239 0 Port Xmit-Unicast Xmit-Multicast Xmit-Broadcast -------- -------------------- -------------------- -------------------- 1/1 73193601 421 0 Port Rcv-Octet Xmit-Octet -------- -------------------- -------------------- 1/1 761993 100650803690 MAC Dely-Exced MTU-Exced In-Discard Out-Discard -------- -------------- ---------------- --------------- ----------------- 1/1 0 - 0 120065264 Last-Time-Cleared -------------------------- Fri Jan 12 2001, 17:37:43
考虑丢弃的数据包。建议的流量模式如下分割:
1 Gb流量,IP优先级为0
250 Mb流量,IP优先级4
250 Mb流量,IP优先级为5
250 Mb的流量,IP优先级6
250 Mb流量,IP优先级为7
根据CoS映射,此流量发送:
1 Gb流量进入队列1阈值1
0 Mb流量到队列1阈值2
500 Mb流量到队列2阈值1
250 Mb流量到队列2阈值2
队列3的流量为250 Mb(严格优先级队列)
交换机必须信任收到的流量,以便在交换机中保留传入的IP优先级,并用于映射到CoS值以进行输出调度。
注意:到CoS映射的默认IP优先级是IP优先级等于CoS。
发出show qos stat 1/1命令,以查看丢弃的数据包和大致百分比:
此时,队列3(CoS 5)中没有丢弃任何数据包。
丢弃的91.85%数据包是队列1中的CoS 0数据包。
8%的丢弃数据包是队列2中的CoS 4和6,阈值1。
丢弃的数据包中0.15%是队列2中的CoS 7,阈值2。
此输出说明了命令的使用:
tamer (enable) show qos stat 1/1 Tx port type of port 1/1 : 1p2q2t Q3T1 statistics are covered by Q2T2. Q # Threshold #:Packets dropped --- ------------------------------- 1 1:110249298 pkts, 2:0 pkts 2 1:9752805 pkts, 2:297134 pkts 3 1:0 pkts Rx port type of port 1/1 : 1p1q4t Rx drop threshold counters are disabled for untrusted ports Q # Threshold #:Packets dropped --- --------------------------------- 1 1:0 pkts, 2:0 pkts, 3:0 pkts, 4:0 pkts 2 1:0 pkts
如果在清除计数器后将WRR权重改回默认值,则只有1%的丢弃数据包发生在队列2中,而不是之前显示的8%:
注意:队列1的默认值为5,队列2的默认值为255。
tamer (enable) show qos stat 1/1 TX port type of port 1/1 : 1p2q2t Q3T1 statistics are covered by Q2T2 Q # Threshold #:Packets dropped --- ---------------------------------- 1 1:2733942 pkts, 2:0 pkts 2 1:28890 pkts, 2:6503 pkts 3 1:0 pkts Rx port type of port 1/1 : 1p1q4t Rx drop threshold counters are disabled for untrusted ports Q # Threshold #:Packets dropped --- ------------------------------------ 1 1:0 pkts, 2:0 pkts, 3:0 pkts, 4:0 pkts 2 1:0 pkts
监控输出调度和验证配置一节中的示例演示了输出调度实施的优点,它避免了在输出端口超订用的情况下VoIP或任务关键型流量的丢弃。超订用在正常网络中不常发生,尤其是在千兆链路上。通常,超订用仅在流量高峰期或流量在极短时间内突发期间发生。
即使没有超订用,在端到端实施QoS的网络中,输出调度也可以提供很大帮助。输出调度有助于减少延迟和抖动。本节提供输出调度如何帮助减少延迟和抖动的示例。
在等待传输期间,数据包的延迟会随着每台交换机缓冲区中的“丢失”时间而增加。例如,在大型备份或文件传输期间,CoS为5的小语音数据包从端口发出。如果输出端口没有任何QoS,并且假设小语音数据包在10个大1500字节数据包之后排队,则可以轻松计算传输10个大数据包所需的千兆速度时间:
(10 × 1500 × 8) = 120,000 bits that are transmitted in 120 microseconds
如果此数据包在通过网络时需要通过八台或九台交换机,则可能导致大约1毫秒的延迟。此数量仅计算网络中交叉的交换机输出队列中的延迟。
注意:如果需要在10-Mbps接口(例如,在连接IP电话和PC的情况下)上对相同的10个大数据包排队,则引入的延迟为:
(10 × 1500 × 8) = 120,000 bits that are transmitted in 12 ms
输出调度实现确保CoS为5的语音数据包被放入严格优先级队列。这种放置可确保这些数据包在CoS小于5的任何数据包之前发送,从而减少延迟。
输出调度实施的另一个重要优势是它减少了抖动。抖动是在同一流中观察到的数据包的延迟变化。图8中的图表显示了输出调度如何减少抖动的示例场景:
图 8
在此场景中,单个输出端口必须发送两个流:
在10 Mbps以太网端口上传入的一个语音流
在1 Gbps以太网上行链路上传入的一个FTP流
两个流通过相同的输出端口离开交换机。此示例显示不使用输出调度时会发生什么情况。所有大型数据包都可以在两个语音数据包之间交错,这会在从同一流接收语音数据包时产生抖动。当交换机传输大数据包时,在数据包n和数据包n+1的接收之间存在较大的延迟。但是,n+1和n+2之间的延迟可忽略。这导致了语音业务流中的抖动。使用严格优先级队列可以轻松避免此问题。确保语音数据包的CoS值映射到严格优先级队列。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
13-Apr-2007 |
初始版本 |