When a phone call is established from an IP station through a Cisco IOS voice gateway/router, only one of the parties receives audio (one-way communication).
When a toll-bypass call is established between two Cisco gateways, only one of the parties receives audio (one-way communication).
An improperly configured Cisco IOS gateway, a firewall, or a routing or default gateway problem, among other things, can cause this problem.
Make Sure IP Routing is Enabled on Cisco IOS Gateway/Routers
Some Cisco IOS gateways, such as the VG200, have IP routing disabled by default. This will lead to one-way voice problems.
Before going any further, make sure that your router has IP routing enabled (that is, does not have the global configuration command no ip routing).
To enable IP routing, enter the following global configuration command in your Cisco IOS gateway:
Check Basic IP Routing
Ensure that basic IP access should always gets checked first. Because RTP streams have no connections (transported over UDP), traffic may travel successfully in one direction but get lost in the opposite direction.
Check the following conditions:
Default gateways configured at the end stations
IP routes on the default gateways, mentioned above, leading to the destination networks
The following list explains how to verify the default router/gateway configuration on various Cisco Unified IP Phones:
Cisco Unified IP Phone model 7910—Press the Settings button, select option 6, push volume down until the Default Router field shows up.
Cisco Unified IP Phone model 7960/40—Press Settings button, select option 3, scroll down until the Default Router field shows up.
Cisco Unified IP Phone model 2SP+/30VIP—Press **#; then, press # until gtwy= shows up.
For Cisco DT24+ Gateways, check the DHCP Scope and make sure that a Default Gateway (003 router) option exists in the scope. The 003 router parameter populates the Default Gateway field in the devices and PCs. Scope option 3 should have the IP address of the router interface that will be doing routing for the gateway.
Bind the H.323 Signaling to a Specific IP Address on Cisco IOS Gateway/Routers
When the Cisco IOS gateway has multiple active IP interfaces, some of the H.323 signaling may use one IP address for course, and other parts of it may reference a different source addresses. This can generate various kinds of problems, including being one-way audio.
To avoid the problem, the H.323 signaling can be bound to a specific source address, which can belong to a physical or virtual interface (loopback). The command syntax to use under the interface configuration mode follows:
h323-gateway voip bind srcaddr<ip address>. Configure this command under the interface with the IP address to which the Cisco Unified Communications Manager points.
Configuring H.323 Support for Virtual Interfaces documents this command, which was introduced in Cisco IOS Release 12.1.2T.
A bug exists in version 12.2(6) where this solution can actually cause a one-way audio problem. For more information, refer to bug ID CSCdw69681 (registered customers only) in Cisco Software Bug Toolkit (registered customers only).
Check that Answer Supervision Is Being Sent and Received Correctly from the Telco or Switch
In an implementation that has a Cisco IOS gateway connected to a Telco or switch, verify that answer supervision gets sent correctly when the called device behind the telco or switch answers the call. Failure to receive the answer supervision will cause the Cisco IOS gateway not to cut through (open) the audio path in a forward direction which causes one-way voice. A workaround involves the need to configure voice rtp send-recv on.
Cut-through Two-Way Audio Early Using voice rtp send-recv on Cisco IOS Gateway/Routers
The voice path gets established in the backward direction as soon as the RTP stream is started. The forward audio path will not be cut through until the Cisco IOS gateway receives a Connect message from the remote end.
In some cases you need to establish a two-way audio path as soon as the RTP channel is opened—before the connect message is received. To achieve this, use the voice rtp send-recv global configuration command.
Check cRTP Settings on a Link-by-Link Basis on Cisco IOS Gateway/Routers
This issue applies to scenarios, such as toll-bypass, where more than one Cisco IOS router/gateway is involved in the voice path and Compressed RTP (cRTP) is used. cRTP, or RTP Header Compression, designates a method for making the VoIP packet headers smaller to regain bandwidth. cRTP takes the 40-byte IP/UDP/RTP header on a VoIP packet and compresses it to 2-4 bytes per packet, yielding approximately 12Kb of bandwidth for a G.729 encoded call with cRTP.
cRTP occurs on a hop-by-hop basis with decompression and recompression on every hop. Because each packet header needs to be examined for routing, enable cRTP on both sides of an IP link.
Also verify that cRTP is working as expected on both ends of the link. Cisco IOS levels vary in terms of switching paths and concurrent cRTP support.
In summary, the history follows:
Until Cisco IOS Software Release 12.0.5T, cRTP gets process-switched.
Cisco IOS Software Release 12.0.7T, fast- and Cisco express forwarding (CEF)-switching support for cRTP, which introduced and continue in 12.1.1T.
In Cisco IOS Software Release 12.1.2T, introduced algorithmic performance improvements.
If you are running cRTP on Cisco IOS platforms (IOS Release 12.1), verify that bug CSCds08210 (registered customers only) (VoIP and FAX not working with RTP header compression ON) does not affect your IOS version.
Verify Minimum Software Level for NAT on Cisco IOS Gateway/Routers
If you are using Network Address Translation (NAT), you must meet the minimum software level requirements. Earlier versions of NAT do not support skinny protocol translation and will lead to one-way voice issues.
The minimum software levels that are required for using NAT and skinny simultaneously specify Cisco IOS Software 12.1(5)T for IOS gateways to support skinny and H.323v2 with NAT.
If your Cisco Unified Communications Manager is using a TCP port for skinny signaling that differs from the default 2000, you need to adjust the NAT router with the ip nat service skinny tcp port<number> global configuration command.
The minimum software level that is required for using NAT and skinny simultaneously on a PIX firewall specifies 6.0.
These levels of software do not necessarily support all the RAS messages necessary for full gatekeeper support. Gatekeeper support occurs outside the scope of this document.
Disable voice-fastpath on AS5350 and AS5400
The Cisco IOS command voice-fastpath enable gets a hidden global configuration command for the AS5350 and AS5400, which is enabled by default. To disable it, use the no voice-fastpath enable global configuration command.
When enabled, this command caches the IP address and UDP port number information for the logical channel that is opened for a specific call and prevents the RTP stream from getting to the application layer, but rather forwards the packets at a lower layer. This helps marginally reduce CPU utilization in high-call-volume scenarios.
When supplementary services, such as hold or transfer are used, the voice-fastpath command causes the router to stream the audio to the cached IP address and UDP port, disregarding the new logical channel information that was generated after a call on hold was resumed or a transfer was completed. To avoid this problem, traffic should go to the application layer constantly, so redefinition of the logical channel gets taken into account, and audio gets streamed to the new IP address/UDP port pair. That explains why you should disable voice-fastpath to support supplementary services.
Configure the VPN IP Address with SoftPhone
Cisco IP SoftPhone offers the ability to make a PC work like a Cisco Unified IP Phone model 7900 Series phone. Remote users who connect back to their company network through VPN need to configure some additional settings to avoid a one-way voice problem.
The solution requires you to configure the VPN IP address, instead of the IP address of the network adapter under the Network Audio Settings.
A useful command to verify packet flow specifies debug cch323 rtp. This command displays packets that the router transmits (X) and receives (R). An uppercase character indicates successful transmission/reception whereas a lowercase character indicates a dropped packet. See the following example:
voice-ios-gwy#debug cch323 rtp
RTP packet tracing is enabled
!--- This is an unanswered outgoing call.
!--- Notice that voice path only cuts through in forward
!--- direction and that packets are dropped. Indeed,
!--- received packets are traffic from the IP phone to the PSTN
!--- phone. These will be dropped until the call is answered.
Mar 3 23:46:23.690: ****** cut through in FORWARD direction *****
!--- This is an example of an answered call:
*Mar 3 23:53:26.570: ****** cut through in FORWARD direction *****
!-- At this point the remote end picks up the phone.
*Mar 3 23:53:30.378: ****** cut through in BOTH direction *****
!-- End of conversation.