[asterisk-users] Troubleshooting one-way voice... how to peek into SIP RTP?

Philip Prindeville philipp_subx at redfish-solutions.com
Sun Sep 28 15:09:50 CDT 2008


Well, things just got a lot more interesting...  Adding Monitor() to an 
extension ends the one-way voice problem on inbound calls!

So an incoming call gets handled as:

[ctc-incoming]
exten => 208345****,1,Noop()
exten => 208345****,n,Log(NOTICE: RDNIS: ${CALLERID(rdnis)} ANI: 
${CALLERID(ani)})
exten => 208345****,n,Goto(redfish-pstn,s,1)
...

[redfish-pstn]
exten => s,1(incoming),Noop()
exten => s,n,Answer()
exten => s,n,Wait(0.5)
...
some filters for bogus ANI's like 888888888.... goes to badani below

exten => s,n(exten),Background(vm-enter-num-to-call)
exten => s,nWaitExten(5)
exten => s,n(goodbye),Playback(vm-goodbye)
exten => s,n(end),Hangup()

exten => s,n(badani),Log(DEBUG,ANI: ${CALLERID(ani)} clearing)
exten => s,n,Playback(privacy-unident)
exten => s,n,Wait(0.5)
exten => s,n,Congestion()
exten => s,n,Hangup()

include => redfish-extens

exten => i,1,NoOp(Invalid: ${EXTEN})
exten => i,n,Playback(pbx-invalid)
exten => i,n,Goto(s,exten)

exten => t,1,Goto(s,goodbye)

[redfish-extens]
...

exten => 113,1,Monitor(wav,,w)            ; for debugging
exten => 113,n,Macro(stdexten,113,${GUEST},redfish)
exten => 113,n,Goto(s,exten)

...

exten => 113,1,Macro(stdexten,119,${GUEST},redfish)
exten => 113,n,Goto(s,exten)

So I don't get this at all.  If I dial 208345****, then enter '119' as 
the extension, it rings on a few phones (including a Xlite softphone) 
and if I pick up on any of those, I get one-way voice (I can hear the 
caller but they can't hear me).

If I enter '113' as the extension, it rings on two SPA-942's (one of 
which is the same as above, just a different line presentation)... and 
if I answer, then I get two-way voice!  Only difference is the Monitor() 
statement.

I'm starting to suspect it's a CODEC issue in Asterisk, though (a) why 
Asterisk would need to transcode a call between two uLaw endpoints, I 
don't know... and (b) why is it staying in the Media path at all?

I have the SIP peer that the calls come in on as:

[sip-proxy]
...
type=peer
nat=no
canreinvite=no
reinvite=no

Anyone know why the Monitor() would change the duplex(ity) of the audio 
stream?  I'm baffled (no pun intended).  And is there any debugging I 
can turn on to reveal CODEC behavior that might differ from 113 and 119?

Thanks,

-Philip



Philip Prindeville wrote:
> I've got the following situation.  I'm running Asterisk 1.4.18 on a 
> firewall/gateway machine, with some SPA-942 (f/w 5.1.15(a)) phones 
> behind it.
>
> I'm peering SIP with a Coppercom switch sitting behind an SBC.
>
> On outbound calls, I get 2-way voice, no worries.
>
> On inbound calls, I get one-way voice (I can hear the caller but they 
> can't hear me).
>
> I've looked at tcpdumps of the RTP traffic, and the addresses and port 
> numbers correspond to what's in the SIP INVITE/OK messages (assuming 
> that they don't somehow get munged by NAT after tcpdump looks at them -- 
> there is no NAT device upstream of my Asterisk firewall).
>
> I'll look into using Record() or Monitor() to capture the phone call, 
> but if there's any conversion being done by codecs then that won't 
> eliminate the possibility that the code itself is misconfigured or buggy 
> and generating a bad stream on one of the legs...
>
> Anyone have an idea about how to best go about troubleshooting this?
>
> Thanks,
>
> -Philip
>   




More information about the asterisk-users mailing list