One document matched: draft-ietf-sigtran-relreq-sctp-00.txt
Network Working Group R. R. Stewart
INTERNET-DRAFT Cisco Systems
Q. Xie
Motorola
M. Tuexen
Siemens AG
I. Rytina
Ericsson
expires in six months February 2, 2001
Generic Method for Transmitting Reliable SCTP Control Chunks
<draft-ietf-sigtran-relreq-sctp-00.txt>
Status of This Memo
This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of RFC 2026 [RFC2026]. Internet-Drafts are
working documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
Abstract
This document describes an extension to the Stream Control
Transmission Protocol (SCTP) [RFC2960] to provide a generic method
for transmitting a reliable control chunk. This provides a framework
whereby future applications which require a specific SCTP control
chunk(s) to be sent reliably can use this extension to provide the
required functionality.
TABLE OF CONTENTS
1. Introduction............................................... 2
2. Conventions................................................ 2
3. Chunk and Parameter Format................................. 2
3.1 New Chunk Types........................................... 2
3.1.1 Reliable Request Chunk (REL-REQ)....................... 3
3.1.2 Reliable Request Acknowledgement (REL-ACK).............. 4
4. Procedures................................................. 5
4.1 Reliable Chunk Procedures................................. 5
4.1.1 Congestion Control of Reliable Chunks................... 7
4.2 Upon reception of a REL-REQ Chunk......................... 7
5. Security Considerations.................................... 9
6. IANA considerations........................................ 9
7. Authors' Addresses......................................... 9
8. References.................................................10
Stewart et.al. [Page 1]
Internet draft Reliable SCTP Control Chunks February 2001
1. Introduction
Taking advantage of the extensibility of SCTP, this document adds a
standard method to SCTP to send and receive reliable control
information. This method is designed to be friendly to the TCP type
congestion control within the the network. The following are some of
the deemed advantages to this extension:
A) An uniform method for adding control information that must be
sent reliably.
B) The reliable transfer extension is designed NOT to interfere with
the currently defined congestion control mechanisms within SCTP
and the network. This is accomplished by limiting when and how
often a reliable control chunk may be sent.
2. Conventions
The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD,
SHOULD NOT, RECOMMENDED, NOT RECOMMENDED, MAY, and OPTIONAL, when
they appear in this document, are to be interpreted as described in
RFC 2119 [RFC2119].
3. Chunk and Parameter Formats
This section specifies the two chunks that are used by the reliable
control chunk transfer. Each new chunk is detailed and described.
3.1 New Chunk Types
This section defines the two new Chunk types that will be used to
transfer reliable control information. Table 1 illustrates the two
new chunk types.
Chunk Type Chunk Name
--------------------------------------------------------------
11000001 Reliable Request Chunk (REL-REQ)
11000010 Reliable Request Acknowledgement Chunk (REL-ACK)
Table 1 - New Chunk types
It should be noted that the two reliable Chunk formats also call for
the receiver to report to the sender if it does not understand
either of the new chunk formats. This is accomplished by setting the
upper bit in the Chunk type as described in [RFC2960] section
3.2. The upper two bits in both chunk types are set to one. As
defined in [RFC2960] section 3.2, these upper bits set in this
manner will cause the receiver that does not understand these chunks
to skip these chunks and continue processing, but report in an
Operation Error Chunk using the 'Unrecognized Chunk Type' cause of
error.
Stewart et.al. [Page 2]
Internet draft Reliable SCTP Control Chunks February 2001
3.1.1 Reliable Request Chunk (REL-REQ)
This chunk is used to communicate to the remote endpoint reliable
information that must be acknowledged. The information that is being
transfered reliably is always in the form of a Tag-Length-Value
(TLV) as described in "3.2.1 Optional/Variable-length Parameter
Format" in [RFC2960].
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0xC1 | Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Rel-Request Correlation ID #1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| REL-REQ Parameter #1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ .... /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Rel-Request Correlation ID #N |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| REL-REQ Parameter #N |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Serial Number : 32 bits (unsigned integer)
This value represents a Serial Number for the Reliable Chunk. The
valid range of Serial Number is from 0 to 4294967295 (2**32 - 1).
Serial Numbers wrap back to 0 after reaching 4294967295.
Rel-Request Correlation ID: 32 bits (unsigned integer)
This is an opaque integer assigned by the sender to identify each
request parameter. It is in host byte order and is only meaningful
to the sender. The receiver of the REL-REQ will copy this 32 bit
value into the Rel-Request Correlation ID field of the REL-AC. The
sender of the REL-REQ can use this same value in the REL-ACK to find
which request the response is for.
REL-REQ Parameter: TLV format
Each piece of information that the sending endpoint wishes to
communicate reliably is incorporated in a TLV format. Multiple
REL-REQ Parameters may be included in a REL-REQ.
The REL-REQ Parameter Types are encoded such that the highest-order
two bits specify the action that must be taken if the processing
endpoint does not recognize the REL-REQ Parameter Type.
Stewart et.al. [Page 3]
Internet draft Reliable SCTP Control Chunks February 2001
The REL-REQ Parameter Types are encoded such that the highest-order
bit specifies the action that must be taken if the processing
endpoint does not recognize the REL-REQ Parameter Type.
00 - Reserved (Not Allowed).
01 - Stop processing this SCTP packet and discard it, do not process
any further chunks within it, and report the 'Unrecognized
Parameter Type' (in an SCTP Operational Error or SCTP Abort).
10 - Reserved (Not Allowed).
11 - Skip this REL-REQ parameter and continue processing but report
the unrecongized parameter in an 'Unrecognized Parameter Type'
(in an SCTP Operational Error or SCTP Abort).
3.1.2 Reliable Request Acknowledgement Chunk (REL-ACK)
This chunk is used by the receiver of a REL-REQ chunk to acknowledge
its reception. It carries zero or more error causes for any REL-REQ
Parameters that were not understood (based on the reporting bits as
defined in 3.1.1 or refused by the receiver.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0xC2 | Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Serial Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Rel-Request Correlation ID #1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| REL-REQ Parameter Response #1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ .... /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Rel-Request Correlation ID #N |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| REL-REQ Parameter Response #N |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Serial Number : 32 bits (unsigned integer)
This value represents the Serial Number for the Reliable Chunk that
was received to which this Chunk is acknowledgment of. This value is
copied from the received REL-REQ message.
Rel-Request Correlation ID: 32 bits (unsigned integer)
This value is copied from the REL-REQ Correlation ID received in the
REL-REQ. It is used by the receiver of the REL-ACK to identify which
REL-REQ parameter this response is associated with.
Stewart et.al. [Page 4]
Internet draft Reliable SCTP Control Chunks February 2001
REL-REQ Parameter Response : TLV format
The REL-REQ Parameter Error or response is used in the REL-ACK to
report errors. This MAY use the same Error Cause format as described
in section 3.3.10 of [RFC2960]. By default if a responder does not
include a an Error cause, for any requested TLV, a success is
indicated. Thus a sender of a REL-ACK MAY indicate complete success
of all TLV's in a REL-REQ by returning only the Chunk Type, Chunk
Flags, Chunk Length (set to 8) and the Serial Number.
REL-REQ Parameter Error Type Value
-------------------------------------------------
Error Cause TLV 49157 (0xC005)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 49157 | Length = Variable |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error Cause(s) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This parameter is used to "wrap" one or more standard error cause
normally found within an SCTP Operational Error or SCTP Abort (as
defined in [RFC2960]). The Error Cause(s) follow the format defined in
section 3.3.10 of [RFC2960].
New error causes may be defined according to the application which
is using the reliable chunk transfer mechanism. These error causes
would be primarily defined to be used as part of the REL-REQ
Parameter Error in the REL-ACK (as outlined above), but may be also
be used with an Operational Error or an Abort (as defined in
[RFC2960]).
4. Procedures
This section will lay out the procedures for the reliable chunk
transfer. Future SCTP extensions that wish to use the reliable chunk
transfer MUST NOT change the procedures of the chunk transfer
itself. Extensions SHOULD detail only procedures related to the
REL-REQ Parameters being defined by them.
4.1 Reliable Chunk Procedures
When an endpoint has reliable control information to be sent to the
remote endpoint it should do the following:
A1) Create a Reliable Request Chunk as defined in section 3.1.1. The
chunk should contain all of the TLV('s) of information necessary
to be sent to the remote endpoint, and unique correlation
identities for each request.
Stewart et.al. [Page 5]
Internet draft Reliable SCTP Control Chunks February 2001
A2) A serial number should be assigned to the Chunk. The serial
number should be a monotonically increasing number. All serial
numbers are defined to be initialized at the start of the
association to the same value as the Initial TSN.
A3) If no REL-REQ chunk is outstanding (un-acknowledged) with the
remote peer AND there is less than cwnd bytes of user data
outstanding send the chunk.
A4) Start a T-4 RTO timer, using the RTO value of the selected
destination address (normally the primary path see [RFC2960]
section 6.4 for details).
A5) When the REL-ACK which acknowledges the serial number last sent
arrives, stop the T-4 RTO timer and clear the appropriate
association and destination error counters as defined in
[RFC2960] section 8.1 and 8.2.
A6) Process all of the TLV's within the REL-ACK to find out
particular status information returned in the various requests
that were sent. Use the Correlation IDs to correlate the request
and the responses.
A7) Any TLV's with no response up to the first failed response MUST
be considered successful.
A8) Any items after a failed response are considered sucessful (if
not reported).
If the T-4 RTO timer expires the endpoint should do the following:
B1) Increment the error counter and perform path failure detection
on the appropriate destination address as defined in [RFC2960]
section 8.2.
B2) Increment the association error counter and perform endpoint
failure detection on the association as defined in [RFC2960]
section 8.1.
B3) Retransmit the REL-REQ chunk last sent and if possible choose an
alternate destination address (please refer to [RFC2960] section
6.4.1). An endpoint MUST NOT add new parameters to this chunk,
it MUST be the same (including its serial number) as the last
REL-REQ sent.
B4) Restart the T-4 RTO timer.
Note: That the the total number of retransmissions is limited by B2
above. If the maximum is reached the association will fail and enter
a CLOSED state (see [RFC2960] section 6.4.1 for details).
Stewart et.al. [Page 6]
Internet draft Reliable SCTP Control Chunks February 2001
4.1.1 Congestion Control of Reliable Chunks
In defining the reliable chunk transfer procedures it is essential
that these transfers MUST NOT cause congestion within the network.
To achieve this we place these restrictions on the transfer of
reliable chunks:
R1) One and only one REL-REQ Chunk MAY be in flight and
unacknowledged at any one time. If a sender, after sending a
reliable chunk, decides it needs to transfer another REL-REQ
Chunk, it MUST wait until the REL-ACK Chunk returns from the
previous Chunk before sending a subsequent REL-REQ. Note this
restriction binds each side, so at any time two REL-REQ may be
in-flight on any given association (one sent from each
endpoint).
R2) A REL-REQ MUST NOT be sent if there is no room in the current
cwnd. If there is room in the cwnd of the destination network
the Chunk may be sent regardless of the value of rwnd.
R3) A REL-REQ MUST carry only information to be used by the peer
SCTP Endpoint (not by the user application).
R4) A REL-REQ may be bundled with any other Chunk type except other
REL-REQ's.
R5) A REL-ACK may be bundled with any other Chunk type except other
REL-ACK's.
R6) Both REL-ACK and REL-REQ chunks MUST NOT be sent in any SCTP
state except ESTABLISHED.
R7) A REL-REQ and respective REL-ACK MUST NOT be larger than the
path MTU of the destination.
4.2 Upon reception of a REL-REQ Chunk.
When an endpoint receives a REL-REQ chunk from the remote peer it
should perform the following:
C1) Compare the value of the serial number to the value the endpoint
stored in a new association variable 'Peer-Serial-Number'. This
value MUST be initialized to the Initial TSN value minus 1.
C2) If the value found in the serial number is greater than the
value stored in the 'Peer-Serial-Number', the endpoint should:
V1) Process the TLV's contained within the Chunk performing the
appropriate actions as indicated by each TLV type. The
TLV's MUST be processed in order within the Chunk. In other
words if the sender puts 3 TLV's in one chunk the first TLV
(the one closest to the Chunk Header) in the Chunk MUST be
processed first. The next TLV in the chunk (the middle one)
would be processed second and finally the last TLV in the
Chunk would be processed last.
Stewart et.al. [Page 7]
Internet draft Reliable SCTP Control Chunks February 2001
V2) In processing the chunk, the receiver should build a
response message with the appropriate error TLV's, as
specified in the REL-REQ Parameter type bits for any REL-REQ
Parameter it does not understand. To indicate an
unrecognized parameter, parameter type 8 as defined in in
the INIT-ACK in 3.3.3 of [RFC2960] should be used. It may
also use the response to carry rejections for other reasons
such as resource shortages etc using the Error Cause TLV and
an appropriate error condition. It may also respond
postively with the Success TLV.
V3) All error responses must copy the Rel-Request Correlation ID
field received in the REL-REQ, from the TLV the TLV being
responded to, into the Rel-Request Correlation ID field. The
Rel-Request Correlation ID always preceeds the request TLV.
V4) After processing the entire Chunk, it MUST send all TLV's
for both unrecognized parameters and any other status TLV's
inside the REL-ACK chunk that acknowledges the arrival and
processing of the REL-REQ Chunk.
V5) Update the 'Peer-Serial-Number' to the value found in the
serial number field.
C3) If the value found in the serial number is less than or equal to
the value stored in the 'Peer-Serial-Number', the endpoint
should:
X1) Parse the REL-REQ Chunk TLV's but the endpoint MUST not take
any action on the TLV's parsed (since it has already
performed these actions).
X2) Build a response message with the appropriate response TLV's
as specified in the REL-REQ Parameter type bits, for any
parameter it does not understand or could not process.
X3) After parsing the entire Chunk, it MUST send any response
TLV errors and status with a REL-ACK chunk acknowledging the
arrival and processing of the REL-REQ Chunk.
X4) The endpoint MUST NOT update its 'Peer-Serial-Number'.
IMPLEMENTATION NOTE: As an optimization a receiver is allowed to
save the last REL-ACK for some predetermined period of time and
instead of re-processing the REL-REQ with the same serial number it
may jut retransmit the REL-ACK. It may wish to use the arrival of a
new serial number to discard the previously saved REL-ACK or any
other means it may choose to expire the saved REL-ACK.
C4) In both cases C2:V5 and C3:X3 the REL-ACK MUST be sent back to
the source address contained in the IP header of the REL-REQ
being responded to.
Stewart et.al. [Page 8]
Internet draft Reliable SCTP Control Chunks February 2001
5. Security Considerations
The reliable chunk passing mechanism itself does not add any
security considerations other than those addressed by the base level
SCTP protocol. However each new extension MAY result in new security
threats and each extension SHOULD make appropriate consideration of
these threats.
6. IANA considerations
Two new SCTP Chunk types are being allocated for use by this feature.
The assignment of new REL-REQ Parameter type codes is done through
an IETF Consensus action as defined in [RFC2434]. Documentation of
the new REL-REQ Parameter MUST contain the following information:
a) Name of the REL-REQ Parameter type.
b) Detailed description of the structure of the REL-REQ Parameter
field. This structure MUST conform to the general
type-length-value format described in Section 3.1.1.
c) Detailed definition of each component of the REL-REQ Parameter
value.
d) Detailed description of the intended use of this REL-REQ
Parameter type, and an indication of whether and under what
circumstances multiple instances of this REL-REQ Parameter type
may be found within the same Reliable Request chunk.
The assignment of new error causes carried in the REL-ACK is
outlined in [RFC2960] section 13.3.
7. Authors' Addresses
Randall R. Stewart Tel: +1-815-477-2127
Cisco Systems, Inc. EMail: rrs@cisco.com
8745 W. Higgins Road, Suite 200
Chicago, Ill 60631
USA
Qiaobing Xie Tel: +1-847-632-3028
Motorola, Inc. EMail: qxie1@email.mot.com
1501 W. Shure Drive, #2309
Arlington Heights, IL 60004
USA
Michael Tuexen Tel: +49-89-722-47210
SIEMENS AG EMail: Michael.Tuexen@icn.siemens.de
Hofmannstr. 51
81359 Munich
Germany
Ian Rytina Tel: +61-3-9301-6164
Ericsson Australia EMail:ian.rytina@ericsson.com
Stewart et.al. [Page 9]
Internet draft Reliable SCTP Control Chunks February 2001
37/360 Elizabeth Street
Melbourne, Victoria 3000
Australia
8. References
[RFC2960] R. R. Stewart, Q. Xie, K. Morneault, C. Sharp,
H. J. Schwarzbauer, T. Taylor, I. Rytina, M. Kalla, L. Zhang,
and, V. Paxson, "Stream Control Transmission Protocol," RFC
2960, October 2000.
[RFC2026] Bradner, S., "The Internet Standards Process -- Revision
3", RFC 2026, October 1996.
[RFC2119] Bradner, S. "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2402] S. Kent, R. Atkinson., "IP Authentication Header.", RFC
2402, November 1998.
[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 2434, October
1998.
This Internet Draft expires in 6 months from February, 2001
Stewart et.al. [Page 10]
| PAFTECH AB 2003-2026 | 2026-04-24 11:06:23 |