[SR-Users] Checking for 200ok Response to a REGISTER request kamailio-Asterisk

Jonathan Hunter hunterj91 at hotmail.com
Wed Jul 27 15:05:34 CEST 2016


:) shooting from the hip is sometimes good!
Interesting about replicating to the Asterisk Servers, I currently do this, using the dispatcher table so it will replicate to both Asterisk servers;
t_replicate("$ru");       ds_next_domain();        t_replicate("$ru");
I like the idea about populating the register on the way back with  the 200ok that is interesting and will look at that for sure.
Thank you for the suggestions!
Jon
From: oej at edvina.net
Date: Wed, 27 Jul 2016 14:49:55 +0200
To: sr-users at lists.sip-router.org
Subject: Re: [SR-Users] Checking for 200ok Response to a REGISTER request	kamailio-Asterisk

(Shooting from the hip, but let’s brainstorm just for fun :-) )
I would consider not saving the incoming REGISTER in the Kamailio location database,notfork it but replicate or forward twice to the ASterisk servers. Keep a counter - maybe in a hash table - and when the first 200 ok come in, raise the counter and then drop it.
When the second response comes in, save to kamailio location database (yes, it works on a response) andthen forward the response to the client. Note that you may end up in trouble unless you are really surethat all servers have exactly the same expiry time.
Whatever you do you will have a UA that retransmits unless you respond with some 1xx code anda situation where you may timeout the UA before you time out on Asterisk - so trim the Kamailiotransmit timer to be very short, much shorter than the UA so you make sure that Kamailio times outway ahead of your UA.
Now, you can have a timeout on htable so that you catch the situation where you don’t get anyresponse from Asterisk and do something about it - tell the UA to come back in a whilewith a retry-after or something else.
I am pretty sure I am missing something here, but it may give you some ideas to test out.
Cheers,/O
On 27 Jul 2016, at 14:38, Jonathan Hunter <hunterj91 at hotmail.com> wrote:Hello,
Thanks for the response.
I appreciate your comments and agree, however the architecture cannot be changed currently so in the meantime its looking to apply a fix to allow for stability in the short term.
I have built/designed other platforms and registrations don't go anywhere near the Media servers,  so it is a case of working with what we have for the short term due to a number of reasons I wont go into. :)
Understand where your coming from however.
Jon


From: oej at edvina.net
Date: Wed, 27 Jul 2016 14:17:14 +0200
To: sr-users at lists.sip-router.org
Subject: Re: [SR-Users] Checking for 200ok Response to a REGISTER request	kamailio-Asterisk


On 27 Jul 2016, at 14:01, Jonathan Hunter <hunterj91 at hotmail.com> wrote:Hi Guys,
So currently on our network we have a kamailio server which users register against, we then replicate the register messages to 2 Asterisk boxes sat behind it so that all entities are aware of the registration state of the users.
REGISTER--->KAMAILIO---->ASTERISK A                    ---->ASTERISK B
With a REGISTER---200OK exchange between Kamailio and Asterisk.
We have an issue where at some points the Asterisk servers when under load dont respond with a 200 ok(something being investigated)  to the register messages sent to kamailio, so I am just working on some logic for the register message to be resent using the t_replicate and t_set_fr functions.
This works well should both Asterisk servers not respond, however, as I am using replicate and it is parallel forking, if say Asterisk A answers first and is available with a 200ok then that in turn cancels the register message branch being sent to Asterisk B(which I know is fine), however  there could be a scenario where Asterisk B doesnt respond, and we wont know about it to try and resend the Register message, as the branch is cancelled.
Hope that makes sense?
I am looking at checking that both the Asterisk servers have responded and sent a 200ok, which I can grab in an onreply route but Im just wondering if someone has done something similar or has any suggestions as it is tricky to achieve currently.
I have also thought about stateless working but I really need kamailio to keep retransmitting the register until it gets a response.
Many thanks
In my view you are making a very complex solution. Why do you need to store the same registration in so many places? That’s indicating a problem in the architecture.
/O

_______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users at 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 listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users at lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20160727/e508fc74/attachment.html>


More information about the sr-users mailing list