📄 rfc2960.txt
字号:
Network Working Group R. StewartRequest for Comments: 2960 Q. XieCategory: Standards Track Motorola K. Morneault C. Sharp Cisco H. Schwarzbauer Siemens T. Taylor Nortel Networks I. Rytina Ericsson M. Kalla Telcordia L. Zhang UCLA V. Paxson ACIRI October 2000 Stream Control Transmission ProtocolStatus 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.Copyright Notice Copyright (C) The Internet Society (2000). All Rights Reserved.Abstract This document describes the Stream Control Transmission Protocol (SCTP). SCTP is designed to transport 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,Stewart, et al. Standards Track [Page 1]RFC 2960 Stream Control Transmission Protocol October 2000 -- 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, et al. Standards Track [Page 2]RFC 2960 Stream Control Transmission Protocol October 2000Table of Contents 1. Introduction.................................................. 5 1.1 Motivation.................................................. 6 1.2 Architectural View of SCTP.................................. 6 1.3 Functional View of SCTP..................................... 7 1.3.1 Association Startup and Takedown........................ 8 1.3.2 Sequenced Delivery within Streams....................... 9 1.3.3 User Data Fragmentation................................. 9 1.3.4 Acknowledgement and Congestion Avoidance................ 9 1.3.5 Chunk Bundling ......................................... 10 1.3.6 Packet Validation....................................... 10 1.3.7 Path Management......................................... 11 1.4 Key Terms................................................... 11 1.5 Abbreviations............................................... 15 1.6 Serial Number Arithmetic.................................... 15 2. Conventions.................................................... 16 3. SCTP packet Format............................................ 16 3.1 SCTP Common Header Field Descriptions....................... 17 3.2 Chunk Field Descriptions.................................... 18 3.2.1 Optional/Variable-length Parameter Format............... 20 3.3 SCTP Chunk Definitions...................................... 21 3.3.1 Payload Data (DATA)..................................... 22 3.3.2 Initiation (INIT)....................................... 24 3.3.2.1 Optional or Variable Length Parameters.............. 26 3.3.3 Initiation Acknowledgement (INIT ACK)................... 30 3.3.3.1 Optional or Variable Length Parameters.............. 33 3.3.4 Selective Acknowledgement (SACK)........................ 33 3.3.5 Heartbeat Request (HEARTBEAT)........................... 37 3.3.6 Heartbeat Acknowledgement (HEARTBEAT ACK)............... 38 3.3.7 Abort Association (ABORT)............................... 39 3.3.8 Shutdown Association (SHUTDOWN)......................... 40 3.3.9 Shutdown Acknowledgement (SHUTDOWN ACK)................. 40 3.3.10 Operation Error (ERROR)................................ 41 3.3.10.1 Invalid Stream Identifier.......................... 42 3.3.10.2 Missing Mandatory Parameter........................ 43 3.3.10.3 Stale Cookie Error................................. 43 3.3.10.4 Out of Resource.................................... 44 3.3.10.5 Unresolvable Address............................... 44 3.3.10.6 Unrecognized Chunk Type............................ 44 3.3.10.7 Invalid Mandatory Parameter........................ 45 3.3.10.8 Unrecognized Parameters............................ 45 3.3.10.9 No User Data....................................... 46 3.3.10.10 Cookie Received While Shutting Down............... 46 3.3.11 Cookie Echo (COOKIE ECHO).............................. 46 3.3.12 Cookie Acknowledgement (COOKIE ACK).................... 47 3.3.13 Shutdown Complete (SHUTDOWN COMPLETE).................. 48 4. SCTP Association State Diagram................................. 48Stewart, et al. Standards Track [Page 3]RFC 2960 Stream Control Transmission Protocol October 2000 5. Association Initialization..................................... 52 5.1 Normal Establishment of an Association...................... 52 5.1.1 Handle Stream Parameters................................ 54 5.1.2 Handle Address Parameters............................... 54 5.1.3 Generating State Cookie................................. 56 5.1.4 State Cookie Processing................................. 57 5.1.5 State Cookie Authentication............................. 57 5.1.6 An Example of Normal Association Establishment.......... 58 5.2 Handle Duplicate or unexpected INIT, INIT ACK, COOKIE ECHO, and COOKIE ACK.............................................. 60 5.2.1 Handle Duplicate INIT in COOKIE-WAIT or COOKIE-ECHOED States................................. 60 5.2.2 Unexpected INIT in States Other than CLOSED, COOKIE-ECHOED, COOKIE-WAIT and SHUTDOWN-ACK-SENT........ 61 5.2.3 Unexpected INIT ACK..................................... 61 5.2.4 Handle a COOKIE ECHO when a TCB exists.................. 62 5.2.4.1 An Example of a Association Restart................. 64 5.2.5 Handle Duplicate COOKIE ACK............................. 66 5.2.6 Handle Stale COOKIE Error............................... 66 5.3 Other Initialization Issues................................. 67 5.3.1 Selection of Tag Value.................................. 67 6. User Data Transfer............................................. 67 6.1 Transmission of DATA Chunks................................. 69 6.2 Acknowledgement on Reception of DATA Chunks................. 70 6.2.1 Tracking Peer's Receive Buffer Space.................... 73 6.3 Management Retransmission Timer............................. 75 6.3.1 RTO Calculation......................................... 75 6.3.2 Retransmission Timer Rules.............................. 76 6.3.3 Handle T3-rtx Expiration................................ 77 6.4 Multi-homed SCTP Endpoints.................................. 78 6.4.1 Failover from Inactive Destination Address.............. 79 6.5 Stream Identifier and Stream Sequence Number................ 80 6.6 Ordered and Unordered Delivery.............................. 80 6.7 Report Gaps in Received DATA TSNs........................... 81 6.8 Adler-32 Checksum Calculation............................... 82 6.9 Fragmentation............................................... 83 6.10 Bundling .................................................. 84 7. Congestion Control .......................................... 85 7.1 SCTP Differences from TCP Congestion Control................ 85 7.2 SCTP Slow-Start and Congestion Avoidance.................... 87 7.2.1 Slow-Start.............................................. 87 7.2.2 Congestion Avoidance.................................... 89 7.2.3 Congestion Control...................................... 89 7.2.4 Fast Retransmit on Gap Reports.......................... 90 7.3 Path MTU Discovery.......................................... 91 8. Fault Management.............................................. 92 8.1 Endpoint Failure Detection.................................. 92 8.2 Path Failure Detection...................................... 92Stewart, et al. Standards Track [Page 4]RFC 2960 Stream Control Transmission Protocol October 2000 8.3 Path Heartbeat.............................................. 93 8.4 Handle "Out of the blue" Packets............................ 95 8.5 Verification Tag............................................ 96 8.5.1 Exceptions in Verification Tag Rules.................... 97 9. Termination of Association..................................... 98 9.1 Abort of an Association..................................... 98 9.2 Shutdown of an Association.................................. 98 10. Interface with Upper Layer....................................101 10.1 ULP-to-SCTP................................................101 10.2 SCTP-to-ULP................................................111 11. Security Considerations.......................................114 11.1 Security Objectives........................................114 11.2 SCTP Responses To Potential Threats........................115 11.2.1 Countering Insider Attacks.............................115 11.2.2 Protecting against Data Corruption in the Network......115 11.2.3 Protecting Confidentiality.............................115 11.2.4 Protecting against Blind Denial of Service Attacks.....116 11.2.4.1 Flooding...........................................116 11.2.4.2 Blind Masquerade...................................118 11.2.4.3 Improper Monopolization of Services................118 11.3 Protection against Fraud and Repudiation...................119 12. Recommended Transmission Control Block (TCB) Parameters.......120 12.1 Parameters necessary for the SCTP instance.................120 12.2 Parameters necessary per association (i.e. the TCB)........120 12.3 Per Transport Address Data.................................122 12.4 General Parameters Needed..................................123 13. IANA Considerations...........................................123 13.1 IETF-defined Chunk Extension...............................123 13.2 IETF-defined Chunk Parameter Extension.....................124 13.3 IETF-defined Additional Error Causes.......................124 13.4 Payload Protocol Identifiers...............................125 14. Suggested SCTP Protocol Parameter Values......................125 15. Acknowledgements..............................................126 16. Authors' Addresses............................................126 17. References....................................................128 18. Bibliography..................................................129 Appendix A .......................................................131 Appendix B .......................................................132 Full Copyright Statement .........................................1341. Introduction This section explains the reasoning behind the development of the Stream Control Transmission Protocol (SCTP), the services it offers, and the basic concepts needed to understand the detailed description of the protocol.Stewart, et al. Standards Track [Page 5]RFC 2960 Stream Control Transmission Protocol October 20001.1 Motivation TCP [RFC793] has performed immense service as the primary means of reliable data transfer in IP networks. However, an increasing number of recent applications have found TCP too limiting, and have incorporated their own reliable data transfer protocol on top of UDP [RFC768]. The limitations which users have wished to bypass include the following: -- TCP provides both reliable data transfer and strict order-of- transmission delivery of data. Some applications need reliable transfer without sequence maintenance, while others would be satisfied with partial ordering of the data. In both of these cases the head-of-line blocking offered by TCP causes unnecessary delay. -- The stream-oriented nature of TCP is often an inconvenience. Applications must add their own record marking to delineate their messages, and must make explicit use of the push facility to ensure that a complete message is transferred in a reasonable time.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -