带Supervisor III(WS-X4014)或Supervisor IV(WS-X4515)的Catalyst 4000支持高级服务质量(QoS)功能,包括分类、策略、标记、队列和调度。本文档介绍排队和调度功能,包括流量整形、共享和严格优先级/低延迟队列。队列确定数据包如何在出口接口的各种队列中排队,而调度确定如何(在拥塞时)优先于低优先级流量的高优先级流量。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
本文档的读者应具备以下方面的知识:
帧的第2层(L2)优先级取决于服务类别(CoS)值,该值在交换机间链路(ISL)报头(4位用户字段中的三个最低有效位)和802.1Q报头(2字节标记控制信息字段中的三个最高有效位)中可用。
数据包的第3层(L3)优先级取决于差分服务代码点(DSCP)值,该值在IP报头中的服务类型(ToS)字节(6个最高有效位)或ToS字节中的IP优先级值(3个最高有效位)中可用。
有关其他配置帮助,请参阅软件配置指南。
本文档中的信息基于Supervisor III(WS-X4014)上的以下软件版本:
思科IOS®软件版本12.1(8)EW
注意:Cisco IOS软件版本12.1(12c)EW首先支持Supervisor IV。本文档中描述的功能也适用于Supervisor IV,除非另有明确区分。
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
Catalyst 4000 Supervisor III和IV使用共享内存交换架构,能够为现有线卡提供排队和调度功能。由于Supervisor提供无阻塞交换架构,因此不存在输入队列。数据包通过背板转发到输出端口或出口端口。接口的输出端提供四个传输队列。队列大小当前固定为240个数据包(用于快速以太网端口)和1920个数据包(用于无阻塞千兆以太网接口)。非阻塞表示在连接到背板时端口未超订用。无阻塞千兆以太网端口列表如下:
管理引擎III(WS-X4014)和IV(WS-X4515)上的上行链路端口
WS-X4306-GB线卡上的端口
WS-X4232-GB-RJ线卡上有两个1000BASE-X端口
WS-X4418-GB线卡上的前两个端口
WS-X4412-2GB-TX线卡上有两个1000BASE-X端口
阻塞(超订用)千兆以太网端口队列大小当前也固定在240个数据包上。阻塞端口列出如下:
WS-X4412-2GB-TX线卡上的10/100/1000 T端口
WS-4418-GB线卡上的端口,前两个端口除外
WS-X4424-GB-RJ45线卡上的端口
WS-X4448-GB-LX线卡上的端口
WS-X4448-GB-RJ45线卡上的端口
注意:队列大小取决于数据包的数量,而不是数据包的大小。目前,Supervisor III不支持任何拥塞避免机制,例如传输队列的加权随机早期检测(WRED)。
注意:Supervisor IV支持Cisco IOS 12.1(13)EW及更高版本中的主动队列管理(AQM)功能。AQM是一种拥塞避免技术,在发生缓冲区溢出之前起作用。AQM通过动态缓冲限制(DBL)实现。DBL跟踪交换机中每个流量的队列长度。当特定流的队列长度超过其限制时,DBL将丢弃数据包或在数据包报头中设置显式拥塞通知(ECN)位。有关如何配置DBL的详细信息,请参阅配置QoS。
禁用QoS时,数据包在入口端口上受到传入DSCP的信任,并排入相应队列。这些队列为循环服务。
启用QoS后,数据包将根据内部DSCP进行排队,该DSCP是从使用端口信任状态的传入CoS/DSCP或输入端口或访问列表(ACL)/基于类的标记上的CoS/DSCP默认配置中派生的。根据全局DSCP - tx队列映射选择队列,该映射完全可配置。映射可显示如下:
Switch#show qos maps dscp tx-queue DSCP-TxQueue Mapping Table (dscp = d1d2) d1 : d2 0 1 2 3 4 5 6 7 8 9 ------------------------------------- 0 : 01 01 01 01 01 01 01 01 01 01 1 : 01 01 01 01 01 01 02 02 02 02 2 : 02 02 02 02 02 02 02 02 02 02 3 : 02 02 03 03 03 03 03 03 03 03 4 : 03 03 03 03 03 03 03 03 04 04 5 : 04 04 04 04 04 04 04 04 04 04 6 : 04 04 04 04
上述映射是默认映射。如果需要,可以通过发出qos map dscp-values to tx-queue queue-id命令来更改映射。例如,要将DSCP值50映射到tx-queue 2,请在全局配置模式下进行以下配置:
Switch(config)#qos map dscp 50 to tx-queue 2 !--- You can verify to make sure the changes have been made. Switch #show qos maps dscp tx-queue DSCP-TxQueue Mapping Table (dscp = d1d2) d1 : d2 0 1 2 3 4 5 6 7 8 9 ------------------------------------- 0 : 01 01 01 01 01 01 01 01 01 01 1 : 01 01 01 01 01 01 02 02 02 02 2 : 02 02 02 02 02 02 02 02 02 02 3 : 02 02 03 03 03 03 03 03 03 03 4 : 03 03 03 03 03 03 03 03 04 04 5 : 02 04 04 04 04 04 04 04 04 04 6 : 04 04 04 04
有关更改映射的配置步骤的详细信息,请参阅以下文档:
由于交换机专用集成电路(ASIC)限制,如果入口端口设置为trust-cos,则传输CoS等于端口上配置的传入数据包CoS或默认CoS(对于无标记数据包)。如果策略配置为通过为此类数据包发出set ip dscp value命令来为数据包设置DSCP,则它们将用作内部DSCP的源,而不是默认/数据包CoS,并在相应的队列中排队。如果端口不受CoS信任,则传出CoS将基于内部DSCP值。
如果需要,传输队列3可配置为严格优先级队列,以便在队列中排队的数据包未超过配置的共享值时,该队列中排队的数据包将被安排在在队列中排队的数据包之前传输。以下部分对此进行了说明。
默认情况下禁用严格优先级功能。默认映射将在传输队列3中将CoS 4和5以及DSCP 32到47的数据包排入队列。可以根据需要修改DSCP到tx队列的映射,以便将所需的数据包排入高优先级队列中。
为了不使低优先级数据包饿死,此队列需要配置为主要用于低流量但高优先级流量(如语音流量),而不是用于批量低优先级TCP/IP流量。如果需要防止其他非严格优先级队列耗竭,建议为高优先级队列配置整形/共享。通过配置整形/共享,在满足严格队列的形状/共享值后,将调度其他低优先级数据包。
Switch#show run interface gigabitEthernet 1/1 interface GigabitEthernet1/1 no switchport ip address 10.1.1.1 255.255.255.0 tx-queue 3 priority high end
Catalyst 4000 Supervisor III和IV支持bandwidth命令,该命令是tx-queue命令下的子命令。此命令允许为四个传输队列中的每个队列提供保证的最小带宽。此命令不应与用于路由协议用途的接口级带宽命令相混淆。这与DSCP-tx-queue映射一起,可精细控制四个队列中每个队列中排队的每类流量保证多少带宽。通常,通过严格优先级队列,保证在拥塞期间语音流量等高优先级流量达到一定的最小流量,并为传输队列3配置共享。仅在无阻塞千兆以太网端口上支持链路带宽的共享。此功能目前在阻塞千兆以太网端口或10/100快速以太网接口上不可用。
当交换机上全局启用QoS时,默认情况下,所有四个队列在所有端口上分配的最低带宽均为250 Mbps。可能需要更改默认设置,以确保默认设置与应用程序或相关网络的所需设置匹配。
Switch#show run interface gigabitEthernet 1/1 interface GigabitEthernet1/1 no switchport ip address 10.1.1.1 255.255.255.0 tx-queue 1 bandwidth 500 mbps tx-queue 2 bandwidth 25 mbps tx-queue 3 bandwidth 50 mbps priority high tx-queue 4 bandwidth 200 mbps end Switch#show qos interface GigabitEthernet 1/1 QoS is enabled globally Port QoS is enabled Port Trust State: 'untrusted' Default DSCP: 0 Default CoS: 0 tx-Queue Bandwidth ShapeRate Priority QueueSize (bps) (BPS) (packets) 1 500000000 disabled N/A 1920 2 250000000 disabled N/A 1920 3 50000000 disabled high 1920 4 200000000 disabled N/A 1920
交换机当前不验证每个队列的带宽共享总和<= 1 Gbps。例如,如果Q1 = 300 Mbps,Q2 = 200 Mbps,Q3 = 100 Mbps,Q4 = 500 Mbps,我们将超过该接口可用的总带宽1 Gbps。要了解交换机在此超订用场景中的行为,我们需要了解调度的工作方式。
当传输队列输出速率低于其配置的共享和形状值时,它被视为高优先级队列。最初,所有队列都将是高优先级队列,因为没有队列被授予其共享,因此将以轮询方式提供服务(请注意,如果配置为高优先级的队列在达到共享之前不为空,则始终首先为其提供服务)。 一旦某些队列达到其共享,如果有更多具有高优先级的队列,将为它们提供服务。如果没有高优先级队列,则所有低优先级队列(已满足其共享的队列)将以轮询方式进行服务。
根据上述操作说明,在我们的示例场景中,Q1、Q2和Q3将获得其份额,但在拥塞时不会获得Q4份额,因为接口分配的带宽不能超过其可用物理带宽。根据用户/应用要求选择共享值时应谨慎。
Catalyst 4000 Supervisor III和IV支持除管制功能外的其他流量整形功能。整形功能可以按快速以太网和千兆以太网上的传输队列进行配置。整形将每个队列每秒传输的带宽限制为可配置的最大值,从16 Kbps到1 Gbps(快速以太网端口为100 Mbps)。 由于从特定队列传输数据包的决策是按数据包进行的,因此整形与所配置的值相差非常小。
Switch#show run interface FastEthernet 5/9 interface FastEthernet5/9 no switchport no snmp trap link-status ip address 10.1.1.1 255.255.255.0 tx-queue 1 shape 50 mbps tx-queue 2 shape 35 mbps tx-queue 3 priority high shape 5 mbps tx-queue 4 shape 10 mbps Switch#show qos interface FastEthernet 5/9 QoS is enabled globally Port QoS is enabled Port Trust State: 'untrusted' Default DSCP: 0 Default CoS: 0 tx-Queue Bandwidth ShapeRate Priority QueueSize (BPS) (BPS) (packets) 1 N/A 50000000 N/A 240 2 N/A 35000000 N/A 240 3 N/A 5000000 high 240 4 N/A 10000000 N/A 240
数据包根据内部DSCP在前面介绍的四个队列之一上排队。内部DSCP可以从入口DSCP、入口端口DSCP或基于类的标记派生。传输队列调度发生如下。如果配置了整形,则检查传输队列中的数据包是否在配置的最大形状值内。如果超出该值,则会排入队列且不传输。
如果数据包符合条件,则考虑共享/严格优先级功能。首先,只要严格优先级排队的数据包低于为队列配置的形状参数,就会给出优先级。在对严格优先级队列进行服务(即,在严格优先级队列中没有数据包或它已达到其共享)后,在非严格优先级队列中排队的数据包将以轮询方式进行服务。由于有三个此类队列,因此再次考虑为这些队列配置的共享。例如,如果传输队列1未达到其共享,则其优先级高于传输队列2,后者已达到其共享。一旦此类优先级较高的队列数据包出队,队列中已满足其共享的数据包将被考虑。
注意:在此情景中,优先级越高并不意味着DSCP、CoS或IP优先级值越高。它仅基于特定队列是否满足其共享。如果特定非严格优先级队列未达到其共享,则在已达到其共享的非严格优先级队列中,该队列被视为优先级较高的队列。