简介
本文档介绍涉及Cisco网关的IP电话单向音频会话中可能出现的常见问题。
先决条件
要求
Cisco 建议您了解以下主题:
- IP电话网络,并具有语音网络基础知识
- Cisco IOS®网关和路由器、Catalyst交换机和DT-24+网关
使用的组件
本文档不限于特定的软件或硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
问题
本文档提供针对以下问题的情况和解决方案:
-
在通过 Cisco IOS 语音网关或路由器从 IP 工作站建立电话呼叫时,只有一方收到音频(单向通信)。
-
在两台 Cisco 网关之间建立长话旁路呼叫时,只有一方收到音频(单向通信)。
-
在从置于 VPN 3002 硬件客户端之后的 IP 工作站建立电话呼叫时,只有一方收到音频(单向通信)。
解决方案
导致 IP 电话出现单向音频的原因可能有所不同,但是问题的根本通常涉及 IP 路由问题。本部分介绍了一些在现场出现过的情况和解决方案。
确保在 Cisco IOS 网关和路由器上启用 IP 路由
一些 Cisco IOS 网关(如 VG200)会在默认情况下禁用 IP 路由。此默认设置会导致单向语音问题。
注意:在继续之前,请确保路由器上已启用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 对电话 A 执行 ping 命令,请记住,ping 是双向验证。
本文档不涉及 IP 路由故障排除。但是,请确保这些是后续步骤:
-
在终端站上配置了默认网关。
-
这些默认网关上的 IP 路由指向目标网络。
此列表说明如何在各种 Cisco IP 电话上验证默认路由器或网关配置:
-
Cisco IP 电话 7910 — 按 Settings,选择选项 6,然后按低音量直至 Default Router 字段出现。
-
Cisco IP 电话 7960/40 — 按 Settings,选择选项 3,然后向下滚动直至 Default Router 字段出现。
-
Cisco IP电话2sp+/30vip — 按**#,然后按#,直到gtwy=出现。
注:使用Cisco IP SoftPhone应用时,如果盒中安装了多个网络接口卡(NIC),请确保该盒提供正确的NIC。此问题通常出现在 IP SoftPhone 软件版本 1.1.x 中。版本1.2必须解决此问题。
注:使用Cisco DT-24+网关时,请检查DHCP作用域并确保作用域中存在Default Gateway(003路由器)选项。003 路由器参数填充设备和 PC 中的 Default Gateway 字段。范围选项3必须具有可以路由到网关的路由器接口的IP地址。
验证正确媒体终结点配置
如果为群集间中继 (ICT) 配置了转码,请确保在与该中继关联的媒体资源组和媒体资源组列表中配置了媒体终结点 (MTP)。如果在不需要时指定了 MTP 或在需要时未能配置 MTP,则会导致 ICT 配置出现单向语音问题。
将 H.323 信令绑定到 Cisco IOS 网关和路由器上的特定 IP 地址
当Cisco IOS网关有多个活动IP接口时,某些H.323信令可以源自一个IP地址,而它的其它部分可以引用不同的源地址。这可能会生成各种问题。其中之一便是单向音频。
若要避免此问题,可以将 H.323 信令绑定到特定源地址。源地址可以属于物理或虚拟接口(环回)。在接口配置模式下使用h323-gateway voip bind srcaddr ip-address命令。在具有 Cisco CallManager 指向的 IP 地址的接口下配置此命令。
此命令是在 Cisco IOS 软件版本 12.1(2)T 中引入的。请参阅虚拟接口的 H.323 支持。
注意:Cisco IOS软件版本12.2(6)中存在一个漏洞,在该漏洞中,此解决方案实际上可能导致单向音频问题。有关详细信息,请参阅Cisco Bug ID CSCdw69681。只有注册的思科用户才能访问内部思科工具和信息。
将 MGCP 信令绑定到 Cisco IOS 网关上的 MGCP 媒体数据包源接口
如果没有指定信令和媒体数据包的源接口,则在 Media Gateway Control Protocol (MGCP) 网关上可能会出现单向语音。如果发出mgcp bind media source-interface interface-id,可以将MGCP媒体绑定到源接口 命令,然后mgcp bind control source-interface interface-id 命令。在发出命令后,请在 Cisco CallManager 中重置 MGCP 网关。
如果没有启用 mgcp bind 命令,则 IP 层仍会提供最佳本地地址。
mgcp bind 命令具有以下准则:
-
当网关上存在活动的 MGCP 呼叫时,会拒绝控制和媒体的 mgcp bind 命令。
-
如果绑定接口未打开,则该命令会被接受,但在接口出现前不会生效。
-
如果在绑定接口上未分配 IP 地址,则 mgcp bind 命令会被接受,但是只会在分配有效的 IP 地址之后才生效。在此期间,如果出现 MGCP 呼叫,则会拒绝 mgcp bind 命令。
-
当由于接口上的手动关闭或操作故障导致绑定接口断开时,在该接口上会禁用绑定活动。
-
当媒体网关控制器 (MGC) 上没有配置绑定时,用于源 MGCP 控制和媒体的 IP 地址是最佳可用 IP 地址。
检查 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 IOS 网关和路由器上逐个链路地检查 cRTP 设置
此问题适用于收费旁路等场景,其中语音路径中包含多个Cisco IOS路由器或网关且使用压缩RTP(cRTP)。cRTP或RTP报头压缩是一种使VoIP数据包报头变小以重新获得带宽的方法。cRTP采用VoIP数据包上的40字节IP、用户数据报协议(UDP)或RTP报头,并将其压缩为每个数据包2到4个字节。对于一个采用 cRTP 的 G.729 编码呼叫,此压缩大约生成 12 kbps 的带宽。有关cRTP的更详尽信息请参阅《 VoIP-每呼叫带宽消耗》。
cRTP 是逐跳进行的,每跳上都进行解压和重新压缩。必须检查每个数据包报头才能进行路由。因此,需要在 IP 链路的两端都启用 cRTP。
还应当检验在链路两端,cRTP的运行是否达到预期要求,这一点也很重要。Cisco IOS 软件版本级别在交换路径和并发 cRTP 支持方面有所差异。
总之,发展历程是:
-
在 Cisco IOS 软件版本 12.0(5)T 之前的 Cisco IOS 软件版本中,cRTP 通过进程交换。
-
在 Cisco IOS 软件版本 12.0(7)T 和 Cisco IOS 软件版本 12.1(1)T 中,引入了针对 cRTP 的快速(以及 Cisco Express Forwarding (CEF))交换支持。
-
在 Cisco IOS 软件版本 12.1(2)T 中,引入了算法性能改进。
如果您在Cisco IOS软件平台(Cisco IOS软件版本12.1)上运行cRTP,请验证Cisco Bug ID CSCds08210不会影响Cisco IOS软件版本。此 bug 的症状是 VoIP 和 FAX over IP 在启用 RTP Header Compression 的情况下无法正常工作。
只有注册的思科用户才能访问内部思科漏洞信息和工具。
在 Cisco IOS 网关上验证时钟配置
如果通过 show controller {e1 | t1}命令,语音网关上的时钟配置可能有些不匹配。请参阅基于支持语音的Cisco IOS平台上的时钟配置,并确保语音网关上的时钟配置正确。
在 Cisco IOS 网关和路由器上验证 NAT 的最低软件级别
如果使用网络地址转换 (NAT),必须满足最低软件级别要求。早期版本的 NAT 不支持 Skinny 协议转换。这些早期版本会导致单向语音问题。
必须运行 Cisco IOS 软件版本 12.1(5)T 或更高版本,才能使 Cisco IOS 网关同时支持 Skinny 和 H.323 版本 2 以及 NAT。有关详细信息,请参阅对 Cisco CallManager 的 IP 电话 NAT 支持。
注:如果Cisco CallManager将TCP端口用于与默认端口(2000)不同的小型信令,则必须调整NAT路由器。发出 ip nat service skinny tcp port number 全局配置命令。
在 PIX 防火墙上同时使用 NAT 和 Skinny 信令所需的最低软件级别为 6.0。有关详细信息,请参阅 Cisco PIX 防火墙版本 6.0。
注:这些级别的软件不一定支持完全网守支持所需的全部注册、准入和状态(RAS)消息。网守支持不属于本文讨论范围。
在AS5350和AS5400上禁用语音快速路径
Cisco IOS 软件命令 voice-fastpath enable 是用于 AS5350 和 AS5400 的隐藏全局配置命令。该命令在默认情况下启用。若要禁用该命令,请发出 no voice-fastpath enable 全局配置命令。
当该命令启用时,会缓存为特定呼叫打开的逻辑通道的 IP 地址和 UDP 端口号信息。该命令阻止 RTP 流到达应用层。而是使数据包在较低层上转发。这有助于在高呼叫量方案中稍微减少 CPU 利用率。
当使用保留或转接等附加服务时,voice-fastpath 命令会使路由器将音频流到缓存的 IP 地址和 UDP 端口。会忽略在恢复保留的呼叫之后或完成转接之后生成的新逻辑通道信息。若要避免此问题,流量始终必须进入应用层,以便考虑重新定义逻辑通道并使音频流到新的 IP 地址和 UDP 端口对。因此,请务必禁用 voice-fastpath 以支持附加服务。
用软电话配置VPN IP地址
Cisco IP SoftPhone 允许 PC 按照类似于 Cisco IP 电话 7900 系列电话的方式工作。通过虚拟私有网络 (VPN) 连接回公司网络的远程用户必须配置一些其他设置,才能避免单向语音问题。这是因为媒体流需要知道连接的终点。
解决方案是在网络音频设置下配置 VPN IP 地址而不是网络适配器的 IP 地址。有关详细信息,请参阅如何在 VPN 上使用 Cisco IP SoftPhone。
将 VPN 3002 配置为在网络扩展模式下工作
Cisco VPN 3002硬件客户端可在两种模式下运行:客户端模式和网络扩展模式(NEM)。在客户端模式下,Cisco VPN 3002客户端后面的所有主机都是端口地址,转换成VPN 3002客户端的外部IP地址。当IP电话放在VPN 3002客户端后面时,H.323不与端口地址转换(PAT)配合使用,导致单向音频。当 VPN 3002 在 NEM 中工作时,远程网络可以通过其真实 IP 地址(而不是基于 Nat 或基于 PAT 的 IP 地址)看到对方。如果 VPN 3002 配置为在 NEM 中工作,则 H.323 可以工作。换句话说,仅当 VPN 3002 在 NEM 中工作时,VPN 3002 客户端后的 IP 电话才能正常工作。因此,若要避免与 VPN 3002 客户端有关的单向语音问题,请将 VPN 3002 客户端配置为使用 NEM。
若要将 Cisco VPN 3002 硬件客户端配置为使用 NEM,请选择 Configuration > Quick > PAT,然后在 PAT 窗口中单击 No, use Network Extension mode 。
有关详细信息,请参阅将 Cisco VPN 3002 硬件客户端配置为 EzVPN 为网络扩展模式的 Cisco IOS 路由器
其他信息:验证单向音频
用于验证数据包流的两个有用命令是 debug cch323 rtp 命令和 debug voip rtp 命令。debug cch323 rtp命令显示路由器发送(X)和接收(R)的数据包。大写字符指示成功的传输或接收。小写字符指示丢弃的数据包。
voice-ios-gwy#debug cch323 rtp
RTP packet tracing is enabled
voice-ios-gwy#
voice-ios-gwy#
voice-ios-gwy#
voice-ios-gwy#
voice-ios-gwy#
!--- This is an unanswered outgoing call. !--- Notice that the voice path only cuts through in the forward direction and
!--- that packets are dropped. Indeed, received packets are traffic from the !--- IP phone to the PSTN phone. These are dropped until the call is answered.
Mar 3 23:46:23.690: ****** cut through in FORWARD direction *****
XXXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXr
XrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXr
XrXrXXrrrrrrrrrrrrrrrr
voice-ios-gwy#
voice-ios-gwy#
!--- This is an example of an answered call:
voice-ios-gwy#
voice-ios-gwy#
*Mar 3 23:53:26.570: ****** cut through in FORWARD direction *****
XXXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXr
XrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXrXr
XXrrrrrXrXrXrXrXrXrXrXrXrXrXrXrrXXrrXrXrXrXrXrXXXXXXXXXXXXXXXXrXXXXXXXXrXrXrXXrrXr
XrXrXrXrXrXrXrXrXXrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
!--- At this point, the remote end picks up the phone.
*Mar 3 23:53:30.378: ****** cut through in BOTH direction *****
XRXRXRXRXRXRXRXRXXRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRXRXRXRXRXRXRXR
XRXRXRXRXRXRXRXRXRXRXRXRXRXRXXRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRXRXRXRXRXR
XXRRXRXRXXRRXRXRXRXRXXRXRXRXRXRXRRXRXXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXR
XRXRXRXRXRXRXRXRXRXRXRXRXRXRXRRRRRRRRRRRRRRRRRRRRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXR
XRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXXRRRRRRRRRRRRRRRRRRRRRRRRRRRRXRXRXRXRXRXRXRXRXRXR
XRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRRXXRXRXRXRXRXRRXRXRXRXRXRXRXRXR
XRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXXRRRRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXR
XXRRRRRRRRRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXR
XRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXRXR
XRXRXRXRXRXRXRXRXRXRXRXRXXRRRXR
!--- This is the end of the conversation.
注意:在Cisco IOS软件版本12.2(11)T及更高版本中,debug cch323 rtp command-line interface(CLI)命令已被debug voip rtp命令取代。
voice-ios-gwy#debug voip rtp
--------cut through in BOTH direction-------------------
*Mar 27 19:52:08.259: RTP(32886): fs rx d=10.48.79.181(20002),
pt=0, ts=4FFBF0, ssrc=8E5FC294
*Mar 27 19:52:08.275: RTP(247): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00C8D9, ssrc=1F1E5093
*Mar 27 19:52:08.279: RTP(32887): fs rx d=10.48.79.181(20002),
pt=0, ts=4FFC90, ssrc=8E5FC294
*Mar 27 19:52:08.295: RTP(248): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00C979, ssrc=1F1E5093
*Mar 27 19:52:08.299: RTP(32888): fs rx d=10.48.79.181(20002),
pt=0, ts=4FFD30, ssrc=8E5FC294
*Mar 27 19:52:08.315: RTP(249): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00CA19, ssrc=1F1E5093
*Mar 27 19:52:08.319: RTP(32889): fs rx d=10.48.79.181(20002),
pt=0, ts=4FFDD0, ssrc=8E5FC294
*Mar 27 19:52:08.335: RTP(250): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00CAB9, ssrc=1F1E5093
*Mar 27 19:52:08.339: RTP(32890): fs rx d=10.48.79.181(20002),
pt=0, ts=4FFE70, ssrc=8E5FC294
*Mar 27 19:52:08.355: RTP(251): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00CB59, ssrc=1F1E5093
*Mar 27 19:52:08.359: RTP(32891): fs rx d=10.48.79.181(20002),
pt=0, ts=4FFF10, ssrc=8E5FC294
*Mar 27 19:52:08.375: RTP(252): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00CBF9, ssrc=1F1E5093
*Mar 27 19:52:08.379: RTP(32892): fs rx d=10.48.79.181(20002),
pt=0, ts=4FFFB0, ssrc=8E5FC294
*Mar 27 19:52:08.395: RTP(253): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00CC99, ssrc=1F1E5093
*Mar 27 19:52:08.399: RTP(32893): fs rx d=10.48.79.181(20002),
pt=0, ts=500050, ssrc=8E5FC294
*Mar 27 19:52:08.976: RTP(282): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00DEB9, ssrc=1F1E5093
*Mar 27 19:52:08.980: RTP(32922): fs rx d=10.48.79.181(20002),
pt=0, ts=501270, ssrc=8E5FC294
*Mar 27 19:52:08.996: RTP(283): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00DF59, ssrc=1F1E5093
*Mar 27 19:52:09.000: RTP(32923): fs rx d=10.48.79.181(20002),
pt=0, ts=501310, ssrc=8E5FC294
*Mar 27 19:52:09.016: RTP(284): fs tx d=10.48.79.181(20002),
pt=0, ts=5D00DFF9, ssrc=1F1E5093
收集通过 PIX 防火墙的呼叫流量信息
通过收集经过 PIX 防火墙的呼叫流量信息可以排除单向呼叫故障。PIX capture 命令可以用于验证进行呼叫时打开和使用的端口。有关通过 PIX 防火墙的 VoIP 流量的详细信息,请参阅通过 PIX 防火墙处理 VoIP 流量。
注意:在生成故障排除所需的捕获文件后,请确保禁用capture命令。
Cisco Unified Communications Manager单向音频问题
仅在需要MTP的传出初始SIP呼叫设置中才会出现此问题。在这种情况下,传出SIP INVITE消息可以包含SDP提议。在以下情况下可能出现此问题:
解决方案
MTP资源可能会间歇性泄漏,从而导致需要MTP资源的SIP呼叫失败。在RTMT中,可用的MTP资源达到0,每个需要MTP的呼叫的MTP分配失败计数增加。初始INVITE的SDP部分可能错误地包含a=inactive。
完成这些步骤以解决问题:
-
如果可能,取消选中SIP中继配置上的Media Termination Point Required。
-
如果需要Early Offer,请配置Early Offer,但取消选中Media Termination Point Required。
-
对于IPv6部署,请使用双协议栈,而不是仅使用IPv6的终端。
相关信息