本文档阐明当在支持IP到ATM服务类别(CoS)的ATM路由器接口上启用每条虚电路排队功能时,路由器如何计算队列限制的大小。 思科的模块化服务质量(QoS)CLI(称为MQC)用于配置应用于逻辑接口(无论是主接口、子接口还是虚电路)的服务策略。这些服务策略实施一些QoS操作,从策略和整形到标记和排队。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
本文档没有任何特定的前提条件。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
启用每VC排队功能的思科路由器接口将ATM VC的数据包存储在两组队列中的一组中,具体取决于VC的拥塞级别:
队列 | 位置 | 排队方法 | 应用服务策略 | 调整命令 |
---|---|---|---|---|
硬件队列或传输环路 | 端口适配器或网络模块 | 仅 FIFO | 无 | tx-ring-limit |
第3层队列 | 第3层处理器系统或接口缓冲区 | 无 | Yes | 随排队方法变化:- vc-hold-limit - queue-limit |
拥塞定义为填充传输环(tx-ring-limit)。 请参阅了解和调整tx环限制值。
了解路由器何时使用第3层队列非常重要,因为服务策略仅适用于存储在第3层队列中的数据包。ATM端口适配器或网络模块与第3层处理器系统以以下方式协作:
ATM接口根据ATM整形速率在每个ATM永久虚电路(PVC)上传输信元。
ATM接口维护每VC硬件队列或传输环,其中存储等待传输到该VC的数据包。
当硬件队列或传输环填满时,ATM接口向第3层处理器系统提供显式背压。每条VC背压可防止单个ATM PVC不必要地过度消耗缓冲区。它通知第3层处理器停止将从特定VC发往ATM接口传输环的数据包取消排队,因为每VC队列已达到一定的占用级别。第3层处理器现在将超额数据包存储在第3层队列中。在此期间,第3层处理器继续转发发往其他非拥塞PVC的数据包。
当ATM接口在传输环上发送数据包并清空环时,它再次具有足够的缓冲区来存储数据包。它释放背压,第3层处理器将新数据包排队到ATM接口。
当所有PVC的ATM接口上缓冲的数据包总数与总可用缓冲空间相比达到一定级别时,ATM接口在聚合全VC级别提供背压。这种背压通知第3层处理器停止向ATM接口发送任何数据包。
重要的是,通过此通信系统,ATM接口识别其特定VC的传输环已满,并限制从第3层处理器系统接收新数据包。因此,当VC拥塞时,丢弃决策从发送环的先入先出(FIFO)队列中的随机、后入/先丢弃决策移动到基于由第3层处理器实现的IP级服务策略的差分决策。
第3层队列始终有队列限制。此值定义队列中的数据包数。当此队列填满时,路由器会启动丢弃策略。此策略可以是尾部丢弃或加权随机早期检测(WRED)。 换句话说,队列限制定义在丢弃开始之前可以在第3层队列中存储多少个数据包。
路由器自动分配默认队列限制值。计算值随排队方法和平台而变化。重要的是,队列限制必须足够小,以避免因排队而引入延迟,但必须足够大,以避免丢包和对基于TCP的流造成的影响。
在Cisco 7500系列和FlexWAN等分布式平台上,默认值随系统中接口数量而变化。因此,与具有数百个子接口和VC的系统相比,仅具有两个接口的系统中的类可能会收到更多的缓冲区。路由器为每个类分配一个最小值,以确保有足够的缓冲区以线速为接口提供数据。队列限制表示接口的信用限制。换句话说,路由器会根据接口、PVC和类的带宽比例在接口、PVC和类之间分配缓冲区。默认情况下,queue-limit值不会超订用可用缓冲区。
以下各节将更详细地讨论队列限制。
在非分布式平台上的ATM VC上,在支持Cisco IOS®软件版本时,默认启用每条VC队列和第3层队列。FIFO是在未配置特定排队机制时应用于第3层队列的默认排队方法。第3层队列默认使用FIFO,因为ATM接口上的默认排队算法也是FIFO。最初,这些队列仅支持40个队列限制。我们可以在以下输出中看到:
router#show queueing interface atm 2/0.10 Interface ATM2/0.10 VC 10/32 Queueing strategy: FIFO Output queue 0/40, 244 drops per VC
从Cisco IOS软件版本12.1(5)T开始,您可以使用vc-hold-queue命令将每VC FIFO队列的大小调整为5到1024之间的值。
queue-limit命令仅适用于使用bandwidth命令配置了基于类的加权公平队列(CBWFQ)的类。queue-limit命令定义第3层队列在丢弃开始之前将存储的数据包数。换句话说,它是第3层队列的深度。
默认queue-limit值随平台而变。
Cisco 2600、3600、7200系列路由器和MC3810:默认值为64。在2600系列的ATM网络模块上捕获了以下输出示例。
router#show queueing interface atm 2/0.10 Interface ATM2/0.10 VC 10/32 Queueing strategy: weighted fair Total output drops per VC: 1539 Output queue: 0/512/64/1539 (size/max total/threshold/drops) Conversations 0/37/128 (active/max active/max total) Reserved Conversations 0/0 (allocated/max allocated)
Cisco 7500系列和FlexWAN:默认值通过为每个类别分配其父缓冲区的比例份额来计算。该比例基于分配给类的带宽与父级带宽的比较。具体而言,队列限制由最大延迟500ms和平均数据包大小250字节确定。例如,一个带宽为1 MB的类的队列限制为1000000 /(250 x 8 x 2)= 250。重要的是,它还基于以下内容:
可用SRAM或数据包内存的数量。
接口数量,因为可用SRAM必须划分在接口之间。
interface ATM9/1/0.100 point-to-point ip address 1.1.1.1 255.255.255.0 pvc 1/100 ubr 1000 service-policy out pmap flexwan#show policy-map interface atm 9/1/0.100 ATM9/1/0.100: VC 1/100 service-policy output: pmap queue stats for all priority classes: queue size 0, queue limit 75 packets output 0, packet drops 0 tail/random drops 0, no buffer drops 0, other drops 0 class-map: e1 (match-all) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps match: ip dscp 10 Priority: kbps 300, burst bytes 7500, b/w exceed drops: 0 class-map: e2 (match-all) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps match: ip dscp 20 queue size 0, queue limit 75 packets output 0, packet drops 0 tail/random drops 0, no buffer drops 0, other drops 0 bandwidth: kbps 300, weight 42 class-map: class-default (match-any) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps match: any 0 packets, 0 bytes 5 minute rate 0 bps queue size 0, queue limit 33 packets output 2, packet drops 0 tail/random drops 0, no buffer drops 0, other drops 0
注意:通用接口处理器(VIP)和FlexWAN选择默认队列限制值,并使用第一组数据包计数统计信息将其发送到主处理器(如7500系列上的路由交换处理器[RSP])。因此,在ATM VC传输流量之前,show policy-map interface的输出中可能会显示不正确的值。
低延迟队列(LLQ)实现最小和最大带宽保证,您可以使用priority命令配置这两种。LLQ实施一种设备,在拥塞期间将优先级流量限制到其分配的带宽,以确保非优先级流量(例如路由数据包和其他数据)不会饿死。由于策略用于丢弃数据包且未施加队列限制,因此queue-limit命令不能与priority命令一起使用。
WRED可配置为第3层队列中数据包的可选丢弃策略。您可以配置WRED和CBWFQ或低延迟队列(LLQ)等花哨排队机制。
在VIP和FlexWAN上,默认WRED参数直接从默认队列限制派生。具体而言,最大阈值设置为默认队列限制的一半,并且最小阈值按比例缩小。
此外,默认WRED阈值会考虑与VC关联的ATM整形参数。为适应以较高速率出现的较大突发,VC整形速率越高,默认最小和最大阈值越大。例如,对于10-kbps的ATM,应用于特定路由器中VC的默认WRED参数如下所示:
nf-7505-1# show running-config interface ATM1/1/0.47 point-to-point atm pvc 47 0 47 aal5snap 10 10 1 random-detect wredgroup1 nf-7505-1# show queueing red VC 0/47 - random-detect group default: exponential weight 9 precedence min-threshold max-threshold mark-probability --------------------------------------------------------------- 0: 20 40 1/10 1: 22 40 1/10 2: 24 40 1/10 3: 26 40 1/10 4: 28 40 1/10 5: 30 40 1/10 6: 32 40 1/10 7: 34 40 1/10
相比之下,以下是同一路由器应用于以9 Mbps持续信元速率(SCR)和10 Mbps峰值信元速率(PCR)整形的VC的默认WRED参数:
nf-7505-1#show running-config interface ATM1/1/0.49 point-to-point atm pvc 49 0 49 aal5snap 10000 9000 100 random-detect wredgroup3 nf-7505-1#show queueing red VC 0/49 - random-detect group default: exponential weight 9 precedence min-threshold max-threshold mark-probablity --------------------------------------------------------------- 0: 72 144 1/10 1: 81 144 1/10 2: 90 144 1/10 3: 99 144 1/10 4: 108 144 1/10 5: 117 144 1/10 6: 126 144 1/10 7: 135 144 1/10
queue-limit定义第3层队列在任何给定时间可以存储的最大数据包数。max-threshold定义最大平均队列深度。更改队列限制时,请确保您还调整了WRED阈值,且配置的队列限制大于WRED最大阈值。
即使在配置了WRED的VC上,当平均队列大小超过队列限制时到达VC的所有数据包都会被尾部丢弃。因此,在以下配置中,区分服务代码点(DSCP)32的队列限制400和最小阈值460在平均队列大小为400个数据包时实施尾部丢弃,并有效防止WRED生效。
policy-map ppwe class voip priority 64 class bus bandwidth 168 random-detect dscp-based random-detect exponential-weighting-constant 10 random-detect dscp 8 11 66 1 random-detect dscp 32 460 550 1 queue-limit 400
注意:在调整默认阈值时,另请参阅《IP to ATM Class of Service Phase 1设计指南》中的“WRED优化注意事项”。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
15-Nov-2007 |
初始版本 |