[Serusers] nathelper / rtpproxy inconsistencies

Jac Barben jbarben at claritytel.com
Tue Feb 24 08:24:07 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