Skip to main content

RFC 4960 - Stream Control Transmission Protocol (SCTP)

Published: September 2007
Status: Standards Track
Author: R. Stewart (Ed.)
Obsoletes: RFC 2960, RFC 3309


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
  • 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.


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)
      • 3.3.2 Initiation (INIT)
      • 3.3.3 Initiation Acknowledgement (INIT ACK)
      • 3.3.4 Selective Acknowledgement (SACK)
      • 3.3.5 Heartbeat Request (HEARTBEAT)
      • 3.3.6 Heartbeat Acknowledgement (HEARTBEAT ACK)
      • 3.3.7 Abort Association (ABORT)
      • 3.3.8 Shutdown Association (SHUTDOWN)
      • 3.3.9 Shutdown Acknowledgement (SHUTDOWN ACK)
      • 3.3.10 Operation Error (ERROR)
      • 3.3.11 Cookie Echo (COOKIE ECHO)
      • 3.3.12 Cookie Acknowledgement (COOKIE ACK)
      • 3.3.13 Shutdown Complete (SHUTDOWN COMPLETE)
  • 4. SCTP Association State Diagram

  • 5. Association Initialization

    • 5.1 Normal Establishment of an Association
    • 5.2 Handle Duplicate or Unexpected INIT, INIT ACK, COOKIE ECHO
    • 5.3 Other Initialization Issues
    • 5.4 Path Verification
  • 6. User Data Transfer

    • 6.1 Transmission of DATA Chunks
    • 6.2 Acknowledgement on Reception of DATA Chunks
    • 6.3 Management of Retransmission Timer
    • 6.4 Multi-Homed SCTP Endpoints
    • 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.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
  • 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.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
    • 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

Appendices

References