本文档讨论硬件传输环的功能以及tx-ring-limit命令在支持每虚电路(VC)排队的ATM路由器接口硬件上的用途。
配置有服务策略的思科路由器接口将ATM VC的数据包存储在两组队列中的一个队列中,具体取决于VC的拥塞级别:
| 队列 | 位置 | 排队方法 | 应用服务策略 | 调整命令 |
|---|---|---|---|---|
| 硬件队列或传输环路 | 端口适配器或网络模块 | 仅 FIFO | 无 | tx-ring-limit |
| 第3层队列 | 第3层处理器系统或接口缓冲区 | 不适用 | Yes | 随排队方法变化:- vc-hold-queue - queue-limit |
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
在讨论传输环路之前,我们首先需要了解粒子是什么。粒子是许多平台上数据包缓冲的基本构建块,包括Cisco 7200路由器系列和Cisco 7500路由器系列上的通用接口处理器(VIP)。
根据数据包的长度,Cisco IOS®软件使用一个或多个粒子来存储数据包。请看以下示例。接收1200字节的数据包时,IOS会检索下一个空闲粒子,并将数据包数据复制到该粒子中。填充第一个粒子后,IOS会移动到下一个自由粒子,将其链接到第一个粒子,然后继续将数据复制到第二个粒子中。完成时,数据包的1200个字节存储在三个不连续内存片段中,IOS在逻辑上将这些不连续内存片段作为单个数据包缓冲区的一部分。
IOS的粒度因平台而异。给定池中的所有粒子大小相同。这种一致性简化了粒子管理算法,有助于提高内存使用效率。
与公共和专用接口池一起,Cisco IOS会创建称为环的特殊缓冲区控制结构。Cisco IOS和接口控制器使用这些环来控制使用哪些缓冲区来接收数据包和向介质传输数据包。环本身由媒体控制器特定的元素组成,这些元素指向I/O内存中其他位置的各个数据包缓冲区。
每个接口都有一对环 — 用于接收数据包的接收环和用于发送数据包的发送环。环的大小因接口控制器而异。一般来说,传输环路的大小取决于接口或VC的带宽,并且是2的幂(Cisco Bug ID CSCdk17210)。
| 接口 | 振铃 | |||||
|---|---|---|---|---|---|---|
| 线速(Mb/s)< | 2 | 10 | 20 | 30 | 40 | .. |
| txcount | 2 | 4 | 8 | 16 | 32 | 64 |
注意:在7200系列平台上,如果数据包由IOS生成,则传输环数据包缓冲区来自交换数据包的源接口的接收环,或来自公共池。它们从传输环路中取消分配,并在传输负载数据后返回到其原始池。
为了确保高转发性能,PA-A3端口适配器使用单独的接收和传输分段和重组(SAR)芯片。每个SAR都由自己的板载内存子系统支持,用于存储数据包以及VC表等关键数据结构。此内存特别包括4 MB的SDRAM,它被分块为粒子。
下表说明了PA-A3上接收和发送路径上的颗粒的数量和大小。
| 振铃 | 粒度 | 粒子数 |
|---|---|---|
| 接收环 | 288 bytes | 不适用 |
| 传输环 | 576*字节 | 6000(保留144个颗粒) |
*传输环的粒度也描述为580字节。此值包括随数据包在路由器内部传输的4字节ATM核心报头。
之所以选择上表中的大小,是因为它们可以被48(信元的有效负载字段的大小)和缓存行大小(32字节)整除,以实现最高性能。它们旨在防止SAR在数据包需要多个缓冲区时引入缓冲区间延迟。传输颗粒大小为576个字节也被选择用于覆盖约90%的互联网数据包。
PA-A3驱动程序为每个VC分配一个默认传输环值。此值因分配给VC的ATM服务类别而异。下表列出了默认值。
| VC服务类别 | PA-A3-OC3、T3、E3默认传输环值 | PA-A3-IMA默认传输环值 | PA-A3-OC12默认传输环值 | 执行时间 |
|---|---|---|---|---|
| VBR-nrt | 根据公式**:(48 x SCR)/(Particle_size x 5)最小值为40,使用非常低的SCR覆盖任何小于40的计算值。注意:SCR是包含ATM开销的信元速率。 | 基于公式:(48 x SCR)/(Particle_size x 5)最小值为40,使用非常低的SCR覆盖任何小于40的计算值。注意:SCR是包含ATM开销的信元速率。 | 基于以下公式:平均速率(SCR)* 2 * TOTAL_CREDITS / VISIBLE_BANDWIDTH TOTAL_CREDITS = 8192 VISIBLE_BANDWIDTH = 599040注:如果此公式计算的值小于默认值128,则VC的传输环路限制设置为128。 | 始终 |
| ABR | 128 | 128 | 不适用 | 始终* |
| UBR | 40 | 128 | 128 | 仅当总信用利用率超过75%或tx_threshold值时,如show controller atm所示。 |
*最初,PA-A3-OC12没有实现VBR-nrt PVC对当前传输环值的始终活动限制。Bug ID CSCdx11084(仅限注册用户)解决了此问题。.
**SCR应该以信元/秒为单位。
最初,传输环的值只能通过隐藏命令显示。show atm vc {vcd}命令现在显示当前值。
您还可以使用debug atm events命令查看PA-A3驱动程序和主机CPU之间的VC设置消息。在7200系列路由器的PA-A3上捕获了以下输出组。传输环值显示为tx_limit值,它实现在传输方向上为特定VC分配的粒子缓冲区配额。
PVC 1/100配置为VBR-nrt。基于3500 kbps的SCR,PA-A3分配的tx_limit为137。要了解如何进行此计算,我们需要将3500 kbps的SCR转换为信元/秒。请注意,(3,500,000位/秒)*(1字节/8位)*(1信元/53位)=(3,500,000信元)/(8 * 53秒)= 8254信元/秒。一旦我们有SCR值(单位为信元/秒),就可以将上面的公式应用于ger tx_limit = 137。
7200-17(config)#interface atm 4/0 7200-17(config-if)#pvc 1/100 7200-17(config-if-atm-vc)#vbr-nrt 4000 3500 94 7200-17(config-if-atm-vc)# *Oct 14 17:56:06.886: Reserved bw for 1/100 Available bw = 141500 7200-17(config-if-atm-vc)#exit 7200-17(config-if)#logging *Oct 14 17:56:16.370: atmdx_setup_vc(ATM4/0): vc:6 vpi:1 vci:100 state:2 config_status:0 *Oct 14 17:56:16.370: atmdx_setup_cos(ATM4/0): vc:6 wred_name:- max_q:0 *Oct 14 17:56:16.370: atmdx_pas_vc_setup(ATM4/0): vcd 6, atm hdr 0x00100640, mtu 4482 *Oct 14 17:56:16.370: VBR: pcr 9433, scr 8254, mbs 94 *Oct 14 17:56:16.370: vc tx_limit=137, rx_limit=47 *Oct 14 17:56:16.374: Created 64-bit VC count
PVC 1/101配置为ABR。PA-A3分配默认ABR tx_limit值128。(请参阅上表。)
7200-17(config-if)#pvc 1/102 7200-17(config-if-atm-vc)#abr ? <1-155000> Peak Cell Rate(PCR) in Kbps rate-factors Specify rate increase and rate decrease factors (inverse) 7200-17(config-if-atm-vc)#abr 4000 1000 7200-17(config-if-atm-vc)# *Oct 14 17:57:45.066: Reserved bw for 1/102 Available bw = 140500 *Oct 14 18:00:11.662: atmdx_setup_vc(ATM4/0): vc:8 vpi:1 vci:102 state:2 config_status:0 *Oct 14 18:00:11.662: atmdx_setup_cos(ATM4/0): vc:8 wred_name:- max_q:0 *Oct 14 18:00:11.662: atmdx_pas_vc_setup(ATM4/0): vcd 8, atm hdr 0x00100660, mtu 4482 *Oct 14 18:00:11.662: ABR: pcr 9433, mcr 2358, icr 9433 *Oct 14 18:00:11.662: vc tx_limit=128, rx_limit=47 *Oct 14 18:00:11.666: Created 64-bit VC counters
PVC 1/102配置为UBR。PA-A3分配默认UBR tx_limit值40。(请参阅上表。)
7200-17(config-if)#pvc 1/101 7200-17(config-if-atm-vc)#ubr 10000 7200-17(config-if-atm-vc)# *Oct 14 17:56:49.466: Reserved bw for 1/101 Available bw = 141500 *Oct 14 17:57:03.734: atmdx_setup_vc(ATM4/0): vc:7 vpi:1 vci:101 state:2 config_status:0 *Oct 14 17:57:03.734: atmdx_setup_cos(ATM4/0): vc:7 wred_name:- max_q:0 *Oct 14 17:57:03.734: atmdx_pas_vc_setup(ATM4/0): vcd 7, atm hdr 0x00100650, mtu 4482 *Oct 14 17:57:03.734: UBR: pcr 23584 *Oct 14 17:57:03.734: vc tx_limit=40, rx_limit=117 *Oct 14 17:57:03.738: Created 64-bit VC counters
tx_limit的目的是实现每个VC的传输信用或内存分配方案,防止任何持续超订用的VC占用所有数据包缓冲区资源,并阻碍其他VC在其流量合同内传输正常流量。
PA-A3在以下两种情况下实施内存信用检查:
每个VBR-nrt和ABR VC的单独配额 — 比较每个VC的tx_count和tx_limit值。当tx_count大于任意一条VC上的tx_limit时,它丢弃后续数据包。需要注意的是,数据包的突发量可能会在某一时刻超过VBR-nrt VC的传输环路,并导致输出丢弃。
总配额 — 考虑tx_threshold值。只有当PA-A3上的总数据包缓冲区使用量达到此预设阈值时,PA-A3才允许在这类VC上实施流量管制,从而在UBR VC上实现更大的突发量。
注意:如果数据包需要多个粒子,并且传输环路已满,则PA-A3允许VC超过其配额(如果粒子可用)。此方案旨在支持少量数据包突发,且不会出现输出丢弃。
show controller atm命令显示与传输信用相关的多个计数器。
7200-17#show controller atm 4/0 Interface ATM4/0 is up Hardware is ENHANCED ATM PA - OC3 (155000Kbps) Framer is PMC PM5346 S/UNI-155-LITE, SAR is LSI ATMIZER II Firmware rev: G125, Framer rev: 0, ATMIZER II rev: 3 idb=0x622105EC, ds=0x62217DE0, vc=0x62246A00 slot 4, unit 9, subunit 0, fci_type 0x0059, ticks 190386 1200 rx buffers: size=512, encap=64, trailer=28, magic=4 Curr Stats: VCC count: current=7, peak=7 SAR crashes: Rx SAR=0, Tx SAR=0 rx_cell_lost=0, rx_no_buffer=0, rx_crc_10=0 rx_cell_len=0, rx_no_vcd=0, rx_cell_throttle=0, tx_aci_err=0 Rx Free Ring status: base=0x3E26E040, size=2048, write=176 Rx Compl Ring status: base=0x7B162E60, size=2048, read=1200 Tx Ring status: base=0x3E713540, size=8192, write=2157 Tx Compl Ring status: base=0x4B166EA0, size=4096, read=1078 BFD Cache status: base=0x62240980, size=6144, read=6142 Rx Cache status: base=0x62237E80, size=16, write=0 Tx Shadow status: base=0x62238900, size=8192, read=2143, write=2157 Control data: rx_max_spins=3, max_tx_count=17, tx_count=14 rx_threshold=800, rx_count=0, tx_threshold=4608 tx bfd write indx=0x4, rx_pool_info=0x62237F20
下表描述了PA-A3用于实施整体传输信用方案的值:
| 价值 | 描述 |
|---|---|
| max_tx_count | PA-A3微码所保存的最大可传输粒子数的柱状图。 |
| tx_count | 当前由PA-A3微码保存的发射粒子总数。 注:PA-A3微码还会跟踪每条VC的tx_count。当粒子从PA-A3驱动程序发送到PA-A3微码时,tx_count会增加1。 |
| tx_threshold | 当可用数据包缓冲区总量低于此阈值时,PA-A3在UBR VC上实施传输信用。请注意,PA-A3始终实施VBR和ABR VC的传输信用。 |
传输环用作要传输的线路中数据包的暂存区。路由器需要在传输环路上将足够数量的数据包排入队列,并确保接口驱动程序具有用于填充可用信元时隙的数据包。
最初,PA-A3驱动程序在应用具有低延迟队列(LLQ)的服务策略时未调整传输环大小。对于当前映像,PA-A3会调低上述默认值(Cisco Bug ID CSCds63407)的值,以最小化与排队相关的延迟。
调整传输环路的主要原因是减少排队导致的延迟。调整传输环路时,请考虑以下因素:
在任何网络接口上,排队都会强制在延迟和接口可以承受的突发量之间进行选择。较大的队列大小可支持较长的突发量,同时会增加延迟。当您认为VC的流量遇到不必要的延迟时,调整队列的大小。
考虑数据包大小。配置一个可容纳四个数据包的tx-ring-limit值。例如,如果数据包为1500字节,请将tx-ring-limit值设置为16 =(4个数据包)*(4个粒子)。
确保传输信用足够大,可以支持一个MTU大小的数据包和/或与VBR-nrt PVC的最大突发大小(MBS)相等的信元数。
使用低带宽VC(例如128 kbps SCR)配置低值。例如,在SCR为160 kbps的低速VC上,tx-ring-limit为10相对较高,并且可能导致驱动程序级队列中出现大量延迟(例如,数百毫秒)。在此配置中,将tx-ring-limit调整为其最小值。
为高速VC配置更高的值。如果PA-A3过于积极地实施背压,并且发送环没有现成的等待发送的数据包供应,则选择小于4的值可能会阻止VC以其配置的速率进行传输。确保较小的值不会影响VC吞吐量。(请参阅思科漏洞ID CSCdk17210。)
换句话说,传输环的大小需要足够小,以避免由于排队而引入延迟,并且它需要足够大,以避免丢弃和由此对基于TCP的流产生的影响。
接口首先从第3层排队系统中删除数据包,然后在传输环上将其排队。服务策略仅适用于第3层队列中的数据包,对传输环路是透明的。
在传输环上排队会引入与环深度成正比的序列化延迟。过长的序列化延迟可能会影响延迟敏感型应用(如语音)的延迟预算。因此,Cisco建议减小承载语音的VC的传输环的大小。根据传输环路引入的序列化延迟量(以秒表示)选择值。使用以下公式:
((P*8)*D)/S P = Packet size in bytes. Multiply by eight to convert to bits. D = Transmit-ring depth. S = Speed of the VC in bps.
注意: Internet上的IP数据包通常为以下三种大小之一:64字节(例如控制消息)、1500字节(例如文件传输)或256字节(所有其他流量)。 这些值会生成一个典型的250字节的总Internet数据包大小。
注意:下表总结了较大或较小传输环大小的优缺点:
| 传输环的大小 | 优势 | 缺点 |
|---|---|---|
| 高价值 | 建议数据VC适应突发流量。 | 建议不要用于语音VC。会增加延迟和抖动。 |
| 低值 | 建议语音VC减少由于排队和抖动导致的延迟。 | 建议不要用于相对高速的VC。如果调整到线路空闲时没有数据包准备发送这样的低值,则会导致吞吐量降低。 |
在VC配置模式下使用tx-ring-limit命令调整传输环路的大小。
7200-1(config-subif)#pvc 2/2 7200-1(config-if-atm-vc)#? ATM virtual circuit configuration commands: abr Enter Available Bit Rate (pcr)(mcr) broadcast Pseudo-broadcast class-vc Configure default vc-class name default Set a command to its defaults encapsulation Select ATM Encapsulation for VC exit-vc Exit from ATM VC configuration mode ilmi Configure ILMI management inarp Change the inverse arp timer on the PVC no Negate a command or set its defaults oam Configure oam parameters oam-pvc Send oam cells on this pvc protocol Map an upper layer protocol to this connection. random-detect Configure WRED service-policy Attach a policy-map to a VC transmit-priority set the transmit priority for this VC tx-ring-limit Configure PA level transmit ring limit ubr Enter Unspecified Peak Cell Rate (pcr) in Kbps. vbr-nrt Enter Variable Bit Rate (pcr)(scr)(bcs) 7200-1(config-if-atm-vc)#tx-ring-limit ? <3-6000> Number (ring limit) <cr>
使用show atm vc命令显示当前配置的值。
7200-1#show atm vc VC 3 doesn't exist on interface ATM3/0 ATM5/0.2: VCD: 3, VPI: 2, VCI: 2 VBR-NRT, PeakRate: 30000, Average Rate: 20000, Burst Cells: 94 AAL5-LLC/SNAP, etype:0x0, Flags: 0x20, VCmode: 0x0 OAM frequency: 0 second(s) PA TxRingLimit: 10 InARP frequency: 15 minutes(s) Transmit priority 2 InPkts: 0, OutPkts: 0, InBytes: 0, OutBytes: 0 InPRoc: 0, OutPRoc: 0 InFast: 0, OutFast: 0, InAS: 0, OutAS: 0 InPktDrops: 0, OutPktDrops: 0 CrcErrors: 0, SarTimeOuts: 0, OverSizedSDUs: 0 OAM cells received: 0 OAM cells sent: 0 Status: UP
此外,使用show atm pvc vpi/vci命令可查看当前的传输环路限制和接收环路限制。以下输出是在运行Cisco IOS软件版本12.2(10)的7200系列路由器上捕获的。
viking#show atm pvc 1/101 ATM6/0: VCD: 2, VPI: 1, VCI: 101 UBR, PeakRate: 149760 AAL5-LLC/SNAP, etype:0x0, Flags: 0xC20, VCmode: 0x0 OAM frequency: 0 second(s), OAM retry frequency: 1 second(s), OAM retry frequency: 1 second(s) OAM up retry count: 3, OAM down retry count: 5 OAM Loopback status: OAM Disabled OAM VC state: Not Managed ILMI VC state: Not Managed VC TxRingLimit: 40 particles VC Rx Limit: 800 particles
在传输路径上,主机CPU将负载从主机缓冲区传输到PA-A3上的本地粒子缓冲区。在PA-A3上运行的固件将缓存多个缓冲区描述符,并在组中释放它们。在缓存期间,PA-A3不会接受新数据包,即使本地内存的内容已在物理线路上传输。此方案的目的是优化整体性能。因此,当配置非默认tx-ring-limit值时,请考虑缓冲区描述符返回延迟。
此外,如果将tx-ring-limit值配置为1,且给定大小为576字节,则会从队列中删除一个1500字节的数据包,如下所示:
PA-A3驱动程序将传输环中的第一个粒子排队,并记住此数据包存储在另外两个内存粒子中。
在下一次传输环为空时,将分组的第二个粒子置于传输环中。
在下一次发送环再次为空期间,将第三粒子放到发送环中。
尽管传输环只有一个576字节的粒子,但MTU/端口速度仍然是传输环中最糟糕的延迟。
通过vc-class语句将tx-ring-limit命令应用于VC时,PA-A3不应用配置的值。通过在show atm vc detail命令中显示当前值来确认此结果。使用vc-class调整传输环路是在Cisco IOS软件版本12.1(Cisco Bug ID CSCdm93064)中实施的。CSCdv59010解决了某些版本的Cisco IOS软件版本12.2中的tx-ring-limit问题。当您通过vc-class语句对ATM PVC应用tx-ring-limit命令时,传输环大小不会修改。通过vc-class和class-vc命令对应用此命令后,使用show atm vc detail命令确认此结果。
当添加到运行Cisco IOS软件版本12.2(1)的Cisco 7200系列路由器中PA-A3上的PVC时,会重复tx-ring-limit命令,如下所示(Cisco Bug ID CSCdu19350)。
interface ATM1/0.1 point-to-point description dlci-101, cr3640 ip unnumbered Loopback0 pvc 0/101 tx-ring-limit 3 tx-ring-limit 3
这种情况是无害的,不会影响路由器的运行。
当流量速率远低于线路速率时,Cisco bug ID CSCdv71623可解决多链路PPP捆绑接口上的输出丢弃问题。在tx-ring-limit值大于5的ATM接口上的CSCdv89201中出现此问题。当分段被禁用或者当链路权重(分段大小限制)较大时(例如T1或E1等高速链路上常见),并且数据流量由小数据包和大数据包混合组成时,问题就变得特别明显。启用分段并使用较小的分段大小(通过接口配置命令ppp multilink fragment delay设置)可显着改善操作。但是,在将路由器用作解决方法之前,您应检验路由器是否有足够的处理能力来支持这些高级别的分段而不会使系统CPU过载。
Cisco Bug ID CSCdw29890解决了ATM PVC捆绑包的CLI接受tx-ring-limit命令但不生效的问题。但是,通常不需要更改ATM PVC捆绑包上的tx-ring-limit。原因是,减小环大小有效地将所有传输缓冲转移到QoS控制的队列,因此到达的优先级数据包会立即被传输,以最小化低速接口上的延迟。使用ATM PVC捆绑包时,来自所有成员VC的数据包的信元始终同时发送(并交错),因此延迟会自动最小化。
当前的Cisco IOS软件映像支持调整Cisco 2600和3600系列路由器的ATM网络模块上的传输环(Cisco Bug ID CSCdt73385)。 当前值显示在show atm vc输出中。