(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) and
then forward the response to the client. Note that you may end up in trouble unless you
are really sure
that 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
and
a situation where you may timeout the UA before you time out on Asterisk - so trim the
Kamailio
transmit timer to be very short, much shorter than the UA so you make sure that Kamailio
times out
way ahead of your UA.
Now, you can have a timeout on htable so that you catch the situation where you don’t get
any
response from Asterisk and do something about it - tell the UA to come back in a while
with 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 <mailto:oej@edvina.net>
Date: Wed, 27 Jul 2016 14:17:14 +0200
To: sr-users(a)lists.sip-router.org <mailto:sr-users@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
<mailto:hunterj91@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
<mailto:sr-users@lists.sip-router.org>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
<http://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 <mailto:sr-users@lists.sip-router.org>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
<http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>