From: Steven S. <ss...@so...> - 2004-02-08 20:43:31
|
More Data: Watching the trace, the error seems to take place after the timeout for the transfer attempt. As Adam pointed out, IAX2 always tries to establish a native bridge. Somehow our clients, being both NATed behind the same NAT device (i.e. both using the same real outside IP address) are unable to connect natively (the NAT router is not smart enough to "pinwheel" IAX packets?) so the connection does not work. Oddly, the IAX protocol seems to default to switching over to a native-bridged operation UNLESS it receives tacit failure messages from both sides. Here's what you see with a IAX2-to-IAX2 call through Iaxtel that does _not_ have any problems with the audio: -- IAX2[1111]/8 answered IAX2[iaxtel@69.73.19.178:4569]/7 -- Stopped music on hold on IAX2[iaxtel@69.73.19.178:4569]/7 -- Attempting native bridge of IAX2[iaxtel@69.73.19.178:4569]/7 and -- Channel 'IAX2[iaxtel@69.73.19.178:4569]/7' unable to transfer Note the last line - the chan_iax2 code at Iaxtel detected that a native session could not be established, so it rejected the attempt and my Asterisk continued to relay the voice data. Here's what you see with the IAX client-to-IAX client call: -- Accepting unauthenticated call from 64.151.42.28, requested format = 2, actual format = 2 -- Executing Dial("IAX2[guest@1105]/3", "IAX2/1111|20|m") in new stack -- Called 1111 -- Started music on hold, class 'default', on IAX2[guest@1105]/3 -- Call accepted by 64.151.42.28 (format GSM) -- Format for call is GSM -- IAX2[1111]/5 is ringing -- IAX2[1111]/5 answered IAX2[guest@1105]/3 -- Stopped music on hold on IAX2[guest@1105]/3 -- Attempting native bridge of IAX2[guest@1105]/3 and IAX2[1111]/5 -- Registered '1111' (AUTHENTICATED) at 64.151.42.28:4569 -- Registered '1111' (AUTHENTICATED) at 64.151.42.28:4569 You never see either side (properly?) reject the attempted native transfer, so Asterisk bows out of the call and the audio stops. Can we set a noreinvite flag for IAX (I know, I should look at the source...) to prevent the system from event trying to reinvite the audio point-to-point? I want to blame the "both clients behind the same NAT screen" factor, but I have had client-to-client calls loose audio after 1 minute even when users are calling in from outside. Thoughts? Adam, did you have anything like this spring up in Firefly? Thanks, Steve |