Hey, Can you show whats the output of the following commands on Kamailio server: "kamctl dispatcher dump" "netstat -pln | grep kamailio"
Send the output of the second command from asterisk server as well i.e "netstat -pln | grep asterisk" Looking at the error it seems like you are trying to reach asterisk on a protocol which kamailio is not listening on. Regards, Sammy On Jul 24, 2016 14:38, "Tickling Contest" <tickling.cont...@gmail.com> wrote: > Hey guys, > > I dug a little deeper and I found these logs in /var/log/kamailio where > 192.168.1.102 is my asterisk server: > > ul 24 14:25:32 kamailio /usr/sbin/kamailio[3726]: ERROR: tm [ut.h:343]: > uri2dst2(): no corresponding socket for af 2 > Jul 24 14:25:32 kamailio /usr/sbin/kamailio[3726]: ERROR: tm [uac.c:266]: > t_uac_prepare(): t_uac: no socket found > Jul 24 14:25:32 kamailio /usr/sbin/kamailio[3726]: ERROR: dispatcher > [dispatch.c:2436]: ds_check_timer(): unable to ping [sip: > 192.168.1.102:5060] > > I can broadly tell that the message was not even sent, but the asterisk > server VM is alive and well (and indeed on the same physical machine as > kamailio VM). > > What am I missing? Why is this failing? I am running kamailio 4.0.4. > > On Sat, Jul 23, 2016 at 8:07 PM, Tickling Contest < > tickling.cont...@gmail.com> wrote: > >> I corrected an error with my dispatcher configuration and now, I do hit >> the code where >> >> ds_select_dst ("1", "4") >> >> is no longer null. >> >> However, while the xlog I added says uac_req_send () is called, nothing >> is sent. The xlog prints out the value of $uac_req(hdrs) as >> >> Contact: <sip:101@192.168.1.101:5060>#015#012Expires: 600#015 >> >> after which the uac_req_send () is called. >> >> I am not sure if this is the correct way? What am I missing? >> >> Oh, nothing shows up in the tcpdump trace (only the OPTIONS message for >> the asterisk<->kamailio peering shows up). >> >> On Sat, Jul 23, 2016 at 3:48 PM, Tickling Contest < >> tickling.cont...@gmail.com> wrote: >> >>> Thanks, guys! >>> >>> Sammy, I tried your code in REGFWD, but unfortunately, it does not >>> forward anything to Asterisk. I can confirm this because it keeps going >>> into the else clause in the REGFWD (which I added to confirm). My current >>> REGFWD looks like this: >>> >>> route[REGFWD] { >>> if(!is_method("REGISTER")) >>> { >>> return; >>> } >>> xlog ("L_DEBUG", "MYDEBUG: In REGFWD"); >>> if(!ds_select_dst("1", "4")) { >>> $var(rip) = $(du{s.select,1,:}); >>> $var(rport) = $(du{s.select,2,:}); >>> $uac_req(method)="REGISTER"; >>> $uac_req(ruri)="sip:" + $var(rip) + ":" + $var(rport) + >>> ";transport=tcp"; >>> $uac_req(furi)="sip:" + $au + "@" + $var(rip); >>> $uac_req(turi)="sip:" + $au + "@" + $var(rip); >>> $uac_req(hdrs)="Contact: <sip:" + $au + "@ >>> 192.168.1.101:5060" + ">\r\n"; >>> xlog ("L_DEBUG", "MYDEBUG: In REGFWD, sending >>> registration info to Asterisk at $uac_req(ruri)"); >>> if($sel(contact.expires) != $null) >>> $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " >>> + $sel(contact.expires) + "\r\n"; >>> else >>> $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " >>> + $hdr(Expires) + "\r\n"; >>> uac_req_send(); >>> } >>> else >>> { >>> xlog ("L_DEBUG", "In REGFWD, not forwarding!"); >>> } >>> >>> } >>> >>> >>> >>> My entire kamailio.cfg file is here: >>> https://gist.github.com/ticklingcontest/f96aa4d08b08dc4643056d73da24f0a5 >>> >>> Any insight is appreciated. Thanks again. >>> >>> My dispatcher at the moment has only one Asterisk server. My endpoint >>> registers (auth with realtime DB in Mysql), but the registration >>> information does not reach Asterisk. >>> >>> My kamailio box is peering with the asterisk box like so: >>> >>> root@asterisk:~# more /etc/asterisk/pjsip_wizard.conf >>> [kamailio] >>> type = wizard >>> sends_auth = no >>> sends_registrations = no >>> remote_hosts = 192.168.1.101 >>> server_uri_pattern = sip:${REMOTE_HOST}\;transport=tcp >>> client_uri_pattern = sip:${REMOTE_HOST}\;transport=tcp >>> contact_pattern = sip:${REMOTE_HOST}\;transport=tcp >>> outbound_auth/username = dispatcher >>> aor/qualify_frequency = 0 >>> endpoint/context = from-external ;;; change later >>> endpoint/disallow = all ;;; change later >>> endpoint/allow = ulaw ;;; change later >>> endpoint/dtmf_mode=rfc4733 >>> endpoint/media_address=192.168.1.101 ;; >>> aor/qualify_frequency = 15 >>> >>> BTW, my intention is to store the registrations on the Asterisk servers >>> as well as my ARI code depends on it. As soon I get the single Asterisk >>> situation working, I intend adding more servers to check the load balancing >>> and REGISTER forwarding, and to Colin's point, the business of just using >>> Kamailio as an outbound proxy. >>> >>> Again, any insight wrt why no REGISTERs are forwarding to Asterisk is >>> appreciated. Why is ds_select_dst("1", "4") evaluating to false for me? >>> >>> My dispatcher info: >>> >>> root@kamailio:/etc/kamailio# kamctl dispatcher show >>> dispatcher gateways >>> >>> +----+-------+-------------------+-------+----------+-------+-------------+ >>> | id | setid | destination | flags | priority | attrs | >>> description | >>> >>> +----+-------+-------------------+-------+----------+-------+-------------+ >>> | 1 | 1 | sip:192.168.1.102 | 1 | 0 | | AsteriskA >>> | >>> | 2 | 1 | sip:192.168.1.102 | 1 | 0 | | AsteriskA >>> | >>> >>> +----+-------+-------------------+-------+----------+-------+-------------+ >>> >>> >>> Thanks! >>> >>> On Fri, Jul 22, 2016 at 11:01 AM, Colin Morelli <colin.more...@gmail.com >>> > wrote: >>> >>>> If you're using Kamailio as a registrar, then it would make the most >>>> sense to also use it as your outbound proxy for Asterisk. >>>> >>>> This would mean whenever Asterisk needs to dial an extension, it would >>>> instead make a SIP call to your Kamailio instance which would then perform >>>> the lookup, forking, and forwarding. >>>> >>>> Is there a reason this wouldn't work in your infrastructure? If for >>>> some reason it can't - though I can't imagine how - then I don't see the >>>> purpose in using Kamailio as a registrar at all. You should just forward >>>> everything to Asterisk since it needs to be there anyway. >>>> >>>> Best, >>>> Colin >>>> >>>> On Fri, Jul 22, 2016 at 9:58 AM SamyGo <govoi...@gmail.com> wrote: >>>> >>>>> Hi Tickles, >>>>> >>>>> a) Have you tried doing this on Asterisk realtime ? for any regular >>>>> direct registering extension w/o kamailio(even before kamailio) ? If an >>>>> extension registers to one asterisk the rest of the boxes would know where >>>>> to contact this extension via realtime-db ? I'd say give that a try and it >>>>> may solve your problem, else using this REGFWD block you can parallel fork >>>>> this register request to ALL of your boxes and everybox would think it is >>>>> registered locally ! (not a recommended option I must say) >>>>> >>>>> b) If you ignore my previous comment of parallel forking registers, >>>>> using this REGFWD block you can use dispatcher module to replace the >>>>> $var(rip) and $sel(cfg_get.asterisk.bindport) by changing your REGFWD >>>>> block like this: >>>>> >>>>> route[REGFWD] { >>>>> if(!is_method("REGISTER")) >>>>> { >>>>> return; >>>>> } >>>>> if(!ds_select_dst("1", "4")) { >>>>> $var(rip) = $(du{s.select,1,:}); >>>>> $var(rport) = $(du{s.select,2,:}); >>>>> $uac_req(method)="REGISTER"; >>>>> $uac_req(ruri)="sip:" + $var(rip) + ":" + $var(rport) + >>>>> ";transport=tcp"; >>>>> $uac_req(furi)="sip:" + $au + "@" + $var(rip); >>>>> $uac_req(turi)="sip:" + $au + "@" + $var(rip); >>>>> $uac_req(hdrs)="Contact: <sip:" + $au + "@" >>>>> + $sel(cfg_get.kamailio.bindip) >>>>> + ":" + >>>>> $sel(cfg_get.kamailio.bindport) + ">\r\n"; >>>>> if($sel(contact.expires) != $null) >>>>> $uac_req(hdrs)= $uac_req(hdrs) + "Expires: >>>>> " + $sel(contact.expires) + "\r\n"; >>>>> else >>>>> $uac_req(hdrs)= $uac_req(hdrs) + "Expires: >>>>> " + $hdr(Expires) + "\r\n"; >>>>> uac_req_send(); >>>>> } >>>>> >>>>> } >>>>> >>>>> >>>>> In summary, depending upon your business logic/use case there could be >>>>> other ways to make this work as well. >>>>> >>>>> Regards, >>>>> Sammy >>>>> >>>>> >>>>> On Fri, Jul 22, 2016 at 8:53 AM, Tickling Contest < >>>>> tickling.cont...@gmail.com> wrote: >>>>> >>>>>> Hello, >>>>>> >>>>>> When using Kamailio with the dispatcher module for Asterisk load >>>>>> balancing, I am offloading REGISTERs to Kamailio (works fine), but would >>>>>> like to forward the REGISTERs to Asterisk so that outgoing calls from >>>>>> Asterisk will be possible. I know this is not strictly necessary (e.g., >>>>>> just use Kamailio to forward everything), but I have a lot of application >>>>>> logic behind my Asterisk boxes (using ARI) and so I don't want that to >>>>>> break. Thereby, I do need this information in Asterisk as soon as >>>>>> possible >>>>>> from Kamailio. >>>>>> >>>>>> Let's say I have three boxes Asterisk_1, Asterisk_2 and Asterisk_3 in >>>>>> the dispatcher module like so: >>>>>> >>>>>> 1 sip:192.168.1.201:5060;transport=tcp >>>>>> 1 sip:192.168.1.202:5060;transport=tcp >>>>>> 1 sip:192.168.1.203:5060;transport=tcp >>>>>> >>>>>> My system has endpoints as numerical extensions, from 101 to 110. >>>>>> When a new endpoint registers with kamailio (and authenticates), I would >>>>>> like to send the REGISTER to Asterisk. But I have the following >>>>>> questions: >>>>>> >>>>>> (a) Which Asterisk? I could send it to a round-robinned Asterisk >>>>>> (say, Asterisk_2), but that Asterisk may not be the one responsible for >>>>>> handling calls outbound for the endpoint that just registered. Even if I >>>>>> use "hash over auth username" instead of round-robin (In >>>>>> http://www.kamailio.org/docs/modules/4.0.x/modules/dispatcher.html#idp16940048, >>>>>> choose 5 for "alg", for example) that wont solve this problem as an >>>>>> outbound request may come from another Asterisk box which won't have the >>>>>> requisite registration information. Should I forward REGISTERs to all >>>>>> Asterisk boxes? Maybe I won't have to deal with this issue as I use >>>>>> realtime and so the REGISTER information, sent to one Asterisk box, is >>>>>> available to all Asterisk boxes after the write to the realtime DB. Is my >>>>>> understanding correct? >>>>>> >>>>>> (b) How do I do this in kamailio.cfg? With some examples on the >>>>>> Internet for WITH_ASTERISK directive, I see that you do >>>>>> >>>>>> route[REGFWD] { >>>>>> if(!is_method("REGISTER")) >>>>>> { >>>>>> return; >>>>>> } >>>>>> $var(rip) = $sel(cfg_get.asterisk.bindip); >>>>>> $uac_req(method)="REGISTER"; >>>>>> $uac_req(ruri)="sip:" + $var(rip) + ":" + >>>>>> $sel(cfg_get.asterisk.bindport) + ";transport=tcp"; >>>>>> $uac_req(furi)="sip:" + $au + "@" + $var(rip); >>>>>> $uac_req(turi)="sip:" + $au + "@" + $var(rip); >>>>>> $uac_req(hdrs)="Contact: <sip:" + $au + "@" >>>>>> + $sel(cfg_get.kamailio.bindip) >>>>>> + ":" + >>>>>> $sel(cfg_get.kamailio.bindport) + ">\r\n"; >>>>>> if($sel(contact.expires) != $null) >>>>>> $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " + >>>>>> $sel(contact.expires) + "\r\n"; >>>>>> else >>>>>> $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " + >>>>>> $hdr(Expires) + "\r\n"; >>>>>> uac_req_send(); >>>>>> } >>>>>> >>>>>> What is the equivalent for when you are using the dispatcher module >>>>>> and the kamailio.bindip and asterisk.bindip etc. are not set in the >>>>>> configuration, but instead should be procured from elsewhere? >>>>>> >>>>>> Any help is appreciated. >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> 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 >>>>>> >>>>>> >>>>> _______________________________________________ >>>>> 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 >>>>> >>>> >>>> _______________________________________________ >>>> 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 >>>> >>>> >>> >> > > _______________________________________________ > 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 > >
_______________________________________________ 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