Subject: [Simple] SIMPLE chat: Proposal to address congestion

From: "Miguel A. Garcia" <[email-masked]>
Date: Tue, 14 Feb 2012 12:49:42 +0100

According to Cullen, the SIMPLE chat draft should say something to 
address congestion. This is not an area of my expertise, so I may have 
something wrong. But let me give it a try.

My proposal is to add one more section, 6.4, to address congestion. 
Please comment and propose changes to the text if you are not satisfied.

6.4.  Congestion Avoidance

    Congestion can occur when multiple heterogeneous interfaces are used
    by a diversity of users who are participating in a chat room.  Some
    of these users might have fast path capable of high throughputs while
    other users might be slow paths with constrained throughputs.  It is
    therefore possible that a subset of the participants of the chat room
    are able to send and receive messages at a high rate or with large
    contents (e.g., pictures), whereas others are not able to keep the
    pace.

    Additionally, since MSRP uses a connection-oriented transport
    protocol such as TCP, it is expected that the TCP congestion
    avoidance mechanisms will also be activated should congestion occur.

    While this document does not mandate a particular MSRP-specific
    mechanism to avoid congestion in any of the paths, something that is
    deemed outside the scope of this document, this document provides
    some recommendations for implementors to consider.

    It is RECOMMENDED that MSRP switches implement one or more MSRP-
    specific strategies to detect and avoid congestion.  Possible
    strategies (but definitely not a comprehensive list) include:

    o  If the MSRP switch is writing data to a send buffer and detects
       that the send buffer associated to that TCP connection is getting
       full (e.g., close to 80% of its capacity), the MSRP switch marks
       the associated MSRP sessions making use of that TCP connection as
       "congested".

    o  Prior to sending a new MSRP message to a user, the MSRP switch
       verifies the congested flag associated to that MSRP session.  If
       the MSRP session is marked as congested, the MSRP switch can apply
       a congestion avoidance mechanism, such as:

       *  The MSRP switch can discard regular MSRP messages sent to that
          user while the TCP send buffer is congested.  In order to
          inform the user of the congestion, the MSRP switch can send a
          regular MSRP message indicating the user that some messages are
          discarded due to network congestion.

       *  The MSRP can implement a temporary policy to disallow the
          distribution of messages larger than a certain size to MSRP
          sessions marked as congested.  Similarly, the user should be
          inform of this fact by the MSRP switch sending a regular MSRP
          message indicating this condition.

-- 
Miguel A. Garcia
+34-91-339-3608
Ericsson Spain