On Wed, Apr 08, 2020 at 12:30:45PM -0400, Greg Troxel wrote:
I don't see this as being about the nature of
parallel processing.
It absolutely is -- when it comes to explaining why Kamailio behaves the
way it does.
It bears remark that it's not a common occurrence; if Kamailio could not
be relied upon to forward messages in a FIFO order on a widespread
basis, it wouldn't be very useful. This race occurs, in my experience,
in highly contended environments, e.g. a VM on a busy hypervisor.
Either the protocol specifications have ordering rules
(in which case
an implementation which does not follow those is defective), or they
do not have ordering rules (in which case an implementation that is
troubled by lack of ordering is defective).
And yet, SIP-as-specified is replete with race conditions.
One way to look at this: if you want guaranteed ordering
(network-introduced ordering issues not withstanding), use a single
child process. If you want "enhanced performance", use multiple child
processes, with the understanding that this entails a small amount of
risk as a trade-off. :-)
-- 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/