Hi Daniel,
I am not sure that nat_uac_test can determine type of NAT device. and why you need all these checks if you always use rtpproxy? (another q from 2013 :)
The idea is to reduce using of rtpproxy for better scalability and voice quality. If we can beat all types of NAT with a near-end NAT traversal, except symmetric NAT why do we always use proxy option in case if NAT is detected.
On Wed, Feb 8, 2017 at 12:01 PM, Daniel Tryba d.tryba@pocos.nl wrote:
On Wed, Feb 08, 2017 at 01:12:05AM -0700, Arsen Semionov wrote:
good question from 2013 :) Maybe someone has experience and can confirm this?
The answer to the 2013 question is: if you can depend on this (I have never seen it) you can script kamailio to make use of it.
My main question: is it possible to determine when it's required to use
RTP
proxy ? In other words can we know that the client is behind symmetric
NAT
device or we just use rtpproxy as a silver bullet?
The "default" config has rtpproxy on detected NAT as an example. But personally I go for the always proxy option, it never failed so far (except for misconfigured client side firewalls that wouldn't have permitted p2p rtp anyway but now can easily fixed by permitting the traffic from the rtp range of udp ports from the rtpengine/proxy servers).
NAT detect example below (so take a look at nat_uac_test to see what kind of tests there are):
route[NATDETECT] { #!ifdef WITH_NAT force_rport(); if (nat_uac_test("19")) { if (is_method("REGISTER")) { fix_nated_register(); } else { if(is_first_hop()) set_contact_alias(); } setflag(FLT_NATS); } #!endif return; }
route[NATMANAGE] { #!ifdef WITH_NAT if (is_request()) { if(has_totag()) { if(check_route_param("nat=yes")) { setbflag(FLB_NATB); } } } if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;
rtpproxy_manage("co");
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users