语音 : 语音质量

带有服务质量控制(LLQ/IP RTP 优先级、LFI、cRTP)的 VoIP-over-PPP

2016 年 10 月 27 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

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

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

先决条件

要求

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

使用的组件

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

  • 两Cisco 3640用Cisco IOSï ¿  ½软件版本12.2.6a (IP Plus)

  • 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 优先级的运行情况:

pq-wfq.gif

注意: 当默认队列 (WFQ) 上有可用带宽时,IP RTP Priority 准许打破优先级队列 (PQ),但当接口上发生拥塞时,仍然要严格控制优先级队列内容。

低延迟排队

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

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

/image/gif/paws/7111/llq.gif

与 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
    

    注意: 使用H.323、SIP、MGCP或Skinny (Cisco呼叫管理器使用的专用协议),可以建立VoIP呼叫。上述示例假设 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 中,但 Cisco 建议只将语音流量排到 PQ 中。视频等实时流量可能会产生延迟变化(PQ 是先进先出 (FIFO) 队列)。为避免抖动,语音流量要求该延迟是固定的。

    注意: prioritybandwidth 语句的总值需小于或等于链路带宽的 75%。否则,服务策略就不能分配到链路(参见错误信息,确保日志控制台启用提供控制台访问,终端监视器启用提供Telnet访问)。

    注意: 当在 64 Kbps 链路上配置 VoIP 来支持二次语音呼叫时,通常将把 75% (48Kbps) 以上的链路带宽分配给 PQ。这种情况下,您可以使用命令 max-reserved-bandwidth 80,将可用带宽提高到 80% (51 Kbps)。

    欲知 bandwidthpriority 命令的更多信息,参见比较 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 的运行情况:

lfi.gif

如表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 命令。

网络图

/image/gif/paws/7111/mlppp.gif

配置

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 层级的丢包。

其他命令/参考:

已知问题:

  • 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



相关信息


Document ID: 7111