Phil Frost
2012-Jan-31 19:49 UTC
[asterisk-users] Troubleshooting one-way audio with H.323 trunk between Asterisk and Avaya IP Office
I'm attempting to configure an H.323 trunk (using chan_h323) between an Asterisk box and an Avaya IP office. It mostly works. Calls from Polycom SIP devices registered to Asterisk can place calls over the trunk to IP Office extensions and everything works great. However, calling from an IP Office handset to any of the Polycoms results in a one-way call where the Polycom can not hear the Avaya. I think what's happening is somehow, the Polycom is receiving two RTP streams, and one of them is silence. I think this because if I place the call on hold, I will hear, occasionally, short bursts of what could be the hold music on the Polycom. Also, when I look at packet captures taken from the Polycom's port, I see two streams when it's working (the Polycom calls Avaya) and three when it's not (Avaya calls Polycom). I do notice that this "extra" stream has a unique SSRC. If I do the packet captures from the Asterisk box, it looks like the extra stream is generated by Asterisk. Graphically, the RTP streams and their SSRCs I see on a working call (Polycom calls Avaya) looks like this: Polycom --0x123-> Asterisk --0x123-> IP Office <-0x456-- <-0x456 The non-working call (Avaya calls Polycom) looks like: <-0x789-- Polycom --0x123-> Asterisk --0x123-> IP Office <-0x456-- <-0x456 However, I'm new to Asterisk, and I'm not very familiar with any of these VoIP protocols, so I find myself stuck. Can anyone suggest some troubleshooting steps or material I might read which would help me to determine if my hypothesis is correct, and if so, how I can determine what's responsible for this extra stream? Console output from a non-working call with sip and h323 debug and trace on follows. Here, 207 is the Avaya handset originating the call, and 216 is the Polycom receiving it. 172.20.20.233 is the IP Office, 172.20.20.205 is Asterisk, and 172.20.32.70 is the Polycom. asterisk01*CLI> == New H.323 Connection created. --Received SETUP message -- Setting up Call -- Call token: [ip$172.20.20.233:4232/71] -- Calling party name: [] -- Calling party number: [207] -- Called party name: [216] -- Called party number: [216] -- Calling party IP: [172.20.20.233] Setting capabilities to 0x4 (ulaw) Capabilities in preference order is (ulaw) DTMF mode is 8 Allowed Codecs for ip$172.20.20.233:4232/71 (ip$172.20.20.205:1720): Table: G.711-uLaw-64k <1> UserInput/hookflash <2> UserInput/basicString <3> Set: 0: 0: G.711-uLaw-64k <1> 1: UserInput/hookflash <2> 2: UserInput/basicString <3> =-= In OnAnswerCall for call 71 - Progress Indicator: 0 - Inserting PI of 8 into ALERTING message -- Executing [216 at default:1] Dial("H323/ip$172.20.20.233:4232/71", "SIP/216") in new stack == Using SIP RTP CoS mark 5 Audio is at 172.20.20.205 port 10488 Adding codec 0x4 (ulaw) to SDP Adding non-codec 0x1 (telephone-event) to SDP Reliably Transmitting (NAT) to 172.20.32.70:5060: INVITE sip:216 at 172.20.32.70 SIP/2.0 Via: SIP/2.0/UDP 172.20.20.205:5060;branch=z9hG4bK799c13df;rport Max-Forwards: 70 From: "207" <sip:207 at 172.20.20.205>;tag=as1de701d2 To: <sip:216 at 172.20.32.70> Contact: <sip:207 at 172.20.20.205> Call-ID: 4c0201703a430c12490761fe7d6cdead at 172.20.20.205 CSeq: 102 INVITE User-Agent: Asterisk PBX 1.6.2.9-2+squeeze4 Date: Tue, 31 Jan 2012 19:41:49 GMT Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO Supported: replaces, timer Content-Type: application/sdp Content-Length: 247 v=0 o=root 992661417 992661417 IN IP4 172.20.20.205 s=Asterisk PBX 1.6.2.9-2+squeeze4 c=IN IP4 172.20.20.205 t=0 0 m=audio 10488 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 a=sendrecv --- -- Called 216 <--- SIP read from UDP:172.20.32.70:5060 ---> SIP/2.0 100 Trying Via: SIP/2.0/UDP 172.20.20.205:5060;branch=z9hG4bK799c13df;rport From: "207" <sip:207 at 172.20.20.205>;tag=as1de701d2 To: <sip:216 at 172.20.32.70>;tag=9BF9794A-AD4778F1 CSeq: 102 INVITE Call-ID: 4c0201703a430c12490761fe7d6cdead at 172.20.20.205 Contact: <sip:216 at 172.20.32.70> User-Agent: PolycomSoundStationIP-SPIP_6000-UA/3.0.4.0061 Content-Length: 0 <-------------> --- (9 headers 0 lines) --- <--- SIP read from UDP:172.20.32.70:5060 ---> SIP/2.0 180 Ringing Via: SIP/2.0/UDP 172.20.20.205:5060;branch=z9hG4bK799c13df;rport From: "207" <sip:207 at 172.20.20.205>;tag=as1de701d2 To: <sip:216 at 172.20.32.70>;tag=9BF9794A-AD4778F1 CSeq: 102 INVITE Call-ID: 4c0201703a430c12490761fe7d6cdead at 172.20.20.205 Contact: <sip:216 at 172.20.32.70> User-Agent: PolycomSoundStationIP-SPIP_6000-UA/3.0.4.0061 Allow-Events: talk,hold,conference Content-Length: 0 <-------------> --- (10 headers 0 lines) --- -- SIP/216-00000006 is ringing Sending alerting <--- SIP read from UDP:172.20.32.70:5060 ---> SIP/2.0 200 OK Via: SIP/2.0/UDP 172.20.20.205:5060;branch=z9hG4bK799c13df;rport From: "207" <sip:207 at 172.20.20.205>;tag=as1de701d2 To: <sip:216 at 172.20.32.70>;tag=9BF9794A-AD4778F1 CSeq: 102 INVITE Call-ID: 4c0201703a430c12490761fe7d6cdead at 172.20.20.205 Contact: <sip:216 at 172.20.32.70> Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, INFO, MESSAGE, SUBSCRIBE, NOTIFY, PRACK, UPDATE, REFER User-Agent: PolycomSoundStationIP-SPIP_6000-UA/3.0.4.0061 Content-Type: application/sdp Content-Length: 199 v=0 o=- 1167617253 1167617253 IN IP4 172.20.32.70 s=Polycom IP Phone c=IN IP4 172.20.32.70 t=0 0 m=audio 2256 RTP/AVP 0 101 a=sendrecv a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 <-------------> --- (11 headers 9 lines) --- Found RTP audio format 0 Found RTP audio format 101 Found audio description format PCMU for ID 0 Found audio description format telephone-event for ID 101 Capabilities: us - 0x4 (ulaw), peer - audio=0x4 (ulaw)/video=0x0 (nothing)/text=0x0 (nothing), combined - 0x4 (ulaw) Non-codec capabilities (dtmf): us - 0x1 (telephone-event), peer - 0x1 (telephone-event), combined - 0x1 (telephone-event) Peer audio RTP is at port 172.20.32.70:2256 list_route: hop: <sip:216 at 172.20.32.70> set_destination: Parsing <sip:216 at 172.20.32.70> for address/port to send to set_destination: set destination to 172.20.32.70, port 5060 Transmitting (NAT) to 172.20.32.70:5060: ACK sip:216 at 172.20.32.70 SIP/2.0 Via: SIP/2.0/UDP 172.20.20.205:5060;branch=z9hG4bK1c7d2fea;rport Max-Forwards: 70 From: "207" <sip:207 at 172.20.20.205>;tag=as1de701d2 To: <sip:216 at 172.20.32.70>;tag=9BF9794A-AD4778F1 Contact: <sip:207 at 172.20.20.205> Call-ID: 4c0201703a430c12490761fe7d6cdead at 172.20.20.205 CSeq: 102 ACK User-Agent: Asterisk PBX 1.6.2.9-2+squeeze4 Content-Length: 0 --- -- SIP/216-00000006 answered H323/ip$172.20.20.233:4232/71 Answering call ip$172.20.20.233:4232/71 -- Packet2Packet bridging H323/ip$172.20.20.233:4232/71 and SIP/216-00000006 -- Received Facility message... -- Received Facility message... Peer capability is G.711-uLaw-64k <1> Found peer capability G.711-uLaw-64k <1>, Asterisk code is 4, frame size (in ms) is 20 Peer capability is UserInput/basicString <2> Peer capability is UserInput/dtmf <5> Peer capability is UserInput/hookflash <6> Peer capabilities = 0x4 (ulaw), ordered list is (ulaw) -- Received Facility message... -- Started logical channel: sending G.711-uLaw-64k -- channelsOpen = 1 =-= In OnConnectionEstablished for call 71 -- Connection Established with "Pfrost [172.20.20.233]" -- Received Facility message... -- Received Facility message... -- Started logical channel: receiving G.711-uLaw-64k -- channelsOpen = 2 External RTP Session Starting RTP channel id 1 parameters: -- remoteIpAddress: 172.20.20.233 -- remotePort: 49174 -- ExternalIpAddress: 172.20.20.205 -- ExternalPort: 18974 -- Received Facility message... MyH323_ExternalRTPChannel::OnReceivedAckPDU -- remoteIpAddress: 172.20.20.233 -- remotePort: 49174 External RTP Session Starting RTP channel id 1 parameters: -- remoteIpAddress: 172.20.20.233 -- remotePort: 49174 -- ExternalIpAddress: 172.20.20.205 -- ExternalPort: 18974 -- Received Facility message... <--- SIP read from UDP:172.20.32.70:5060 ---> BYE sip:207 at 172.20.20.205 SIP/2.0 Via: SIP/2.0/UDP 172.20.32.70;branch=z9hG4bKa662ae9091F77FE7 From: <sip:216 at 172.20.32.70>;tag=9BF9794A-AD4778F1 To: "207" <sip:207 at 172.20.20.205>;tag=as1de701d2 CSeq: 1 BYE Call-ID: 4c0201703a430c12490761fe7d6cdead at 172.20.20.205 Contact: <sip:216 at 172.20.32.70> User-Agent: PolycomSoundStationIP-SPIP_6000-UA/3.0.4.0061 Max-Forwards: 70 Content-Length: 0 <-------------> --- (10 headers 0 lines) --- Sending to 172.20.32.70 : 5060 (NAT) <--- Transmitting (NAT) to 172.20.32.70:5060 ---> SIP/2.0 200 OK Via: SIP/2.0/UDP 172.20.32.70;branch=z9hG4bKa662ae9091F77FE7;received=172.20.32.70 From: <sip:216 at 172.20.32.70>;tag=9BF9794A-AD4778F1 To: "207" <sip:207 at 172.20.20.205>;tag=as1de701d2 Call-ID: 4c0201703a430c12490761fe7d6cdead at 172.20.20.205 CSeq: 1 BYE Server: Asterisk PBX 1.6.2.9-2+squeeze4 Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO Supported: replaces, timer Content-Length: 0 <------------> == Spawn extension (default, 216, 1) exited non-zero on 'H323/ip$172.20.20.233:4232/71' -- Sending RELEASE COMPLETE -- ClearCall: Request to clear call with token ip$172.20.20.233:4232/71, cause EndedByRemoteUser channelsOpen = 1 channelsOpen = 0 ExternalRTPChannel Destroyed ExternalRTPChannel Destroyed 29:53.550 H225 Answer:2f42910 h323pdu.cxx(1297) H225 Read error (0): -- ClearCall: Request to clear call with token ip$172.20.20.233:4232/71, cause EndedByTransportFail 29:53.562 H323 Cleaner h323.cxx(1757) H323 Connection ip$172.20.20.233:4232/71 terminated. -- Pfrost [172.20.20.233] has cleared the call == H.323 Connection deleted. Really destroying SIP dialog '4c0201703a430c12490761fe7d6cdead at 172.20.20.205' Method: BYE