Table of Contents
1. Introduction
1.1. Motivation
1.2. Architectural View of SCTP
1.3. Key Terms
1.4. Abbreviations
1.5. Functional View of SCTP
1.5.1. Association Startup and Takedown
1.5.2. Sequenced Delivery within Streams
1.5.3. User Data Fragmentation
1.5.4. Acknowledgement and Congestion Avoidance
1.5.5. Chunk Bundling
1.5.6. Packet Validation
1.5.7. Path Management
1.6. Serial Number Arithmetic
1.7. Changes from RFC 2960
2. Conventions
3. SCTP Packet Format
3.1. SCTP Common Header Field Descriptions
3.2. Chunk Field Descriptions
3.2.1. Optional/Variable-Length Parameter Format
3.2.2. Reporting of Unrecognized Parameters
3.3. SCTP Chunk Definitions
3.3.1. Payload Data (DATA) (0)
3.3.2. Initiation (INIT) (1)
3.3.2.1. Optional/Variable-Length Parameters in INIT
3.3.3. Initiation Acknowledgement (INIT ACK) (2)
3.3.3.1. Optional or Variable-Length Parameters
3.3.4. Selective Acknowledgement (SACK) (3)
3.3.5. Heartbeat Request (HEARTBEAT) (4)
3.3.6. Heartbeat Acknowledgement (HEARTBEAT ACK) (5)
3.3.7. Abort Association (ABORT) (6)
3.3.8. Shutdown Association (SHUTDOWN) (7)
3.3.9. Shutdown Acknowledgement (SHUTDOWN ACK) (8)
3.3.10. Operation Error (ERROR) (9)
3.3.10.1. Invalid Stream Identifier (1)
3.3.10.2. Missing Mandatory Parameter (2)
3.3.10.3. Stale Cookie Error (3)
3.3.10.4. Out of Resource (4)
3.3.10.5. Unresolvable Address (5)
3.3.10.6. Unrecognized Chunk Type (6)
3.3.10.7. Invalid Mandatory Parameter (7)
3.3.10.8. Unrecognized Parameters (8)
3.3.10.9. No User Data (9)
3.3.10.10. Cookie Received While Shutting Down (10)
3.3.10.11. Restart of an Association with New Addresses (11)
3.3.10.12. User-Initiated Abort (12)
3.3.10.13. Protocol Violation (13)
3.3.11. Cookie Echo (COOKIE ECHO) (10)
3.3.12. Cookie Acknowledgement (COOKIE ACK) (11)
3.3.13. Shutdown Complete (SHUTDOWN COMPLETE) (14)
4. SCTP Association State Diagram
5. Association Initialization
5.1. Normal Establishment of an Association
5.1.1. Handle Stream Parameters
5.1.2. Handle Address Parameters
5.1.3. Generating State Cookie
5.1.4. State Cookie Processing
5.1.5. State Cookie Authentication
5.1.6. An Example of Normal Association Establishment
5.2. Handle Duplicate or Unexpected INIT, INIT ACK, COOKIE ECHO, and COOKIE ACK
5.2.1. INIT Received in COOKIE-WAIT or COOKIE-ECHOED State (Item B)
5.2.2. Unexpected INIT in States Other than CLOSED, COOKIE-ECHOED, COOKIE-WAIT, and SHUTDOWN-ACK-SENT
5.2.3. Unexpected INIT ACK
5.2.4. Handle a COOKIE ECHO when a TCB Exists
5.2.4.1. An Example of a Association Restart
5.2.5. Handle Duplicate COOKIE-ACK.
5.2.6. Handle Stale COOKIE Error
5.3. Other Initialization Issues
5.3.1. Selection of Tag Value
5.4. Path Verification
6. User Data Transfer
6.1. Transmission of DATA Chunks
6.2. Acknowledgement on Reception of DATA Chunks
6.2.1. Processing a Received SACK
6.3. Management of Retransmission Timer
6.3.1. RTO Calculation
6.3.2. Retransmission Timer Rules
6.3.3. Handle T3-rtx Expiration
6.4. Multi-Homed SCTP Endpoints
6.4.1. Failover from an Inactive Destination Address
6.5. Stream Identifier and Stream Sequence Number
6.6. Ordered and Unordered Delivery
6.7. Report Gaps in Received DATA TSNs
6.8. CRC32c Checksum Calculation
6.9. Fragmentation and Reassembly
6.10. Bundling
7. Congestion Control
7.1. SCTP Differences from TCP Congestion Control
7.2. SCTP Slow-Start and Congestion Avoidance
7.2.1. Slow-Start
7.2.2. Congestion Avoidance
7.2.3. Congestion Control
7.2.4. Fast Retransmit on Gap Reports
7.3. Path MTU Discovery
8. Fault Management
8.1. Endpoint Failure Detection
8.2. Path Failure Detection
8.3. Path Heartbeat
8.4. Handle "Out of the Blue" Packets
8.5. Verification Tag
8.5.1. Exceptions in Verification Tag Rules
9. Termination of Association
9.1. Abort of an Association
9.2. Shutdown of an Association
10. Interface with Upper Layer
10.1. ULP-to-SCTP
10.2. SCTP-to-ULP
11. Security Considerations
11.1. Security Objectives
11.2. SCTP Responses to Potential Threats
11.2.1. Countering Insider Attacks
11.2.2. Protecting against Data Corruption in the Network
11.2.3. Protecting Confidentiality
11.2.4. Protecting against Blind Denial-of-Service Attacks
11.2.4.1. Flooding
11.2.4.2. Blind Masquerade
11.2.4.3. Improper Monopolization of Services
11.3. SCTP Interactions with Firewalls
11.4. Protection of Non-SCTP-Capable Hosts
12. Network Management Considerations
13. Recommended Transmission Control Block (TCB) Parameters
13.1. Parameters Necessary for the SCTP Instance
13.2. Parameters Necessary per Association (i.e., the TCB)
13.3. Per Transport Address Data
13.4. General Parameters Needed
14. IANA Considerations
14.1. IETF-Defined Chunk Extension
14.2. IETF-Defined Chunk Parameter Extension
14.3. IETF-Defined Additional Error Causes
14.4. Payload Protocol Identifiers
14.5. Port Numbers Registry
15. Suggested SCTP Protocol Parameter Values
16. Acknowledgements
Appendix A. Explicit Congestion Notification
Appendix B. CRC32c Checksum Calculation
Appendix C. ICMP Handling
References
Normative References
Informative References