Weird ‘hairpin’ Call Rtp Audio Problem

Home » Asterisk Users » Weird ‘hairpin’ Call Rtp Audio Problem
Asterisk Users 4 Comments

Hello List

Asterisk 13.14.1 in use with pjsip stack.

On the remote side is a SBC which performs some ‘nat’ detection. I
suppose this means the SBC listens from where it is getting RTP data and then replies to that ip.

As long as the asterisk is initiating the call this is fine, the asterisk start sending RTP to the media IP of the SBC and the SBC is sending media back.

Now I want to do a hairpin call, simulating call forward on no answer
(yes this is the situation I observed the problem first)

So incoming AND outgoing calls are via SBC.

exten => destination,1,Progress()
exten => same,n,Playtones(ring)
exten => same,n,Wait(5)
exten => same,n,Dial(PJSIP/sip:external@sbc)

What I now observe when I dissect this call via Wireshark (and set rtp debug on etc).

Call to destination is established, up to the Wait(5) we have two way RTP audio between the SBC and the Asterisk.

The external destination picks up the call. From what I see the media ip addresses and ports are correct, no direct media is attempted. So asterisk should ‘simple bridge’ oder ‘native bridge’ the call localy.

But for some reason, the asterisk server is NOT forwarding any rtp, nor is the SBC forwarding any rtp it is getting from it’s remote side which is definitely sending rtp data. (yes I have access to the SBC and did sniff both sides).

I fear, that both, the asterisk side and the sbc side are attempting the same kind of nat detection and do not forward rtp until they receive any packets.

I did probably try all possible permutations of:

direct_media=no rtp_symmetric=yes force_rport=yes

But still no audio.

Any hints on how to force asterisk to send the first rtp packet?

Mit freundlichen Grüssen

-Benoît Panizzon-

I m p r o W a r e A G – Leiter Commerce Kunden

4 thoughts on - Weird ‘hairpin’ Call Rtp Audio Problem

  • The “rtp_keepalive” option can be used to have the RTP stack send an RTP packet out. Try that and see what happens.

  • Hi Joshua

    Once again ‘bullseye’ that fixed the problem. Thank you!

    Mit freundlichen Grüssen

    -Benoît Panizzon-

    I m p r o W a r e A G – Leiter Commerce Kunden

  • Hi Joshua

    Now a customer with and FreePBX 2.9.0 (Asterisk 1.8.20.1) ran into the same issue with our SBC.

    I told him to set rtpkeepalive=1 in sip.conf but I don’t see this version sending any comfort noise packets.

    Isn’t there any way to disable this nat detection feature completely in asterisk? (nat=no does not seem to do the trick)

    Mit freundlichen Grüssen

    -Benoît Panizzon-

    I m p r o W a r e A G – Leiter Commerce Kunden

  • I don’t remember 1.8 or the various options, you’d need to verify with the sample configuration file. Strict RTP protection can be disabled in rtp.conf using the strictrtp option. Otherwise it’s not something in Asterisk that stops this kind of stuff, it’s the NAT Implementation in the router.


    Joshua Colp Digium, Inc. | Senior Software Developer
    445 Jan Davis Drive NW – Huntsville, AL 35806 – US
    Check us out at: http://www.digium.com & http://www.asterisk.org