本文档回顾在同一路由器上启用压缩和服务质量(QoS)的Cisco IOS®软件功能的已知问题。
Cisco IOS软件提供多种功能,可优化广域网(WAN)链路,以缓解广域网带宽瓶颈。压缩是一种有效的优化方法,它包括两种类型:
数据压缩 — 为每端提供一种编码方案,允许从链路发送端的帧中删除字符,然后在接收端正确替换它们。由于压缩帧占用的带宽较少,因此每单位时间可以传输更多数量。数据压缩方案的示例包括STAC、Microsoft点对点压缩(MPPC)和帧中继论坛9(FRF.9)。
报头压缩 — 压缩开放系统互联(OSI)参考模型各层的报头。示例包括传输控制协议(TCP)报头压缩、压缩RTP(cRTP)和压缩Internet协议/用户数据报协议(IP/UDP)。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
数据压缩的基本功能是减小通过网络链路传输的数据帧的大小。减小帧大小可缩短通过网络传输帧所需的时间。
网际互联设备上最常用的两种数据压缩算法是Stacker和Predictor。
以下示例配置显示了在帧中继接口或子接口上启用负载压缩的两种方法。
interface Serial0/5 ip address 10.0.0.1 255.255.255.0 no ip directed-broadcast encapsulation frame-relay IETF clockrate 1300000 frame-relay map ip 10.0.0.2 16 broadcast IETF payload-compression FRF9 stac interface Serial0/0.105 point-to-point ip address 192.168.162.1 255.255.255.0 no ip directed-broadcast frame-relay interface-dlci 105 IETF class 128k frame-relay payload-compression FRF9 stac
硬件辅助数据压缩实现与基于软件的数据压缩相同的整体功能,但通过从主CPU卸载计算来加快压缩速率。换言之:
软件压缩 — 压缩在安装在路由器主处理器中的Cisco IOS软件中实施。
硬件压缩 — 压缩在安装在系统插槽中的压缩硬件中实施。硬件压缩可消除安装在路由器中的主处理器的压缩和解压责任。
下表列出了思科压缩硬件和支持的平台:
压缩硬件 | 支持的平台 | 备注 |
---|---|---|
SA-Comp/1和SA-Comp/4服务适配器(CSA) | 思科7000和7500系列路由器中的思科7200系列路由器和第二代通用接口处理器(VIP2) | 支持通过配置了点对点协议(PPP)或帧中继封装的串行接口使用Stacker算法。 |
NM-COMPR | 思科 3600 系列路由器 | 使用FRF.9压缩算法支持PPP链路和帧中继链路上的Stacker算法。 |
AIM-COMPR4 | 仅Cisco 3660系列路由器 | 支持Lempel-Ziv标准(LZS)和MPPC算法。 |
使用命令(如compress stac)在串行接口上配置压缩,如果可用,则自动启用硬件压缩。否则,将启用软件压缩。可以使用compress stac software命令强制使用软件压缩。
本节讨论思科传统优先级队列(PQ)功能和压缩硬件已解决的问题。压缩硬件最初从PQ主动出队的数据包,有效地消除了PQ的优势。换句话说,PQ工作正常,但排队功能已移至压缩硬件自己的队列(holdq、hw ring和compQ),这些队列严格是先入先出(FIFO)。 此问题的症状记录在Cisco Bug ID CSCdp33759(标记为CSCdm91180的重复)中。
分辨率修改压缩硬件的驱动程序。具体来说,它通过根据接口的带宽减小硬件队列的大小来限制压缩硬件对数据包排队的速率。这种背压机制可确保数据包保持在花哨的队列中,而不是保留在压缩硬件的队列中。有关详细信息,请参阅以下Bug ID:
注意:有关这些Bug ID的详细信息,请使用Bug Toolkit(仅限注册的客户)进行查找。
CSCdm91180 — 适用于帧中继封装和压缩服务适配器(CSA)。
CSCdp33759(和CSCdr18251) — 适用于PPP封装和CSA。
CSCdr18251 — 适用于PPP封装和异步接口模块压缩(AIM-COMPR)。
Cisco 3660压缩的硬件级队列可在show pas caim stats命令的以下输出示例中查看。如果硬件压缩队列存储许多数据包,则从PQ出列的数据包会在此队列的尾端等待,从而出现延迟。
Router> show pas caim stats 0 CompressionAim0 ds:0x80F56A44 idb:0x80F50DB8 422074 uncomp paks in --> 422076 comp paks out 422071 comp paks in --> 422075 uncomp paks out 633912308 uncomp bytes in --> 22791798 comp bytes out 27433911 comp bytes in --> 633911762 uncomp bytes out 974 uncomp paks/sec in --> 974 comp paks/sec out 974 comp paks/sec in --> 974 uncomp paks/sec out 11739116 uncomp bits/sec in --> 422070 comp bits/sec out 508035 comp bits/sec in --> 11739106 uncomp bits/sec out 433 seconds since last clear holdq: 0 hw_enable: 1 src_limited: 0 num cnxts: 4 no data: 0 drops: 0 nobuffers: 0 enc adj errs: 0 fallbacks: 0 no Replace: 0 num seq errs: 0 num desc errs: 0 cmds complete: 844151 Bad reqs: 0 Dead cnxts: 0 No Paks: 0 enq errs: 0 rx pkt drops: 0 tx pkt drops: 0 >dequeues: 0 requeues: 0 drops disabled: 0 clears: 0 ints: 844314 purges: 0 no cnxts: 0 bad algos: 0 no crams: 0 bad paks: 0 # opens: 0 # closes: 0 # hangs: 0
注意: CSCdr86700从不支持CSA的平台删除CSCdm91180中实施的更改。
此外,在排除此问题时,小数据包(约4字节)和特定重复模式(例如0xCCDABCD)的数据包扩展问题使用Bug ID CSCdm11401解决。小数据包不太可能与流中的其他数据包相关,尝试压缩它们可能导致扩展数据包或导致字典重置。根本原因是CSA上使用的芯片有问题。Cisco Bug ID CSCdp64837通过更改FRF.9压缩代码以避免压缩负载小于60字节的数据包来解决此问题。
与硬件压缩相比,配置了PPP封装的接口不支持软件压缩和花哨队列,包括自定义、优先级和加权公平队列。此限制记录在Bug IDs CSCdj45401和CSCdk86833中。
限制的原因是PPP压缩不是无状态的,并且在数据流上维护压缩历史记录以优化压缩比。必须保留压缩数据包,以保持压缩历史记录。如果数据包在排队之前被压缩,则必须将其放入单个队列。如同自定义队列和优先级队列一样,将它们放入不同的队列可能会导致数据包顺序混乱,从而破坏压缩。替代解决方案不是最优的,尚未实施。这些替代方案包括:在数据包出列时压缩数据包(因性能原因不可接受),为每个队列维护单独的压缩历史记录(不支持并涉及大量开销),以及重置每个数据包的压缩历史记录(大大影响压缩比)。 解决方法是,您可以配置高级数据链路控制(HDLC)封装,但此配置可能会影响系统性能,不推荐使用。而是使用硬件压缩。
RFC 1889 指定RTP,该RTP管理IP语音(VoIP)的音频路径传输。RTP提供如排序等服务来识别丢失的数据包,以及32位值来识别和区分组播流中的多个发件人。重要的是,它不提供或确保QoS。
VoIP数据包由一个或多个语音编解码器样本或封装在40字节IP/UDP/RTP报头中的帧组成。40字节是典型的20字节VoIP负载(尤其是低速链路)的相对较大的开销。RFC 2508 指定压缩RTP(cRTP),该协议旨在将IP/UDP/RTP报头在未发送UDP校验和的情况下减少为两个字节,或将校验和减少为四个字节。本文档中定义的压缩算法在很大程度上借鉴了RFC 1144中所述的TCP/IP报头压缩设计 。
RFC 2508实际上指定了cRTP的两种格式:
压缩RTP(CR) — 当IP、UDP和RTP报头保持一致时使用。所有三个报头都被压缩。
压缩UDP(CU) — 当RTP时间戳发生较大更改或RTP负载类型发生更改时使用。IP和UDP报头已压缩,但RTP报头未压缩。
Cisco IOS软件版本12.1(5)T对Cisco 2600、3600和7200系列路由器上的帧中继永久虚电路(PVC)的压缩进行了几项改进。这些改进包括:
在思科IOS版本12.1(5)T之前 | 思科IOS版本12.1(5)T和12.2 |
---|---|
确保语音质量所需的低速广域网边缘分段方法不适用于硬件压缩接口。这些分段方法(包括MLPPP/LFI、FRF.11 Annex C和FRF.12)与基于软件的压缩配合使用。 | 分段(FRF.12或链路分段和交织(LFI))与硬件压缩一起受支持。此外,FRF.12和FRF.11 Annex-C分段在同一PVC上支持FRF.9硬件压缩。来自优先级队列的语音数据包具有低延迟队列(LLQ),可绕过FRF.9压缩引擎。数据包被压缩。 |
FRF.9压缩仅在IETF封装PVC上受支持 | 同一PVC上支持cRTP和FRF.9压缩。配置了思科和互联网工程任务组(IETF)封装的PVC支持FRF.9压缩。 |
仅使用Cisco封装配置的帧中继PVC支持cRTP。 | 仅思科封装的PVC仍支持cRTP。 |
下表列出了cRTP和Cisco IOS QoS功能的已知问题。此列表在发布时准确无误。有关详细信息,请参阅Cisco IOS软件版本的版本说明。
Bug ID | 描述 |
---|---|
CSCdv73543 | 当使用模块化QoS CLI命令的分层QoS策略应用于出站接口并指定两级监察器时,一致的流量速率可能低于预期。当在一个级别中对数据包执行的操作与在第二级别中的操作不同时,就会出现问题。例如,在第一级执行,在第二级执行。示例策略如下所示: policy-map test-policer class class-default police 10000 1500 1500 conform-action transmit exceed-action transmit service-policy inner-police ! policy-map inner-police class prec5 police 20000 1500 1500 conform-action transmit exceed-action transmit |
CSCdt52094 | 在帧中继上使用低延迟队列(LLQ)时,可能会出现意外的丢包。问题是由于排队系统未考虑cRTP的带宽增益。 |
CSCds43465 | 最初,cRTP在排队后发生。结果是,排队(可能)看到的数据包比实际在线路上传输的数据包大得多。此行为已随此Bug更改。排队现在考虑压缩数据包。通过此更改,您可以根据压缩数据速率使用CBWFQ配置带宽语句。 |