[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Simple] Flood control in the msrp-switch



Hi,

On 23 Jun 2008, at 11:39, Sebastian Dehne wrote:

Hi,

I just read the currently published version of the draft and I was
wondering if it would be an idea to also address the following issue:

In the case where participants with different access-speeds are joined
in a chat-room, how should the msrp-switch deal with the situation when it is not able to write data quickly enough to the slower participants?

For example a user with a relative fast connection could start to send a
large file into the chat-room which will cause the slower participants
to be blocked out from the chat-room until they managed to consume the
queued data. Also, should the switch just queue as long as it has memory
available?

They way this is solved in IRC for example is to slow down the sending
client by starting to respond slowly for each SEND request. However,
this is not a suitable solution for msrp, since it is indented to deal
with all sorts of content (including multi-media).

Maybe there is a need for a 'chat-type' attribute to distinguish between
for example 'conversation' or 'multi-media' rooms.

I think this is a realistic issue because of the following two reasons:

- SIP is well on its way to bridge between the 'internet-world' and the
'mobile-world'; two worlds with difference access-speeds
- simply because flooding a room could lead to a denial-of-service
attack in the case where the msrp-switch is forces to queue the data
which it is not able to send downwards.


Sebastian

This is an issue, and in my opinion not at all unsimilar to the one experienced when using MSRP relays. If a connected client keeps sending faster than a slow client can receive, the buffer size at the MSRP switch will grow infinitely large.

In the end the policy for this should be decided by whomever runs the MSRP chat switch, but I would imagine that the primary use for having such a service is just that, i.e. chat. That means it should probably not be used as some sort of large file distribution service. To this end I would imagine that throttling incoming connections would not be a bad idea.

If this incoming throttling rate is set to a reasonable value, one can also consider dropping connections to clients that cannot keep up with the amount of data sent to them. The alternative would be to drop part of the data to be sent to this slow client, which personally I would not prefer to do.

If you don't want to do either of this things, the only other thing I could think of is some fancy many-to-many congestion control algorithm, but really I wouldn't know where to begin dreaming that up...

Any thoughts?

Ruud Klaver
AG Projects
_______________________________________________
Simple mailing list
Simple at ietf.org
https://www.ietf.org/mailman/listinfo/simple