介绍
本文论述一些众所周知的导致与Cisco网关(Cisco IOS网关/路由器、Catalyst交换机或DT-24+网关)相关IP电话单向音频会话的常见问题。
在您开始之前
规则
欲了解关于文件规则的更多信息,请参阅《 思科技术提示规则》。
前提条件
本文件没有特定的前提条件。
所用组件
本文不限定于特定软件和硬件版本。
本文所包含信息基于特定实验室环境中的设备。本文所用设备采用清除(缺省)配置。假如您在正在运行的网络中进行操作,应确保在使用任何命令之前已了解可能带来的潜在影响。
问题
本文介绍下述问题出现的情况及解决方案:
在通过Cisco IOS话音网关/路由器从IO工作站建立电话呼叫时,只有一方收到音频(单向通信)。
在两台Cisco网关之间建立长话绕过呼叫时,只有一方收到音频(单向通信)。
解决方案
在IP电话中造成单向音频的原因可能各异,但是问题的根源往往与IP路由问题有关。以下章节分析在这个领域发现的若干情况与解决方案。
确保在Cisco IOS网关/路由器上启动了IP路由
有些Cisco IOS网关,例如VG200,在缺省情况下禁用IP路由,从而导致单向话音问题。
注:?/B在开始下一步骤之前,应确保您的路由器上已激活IP路由,就是说没有全局配置命令 no ip routing。
要激活IP路由,您只需在Cisco IOS网关中输入下述全局配置命令
voice-ios-gwy(config)#ip routing
检查基本IP路由
应始终首先检查基本IP可达性。因为RTP流是无连接的(在UDP上传送),业务可能在一个方向成功地传输而在相反方向 丢失 。下图显示了这种情况。
从子网络A和B可以到达子网络X。从子网络X也可以到达子网络A和B。这就答应在终端站(A和B)和Cisco CallManager之间建立TCP连接。因此,信令可以顺利地到达两个终端站,从而答应在A和B之间建立呼叫。
只要建立了呼叫,传送音频信号的RTP流就需要在终端站之间沿两个方向流动。有可能出现可以从子网络B到达子网络A,但不能从子网络A到达子网络B的情况,因此从A到B的音频流往往会 丢失。
这是一个基本的路由问题,我们可以利用IP路由故障排除方法能够成功地做到从网关B来ping电话A。应切记ping是双向检验。
IP路由故障排除不属于本文讨论范围,但是应当遵循若干最初步骤来对以下几个方面进行检查:
终端站上配置的缺省网关
上面提到的通向目的地网络的缺省网关上的IP路由
注:?/B下面列举的步骤说明如何检验各种Cisco IP电话上的缺省路由器/网关配置:
Cisco IP电话7910_按下Settings,选择选项 6,按下音量键直到出现缺省路由器字段。
Cisco IP电话7960/40_按下 Settings,选择选项3,往下拉直到出现缺省路由器字段。
Cisco IP电话2sp+/30vip_按下 **#,再按 # 再按# 直到显示gtwy= 。
注:?/B在使用Cisco?IP SoFTPhone应用而且设备中安装了多个NIC (网络接口卡)时,应确保设备可确定正确的NIC。在IP SoftPhone版本1.1.x (1.2版本应当解决这个问题)中,一般都有这个问题。
注:?/B假如采用Cisco DT24+ 网关,应检查DHCP范围,并确保在这个范围有缺省网关(003路由器)选项。003路由参数是设备和个人计算机缺省网关字段应填写的参数。范围选项3应当具有将为网关选择路由的路由器接口IP地址。
捆绑H.323信令与Cisco IOS网关/路由器上的特定IP地址
在Cisco IOS网关具有多个有效的IP接口时,某些H.323信令可能源自某个IP地址,而另一部分也许会来自另一个不同的源地址。这可能会导致各种问题,其中的一个问题是单向音频。
为了避免这个问题,可以将H.323信令与某个特定的源地址相捆绑,而该地址属于某个物理接口或虚拟接口(环回)。在这种接口配置模式下采用的命令句法是 h323-gateway voip bind srcaddr 在具有Cisco CallManager指向的IP地址的接口下配置这项命令。 . 在具有Cisco CallManager指向的IP地址的接口下配置这项命令。
在Cisco IOS版本12.1.2T中增加了这条命令,而且它被列入《 为虚拟接口配置H.323支持》。
注:?/B在这种解决方案实际上可能造成单向音频问题的12.2(6) 版本中存在一个故障。更详尽信息请参阅在《Cisco软件故障排除工具包》(仅供注册客户使用)中的ID CSCdw69681 ( ) (仅供注册客户使用) 故障 ( registered customers only) 。
检查正在从Telco或交换机正确收发应答监视
在将Cisco IOS网关与Telco或交换机相连的实施中,当Telco或交换机后的被叫设备应答呼叫时,应确保正在准确发送应答监视。不能接受应答监视将造成Cisco IOS网关不能沿向前方向接通(打开)音频通道,从而造成单向话音通信。这种情况下的解决方法是配置 voice rtp send-recv on。
更详尽信息请参阅《 在Cisco IOS网关和路由器上采用voice rtp send-recv来接通双向音频 》部分。
在Cisco IOS网关和路由器上采用voice rtp send-recv来接通双向音频通道
一开始RTP流传输就沿向后方向建立了话音通道。在Cisco IOS网关接收到来自远端的连接消息时才接通前向音频通道。
在某些情况下,需要在一开通RTP通道时(就是说,在接收到连接信息之前)就建立双向音频通道。为此,应采用 voice rtp send-recv 全局配置命令。这项命令已列入《 Cisco话音、音频和传真命令》。
在Cisco IOS网关/路由器上逐链路检查cRTP设置
这个问题适用于长话绕过等情况,在这种情况下,话音通道涉及一个以上Cisco IOS路由器/网关,并采用压缩RTP (cRTP)。CRTP或RTP报头压缩是压缩VoIP数据包报头以节约带宽的一种方法。cRTP在VoIP数据包上采用40字节的IP/UDP/RTP报头,并将其压缩成每个数据包2-4个字节,为具有cRTP的G.729编码呼叫产生约12Kb的带宽。有关cRTP的更详尽信息请参阅《 IP话音-每呼叫带宽消耗》。
CRTP是逐跳实现的,在每跳上进行解压和重新压缩。每次路由需要检查每个数据包的报头,因而需要在IP链路两侧都激活cRTP 。
还应当检验在链路两端,cRTP的运行是否达到预期要求,这一点也很重要。Cisco的IOS级别会因交换通道和平行cRTP支持而异。
总之,发展历程是:
在Cisco IOS软件版本12.0.5T?之前,cRTP是程序交换的程。
在Cisco IOS软件版本12.0.7T直到12.1.1T中,为cRTP增加了快速-与Cisco特快转发(CEF)-交换支持。
在Cisco IOS软件版本12.1.2T?中,增加了算法性能改进。
假如您在Cisco IOS平台(IOS版本12.1)上运行cRTP, 应检验故障 CSCds08210 ( (仅供注册客户使用) ) (VoIP和FAX不与RTP报头压缩一同运行)不会影响您的IOS版本。
在Cisco IOS网关/路由器上检验使用NAT需要的最低基本的软件版本
假如采用网络地址转换(NAT),必须满足最低软件要求。早先的NAT版本不支持SKINny协议转换,而且会导致单向话音问题。
同时采用NAT和Skinny所需的最低软件水平是用NAT支持Skinny和H.323v2的用于IOS的Cisco IOS(r)软件12.1(5)T。更详尽信息请查询《 连接到Cisco CallManager的IP电话的Nat_支持》。
注:?/B假如您的Cisco CallManager为有别于缺省2000的skinny信令采用TCP端口,您需要用 ip nat service skinny tcp port 全局配置命令调整NAT路由器。
在PIX防火墙上同时采用NAT和Skinny的最低软件要求是6.0。更详尽信息请查询《 Cisco安全PIX防火墙6.0版概述》。
注:?/B这些软件水平不一定支持全面网守支持所需的所有RAS消息。网守支持不属于本文讨论范围。
在AS5350和AS5400上禁用话音快速路径
对于AS5350和AS5400,Cisco IOS命令 voice-fastpath enable 是隐藏的全局配置命令,在缺省情况下就被激活。要禁用这项命令,应采用 no voice-fastpath enable 全局配置命令。
在被激活时,这项命令会为特定呼叫开放的逻辑信道缓存IP地址和UDP端口号信息,并防止RTP流到达应用层,而是在较低层转发数据包。这有助于在高呼叫量情况下减少CPU占用。
在采用保持或转接等补充业务时, voice-fastpath 命令使路由器将音频流发往缓存的IP地址和UDP端口,而忽略在恢复保持呼叫或完成转接之后产生的新的逻辑信道信息。为了避免这个问题,业务应经常发往应用层,从而考虑逻辑信道的重新定义,并将音频流发往新的IP地址/UDP端口对。这就是为什么我们应当禁用 voice-fastpath 来支持补充业务的原因所在。
用SoftPhone配置VPN IP地址
Cisco IP SoftPhone能使PC机象Cisco IP电话7900系列电话一样运行。为了避免单向话音问题,通过VPN与它们的公司网络相连的远程用户需要配置某些补充设置。这是因为媒体流必须了解连接的端点。
解决方案是在网络音频设置下配置VPN IP地址而不是IP地址。更详尽信息请查阅《 如何在VPN上使用Cisco IP SoftPhone》。
补充信息:检验单向音频
检验数据包流的一种有用命令是debug cch323 rtp。这项命令显示由路由器发送(X)和接收(R)的数据包。大写字母表示成功传输/接收,而小写字母表示数据包被丢弃。
voice-ios-gwy#debug cch323 rtp
RTP packet tracing is enabled
voice-ios-