[Serusers] SER -> RTP proxy -> Cisco or Sonus

Jac Barben jbarben at claritytel.com
Mon Feb 23 18:20:43 CET 2004


All:

Please bear with me... I'm having a hard time formulating this quesiton.

Basics:
ser-0.8.12  from src
rtpproxy = $Id: main.c,v 1.19.2.10 2003/10/18 20:14:22 sobomax Exp
RH 7.3  updated to: [root at sip2 rtpproxy]# uname -a
Linux sip2.claritycolorado.com 2.4.20-20.7 #1 Mon Aug 18 14:56:30 EDT 
2003 i686
unknown

The problem seems to be that I cannot "always" forward calls to a given 
destination if I have executed the force_rtp_proxy.

Typically I'm using a UA like a Cisco ATA, PureData, or softphone behind 
a firewall.  They in-turn register to SER/rtpproxy at a legal IP 
address; most calls are then forwarded to a Vega gateway that resides on 
the same network as SER/rtpproxy (in Denver).  In this instance all is 
well.  However, when I try to alt route calls to an "off-network" source 
(Cisco in LA and Sonus in Houston) I get two different and disturbing 
results:
1. Cisco will not respond to SER:  Cisco simply indicates in its own 
logs that the INVITE is invalid and thus "trashed" the message
2. Sonus will respond with a "Bad Request"

Below are some snippets:

Prior to calling the route I have already I identified whether or not my 
UA is behind a firewall and have fix_nated_contact(), force_rport(), 
setflag(1)

SER/rtpproxy is running at 64.47.72.12

# Clarity Vega Evergreen CO -- this one works
route[1]
{
        if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
                !search("^Route:") ) {
                sl_send_reply("479",
                        "We don't forward to private IP addresses");
                break;
        };
                                                                                

        record_route();
        if (isflagset(1)) {
                fix_nated_sdp("1");
                force_rtp_proxy();
                t_on_reply("2");
        }
                                                                                

        rewritehostport("64.47.72.10:5060");
        t_relay();
}

# Clarity Cisco AS5300 LA -- this one does not
route[2]
{
        if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
                !search("^Route:") ) {
                sl_send_reply("479",
                        "We don't forward to private IP addresses");
                break;
        };
                                                                                

        record_route();
        if (isflagset(1)) {
                fix_nated_sdp("1");
                force_rtp_proxy();
                t_on_reply("2");
        }
                                                                                

        rewritehostport("198.77.133.30:5060");
        t_relay();
}


# Clarity Sonus Houston  -- this one does not
route[3]
{
        if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
                !search("^Route:") ) {
                sl_send_reply("479",
                        "We don't forward to private IP addresses");
                break;
        };
                                                                                

        record_route();
        if (isflagset(1)) {
                fix_nated_sdp("1");
                force_rtp_proxy();
                t_on_reply("2");
        }
                                                                                

        rewritehostport("64.47.6.6:5060");
        t_relay();
}

/* inbound */
onreply_route[2] {
        fix_nated_contact();
        fix_nated_sdp("1");
        force_rtp_proxy();
}


Please... If you have any ideas... I'm really stuck.

Jac Barben




More information about the sr-users mailing list