<div dir="ltr"><div><div>Hello list,</div><div><br></div>After deep investigation I found out that the issue is happening because of the mechanism Kamailio uses to find the most appropriate socket combined with the virtual IP usage....<br>For socket selection, Kamailio first asks Linux which would be the routing for a certain destination, then matches this outcome with the list of listened sockets.</div><div>By default Linux will always return the local IP instead of the virtual one. So if Kamailio only binds to the virtual IP, the Linux's returned IP won't match our socket list and then the socket selection fails....</div><div>So currently Kamailio active/stand-by HA setup with virtual IP in a multi-homed environment does not work properly...</div><div>We can overcome this by listening to all addresses, but then Kamailio will decide to use the local IP instead of the virtual one, and then the HA idea end up broken....<br></div>We can also force socket for everything. For regular call routing, this options actually works fine if the script
 always force some socket, but it seems to be not always possible for 
local generated messages. By disabling mhomed and using the dispatcher socket attr to send the OPTIONS message it works for example. But for the LCR module we have no option because apparently the LCR module has only one socket option, and so I am not able have a different socket per gateway. <br>We can also explicitly set the src address for a routing rule to be
 the virtual IP instead of the local one. This makes Linux to return the
 virtual IP instead of the local one. This solution seems fine, but 
since it is done at linux level, every other service on the box would be 
affected and every route on the box would needed to be changed..<br><div>Another problem I found out is that I am not able to force the socket for local generated messages. It actually crashes Kamailio, and I always get a "core was not generated" msg.... anyone aware of that?</div><div>The actual fix for this, would be having Kamailio to search the most appropriate socket in a different manner. It could loop the sockets and see which one reaches the destination instead of asking Linux to do it, or it could have some routing directives which could be consulted before selecting a socket.... (just ideas, not sure how feasible they are...)<br></div><div>I am considering using the Linux routing change option, but has anyone faced such situation before?</div><div><br></div><div>Regards,</div><div>Patrick Wakano<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 24 August 2017 at 09:18, Patrick Wakano <span dir="ltr"><<a href="mailto:pwakano@gmail.com" target="_blank">pwakano@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>Hello Daniel,<br></div>I still couldn't make this SIP probing work.... So currently my setup cannot actively check for GW availability...<br>Any idea about what may be causing it?<br><br></div>Thanks for your time,<br></div>Patrick Wakano<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On 16 August 2017 at 13:01, Patrick Wakano <span dir="ltr"><<a href="mailto:pwakano@gmail.com" target="_blank">pwakano@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">Forgot to mention it is a centos7 box...</div><div class="m_-6397899599530126820HOEnZb"><div class="m_-6397899599530126820h5"><div class="gmail_extra"><br><div class="gmail_quote">On 16 Aug. 2017 11:02 am, "Patrick Wakano" <<a href="mailto:pwakano@gmail.com" target="_blank">pwakano@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Hi Daniel!<br></div>Very grateful for your attention!<br><br></div>Apologies for lacking important info, check below the version and sockets.<br>It may be worth mentioning these IPs are virtual ones and I am using <span style="font-family:monospace,monospace">net.ipv4.ip_nonlocal_bind = 1</span>(in this case the virtual IP is assigned to the box)<br>Interesting that it has a  "<span style="font-family:monospace,monospace">mhomed: no"</span><span style="font-family:monospace,monospace"> </span>for all sockets but I do have mhomed=1 in my cfg file.... could that be the issue?<br><span style="font-family:monospace,monospace"></span>Also there is no message before this one: <span style="font-family:monospace,monospace">/usr/sbin/kamailio[6164]: ERROR: <core> [core/forward.c:181]: get_out_socket(): no socket found</span><br></div>This is the first one that pops when dispatcher tries to ping....<br><br></div>Thanks,<br></div>Patrick<br><br><div><div><div><span style="font-family:monospace,monospace">kamailio -v<br>version: kamailio 5.0.2 (x86_64/linux) <br>flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES<br>ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB<br>poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.<br>id: unknown <br>compiled on 12:03:49 Jun 26 2017 with gcc 4.8.5<br><br>kamcmd> core.sockets_list<br>{<br>    socket: {<br>        proto: udp<br>        address: 172.28.128.100<br>        ipaddress: 172.28.128.100<br>        port: 5060<br>        mcast: no<br>        mhomed: no<br>    }<br>    socket: {<br>        proto: udp<br>        address: 192.168.33.100<br>        ipaddress: 192.168.33.100<br>        port: 5060<br>        mcast: no<br>        mhomed: no<br>    }<br>    socket: {<br>        proto: tcp<br>        address: 172.28.128.100<br>        ipaddress: 172.28.128.100<br>        port: 5060<br>        mcast: no<br>        mhomed: no<br>    }<br>    socket: {<br>        proto: tcp<br>        address: 192.168.33.100<br>        ipaddress: 192.168.33.100<br>        port: 5060<br>        mcast: no<br>        mhomed: no<br>    }<br>    socket: {<br>        proto: tcp<br>        address: 172.28.128.100<br>        ipaddress: 172.28.128.100<br>        port: 8080<br>        mcast: no<br>        mhomed: no<br>    }<br>}<br></span><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 15 August 2017 at 17:24, Daniel-Constantin Mierla <span dir="ltr"><<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <p>Hello,</p>
    <p>what are the sockets kamailio is listening on? See `kamcmd help`
      for the command that lists the sockets.</p>
    <p>Also, what is the log messages before the first one you pasted,
      there should be another one printed from <span style="font-family:monospace,monospace">get_out_socket().</span></p>
    It is always important to provide kamailio version (kamailio -v) and
    the operating system you are using.<br>
    <br>
    Cheers,<br>
    Daniel<div><div class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987h5"><br>
    <br>
    <div class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788moz-cite-prefix">On 14.08.17 14:41, Patrick Wakano
      wrote:<br>
    </div>
    </div></div><blockquote type="cite"><div><div class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987h5">
      <div dir="ltr">
        <div>Hello Kamailio list,<br>
        </div>
        <div><br>
          Hope you all doing well!<br>
          <br>
        </div>
        <div>I am stuck with one problem that should be incredibly easy
          to be done, but apparently it is not.... I want my dispatcher,
          LCR and nathelper modules to always SIP ping my SIP clients. I
          have a Kamailio based SBC that is separating two networks, and
          so I am using the 'mhomed' flag, but none of these SIP pings
          are working.... for now I will only ask about the
          dispatcher....<br>
        </div>
        <div>My dispatcher module has to talk with SIP servers in both
          networks, the thing is when I enable SIP ping for it (<span style="font-family:monospace,monospace">modparam("dispatcher",
            "ds_probing_mode", 1)</span>), it gives me this type of
          error:<br>
          <span style="font-family:monospace,monospace">/usr/sbin/kamailio[6164]:
            ERROR: <core> [core/forward.c:181]: get_out_socket():
            no socket found<br>
            /usr/sbin/kamailio[6164]: ERROR: <core>
            [core/forward.c:183]: get_out_socket(): no corresponding
            socket found for(udp:<a href="http://192.168.33.110:6060" target="_blank">192.168.33.110:6060</a>)<br>
            /usr/sbin/kamailio[6164]: ERROR: tm [ut.h:317]: uri2dst2():
            no corresponding socket found for "192.168.33.110" af 2
            (udp:<a href="http://192.168.33.110:6060" target="_blank">192.168.33.110:6060</a>)<br>
            /usr/sbin/kamailio[6164]: ERROR: tm [uac.c:443]:
            t_uac_prepare(): no socket found<br>
            /usr/sbin/kamailio[6164]: ERROR: dispatcher
            [dispatch.c:2652]: ds_ping_set(): unable to ping [sip:<a href="http://192.168.33.110:6060" target="_blank">192.168.33.110:6060</a>]<br>
          </span><br>
        </div>
        <div>After research it seems I need to manually set a "socket"
          attribute for each of my GWs in dispatcher list. After putting
          the socket parameter for the GW, I got another error:<br>
          <span style="font-family:monospace,monospace">/usr/sbin/kamailio[14190]:
            ERROR: <core> [core/socket_info.c:2046]:
            parse_protohostport(): bad port number in udp:<a href="http://192.168.33.100:5060" target="_blank">192.168.33.100:5060</a><br>
            /usr/sbin/kamailio[14190]: ERROR: <core>
            [core/forward.c:181]: get_out_socket(): no socket found<br>
            /usr/sbin/kamailio[14190]: ERROR: <core>
            [core/forward.c:183]: get_out_socket(): no corresponding
            socket found for(udp:<a href="http://192.168.33.110:6060" target="_blank">192.168.33.110:6060</a>)<br>
            /usr/sbin/kamailio[14190]: ERROR: tm [ut.h:317]: uri2dst2():
            no corresponding socket found for "192.168.33.110" af 2
            (udp:<a href="http://192.168.33.110:6060" target="_blank">192.168.33.110:6060</a>)<br>
            /usr/sbin/kamailio[14190]: ERROR: tm [uac.c:443]:
            t_uac_prepare(): no socket found<br>
            /usr/sbin/kamailio[14190]: ERROR: dispatcher
            [dispatch.c:2652]: ds_ping_set(): unable to ping [sip:<a href="http://192.168.33.110:6060" target="_blank">192.168.33.110:6060</a>]</span><br>
          <br>
          What can be wrong in my port info in the socket config? (I
          tried the socket with and without quotes but had no luck...)<br>
          <span style="font-family:monospace,monospace">select * from
            dispatcher where id=2;<br>
             id | setid |       destination       | flags | priority
            |                    attrs                    |    
            description     <br>
----+-------+-----------------<wbr>--------+-------+----------+--<wbr>------------------------------<wbr>-------------+----------------<wbr>-----<br>
              2 |     2 | sip:<a href="http://192.168.33.110:6060" target="_blank">192.168.33.110:6060</a> |     0
            |        0 | socket="udp:<a href="http://192.168.33.100:5060" target="_blank">192.168.33.100:506<wbr>0</a>";rweight=50
            | <br>
            (1 row)<br>
          </span><br>
        </div>
        <div>Anyhow, I was expecting the 'mhomed' parameter to do the
          socket selection for me. Regular call routing either by the
          dispatcher or by LCR, also seems to require me to explicitly
          set the socket otherwise Kamailio (or the OS) may end up using
          the wrong socket. So, another question is why 'mhomed' does
          not dictate the whole socket selection Kamailio has to do
          regardless the module it is using to send SIP requests?<br>
          <br>
        </div>
        <div>Sorry for the long e-mail....<br>
        </div>
        <div>Best regards,<br>
        </div>
        <div>Patrick Wakano<br>
        </div>
      </div>
      <br>
      <fieldset class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788mimeAttachmentHeader"></fieldset>
      <br>
      </div></div><pre>______________________________<wbr>_________________
Kamailio (SER) - Development Mailing List
<a class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788moz-txt-link-abbreviated" href="mailto:sr-dev@lists.kamailio.org" target="_blank">sr-dev@lists.kamailio.org</a>
<a class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788moz-txt-link-freetext" href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">https://lists.kamailio.org/cgi<wbr>-bin/mailman/listinfo/sr-dev</a><span class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987HOEnZb"><font color="#888888">
</font></span></pre><span class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987HOEnZb"><font color="#888888">
    </font></span></blockquote><span class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987HOEnZb"><font color="#888888">
    <br>
    <pre class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788moz-signature" cols="72">-- 
Daniel-Constantin Mierla
<a class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788moz-txt-link-abbreviated" href="http://www.twitter.com/miconda" target="_blank">www.twitter.com/miconda</a> -- <a class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788moz-txt-link-abbreviated" href="http://www.linkedin.com/in/miconda" target="_blank">www.linkedin.com/in/miconda</a>
Kamailio Advanced Training - <a class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788moz-txt-link-abbreviated" href="http://www.asipto.com" target="_blank">www.asipto.com</a>
Kamailio World Conference - <a class="m_-6397899599530126820m_5693305556384801093m_2265864410434847987m_5394055170380308788moz-txt-link-abbreviated" href="http://www.kamailioworld.com" target="_blank">www.kamailioworld.com</a></pre>
  </font></span></div>

</blockquote></div><br></div>
</blockquote></div></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>