目录

简介

先决条件

要求

使用的组件

规则

VoIP Over PPP Link 的 QoS 设计指南

语音流量的严格优先级 (IP RTP 优先级或 LLQ)

LLQ 配置指南

IP RTP 优先级配置指南

Link Fragmentation and Interleaving (LFI)：多链路 PPP

压缩的实时协议 (cRTP)

其它降低带宽的技巧

网络图

配置

验证和故障排除命令

show 和 debug 输出示例

相关信息

简介

此配置示例研究在低带宽租用线路上配置具有点对点协议 (PPP) 的 VoIP。本文档包括所配置功能的相关技术背景信息、设计指南和基本验证与故障排除策略。

注意：请注意，在以下配置中，两台路由器通过租用线路背靠背连接。但在大多数拓扑中，支持语音功能的路由器可存在于任何位置。通常来说，语音路由器使用局域网连接来实现与连接广域网的其他路由器的连接（换句话说，就是一个PPP租用线路）。 这一点非常重要，因为如果您的语音路由器没有通过专线PPP直接连接，那么所有的广域网配置命令必须在跟广域网相连的路由器上进行配置，而不是像下面所显示的那样在语音路由器里进行配置。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档提供的配置通过以下设备进行测试：

- 两个使用 Cisco IOS® 软件版本 12.2.6a (IP Plus) 的 Cisco 3640

- IP RTP Priority 在 Cisco IOS 版本 12.0(5)T 中引入。

- LLQ 在 Cisco IOS 版本 12.0(7)T 中引入。

- LFI 在 Cisco IOS 版本 11.3 中引入。

- 12.0.5T 以外的 Cisco IOS 版本包含适用于 cRTP 的显著性能改进。

规则

有关文件规则的更多信息请参见“ Cisco技术提示规则”。

VoIP Over PPP Link 的 QoS 设计指南

本部分提供在 PPP 租用线路上配置 VoIP 的设计准则（重点放在低速链路）。 要获得良好的语音质量，需满足两个基本要求：

- 最低的端到端延迟和避免抖动（延迟变化）。

- 经过优化和正确设计的链路带宽要求。

为了满足上述要求，应当遵守几个重要准则：

指南

描述

语音流量的严格优先级 (IP RTP 优先级或 LLQ)

提供语音流量严格优先级的方法。

Link Fragmentation and Interleaving (LFI)

可能是对低速链路的一项强制性要求。

RTP 压缩

无需提供良好的语音质量，但要求降低呼叫带宽占用量。一般在具有良好语音质量的工作配置之后应用RTP压缩(简化排除故障)。

呼叫准入控制 (CAC)

未包含在本文档中。使用 CAC 控制可以在链路上建立呼叫的数量。例如，如果2个网关之间的WAN链路有只传送2次VOIP呼叫的带宽，就承认第三次呼叫可能削弱所有三次呼叫的语音质量。更多信息请参见以下：VoIP 呼叫准入控制。

总之，对于将路由器/网关作为唯一语音流量来源的低速PPP链接而言，有二个功能必须提供：

1. 语音流量的严格优先级

2. Link Fragmentation and Interleaving (LFI)

语音流量的严格优先级 (IP RTP 优先级或 LLQ)

到 Cisco IOS 软件版本 12.2 为止，提供语音流量严格优先级主要有两种方法：

- IP RTP Priority（也称 PQ/WFQ：优先级队列/加权公平队列）

- Low Latency Queuing（也称 PQ/CBWFQ：优先级队列/基于类的加权公平队列）。

IP RTP 优先级

IP RTP Priority 可以为属于用户数据报协议 (UDP) 目的地端口范围的一套 RTP 数据包流创建严格的优先级队列。虽然使用的实际端口要动态地在终端设备或网关之间协商，但是所有Cisco VOIP产品都使用相同的UDP端口范围(16384-32767)。 路由器识别出 VoIP 流量后，便将其放置到严格的优先级队列中。当优先级队列为空时，将根据标准加权公平队列 (WFQ) 处理其他队列。直到接口中出现拥塞时，IP RTP 优先级才会变为活动状态。下图表明了 IP RTP 优先级的运行情况：

注意：IP RTP优先级允许在默认队列(WFQ)上有可用带宽时突发优先级队列(PQ)，但在接口上出现拥塞时，会严格管制优先级队列内容。

低延迟排队

LLQ 是一种功能，为 基于类的加权公平队列 (CBWFQ) 提供严格的 PQ。LLQ 能够在类级别上的 CBWFQ 内启用单个严格 PQ。使用 LLQ，（PQ 中）对延迟敏感的数据将首先出列并进行发送。在实施 LLQ 的 VoIP 中，语音流量放置在严格 PQ 中。

为保证公平队列不缺少带宽，PQ 将受到控制。当您配置 PQ 时，您用 Kbps 指定可用于 PQ 的最大带宽量。当接口被堵塞时，运行 PQ，直到负载达到优先级语句中配置的 Kbps 值。然后，超额流量丢弃，以避免具有缺乏更低优先级队列的Cisco的传统优先级组功能出现问题。

与 IP RTP 优先级相比，此方法更为复杂，也更为灵活。方法选择应当依据您的实际网络中的数据流模式和您的实际需求。

LLQ 与 IP RTP 优先级

此表总结了 LLQ 和 IP RTP Priority 之间的主要区别，并提供了一些何时使用各种方法的准则。

Low Latency Queuing (LLQ)

IP RTP 优先级

根据以下项目匹配语音流量：

- 访问列表（对于 UDP 端口范围、主机地址、IP 报头 ToS 字段：IP 优先级、DSCP 等等）

- IP RTP 端口范围

- IP ToS（服务类型）字段：DCSP 和/或 IP 优先级

- 协议和输入接口

- CBWFQ 中使用的所有有效匹配标准

优势：

- 数据流匹配和定向到严格PQ和CBWFQ的方式更加灵活。

- 可以配置其他类来保证其他数据流的带宽，例如：VoIP 信令和视频。

缺点：

- 复杂配置

根据以下项目匹配语音流量：

- 根据 RTP UDP 端口范围：16384 - 32767

优势：

- 简单配置

缺点：

- RTCP 流量（VoIP 信令）在 WFQ 队列中进行处理
注意：RTP协议使用RTCP（实时控制协议）控制RTP数据包的传输。RTP端口使用偶数，而RTCP端口使用16384-32767范围内的奇数。IP RTP优先级将RTP端口置于PQ中，而RTCP端口则位于默认加权公平队列中。

- 在PQ中处理VoIP流量，但是任何其他需要优先处理和带宽保证的流量在WFQ中处理。虽然 WFQ 可以通过加权来区分流（根据 IP 优先级），它不能 确保任何流都有带宽保证。

准则

- 方法选择应当依据您的实际网络中的数据流模式和您的实际需求。

- 如果需要为语音流量提供严格的优先级，且其他流量可作为一种类型（数据）进行处理，则配置简单的 IP RTP 优先级可以很好地服务于您的网络。

- 如果您打算根据 UDP 端口以外的标准（例如 DiffServ PHB）对语音流量进行优先级排定，则 LLQ 是必需的。

有关排队方法相关性和差别的更多信息，请参考拥塞管理概述。

LLQ 配置指南

遵循以下准则配置 LLQ：

1. 为 VoIP 流量创建类映射并确定匹配标准

以下命令说明如何完成此任务：

maui-voip-sj(config)#class-map ?

WORD  class-map name

match-all  Logical-AND all matching statements under this classmap

match-any  Logical-OR all matching statements under this classmap

maui-voip-sj(config)#class-map match-all voice-traffic

!-- Choose a descriptive class_name.

maui-voip-sj(config-cmap)#match ?

access-group         Access group

any                  Any packets

class-map            Class map

cos                  IEEE 802.1Q/ISL class of service/user priority values

destination-address  Destination address

input-interface      Select an input interface to match

ip                   IP specific values

mpls                 Multi Protocol Label Switching specific values

not                  Negate this match result

protocol             Protocol

qos-group            Qos-group

source-address       Source address

!-- In this example, the access-group matching option is used for its !-- flexibility (it uses an access-list)

maui-voip-sj(config-cmap)#match access-group ?

<1-2699>  Access list index  name      Named Access List

maui-voip-sj(config-cmap)#match access-group 102

!-- Now, create the access-list to match the class-map access-group:

maui-voip-sj(config)#access-list 102 permit udp any any range 16384 32776

!-- Safest and easiest way is to match with UDP port range 16384-32767 !-- This is the port range Cisco IOS H.323 products utilize to transmit !-- VoIP packets.

使用 match access-group 命令，还可将这些访问列表用于匹配语音流量：

access-list 102 permit udp any any precedence critical

!-- This list filters traffic based on the IP packet TOS: Precedence field.

!-- Note: Ensure that other non-voice traffic does NOT uses the

!-- same precedence value.

access-list 102 permit udp any any dscp ef

!-- In order for this list to work, ensure that VoIP packets are tagged with

!-- the dscp ef code before they exit on the LLQ WAN interface.

!-- For more information on DSCP refer to:

!-- Implementing Quality of Service Policies with DSCP

!-- Note: If endpoints are not trusted on their packet marking, you can mark

!-- incoming traffic by applying an inbound service policy on an inbound

!-- interface. This procedure is out of the scope of this doc.

Access-list 102 permit udp host 192.10.1.1 host 192.20.1.1

!-- This access-list can be used in cases where the VoIP devices cannot !-- do precedence or dscp marking and you cannot determine the !-- VoIP UDP port range.

下面是可用于替代 access-groups 命令的其他匹配方法：

- 从 Cisco IOS 软件版本 12.1.2.T 开始，就针对 LLQ 实施了 IP RTP Priority 功能。查看配置的UDP端口，这个功能与优先级类别内容相匹配，并且限制于只服务PQ中的偶数端口。

class-map voice

match ip rtp 16384 16383

- 以下两种方法的操作均基于这样的假设，即在执行出站 LLQ 操作之前，VoIP 数据包在始发主机上进行标记，或在路由器中进行匹配和标记：

class-map voice

match ip precedence 5

或

class-map voice

match ip dscp ef

注意：从IOS版本12.2.2T开始，VoIP拨号对等体可以在LLQ操作之前标记语音承载和信令数据包。这允许一种可扩展方式，通过LLQ的DSCP代码值，标记和匹配VOIP信息包。

2. 为 VoIP 信令创建类映射并确定匹配标准（可选）。

以下命令说明如何完成此任务：

class-map voice-signaling

match access-group 103

!

access-list 103 permit tcp any eq 1720 any

access-list 103 permit tcp any any eq 1720

注意：VoIP呼叫可以使用H.323、SIP、MGCP或Skinny（Cisco Call Manager使用的专有协议）建立。 上述示例假设 H.323 快速连接。下表可用作 VoIP 信令/控制信道所用端口的参考：

- H.323/H.225 = TCP 1720

- H.323/H.245 = TCP 11xxx（标准连接）

- H.323/H.245 = TCP 1720（快速连接）

- H.323/H.225 RAS = TCP 1719

- Skinny = TCP 2000-2002 (CM Encore)

- ICCP = TCP 8001-8002 (CM Encore)

- MGCP = UDP 2427、TCP 2428 (CM Encore)

- SIP= UDP 5060、TCP 5060（可配置）

3. 创建策略映射并将其与 VoIP 类映射关联

策略映射旨在定义如何进行链路资源共享或如何将其分配给不同的映射类。以下命令说明如何完成此任务：

maui-voip-sj(config)#policy-map VOICE-POLICY

!-- Choose a descriptive policy_map_name.

maui-voip-sj(config-pmap)#class voice-traffic

maui-voip-sj(config-pmap-c)#priority ?

<8-2000000>  Kilo Bits per second

!-- Configure the voice-traffic class to the strict priority !-- Queue (priority command) and assign the bandwidth.

maui-voip-sj(config-pmap)#class voice-signaling

maui-voip-sj(config-pmap-c)#bandwidth 8

!-- Assign 8 Kbps to the voice-signaling class

maui-voip-sj(config-pmap)#class class-default

maui-voip-sj(config-pmap-c)#fair-queue

!-- The remaining data traffic is treated as Weighted Fair Queue

注意：虽然可以将各种类型的实时流量排队到PQ，但思科建议您仅将语音流量定向到PQ。视频等实时流量可能会产生延迟变化（PQ 是先进先出 (FIFO) 队列）。 为避免抖动，语音流量要求该延迟是固定的。

注：优先级和带宽语句的值之和必须小于或等于链路带宽的75%。否则，服务策略就不能分配到链路（参见错误信息，确保日志控制台启用提供控制台访问，终端监视器启用提供Telnet访问）。

注意：当通过64 Kbps链路配置VoIP以支持两个语音呼叫时，通常将超过75%(48Kbps)的链路带宽分配给PQ。这种情况下，您可以使用命令 max-reserved-bandwidth 80，将可用带宽提高到 80% (80 Kbps)。

欲知 bandwidth 和 priority 命令的更多信息，参见比较 QoS 服务策略的 bandwidth 和 priority 命令。

4. 启用 LLQ：将策略映射应用到出站 WAN 接口

以下命令说明如何完成此任务：

maui-voip-sj(config)#interface multilink 1

maui-voip-sj(config-if)#service-policy output VOICE-POLICY

!-- In this scenario (MLPPP LFI), the service policy is applied to !-- the Multilink interface.

IP RTP 优先级配置指南

要配置 IP RTP Priority，请遵循以下准则：

- Router(config-if)#ip rtp priority starting-rtp-port-#port-#-rangebandwidth

命令

描述

starting-rtp-port-number

UDP 端口下限。数据包将发往的最低端口号。对于 VoIP，请将此值设置为 16384。

port-number-range

UDP 目的地端口范围。添加到 starting-rtp-port-number 的数字为 UDP 的最高端口号。对于 VoIP，请将此值设置为 16383 (32767 - 16384 = 16383)

bandwidth

优先级队列中的最大允许带宽 (kbps)。根据系统支持的同步呼叫数量设置此值。

配置示例：

interface Multilink1

!--- Some output omitted

bandwidth 64

ip address 172.22.130.2 255.255.255.252

ip tcp header-compression

fair-queue

no cdp enable

ppp multilink

ppp multilink fragment-delay 10

ppp multilink interleave

multilink-group 1

ip rtp header-compression iphc-format

ip rtp priority 16384 16383 45

Link Fragmentation and Interleaving (LFI)：多链路 PPP

正常数据包的通常大小是 1500 字节，但典型的 VOIP 信息包（传输 G.729 语音帧）的大小在 66 字节左右（20 个字节的语音有效载荷，6 个字节的第 2 层包头，20 个字节的 RTP 或 UDP 报头，及 20 个字节的 IP 报头）。

现在，请想象语音和数据流量共存的 56Kbps 的租用线路链路。如果只有在数据包开始在链路上传输时语音信息包才准备准备连载，则存在问题。延迟敏感语音数据包必须在传输之前等待 214 毫秒（它需要 214 毫秒的时间在 56Kbps 链路上连载 1500 字节的数据包）。

正如您所看到的，大数据包可能相反延迟小语音数据包的交付，从而降低通话质量。将大型数据包分成更小的数据包，并在分段之间交错语音信息包，可以减少抖动和延时。Cisco IOS Link Fragmentation and Interleaving (LFI) 功能有助于满足 VoIP 实时交付需求。下图表面了 LFI 的运行情况：

如表1所示，低速WAN链路的序列化延迟（把比特放置在接口实际所需要的时间）相当高，但目标端到端单向延迟不应该超过150ms。（ITU-T G.114 建议指定 150 毫秒最大单程端到端。）

表 1. 低速链路串行延迟上各中帧大小的串行延迟 = 帧大小（位）/链路带宽 (bps)

1 个字节

64 字节

128 字节

256 字节

512 字节

1024 字节

1500 字节

56 kbps

143 微秒

9 毫秒

18 毫秒

36 毫秒

72 毫秒

144 毫秒

214 毫秒

64 kbps

125 微秒

8 毫秒

16 毫秒

32 毫秒

64 毫秒

126 毫秒

187 毫秒

128 kbps

62.5 微秒

4 毫秒

8 毫秒

16 毫秒

32 毫秒

64 毫秒

93 毫秒

256 kbps

31 微秒

2 毫秒

4 毫秒

8 毫秒

16 毫秒

32 毫秒

46 毫秒

512 kbps

15.5 微秒

1 毫秒

2 毫秒

4 毫秒

8 毫秒

16 毫秒

32 毫秒

768 kbps

10 微秒

640 微秒

1.28 毫秒

2.56 毫秒

5.12 毫秒

10.24 毫秒

15 毫秒

1536 kbps

5 微秒

320 微秒

640 微秒

1.28 毫秒

2.56 毫秒

5.12 毫秒

7.5 ms

注意：对于语音应用，建议的序列化延迟（每跳）为10毫秒，不应超过20毫秒。

可使用命令 ppp multilink fragment-delay 以毫秒 (msec) 作为时间量度来配置链路片段大小。LFI 要求在打开 ppp multilink interleave 的情况下在接口上配置 ppp multilink。有关配置 LFI 的更多信息，请参考本文档的相关部分。

注意：如果您有超过专用的半T1连接(768 Kbps)，则无需分段功能。（但是，您仍需要 QoS 机制，例如 LLQ 或 IP RTP Priority）。 半个T1提供足够的带宽允许语音信息包出入队列，不存在延迟问题。而且，您可能并不需要实时协议压缩(cRTP)，在半T1的情况下，它可以通过压缩IP RTP头来保存带宽。

压缩的实时协议 (cRTP)

注意：cRTP不是确保良好语音质量所必需的。此功能可减少带宽消耗。请在满足其他所有条件且语音质量良好的情况下配置 cRTP。此程序可通过隔离潜在 cRTP 问题缩短排除故障时间。

根据RFC 2508，RTP报头压缩功能将IP/UDP/RTP报头从40个字节压缩到2个或4个字节，减少不必要的带宽消耗。它是一种逐跳压缩方案；因此，链路的两端必须配置cRTP(除非 passive 选项已配置)。 要配置 cRTP，请在接口层级使用此命令：

- Router(config-if)#ip rtp header-compression [passive]

由于压缩过程可能是CPU密集型过程，因此RTP报头压缩在IOS 12.0.(7)T版本的快速交换和CEF交换路径中执行。有时候这些实施被中断，那么能发挥作用的唯一方式就是进行流程切换。Cisco只推荐cRTP和速率低于768 Kbps的链路一起使用，除非路由器以低CPU利用率运行。监控路由器的 CPU 使用率并在高于 75% 的情况下禁用 cRTP。

注意：配置命令ip rtp header-compression时，路由器会默认将命令ip tcp header-compression添加到配置中。这用于压缩报头的 TCP/IP 数据包。报头压缩在带有大量小型信息包的网络中特别有用，例如可以支持许多Telnet连接。使用HDLC或PPP封装，串联线路可以支持RFC 1144中完整描述的TCP报头压缩技术。

要压缩 TCP 报头，无需启用 cRTP，请使用此命令：

- Router(config-if)#ip tcp header-compression [passive]

有关更多信息：压缩实时传输协议 (CRTP)

其它降低带宽的技巧

- 在 VoIP 呼叫段上使用低比特率编码解码器/解码器；推荐使用 G.729 (8 Kbps)。（这是 VoIP 拨号对端上的默认编码解码器）。 要配置不同的编码解码器，请在需要的 voip 呼叫对端下使用 router(config-dial-peer)#codec 命令。

- 尽管采用高比特率的语音编码解码（如 G.711）通常可以准确地传输双音多频 (DTMF)，但低比特率语音编码解码（如 G.729 和 G.723.1）最适合语音模式，会使 DTMF 音失真。此方法可能导致访问交互式语音应答 (IVR) 系统时出现问题。dtmf relay 命令通过在带外传输 DTMF 音频或将其与已编码的语音流分离解决 DTMF 失真问题。如果使用的低比特率编码解码器（G.729、G.723），则在 VoIP 拨号对端下打开 dtmf relay 。

- 典型会话可能包含 35-50% 的静音。使用语音活动检测 (VAD) 抑制静音数据包。对于 VoIP 带宽规划，假设 VAD 会使带宽减少 35%。默认情况下，VAD 在 VoIP 拨号对等体下进行配置。要启用或禁用 VAD，请在需要的 voip 拨号对端下使用 router(config-dial-peer)#vad and router(config-dial-peer)# no vad 命令。

网络图

配置

maui-voip-sj (Cisco 3640)

version 12.2service timestamps debug datetime msec

!-- < Some output omitted >

!

hostname maui-voip-sj

!

ip subnet-zero

!

no ip domain-lookup

!

!-- Definition of the voice signaling and traffic class maps !-- "voice-traffic" class uses access-list 102 for its matching criteria. !-- "voice-signaling" class uses access-list 103 for its matching criteria.

Class-map match-all voice-signaling

match access-group 103

class-map match-all voice-traffic

match access-group 102

!

!-- The policy-map defines how the link resources are assigned !-- to the different map classes. In this configuration, strict priority !-- queue is assigned to "voice-traffic" class with (based on ACL in !-- class voice) with max bandwidth = 45 Kbps.

policy-map VOICE-POLICY

class voice-traffic

priority 48

class voice-signaling

bandwidth 8

!-- Assigns a queue for "voice-signaling" traffic that ensures 8 Kbps. !-- Note that this is optional and has nothing to do with good voice !-- quality, but rather a way to secure signaling.

class class-default

fair-queue

!-- The class-default class is used to classify traffic that does !-- not fall into one of the defined classes. !-- The fair-queue command associates the default class WFQ queueing.

!

call rsvp-sync

!

!-- Note that MLPPP is strictly an LFI mechanism. It does not !-- bundle multiple serial interfaces to the same virtual interface as !-- the name stands (This bundling is done for data and NOT recommended !-- for voice). The end result may manifest itself as jitter and no audio.

interface Multilink1

ip address 172.22.130.1 255.255.255.252

ip tcp header-compression iphc-format

service-policy output VOICE-POLICY

!-- LLQ is an outbound operation and applied to the outbound WAN !-- interface.

no cdp enable

ppp multilink

ppp multilink fragment-delay 10

!-- The configured value of 10 sets the fragment size such that !-- all fragments have a 10 ms maximum serialization delay.

ppp multilink interleave

multilink-group 1

ip rtp header-compression iphc-format

!

interface Ethernet0/0

ip address 172.22.113.3 255.255.255.0

no keepalive

half-duplex

!

interface Serial0/0

bandwidth 128

!-- the bandwidth command needs to be set correctly for the !-- right fragment size to be calculated.

no ip address

encapsulation ppp

clockrate 128000

ppp multilink

multilink-group 1

!-- This command links the multilink interface to the physical !-- serial interface.

!

router eigrp 69

network 172.22.0.0

auto-summary

no eigrp log-neighbor-changes

!

!-- access-list 102 matches VoIP traffic based on the UDP port range. !-- Both odd and even ports are put into the PQ. !-- access-list 103 is used to match VoIP signaling protocol. In this !-- case, H.323 V2 with fast start feature is used.

access-list 102 permit udp any any range 16384 32767

access-list 103 permit tcp any eq 1720 any

access-list 103 permit tcp any any eq 1720

!

voice-port 1/0/0

!

voice-port 1/0/1

!

voice-port 1/1/0

!

voice-port 1/1/1

!

dial-peer cor custom

!

dial-peer voice 1 pots

destination-pattern 5000

port 1/0/0

!

dial-peer voice 2 voip

destination-pattern 6000

session target ipv4:172.22.130.2

maui-voip-austin (Cisco 3640)

version 12.2

service timestamps debug datetime msec

!

hostname maui-voip-austin

!

boot system flash slot1:c3640-is-mz.122-6a.bin

!

ip subnet-zero

!

class-map match-all voice-signaling

match access-group 103

class-map match-all voice-traffic

match access-group 102

!

policy-map voice-policy

class voice-signaling

bandwidth 8

class voice-traffic

priority 48

class class-default

fair-queue

!

interface Multilink1

bandwidth 128

ip address 172.22.130.2 255.255.255.252

ip tcp header-compression iphc-format

service-policy output voice-policy

no cdp enable

ppp multilink

ppp multilink fragment-delay 10

ppp multilink interleave

multilink-group 1

ip rtp header-compression iphc-format

!-- Configure cRTP after you have a working configuration. !-- This helps isolate potential cRTP issues.

!

Interface Ethernet0/0

ip address 172.22.112.3 255.255.255.0

no keepalive

half-duplex

!

interface Serial0/0

bandwidth 128

no ip address

encapsulation ppp

no ip mroute-cache

ppp multilink

multilink-group 1

!

router eigrp 69

network 172.22.0.0

auto-summary

no eigrp log-neighbor-changes

!

access-list 102 permit udp any any range 16384 32767

access-list 103 permit tcp any eq 1720 any

access-list 103 permit tcp any any eq 1720

!

voice-port 1/0/0

!

voice-port 1/0/1

!

voice-port 1/1/0

!

voice-port 1/1/1

!

dial-peer cor custom

!

dial-peer voice 1 pots

destination-pattern 6000

port 1/0/0

!

dial-peer voice 2 voip

destination-pattern 5000

session target ipv4:172.22.130.1

验证和故障排除命令

尝试发出任何 debug 命令前，请参考有关 debug 命令的重要信息。有关此处所列命令的更多信息，请参见本文档的Show 和 Debug 输出示例部分。

接口命令：

- show interface [serial | multilink] — 使用此命令检查串行接口的状态。确保串行和多链路接口启用并处于开放状态。

- 排除串行线路故障

LFI 命令：

- show ppp multilink - 使用此命令显示多链路 PPP 捆绑的捆绑信息。

- debug ppp multilink fragments - 使用此 debug 命令显示有关单个多链路片段和插入事件的信息。此命令输出也可确定数据包的序列号和片段大小。

LLQ/IP RTP Priority 命令：

- show policy-map interface multilink interface # -此命令对查看LLQ操作和查看PQ中的任何丢弃非常有用。欲知此命令的各种字段的更多信息，请参见了解 show policy-map interface 输出中的数据包计数器。

- show policy-map policy_map_name - 使用此命令显示有关策略映射配置的信息。

- show queue interface-type interface-number - 使用此命令列出特定接口的公平排队配置和统计信息。

- Debug priority-此debug命令显示优先级排队事件，并且显示此队列发生是否发生丢失现象。另请参见优先级排队中的输出丢包故障排除。

- show class-map class_name - 使用此命令显示有关类映射配置的信息。

- show call active voice - 使用此命令检查 DSP 层级的丢包。

其他命令/参考：

- show ip rtp header-compression - 使用此命令显示 RTP 报头压缩统计信息。

- VoIP 呼叫故障排除和调试基础

- VoIP Debug 命令

已知问题：

- CSCds43465:“LLQ、策略器、整形器应采用 CRTP 压缩反馈”要查看发行版本注释，请参考Bug 工具包（仅限注册用户）。

准则：

以下是一些基本故障排除步骤，一旦 ppp 链路启动并运行（MLPPP、分段、插入）：

1. show call active voice - 使用此命令检查 DSP 层级的丢包。

2. show interface - 使用此命令检查通用串行线路或接口问题。在接口上丢失并不表示有故障，但在它到达接口队列时，它通常是先从低优先级的队列丢弃数据包。

3. show policy-map interface - 使用此命令检查 LLQ 丢包和排队配置。不应报告违犯策略的任何丢包。

4. show ip rtp header-compression - 使用此命令检查 cRTP 特定问题。

show 和 debug 输出示例

!----------------------------------------------- !-----------------------------------------------  !---- To capture sections of this output, the LLQ PQ bandwidth !---- was lowered and large data traffic was placed !---- on the link to force some packets drops. !----------------------------------------------- !----------------------------------------------- !---- Packet Drop Verification (During an Active Call) !--- Assuming your ppp link is up and running, the first step of voice !--- quality problems verification is to check for lost packets !--- at the DSP. Note: Use the show call active voice command !--- NOT show call active voice brief

maui-voip-austin#show call active voice

Total call-legs: 2

!--- Indicates that the connection is established and both legs exist

GENERIC:

SetupTime=155218260 ms

Index=1

PeerAddress=5000

PeerSubAddress=

PeerId=2

PeerIfIndex=13

LogicalIfIndex=0

ConnectTime=155218364

CallDuration=00:00:27

CallState=4

!--- indicates that it is the active call !--- (#define D_callActiveCallState_active 4).

CallOrigin=2

ChargedUnits=0

InfoType=2

TransmitPackets=365

TransmitBytes=7300

ReceivePackets=229

ReceiveBytes=4580

VOIP:

!--- For this call, this was the terminating gateway. !--- At this gateway, the call started at the VoIP leg.

ConnectionId[0x18872BEB 0x1A8911CC 0x808CBE60 0x6D946FC6]

IncomingConnectionId[0x18872BEB 0x1A8911CC 0x808CBE60 0x6D946FC6]

RemoteIPAddress=172.22.130.1

!--- Indicates from which IP address the RTP stream is originating.

RemoteUDPPort=18778

RemoteSignallingIPAddress=172.22.130.1

!--- Indicates from which IP address signaling messages are coming.

RemoteSignallingPort=11010

RemoteMediaIPAddress=172.22.130.1

RemoteMediaPort=18778

RoundTripDelay=50 ms

SelectedQoS=best-effort

tx_DtmfRelay=inband-voice

FastConnect=TRUE

Separate H245 Connection=FALSE

H245 Tunneling=FALSE

SessionProtocol=cisco

SessionTarget=

OnTimeRvPlayout=4570

GapFillWithSilence=20 ms

GapFillWithPrediction=1840 ms

GapFillWithInterpolation=0 ms

GapFillWithRedundancy=0 ms

HiWaterPlayoutDelay=70 ms

LoWaterPlayoutDelay=51 ms

ReceiveDelay=51 ms

LostPackets=90

EarlyPackets=1

LatePackets=0

!--- Indicates the precense of jitter, lost packets, or !--- corrupted packets.

VAD = enabled

CoderTypeRate=g729r8

CodecBytes=20

GENERIC:

SetupTime=155218260 ms

Index=2

PeerAddress=6000

PeerSubAddress=

PeerId=1

PeerIfIndex=12

LogicalIfIndex=6

ConnectTime=155218364

CallDuration=00:00:34

CallState=4

CallOrigin=1

ChargedUnits=0

InfoType=2

TransmitPackets=229

TransmitBytes=4580

ReceivePackets=365

ReceiveBytes=7300

TELE:

ConnectionId=[0x18872BEB 0x1A8911CC 0x808CBE60 0x6D946FC6]

IncomingConnectionId=[0x18872BEB 0x1A8911CC 0x808CBE60 0x6D946FC6]

TxDuration=35360 ms

VoiceTxDuration=730 ms

FaxTxDuration=0 ms

CoderTypeRate=g729r8

NoiseLevel=-46

ACOMLevel=2

OutSignalLevel=-58

InSignalLevel=-42

InfoActivity=2

ERLLevel=7

SessionTarget=

ImgPages=0Total call-legs: 2

!---------------------------------------------------------- !--- Interface Verification !--- Make sure you see this: !--- LCP Open, multilink Open: Link control protocol (LCP) open statement !--- indicates that the connection is establish. !--- Open:IPCP. Indicates that IP traffic can be transmitted via the PPP link.

maui-voip-sj#show interface multilink 1

Multilink1 is up, line protocol is up

Hardware is multilink group interface

Internet address is 172.22.130.1/30

MTU 1500 bytes, BW 128 Kbit, DLY 100000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation PPP, loopback not set

Keepalive set (10 sec)

DTR is pulsed for 2 seconds on reset

LCP Open, multilink Open

Open: IPCP

Last input 00:00:01, output never, output hang never

Last clearing of "show interface" counters 00:25:20

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 91

Queueing strategy: weighted fair

Output queue: 0/1000/64/37/383 (size/max total/threshold/drops/interleaves)

Conversations  0/3/32 (active/max active/max total)

Reserved Conversations 1/1 (allocated/max allocated)

Available Bandwidth 38 kilobits/sec

5 minute input rate 0 bits/sec, 0 packets/sec

5 minute output rate 0 bits/sec, 0 packets/sec

8217 packets input, 967680 bytes, 0 no buffer

Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

13091 packets output, 1254194 bytes, 0 underruns

0 output errors, 0 collisions, 0 interface resets

0 output buffer failures, 0 output buffers swapped out

0 carrier transitions

----------------------------------------------------------------

!-- Note: There are no drops at the interface level. !-- All traffic that is dropped due to policing, is !-- dropped before it gets to the interface queue.

maui-voip-austin#show interface

serial 0/0Serial0/0 is up, line protocol is up

Hardware is QUICC Serial

MTU 1500 bytes, BW 128 Kbit, DLY 20000 usec,

reliability 255/255, txload 49/255, rxload 47/255

Encapsulation PPP, loopback not set

Keepalive set (10 sec)

LCP Open, multilink Open

Last input 00:00:00, output 00:00:00, output hang never

Last clearing of "show interface" counters 00:22:08

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0

Queueing strategy: weighted fair  [suspended, using FIFO]

FIFO output queue 0/40, 0 drops

5 minute input rate 24000 bits/sec, 20 packets/sec

5 minute output rate 25000 bits/sec, 20 packets/sec     4851 packets input, 668983 bytes, 0 no buffer

Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

4586 packets output, 657902 bytes, 0 underruns

0 output errors, 0 collisions, 0 interface resets

0 output buffer failures, 0 output buffers swapped out

0 carrier transitions

DCD=up  DSR=up  DTR=up  RTS=up  CTS=up

!----------------------------------- !--- LLQ Verification

maui-voip-austin#show policy-map int multilink 1

Multilink1

Service-policy output: voice-policy

Class-map: voice-signaling (match-all)

!--- This is the class for the voice signaling traffic.

10 packets, 744 bytes

5 minute offered rate 0 BPS, drop rate 0 BPS

Match: access-group 103

Weighted Fair Queueing

Output Queue: Conversation 42

Bandwidth 8 (kbps) Max Threshold 64 (packets)

(pkts matched/bytes matched) 10/744

(depth/total drops/no-buffer drops) 0/0/0

Class-map: voice-traffic (match-all)

!--- This is PQ class for the voice traffic.

458 packets, 32064 bytes

5 minute offered rate 0 BPS, drop rate 0 BPS

Match: access-group 102

Weighted Fair Queueing

Strict Priority

Output Queue: Conversation 40

Bandwidth 15 (kbps) Burst 375 (Bytes)

!--- Notice that the PQ bandwidth was lowered to force packet drops.

(pkts matched/bytes matched) 458/29647

(total drops/bytes drops) 91/5890

!--- Some packets were dropped. In a well designed link,

!--- there should be no (or few) drops of the PQ class.

Class-map: class-default (match-any)

814 packets, 731341 bytes

5 minute offered rate 27000 BPS, drop rate 0 BPSMatch: any

Weighted Fair Queueing

Flow Based Fair Queueing

Maximum Number of Hashed Queues 32

(total queued/total drops/no-buffer drops) 0/0/0

!---------------------------------------------

!--- Verify the class-map configuration

maui-voip-austin#show class-map

Class Map match-all voice-signaling (id 2)

Match access-group  103

Class Map match-any class-default (id 0)

Match any

Class Map match-all voice-traffic(id 3)

Match access-group 102

!--- Verify the access-lists of the class-maps

maui-voip-austin#show access-lists

Extended IP access list 102

permit udp any any range 16384 32767 (34947 matches)

Extended IP access list 103

permit tcp any eq 1720 any (187 matches)

permit tcp any any eq 1720 (86 matches)

!--- Verify the policy-pap configuration

maui-voip-austin#show policy-map voice-policy

Policy Map voice-policy

Class voice-signaling

Weighted Fair Queueing

Bandwidth 8 (kbps) Max Threshold 64 (packets)

Class voice-traffic

Weighted Fair Queueing

Strict Priority

Bandwidth 50 (kbps) Burst 1250 (Bytes)

Class class-default

Weighted Fair Queueing

Flow based Fair Queueing Max Threshold 64 (packets)

---------------------------

!--- Debug priority command provides immediate feedback in case !--- of VoIP packet drops. !--- The output below shows the error message when VoIP packets !--- are being dropped from the strict priority queue.

maui-voip-sj#debug priority

priority output queueing debugging is on

maui-voip-sj#

Mar 17 19:47:09.947: WFQ: dropping a packet from the priority queue 0

Mar 17 19:47:09.967: WFQ: dropping a packet from the priority queue 0

Mar 17 19:47:09.987: WFQ: dropping a packet from the priority queue 0

-------------------------------------------------------------------

!--- Link Fragmentation and Interleaving (LFI) Verification

maui-voip-sj#show ppp multilink

!--- Verify the fragmentation size and multilink

Multilink1, bundle name is maui-voip-austin

Bundle up for 00:08:04

0 lost fragments, 0 reordered, 0 unassigned

0 discarded, 0 lost received, 1/255 load

0x6D received sequence, 0x6E sent sequence

Member links: 1 active, 0 inactive (max not set, min not set)

Serial0/0, since 00:08:09, last rcvd seq 00006C 160 weight

!--- Notice the fragmentation size is 160 Bytes. The link is configured with a !--- bandwidth of 128 kbps and a serialization delay of 10 msec. !--- Fragment Size (in bits) = bandwidth * serialization delay. !--- Note: There are 8 bits in one byte.

-------------------------------------------------------

!--- Link Fragmentation and Interleaving (LFI) Verification !--- Testing Multilink PPP Link LFI !--- This output displays fragmentation and interleaving information !--- when the the 128kbps PPP link is loaded with big data and VoIP packets.

maui-voip-sj#debug ppp multilink fragments

Multilink fragments debugging is on

1w3d: Se0/0 MLP: O frag 800004CF size 160

1w3d: Se0/0 MLP: O frag 000004D0 size 160

1w3d: Se0/0 MLP: I ppp IP (0021) size 64 direct

1w3d: Mu1 MLP: Packet interleaved from queue 40

1w3d: Se0/0 MLP: O ppp IP (0021) size 64

1w3d: Se0/0 MLP: I ppp IP (0021) size 64 direct

1w3d: Se0/0 MLP: O frag 400004D1 size 106

1w3d: Se0/0 MLP: O ppp IP (0021) size 64

1w3d: Se0/0 MLP: I ppp IP (0021) size 64 direct

1w3d: Se0/0 MLP: O ppp IP (0021) size 64 direct

1w3d: Se0/0 MLP: I frag 800004E0 size 160 direct

1w3d: Se0/0 MLP: I frag 000004E1 size 160 direct

1w3d: Se0/0 MLP: I ppp IP (0021) size 64 direct

-------------------------------------------------------------------

!--- Sample output of show ip rtp header-compression command

maui-voip-sj#show ip tcp header-compression

TCP/IP header compression statistics:  Interface Multilink1:

Rcvd:    10 total, 6 compressed, 0 errors

0 dropped, 0 buffer copies, 0 buffer failures

Sent:    10 total, 7 compressed,

230 bytes saved, 99 bytes sent

3.32 efficiency improvement factor

Connect: 16 rx slots, 16 tx slots,

2 long searches, 1 misses 0 collisions, 0 negative cache hits

90% hit ratio, five minute miss rate 0 misses/sec, 0 max

----------------------------------------------------------------------

!--- This command displays information of the voip dial-peers command.

maui-voip-sj#show dial-peer voice 2

VoiceOverIpPeer2

information type = voice,

tag = 2, destination-pattern = `6000',

answer-address = `', preference=0,

group = 2, Admin state is up, Operation state is up,

incoming called-number = `', connections/maximum = 0/unlimited,

application associated:

type = voip, session-tMarget = `ipv4:172.22.130.2',

technology prefix:

ip precedence = 0, UDP checksum = disabled,

session-protocol = cisco, req-qos = best-effort,

acc-qos = best-effort,

fax-rate = voice,   payload size =  20 bytes

codec = g729r8,   payload size =  20 bytes,

Expect factor = 10, Icpif = 30,signaling-type = cas,

VAD = enabled, Poor QOV Trap = disabled,

Connect Time = 283, Charged Units = 0,

Successful Calls = 1, Failed Calls = 0,

Accepted Calls = 1, Refused Calls = 0,

Last Disconnect Cause is "10  ",

Last Disconnect Text is "normal call clearing.",

Last Setup Time = 93793451.

-------------------------------------------------------------------------

!---The CPU utilization of the router should not exceed the 50-60 percent !--- during any five-minute interval.

maui-voip-austin#show processes cpu

CPU utilization for five seconds: 12%/8%; one minute: 11%; five minutes: 9%

PID Runtime(ms)   Invoked      uSecs   5Sec   1Min   5Min TTY Process

1         148    310794          0  0.00%  0.00%  0.00%   0 Load Meter

2          76        23       3304  0.81%  0.07%  0.01%   0 Exec

相关信息

- 低延时队列

- 拥塞管理概述

- 实现服务质量 (QoS)

- IP 语音 - 每个呼叫的带宽占用量

- IP 语音的服务质量

- 配置 IP 语音

- 语音技术支持

- 语音和 IP 通信产品支持

- Cisco IP 电话故障排除

- 技术支持 - Cisco Systems