[SR-Users] evapi tcp parsing??

Daniel-Constantin Mierla miconda at gmail.com
Tue Sep 15 14:52:22 CEST 2015


Hello,

I will look if there are options in libev to buffer data or try to
implement a buffering mechanism locally for such cases.

Cheers,
Daniel

On 14/09/15 23:00, Jayesh Nambiar wrote:
> Hello Daniel,
> After further testing with evapi module, I figured that when
> Netstrings are used, an event route is invoked individually for each
> message even if if multiple netstring messages are received in a
> single TCP packet. But this doesn't work effectively when a single
> proper message is split-up in two packets. For Example, if a message
> arrives as:
> 12:Hello World!, 12:Hello World!, 12:Hello World! in a single packet,
> kamailio properly invokes the event route "evapi:message-received"
> thrice for every individual proper netstring message. 
> But if the first packet contains:
> 12:Hello World!, 12:Hello
> And Second Packet contains:
>  World!, 12:Hello World!
> the event route is invoked only once !!
>
> The above pattern is very much possible while sending and receiving
> packets over TCP Socket. Our tests for receiving an approximately 150
> byte message over evapi socket at the rate of roughly 1000cps causes a
> lot of real events to be missed because of the above problem. You can
> never be sure when TCP will split messages in different chunks.
> This definitely looks like a bug which makes it not very reliable at
> large scale deployments. Would really appreciate your inputs on this.
> Thanks;
>
> - Jayesh
>
>
>
> On Thu, Sep 10, 2015 at 4:01 PM, Jayesh Nambiar <jayesh1017 at gmail.com
> <mailto:jayesh1017 at gmail.com>> wrote:
>
>     Hi Daniel,
>     Thanks for the quick response. So if I do not use Netstrings, does
>     Kamailio allow me to create a custom logic in the script. For eg.
>     if I decide to use newline as a delimiter, can I keep buffering
>     the message until I encounter the delimiter from the event route
>     and then execute whatever I have to within the script??
>
>     Thanks,
>
>     - Jayesh
>
>     On Thu, Sep 10, 2015 at 1:29 PM, Daniel-Constantin Mierla
>     <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>         Hello,
>
>         tcb is stream protocol and several messages can be queued on
>         the pipe at the same time. That is the reason for netstring
>         format, to be able to easily detect the boundaries of each
>         message. If netstring format is enabled and kamailio receives
>         several messages at once, it splits them and for each is
>         executing the event route.
>
>         If netstring format is not used, the kamailio is executing the
>         event route with the entire content that was read at once from
>         the tcp connection.
>
>         Cheers,
>         Daniel
>
>
>         On 09/09/15 22:01, Jayesh Nambiar wrote:
>>         Hello,
>>         I'm exploring the evapi module for my kamailio to interface
>>         with an external node.js app for third party stuff like AAA,
>>         billing engine tasks, notifications and so on. I followed and
>>         took some ideas from the rtjson and evapi tutorial found
>>         here(http://kb.asipto.com/kamailio:k43-async-sip-routing-nodejs)
>>         to build the node.js app consuming events.
>>         When I stress tested the scenario using SIPp and tried
>>         sending a lot of events at 300-350cps from Kamailio, I
>>         noticed that at times the client is receiving 2-3 events in a
>>         single message together although I do event_sync_relay once
>>         per SIP message received and have netstrings enabled. I
>>         believe this is a typical behavior of TCP and needs to be
>>         handled by the client using some kind of Netstring handler.
>>         Please correct me if I'm wrong.
>>         And hence I'd like to know what particularly needs to be
>>         taken care of while writing a client that is listening for
>>         events on raw tcp socket and how does kamailio handle this
>>         situation while receiving messages over TCP socket?? Does
>>         kamailio recognize the end of netstring properly on
>>         evapi:message-received and give exactly one message to take
>>         care of on every "message-received" event or should that be
>>         handled in the script somewhere !!
>>         I also referred cgrates client over evapi example which is
>>         written in GO, but I couldnt find them handling TCP streams
>>         clearly either.
>>         I'd really appreciate some expert suggestion here to make an
>>         informed decision on using the evapi module for a large scale
>>         solution.
>>
>>         Thanks,
>>
>>         - Jayesh
>>
>>
>>
>>
>>         _______________________________________________
>>         SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>         sr-users at lists.sip-router.org
>>         <mailto:sr-users at lists.sip-router.org>
>>         http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>         -- 
>         Daniel-Constantin Mierla
>         http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> - http://www.linkedin.com/in/miconda
>         Book: SIP Routing With Kamailio - http://www.asipto.com
>         Kamailio Advanced Training, Sep 28-30, 2015, in Berlin - http://asipto.com/u/kat
>
>
>         _______________________________________________
>         SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>         mailing list
>         sr-users at lists.sip-router.org
>         <mailto:sr-users at lists.sip-router.org>
>         http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>

-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Book: SIP Routing With Kamailio - http://www.asipto.com
Kamailio Advanced Training, Sep 28-30, 2015, in Berlin - http://asipto.com/u/kat

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150915/e8a31232/attachment.html>


More information about the sr-users mailing list