[SR-Users] Reinvite/ACK race
Frank Carmickle
frank at carmickle.com
Mon Oct 30 18:37:57 CET 2017
Alex,
> On Oct 30, 2017, at 1:20 PM, Alex Balashov <abalashov at evaristesys.com> wrote:
>
> Hi,
>
> I've got a scenario like so:
>
> UA A -----> Kamailio P ----> UA B
>
> 1. UA A initiates call through Kamailio P;
>
> 2. Dialog is established and confirmed, with Record-Route;
>
> 3. UA B sends reinvite #1 through P to A;
>
> 4. UA B sends 2xx reply;
It’s not clear to me if the 2xx reply from B is a retransmit, and thus the dialog isn’t actually established everywhere? As you know, the 2xx to the reinvite should be coming from A and not B. Maybe you meant to say A here?
>
> 5. UA B sends end-to-end ACK for reinvite #1 and almost
> simultaneously sends reinvite #2. The temporal delta is
> between reinvite #2 and ACK for reinvite #1 on the wire
> is 3 ms.
>
> So, the result — for all kinds of stochastic processing and userspace
> scheduling type reasons — is that the reinvite is forwarded first,
> before the ACK. That leads to a 500 / 491 scenario UA A.
>
> The cause, as we all know, is that Kamailio's worker threads are loosely
> coupled, and incoming UDP datagrams are distributed directly by the
> kernel.
>
> Is there any general guidance on what to do with these scenarios? I
> looked at RFC 5407 § 3.1.4, which appears to describe a similar, but not
> identical scenario involving an initial INVITE and subsequent reinvite.
> As far as I can tell, the recommendation in that standard is "space the
> messaging out more in time".
>
> Switching to TCP would presumably help, since any given flow would
> involve a single connection to a single worker thread and the transport
> would guarantee ordering. However, that's not really feasible in this
> implementation for a host of reasons.
>
> I know Kamailio has some config locking primitives, but I am extremely
> wary of complex synchronisation on dialog-identifying attributes,
> particularly if there is a possibility that such locks could stall a
> worker perpetually.
>
> Any other thoughts welcome!
I’m not certain that I’m understanding your scenario, but if so, maybe this would help.
http://ietf-sip.1820103.n4.nabble.com/Re-Invite-before-ACK-td1820408.html <http://ietf-sip.1820103.n4.nabble.com/Re-Invite-before-ACK-td1820408.html>
—FC
>
> Cheers,
>
> -- Alex
>
> --
> Alex Balashov | Principal | Evariste Systems LLC
>
> Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
> Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20171030/01041c18/attachment.html>
More information about the sr-users
mailing list