[sr-dev] Possible MSRP enhancement

Peter Dunkley peter.dunkley at crocodile-rcs.com
Wed Dec 5 01:21:25 CET 2012


Hi Daniel,

I won't have time before the freeze either.  Any time I do get I plan to
spend on outbound support.  I may get around to this next year, if no-one
ends up needing it sooner than me and does it first.

The Crocodile Javascript MSRP stack behaves a little more nicely than a
lot of clients and relays out there.  Specifically, it limits the size of
chunks it sends and limits the number of chunks that can be outstanding
(not received a 200 for) at any time.  This means that our client has its
own flow control logic designed to avoid overloading the network. 
Discussions with other people recently has convinced me that other MSRP
clients and relays are not always quite as nice and often just throw the
data onto the network as quickly as possible.  My initial requirement is
to use the Kamailio relay with our stack, so re-chunking/flow control is
important to me but not yet urgent.

The good news is that, based on discussions I've had with people and
testing I've done, I believe that the only two things still required to
make Kamailio suitable for large-scale deployment as an MSRP relay is this
re-chunking/flow control and failure REPORT generation.

Regards,

Peter

> Hi Peter,
>
> my plan is to add an internal hash table to keep the details about
> connections and make routing in the config possible without using
> htable. This is for next major release, for other things I'm not sure I
> have time, considering it's very likely to freeze quite soon. If you
> want to work on it, there should be no conflicts.
>
> Cheers,
> Daniel
>
> On 12/4/12 6:48 PM, Peter Dunkley wrote:
>> Hi Daniel,
>>
>> I know you were thinking of looking at the MSRP module before the next
>> release, and during discussions here at Crocodile we realised that
>> there was another enhancement that would be useful.
>>
>> An MSRP relay has the option of splitting large MSRP messages
>> (including those that are already chunked) into smaller chunks. The
>> reason is that there is no maximum size for an MSRP chunk, so it is
>> entirely possible for a client to attempt to send a large file in a
>> single, very-large, MSRP message.  In this cases it becomes important
>> to pull the message from the receive buffer in small pieces (instead
>> of waiting for a complete message to arrive and over-flowing the
>> receive buffer) and relaying it in smaller chunks.
>>
>> Also, the flow control for MSRP is based around TCP windowing, so if
>> you want to limit the rate that someone is sending you MSRP messages
>> (for example during the transfer of a large file) you do so by pulling
>> from the TCP buffer at a lower rate.  One way of avoiding overloading
>> an MSRP relay is to have fairly small TCP receive buffers thereby
>> limiting the rate at which clients and relays can send data.  However,
>> if the TCP buffers are small the chances of a client sending a message
>> or chunk that is too large (and needs to be chunked by the relay)
>> increases further.
>>
>> Of course, to do this the MSRP module will need to be able to remember
>> the (From|To)-Path, transaction ID, and so on from the start of the
>> MSRP message so that it can use these (along with calculated
>> Byte-Range) in each additional chunk.
>>
>> I was thinking a new parameter indicating the maximum MSRP send chunk
>> size is required.  If an MSRP message in the receive buffer reaches
>> that number then it has to be pulled from the buffer in parts and
>> relayed as multiple chunks.  This maximum send chunk size should be
>> set to be much smaller than the TCP receive buffer size.
>>
>> Regards,
>>
>> Peter
>>
>> --
>> Peter Dunkley
>> Technical Director
>> Crocodile RCS Ltd
>>
>>
>>
>>
>> _______________________________________________
>> sr-dev mailing list
>> sr-dev at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
> --
> Daniel-Constantin Mierla - http://www.asipto.com
> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>
>


-- 
Peter Dunkley
Technical Director
Crocodile RCS Ltd




More information about the sr-dev mailing list