<div dir="ltr">> 

I *shouldn’t need this if the pbx was saving received and rport params as a result of add_path_received().<div><br></div><div>You don't need to alias the Contact (for registration) in the intermediary proxy on the way to the non-colocated Registrar. Adding path should suffice.<br></div><div><br></div><div>> Can anyone explain why these two functions conflict?</div><div><br></div><div>I don't know, may be devs can tell. Personally, I prefer leaving the keepalive mechanism altogether to the Registrar for better control and granularity.<br></div><div><br></div><div>Regards,<br></div><div>--Sergiu</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 2, 2020 at 12:48 PM Daniel W. Graham <<a href="mailto:dan@cmsinter.net">dan@cmsinter.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_3487847881368962772WordSection1">
<p class="MsoNormal">I was able to fix all issues, but have one partially lingering.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">For register only, if I apply: set_contact_alias() with nat_keepalive(), keepalives are not sent. Removing set_contact_alias() fixes this.
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I *shouldn’t need this if the pbx was saving received and rport params as a result of add_path_received().<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Can anyone explain why these two functions conflict?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Test scenario -<u></u><u></u></p>
<p class="MsoNormal"># Doesn’t result in register keepalive –<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">route[NATDETECT] {<u></u><u></u></p>
<p class="MsoNormal">    force_rport();<br>
    set_contact_alias();  # removal of this enables keepalive<br>
    nat_keepalive();<br>
    return;<br>
}<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I’ve tested this with and without calls to handle_ruri_alias() elsewhere in cfg script with same result.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">-dan<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From: </span></b><span style="font-size:12pt;color:black">sr-users <<a href="mailto:sr-users-bounces@lists.kamailio.org" target="_blank">sr-users-bounces@lists.kamailio.org</a>> on behalf of Sergiu Pojoga <<a href="mailto:pojogas@gmail.com" target="_blank">pojogas@gmail.com</a>><br>
<b>Reply-To: </b>"Kamailio (SER) - Users Mailing List" <<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a>><br>
<b>Date: </b>Wednesday, April 1, 2020 at 8:58 AM<br>
<b>To: </b>"Kamailio (SER) - Users Mailing List" <<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a>><br>
<b>Subject: </b>Re: [SR-Users] nathelper without usrloc<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Nothing else comes to mind based on info provided. May be you can send some sip traffic captures and elaborate?
<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Regards,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">--Sergiu <u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Tue, Mar 31, 2020 at 10:29 PM Daniel W. Graham <<a href="mailto:dan@cmsinter.net" target="_blank">dan@cmsinter.net</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Thanks, yeah I had already changed that, but registration works with either. I’m not asking for a solution, just looking for suggestions on anything that needs attention, so I appreciate your pointers. 
<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12pt">-dan<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">On Mar 31, 2020, at 8:55 PM, Sergiu Pojoga <<a href="mailto:pojogas@gmail.com" target="_blank">pojogas@gmail.com</a>> wrote:<u></u><u></u></p>
</div>
</div>
<div>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<p class="MsoNormal"><u></u> <u></u></p>
</blockquote>
</div>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<div>
<div>
<p class="MsoNormal">Oh and almost forgot - try <b>add_path_received()</b> instead of add_path()<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Good luck!<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Tue, Mar 31, 2020 at 8:48 PM Sergiu Pojoga <<a href="mailto:pojogas@gmail.com" target="_blank">pojogas@gmail.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">A lot of things may not be 'right' here, unfortunately your question is too broad to answer and too little info, the topology is indeed non-default and I doubt someone will present you with a final solution (there's business support, if
 you're looking for that). <u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Otherwise, if I were to just throw a guess: <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- try fix_nated_register() (instead of set_contact_alias) just for Register method on the way to the registrar<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- in the Registrar, make sure the Contact's Path address is correct<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Cheers,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">--Sergiu<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Tue, Mar 31, 2020 at 7:34 PM Daniel W. Graham <<a href="mailto:dan@cmsinter.net" target="_blank">dan@cmsinter.net</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">It did help, I read that a couple times already but something is still not right, and its only because of the decoupling of the registrar. I need to do more debugging and see if Im loosing the flag value. Hoping something sticks out that
 someone sees and can point me in the right direction. <br>
<br>
-dan<br>
<br>
On Mar 31, 2020, at 7:15 PM, Alex Balashov <<a href="mailto:abalashov@evaristesys.com" target="_blank">abalashov@evaristesys.com</a>> wrote:<br>
> <br>
> Daniel,<br>
> <br>
> Might this article be of aid?<br>
> <br>
> <a href="http://www.evaristesys.com/blog/server-side-nat-traversal-with-kamailio-the-definitive-guide/" target="_blank">
http://www.evaristesys.com/blog/server-side-nat-traversal-with-kamailio-the-definitive-guide/</a><br>
> <br>
> -- Alex<br>
> <br>
>> On Tue, Mar 31, 2020 at 11:12:23PM +0000, Daniel W. Graham wrote:<br>
>> <br>
>> It does but doesn't work as well as kamailio, and since the proxy is the entry point.<br>
>> <br>
>> The biggest issue here isnt the keepalive, as I did have that working. The main issue is the routing of messages, utilizing set_contact_alias and handle_ruri_alias, as Ive been unable to get ack and bye messages to make it past the proxy. I’m assuming these
 functions are not being used at the right locations or I need to rely on another mechanism to accomplish it. I also question my use of the PBX flag and the natmanage logic.<br>
>> <br>
>> -dan<br>
>> <br>
>> On Mar 31, 2020, at 7:01 PM, Sergiu Pojoga <<a href="mailto:pojogas@gmail.com" target="_blank">pojogas@gmail.com</a>> wrote:<br>
>> <br>
>> <br>
>> Hi Daniel,<br>
>> <br>
>> From what you are describing, my understanding is that the Registrar is the PBX, kamailio is acting as an edge proxy. If so, doesn't the PBX/registrar have NAT traversal/keepalive mechanisms of its own?<br>
>> <br>
>> Regards,<br>
>> --Sergiu<br>
>> <br>
>> On Tue, Mar 31, 2020 at 1:55 PM Daniel W. Graham <<a href="mailto:dan@cmsinter.net" target="_blank">dan@cmsinter.net</a><mailto:<a href="mailto:dan@cmsinter.net" target="_blank">dan@cmsinter.net</a>>> wrote:<br>
>> I’ve been missing with this for a while and seem to be missing something. Any suggestions on what is missing here?<br>
>> <br>
>> Trying to use set_contact_alias() and handle_ruri_alias() from nathelper module and nat_keepalive from nat_traversal module, without registrar.<br>
>> <br>
>> I had register keepalive working, that has since broke. When register keepalive was working, I was able to place call in either direction but ACK and BYE was not being routed past kamailio.<br>
>> <br>
>> Registrations are forwarded to the PBX using add_path() and is working.<br>
>> <br>
>> Also not included below is the routing to the PBX, that is just setting $du and t_relay, and is also working.<br>
>> <br>
>> Topology is: UA1 -> NAT -> kamailio -> PBX -> UA2<br>
>> <br>
>> Using default config file as the example, modified with above changes. I also removed RTP config as that is a non-issue.<br>
>> <br>
>> request_route {<br>
>>    ……<br>
>>    # FLAG MESSAGES FROM PBX<br>
>>        setflag(FLT_PBX);<br>
>>    route(NATDETECT);<br>
>>    ……<br>
>> <br>
>> route[NATDETECT] {<br>
>>            if (nat_uac_test("19")) {<br>
>> force_rport();<br>
>>                        set_contact_alias();<br>
>>                        nat_keepalive();<br>
>>            }<br>
>>            return;<br>
>> }<br>
>> <br>
>> route[WITHINDLG] {<br>
>>            if (!has_totag()) return;<br>
>>                        if (loose_route()) {<br>
>>                                    route(DLGURI);<br>
>>                        } else if ( is_method("ACK") ) {<br>
>>                                    route(NATMANAGE);<br>
>>                        } else if ( is_method("NOTIFY") ) {<br>
>>                                    record_route();<br>
>>                        }<br>
>>            route(RELAY);<br>
>>            exit;<br>
>>            }<br>
>> <br>
>>            if (is_method("SUBSCRIBE") && uri == myself) {<br>
>>                        route(PRESENCE);<br>
>>                        exit;<br>
>>            }<br>
>>            if ( is_method("ACK") ) {<br>
>>                        if ( t_check_trans() ) {<br>
>>                                    route(RELAY);<br>
>>                                    exit;<br>
>>                        } else {<br>
>>                                    exit;<br>
>>                        }<br>
>>            }<br>
>>            sl_send_reply("404","Not here");<br>
>>            exit;<br>
>> }<br>
>> <br>
>> route[NATMANAGE] {<br>
>>        if(isflagset(FLT_PBX)) {<br>
>>            handle_ruri_alias();<br>
>>    }<br>
>>    if(!isflagset(FLT_PBX)) {<br>
>>        set_contact_alias();<br>
>>    }       return;<br>
>> }<br>
>> <br>
>> route[DLGURI] {<br>
>>            if(!isdsturiset()) {<br>
>>                        handle_ruri_alias();<br>
>>            }<br>
>>            return;<br>
>> }<br>
>> <br>
>> branch_route[MANAGE_BRANCH] {<br>
>>            route(NATMANAGE);<br>
>> }<br>
>> <br>
>> onreply_route[MANAGE_REPLY] {<br>
>>            if(status=~"[12][0-9][0-9]") {<br>
>>                        route(NATMANAGE);<br>
>>            }<br>
>> }<br>
>> failure_route[MANAGE_FAILURE] {<br>
>>            route(NATMANAGE);<br>
>> <br>
>>            if (t_is_canceled()) exit;<br>
>> <br>
>> <br>
>> -dan<br>
>> <br>
>> _______________________________________________<br>
>> Kamailio (SER) - Users Mailing List<br>
>> <a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><mailto:<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a>><br>
>> <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
>> _______________________________________________<br>
>> Kamailio (SER) - Users Mailing List<br>
>> <a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
>> <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
> <br>
>> _______________________________________________<br>
>> Kamailio (SER) - Users Mailing List<br>
>> <a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
>> <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
> <br>
> <br>
> -- <br>
> Alex Balashov | Principal | Evariste Systems LLC<br>
> <br>
> Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)<br>
> Web: <a href="http://www.evaristesys.com/" target="_blank">http://www.evaristesys.com/</a>,
<a href="http://www.csrpswitch.com/" target="_blank">http://www.csrpswitch.com/</a><br>
> <br>
> _______________________________________________<br>
> Kamailio (SER) - Users Mailing List<br>
> <a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
> <a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
_______________________________________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><u></u><u></u></p>
</blockquote>
</div>
</blockquote>
</div>
<p class="MsoNormal">_______________________________________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><u></u><u></u></p>
</div>
</blockquote>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><u></u><u></u></p>
</blockquote>
</div>
</div>
</div>

_______________________________________________<br>
Kamailio (SER) - Users Mailing List<br>
<a href="mailto:sr-users@lists.kamailio.org" target="_blank">sr-users@lists.kamailio.org</a><br>
<a href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</blockquote></div>