draft-ietf-tsvwg-sctp-strrst-08.txt   draft-ietf-tsvwg-sctp-strrst-09.txt 
Network Working Group R. Stewart Network Working Group R. Stewart
Internet-Draft Huawei Internet-Draft Huawei
Intended status: Standards Track P. Lei Intended status: Standards Track P. Lei
Expires: June 2, 2011 Cisco Systems, Inc. Expires: July 8, 2011 Cisco Systems, Inc.
M. Tuexen M. Tuexen
Muenster Univ. of Applied Sciences Muenster Univ. of Applied Sciences
November 29, 2010 January 4, 2011
Stream Control Transmission Protocol (SCTP) Stream Reconfiguration Stream Control Transmission Protocol (SCTP) Stream Reconfiguration
draft-ietf-tsvwg-sctp-strrst-08.txt draft-ietf-tsvwg-sctp-strrst-09.txt
Abstract Abstract
Many applications that use SCTP want the ability to "reset" a stream. Many applications that use SCTP want the ability to "reset" a stream.
The intention of resetting a stream is to set the numbering sequence The intention of resetting a stream is to set the numbering sequence
of the stream back to 'zero' with a corresponding notification to the of the stream back to 'zero' with a corresponding notification to the
upper layer that this has been performed. The applications that want upper layer that this has been performed. The applications that want
this feature want it so that they can "re-use" streams for different this feature want it so that they can "re-use" streams for different
purposes but still utilize the stream sequence number so that the purposes but still utilize the stream sequence number so that the
application can track the message flows. Thus, without this feature, application can track the message flows. Thus, without this feature,
skipping to change at page 1, line 44 skipping to change at page 1, line 44
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
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."
This Internet-Draft will expire on June 2, 2011. This Internet-Draft will expire on July 8, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2011 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 Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 35 skipping to change at page 2, line 35
4.4. Stream Reset Response Parameter . . . . . . . . . . . . . 9 4.4. Stream Reset Response Parameter . . . . . . . . . . . . . 9
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 . . 12 5.1.1. Sender Side Procedures for the Stream Reset Chunk . . 12
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 . . . . . . . . . . . . . . . . . . 14 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.3. Receiver Side Procedures for the Incoming SSN
Reset Request Parameter . . . . . . . . . . . . . . . 18
5.2.4. Receiver Side Procedures for the SSN/TSN Reset 5.2.4. Receiver Side Procedures for the SSN/TSN Reset
Request Parameter . . . . . . . . . . . . . . . . . . 18 Request Parameter . . . . . . . . . . . . . . . . . . 19
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
6. Socket API Considerations . . . . . . . . . . . . . . . . . . 20 6. Socket API Considerations . . . . . . . . . . . . . . . . . . 20
6.1. Events . . . . . . . . . . . . . . . . . . . . . . . . . . 20 6.1. Events . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.1.1. Stream Reset Event . . . . . . . . . . . . . . . . . . 21 6.1.1. Stream Reset Event . . . . . . . . . . . . . . . . . . 21
6.1.2. Association Reset Event . . . . . . . . . . . . . . . 22 6.1.2. Association Reset Event . . . . . . . . . . . . . . . 22
6.1.3. Stream Change Event . . . . . . . . . . . . . . . . . 23 6.1.3. Stream Change Event . . . . . . . . . . . . . . . . . 23
6.2. Event Subscription . . . . . . . . . . . . . . . . . . . . 24 6.2. Event Subscription . . . . . . . . . . . . . . . . . . . . 24
6.3. Socket Options . . . . . . . . . . . . . . . . . . . . . . 25 6.3. Socket Options . . . . . . . . . . . . . . . . . . . . . . 25
6.3.1. Enable/Disable Stream Reset 6.3.1. Enable/Disable Stream Reset
(SCTP_ENABLE_STREAM_RESET) . . . . . . . . . . . . . . 25 (SCTP_ENABLE_STREAM_RESET) . . . . . . . . . . . . . . 25
6.3.2. Reset Incoming and/or Outgoing Streams 6.3.2. Reset Incoming and/or Outgoing Streams
(SCTP_RESET_STREAMS) . . . . . . . . . . . . . . . . . 26 (SCTP_RESET_STREAMS) . . . . . . . . . . . . . . . . . 26
6.3.3. Reset SSN/TSN (SCTP_RESET_ASSOC) . . . . . . . . . . . 27 6.3.3. Reset SSN/TSN (SCTP_RESET_ASSOC) . . . . . . . . . . . 27
6.3.4. Add Outgoing Streams (SCTP_ADD_OUT_STREAMS) . . . . . 27 6.3.4. Add Outgoing Streams (SCTP_ADD_OUT_STREAMS) . . . . . 27
7. Security Considerations . . . . . . . . . . . . . . . . . . . 27 7. Security Considerations . . . . . . . . . . . . . . . . . . . 28
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
8.1. A New Chunk Type . . . . . . . . . . . . . . . . . . . . . 28 8.1. A New Chunk Type . . . . . . . . . . . . . . . . . . . . . 29
8.2. Five New Parameter Types . . . . . . . . . . . . . . . . . 29 8.2. Five New Parameter Types . . . . . . . . . . . . . . . . . 29
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 29 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 29
Appendix A. Examples of the Stream Reset procedures . . . . . . . 29 Appendix A. Examples of the Stream Reset procedures . . . . . . . 30
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 30 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 31
10.1. Normative References . . . . . . . . . . . . . . . . . . . 30 10.1. Normative References . . . . . . . . . . . . . . . . . . . 31
10.2. Informative References . . . . . . . . . . . . . . . . . . 31 10.2. Informative References . . . . . . . . . . . . . . . . . . 31
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 31 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 31
1. Introduction 1. Introduction
Many applications that use SCTP want the ability to "reset" a stream. Many applications that use SCTP want the ability to "reset" a stream.
The intention of resetting a stream is to set the numbering sequence The intention of resetting a stream is to set the numbering sequence
of the stream back to 'zero' with a corresponding notification to the of the stream back to 'zero' with a corresponding notification to the
upper layer that this has been performed. The applications that want upper layer that this has been performed. The applications that want
this feature want to "re-use" streams for different purposes but this feature want to "re-use" streams for different purposes but
skipping to change at page 12, line 25 skipping to change at page 12, line 25
This parameter MAY appear in a STREAM RESET chunk. This parameter This parameter MAY 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.
One important thing to remember about SCTP streams is that they are
uni-directional and there is no coorespondance between outgoing and
incoming streams. The procedures outlined in this section are
designed so that the incoming side will always reset their stream
sequence number first before the outgoing side which means the stream
reset request must always originate from the outgoing side. These
two issues have important ramifications upon how an SCTP endpoint
might request that its incoming streams be reset. In effect it must
ask the peer to start an outgoing reset proceedure and once that
request is acknowledged let the peer actually control the reset
operation.
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 composed of one or two Stream Reset Chunks. A Stream Reset Chunk is composed of one or two
Type Length Value (TLV) parameters. Type 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
This SCTP extension uses the Supported Extensions Parameter defined This SCTP extension uses the Supported Extensions Parameter defined
in [RFC5061] for negotiating the support for it. in [RFC5061] for negotiating the support for it.
skipping to change at page 17, line 31 skipping to change at page 17, line 48
MUST put a Stream Reset Response Parameter into a STREAM RESET MUST put a Stream Reset Response Parameter into a STREAM RESET
chunk indicating 'In progress' and MUST send the STREAM RESET chunk indicating 'In progress' and MUST send the STREAM RESET
chunk. chunk.
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 stream incoming streams MUST be reset to 0 as the next expected stream
sequence number. If specific Stream Numbers are listed, then sequence number. If specific Stream Numbers are listed, then
only these specific streams MUST be reset to 0 and all other only these specific streams MUST be reset to 0 and all other
non-listed stream sequence numbers remain unchanged. non-listed stream sequence numbers remain unchanged.
E4: Any queued TSN's (queued at step E1) MUST now be released and E4: Any queued TSN's (queued at step E2) MUST now be released and
processed normally. processed normally.
E5: A Stream Reset Response Parameter MUST be put into a STREAM E5: A Stream Reset Response Parameter MUST be put into a STREAM
RESET chunk indicating successful processing. RESET chunk indicating successful processing.
E6: The STREAM RESET chunk MUST be sent after the incoming STREAM E6: The STREAM RESET chunk MUST be sent after the incoming STREAM
RESET chunk is processed completely. RESET 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
skipping to change at page 18, line 10 skipping to change at page 18, line 30
F2: The STREAM RESET chunk MUST be sent after the incoming STREAM F2: The STREAM RESET chunk MUST be sent after the incoming STREAM
RESET chunk is processed completely. RESET chunk is processed completely.
If the endpoint is un-willing to perform the stream reset it MUST If the endpoint is un-willing to perform the stream reset it MUST
send a Stream Reset Response Parameter with the appropriate error set send a Stream Reset Response Parameter with the appropriate error set
to "Denied". to "Denied".
When a peer endpoint requests a Incoming SSN Reset Request it is When a peer endpoint requests a Incoming SSN Reset Request it is
possible that the local endpoint has just sent an Outgoing SSN Reset possible that the local endpoint has just sent an Outgoing SSN Reset
Request on the same stream and has not yet received a response. In Request on the same stream and has not yet received a response. In
such a case the local endpoint SHOULD silently discard the request such a case the local endpoint MUST do the following:
and continue processing any other request found in the Stream Reset
Chunk. 1) If the stream reset overlaps the outstanding request completely
respond to the requestor with a acknowledgment indicating that
there was 'Nothing to do'.
2) Otherwise process the stream reset request normally responding to
the requestor with a acknowledgment.
It is also possible that the Incoming request will arrive after the It is also possible that the Incoming request will arrive after the
Outgoing SSN Reset Request just completed. In such a case all of the Outgoing SSN Reset Request just completed. In such a case all of the
streams being requested will be already set to 0. If so, the local streams being requested will be already set to 0. If so, the local
endpoint SHOULD send back a Stream Reset Response with the success endpoint SHOULD send back a Stream Reset Response with the success
code "Nothing to do". code "Nothing to do".
Note that in either race condition the local endpoint could Note that in either race condition the local endpoint could
optionally also perform the reset. This would result in streams that optionally also perform the reset. This would result in streams that
are already at sequence 0 being reset again to 0 which would cause no are already at sequence 0 being reset again to 0 which would cause no
 End of changes. 15 change blocks. 
18 lines changed or deleted 35 lines changed or added

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