本文讨论硬件传输环的功能以及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%的Internet数据包。
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。根据SCR 3500 kbps,PA-A3分配tx_limit 137。要了解如何进行此计算,我们需要将SCR 3500 kbps转换为信元/秒。请注意(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
txlimit的目的是实施每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微码还跟踪每条虚电路的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环限制值。例如,如果数据包为1500字节,请设置16 =(4个数据包)*(4个粒子)的tx环限制值。
确保传输信用足以支持一个MTU大小的数据包和/或信元数等于VBR-nrt PVC的最大突发大小(MBS)。
使用低带宽虚电路(如128 kbps SCR)配置低值。例如,在SCR为160 kbps的低速VC上,10的发射环限制相对较高,并可能导致驱动程序级队列中出现显着延迟(例如,数百毫秒)。将tx-ring-limit调低到此配置中的最小值。
为高速虚电路配置更高的值。如果PA-A3的背压过大且发送环没有等待发送的分组的就绪供给,则选择小于四的值可以阻止VC以其配置的速率发送。确保低值不影响VC吞吐量。(请参阅Cisco Bug ID CSCdk17210。)
换句话说,传输环的大小需要足够小,以避免因排队而引入延迟,而传输环的大小需要足够大,以避免丢包和对基于TCP的流造成的影响。
接口首先从第3层排队系统删除数据包,然后在传输环上将其排队。服务策略仅适用于第3层队列中的数据包,对传输环透明。
传输环上的排队引入与环深度直接成比例的串行化延迟。过度的序列化延迟可能会影响延迟敏感型应用(如语音)的延迟预算。因此,思科建议减小承载语音的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个字节(所有其他流量)。 这些值产生的典型Internet数据包总大小为250字节。
注意:下表总结了大或小传输环尺寸的优缺点:
传输环的大小 | 优势 | 缺点 |
---|---|---|
高价值 | 建议使数据虚电路支持突发。 | 不建议用于语音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环限制值时,请考虑缓冲区描述符返回延迟。
此外,如果将tx环限制值配置为给定粒度为576字节的值,则1500字节的数据包将从队列中删除,如下所示:
PA-A3驱动程序将传输环中的第一个粒子排队,并记住此数据包存储在另外两个存储器粒子中。
在下次发送环空时,数据包的第二个粒子被放入发送环。
在下次发射环再次空时,第三粒子被放入发射环中。
即使传输环只包含一个576字节的粒子,MTU/端口速度仍是通过传输环的最坏延迟。
当tx-ring-limit命令通过vc-class语句应用于VC时,PA-A3不应用配置的值。通过在show atm vc detail命令中显示当前值来确认此结果。在Cisco IOS软件版本12.1(Cisco Bug ID CSCdm93064)中,使用vc-class调整传输环。CSCdv59010解决了Cisco IOS软件版本12.2的某些版本中的tx-ring-limit问题。当您通过vc-class语句将tx-ring-limit命令应用到ATM PVC时,传输环的大小不会被修改。在通过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捆绑接口上的输出丢弃问题。在ATM接口上的CSCdv89201中,如果tx-ring-limit值大于5,则会出现此问题。当分段被禁用或链路权重(分段大小限制)较大(在T1或E1等高速链路上很常见)且数据流量由小数据包和大数据包组成时,问题就变得尤为明显。启用分段和使用小分段大小(通过接口配置命令ppp multilink fragment delay设置)可显着改善操作。但是,您应先验证您的路由器是否有足够的处理能力来支持这些高级别的分段,而不会使系统CPU过载,然后才将其用作解决方法。
Cisco Bug ID CSCdw29890解决了CLI接受tx-ring-limit命令以用于ATM PVC捆绑包但未生效的问题。但是,您通常不需要更改ATM PVC捆绑包上的tx-ring-limit。原因是,减小环大小有效地将所有传输缓冲转移到QoS控制的队列,因此立即发送到达的优先级数据包以最小化低速接口上的延迟。使用ATM PVC捆绑包时,来自所有成员VC的数据包的信元始终同时发送(和交错),因此延迟自动最小化。
当前的Cisco IOS软件映像支持为Cisco 2600和3600系列路由器(Cisco Bug ID CSCdt73385)调整ATM网络模块上的传输环。 当前值显示在show atm vc输出中。