:) 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(a)edvina.net
Date: Wed, 27 Jul 2016 14:49:55 +0200
To: sr-users(a)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(a)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(a)edvina.net
Date: Wed, 27 Jul 2016 14:17:14 +0200
To: sr-users(a)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(a)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(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users______________…
Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
listsr-users@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(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users