Subject: [Tsvwg] SCTP peer restart: MIS and MOS values

From: "Andrey Konstantinov" <[email-masked]>
Date: Wed, 28 Feb 2007 17:06:50 +0300

Hi,

I've got a question about MIS/OS handling during remote peer restart.
I have read discussion about MIS and MOS values during INIT collision (
http://www1.ietf.org/mail-archive/web/tsvwg/current/msg06593.html), but now
we have similar problem during remote peer restart.

Let's consider such situation:
Local EP                                                Remote EP
Association up                                        Association up
MOS = 256                                             MIS = 256

Restart

Association still up                                 new MIS = 50

                                                             Association
re-attempt
                     <---------INIT (MIS = 50)--------------

In our implementation SCTP responses with MOS=256.
                     -----------INIT ACK (MOS =256)--->

<---------ABORT-------------------------

                      ----- DATA/HEARTBEAT----------->
                      <---------ABORT-------------------------

Association down

                     <---------INIT (MIS = 50)--------------
                     -----------INIT ACK (MOS = 50)--->
                     <--------COOKIE ECHO --------------
                     ---------COOKIE ACK------------------>

Association up
Association up
MOS = 50                                                 MIS = 50

Upon reception of an INIT with a MIS value lower than the one set before the
restart, the Local EP replies with an INIT ACK having a MOS value equal to
256, i.e. equal to the one of the previous association. The same happens
with the Local MIS if we lower the MOS value on the Remote EP side.

It is true that in the general case the MOS set in the INIT ACK *cannot be
higher than the MIS of the INIT* (RFC 2960: "Number of Outbound Streams
(OS): 16 bits (unsigned integer) Defines the number of outbound streams the
sender of this INIT ACK chunk wishes to create in this association. The
value of 0 MUST NOT be used, and the value MUST NOT be greater than the MIS
value sent in the INIT chunk."); nevertheless, looking at *rfc2960, chapter
5.2.2*: "Other parameters for the endpoint SHOULD be copied from the
existing parameters of the association (*e.g. number of outbound streams*)
into the INIT ACK and cookie."

Please clarify, what rule is applicable in case of peer restart.

Thank you in advance,
Andrey Konstantinov

---

From: Michael Tuexen <[email-masked]>
Date: Thu, 1 Mar 2007 18:17:41 +0100

Hi Andrey,

section 2.5 of RFC 4460 states:

  Number of Outbound Streams (OS): 16 bits (unsigned integer)

       Defines the number of outbound streams the sender of this INIT  
ACK
       chunk wishes to create in this association.  The value of 0 MUST
       NOT be used, and the value MUST NOT be greater than the MIS value
       sent in the INIT chunk.

and section 2.34 of RFC 4460 says

    Section 5.3.1).  Other parameters for the endpoint SHOULD be copied
    from the existing parameters of the association (e.g., number of
    outbound streams) into the INIT ACK and cookie.

Section 2.19 of RFC 4460 says:

    After receiving the stream configuration information from the other
    side, each endpoint MUST perform the following check:  If the peer's
    MIS is less than the endpoint's OS, meaning that the peer is
    incapable of supporting all the outbound streams the endpoint wants
    to configure, the endpoint MUST use MIS outbound streams and MAY
    report any shortage to the upper layer.  The upper layer can then
    choose to abort the association if the resource shortage
    is unacceptable.

For me this means that in your case the Local EP should send an
INIT-ACK containing MOS=50 (MUST is stronger than SHOULD).
Remote EP should accept the INIT-ACK. Then the association should
be established and the user at the Local EP might ABORT the
association if it decides that the number of OS is too small.

Best regards
Michael

On Feb 28, 2007, at 3:06 PM, Andrey Konstantinov wrote:

> I have read discussion about MIS and MOS values during INIT  
> collision (http://www1.ietf.org/mail-archive/web/tsvwg/current/ 
> msg06593.html ), but now we have similar problem during remote peer  
> restart.
> Association re-attempt
> up                                                                
> Upon reception of an INIT with a MIS value lower than the one set  
> before the restart, the Local EP replies with an INIT ACK having a  
> MOS value equal to 256, i.e. equal to the one of the previous  
> association. The same happens with the Local MIS if we lower the  
> MOS value on the Remote EP side.
>
> It is true that in the general case the MOS set in the INIT ACK  
> cannot be higher than the MIS of the INIT (RFC 2960: "Number of  
> Outbound Streams (OS): 16 bits (unsigned integer) Defines the  
> number of outbound streams the sender of this INIT ACK chunk wishes  
> to create in this association. The value of 0 MUST NOT be used, and  
> the value MUST NOT be greater than the MIS value sent in the INIT  
> chunk."); nevertheless, looking at rfc2960, chapter 5.2.2: "Other  
> parameters for the endpoint SHOULD be copied from the existing  
> parameters of the association (e.g. number of outbound streams)