draft-ietf-tsvwg-sctp-strrst-01.txt   draft-ietf-tsvwg-sctp-strrst-02.txt 
Network Working Group R. Stewart Network Working Group R. Stewart
Internet-Draft Researcher Internet-Draft Huawei
Intended status: Standards Track P. Lei Intended status: Standards Track P. Lei
Expires: April 29, 2010 Cisco Systems, Inc. Expires: June 26, 2010 Cisco Systems, Inc.
M. Tuexen M. Tuexen
Muenster Univ. of Applied Sciences Muenster Univ. of Applied Sciences
October 26, 2009 December 23, 2009
Stream Control Transmission Protocol (SCTP) Stream Reconfiguration Stream Control Transmission Protocol (SCTP) Stream Reconfiguration
draft-ietf-tsvwg-sctp-strrst-01.txt draft-ietf-tsvwg-sctp-strrst-02.txt
Abstract
Many applications that desire to use SCTP have requested the ability
to "reset" a stream. The intention of resetting a stream is to start
the numbering sequence of the stream back at 'zero' with a
corresponding notification to the upper layer that this act as been
performed. The applications that have requested this feature
normally desire it so that they can "re-use" streams for different
purposes but still utilize the stream sequence number for the
application to track the message flows. Thus, without this feature,
a new use on an old stream would result in message numbers larger
than expected without a protocol mechanism to "start the streams back
at zero". This documents presents also a method for resetting the
transport sequence numbers, adding additional streams and resetting
all stream sequence numbers.
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Drafts.
skipping to change at page 1, line 35 skipping to change at page 2, line 5
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on April 29, 2010. This Internet-Draft will expire on June 26, 2010.
Copyright Notice Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents in effect on the date of Provisions Relating to IETF Documents
publication of this document (http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
Abstract include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
Many applications that desire to use SCTP have requested the ability described in the BSD License.
to "reset" a stream. The intention of resetting a stream is to start
the numbering sequence of the stream back at 'zero' with a
corresponding notification to the upper layer that this act as been
performed. The applications that have requested this feature
normally desire it so that they can "re-use" streams for different
purposes but still utilize the stream sequence number for the
application to track the message flows. Thus, without this feature,
a new use on an old stream would result in message numbers larger
than expected without a protocol mechanism to "start the streams back
at zero". This documents presents also a method for resetting the
transport sequence numbers and all stream sequence numbers.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. New Chunk Type . . . . . . . . . . . . . . . . . . . . . . . . 5 3. New Chunk Type . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1. STREAM RESET Chunk . . . . . . . . . . . . . . . . . . . . 6 3.1. STREAM RESET Chunk . . . . . . . . . . . . . . . . . . . . 6
4. New Parameter Types . . . . . . . . . . . . . . . . . . . . . 7 4. New Parameter Types . . . . . . . . . . . . . . . . . . . . . 7
4.1. Outgoing SSN Reset Request Parameter . . . . . . . . . . . 7 4.1. Outgoing SSN Reset Request Parameter . . . . . . . . . . . 7
4.2. Incoming SSN Reset Request Parameter . . . . . . . . . . . 9 4.2. Incoming SSN Reset Request Parameter . . . . . . . . . . . 9
4.3. SSN/TSN Reset Request Parameter . . . . . . . . . . . . . 9 4.3. SSN/TSN Reset Request Parameter . . . . . . . . . . . . . 9
4.4. Stream Reset Response Parameter . . . . . . . . . . . . . 10 4.4. Stream Reset Response Parameter . . . . . . . . . . . . . 10
4.5. Add Outgoing Streams Request Parameter . . . . . . . . . . 11 4.5. Add Outgoing Streams Request Parameter . . . . . . . . . . 11
5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.1. Sender side procedures . . . . . . . . . . . . . . . . . . 12 5.1. Sender Side Procedures . . . . . . . . . . . . . . . . . . 12
5.1.1. Sender side procedures for the Stream Reset Chunk . . 13 5.1.1. Sender Side Procedures for the Stream Reset Chunk . . 13
5.1.2. Sender side procedures for the Outgoing SSN Reset 5.1.2. Sender Side Procedures for the Outgoing SSN Reset
Request Parameter . . . . . . . . . . . . . . . . . . 13 Request Parameter . . . . . . . . . . . . . . . . . . 13
5.1.3. Sender side procedures for the Incoming SSN Reset 5.1.3. Sender Side Procedures for the Incoming SSN Reset
Request Parameter . . . . . . . . . . . . . . . . . . 14 Request Parameter . . . . . . . . . . . . . . . . . . 14
5.1.4. Sender side procedures for the SSN/TSN Reset 5.1.4. Sender Side Procedures for the SSN/TSN Reset
Request Parameter . . . . . . . . . . . . . . . . . . 15 Request Parameter . . . . . . . . . . . . . . . . . . 15
5.1.5. Sender side procedures for the Stream Reset 5.1.5. Sender Side Procedures for the Stream Reset
Response Parameter . . . . . . . . . . . . . . . . . . 15 Response Parameter . . . . . . . . . . . . . . . . . . 15
5.1.6. Sender side procedures for the Add Outgoing 5.1.6. Sender Side Procedures for the Add Outgoing
Streams Request Parameter . . . . . . . . . . . . . . 16 Streams Request Parameter . . . . . . . . . . . . . . 16
5.2. Receiver side procedures . . . . . . . . . . . . . . . . . 16 5.2. Receiver Side Procedures . . . . . . . . . . . . . . . . . 16
5.2.1. Receiver side procedures for the Stream Reset Chunk . 16 5.2.1. Receiver Side Procedures for the Stream Reset Chunk . 16
5.2.2. Receiver side procedures for the Outgoing SSN 5.2.2. Receiver Side Procedures for the Outgoing SSN
Reset Request Parameter . . . . . . . . . . . . . . . 16
5.2.3. Receiver side procedures for the Incoming SSN
Reset Request Parameter . . . . . . . . . . . . . . . 17 Reset Request Parameter . . . . . . . . . . . . . . . 17
5.2.4. Receiver side procedures for the SSN/TSN Reset 5.2.3. Receiver Side Procedures for the Incoming SSN
Reset Request Parameter . . . . . . . . . . . . . . . 18
5.2.4. Receiver Side Procedures for the SSN/TSN Reset
Request Parameter . . . . . . . . . . . . . . . . . . 18 Request Parameter . . . . . . . . . . . . . . . . . . 18
5.2.5. Receiver side procedures for the Add Outgoing 5.2.5. Receiver Side Procedures for the Add Outgoing
Streams Request Parameter . . . . . . . . . . . . . . 19 Streams Request Parameter . . . . . . . . . . . . . . 19
5.2.6. Receiver side procedures for the Stream Reset 5.2.6. Receiver Side Procedures for the Stream Reset
Response Parameter . . . . . . . . . . . . . . . . . . 19 Response Parameter . . . . . . . . . . . . . . . . . . 19
5.3. Various Examples of the Stream Reset procedures . . . . . 19 5.3. Various Examples of the Stream Reset procedures . . . . . 20
6. Socket API considerations . . . . . . . . . . . . . . . . . . 20 6. Socket API considerations . . . . . . . . . . . . . . . . . . 20
6.1. Stream Reset event . . . . . . . . . . . . . . . . . . . . 20 6.1. Stream Reset event . . . . . . . . . . . . . . . . . . . . 20
6.2. Socket Options . . . . . . . . . . . . . . . . . . . . . . 22 6.2. Socket Options . . . . . . . . . . . . . . . . . . . . . . 22
6.2.1. Enable/Disable Stream Reset 6.2.1. Enable/Disable Stream Reset
(SCTP_ENABLE_STREAM_RESET) . . . . . . . . . . . . . . 22 (SCTP_ENABLE_STREAM_RESET) . . . . . . . . . . . . . . 22
6.2.2. Reset Incoming and/or Outgoing Streams 6.2.2. Reset Incoming and/or Outgoing Streams
(SCTP_RESET_STREAMS) . . . . . . . . . . . . . . . . . 23 (SCTP_RESET_STREAMS) . . . . . . . . . . . . . . . . . 23
6.2.3. Reset SSN/TSN (SCTP_RESET_SSN_TSN) . . . . . . . . . . 23 6.2.3. Reset SSN/TSN (SCTP_RESET_SSN_TSN) . . . . . . . . . . 23
6.2.4. Add Outgoing Streams (SCTP_ADD_STREAMS) . . . . . . . 24 6.2.4. Add Outgoing Streams (SCTP_ADD_STREAMS) . . . . . . . 24
7. Security Considerations . . . . . . . . . . . . . . . . . . . 24 7. Security Considerations . . . . . . . . . . . . . . . . . . . 24
skipping to change at page 5, line 7 skipping to change at page 5, line 7
8.1. A New Chunk Type . . . . . . . . . . . . . . . . . . . . . 24 8.1. A New Chunk Type . . . . . . . . . . . . . . . . . . . . . 24
8.2. Five New Parameter Types . . . . . . . . . . . . . . . . . 25 8.2. Five New Parameter Types . . . . . . . . . . . . . . . . . 25
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25
10.1. Normative References . . . . . . . . . . . . . . . . . . . 25 10.1. Normative References . . . . . . . . . . . . . . . . . . . 25
10.2. Informative References . . . . . . . . . . . . . . . . . . 26 10.2. Informative References . . . . . . . . . . . . . . . . . . 26
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 26 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 26
1. Introduction 1. Introduction
Many applications that desire to use [RFC4960] have requested the Many applications that desire to use SCTP have requested the ability
ability to "reset" a stream. The intention of resetting a stream is to "reset" a stream. The intention of resetting a stream is to start
to start the numbering sequence of the stream back at 'zero' with a the numbering sequence of the stream back at 'zero' with a
corresponding notification to the upper layer that this act as been corresponding notification to the upper layer that this act as been
performed. The applications that have requested this feature performed. The applications that have requested this feature
normally desire it so that they can "re-use" streams for different normally desire it so that they can "re-use" streams for different
purposes but still utilize the stream sequence number for the purposes but still utilize the stream sequence number for the
application to track the message flows. Thus, without this feature, application to track the message flows. Thus, without this feature,
a new use of an old stream would result in message numbers larger a new use on an old stream would result in message numbers larger
than expected without a protocol mechanism to "start the streams back than expected without a protocol mechanism to "start the streams back
at zero". This documents presents also a method for resetting the at zero". This documents presents also a method for resetting the
transport sequence numbers and all stream sequence numbers. transport sequence numbers, adding additional streams and resetting
all stream sequence numbers.
2. Conventions 2. Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
3. New Chunk Type 3. New Chunk Type
This section defines the new chunk type that will be used to reset This section defines the new chunk type that will be used to reset
skipping to change at page 5, line 41 skipping to change at page 5, line 42
+------------+-----------------------------------+ +------------+-----------------------------------+
| Chunk Type | Chunk Name | | Chunk Type | Chunk Name |
+------------+-----------------------------------+ +------------+-----------------------------------+
| 0x82 | Stream Reset Chunk (STREAM_RESET) | | 0x82 | Stream Reset Chunk (STREAM_RESET) |
+------------+-----------------------------------+ +------------+-----------------------------------+
Table 1 Table 1
It should be noted that the STREAM_RESET-chunk format requires the It should be noted that the STREAM_RESET-chunk format requires the
receiver to ignore the chunk if it is not understood and continue receiver to ignore the chunk if it is not understood and continue
processing all chunks that follow. This is accomplished as described processing all chunks that follow. This is accomplished by the use
in [RFC4960] section 3.2. by the use of the upper bits of the chunk of the upper bits of the chunk type as described in section 3.2 of
type. [RFC4960].
All transported integer numbers are in "network byte order" a.k.a., All transported integer numbers are in "network byte order" a.k.a.,
Big Endian, unless otherwise noted. Big Endian, unless otherwise noted.
3.1. STREAM RESET Chunk 3.1. STREAM RESET Chunk
This document adds one new chunk type to SCTP. The chunk has the This document adds one new chunk type to SCTP. The chunk has the
following format: following format:
0 1 2 3 0 1 2 3
skipping to change at page 7, line 30 skipping to change at page 7, line 30
| 0x000f | SSN/TSN Reset Request Parameter | | 0x000f | SSN/TSN Reset Request Parameter |
| 0x0010 | Stream Reset Response Parameter | | 0x0010 | Stream Reset Response Parameter |
| 0x0011 | Add Outgoing Streams Request Parameter | | 0x0011 | Add Outgoing Streams Request Parameter |
+----------------+----------------------------------------+ +----------------+----------------------------------------+
Table 2 Table 2
It should be noted that the parameter format requires the receiver to It should be noted that the parameter format requires the receiver to
stop processing the parameter and not to process any further stop processing the parameter and not to process any further
parameters within the chunk if the parameter type is not recognized. parameters within the chunk if the parameter type is not recognized.
This is accomplished as described in [RFC4960] section 3.2.1. by the This is accomplished by the use of the upper bits of the parameter
use of the upper bits of the parameter type. type as described in section 3.2.1 of [RFC4960].
All transported integer numbers are in "network byte order" a.k.a., All transported integer numbers are in "network byte order" a.k.a.,
Big Endian, unless otherwise noted. Big Endian, unless otherwise noted.
4.1. Outgoing SSN Reset Request Parameter 4.1. Outgoing SSN Reset Request Parameter
This parameter is used by the sender to request some outgoing streams This parameter is used by the sender to request some outgoing streams
to be reset. to be reset.
0 1 2 3 0 1 2 3
skipping to change at page 11, line 45 skipping to change at page 11, line 45
Receiver's next TSN: 4 bytes (unsigned integer) This field holds the Receiver's next TSN: 4 bytes (unsigned integer) This field holds the
TSN the receiver of the response must use to send the next DATA TSN the receiver of the response must use to send the next DATA
chunk. The field is only applicable in responses to SSN/TSN reset chunk. The field is only applicable in responses to SSN/TSN reset
requests. requests.
This parameter can appear in a STREAM RESET chunk. This parameter This parameter can appear in a STREAM RESET chunk. This parameter
MUST NOT appear in any other chunk type. MUST NOT appear in any other chunk type.
4.5. Add Outgoing Streams Request Parameter 4.5. Add Outgoing Streams Request Parameter
This parameter is used by the sender to request that the peer adds This parameter is used by the sender to request an additional number
the requested number of inbound streams to the association. of outgoing streams (i.e. the receiver's incoming streams) be added
to the association.
0 1 2 3 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Parameter Type = 0x0011 | Parameter Length=12 | | Parameter Type = 0x0011 | Parameter Length=12 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream Reset Request Sequence Number | | Stream Reset Request Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of new streams | Reserved | | Number of new streams | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
skipping to change at page 12, line 48 skipping to change at page 12, line 48
This parameter can appear in a STREAM RESET chunk. This parameter This parameter can appear in a STREAM RESET chunk. This parameter
MUST NOT appear in any other chunk type. MUST NOT appear in any other chunk type.
5. Procedures 5. Procedures
This section defines the procedures used by both the sender and This section defines the procedures used by both the sender and
receiver of a stream reset. We also give various example stream receiver of a stream reset. We also give various example stream
reset scenarios. reset scenarios.
5.1. Sender side procedures 5.1. Sender Side Procedures
This section describes the procedures related to the sending of This section describes the procedures related to the sending of
Stream Reset Chunks. A Stream Reset Chunk is a composition of a Type Stream Reset Chunks. A Stream Reset Chunk is a composition of a Type
Length Value (TLV) parameters. Length Value (TLV) parameters.
5.1.1. Sender side procedures for the Stream Reset Chunk 5.1.1. Sender Side Procedures for the Stream Reset Chunk
Note that before sending a Stream Reset Chunk the sender MUST ensure This SCTP extension uses the Supported Extensions Parameter defined
that the peer advertised support for the stream reset extension. The in [RFC5061] for negotiating the support of it.
indication for support of the extensions MUST be determined using the
Supported Extensions Parameter in either the INIT or INIT-ACK. This An SCTP endpoint supporting this extension MUST include the chunk
parameter is defined in [RFC5061]. If the chunk type of the type of the STREAM_RESET chunk in the Supported Extensions Parameter
STREAM_RESET chunk does NOT appear in the supported extensions list in either the INIT or INIT-ACK. Before sending a Stream Reset Chunk
of chunks, then the sender MUST NOT send any stream reset request to the sender MUST ensure that the peer advertised support for the
the peer and any request by the application for such service SHOULD stream reset extension. If the chunk type of the STREAM_RESET chunk
be responded to with an appropriate error indicating the peer SCTP does NOT appear in the supported extensions list of chunks, then the
stack does not support the stream reset extension. sender MUST NOT send any stream reset request to the peer and any
request by the application for such service SHOULD be responded to
with an appropriate error indicating the peer SCTP stack does not
support the stream reset extension.
After packaging the Stream Reset Chunk and sending it to the peer the After packaging the Stream Reset Chunk and sending it to the peer the
sender MUST start a 'Stream Reset Timer' when the STREAM RESET chunk sender MUST start a 'Stream Reset Timer' when the STREAM RESET chunk
contains at least one request parameter. If it contains no request contains at least one request parameter. If it contains no request
parameter, the Stream Reset Timer MUST NOT be started. This timer parameter, the Stream Reset Timer MUST NOT be started. This timer
MUST use the same value as SCTP's Data transmission timer (i.e. the MUST use the same value as SCTP's Data transmission timer (i.e. the
RTO timer) and MUST use exponential backoff doubling the value at RTO timer) and MUST use exponential backoff doubling the value at
every expiration. If the timer does expire, besides doubling the every expiration. If the timer does expire, besides doubling the
value, the sender MUST retransmit the Stream Reset Chunk, increment value, the sender MUST retransmit the Stream Reset Chunk, increment
the appropriate error counts (both for the association and the the appropriate error counts (both for the association and the
destination), and do threshold management possibly destroying the destination), and do threshold management possibly destroying the
association if SCTP retransmission thresholds are surpassed. association if SCTP retransmission thresholds are surpassed.
5.1.2. Sender side procedures for the Outgoing SSN Reset Request 5.1.2. Sender Side Procedures for the Outgoing SSN Reset Request
Parameter Parameter
When an SCTP sender wants to reset the SSNs of some or all outgoing When an SCTP sender wants to reset the SSNs of some or all outgoing
streams it can send an Outgoing SSN Reset Request Parameter if the streams it can send an Outgoing SSN Reset Request Parameter if the
Stream Reset Timer is not running. The following steps MUST be Stream Reset Timer is not running. The following steps MUST be
followed: followed:
A1: The sender MUST stop assigning new SSNs to new user data A1: The sender MUST stop assigning new SSNs to new user data
provided by the upper layer. This is because it is unknown as provided by the upper layer. This is because it is unknown as
to if the receiver of the request will accept or deny it and to if the receiver of the request will accept or deny it and
skipping to change at page 14, line 35 skipping to change at page 14, line 36
Parameter. Parameter.
A6: The Outgoing SSN Reset Request Parameter is put into a STREAM A6: The Outgoing SSN Reset Request Parameter is put into a STREAM
RESET Chunk. It MAY be put together with an Incoming SSN Reset RESET Chunk. It MAY be put together with an Incoming SSN Reset
Request Parameter or an Stream Reset Response Parameter and MUST Request Parameter or an Stream Reset Response Parameter and MUST
NOT be put together with any other parameter. NOT be put together with any other parameter.
A7: The STREAM RESET Chunk is sent following the rules given in A7: The STREAM RESET Chunk is sent following the rules given in
Section 5.1.1 Section 5.1.1
5.1.3. Sender side procedures for the Incoming SSN Reset Request 5.1.3. Sender Side Procedures for the Incoming SSN Reset Request
Parameter Parameter
When an SCTP sender wants to reset the SSNs of some or all incoming When an SCTP sender wants to reset the SSNs of some or all incoming
streams it can send an Incoming SSN Reset Request Parameter if the streams it can send an Incoming SSN Reset Request Parameter if the
Stream Reset Timer is not running. The following steps MUST be Stream Reset Timer is not running. The following steps MUST be
followed: followed:
B1: The sender MUST assign the next stream reset request sequence B1: The sender MUST assign the next stream reset request sequence
number and put it into the Stream Reset Request Sequence Number number and put it into the Stream Reset Request Sequence Number
field of the Incoming SSN Reset Request Parameter. After field of the Incoming SSN Reset Request Parameter. After
skipping to change at page 15, line 14 skipping to change at page 15, line 19
Reset Request Parameter. Reset Request Parameter.
B3: The Incoming SSN Reset Request Parameter is put into a STREAM B3: The Incoming SSN Reset Request Parameter is put into a STREAM
RESET Chunk. It MAY be put together with an Outgoing SSN Reset RESET Chunk. It MAY be put together with an Outgoing SSN Reset
Request Parameter and MUST NOT be put together with any other Request Parameter and MUST NOT be put together with any other
parameter. parameter.
B4: The STREAM RESET Chunk is sent following the rules given in B4: The STREAM RESET Chunk is sent following the rules given in
Section 5.1.1 Section 5.1.1
5.1.4. Sender side procedures for the SSN/TSN Reset Request Parameter 5.1.4. Sender Side Procedures for the SSN/TSN Reset Request Parameter
When an SCTP sender wants to reset the SSNs and TSNs it can send a When an SCTP sender wants to reset the SSNs and TSNs it can send a
SSN/TSN Reset Request Parameter if the Stream Reset Timer is not SSN/TSN Reset Request Parameter if the Stream Reset Timer is not
running. The following steps MUST be followed: running. The following steps MUST be followed:
C1: The sender MUST assign the next stream reset request sequence C1: The sender MUST assign the next stream reset request sequence
number and put it into the Stream Reset Request Sequence Number number and put it into the Stream Reset Request Sequence Number
field of the SSN/TSN Reset Request Parameter. After assigning field of the SSN/TSN Reset Request Parameter. After assigning
it the next stream reset request sequence number MUST be it the next stream reset request sequence number MUST be
incremented by '1'. incremented by '1'.
C2: The sender MUST queue any user data. C2: The sender MUST queue any user data suspending any new
transmissions until the reset procedure is finished by the peer
either acknowledging or denying the request.
C3: The SSN/TSN Reset Request Parameter is put into a STREAM RESET C3: The SSN/TSN Reset Request Parameter is put into a STREAM RESET
Chunk. There MUST NOT be any other parameter in this chunk. Chunk. There MUST NOT be any other parameter in this chunk.
C4: The STREAM RESET Chunk is sent following the rules given in C4: The STREAM RESET Chunk is sent following the rules given in
Section 5.1.1 Section 5.1.1
5.1.5. Sender side procedures for the Stream Reset Response Parameter 5.1.5. Sender Side Procedures for the Stream Reset Response Parameter
When an implementation receives a request parameter it MUST respond When an implementation receives a request parameter it MUST respond
with a Stream Reset Response Parameter in the following manner: with a Stream Reset Response Parameter in the following manner:
D1: The Stream Reset Request Sequence number of the incoming request D1: The Stream Reset Request Sequence number of the incoming request
is copied to the Stream Reset Response Sequence Number field of is copied to the Stream Reset Response Sequence Number field of
the Stream Reset Response Parameter. the Stream Reset Response Parameter.
D2: The result of the processing of the incoming request is filled D2: The result of the processing of the incoming request is filled
in the Result field of the Stream Reset Response Parameter in the Result field of the Stream Reset Response Parameter
skipping to change at page 16, line 12 skipping to change at page 16, line 20
of this Stream Reset Response Parameter will assign. For other of this Stream Reset Response Parameter will assign. For other
requests the Sender's next TSN field is not filled. requests the Sender's next TSN field is not filled.
D4: If the incoming request is a SSN/TSN reset request, the D4: If the incoming request is a SSN/TSN reset request, the
Receiver's next TSN field is filled with a TSN such that the Receiver's next TSN field is filled with a TSN such that the
sender of the Stream Reset Response Parameter can be sure it can sender of the Stream Reset Response Parameter can be sure it can
discard received DATA chunks with smaller TSNs. A good value discard received DATA chunks with smaller TSNs. A good value
for this is the highest TSN it has seen plus some delta. For for this is the highest TSN it has seen plus some delta. For
other requests the Sender's next TSN field is not filled. other requests the Sender's next TSN field is not filled.
5.1.6. Sender side procedures for the Add Outgoing Streams Request 5.1.6. Sender Side Procedures for the Add Outgoing Streams Request
Parameter Parameter
When an SCTP sender wants to increase the number of outbound streams When an SCTP sender wants to increase the number of outbound streams
it is able to send to, it may add a Add Streams parameter to the it is able to send to, it may add a Add Streams parameter to the
STREAM RESET chunk. Upon sending the request the sender MUST await a STREAM RESET chunk. Upon sending the request the sender MUST await a
positive acknowledgment (Success) before using any additional stream positive acknowledgment (Success) before using any additional stream
added by this request. Note that new streams are added adjacent to added by this request. Note that new streams are added adjacent to
the previous steams with no gaps. This means that if a request is the previous steams with no gaps. This means that if a request is
made to add 2 streams to an association that has already 5 (0-4) then made to add 2 streams to an association that has already 5 (0-4) then
the new streams, upon successful completion, are streams 5 and 6. the new streams, upon successful completion, are streams 5 and 6.
Any new stream MUST number its first message to be stream sequence 0. Any new stream MUST number its first message to be stream sequence 0.
5.2. Receiver side procedures 5.2. Receiver Side Procedures
5.2.1. Receiver side procedures for the Stream Reset Chunk 5.2.1. Receiver Side Procedures for the Stream Reset Chunk
Upon reception of a Stream Reset Chunk each parameter within it Upon reception of a Stream Reset Chunk each parameter within it
should be processed. If some parameters have to be sent back, they should be processed. If some parameters have to be sent back, they
MUST all be put into one STREAM RESET chunk. If the received STREAM MUST all be put into one STREAM RESET chunk. If the received STREAM
RESET chunk contains at least one request parameter, a SACK chunk RESET chunk contains at least one request parameter, a SACK chunk
MUST be sent back and MAY be bundled with the STREAM RESET chunk. If MUST be sent back and MAY be bundled with the STREAM RESET chunk. If
the received STREAM RESET chunk contains at least one request and the received STREAM RESET chunk contains at least one request and
based on the analysis of the Stream Reset Request Sequence Numbers based on the analysis of the Stream Reset Request Sequence Numbers
this is the last received STREAM RESET chunk, the same STREAM RESET this is the last received STREAM RESET chunk (i.e. a retransmission),
chunk has to be sent back in response as earlier. the same STREAM RESET chunk has to be sent back in response as
earlier.
5.2.2. Receiver side procedures for the Outgoing SSN Reset Request
Parameter
The decision to deny a stream reset request is an administrative The decision to deny a stream reset request is an administrative
decision and may be user configurable even after the association has decision and may be user configurable even after the association has
formed. If for whatever reason the endpoint does NOT wish to reset formed. If for whatever reason the endpoint does NOT wish to process
any streams it MUST send a stream reset response as described in a received request parameter it MUST send a corresponding response
Section 5.1.5 with an appropriate Result field. parameter as described in Section 5.1.5 with an appropriate Result
field.
5.2.2. Receiver Side Procedures for the Outgoing SSN Reset Request
Parameter
In the case that the endpoint is willing to perform a stream reset In the case that the endpoint is willing to perform a stream reset
the following steps SHOULD be followed: the following steps SHOULD be followed:
E1: If the Senders Last Assigned TSN number is greater than the E1: If the Senders Last Assigned TSN number is greater than the
cumulative acknowledgment point, then the endpoint must enter cumulative acknowledgment point, then the endpoint must enter
"deferred reset processing". In this mode, any data arriving "deferred reset processing". In this mode, any data arriving
with a TSN number larger than the 'senders last assigned TSN' with a TSN number larger than the 'senders last assigned TSN'
for the effected stream(s) MUST be queued locally and held until for the effected stream(s) MUST be queued locally and held until
the Cumulative Acknowledgment point reaches the 'senders last the Cumulative Acknowledgment point reaches the 'senders last
skipping to change at page 17, line 36 skipping to change at page 17, line 43
E3: If no Stream Numbers are listed in the parameter, then all E3: If no Stream Numbers are listed in the parameter, then all
incoming streams MUST be reset to '0' as the next expected incoming streams MUST be reset to '0' as the next expected
stream sequence number. If specific Stream Numbers are listed, stream sequence number. If specific Stream Numbers are listed,
then only these specific streams MUST be reset to '0' and all then only these specific streams MUST be reset to '0' and all
other non-listed stream sequence numbers remain unchanged. other non-listed stream sequence numbers remain unchanged.
E4: Optionally an Upper Layer Notification SHOULD be sent to inform E4: Optionally an Upper Layer Notification SHOULD be sent to inform
the local endpoint that the inbound streams have been reset. the local endpoint that the inbound streams have been reset.
E5: Any queued TSN's (queued at step D3) should now be released and E5: Any queued TSN's (queued at step E1) should now be released and
processed normally. processed normally.
E6: A Stream Reset Response Parameter is put into a STREAM RESET E6: A Stream Reset Response Parameter is put into a STREAM RESET
chunk indicating successful processing. chunk indicating successful processing.
E7: The STREAM RESET chunk is sent after the incoming STREAM RESET E7: The STREAM RESET chunk is sent after the incoming STREAM RESET
chunk is processed completely. chunk is processed completely.
5.2.3. Receiver side procedures for the Incoming SSN Reset Request 5.2.3. Receiver Side Procedures for the Incoming SSN Reset Request
Parameter Parameter
The decision to deny a stream reset request is an administrative
decision and may be user configurable even after the association has
formed. If for whatever reason the endpoint does NOT wish to reset
any streams it MUST send a stream reset response as described in
Section 5.1.5 with an appropriate Result field.
In the case that the endpoint is willing to perform a stream reset In the case that the endpoint is willing to perform a stream reset
the following steps SHOULD be followed: the following steps SHOULD be followed:
F1: An Outgoing Stream Reset Request Parameter MUST be put into an F1: An Outgoing Stream Reset Request Parameter MUST be put into an
STREAM RESET chunk according to Section 5.1.2. STREAM RESET chunk according to Section 5.1.2.
F2: The STREAM RESET chunk is sent after the incoming STREAM RESET F2: The STREAM RESET chunk is sent after the incoming STREAM RESET
chunk is processed completely. chunk is processed completely.
5.2.4. Receiver side procedures for the SSN/TSN Reset Request Parameter 5.2.4. Receiver Side Procedures for the SSN/TSN Reset Request Parameter
The decision to deny a stream reset request is an administrative
decision and may be user configurable even after the association has
formed. If for whatever reason the endpoint does NOT wish to reset
any streams it MUST send a stream reset response as described in
Section 5.1.5 with an appropriate Result field.
In the case that the endpoint is willing to perform a SSN/TSN reset In the case that the endpoint is willing to perform a SSN/TSN reset
the following steps SHOULD be followed: the following steps SHOULD be followed:
G1: Compute an appropriate value for the Receiver's next TSN, the G1: Compute an appropriate value for the Receiver's next TSN, the
TSN the peer should use to send the next DATA chunk. Note that TSN the peer should use to send the next DATA chunk. Note that
an appropriate value should be larger than the highest TSN last an appropriate value should be larger than the highest TSN last
received plus a delta of at least 500 additional TSN's. received plus a delta of at least 500 additional TSN's.
G2: Compute an appropriate value for the local endpoints next TSN, G2: Compute an appropriate value for the local endpoints next TSN,
skipping to change at page 19, line 5 skipping to change at page 19, line 5
G5: All incoming and outgoing streams MUST be reset to '0' as the G5: All incoming and outgoing streams MUST be reset to '0' as the
next expected and outgoing stream sequence numbers, next expected and outgoing stream sequence numbers,
respectively. respectively.
G6: A Stream Reset Response Parameter is put into a STREAM RESET G6: A Stream Reset Response Parameter is put into a STREAM RESET
chunk indicating successful processing. chunk indicating successful processing.
G7: The STREAM RESET chunk is sent after the incoming STREAM RESET G7: The STREAM RESET chunk is sent after the incoming STREAM RESET
chunk is processed completely. chunk is processed completely.
5.2.5. Receiver side procedures for the Add Outgoing Streams Request 5.2.5. Receiver Side Procedures for the Add Outgoing Streams Request
Parameter Parameter
When an SCTP endpoint receives a stream reset request adding When an SCTP endpoint receives a stream reset request adding
additional streams, it MUST send a response parameter either additional streams, it MUST send a response parameter either
acknowledging or rejecting the request. If the response is acknowledging or rejecting the request. If the response is
successful the receiver MUST add the requested number of inbound successful the receiver MUST add the requested number of inbound
streams to the association, initializing the next expected stream streams to the association, initializing the next expected stream
sequence number to be 0. sequence number to be 0.
5.2.6. Receiver side procedures for the Stream Reset Response Parameter 5.2.6. Receiver Side Procedures for the Stream Reset Response Parameter
On receipt of a Stream Reset Response Parameter the following MUST be On receipt of a Stream Reset Response Parameter the following MUST be
performed: performed:
H1: If the Stream Reset Timer is running for the Stream Reset H1: If the Stream Reset Timer is running for the Stream Reset
Request Sequence Number indicated in the Stream Reset Response Request Sequence Number indicated in the Stream Reset Response
Sequence Number field, mark the Stream Reset Request Sequence Sequence Number field, mark the Stream Reset Request Sequence
Number as acknowledged. If all Stream Reset Request Sequence Number as acknowledged. If all Stream Reset Request Sequence
Numbers the Stream Reset Timer is running for are acknowledged, Numbers the Stream Reset Timer is running for are acknowledged,
stop the Stream Reset Timer. If the timer was not running for stop the Stream Reset Timer. If the timer was not running for
skipping to change at page 19, line 47 skipping to change at page 19, line 47
allowed again. Optionally an Upper Layer Notification SHOULD be allowed again. Optionally an Upper Layer Notification SHOULD be
sent to inform the local endpoint that the outbound streams have sent to inform the local endpoint that the outbound streams have
been reset. been reset.
H4: If the request was a SSN/TSN Reset Request new DATA should be H4: If the request was a SSN/TSN Reset Request new DATA should be
sent from Receiver's next TSN and beginning with stream sequence sent from Receiver's next TSN and beginning with stream sequence
number '0' for all outgoing streams. All incoming streams are number '0' for all outgoing streams. All incoming streams are
also reset to '0' as the next expected stream sequence number. also reset to '0' as the next expected stream sequence number.
The peer will send DATA chunks starting with Sender's next TSN. The peer will send DATA chunks starting with Sender's next TSN.
H5: If the request was to add outgoing streams and the result was
sucessful, the endpoint should add the additional streams to the
association. Note that an implementation may allocate the
memory at the time of the request, but it MUST NOT use the
streams until the peer has responded with a postive
acknowledgment.
5.3. Various Examples of the Stream Reset procedures 5.3. Various Examples of the Stream Reset procedures
The following example illustrates an Endpoint A resetting all streams The following example illustrates an Endpoint A resetting all streams
in both directions. in both directions.
E-A E-Z E-A E-Z
----------[STR_RESET(IN-REQ:X|OUT-REQ:X+1,Y-3)]-------> ----------[STR_RESET(IN-REQ:X|OUT-REQ:X+1,Y-3)]------->
<-[STR_RESET(RESP:Y|OUT-REQ:Y+1,X+1))]--------- <-[STR_RESET(RESP:Y|OUT-REQ:Y+1,X+1))]---------
-------[STR_RESET(RESP:Y)]-----------------> -------[STR_RESET(RESP:Y)]----------------->
skipping to change at page 21, line 21 skipping to change at page 21, line 21
... ...
struct sctp_stream_reset_event sn_strreset_event; struct sctp_stream_reset_event sn_strreset_event;
... ...
} }
The corresponding sn_type value is SCTP_STREAM_RESET_EVENT. The corresponding sn_type value is SCTP_STREAM_RESET_EVENT.
The event delivered has the following structure: The event delivered has the following structure:
struct sctp_stream_reset_event { struct sctp_stream_reset_event {
uint16_t strreset_type; uint16_t strreset_type;
uint16_t strreset_flags; uint16_t strreset_flags;
uint32_t strreset_length; uint32_t strreset_length;
sctp_assoc_t strreset_assoc_id; sctp_assoc_t strreset_assoc_id;
uint16_t strreset_stream_list[]; uint16_t strreset_stream_list[];
}; };
strreset_type: It should be SCTP_STREAM_RESET_EVENT. strreset_type: It should be SCTP_STREAM_RESET_EVENT.
strreset_flags: This field is formed from the bitwise OR of one or strreset_flags: This field is formed from the bitwise OR of one or
more of the following currently defined flags: more of the following currently defined flags:
SCTP_STREAM_RESET_INCOMING_SSN: The peer reset its incoming SCTP_STREAM_RESET_INCOMING_SSN: The peer reset its incoming
streams. streams.
skipping to change at page 22, line 36 skipping to change at page 22, line 36
| SCTP_RESET_STREAMS | struct sctp_reset_streams | | X | | SCTP_RESET_STREAMS | struct sctp_reset_streams | | X |
| SCTP_RESET_SSN_TSN | sctp_assoc_t | | X | | SCTP_RESET_SSN_TSN | sctp_assoc_t | | X |
| SCTP_ADD_STREAMS | struct sctp_assoc_value | | X | | SCTP_ADD_STREAMS | struct sctp_assoc_value | | X |
+--------------------------+---------------------------+-----+-----+ +--------------------------+---------------------------+-----+-----+
Table 4 Table 4
6.2.1. Enable/Disable Stream Reset (SCTP_ENABLE_STREAM_RESET) 6.2.1. Enable/Disable Stream Reset (SCTP_ENABLE_STREAM_RESET)
This option allows a user to control whether the SCTP implementation This option allows a user to control whether the SCTP implementation
processes or denies incoming reqests in STREAM_RESET chunks. processes or denies incoming requests in STREAM_RESET chunks.
The default is to process incoming requests. The default is not to process incoming requests.
To set or get this option the user fills in the following structure: To set or get this option the user fills in the following structure:
struct sctp_assoc_value { struct sctp_assoc_value {
sctp_assoc_t assoc_id; sctp_assoc_t assoc_id;
uint32_t assoc_value; uint32_t assoc_value;
}; };
assoc_id: This parameter is ignored for one-to-one style sockets. assoc_id: This parameter is ignored for one-to-one style sockets.
For one-to-many style sockets this parameter indicates which For one-to-many style sockets this parameter indicates which
association the user is performing an action upon. association the user is performing an action upon.
assoc_value: If this parameter is zero the processing of incoming assoc_value: If this parameter is zero the processing of incoming
requests will be denied. If it is non-zero incoming requests will requests will be denied. If it is non-zero incoming requests will
be processed. be processed.
6.2.2. Reset Incoming and/or Outgoing Streams (SCTP_RESET_STREAMS) 6.2.2. Reset Incoming and/or Outgoing Streams (SCTP_RESET_STREAMS)
This option allows the user to reset incoming and/or outgoing This option allows the user to request the reset incoming and/or
streams. outgoing streams.
To set or get this option the user fills in the following structure: To set or get this option the user fills in the following structure:
struct sctp_reset_streams { struct sctp_reset_streams {
sctp_assoc_t srs_assoc_id; sctp_assoc_t srs_assoc_id;
uint16_t srs_flags; uint16_t srs_flags;
uint16_t srs_number_streams; uint16_t srs_number_streams;
uint16_t srs_stream_list[]; uint16_t srs_stream_list[];
}; };
skipping to change at page 23, line 46 skipping to change at page 23, line 46
srs_stream_list. If it is zero, the operation is performed on all srs_stream_list. If it is zero, the operation is performed on all
streams. streams.
srs_stream_list: This parameter contains a list of stream identifier srs_stream_list: This parameter contains a list of stream identifier
on which the operation is performed on. It contains on which the operation is performed on. It contains
srs_number_streams elements. If it is empty, the operation is srs_number_streams elements. If it is empty, the operation is
performed on all streams. performed on all streams.
6.2.3. Reset SSN/TSN (SCTP_RESET_SSN_TSN) 6.2.3. Reset SSN/TSN (SCTP_RESET_SSN_TSN)
This option allows a user to reset the SSN/TSN. On one-to-one style This option allows a user to request the reset the SSN/TSN.
sockets the option_value is ignored. For one-to-many style sockets
the option_value is the association identifier of the association on To set this option the user provides an option_value of type
which the action is to be performed on. sctp_assoc_t.
On one-to-one style sockets the option_value is ignored. For one-to-
many style sockets the option_value is the association identifier of
the association on which the action is to be performed on.
6.2.4. Add Outgoing Streams (SCTP_ADD_STREAMS) 6.2.4. Add Outgoing Streams (SCTP_ADD_STREAMS)
This option allows a user to add a number of outgoing streams. This option allows a user to request the addition a number of
outgoing streams.
To set this option the user fills in the following structure: To set this option the user fills in the following structure:
struct sctp_assoc_value { struct sctp_assoc_value {
sctp_assoc_t assoc_id; sctp_assoc_t assoc_id;
uint32_t assoc_value; uint32_t assoc_value;
}; };
assoc_id: This parameter is ignored for one-to-one style sockets. assoc_id: This parameter is ignored for one-to-one style sockets.
For one-to-many style sockets this parameter indicates which For one-to-many style sockets this parameter indicates which
skipping to change at page 26, line 22 skipping to change at page 26, line 26
draft-ietf-tsvwg-sctpsocket-19 (work in progress), draft-ietf-tsvwg-sctpsocket-19 (work in progress),
February 2009. February 2009.
URIs URIs
[1] <http://www.iana.org/assignments/sctp-parameters> [1] <http://www.iana.org/assignments/sctp-parameters>
Authors' Addresses Authors' Addresses
Randall R. Stewart Randall R. Stewart
Researcher Huawei
Chapin, SC 29036 Chapin, SC 29036
USA USA
Phone: Phone:
Email: randall@lakerest.net Email: rstewart@huawei.com
Peter Lei Peter Lei
Cisco Systems, Inc. Cisco Systems, Inc.
8735 West Higgins Road 8735 West Higgins Road
Suite 300 Suite 300
Chicago, IL 60631 Chicago, IL 60631
USA USA
Phone: Phone:
Email: peterlei@cisco.com Email: peterlei@cisco.com
 End of changes. 50 change blocks. 
113 lines changed or deleted 127 lines changed or added

This html diff was produced by rfcdiff 1.37b. The latest version is available from http://tools.ietf.org/tools/rfcdiff/