Yeah, I agree with that. And of course, my proposed in-script solution might generate some very undesirable TCP/TLS bottlenecks.
> On Dec 6, 2022, at 10:14 AM, Daniel-Constantin Mierla <mico...@gmail.com> > wrote: > > I did get it that the complain was about Kamailio processing style, but > overall is about getting the SIP traffic from A to B. With or without > proxy in the middle, B has to be able to deal with packets our of order. > It can be a SIP proxy that changes the order or it can be IP routers on > different paths that lead to different order, for B is irrelevant. The > SIP proxy may send in the order of receiving, still B can get them out > of order. > > It is like implementing a TCP stack and then report dysfunctionality to > ISPs/carriers when the IP packets come out of order because IP packets > went on different paths or IP routers made different routing decisions. > > Daniel > > On 06.12.22 14:10, Alex Balashov wrote: >> I suspect that what Jawaid meant by "naive" was that, in Kamailio, there is >> not a central distributor thread which aims to buffer, serialise and >> otherwise order packets prior to distribution into worker processes or >> threads, as is common in many other multiprocess systems. >> >> I agree that "naive" is perhaps not the best choice of vocabulary for it, >> and of course there would be performance downsides to such a centralised >> pipeline. But I think that's what was probably meant. >> >> -- Alex >> >>> On Dec 6, 2022, at 4:15 AM, Daniel-Constantin Mierla <mico...@gmail.com> >>> wrote: >>> >>> Hello, >>> actually your expectation that packets should come in order is "naive", >>> just think about how internet is constructed and IP routing works. In the >>> past it was easy to reproduce on mobile networks scenarios when sending >>> CANCEL very quickly after the INVITE resulted in CANCEL arriving first at >>> the proxy, then the INVITE. >>> Probably you don't get it in your lab environment where you have sipp on >>> the same system as the sip server or one network segment away, but over the >>> internet the packets can get in different order because of network >>> transmission (different IP routing paths). It is the reason in some cases >>> there are jitter buffers and sequence numbers (e.g., in RTP and SIP >>> (CSeq)). In other words, the protocols like RTP or SIP were designed to >>> deal with these out-of-order packets. >>> Ans here is a wikipedia short article enumerating what can cause out of >>> order: >>> - https://en.wikipedia.org/wiki/Out-of-order_delivery >>> That said, if you missed in the message from mailing list archive that you >>> linked to, there is a global parameter that should reduce the risk of >>> sending out of order sip packets to the minimum that can be done from SIP >>> processing point of view based on call-id, but there are still chances that >>> on multi-cpu systems the packets read from the network can get to be >>> processed in different order because of how read on udp sockets is done by >>> kernel/libc and how cpu scheduler allocate cycles to running application >>> processes. >>> Cheers, >>> Daniel >>> On 05.12.22 19:34, Jawaid Bazyar wrote: >>>> Hi, >>>> I have experienced out of order packet processing when testing a simple >>>> Kamailio config. >>>> The configuration is as follows, basically: >>>> request_route{ >>>> record_route(); >>>> enum_query(); >>>> xlog("INVITE ENUM query - To URI $tU"); >>>> forward(); >>>> } >>>> I saw this thread from 2020: >>>> https://www.mail-archive.com/sr-users@lists.kamailio.org/msg11786.html >>>> The issue seems to be that kamailio process scheduling is naïve – i.e., >>>> incoming SIP packets are processed without regard to whether packets >>>> received before this one, are currently being processed. This means any >>>> packets after the initial INVITE that require more processing, can get >>>> reordered. In my test lab I have: >>>> SIPp – UAC >>>> Kamailio Proxy >>>> SIPp – UAS >>>> The proxy uses enum NAPR lookups to route calls to +13038151000 to the UAS. >>>> Now, if I do SIPp UAC o SIPp UAS directly, I have no problems – no out of >>>> order packets. >>>> It is only when I introduce Kamailio in the middle that I get OOO packets. >>>> See the images attached: uac-to-proxy, proxy, and proxy-to-uas. >>>> In this example, Kamailio OOO causes SIPp UAC to fail to “generate audio” >>>> – because UAC does not see packets in the correct order, I never turns on >>>> the simulated audio. Calls that have in-order dialogs, work fine, and SIPP >>>> UAC “pauses” 10 seconds to simulate a phone call. >>>> So far, the error rate runs from 1/1000 to around 1/200 – pretty bad. >>>> In the thread, a few things were suggested. >>>> Have fewer kamailio processes than cores: >>>> Did not resolve issue. >>>> Try route_locks_size = 256 >>>> Did not resolve issue. Though, it did alter it somewhat. >>>> But, it is not clear to me how this works – would this setting restrict >>>> the number of open calls to 256? >>>> Have only one kamailio process: (“children=1”) >>>> This works. “Works”, I should say, because this would >>>> greatly restrict total platform scalability to a point where it is >>>> probably useless for my application. >>>> I saw the same issue discussed in the OpenSIPS mailing list from 2010, >>>> and the response was “this is not a bug”. >>>> Well, I respectfully beg to differ with both OpenSIPS and Kamailio – it IS >>>> a bug. I don’t think a proxy should reorder packets involved in a call in >>>> a non-deterministic way. In the Kamailio list thread, Alex Balashov >>>> discusses the contortions he has to go through to avoid repercussions from >>>> this issue. >>>> Kamailio as-is probably works fine for relatively low-volume operations. >>>> And a lot of the feedback is “why are out of order packets a problem?” OK, >>>> sure, in the very specific example given in the 2020 thread, maybe who >>>> cares. But in my thinking, there is absolutely nothing preventing Kamailio >>>> from generating much more serious OOO scenarios that would cause calls to >>>> fail. In my example, Kamailio OOO causes SIPp to fail to “generate audio”. >>>> Who knows how other SIP stacks will behave? >>>> But the more one will try to scale Kamailio, the more significantly this >>>> out of order processing issue will become. >>>> The solution to this seems very simple and straightforward – put packets >>>> to be processed into a queue PER Call-ID, or something along those lines. >>>> In short, the parallelism should be by call, not by packet. >>>> What say ye? Have I misunderstood something here? >>>> Cheers, >>>> Jawaid >>>> >>>> __________________________________________________________ >>>> Kamailio - Users Mailing List - Non Commercial Discussions >>>> sr-users@lists.kamailio.org >>>> Important: keep the mailing list in the recipients, do not reply only to >>>> the sender! >>>> Edit mailing list options or unsubscribe: >>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users >>>> >>> -- >>> Daniel-Constantin Mierla -- www.asipto.com >>> www.twitter.com/miconda -- www.linkedin.com/in/miconda >>> __________________________________________________________ >>> Kamailio - Users Mailing List - Non Commercial Discussions >>> sr-users@lists.kamailio.org >>> Important: keep the mailing list in the recipients, do not reply only to >>> the sender! >>> Edit mailing list options or unsubscribe: >>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users >> >> -- >> 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/ >> >> >> __________________________________________________________ >> Kamailio - Users Mailing List - Non Commercial Discussions >> sr-users@lists.kamailio.org >> Important: keep the mailing list in the recipients, do not reply only to the >> sender! >> Edit mailing list options or unsubscribe: >> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users > > -- > Daniel-Constantin Mierla -- www.asipto.com > www.twitter.com/miconda -- www.linkedin.com/in/miconda > -- 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/ __________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users