Hello,
On 22.09.17 04:42, Patrick Wakano wrote: > Hello list, > > 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.... > 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. > 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.... > So currently Kamailio active/stand-by HA setup with virtual IP in a > multi-homed environment does not work properly... > 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.... > 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. do you have an event_route[tm:local-request] in your config? There you should be able to force send socket for local requests, iirc. > 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. > 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.. > 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? Have you done 'ulimit -c unlimited' and then run kamailio as root? > 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...) Should anyone make a PR for such a change, it will be obviously considered for merging. > I am considering using the Linux routing change option, but has anyone > faced such situation before? I typically do lcr by combining mtree+dispatcher, never run in such issue myself, but I also do mainly force send socket explicitly because makes it more clear in config. Cheers, Daniel > > Regards, > Patrick Wakano > > > On 24 August 2017 at 09:18, Patrick Wakano <pwak...@gmail.com > <mailto:pwak...@gmail.com>> wrote: > > Hello Daniel, > I still couldn't make this SIP probing work.... So currently my > setup cannot actively check for GW availability... > Any idea about what may be causing it? > > Thanks for your time, > Patrick Wakano > > On 16 August 2017 at 13:01, Patrick Wakano <pwak...@gmail.com > <mailto:pwak...@gmail.com>> wrote: > > Forgot to mention it is a centos7 box... > > On 16 Aug. 2017 11:02 am, "Patrick Wakano" <pwak...@gmail.com > <mailto:pwak...@gmail.com>> wrote: > > Hi Daniel! > Very grateful for your attention! > > Apologies for lacking important info, check below the > version and sockets. > It may be worth mentioning these IPs are virtual ones and > I am using net.ipv4.ip_nonlocal_bind = 1(in this case the > virtual IP is assigned to the box) > Interesting that it has a "mhomed: no"for all sockets but > I do have mhomed=1 in my cfg file.... could that be the issue? > Also there is no message before this one: > /usr/sbin/kamailio[6164]: ERROR: <core> > [core/forward.c:181]: get_out_socket(): no socket found > This is the first one that pops when dispatcher tries to > ping.... > > Thanks, > Patrick > > kamailio -v > version: kamailio 5.0.2 (x86_64/linux) > 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 > ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, > MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT > PKG_SIZE 8MB > poll method support: poll, epoll_lt, epoll_et, sigio_rt, > select. > id: unknown > compiled on 12:03:49 Jun 26 2017 with gcc 4.8.5 > > kamcmd> core.sockets_list > { > socket: { > proto: udp > address: 172.28.128.100 > ipaddress: 172.28.128.100 > port: 5060 > mcast: no > mhomed: no > } > socket: { > proto: udp > address: 192.168.33.100 > ipaddress: 192.168.33.100 > port: 5060 > mcast: no > mhomed: no > } > socket: { > proto: tcp > address: 172.28.128.100 > ipaddress: 172.28.128.100 > port: 5060 > mcast: no > mhomed: no > } > socket: { > proto: tcp > address: 192.168.33.100 > ipaddress: 192.168.33.100 > port: 5060 > mcast: no > mhomed: no > } > socket: { > proto: tcp > address: 172.28.128.100 > ipaddress: 172.28.128.100 > port: 8080 > mcast: no > mhomed: no > } > } > > > On 15 August 2017 at 17:24, Daniel-Constantin Mierla > <mico...@gmail.com <mailto:mico...@gmail.com>> wrote: > > Hello, > > what are the sockets kamailio is listening on? See > `kamcmd help` for the command that lists the sockets. > > Also, what is the log messages before the first one > you pasted, there should be another one printed from > get_out_socket(). > > It is always important to provide kamailio version > (kamailio -v) and the operating system you are using. > > Cheers, > Daniel > > > On 14.08.17 14:41, Patrick Wakano wrote: >> Hello Kamailio list, >> >> Hope you all doing well! >> >> 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.... >> My dispatcher module has to talk with SIP servers in >> both networks, the thing is when I enable SIP ping >> for it (modparam("dispatcher", "ds_probing_mode", >> 1)), it gives me this type of error: >> /usr/sbin/kamailio[6164]: ERROR: <core> >> [core/forward.c:181]: get_out_socket(): no socket found >> /usr/sbin/kamailio[6164]: ERROR: <core> >> [core/forward.c:183]: get_out_socket(): no >> corresponding socket found >> for(udp:192.168.33.110:6060 <http://192.168.33.110:6060>) >> /usr/sbin/kamailio[6164]: ERROR: tm [ut.h:317]: >> uri2dst2(): no corresponding socket found for >> "192.168.33.110" af 2 (udp:192.168.33.110:6060 >> <http://192.168.33.110:6060>) >> /usr/sbin/kamailio[6164]: ERROR: tm [uac.c:443]: >> t_uac_prepare(): no socket found >> /usr/sbin/kamailio[6164]: ERROR: dispatcher >> [dispatch.c:2652]: ds_ping_set(): unable to ping >> [sip:192.168.33.110:6060 <http://192.168.33.110:6060>] >> >> 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: >> /usr/sbin/kamailio[14190]: ERROR: <core> >> [core/socket_info.c:2046]: parse_protohostport(): bad >> port number in udp:192.168.33.100:5060 >> <http://192.168.33.100:5060> >> /usr/sbin/kamailio[14190]: ERROR: <core> >> [core/forward.c:181]: get_out_socket(): no socket found >> /usr/sbin/kamailio[14190]: ERROR: <core> >> [core/forward.c:183]: get_out_socket(): no >> corresponding socket found >> for(udp:192.168.33.110:6060 <http://192.168.33.110:6060>) >> /usr/sbin/kamailio[14190]: ERROR: tm [ut.h:317]: >> uri2dst2(): no corresponding socket found for >> "192.168.33.110" af 2 (udp:192.168.33.110:6060 >> <http://192.168.33.110:6060>) >> /usr/sbin/kamailio[14190]: ERROR: tm [uac.c:443]: >> t_uac_prepare(): no socket found >> /usr/sbin/kamailio[14190]: ERROR: dispatcher >> [dispatch.c:2652]: ds_ping_set(): unable to ping >> [sip:192.168.33.110:6060 <http://192.168.33.110:6060>] >> >> What can be wrong in my port info in the socket >> config? (I tried the socket with and without quotes >> but had no luck...) >> select * from dispatcher where id=2; >> id | setid | destination | flags | >> priority | >> attrs | description >> >> ----+-------+-------------------------+-------+----------+---------------------------------------------+--------------------- >> 2 | 2 | sip:192.168.33.110:6060 >> <http://192.168.33.110:6060> | 0 | 0 | >> socket="udp:192.168.33.100:5060 >> <http://192.168.33.100:5060>";rweight=50 | >> (1 row) >> >> 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? >> >> Sorry for the long e-mail.... >> Best regards, >> Patrick Wakano >> >> >> _______________________________________________ >> Kamailio (SER) - Development Mailing List >> sr-dev@lists.kamailio.org >> <mailto:sr-dev@lists.kamailio.org> >> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev >> <https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev> > > -- > Daniel-Constantin Mierla > www.twitter.com/miconda <http://www.twitter.com/miconda> -- > www.linkedin.com/in/miconda > <http://www.linkedin.com/in/miconda> > Kamailio Advanced Training - www.asipto.com > <http://www.asipto.com> > Kamailio World Conference - www.kamailioworld.com > <http://www.kamailioworld.com> > > > > -- Daniel-Constantin Mierla www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio Advanced Training - www.asipto.com Kamailio World Conference - www.kamailioworld.com
_______________________________________________ Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev