Network Working Group R. Stewart, Ed.
Request for Comments: 4960 September 2007
Obsoletes: 2960, 3309
Category: Standards Track
Stream Control Transmission Protocol
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract
This document obsoletes RFC 2960 and RFC 3309. It describes the
Stream Control Transmission Protocol (SCTP). SCTP is designed to
transport Public Switched Telephone Network (PSTN) signaling messages
over IP networks, but is capable of broader applications.
SCTP is a reliable transport protocol operating on top of a
connectionless packet network such as IP. It offers the following
services to its users:
-- acknowledged error-free non-duplicated transfer of user data,
-- data fragmentation to conform to discovered path MTU size,
-- sequenced delivery of user messages within multiple streams, with
an option for order-of-arrival delivery of individual user
messages,
-- optional bundling of multiple user messages into a single SCTP
packet, and
-- network-level fault tolerance through supporting of multi-homing
at either or both ends of an association.
The design of SCTP includes appropriate congestion avoidance behavior
and resistance to flooding and masquerade attacks.
Stewart Standards Track [Page 1]
RFC 4960 Stream Control Transmission Protocol September 2007
Table of Contents
1. Introduction ....................................................5
1.1. Motivation .................................................5
1.2. Architectural View of SCTP .................................6
1.3. Key Terms ..................................................6
1.4. Abbreviations .............................................10
1.5. Functional View of SCTP ...................................10
1.5.1. Association Startup and Takedown ...................11
1.5.2. Sequenced Delivery within Streams ..................12
1.5.3. User Data Fragmentation ............................12
1.5.4. Acknowledgement and Congestion Avoidance ...........12
1.5.5. Chunk Bundling .....................................13
1.5.6. Packet Validation ..................................13
1.5.7. Path Management ....................................13
1.6. Serial Number Arithmetic ..................................14
1.7. Changes from RFC 2960 .....................................15
2. Conventions ....................................................15
3. SCTP Packet Format .............................................15
3.1. SCTP Common Header Field Descriptions .....................16
3.2. Chunk Field Descriptions ..................................17
3.2.1. Optional/Variable-Length Parameter Format ..........19
3.2.2. Reporting of Unrecognized Parameters ...............21
3.3. SCTP Chunk Definitions ....................................21
3.3.1. Payload Data (DATA) (0) ............................22
3.3.2. Initiation (INIT) (1) ..............................24
3.3.2.1. Optional/Variable-Length
Parameters in INIT ........................27
3.3.3. Initiation Acknowledgement (INIT ACK) (2) ..........30
3.3.3.1. Optional or Variable-Length Parameters ....33
3.3.4. Selective Acknowledgement (SACK) (3) ...............34
3.3.5. Heartbeat Request (HEARTBEAT) (4) ..................38
3.3.6. Heartbeat Acknowledgement (HEARTBEAT ACK) (5) ......39
3.3.7. Abort Association (ABORT) (6) ......................40
3.3.8. Shutdown Association (SHUTDOWN) (7) ................41
3.3.9. Shutdown Acknowledgement (SHUTDOWN ACK) (8) ........41
3.3.10. Operation Error (ERROR) (9) .......................42
3.3.10.1. Invalid Stream Identifier (1) ............44
3.3.10.2. Missing Mandatory Parameter (2) ..........44
3.3.10.3. Stale Cookie Error (3) ...................45
3.3.10.4. Out of Resource (4) ......................45
3.3.10.5. Unresolvable Address (5) .................46
3.3.10.6. Unrecognized Chunk Type (6) ..............46
3.3.10.7. Invalid Mandatory Parameter (7) ..........47