[Serusers] multiple chained media proxy

Adrian Georgescu ag at ag-projects.com
Wed Feb 18 22:36:51 CET 2004


 >- if there are two or more Media Proxies in a row in your session, you
 >  might end up in a deadlock situation, resulting in no media 
transmitted
 >  (general issue).

Bernie,

You can circumvent this in the stable version by adding/checking an 
extra header:

         if (method=="INVITE") {
                 xlog ("L_INFO","-------------------------");
                 if (search("^P-Behind-NAT.*Yes.*") || 
search("^P-RTP-Proxy.*YES.*")) {
                         xlog ("L_INFO","Already one Media Proxy in the 
path");
                 } else {
                         xlog ("L_INFO","Use SerMediaProxy - Incomming 
call leg");
                         append_hf("P-Behind-NAT: Yes\r\n");
                         force_rtp_proxy();
                 }
                 t_on_reply("1");
         };

In unstable Maxim did something already in this respect and I will 
provide an update soon to have SerMediaProxy work out of the box.

--
Adrian

Hi!

I have such a setup because in my scenario only the Media Proxy has the
rights to receive connections coming from the Internet. Direct traffic 
to
all other hosts (UAs) is blocked.

It might be that you have to insert one more line,
  i.e.  setflag(1)   (don't ask me why...:-) )

Below a cut-past from my testing configuration, which seems to work fine

----

[...]
         # force RTP-proxy

         if (method=="INVITE") {
                record_route();
                setflag(1);
                force_rtp_proxy();
                /* set up reply processing */
                t_on_reply("1");
         };

         # forward to current uri now; use stateful forwarding; that
         # works reliably even if we forward from TCP to UDP
         if (!t_relay()) {
                 sl_reply_error();
         };

}

# RTP-proxy
# all incoming replies for t_onrepli-ed transactions enter here
onreply_route[1] {
       if (status=~"[12][0-9][0-9]")
                force_rtp_proxy();
}

---


Be prepared on the following possible issues:

- Clients, which do not support symetric media (sender port==receiver
   port) will probably not work. (Most of those anyway do not work behind
   NAT.)

- If you have more than one media (e.g. Audio and Video) in the same
   sesssion, only one media (the first m= line) is proxied correctly. The
   other media probably won't work (general issue).

- if there are two or more Media Proxies in a row in your session, you
   might end up in a deadlock situation, resulting in no media 
transmitted
   (general issue).


Have fun!

  T: Bernie


On Wed, 18 Feb 2004, CURRO_DOMINGUEZ wrote:

 > Hello,
 >
 > thanks all the list for help me (and others) with nathelper and 
rtpproxy.
 >
 > I want to test rtpproxy on my network, but without nat translation. It
 > means, udp streams have to go through my server.
 >
 > I'm not sure what functions from nathelper module I have to use. My 
idea
 > is something like this:
 >
 > if (method=="INVITE"){
 >           force_rtp_proxy();
 >           t_on_reply("1");
 > }
 > ....
 >
 > onreply_route[1]{
 >           force_rtp_proxy();
 > }
 >
 > I don't know whether this code is enough, or I have to use another
 > functions like fix_nated_contact() or fix_nated_sdp() to rewrite 
Contact
 > an SDP headers.
 >
 > Thanks for your help.
 >
 >
 >
 >
 > _______________________________________________
 > Serusers mailing list
 > Serusers at iptel.org
 > http://lists.iptel.org/mailman/listinfo/serusers
 >

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 6391 bytes
Desc: not available
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20040218/66b9437a/attachment.bin>


More information about the sr-users mailing list