Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tutorials:alias-example [2010/12/29 14:51]
192.98.100.130
tutorials:alias-example [2013/06/08 08:42] (current)
jh [In-Dialog Requests]
Line 3: Line 3:
 ===== Introduction ===== ===== Introduction =====
  
-The benefits ​of using add_contact_alias() and handle_ruri_alias() functions instead of conventional NAT traversal solutions ​are: +The benefit ​of using add_contact_alias() and handle_ruri_alias() functions instead of conventional NAT traversal solutions ​is that Request-URI in requests to UAs behind NATs is always what UAs expectIn the example below only functions related to signaling are shown. ​ Proxying of media using either Mediaprxy or RTP Proxy can be easily added. ​ In addition to handling NAT traversal, the example uses add_contact_alias() and handle_ruri_alias() functions for re-use of tcp/tls sessions between proxy and UAs.
- +
-  * Request-URI in requests to UAs behind NATs is always what UAs expect +
-  * Re-use of tcp sessions between proxy and UAs (optional) +
- +
-In the example below only functions related to signaling are shown. ​ Proxying of media using either Mediaprxy or RTP Proxy can be easily added. +
 ===== Non-Register Initial Requests ===== ===== Non-Register Initial Requests =====
  
 Call add_contact_alias() on all non-register initial requests, which Call add_contact_alias() on all non-register initial requests, which
-come from UAs behind NATor (if you want re-use of TCP sessions) ​which don't come via a proxy.+come from UAs behind NAT or which don't come via a proxy and transport protocol is not UDP.
 If you know that non-register initial request is going to another If you know that non-register initial request is going to another
 proxy, set TO_PROXY flag before relaying the request. proxy, set TO_PROXY flag before relaying the request.
Line 24: Line 18:
 route [NON_REGISTER_INITIAL_REQUESTS] { route [NON_REGISTER_INITIAL_REQUESTS] {
  
-    ​# Use this test (and delete the next) if you don't care about re-use of TCP sessions ​    +    if (REQUEST_COMES_FROM_BEHIND_NAT ​|| (!is_present_hf("​Record-Route"​) && (proto != UDP))) {
-    ​if (REQUEST_COMES_FROM_BEHIND_NAT) { +
-        route(ADD_CONTACT_ALIAS);​ +
-    }; +
-    # Use this test (and delete the previous) if you want also re-use of TCP sessions ​    +
-    if (!is_present_hf("​Record-Route"​)) {+
         route(ADD_CONTACT_ALIAS);​         route(ADD_CONTACT_ALIAS);​
     };     };
Line 55: Line 44:
 ===== Register Requests ===== ===== Register Requests =====
  
-Call fix_nated_register() on register requests, if registering ​ua is +Call fix_nated_register() on register requests, if registering ​UA is 
-behind ​nat OR is using tcp.+behind ​NAT or transport protocol ​is not UDP.
  
 <​code>​ <​code>​
 route [REGISTER_REQUESTS] { route [REGISTER_REQUESTS] {
     ...     ...
-    if (isflagset(FROM_NATED) || (proto == TCP) || (proto == TLS)) {+    if (isflagset(FROM_NATED) || (proto ​!UDP)) {
         fix_nated_register();​         fix_nated_register();​
         if (isflagset(FROM_NATED)) {         if (isflagset(FROM_NATED)) {
Line 74: Line 63:
 ===== In-Dialog Requests ===== ===== In-Dialog Requests =====
  
-Call add_contact_alias() ​for all in-dialog requests that don't come +Call add_contact_alias() ​on all in-dialog requests ​that come from behind NAT or that don't come 
-from another proxy. ​ Call handle_ruri_alias() for all in-dialog requests before+from another proxy and transport protocol is not UDP.  Call handle_ruri_alias() for all in-dialog requests before
 t_relaying them to UAs.  Next hop is an UA if loose_route() t_relaying them to UAs.  Next hop is an UA if loose_route()
 didn't set $du.  If next hop is a proxy, set TO_PROXY flag. didn't set $du.  If next hop is a proxy, set TO_PROXY flag.
Line 82: Line 71:
 route [IN_DIALOG_REQUESTS] { route [IN_DIALOG_REQUESTS] {
  
-    if (@via[2] ​== ""​) {+    if (REQUEST_COMES_FROM_BEHIND_NAT || (is_first_hop() && (proto !UDP))) {
         route(ADD_CONTACT_ALIAS);​         route(ADD_CONTACT_ALIAS);​
     }     }

Navigation

Wiki

Other

Personal Tools