summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8540.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8540.txt')
-rw-r--r--doc/rfc/rfc8540.txt5267
1 files changed, 5267 insertions, 0 deletions
diff --git a/doc/rfc/rfc8540.txt b/doc/rfc/rfc8540.txt
new file mode 100644
index 0000000..2685310
--- /dev/null
+++ b/doc/rfc/rfc8540.txt
@@ -0,0 +1,5267 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) R. Stewart
+Request for Comments: 8540 Netflix, Inc.
+Category: Informational M. Tuexen
+ISSN: 2070-1721 Muenster Univ. of Appl. Sciences
+ M. Proshin
+ Ericsson
+ February 2019
+
+
+ Stream Control Transmission Protocol:
+ Errata and Issues in RFC 4960
+
+Abstract
+
+ This document is a compilation of issues found since the publication
+ of RFC 4960 in September 2007, based on experience with implementing,
+ testing, and using the Stream Control Transmission Protocol (SCTP)
+ along with the suggested fixes. This document provides deltas to RFC
+ 4960 and is organized in a time-ordered way. The issues are listed
+ in the order in which they were brought up. Because some text is
+ changed several times, the last delta in the text is the one that
+ should be applied. In addition to the deltas, a description of each
+ problem and the details of the solution for each are also provided.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Not all documents
+ approved by the IESG are candidates for any level of Internet
+ Standard; see Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8540.
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 1]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+Copyright Notice
+
+ Copyright (c) 2019 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
+ 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4
+ 3. Corrections to RFC 4960 . . . . . . . . . . . . . . . . . . . 4
+ 3.1. Path Error Counter Threshold Handling . . . . . . . . . . 4
+ 3.2. Upper-Layer Protocol Shutdown Request Handling . . . . . 5
+ 3.3. Registration of New Chunk Types . . . . . . . . . . . . . 6
+ 3.4. Variable Parameters for INIT Chunks . . . . . . . . . . . 7
+ 3.5. CRC32c Sample Code on 64-Bit Platforms . . . . . . . . . 8
+ 3.6. Endpoint Failure Detection . . . . . . . . . . . . . . . 9
+ 3.7. Data Transmission Rules . . . . . . . . . . . . . . . . . 10
+ 3.8. T1-Cookie Timer . . . . . . . . . . . . . . . . . . . . . 11
+ 3.9. Miscellaneous Typos . . . . . . . . . . . . . . . . . . . 12
+ 3.10. CRC32c Sample Code . . . . . . . . . . . . . . . . . . . 19
+ 3.11. partial_bytes_acked after T3-rtx Expiration . . . . . . . 19
+ 3.12. Order of Adjustments of partial_bytes_acked and cwnd . . 20
+ 3.13. HEARTBEAT ACK and the Association Error Counter . . . . . 21
+ 3.14. Path for Fast Retransmission . . . . . . . . . . . . . . 22
+ 3.15. Transmittal in Fast Recovery . . . . . . . . . . . . . . 23
+ 3.16. Initial Value of ssthresh . . . . . . . . . . . . . . . . 24
+ 3.17. Automatically CONFIRMED Addresses . . . . . . . . . . . . 25
+ 3.18. Only One Packet after Retransmission Timeout . . . . . . 26
+ 3.19. INIT ACK Path for INIT in COOKIE-WAIT State . . . . . . . 27
+ 3.20. Zero Window Probing and Unreachable Primary Path . . . . 28
+ 3.21. Normative Language in Section 10 of RFC 4960 . . . . . . 29
+ 3.22. Increase of partial_bytes_acked in Congestion Avoidance . 32
+ 3.23. Inconsistent Handling of Notifications . . . . . . . . . 33
+ 3.24. SACK.Delay Not Listed as a Protocol Parameter . . . . . . 37
+ 3.25. Processing of Chunks in an Incoming SCTP Packet . . . . . 39
+ 3.26. Increasing the cwnd in the Congestion Avoidance Phase . . 41
+ 3.27. Refresh of cwnd and ssthresh after Idle Period . . . . . 43
+ 3.28. Window Updates after Receiver Window Opens Up . . . . . . 45
+
+
+
+Stewart, et al. Informational [Page 2]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ 3.29. Path of DATA and Reply Chunks . . . . . . . . . . . . . . 46
+ 3.30. "Outstanding Data", "Flightsize", and "Data in Flight"
+ Key Terms . . . . . . . . . . . . . . . . . . . . . . . . 47
+ 3.31. Degradation of cwnd due to Max.Burst . . . . . . . . . . 49
+ 3.32. Reduction of RTO.Initial . . . . . . . . . . . . . . . . 50
+ 3.33. Ordering of Bundled SACK and ERROR Chunks . . . . . . . . 51
+ 3.34. Undefined Parameter Returned by RECEIVE Primitive . . . . 52
+ 3.35. DSCP Changes . . . . . . . . . . . . . . . . . . . . . . 53
+ 3.36. Inconsistent Handling of ICMPv4 and ICMPv6 Messages . . . 55
+ 3.37. Handling of Soft Errors . . . . . . . . . . . . . . . . . 56
+ 3.38. Honoring cwnd . . . . . . . . . . . . . . . . . . . . . . 57
+ 3.39. Zero Window Probing . . . . . . . . . . . . . . . . . . . 58
+ 3.40. Updating References regarding ECN . . . . . . . . . . . . 60
+ 3.41. Host Name Address Parameter Deprecated . . . . . . . . . 62
+ 3.42. Conflicting Text regarding the 'Supported Address Types'
+ Parameter . . . . . . . . . . . . . . . . . . . . . . . . 66
+ 3.43. Integration of RFC 6096 . . . . . . . . . . . . . . . . . 67
+ 3.44. Integration of RFC 6335 . . . . . . . . . . . . . . . . . 70
+ 3.45. Integration of RFC 7053 . . . . . . . . . . . . . . . . . 72
+ 3.46. CRC32c Code Improvements . . . . . . . . . . . . . . . . 76
+ 3.47. Clarification of Gap Ack Blocks in SACK Chunks . . . . . 87
+ 3.48. Handling of SSN Wraparounds . . . . . . . . . . . . . . . 89
+ 3.49. Update to RFC 2119 Boilerplate Text . . . . . . . . . . . 90
+ 3.50. Removal of Text (Previously Missed in RFC 4960) . . . . . 91
+ 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 91
+ 5. Security Considerations . . . . . . . . . . . . . . . . . . . 92
+ 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 92
+ 6.1. Normative References . . . . . . . . . . . . . . . . . . 92
+ 6.2. Informative References . . . . . . . . . . . . . . . . . 92
+ Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 94
+ Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 94
+
+1. Introduction
+
+ This document contains a compilation of all defects for [RFC4960]
+ ("Stream Control Transmission Protocol") that were found up until the
+ publication of this document. These defects may be of an editorial
+ or technical nature. This document may be thought of as a companion
+ document to be used in the implementation of the Stream Control
+ Transmission Protocol (SCTP) to clarify errors in the original SCTP
+ document.
+
+ This document provides a history of the changes that will be compiled
+ into a bis document for [RFC4960]. It is structured similarly to
+ [RFC4460].
+
+
+
+
+
+
+Stewart, et al. Informational [Page 3]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ Each error will be detailed within this document in the form of:
+
+ o The problem description,
+
+ o The text quoted from [RFC4960],
+
+ o The replacement text that should be placed into an upcoming bis
+ document, and
+
+ o A description of the solution.
+
+ Note that when reading this document one must use care to ensure that
+ a field or item is not updated later on within the document. Since
+ this document is a historical record of the sequential changes that
+ have been found necessary at various interop events and through
+ discussion on the Transport Area Working Group mailing list, the last
+ delta in the text is the one that should be applied.
+
+2. Conventions
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+3. Corrections to RFC 4960
+
+3.1. Path Error Counter Threshold Handling
+
+3.1.1. Description of the Problem
+
+ The handling of the 'Path.Max.Retrans' parameter is described in
+ Sections 8.2 and 8.3 of [RFC4960] in an inconsistent way. Whereas
+ Section 8.2 of [RFC4960] says that a path is marked inactive when the
+ path error counter exceeds the threshold, Section 8.3 of [RFC4960]
+ says that the path is marked inactive when the path error counter
+ reaches the threshold.
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 1440.
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 4]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.1.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 8.3)
+ ---------
+
+ When the value of this counter reaches the protocol parameter
+ 'Path.Max.Retrans', the endpoint should mark the corresponding
+ destination address as inactive if it is not so marked, and may also
+ optionally report to the upper layer the change of reachability of
+ this destination address. After this, the endpoint should continue
+ HEARTBEAT on this destination address but should stop increasing the
+ counter.
+
+ ---------
+ New text: (Section 8.3)
+ ---------
+
+ When the value of this counter exceeds the protocol parameter
+ 'Path.Max.Retrans', the endpoint SHOULD mark the corresponding
+ destination address as inactive if it is not so marked and MAY also
+ optionally report to the upper layer the change in reachability of
+ this destination address. After this, the endpoint SHOULD continue
+ HEARTBEAT on this destination address but SHOULD stop increasing the
+ counter.
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.23.
+
+3.1.3. Solution Description
+
+ The intended state change should happen when the threshold is
+ exceeded.
+
+3.2. Upper-Layer Protocol Shutdown Request Handling
+
+3.2.1. Description of the Problem
+
+ Section 9.2 of [RFC4960] describes the handling of received SHUTDOWN
+ chunks in the SHUTDOWN-RECEIVED state instead of the handling of
+ shutdown requests from its upper layer in this state.
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 1574.
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 5]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.2.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 9.2)
+ ---------
+
+ Once an endpoint has reached the SHUTDOWN-RECEIVED state, it MUST NOT
+ send a SHUTDOWN in response to a ULP request, and should discard
+ subsequent SHUTDOWN chunks.
+
+ ---------
+ New text: (Section 9.2)
+ ---------
+
+ Once an endpoint has reached the SHUTDOWN-RECEIVED state, it MUST
+ ignore ULP shutdown requests but MUST continue responding to SHUTDOWN
+ chunks from its peer.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.2.3. Solution Description
+
+ The text never intended that the SCTP endpoint ignore SHUTDOWN chunks
+ from its peer. If it did, the endpoints could never gracefully
+ terminate associations in some cases.
+
+3.3. Registration of New Chunk Types
+
+3.3.1. Description of the Problem
+
+ Section 14.1 of [RFC4960] should deal with new chunk types; however,
+ the text only refers to parameter types.
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 2592.
+
+3.3.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 14.1)
+ ---------
+
+ The assignment of new chunk parameter type codes is done through an
+ IETF Consensus action, as defined in [RFC2434]. Documentation of the
+ chunk parameter MUST contain the following information:
+
+
+
+
+
+Stewart, et al. Informational [Page 6]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 14.1)
+ ---------
+
+ The assignment of new chunk type codes is done through an IETF
+ Consensus action, as defined in [RFC8126]. Documentation for the
+ chunk type MUST contain the following information:
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.43.
+
+3.3.3. Solution Description
+
+ The new text refers to chunk types as intended and changes the
+ reference to [RFC8126].
+
+3.4. Variable Parameters for INIT Chunks
+
+3.4.1. Description of the Problem
+
+ In Section 3.3.2 of [RFC4960], newlines in wrong places break the
+ layout of the table of variable parameters for the INIT chunk.
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 3291 and Errata ID 3804.
+
+3.4.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 3.3.2)
+ ---------
+
+ Variable Parameters Status Type Value
+ -------------------------------------------------------------
+ IPv4 Address (Note 1) Optional 5 IPv6 Address
+ (Note 1) Optional 6 Cookie Preservative
+ Optional 9 Reserved for ECN Capable (Note 2) Optional
+ 32768 (0x8000) Host Name Address (Note 3) Optional
+ 11 Supported Address Types (Note 4) Optional 12
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 7]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 3.3.2)
+ ---------
+
+ Variable Parameters Status Type Value
+ -------------------------------------------------------------
+ IPv4 Address (Note 1) Optional 5
+ IPv6 Address (Note 1) Optional 6
+ Cookie Preservative Optional 9
+ Reserved for ECN Capable (Note 2) Optional 32768 (0x8000)
+ Host Name Address (Note 3) Optional 11
+ Supported Address Types (Note 4) Optional 12
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.4.3. Solution Description
+
+ The formatting of the table is corrected.
+
+3.5. CRC32c Sample Code on 64-Bit Platforms
+
+3.5.1. Description of the Problem
+
+ The sample code for CRC32c computation, as provided in [RFC4960],
+ assumes that a variable of type unsigned long uses 32 bits. This is
+ not true on some 64-bit platforms (for example, platforms that
+ use LP64).
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 3423.
+
+3.5.2. Text Changes to the Document
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ unsigned long
+ generate_crc32c(unsigned char *buffer, unsigned int length)
+ {
+ unsigned int i;
+ unsigned long crc32 = ~0L;
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 8]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Appendix C)
+ ---------
+
+ unsigned long
+ generate_crc32c(unsigned char *buffer, unsigned int length)
+ {
+ unsigned int i;
+ unsigned long crc32 = 0xffffffffL;
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.10 and again in Section 3.46.
+
+3.5.3. Solution Description
+
+ The new text uses 0xffffffffL instead of ~0L; this gives the same
+ value on platforms using 32 bits or 64 bits for variables of type
+ unsigned long.
+
+3.6. Endpoint Failure Detection
+
+3.6.1. Description of the Problem
+
+ The handling of the association error counter defined in Section 8.1
+ of [RFC4960] can result in an association failure even if the path
+ used for data transmission is available (but idle).
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 3788.
+
+3.6.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 8.1)
+ ---------
+
+ An endpoint shall keep a counter on the total number of consecutive
+ retransmissions to its peer (this includes retransmissions to all the
+ destination transport addresses of the peer if it is multi-homed),
+ including unacknowledged HEARTBEAT chunks.
+
+ ---------
+ New text: (Section 8.1)
+ ---------
+
+ An endpoint SHOULD keep a counter on the total number of consecutive
+ retransmissions to its peer (this includes data retransmissions to
+ all the destination transport addresses of the peer if it is
+
+
+
+Stewart, et al. Informational [Page 9]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ multi-homed), including the number of unacknowledged HEARTBEAT chunks
+ observed on the path that is currently used for data transfer.
+ Unacknowledged HEARTBEAT chunks observed on paths different from the
+ path currently used for data transfer SHOULD NOT increment the
+ association error counter, as this could lead to association closure
+ even if the path that is currently used for data transfer is
+ available (but idle).
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.23.
+
+3.6.3. Solution Description
+
+ A more refined handling of the association error counter is defined.
+
+3.7. Data Transmission Rules
+
+3.7.1. Description of the Problem
+
+ When integrating the changes to Section 6.1 A) of [RFC2960] as
+ described in Section 2.15.2 of [RFC4460], some text was duplicated
+ and became the final paragraph of Section 6.1 A) of [RFC4960].
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 4071.
+
+3.7.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.1 A))
+ ---------
+
+ The sender MUST also have an algorithm for sending new DATA chunks to
+ avoid silly window syndrome (SWS) as described in [RFC0813]. The
+ algorithm can be similar to the one described in Section 4.2.3.4 of
+ [RFC1122].
+
+ However, regardless of the value of rwnd (including if it is 0), the
+ data sender can always have one DATA chunk in flight to the receiver
+ if allowed by cwnd (see rule B below). This rule allows the sender
+ to probe for a change in rwnd that the sender missed due to the SACK
+ having been lost in transit from the data receiver to the data
+ sender.
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 10]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 6.1 A))
+ ---------
+
+ The sender MUST also have an algorithm for sending new DATA chunks to
+ avoid silly window syndrome (SWS) as described in [RFC1122]. The
+ algorithm can be similar to the algorithm described in
+ Section 4.2.3.4 of [RFC1122].
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.7.3. Solution Description
+
+ The last paragraph of Section 6.1 A) is removed, as had been intended
+ in Section 2.15.2 of [RFC4460].
+
+3.8. T1-Cookie Timer
+
+3.8.1. Description of the Problem
+
+ Figure 4 of [RFC4960] illustrates the SCTP association setup.
+ However, it incorrectly shows that the T1-init timer is used in the
+ COOKIE-ECHOED state, whereas the T1-cookie timer should have been
+ used instead.
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 4400.
+
+3.8.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 5.1.6, Figure 4)
+ ---------
+
+ COOKIE ECHO [Cookie_Z] ------\
+ (Start T1-init timer) \
+ (Enter COOKIE-ECHOED state) \---> (build TCB enter ESTABLISHED
+ state)
+ /---- COOKIE-ACK
+ /
+ (Cancel T1-init timer, <-----/
+ Enter ESTABLISHED state)
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 11]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 5.1.6, Figure 4)
+ ---------
+
+ COOKIE ECHO [Cookie_Z] ------\
+ (Start T1-cookie timer) \
+ (Enter COOKIE-ECHOED state) \---> (build TCB, enter ESTABLISHED
+ state)
+ /---- COOKIE-ACK
+ /
+ (Cancel T1-cookie timer, <---/
+ enter ESTABLISHED state)
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.9.
+
+3.8.3. Solution Description
+
+ The figure is changed such that the T1-cookie timer is used instead
+ of the T1-init timer.
+
+3.9. Miscellaneous Typos
+
+3.9.1. Description of the Problem
+
+ While processing [RFC4960], some typos were not caught.
+
+ One typo was reported as an errata for [RFC4960] with Errata ID 5003.
+
+3.9.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 1.6)
+ ---------
+
+ Transmission Sequence Numbers wrap around when they reach 2**32 - 1.
+ That is, the next TSN a DATA chunk MUST use after transmitting TSN =
+ 2*32 - 1 is TSN = 0.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 12]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 1.6)
+ ---------
+
+ Transmission Sequence Numbers wrap around when they reach 2**32 - 1.
+ That is, the next TSN a DATA chunk MUST use after transmitting
+ TSN = 2**32 - 1 is TSN = 0.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 3.3.10.9)
+ ---------
+
+ No User Data: This error cause is returned to the originator of a
+
+ DATA chunk if a received DATA chunk has no user data.
+
+ ---------
+ New text: (Section 3.3.10.9)
+ ---------
+
+ No User Data: This error cause is returned to the originator of a
+ DATA chunk if a received DATA chunk has no user data.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 6.7, Figure 9)
+ ---------
+
+ Endpoint A Endpoint Z {App
+ sends 3 messages; strm 0} DATA [TSN=6,Strm=0,Seq=2] ----------
+ -----> (ack delayed) (Start T3-rtx timer)
+
+ DATA [TSN=7,Strm=0,Seq=3] --------> X (lost)
+
+ DATA [TSN=8,Strm=0,Seq=4] ---------------> (gap detected,
+ immediately send ack)
+ /----- SACK [TSN Ack=6,Block=1,
+ / Start=2,End=2]
+ <-----/ (remove 6 from out-queue,
+ and mark 7 as "1" missing report)
+
+
+
+
+
+
+Stewart, et al. Informational [Page 13]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 6.7, Figure 9)
+ ---------
+
+ Endpoint A Endpoint Z
+ {App sends 3 messages; strm 0}
+ DATA [TSN=6,Strm=0,Seq=2] ---------------> (ack delayed)
+ (Start T3-rtx timer)
+
+ DATA [TSN=7,Strm=0,Seq=3] --------> X (lost)
+
+ DATA [TSN=8,Strm=0,Seq=4] ---------------> (gap detected,
+ immediately send ack)
+ /----- SACK [TSN Ack=6,Block=1,
+ / Start=2,End=2]
+ <-----/
+ (remove 6 from out-queue,
+ and mark 7 as "1" missing report)
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 6.10)
+ ---------
+
+ An endpoint bundles chunks by simply including multiple chunks in one
+ outbound SCTP packet. The total size of the resultant IP datagram,
+
+ including the SCTP packet and IP headers, MUST be less that or equal
+ to the current Path MTU.
+
+ ---------
+ New text: (Section 6.10)
+ ---------
+
+ An endpoint bundles chunks by simply including multiple chunks in one
+ outbound SCTP packet. The total size of the resultant IP datagram,
+ including the SCTP packet and IP headers, MUST be less than or equal
+ to the current Path MTU (PMTU).
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 14]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Section 10.1 O))
+ ---------
+
+ o Receive Unacknowledged Message
+
+ Format: RECEIVE_UNACKED(data retrieval id, buffer address, buffer
+ size, [,stream id] [, stream sequence number] [,partial
+ flag] [,payload protocol-id])
+
+ ---------
+ New text: (Section 10.1 O))
+ ---------
+
+ O) Receive Unacknowledged Message
+
+ Format: RECEIVE_UNACKED(data retrieval id, buffer address, buffer
+ size [,stream id] [,stream sequence number] [,partial
+ flag] [,payload protocol-id])
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 10.1 M))
+ ---------
+
+ M) Set Protocol Parameters
+
+ Format: SETPROTOCOLPARAMETERS(association id,
+ [,destination transport address,]
+ protocol parameter list)
+
+ ---------
+ New text: (Section 10.1 M))
+ ---------
+
+ M) Set Protocol Parameters
+
+ Format: SETPROTOCOLPARAMETERS(association id,
+ [destination transport address,]
+ protocol parameter list)
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 15]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ ICMP2) An implementation MAY ignore all ICMPv6 messages where the
+ type field is not "Destination Unreachable", "Parameter
+ Problem",, or "Packet Too Big".
+
+ ---------
+ New text: (Appendix C)
+ ---------
+
+ ICMP2) An implementation MAY ignore all ICMPv6 messages where the
+ type field is not "Destination Unreachable", "Parameter
+ Problem", or "Packet Too Big".
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ ICMP7) If the ICMP message is either a v6 "Packet Too Big" or a v4
+ "Fragmentation Needed", an implementation MAY process this
+ information as defined for PATH MTU discovery.
+
+ ---------
+ New text: (Appendix C)
+ ---------
+
+ ICMP7) If the ICMP message is either a v6 "Packet Too Big" or a v4
+ "Fragmentation Needed", an implementation MAY process this
+ information as defined for PMTU discovery.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 5.4)
+ ---------
+
+ 2) For the receiver of the COOKIE ECHO, the only CONFIRMED address
+ is the one to which the INIT-ACK was sent.
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 16]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 5.4)
+ ---------
+
+ 2) For the receiver of the COOKIE ECHO, the only CONFIRMED address
+ is the address to which the INIT ACK was sent.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 5.1.6, Figure 4)
+ ---------
+
+ COOKIE ECHO [Cookie_Z] ------\
+ (Start T1-init timer) \
+ (Enter COOKIE-ECHOED state) \---> (build TCB enter ESTABLISHED
+ state)
+ /---- COOKIE-ACK
+ /
+ (Cancel T1-init timer, <-----/
+ Enter ESTABLISHED state)
+
+ ---------
+ New text: (Section 5.1.6, Figure 4)
+ ---------
+
+ COOKIE ECHO [Cookie_Z] ------\
+ (Start T1-cookie timer) \
+ (Enter COOKIE-ECHOED state) \---> (build TCB, enter ESTABLISHED
+ state)
+ /---- COOKIE ACK
+ /
+ (Cancel T1-cookie timer, <---/
+ enter ESTABLISHED state)
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.8. It is in final form and is not
+ further updated in this document.
+
+ ---------
+ Old text: (Section 5.2.5)
+ ---------
+
+ 5.2.5. Handle Duplicate COOKIE-ACK.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 17]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 5.2.5)
+ ---------
+
+ 5.2.5. Handle Duplicate COOKIE ACK.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 8.3)
+ ---------
+
+ By default, an SCTP endpoint SHOULD monitor the reachability of the
+ idle destination transport address(es) of its peer by sending a
+ HEARTBEAT chunk periodically to the destination transport
+ address(es). HEARTBEAT sending MAY begin upon reaching the
+ ESTABLISHED state and is discontinued after sending either SHUTDOWN
+ or SHUTDOWN-ACK. A receiver of a HEARTBEAT MUST respond to a
+ HEARTBEAT with a HEARTBEAT-ACK after entering the COOKIE-ECHOED state
+ (INIT sender) or the ESTABLISHED state (INIT receiver), up until
+ reaching the SHUTDOWN-SENT state (SHUTDOWN sender) or the SHUTDOWN-
+ ACK-SENT state (SHUTDOWN receiver).
+
+ ---------
+ New text: (Section 8.3)
+ ---------
+
+ By default, an SCTP endpoint SHOULD monitor the reachability of the
+ idle destination transport address(es) of its peer by sending a
+ HEARTBEAT chunk periodically to the destination transport
+ address(es). HEARTBEAT sending MAY begin upon reaching the
+ ESTABLISHED state and is discontinued after sending either SHUTDOWN
+ or SHUTDOWN ACK. A receiver of a HEARTBEAT MUST respond to a
+ HEARTBEAT with a HEARTBEAT ACK after entering the COOKIE-ECHOED state
+ (INIT sender) or the ESTABLISHED state (INIT receiver), up until
+ reaching the SHUTDOWN-SENT state (SHUTDOWN sender) or the
+ SHUTDOWN-ACK-SENT state (SHUTDOWN receiver).
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.9.3. Solution Description
+
+ Several typos have been fixed.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 18]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.10. CRC32c Sample Code
+
+3.10.1. Description of the Problem
+
+ The CRC32c computation is described in Appendix B of [RFC4960].
+ However, the corresponding sample code and its explanation appear at
+ the end of Appendix C of [RFC4960], which deals with ICMP handling.
+
+3.10.2. Text Changes to the Document
+
+ The text in Appendix C of [RFC4960], starting with the following
+ sentence, needs to be moved to the end of Appendix B.
+
+ The following non-normative sample code is taken from an
+ open-source CRC generator [WILLIAMS93], using the "mirroring"
+ technique and yielding a lookup table for SCTP CRC32c with
+ 256 entries, each 32 bits wide.
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.5. It is further updated in
+ Section 3.46.
+
+3.10.3. Solution Description
+
+ The text is moved to the appropriate location.
+
+3.11. partial_bytes_acked after T3-rtx Expiration
+
+3.11.1. Description of the Problem
+
+ Section 7.2.3 of [RFC4960] explicitly states that partial_bytes_acked
+ should be reset to 0 after packet loss detection from selective
+ acknowledgment (SACK), but this information is not accounted for in
+ the case of T3-rtx timer expiration.
+
+3.11.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.3)
+ ---------
+
+ When the T3-rtx timer expires on an address, SCTP should perform slow
+ start by:
+
+ ssthresh = max(cwnd/2, 4*MTU)
+ cwnd = 1*MTU
+
+
+
+
+
+Stewart, et al. Informational [Page 19]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 7.2.3)
+ ---------
+
+ When the T3-rtx timer expires on an address, SCTP SHOULD perform slow
+ start by:
+
+ ssthresh = max(cwnd/2, 4*MTU)
+ cwnd = 1*MTU
+ partial_bytes_acked = 0
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.11.3. Solution Description
+
+ The new text specifies that partial_bytes_acked should be reset to 0
+ after T3-rtx timer expiration.
+
+3.12. Order of Adjustments of partial_bytes_acked and cwnd
+
+3.12.1. Description of the Problem
+
+ Section 7.2.2 of [RFC4960] likely implies the wrong order of
+ adjustments applied to partial_bytes_acked and cwnd in the congestion
+ avoidance phase.
+
+3.12.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.2)
+ ---------
+
+ o When partial_bytes_acked is equal to or greater than cwnd and
+ before the arrival of the SACK the sender had cwnd or more bytes
+ of data outstanding (i.e., before arrival of the SACK, flightsize
+ was greater than or equal to cwnd), increase cwnd by MTU, and
+ reset partial_bytes_acked to (partial_bytes_acked - cwnd).
+
+ ---------
+ New text: (Section 7.2.2)
+ ---------
+
+ o (1) when partial_bytes_acked is equal to or greater than cwnd and
+ (2) before the arrival of the SACK the sender had cwnd or more
+ bytes of data outstanding (i.e., before the arrival of the SACK,
+
+
+
+
+
+Stewart, et al. Informational [Page 20]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ flightsize was greater than or equal to cwnd), partial_bytes_acked
+ is reset to (partial_bytes_acked - cwnd). Next, cwnd is increased
+ by 1*MTU.
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.26.
+
+3.12.3. Solution Description
+
+ The new text defines the exact order of adjustments of
+ partial_bytes_acked and cwnd in the congestion avoidance phase.
+
+3.13. HEARTBEAT ACK and the Association Error Counter
+
+3.13.1. Description of the Problem
+
+ Sections 8.1 and 8.3 of [RFC4960] prescribe that the receiver of a
+ HEARTBEAT ACK must reset the association overall error count. In
+ some circumstances, e.g., when a router discards DATA chunks but not
+ HEARTBEAT chunks due to the larger size of the DATA chunk, it might
+ be better to not clear the association error counter on reception of
+ the HEARTBEAT ACK and reset it only on reception of the SACK to avoid
+ stalling the association.
+
+3.13.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 8.1)
+ ---------
+
+ The counter shall be reset each time a DATA chunk sent to that peer
+ endpoint is acknowledged (by the reception of a SACK) or a HEARTBEAT
+ ACK is received from the peer endpoint.
+
+ ---------
+ New text: (Section 8.1)
+ ---------
+
+ The counter MUST be reset each time a DATA chunk sent to that peer
+ endpoint is acknowledged (by the reception of a SACK). When a
+ HEARTBEAT ACK is received from the peer endpoint, the counter SHOULD
+ also be reset. The receiver of the HEARTBEAT ACK MAY choose not to
+ clear the counter if there is outstanding data on the association.
+ This allows for handling the possible difference in reachability
+ based on DATA chunks and HEARTBEAT chunks.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+Stewart, et al. Informational [Page 21]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Section 8.3)
+ ---------
+
+ Upon the receipt of the HEARTBEAT ACK, the sender of the HEARTBEAT
+ should clear the error counter of the destination transport address
+ to which the HEARTBEAT was sent, and mark the destination transport
+ address as active if it is not so marked. The endpoint may
+ optionally report to the upper layer when an inactive destination
+ address is marked as active due to the reception of the latest
+ HEARTBEAT ACK. The receiver of the HEARTBEAT ACK must also clear the
+ association overall error count as well (as defined in Section 8.1).
+
+ ---------
+ New text: (Section 8.3)
+ ---------
+
+ Upon the receipt of the HEARTBEAT ACK, the sender of the HEARTBEAT
+ MUST clear the error counter of the destination transport address to
+ which the HEARTBEAT was sent and mark the destination transport
+ address as active if it is not so marked. The endpoint MAY
+ optionally report to the upper layer when an inactive destination
+ address is marked as active due to the reception of the latest
+ HEARTBEAT ACK. The receiver of the HEARTBEAT ACK SHOULD also clear
+ the association overall error count (as defined in Section 8.1).
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.23.
+
+3.13.3. Solution Description
+
+ The new text provides the possibility of not resetting the
+ association overall error count when a HEARTBEAT ACK is received if
+ there are valid reasons for not doing so.
+
+3.14. Path for Fast Retransmission
+
+3.14.1. Description of the Problem
+
+ [RFC4960] clearly describes where to retransmit data that is timed
+ out when the peer is multi-homed, but the same is not stated for fast
+ retransmissions.
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 22]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.14.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.4)
+ ---------
+
+ Furthermore, when its peer is multi-homed, an endpoint SHOULD try to
+ retransmit a chunk that timed out to an active destination transport
+ address that is different from the last destination address to which
+ the DATA chunk was sent.
+
+ ---------
+ New text: (Section 6.4)
+ ---------
+
+ Furthermore, when its peer is multi-homed, an endpoint SHOULD try to
+ retransmit a chunk that timed out to an active destination transport
+ address that is different from the last destination address to which
+ the DATA chunk was sent.
+
+ When its peer is multi-homed, an endpoint SHOULD send fast
+ retransmissions to the same destination transport address to which
+ the original data was sent. If the primary path has been changed and
+ the original data was sent to the old primary path before the Fast
+ Retransmit, the implementation MAY send it to the new primary path.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.14.3. Solution Description
+
+ The new text clarifies where to send fast retransmissions.
+
+3.15. Transmittal in Fast Recovery
+
+3.15.1. Description of the Problem
+
+ The Fast Retransmit on Gap Reports algorithm intends that only the
+ very first packet may be sent regardless of cwnd in the Fast Recovery
+ phase, but rule 3) in Section 7.2.4 of [RFC4960] misses this
+ clarification.
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 23]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.15.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.4)
+ ---------
+
+ 3) Determine how many of the earliest (i.e., lowest TSN) DATA chunks
+ marked for retransmission will fit into a single packet, subject
+ to constraint of the path MTU of the destination transport
+ address to which the packet is being sent. Call this value K.
+ Retransmit those K DATA chunks in a single packet. When a Fast
+ Retransmit is being performed, the sender SHOULD ignore the value
+ of cwnd and SHOULD NOT delay retransmission for this single
+ packet.
+
+ ---------
+ New text: (Section 7.2.4)
+ ---------
+
+ 3) If not in Fast Recovery, determine how many of the earliest
+ (i.e., lowest TSN) DATA chunks marked for retransmission will fit
+ into a single packet, subject to constraint of the PMTU of
+ the destination transport address to which the packet is being
+ sent. Call this value K. Retransmit those K DATA chunks in a
+ single packet. When a Fast Retransmit is being performed, the
+ sender SHOULD ignore the value of cwnd and SHOULD NOT delay
+ retransmission for this single packet.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.15.3. Solution Description
+
+ The new text explicitly specifies that only the first packet in the
+ Fast Recovery phase be sent and that the cwnd limitations be
+ disregarded.
+
+3.16. Initial Value of ssthresh
+
+3.16.1. Description of the Problem
+
+ The initial value of ssthresh should be set arbitrarily high. Using
+ the advertised receiver window of the peer is inappropriate if the
+ peer increases its window after the handshake. Furthermore, a higher
+ requirement level needs to be used, since not following the advice
+ may result in performance problems.
+
+
+
+
+
+Stewart, et al. Informational [Page 24]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.16.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.1)
+ ---------
+
+ o The initial value of ssthresh MAY be arbitrarily high (for
+ example, implementations MAY use the size of the receiver
+ advertised window).
+
+ ---------
+ New text: (Section 7.2.1)
+ ---------
+
+ o The initial value of ssthresh SHOULD be arbitrarily high (e.g.,
+ the size of the largest possible advertised window).
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.16.3. Solution Description
+
+ The same value as the value suggested in [RFC5681], Section 3.1, is
+ now used as an appropriate initial value. Also, the same requirement
+ level is used.
+
+3.17. Automatically CONFIRMED Addresses
+
+3.17.1. Description of the Problem
+
+ The Path Verification procedure of [RFC4960] prescribes that any
+ address passed to the sender of the INIT by its upper layer be
+ automatically CONFIRMED. This, however, is unclear if (1) only
+ addresses in the request to initiate association establishment or
+ (2) any addresses provided by the upper layer in any requests (e.g.,
+ in 'Set Primary') are considered.
+
+3.17.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 5.4)
+ ---------
+
+ 1) Any address passed to the sender of the INIT by its upper layer
+ is automatically considered to be CONFIRMED.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 25]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 5.4)
+ ---------
+
+ 1) Any addresses passed to the sender of the INIT by its upper layer
+ in the request to initialize an association are automatically
+ considered to be CONFIRMED.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.17.3. Solution Description
+
+ The new text clarifies that only addresses provided by the upper
+ layer in the request to initialize an association are automatically
+ CONFIRMED.
+
+3.18. Only One Packet after Retransmission Timeout
+
+3.18.1. Description of the Problem
+
+ [RFC4960] is not completely clear when it describes data transmission
+ after T3-rtx timer expiration. Section 7.2.1 of [RFC4960] does not
+ specify how many packets are allowed to be sent after T3-rtx timer
+ expiration if more than one packet fits into cwnd. At the same time,
+ Section 7.2.3 of [RFC4960] has text without normative language saying
+ that SCTP should ensure that no more than one packet will be in
+ flight after T3-rtx timer expiration until successful
+ acknowledgement. The text is therefore inconsistent.
+
+3.18.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.1)
+ ---------
+
+ o The initial cwnd after a retransmission timeout MUST be no more
+ than 1*MTU.
+
+ ---------
+ New text: (Section 7.2.1)
+ ---------
+
+ o The initial cwnd after a retransmission timeout MUST be no more
+ than 1*MTU, and only one packet is allowed to be in flight until
+ successful acknowledgement.
+
+
+
+
+
+Stewart, et al. Informational [Page 26]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.18.3. Solution Description
+
+ The new text clearly specifies that only one packet is allowed to be
+ sent after T3-rtx timer expiration until successful acknowledgement.
+
+3.19. INIT ACK Path for INIT in COOKIE-WAIT State
+
+3.19.1. Description of the Problem
+
+ In the case of an INIT received in the COOKIE-WAIT state, [RFC4960]
+ prescribes that an INIT ACK be sent to the same destination address
+ to which the original INIT has been sent. [RFC4960] does not address
+ the possibility of the upper layer providing multiple remote IP
+ addresses while requesting the association establishment. If the
+ upper layer has provided multiple IP addresses and only a subset of
+ these addresses are supported by the peer, then the destination
+ address of the original INIT may be absent in the incoming INIT and
+ sending an INIT ACK to that address is useless.
+
+3.19.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 5.2.1)
+ ---------
+
+ Upon receipt of an INIT in the COOKIE-WAIT state, an endpoint MUST
+ respond with an INIT ACK using the same parameters it sent in its
+ original INIT chunk (including its Initiate Tag, unchanged). When
+ responding, the endpoint MUST send the INIT ACK back to the same
+ address that the original INIT (sent by this endpoint) was sent.
+
+ ---------
+ New text: (Section 5.2.1)
+ ---------
+
+ Upon receipt of an INIT in the COOKIE-WAIT state, an endpoint MUST
+ respond with an INIT ACK using the same parameters it sent in its
+ original INIT chunk (including its Initiate Tag, unchanged). When
+ responding, the following rules MUST be applied:
+
+ 1) The INIT ACK MUST only be sent to an address passed by the upper
+ layer in the request to initialize the association.
+
+ 2) The INIT ACK MUST only be sent to an address reported in the
+ incoming INIT.
+
+
+
+Stewart, et al. Informational [Page 27]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ 3) The INIT ACK SHOULD be sent to the source address of the received
+ INIT.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.19.3. Solution Description
+
+ The new text requires sending an INIT ACK to a destination address
+ that is passed by the upper layer and reported in the incoming INIT.
+ If the source address of the INIT meets these conditions, sending the
+ INIT ACK to the source address of the INIT is the preferred behavior.
+
+3.20. Zero Window Probing and Unreachable Primary Path
+
+3.20.1. Description of the Problem
+
+ Section 6.1 of [RFC4960] states that when sending zero window probes,
+ SCTP should neither increment the association counter nor increment
+ the destination address error counter if it continues to receive new
+ packets from the peer. However, the reception of new packets from
+ the peer does not guarantee the peer's reachability, and if the
+ destination address becomes unreachable during zero window probing,
+ SCTP cannot get an updated rwnd until it switches the destination
+ address for probes.
+
+3.20.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.1 A))
+ ---------
+
+ If the sender continues to receive new packets from the receiver
+ while doing zero window probing, the unacknowledged window probes
+ should not increment the error counter for the association or any
+ destination transport address. This is because the receiver MAY keep
+ its window closed for an indefinite time. Refer to Section 6.2 on
+ the receiver behavior when it advertises a zero window.
+
+ ---------
+ New text: (Section 6.1 A))
+ ---------
+
+ If the sender continues to receive SACKs from the peer while doing
+ zero window probing, the unacknowledged window probes SHOULD NOT
+ increment the error counter for the association or any destination
+
+
+
+
+
+Stewart, et al. Informational [Page 28]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ transport address. This is because the receiver could keep its
+ window closed for an indefinite time. Section 6.2 describes the
+ receiver behavior when it advertises a zero window.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.20.3. Solution Description
+
+ The new text clarifies that if the receiver continues to send SACKs,
+ the sender of probes should not increment the error counter of the
+ association and the destination address even if the SACKs do not
+ acknowledge the probes.
+
+3.21. Normative Language in Section 10 of RFC 4960
+
+3.21.1. Description of the Problem
+
+ Section 10 of [RFC4960] is informative. Therefore, normative
+ language such as MUST and MAY cannot be used there. However, there
+ are several places in Section 10 of [RFC4960] where MUST and MAY
+ are used.
+
+3.21.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 10.1 E))
+ ---------
+
+ o no-bundle flag - instructs SCTP not to bundle this user data with
+ other outbound DATA chunks. SCTP MAY still bundle even when this
+ flag is present, when faced with network congestion.
+
+ ---------
+ New text: (Section 10.1 E))
+ ---------
+
+ o no-bundle flag - instructs SCTP not to bundle this user data with
+ other outbound DATA chunks. When faced with network congestion,
+ SCTP may still bundle the data, even when this flag is present.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 29]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Section 10.1 G))
+ ---------
+
+ o Stream Sequence Number - the Stream Sequence Number assigned by
+ the sending SCTP peer.
+
+ o partial flag - if this returned flag is set to 1, then this
+ Receive contains a partial delivery of the whole message. When
+ this flag is set, the stream id and Stream Sequence Number MUST
+ accompany this receive. When this flag is set to 0, it indicates
+ that no more deliveries will be received for this Stream Sequence
+ Number.
+
+ ---------
+ New text: (Section 10.1 G))
+ ---------
+
+ o stream sequence number - the Stream Sequence Number assigned by
+ the sending SCTP peer.
+
+ o partial flag - if this returned flag is set to 1, then this
+ primitive contains a partial delivery of the whole message. When
+ this flag is set, the stream id and stream sequence number must
+ accompany this primitive. When this flag is set to 0, it
+ indicates that no more deliveries will be received for this stream
+ sequence number.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 10.1 N))
+ ---------
+
+ o Stream Sequence Number - this value is returned indicating the
+ Stream Sequence Number that was associated with the message.
+
+ o partial flag - if this returned flag is set to 1, then this
+ message is a partial delivery of the whole message. When this
+ flag is set, the stream id and Stream Sequence Number MUST
+ accompany this receive. When this flag is set to 0, it indicates
+ that no more deliveries will be received for this Stream Sequence
+ Number.
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 30]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 10.1 N))
+ ---------
+
+ o stream sequence number - this value is returned indicating the
+ Stream Sequence Number that was associated with the message.
+
+ o partial flag - if this returned flag is set to 1, then this
+ message is a partial delivery of the whole message. When this
+ flag is set, the stream id and stream sequence number must
+ accompany this primitive. When this flag is set to 0, it
+ indicates that no more deliveries will be received for this stream
+ sequence number.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 10.1 O))
+ ---------
+
+ o Stream Sequence Number - this value is returned indicating the
+ Stream Sequence Number that was associated with the message.
+
+ o partial flag - if this returned flag is set to 1, then this
+ message is a partial delivery of the whole message. When this
+ flag is set, the stream id and Stream Sequence Number MUST
+ accompany this receive. When this flag is set to 0, it indicates
+ that no more deliveries will be received for this Stream Sequence
+ Number.
+
+ ---------
+ New text: (Section 10.1 O))
+ ---------
+
+ o stream sequence number - this value is returned indicating the
+ Stream Sequence Number that was associated with the message.
+
+ o partial flag - if this returned flag is set to 1, then this
+ message is a partial delivery of the whole message. When this
+ flag is set, the stream id and stream sequence number must
+ accompany this primitive. When this flag is set to 0, it
+ indicates that no more deliveries will be received for this stream
+ sequence number.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+Stewart, et al. Informational [Page 31]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.21.3. Solution Description
+
+ The normative language is removed from Section 10. In addition, the
+ consistency of the text has been improved.
+
+3.22. Increase of partial_bytes_acked in Congestion Avoidance
+
+3.22.1. Description of the Problem
+
+ Two issues have been discovered in the text in Section 7.2.2 of
+ [RFC4960] regarding partial_bytes_acked handling:
+
+ o If the Cumulative TSN Ack Point is not advanced but the SACK chunk
+ acknowledges new TSNs in the Gap Ack Blocks, these newly
+ acknowledged TSNs are not considered for partial_bytes_acked even
+ though these TSNs were successfully received by the peer.
+
+ o Duplicate TSNs are not considered in partial_bytes_acked even
+ though they confirm that the DATA chunks were successfully
+ received by the peer.
+
+3.22.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.2)
+ ---------
+
+ o Whenever cwnd is greater than ssthresh, upon each SACK arrival
+ that advances the Cumulative TSN Ack Point, increase
+ partial_bytes_acked by the total number of bytes of all new chunks
+ acknowledged in that SACK including chunks acknowledged by the new
+ Cumulative TSN Ack and by Gap Ack Blocks.
+
+ ---------
+ New text: (Section 7.2.2)
+ ---------
+
+ o Whenever cwnd is greater than ssthresh, upon each SACK arrival,
+ increase partial_bytes_acked by the total number of bytes of all
+ new chunks acknowledged in that SACK, including chunks
+ acknowledged by the new Cumulative TSN Ack, by Gap Ack Blocks,
+ and by the number of bytes of duplicated chunks reported in
+ Duplicate TSNs.
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.26.
+
+
+
+
+
+Stewart, et al. Informational [Page 32]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.22.3. Solution Description
+
+ In the new text, partial_bytes_acked is increased by TSNs reported as
+ duplicated, as well as TSNs newly acknowledged in Gap Ack Blocks,
+ even if the Cumulative TSN Ack Point is not advanced.
+
+3.23. Inconsistent Handling of Notifications
+
+3.23.1. Description of the Problem
+
+ [RFC4960] uses inconsistent normative and non-normative language when
+ describing rules for sending notifications to the upper layer. For
+ example, Section 8.2 of [RFC4960] says that when a destination
+ address becomes inactive due to an unacknowledged DATA chunk or
+ HEARTBEAT chunk, SCTP SHOULD send a notification to the upper layer;
+ however, Section 8.3 of [RFC4960] says that when a destination
+ address becomes inactive due to an unacknowledged HEARTBEAT chunk,
+ SCTP may send a notification to the upper layer.
+
+ These inconsistent descriptions need to be corrected.
+
+3.23.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 8.1)
+ ---------
+
+ An endpoint shall keep a counter on the total number of consecutive
+ retransmissions to its peer (this includes retransmissions to all the
+ destination transport addresses of the peer if it is multi-homed),
+ including unacknowledged HEARTBEAT chunks.
+
+ ---------
+ New text: (Section 8.1)
+ ---------
+
+ An endpoint SHOULD keep a counter on the total number of consecutive
+ retransmissions to its peer (this includes data retransmissions to
+ all the destination transport addresses of the peer if it is
+ multi-homed), including the number of unacknowledged HEARTBEAT chunks
+ observed on the path that is currently used for data transfer.
+ Unacknowledged HEARTBEAT chunks observed on paths different from the
+ path currently used for data transfer SHOULD NOT increment the
+ association error counter, as this could lead to association closure
+ even if the path that is currently used for data transfer is
+ available (but idle). If the value of this counter exceeds the limit
+ indicated in the protocol parameter 'Association.Max.Retrans', the
+ endpoint SHOULD consider the peer endpoint unreachable and SHALL stop
+
+
+
+Stewart, et al. Informational [Page 33]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ transmitting any more data to it (and thus the association enters the
+ CLOSED state). In addition, the endpoint SHOULD report the failure
+ to the upper layer and optionally report back all outstanding user
+ data remaining in its outbound queue. The association is
+ automatically closed when the peer endpoint becomes unreachable.
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.6. It is in final form and is not
+ further updated in this document.
+
+ ---------
+ Old text: (Section 8.2)
+ ---------
+
+ When an outstanding TSN is acknowledged or a HEARTBEAT sent to that
+ address is acknowledged with a HEARTBEAT ACK, the endpoint shall
+ clear the error counter of the destination transport address to which
+ the DATA chunk was last sent (or HEARTBEAT was sent). When the peer
+ endpoint is multi-homed and the last chunk sent to it was a
+ retransmission to an alternate address, there exists an ambiguity as
+ to whether or not the acknowledgement should be credited to the
+ address of the last chunk sent. However, this ambiguity does not
+ seem to bear any significant consequence to SCTP behavior. If this
+ ambiguity is undesirable, the transmitter may choose not to clear the
+ error counter if the last chunk sent was a retransmission.
+
+ ---------
+ New text: (Section 8.2)
+ ---------
+
+ When an outstanding TSN is acknowledged or a HEARTBEAT sent to that
+ address is acknowledged with a HEARTBEAT ACK, the endpoint SHOULD
+ clear the error counter of the destination transport address to which
+ the DATA chunk was last sent (or HEARTBEAT was sent) and SHOULD also
+ report to the upper layer when an inactive destination address is
+ marked as active. When the peer endpoint is multi-homed and the last
+ chunk sent to it was a retransmission to an alternate address, there
+ exists an ambiguity as to whether or not the acknowledgement could be
+ credited to the address of the last chunk sent. However, this
+ ambiguity does not seem to have significant consequences for SCTP
+ behavior. If this ambiguity is undesirable, the transmitter MAY
+ choose not to clear the error counter if the last chunk sent was a
+ retransmission.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+Stewart, et al. Informational [Page 34]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Section 8.3)
+ ---------
+
+ When the value of this counter reaches the protocol parameter
+ 'Path.Max.Retrans', the endpoint should mark the corresponding
+ destination address as inactive if it is not so marked, and may also
+ optionally report to the upper layer the change of reachability of
+ this destination address. After this, the endpoint should continue
+ HEARTBEAT on this destination address but should stop increasing the
+ counter.
+
+ ---------
+ New text: (Section 8.3)
+ ---------
+
+ When the value of this counter exceeds the protocol parameter
+ 'Path.Max.Retrans', the endpoint SHOULD mark the corresponding
+ destination address as inactive if it is not so marked and SHOULD
+ also report to the upper layer the change in reachability of this
+ destination address. After this, the endpoint SHOULD continue
+ HEARTBEAT on this destination address but SHOULD stop increasing the
+ counter.
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.1. It is in final form and is not
+ further updated in this document.
+
+ ---------
+ Old text: (Section 8.3)
+ ---------
+
+ Upon the receipt of the HEARTBEAT ACK, the sender of the HEARTBEAT
+ should clear the error counter of the destination transport address
+ to which the HEARTBEAT was sent, and mark the destination transport
+ address as active if it is not so marked. The endpoint may
+ optionally report to the upper layer when an inactive destination
+ address is marked as active due to the reception of the latest
+ HEARTBEAT ACK. The receiver of the HEARTBEAT ACK must also clear the
+ association overall error count as well (as defined in Section 8.1).
+
+ ---------
+ New text: (Section 8.3)
+ ---------
+
+ Upon the receipt of the HEARTBEAT ACK, the sender of the HEARTBEAT
+ SHOULD clear the error counter of the destination transport address
+ to which the HEARTBEAT was sent and mark the destination transport
+
+
+
+Stewart, et al. Informational [Page 35]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ address as active if it is not so marked. The endpoint SHOULD report
+ to the upper layer when an inactive destination address is marked as
+ active due to the reception of the latest HEARTBEAT ACK. The
+ receiver of the HEARTBEAT ACK SHOULD also clear the association
+ overall error count (as defined in Section 8.1).
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.13. It is in final form and is not
+ further updated in this document.
+
+ ---------
+ Old text: (Section 9.2)
+ ---------
+
+ An endpoint should limit the number of retransmissions of the
+ SHUTDOWN chunk to the protocol parameter 'Association.Max.Retrans'.
+ If this threshold is exceeded, the endpoint should destroy the TCB
+ and MUST report the peer endpoint unreachable to the upper layer (and
+ thus the association enters the CLOSED state).
+
+ ---------
+ New text: (Section 9.2)
+ ---------
+
+ An endpoint SHOULD limit the number of retransmissions of the
+ SHUTDOWN chunk to the protocol parameter 'Association.Max.Retrans'.
+ If this threshold is exceeded, the endpoint SHOULD destroy the TCB
+ and SHOULD report the peer endpoint unreachable to the upper layer
+ (and thus the association enters the CLOSED state).
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 9.2)
+ ---------
+
+ The sender of the SHUTDOWN ACK should limit the number of
+ retransmissions of the SHUTDOWN ACK chunk to the protocol parameter
+ 'Association.Max.Retrans'. If this threshold is exceeded, the
+ endpoint should destroy the TCB and may report the peer endpoint
+ unreachable to the upper layer (and thus the association enters the
+ CLOSED state).
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 36]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 9.2)
+ ---------
+
+ The sender of the SHUTDOWN ACK SHOULD limit the number of
+ retransmissions of the SHUTDOWN ACK chunk to the protocol parameter
+ 'Association.Max.Retrans'. If this threshold is exceeded, the
+ endpoint SHOULD destroy the TCB and SHOULD report the peer endpoint
+ unreachable to the upper layer (and thus the association enters the
+ CLOSED state).
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.23.3. Solution Description
+
+ The inconsistencies are removed by consistently using SHOULD.
+
+3.24. SACK.Delay Not Listed as a Protocol Parameter
+
+3.24.1. Description of the Problem
+
+ SCTP as specified in [RFC4960] supports delaying SACKs. The timer
+ value for this is a parameter, and Section 6.2 of [RFC4960] specifies
+ a default and maximum value for it. However, (1) defining a name for
+ this parameter and (2) listing it in the table of protocol parameters
+ in Section 15 of [RFC4960] are missing.
+
+ This issue was reported as an errata for [RFC4960] with
+ Errata ID 4656.
+
+3.24.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.2)
+ ---------
+
+ An implementation MUST NOT allow the maximum delay to be configured
+ to be more than 500 ms. In other words, an implementation MAY lower
+ this value below 500 ms but MUST NOT raise it above 500 ms.
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 37]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 6.2)
+ ---------
+
+ An implementation MUST NOT allow the maximum delay (protocol
+ parameter 'SACK.Delay') to be configured to be more than 500 ms. In
+ other words, an implementation MAY lower the value of SACK.Delay
+ below 500 ms but MUST NOT raise it above 500 ms.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 15)
+ ---------
+
+ The following protocol parameters are RECOMMENDED:
+
+ RTO.Initial - 3 seconds
+ RTO.Min - 1 second
+ RTO.Max - 60 seconds
+ Max.Burst - 4
+ RTO.Alpha - 1/8
+ RTO.Beta - 1/4
+ Valid.Cookie.Life - 60 seconds
+ Association.Max.Retrans - 10 attempts
+ Path.Max.Retrans - 5 attempts (per destination address)
+ Max.Init.Retransmits - 8 attempts
+ HB.interval - 30 seconds
+ HB.Max.Burst - 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 38]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 15)
+ ---------
+
+ The following protocol parameters are RECOMMENDED:
+
+ RTO.Initial: 3 seconds
+ RTO.Min: 1 second
+ RTO.Max: 60 seconds
+ Max.Burst: 4
+ RTO.Alpha: 1/8
+ RTO.Beta: 1/4
+ Valid.Cookie.Life: 60 seconds
+ Association.Max.Retrans: 10 attempts
+ Path.Max.Retrans: 5 attempts (per destination address)
+ Max.Init.Retransmits: 8 attempts
+ HB.interval: 30 seconds
+ HB.Max.Burst: 1
+ SACK.Delay: 200 milliseconds
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.32.
+
+3.24.3. Solution Description
+
+ The parameter is given the name 'SACK.Delay' and added to the list of
+ protocol parameters.
+
+3.25. Processing of Chunks in an Incoming SCTP Packet
+
+3.25.1. Description of the Problem
+
+ There are a few places in [RFC4960] where text specifies that the
+ receiver of a packet must discard it while processing the chunks of
+ the packet. Whether or not the receiver has to roll back state
+ changes already performed while processing the packet is unclear.
+
+ The intention of [RFC4960] is to process an incoming packet chunk by
+ chunk and not to perform any prescreening of chunks in the received
+ packet. Thus, by discarding one chunk, the receiver also causes the
+ discarding of all further chunks.
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 39]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.25.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 3.2)
+ ---------
+
+ 00 - Stop processing this SCTP packet and discard it, do not
+ process any further chunks within it.
+
+ 01 - Stop processing this SCTP packet and discard it, do not
+ process any further chunks within it, and report the
+ unrecognized chunk in an 'Unrecognized Chunk Type'.
+
+ ---------
+ New text: (Section 3.2)
+ ---------
+
+ 00 - Stop processing this SCTP packet; discard the unrecognized
+ chunk and all further chunks.
+
+ 01 - Stop processing this SCTP packet, discard the unrecognized
+ chunk and all further chunks, and report the unrecognized
+ chunk in an 'Unrecognized Chunk Type'.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 11.3)
+ ---------
+
+ It is helpful for some firewalls if they can inspect just the first
+ fragment of a fragmented SCTP packet and unambiguously determine
+ whether it corresponds to an INIT chunk (for further information,
+ please refer to [RFC1858]). Accordingly, we stress the requirements,
+ stated in Section 3.1, that (1) an INIT chunk MUST NOT be bundled
+ with any other chunk in a packet, and (2) a packet containing an INIT
+ chunk MUST have a zero Verification Tag. Furthermore, we require
+ that the receiver of an INIT chunk MUST enforce these rules by
+ silently discarding an arriving packet with an INIT chunk that is
+ bundled with other chunks or has a non-zero verification tag and
+ contains an INIT-chunk.
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 40]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 11.3)
+ ---------
+
+ It is helpful for some firewalls if they can inspect just the first
+ fragment of a fragmented SCTP packet and unambiguously determine
+ whether it corresponds to an INIT chunk (for further information,
+ please refer to [RFC1858]). Accordingly, we stress the requirements,
+ as stated in Section 3.1, that (1) an INIT chunk MUST NOT be bundled
+ with any other chunk in a packet and (2) a packet containing an INIT
+ chunk MUST have a zero Verification Tag. The receiver of an INIT
+ chunk MUST silently discard the INIT chunk and all further chunks if
+ the INIT chunk is bundled with other chunks or the packet has a
+ non-zero Verification Tag.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.25.3. Solution Description
+
+ The new text makes it clear that chunks can be processed from the
+ beginning to the end and that no rollback or prescreening is
+ required.
+
+3.26. Increasing the cwnd in the Congestion Avoidance Phase
+
+3.26.1. Description of the Problem
+
+ Section 7.2.2 of [RFC4960] prescribes that cwnd be increased by 1*MTU
+ per RTT if the sender has cwnd or more bytes of data outstanding to
+ the corresponding address in the congestion avoidance phase.
+ However, this is described without normative language. Moreover,
+ Section 7.2.2 of [RFC4960] includes an algorithm that specifies how
+ an implementation can achieve this, but this algorithm is
+ underspecified and actually allows increasing cwnd by more than 1*MTU
+ per RTT.
+
+3.26.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.2)
+ ---------
+
+ When cwnd is greater than ssthresh, cwnd should be incremented by
+ 1*MTU per RTT if the sender has cwnd or more bytes of data
+ outstanding for the corresponding transport address.
+
+
+
+
+
+Stewart, et al. Informational [Page 41]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 7.2.2)
+ ---------
+
+ When cwnd is greater than ssthresh, cwnd SHOULD be incremented by
+ 1*MTU per RTT if the sender has cwnd or more bytes of data
+ outstanding for the corresponding transport address. The basic
+ guidelines for incrementing cwnd during congestion avoidance are as
+ follows:
+
+ o SCTP MAY increment cwnd by 1*MTU.
+
+ o SCTP SHOULD increment cwnd by 1*MTU once per RTT when the sender
+ has cwnd or more bytes of data outstanding for the corresponding
+ transport address.
+
+ o SCTP MUST NOT increment cwnd by more than 1*MTU per RTT.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 7.2.2)
+ ---------
+
+ o Whenever cwnd is greater than ssthresh, upon each SACK arrival
+ that advances the Cumulative TSN Ack Point, increase
+ partial_bytes_acked by the total number of bytes of all new chunks
+ acknowledged in that SACK including chunks acknowledged by the new
+ Cumulative TSN Ack and by Gap Ack Blocks.
+
+ o When partial_bytes_acked is equal to or greater than cwnd and
+ before the arrival of the SACK the sender had cwnd or more bytes
+ of data outstanding (i.e., before arrival of the SACK, flightsize
+ was greater than or equal to cwnd), increase cwnd by MTU, and
+ reset partial_bytes_acked to (partial_bytes_acked - cwnd).
+
+ ---------
+ New text: (Section 7.2.2)
+ ---------
+
+ o Whenever cwnd is greater than ssthresh, upon each SACK arrival,
+ increase partial_bytes_acked by the total number of bytes of all
+ new chunks acknowledged in that SACK, including chunks
+ acknowledged by the new Cumulative TSN Ack, by Gap Ack Blocks,
+ and by the number of bytes of duplicated chunks reported in
+ Duplicate TSNs.
+
+
+
+
+Stewart, et al. Informational [Page 42]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ o (1) when partial_bytes_acked is greater than cwnd and (2) before
+ the arrival of the SACK the sender had less than cwnd bytes of
+ data outstanding (i.e., before the arrival of the SACK, flightsize
+ was less than cwnd), reset partial_bytes_acked to cwnd.
+
+ o (1) when partial_bytes_acked is equal to or greater than cwnd and
+ (2) before the arrival of the SACK the sender had cwnd or more
+ bytes of data outstanding (i.e., before the arrival of the SACK,
+ flightsize was greater than or equal to cwnd), partial_bytes_acked
+ is reset to (partial_bytes_acked - cwnd). Next, cwnd is increased
+ by 1*MTU.
+
+ This text has been modified by multiple errata. It includes
+ modifications from Sections 3.12 and 3.22. It is in final form and
+ is not further updated in this document.
+
+3.26.3. Solution Description
+
+ The basic guidelines for incrementing cwnd during the congestion
+ avoidance phase are added into Section 7.2.2. The guidelines include
+ the normative language and are aligned with [RFC5681].
+
+ The algorithm from Section 7.2.2 is improved and now does not allow
+ increasing cwnd by more than 1*MTU per RTT.
+
+3.27. Refresh of cwnd and ssthresh after Idle Period
+
+3.27.1. Description of the Problem
+
+ [RFC4960] prescribes that cwnd per RTO be adjusted if the endpoint
+ does not transmit data on a given transport address. In addition to
+ that, it prescribes that cwnd be set to the initial value after a
+ sufficiently long idle period. The latter is excessive. Moreover,
+ what is considered a sufficiently long idle period is unclear.
+
+ [RFC4960] doesn't specify the handling of ssthresh in the idle case.
+ If ssthresh is reduced due to packet loss, ssthresh is never
+ recovered. So, traffic can end up in congestion avoidance all the
+ time, resulting in a low sending rate and bad performance. The
+ problem is even more serious for SCTP: in a multi-homed SCTP
+ association, traffic that switches back to the previously failed
+ primary path will also lead to the situation where traffic ends up in
+ congestion avoidance.
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 43]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.27.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.1)
+ ---------
+
+ o The initial cwnd before DATA transmission or after a sufficiently
+ long idle period MUST be set to min(4*MTU, max (2*MTU, 4380
+ bytes)).
+
+ ---------
+ New text: (Section 7.2.1)
+ ---------
+
+ o The initial cwnd before data transmission MUST be set to
+ min(4*MTU, max (2*MTU, 4380 bytes)).
+
+ ---------
+ Old text: (Section 7.2.1)
+ ---------
+
+ o When the endpoint does not transmit data on a given transport
+ address, the cwnd of the transport address should be adjusted to
+ max(cwnd/2, 4*MTU) per RTO.
+
+ ---------
+ New text: (Section 7.2.1)
+ ---------
+
+ o While the endpoint does not transmit data on a given transport
+ address, the cwnd of the transport address SHOULD be adjusted to
+ max(cwnd/2, 4*MTU) once per RTO. Before the first cwnd
+ adjustment, the ssthresh of the transport address SHOULD be set to
+ the cwnd.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.27.3. Solution Description
+
+ A rule about cwnd adjustment after a sufficiently long idle period is
+ removed.
+
+ The text is updated to describe the handling of ssthresh. When the
+ idle period is detected, the cwnd value is copied to ssthresh.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 44]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.28. Window Updates after Receiver Window Opens Up
+
+3.28.1. Description of the Problem
+
+ The sending of SACK chunks for window updates is only indirectly
+ referenced in Section 6.2 of [RFC4960], which states that an SCTP
+ receiver must not generate more than one SACK for every incoming
+ packet, other than to update the offered window.
+
+ However, to avoid performance problems, it is necessary to send the
+ window updates when the receiver window opens up.
+
+3.28.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.2)
+ ---------
+
+ An SCTP receiver MUST NOT generate more than one SACK for every
+ incoming packet, other than to update the offered window as the
+ receiving application consumes new data.
+
+ ---------
+ New text: (Section 6.2)
+ ---------
+
+ An SCTP receiver MUST NOT generate more than one SACK for every
+ incoming packet, other than to update the offered window as the
+ receiving application consumes new data. When the window opens up,
+ an SCTP receiver SHOULD send additional SACK chunks to update the
+ window even if no new data is received. The receiver MUST avoid
+ sending a large number of window updates -- in particular, large
+ bursts of them. One way to achieve this is to send a window update
+ only if the window can be increased by at least a quarter of the
+ receive buffer size of the association.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.28.3. Solution Description
+
+ The new text makes it clear that additional SACK chunks for window
+ updates should be sent as long as excessive bursts are avoided.
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 45]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.29. Path of DATA and Reply Chunks
+
+3.29.1. Description of the Problem
+
+ Section 6.4 of [RFC4960] describes the transmission policy for
+ multi-homed SCTP endpoints. However, this policy has the following
+ issues:
+
+ o It states that a SACK should be sent to the source address of an
+ incoming DATA. However, it is known that other SACK policies
+ (e.g., always sending SACKs to the primary path) may be more
+ beneficial in some situations.
+
+ o Also, it initially states that an endpoint should always transmit
+ DATA chunks to the primary path but then states that the rule for
+ the transmittal of reply chunks should also be followed if the
+ endpoint is bundling DATA chunks together with the reply chunk.
+ The second statement contradicts the first statement. Some
+ implementations were having problems with it and sent DATA chunks
+ bundled with reply chunks to a different destination address than
+ the primary path, causing many gaps.
+
+3.29.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.4)
+ ---------
+
+ An endpoint SHOULD transmit reply chunks (e.g., SACK, HEARTBEAT ACK,
+ etc.) to the same destination transport address from which it
+ received the DATA or control chunk to which it is replying. This
+ rule should also be followed if the endpoint is bundling DATA chunks
+ together with the reply chunk.
+
+ However, when acknowledging multiple DATA chunks received in packets
+ from different source addresses in a single SACK, the SACK chunk may
+ be transmitted to one of the destination transport addresses from
+ which the DATA or control chunks being acknowledged were received.
+
+ ---------
+ New text: (Section 6.4)
+ ---------
+
+ An endpoint SHOULD transmit reply chunks (e.g., INIT ACK, COOKIE ACK,
+ HEARTBEAT ACK) in response to control chunks to the same destination
+ transport address from which it received the control chunk to which
+ it is replying.
+
+
+
+
+Stewart, et al. Informational [Page 46]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ The selection of the destination transport address for packets
+ containing SACK chunks is implementation dependent. However, an
+ endpoint SHOULD NOT vary the destination transport address of a SACK
+ when it receives DATA chunks coming from the same source address.
+
+ When acknowledging multiple DATA chunks received in packets from
+ different source addresses in a single SACK, the SACK chunk MAY be
+ transmitted to one of the destination transport addresses from which
+ the DATA or control chunks being acknowledged were received.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.29.3. Solution Description
+
+ The SACK transmission policy is left implementation dependent, but
+ the new text now specifies that the policy not vary the destination
+ address of a packet containing a SACK chunk unless there are reasons
+ for not doing so, as varying the destination address may negatively
+ impact RTT measurement.
+
+ New text removes a confusing statement that prescribes following the
+ rule for transmittal of reply chunks when the endpoint is bundling
+ DATA chunks together with the reply chunk.
+
+3.30. "Outstanding Data", "Flightsize", and "Data in Flight" Key Terms
+
+3.30.1. Description of the Problem
+
+ [RFC4960] uses the key terms "outstanding data", "flightsize", and
+ "data in flight" in formulas and statements, but Section 1.3
+ ("Key Terms") of [RFC4960] does not provide their definitions.
+ Furthermore, outstanding data does not include DATA chunks that are
+ classified as lost but that have not yet been retransmitted, and
+ there is a paragraph in Section 6.1 of [RFC4960] where this statement
+ is broken.
+
+3.30.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 1.3)
+ ---------
+
+ o Congestion window (cwnd): An SCTP variable that limits the data,
+ in number of bytes, a sender can send to a particular destination
+ transport address before receiving an acknowledgement.
+
+ ...
+
+
+
+Stewart, et al. Informational [Page 47]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ o Outstanding TSN (at an SCTP endpoint): A TSN (and the associated
+ DATA chunk) that has been sent by the endpoint but for which it
+ has not yet received an acknowledgement.
+
+ ---------
+ New text: (Section 1.3)
+ ---------
+
+ o Congestion window (cwnd): An SCTP variable that limits outstanding
+ data, in number of bytes, that a sender can send to a particular
+ destination transport address before receiving an acknowledgement.
+
+ ...
+
+ o Flightsize: The amount of bytes of outstanding data to a
+ particular destination transport address at any given time.
+
+ ...
+
+ o Outstanding data (or "data outstanding" or "data in flight"): The
+ total amount of the DATA chunks associated with outstanding TSNs.
+ A retransmitted DATA chunk is counted once in outstanding data. A
+ DATA chunk that is classified as lost but that has not yet been
+ retransmitted is not in outstanding data.
+
+ o Outstanding TSN (at an SCTP endpoint): A TSN (and the associated
+ DATA chunk) that has been sent by the endpoint but for which it
+ has not yet received an acknowledgement.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 6.1)
+ ---------
+
+ C) When the time comes for the sender to transmit, before sending new
+ DATA chunks, the sender MUST first transmit any outstanding DATA
+ chunks that are marked for retransmission (limited by the current
+ cwnd).
+
+ ---------
+ New text: (Section 6.1)
+ ---------
+
+ C) When the time comes for the sender to transmit, before sending new
+ DATA chunks, the sender MUST first transmit any DATA chunks that
+ are marked for retransmission (limited by the current cwnd).
+
+
+
+Stewart, et al. Informational [Page 48]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.30.3. Solution Description
+
+ Section 1.3 is corrected to include explanations of the key terms
+ "outstanding data", "data in flight", and "flightsize". Section 6.1
+ is corrected to now use "any DATA chunks" instead of "any outstanding
+ DATA chunks".
+
+3.31. Degradation of cwnd due to Max.Burst
+
+3.31.1. Description of the Problem
+
+ Some implementations were experiencing a degradation of cwnd because
+ of the Max.Burst limit. This was due to misinterpretation of the
+ suggestion in Section 6.1 of [RFC4960] regarding how to use the
+ Max.Burst parameter when calculating the number of packets to
+ transmit.
+
+3.31.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.1)
+ ---------
+
+ D) When the time comes for the sender to transmit new DATA chunks,
+ the protocol parameter Max.Burst SHOULD be used to limit the
+ number of packets sent. The limit MAY be applied by adjusting
+ cwnd as follows:
+
+ if((flightsize + Max.Burst*MTU) < cwnd) cwnd = flightsize +
+ Max.Burst*MTU
+
+ Or it MAY be applied by strictly limiting the number of packets
+ emitted by the output routine.
+
+ ---------
+ New text: (Section 6.1)
+ ---------
+
+ D) When the time comes for the sender to transmit new DATA chunks,
+ the protocol parameter Max.Burst SHOULD be used to limit the
+ number of packets sent. The limit MAY be applied by adjusting
+ cwnd temporarily, as follows:
+
+ if ((flightsize + Max.Burst*MTU) < cwnd)
+ cwnd = flightsize + Max.Burst*MTU
+
+
+
+Stewart, et al. Informational [Page 49]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ Or, it MAY be applied by strictly limiting the number of packets
+ emitted by the output routine. When calculating the number of
+ packets to transmit, and particularly when using the formula
+ above, cwnd SHOULD NOT be changed permanently.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.31.3. Solution Description
+
+ The new text clarifies that cwnd should not be changed when applying
+ the Max.Burst limit. This mitigates packet bursts related to the
+ reception of SACK chunks but not bursts related to an application
+ sending a burst of user messages.
+
+3.32. Reduction of RTO.Initial
+
+3.32.1. Description of the Problem
+
+ [RFC4960] uses 3 seconds as the default value for RTO.Initial in
+ accordance with Section 4.2.3.1 of [RFC1122]. [RFC6298] updates
+ [RFC1122] and lowers the initial value of the retransmission timer
+ from 3 seconds to 1 second.
+
+3.32.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 15)
+ ---------
+
+ The following protocol parameters are RECOMMENDED:
+
+ RTO.Initial - 3 seconds
+ RTO.Min - 1 second
+ RTO.Max - 60 seconds
+ Max.Burst - 4
+ RTO.Alpha - 1/8
+ RTO.Beta - 1/4
+ Valid.Cookie.Life - 60 seconds
+ Association.Max.Retrans - 10 attempts
+ Path.Max.Retrans - 5 attempts (per destination address)
+ Max.Init.Retransmits - 8 attempts
+ HB.interval - 30 seconds
+ HB.Max.Burst - 1
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 50]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 15)
+ ---------
+
+ The following protocol parameters are RECOMMENDED:
+
+ RTO.Initial: 1 second
+ RTO.Min: 1 second
+ RTO.Max: 60 seconds
+ Max.Burst: 4
+ RTO.Alpha: 1/8
+ RTO.Beta: 1/4
+ Valid.Cookie.Life: 60 seconds
+ Association.Max.Retrans: 10 attempts
+ Path.Max.Retrans: 5 attempts (per destination address)
+ Max.Init.Retransmits: 8 attempts
+ HB.interval: 30 seconds
+ HB.Max.Burst: 1
+ SACK.Delay: 200 milliseconds
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.24. It is in final form and is not
+ further updated in this document.
+
+3.32.3. Solution Description
+
+ The default value for RTO.Initial has been lowered to 1 second to be
+ in tune with [RFC6298].
+
+3.33. Ordering of Bundled SACK and ERROR Chunks
+
+3.33.1. Description of the Problem
+
+ When an SCTP endpoint receives a DATA chunk with an invalid stream
+ identifier, it shall acknowledge it by sending a SACK chunk and
+ indicate that the stream identifier was invalid by sending an ERROR
+ chunk. These two chunks may be bundled. However, in the case of
+ bundling, [RFC4960] requires that the ERROR chunk follow the SACK
+ chunk. This restriction regarding the ordering of the chunks is not
+ necessary and might limit interoperability.
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 51]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.33.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.5)
+ ---------
+
+ Every DATA chunk MUST carry a valid stream identifier. If an
+ endpoint receives a DATA chunk with an invalid stream identifier, it
+ shall acknowledge the reception of the DATA chunk following the
+ normal procedure, immediately send an ERROR chunk with cause set to
+ "Invalid Stream Identifier" (see Section 3.3.10), and discard the
+ DATA chunk. The endpoint may bundle the ERROR chunk in the same
+ packet as the SACK as long as the ERROR follows the SACK.
+
+ ---------
+ New text: (Section 6.5)
+ ---------
+
+ Every DATA chunk MUST carry a valid stream identifier. If an
+ endpoint receives a DATA chunk with an invalid stream identifier, it
+ SHOULD acknowledge the reception of the DATA chunk following the
+ normal procedure, immediately send an ERROR chunk with cause set to
+ "Invalid Stream Identifier" (see Section 3.3.10), and discard the
+ DATA chunk. The endpoint MAY bundle the ERROR chunk and the SACK
+ chunk in the same packet.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.33.3. Solution Description
+
+ The unnecessary restriction regarding the ordering of the SACK and
+ ERROR chunks has been removed.
+
+3.34. Undefined Parameter Returned by RECEIVE Primitive
+
+3.34.1. Description of the Problem
+
+ [RFC4960] provides a description of an abstract API. In the
+ definition of the RECEIVE primitive, an optional parameter with name
+ "delivery number" is mentioned. However, no definition of this
+ parameter is given in [RFC4960], and the parameter is unnecessary.
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 52]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.34.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 10.1 G))
+ ---------
+
+ G) Receive
+
+ Format: RECEIVE(association id, buffer address, buffer size
+ [,stream id])
+ -> byte count [,transport address] [,stream id] [,stream sequence
+ number] [,partial flag] [,delivery number] [,payload protocol-id]
+
+ ---------
+ New text: (Section 10.1 G))
+ ---------
+
+ G) Receive
+
+ Format: RECEIVE(association id, buffer address, buffer size
+ [,stream id])
+ -> byte count [,transport address] [,stream id] [,stream sequence
+ number] [,partial flag] [,payload protocol-id]
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.34.3. Solution Description
+
+ The undefined parameter has been removed.
+
+3.35. DSCP Changes
+
+3.35.1. Description of the Problem
+
+ The upper layer can change the Differentiated Services Code Point
+ (DSCP) used for packets being sent. Changing the DSCP can result in
+ packets hitting different queues on the path. Therefore, congestion
+ control should be initialized when the DSCP is changed by the upper
+ layer. This is not described in [RFC4960].
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 53]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.35.2. Text Changes to the Document
+
+ ---------
+ New text: (Section 7.2.5)
+ ---------
+
+ 7.2.5. Making Changes to Differentiated Services Code Points
+
+ SCTP implementations MAY allow an application to configure the
+ Differentiated Services Code Point (DSCP) used for sending
+ packets. If a DSCP change might result in outgoing packets being
+ queued in different queues, the congestion control parameters for
+ all affected destination addresses MUST be reset to their initial
+ values.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 10.1 M))
+ ---------
+
+ Mandatory attributes:
+
+ o association id - local handle to the SCTP association.
+
+ o protocol parameter list - the specific names and values of the
+ protocol parameters (e.g., Association.Max.Retrans; see
+ Section 15) that the SCTP user wishes to customize.
+
+ ---------
+ New text: (Section 10.1 M))
+ ---------
+
+ Mandatory attributes:
+
+ o association id - local handle to the SCTP association.
+
+ o protocol parameter list - the specific names and values of the
+ protocol parameters (e.g., Association.Max.Retrans (see
+ Section 15), or other parameters like the DSCP) that the SCTP user
+ wishes to customize.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 54]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.35.3. Solution Description
+
+ Text describing the required action for DSCP changes has been added.
+
+3.36. Inconsistent Handling of ICMPv4 and ICMPv6 Messages
+
+3.36.1. Description of the Problem
+
+ Appendix C of [RFC4960] describes the handling of ICMPv4 and ICMPv6
+ messages. The handling of ICMP messages indicating that the port
+ number is unreachable, as described in the enumerated procedures, is
+ not consistent with the description given in [RFC4960] after the
+ procedures. Furthermore, the text explicitly describes the handling
+ of ICMPv6 packets indicating reachability problems but does not do
+ the same for the corresponding ICMPv4 packets.
+
+3.36.2. Text Changes to the Document
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ ICMP3) An implementation MAY ignore any ICMPv4 messages where the
+ code does not indicate "Protocol Unreachable" or
+ "Fragmentation Needed".
+
+ ---------
+ New text: (Appendix C)
+ ---------
+
+ ICMP3) An implementation SHOULD ignore any ICMP messages where the
+ code indicates "Port Unreachable".
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ ICMP9) If the ICMPv6 code is "Destination Unreachable", the
+ implementation MAY mark the destination into the unreachable
+ state or alternatively increment the path error counter.
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 55]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Appendix C)
+ ---------
+
+ ICMP9) If the ICMP type is "Destination Unreachable", the
+ implementation MAY move the destination to the unreachable
+ state or, alternatively, increment the path error counter.
+
+ This text has been modified by multiple errata. It is further
+ updated in Section 3.37.
+
+3.36.3. Solution Description
+
+ The text has been changed to describe the intended handling of ICMP
+ messages indicating that the port number is unreachable by replacing
+ the third rule. Also, the limitation to ICMPv6 in the ninth rule has
+ been removed.
+
+3.37. Handling of Soft Errors
+
+3.37.1. Description of the Problem
+
+ [RFC1122] defines the handling of soft errors and hard errors for
+ TCP. Appendix C of [RFC4960] only deals with hard errors.
+
+3.37.2. Text Changes to the Document
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ ICMP9) If the ICMPv6 code is "Destination Unreachable", the
+ implementation MAY mark the destination into the unreachable
+ state or alternatively increment the path error counter.
+
+ ---------
+ New text: (Appendix C)
+ ---------
+
+ ICMP9) If the ICMP type is "Destination Unreachable", the
+ implementation MAY move the destination to the unreachable
+ state or, alternatively, increment the path error counter.
+ SCTP MAY provide information to the upper layer indicating
+ the reception of ICMP messages when reporting a network status
+ change.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 56]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.36. It is in final form and is not
+ further updated in this document.
+
+3.37.3. Solution Description
+
+ Text has been added allowing SCTP to notify the application in the
+ case of soft errors.
+
+3.38. Honoring cwnd
+
+3.38.1. Description of the Problem
+
+ When using the slow start algorithm, SCTP increases the congestion
+ window only when it is being fully utilized. Since SCTP uses DATA
+ chunks and does not use the congestion window to fragment user
+ messages, this requires that some overbooking of the congestion
+ window be allowed.
+
+3.38.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.1)
+ ---------
+
+ B) At any given time, the sender MUST NOT transmit new data to a
+ given transport address if it has cwnd or more bytes of data
+ outstanding to that transport address.
+
+ ---------
+ New text: (Section 6.1)
+ ---------
+
+ B) At any given time, the sender MUST NOT transmit new data to a
+ given transport address if it has cwnd + (PMTU - 1) or more bytes
+ of data outstanding to that transport address. If data is
+ available, the sender SHOULD exceed cwnd by up to (PMTU - 1) bytes
+ on a new data transmission if the flightsize does not currently
+ reach cwnd. The breach of cwnd MUST constitute one packet only.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 57]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Section 7.2.1)
+ ---------
+
+ o Whenever cwnd is greater than zero, the endpoint is allowed to
+ have cwnd bytes of data outstanding on that transport address.
+
+ ---------
+ New text: (Section 7.2.1)
+ ---------
+
+ o Whenever cwnd is greater than zero, the endpoint is allowed to
+ have cwnd bytes of data outstanding on that transport address. A
+ limited overbooking as described in Section 6.1 B) SHOULD be
+ supported.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.38.3. Solution Description
+
+ Text was added to clarify how the cwnd limit should be handled.
+
+3.39. Zero Window Probing
+
+3.39.1. Description of the Problem
+
+ The text in Section 6.1 of [RFC4960] that describes zero window
+ probing does not clearly address the case where the window is not
+ zero but is too small for the next DATA chunk to be transmitted.
+ Even in this case, zero window probing has to be performed to avoid
+ deadlocks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 58]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.39.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.1)
+ ---------
+
+ A) At any given time, the data sender MUST NOT transmit new data to
+ any destination transport address if its peer's rwnd indicates
+ that the peer has no buffer space (i.e., rwnd is 0; see Section
+ 6.2.1). However, regardless of the value of rwnd (including if it
+ is 0), the data sender can always have one DATA chunk in flight to
+ the receiver if allowed by cwnd (see rule B, below). This rule
+ allows the sender to probe for a change in rwnd that the sender
+ missed due to the SACK's having been lost in transit from the data
+ receiver to the data sender.
+
+ When the receiver's advertised window is zero, this probe is
+ called a zero window probe. Note that a zero window probe SHOULD
+ only be sent when all outstanding DATA chunks have been
+ cumulatively acknowledged and no DATA chunks are in flight. Zero
+ window probing MUST be supported.
+
+ ---------
+ New text: (Section 6.1)
+ ---------
+
+ A) At any given time, the data sender MUST NOT transmit new data to
+ any destination transport address if its peer's rwnd indicates
+ that the peer has no buffer space (i.e., rwnd is smaller than the
+ size of the next DATA chunk; see Section 6.2.1). However,
+ regardless of the value of rwnd (including if it is 0), the data
+ sender can always have one DATA chunk in flight to the receiver
+ if allowed by cwnd (see rule B, below). This rule allows the
+ sender to probe for a change in rwnd that the sender missed
+ due to the SACK's having been lost in transit from the data
+ receiver to the data sender.
+
+ When the receiver has no buffer space, this probe is called a
+ zero window probe. Note that a zero window probe SHOULD only be
+ sent when all outstanding DATA chunks have been cumulatively
+ acknowledged and no DATA chunks are in flight. Zero window
+ probing MUST be supported.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 59]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.39.3. Solution Description
+
+ The terminology is used in a cleaner way.
+
+3.40. Updating References regarding ECN
+
+3.40.1. Description of the Problem
+
+ For Explicit Congestion Notification (ECN), [RFC4960] refers only to
+ [RFC3168], which has been updated by [RFC8311]. This needs to be
+ reflected in the text when referring to ECN.
+
+3.40.2. Text Changes to the Document
+
+ ---------
+ Old text: (Appendix A)
+ ---------
+
+ ECN [RFC3168] describes a proposed extension to IP that details a
+ method to become aware of congestion outside of datagram loss.
+
+ ---------
+ New text: (Appendix A)
+ ---------
+
+ ECN as specified in [RFC3168] (updated by [RFC8311]) describes an
+ extension to IP that details a method for becoming aware of
+ congestion outside of datagram loss.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Appendix A)
+ ---------
+
+ In general, [RFC3168] should be followed with the following
+ exceptions.
+
+ ---------
+ New text: (Appendix A)
+ ---------
+
+ In general, [RFC3168] (updated by [RFC8311]) SHOULD be followed, with
+ the following exceptions.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+Stewart, et al. Informational [Page 60]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Appendix A)
+ ---------
+
+ [RFC3168] details negotiation of ECN during the SYN and SYN-ACK
+ stages of a TCP connection.
+
+ ---------
+ New text: (Appendix A)
+ ---------
+
+ [RFC3168] (updated by [RFC8311]) details the negotiation of ECN
+ during the SYN and SYN-ACK stages of a TCP connection.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Appendix A)
+ ---------
+
+ [RFC3168] details a specific bit for a receiver to send back in its
+ TCP acknowledgements to notify the sender of the Congestion
+ Experienced (CE) bit having arrived from the network.
+
+ ---------
+ New text: (Appendix A)
+ ---------
+
+ [RFC3168] (updated by [RFC8311]) details a specific bit for a
+ receiver to send back in its TCP acknowledgements to notify the
+ sender of the Congestion Experienced (CE) bit that the CE bit has
+ arrived from the network.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Appendix A)
+ ---------
+
+ [RFC3168] details a specific bit for a sender to send in the header
+ of its next outbound TCP segment to indicate to its peer that it has
+ reduced its congestion window.
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 61]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Appendix A)
+ ---------
+
+ [RFC3168] (updated by [RFC8311]) details a specific bit for a sender
+ to send in the header of its next outbound TCP segment to indicate to
+ its peer that it has reduced its congestion window.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.40.3. Solution Description
+
+ References to [RFC8311] have been added. Some wordsmithing was also
+ done while making those updates.
+
+3.41. Host Name Address Parameter Deprecated
+
+3.41.1. Description of the Problem
+
+ [RFC4960] defines three types of address parameters to be used with
+ INIT and INIT ACK chunks:
+
+ 1. IPv4 Address parameters.
+
+ 2. IPv6 Address parameters.
+
+ 3. Host Name Address parameters.
+
+ The first two parameter types are supported by the SCTP kernel
+ implementations of FreeBSD, Linux, and Solaris, but the third is not.
+ In addition, the first two were successfully tested in all nine
+ interoperability tests for SCTP, but the third has never been
+ successfully tested. Therefore, the Host Name Address parameter
+ should be deprecated.
+
+3.41.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 3.3.2)
+ ---------
+
+ Note 3: An INIT chunk MUST NOT contain more than one Host Name
+ Address parameter. Moreover, the sender of the INIT MUST NOT combine
+ any other address types with the Host Name Address in the INIT. The
+ receiver of INIT MUST ignore any other address types if the Host Name
+ Address parameter is present in the received INIT chunk.
+
+
+
+
+Stewart, et al. Informational [Page 62]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 3.3.2)
+ ---------
+
+ Note 3: An INIT chunk MUST NOT contain the Host Name Address
+ parameter. The receiver of an INIT chunk containing a Host Name
+ Address parameter MUST send an ABORT and MAY include an "Unresolvable
+ Address" error cause.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 3.3.2.1)
+ ---------
+
+ The sender of INIT uses this parameter to pass its Host Name (in
+ place of its IP addresses) to its peer. The peer is responsible for
+ resolving the name. Using this parameter might make it more likely
+ for the association to work across a NAT box.
+
+ ---------
+ New text: (Section 3.3.2.1)
+ ---------
+
+ The sender of an INIT chunk MUST NOT include this parameter. The
+ usage of the Host Name Address parameter is deprecated.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 3.3.2.1)
+ ---------
+
+ Address Type: 16 bits (unsigned integer)
+
+ This is filled with the type value of the corresponding address
+ TLV (e.g., IPv4 = 5, IPv6 = 6, Host name = 11).
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 63]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 3.3.2.1)
+ ---------
+
+ Address Type: 16 bits (unsigned integer)
+
+ This is filled with the type value of the corresponding address
+ TLV (e.g., IPv4 = 5, IPv6 = 6). The value indicating the Host
+ Name Address parameter (Host name = 11) MUST NOT be used.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 3.3.3)
+ ---------
+
+ Note 3: The INIT ACK chunks MUST NOT contain more than one Host Name
+ Address parameter. Moreover, the sender of the INIT ACK MUST NOT
+ combine any other address types with the Host Name Address in the
+ INIT ACK. The receiver of the INIT ACK MUST ignore any other address
+ types if the Host Name Address parameter is present.
+
+ ---------
+ New text: (Section 3.3.3)
+ ---------
+
+ Note 3: An INIT ACK chunk MUST NOT contain the Host Name Address
+ parameter. The receiver of INIT ACK chunks containing a Host Name
+ Address parameter MUST send an ABORT and MAY include an "Unresolvable
+ Address" error cause.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 5.1.2)
+ ---------
+
+ B) If there is a Host Name parameter present in the received INIT or
+ INIT ACK chunk, the endpoint shall resolve that host name to a
+ list of IP address(es) and derive the transport address(es) of
+ this peer by combining the resolved IP address(es) with the SCTP
+ source port.
+
+ The endpoint MUST ignore any other IP Address parameters if they
+ are also present in the received INIT or INIT ACK chunk.
+
+
+
+
+Stewart, et al. Informational [Page 64]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ The time at which the receiver of an INIT resolves the host name
+ has potential security implications to SCTP. If the receiver of
+ an INIT resolves the host name upon the reception of the chunk,
+ and the mechanism the receiver uses to resolve the host name
+ involves potential long delay (e.g., DNS query), the receiver may
+ open itself up to resource attacks for the period of time while it
+ is waiting for the name resolution results before it can build the
+ State Cookie and release local resources.
+
+ Therefore, in cases where the name translation involves potential
+ long delay, the receiver of the INIT MUST postpone the name
+ resolution till the reception of the COOKIE ECHO chunk from the
+ peer. In such a case, the receiver of the INIT SHOULD build the
+ State Cookie using the received Host Name (instead of destination
+ transport addresses) and send the INIT ACK to the source IP
+ address from which the INIT was received.
+
+ The receiver of an INIT ACK shall always immediately attempt to
+ resolve the name upon the reception of the chunk.
+
+ The receiver of the INIT or INIT ACK MUST NOT send user data
+ (piggy-backed or stand-alone) to its peer until the host name is
+ successfully resolved.
+
+ If the name resolution is not successful, the endpoint MUST
+ immediately send an ABORT with "Unresolvable Address" error cause
+ to its peer. The ABORT shall be sent to the source IP address
+ from which the last peer packet was received.
+
+ ---------
+ New text: (Section 5.1.2)
+ ---------
+
+ B) If there is a Host Name Address parameter present in the received
+ INIT or INIT ACK chunk, the endpoint MUST immediately send an
+ ABORT and MAY include an "Unresolvable Address" error cause
+ to its peer. The ABORT SHALL be sent to the source
+ IP address from which the last peer packet was received.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 65]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Section 11.2.4.1)
+ ---------
+
+ The use of the host name feature in the INIT chunk could be used to
+ flood a target DNS server. A large backlog of DNS queries, resolving
+ the host name received in the INIT chunk to IP addresses, could be
+ accomplished by sending INITs to multiple hosts in a given domain.
+ In addition, an attacker could use the host name feature in an
+ indirect attack on a third party by sending large numbers of INITs to
+ random hosts containing the host name of the target. In addition to
+ the strain on DNS resources, this could also result in large numbers
+ of INIT ACKs being sent to the target. One method to protect against
+ this type of attack is to verify that the IP addresses received from
+ DNS include the source IP address of the original INIT. If the list
+ of IP addresses received from DNS does not include the source IP
+ address of the INIT, the endpoint MAY silently discard the INIT.
+ This last option will not protect against the attack against the DNS.
+
+ ---------
+ New text: (Section 11.2.4.1)
+ ---------
+
+ Support for the Host Name Address parameter has been removed from the
+ protocol. Endpoints receiving INIT or INIT ACK chunks containing the
+ Host Name Address parameter MUST send an ABORT chunk in response and
+ MAY include an "Unresolvable Address" error cause.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.41.3. Solution Description
+
+ The usage of the Host Name Address parameter has been deprecated.
+
+3.42. Conflicting Text regarding the 'Supported Address Types'
+ Parameter
+
+3.42.1. Description of the Problem
+
+ Section 5.1.2 of [RFC4960] contains conflicting text regarding the
+ receipt of an SCTP packet containing an INIT chunk sent from an
+ address for which the corresponding address type is not listed in the
+ 'Supported Address Types' parameter. The text states that the
+ association MUST be aborted, but it also states that the association
+ SHOULD be established and there SHOULD NOT be any error indication.
+
+
+
+
+
+Stewart, et al. Informational [Page 66]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.42.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 5.1.2)
+ ---------
+
+ The sender of INIT may include a 'Supported Address Types' parameter
+ in the INIT to indicate what types of address are acceptable. When
+ this parameter is present, the receiver of INIT (initiate) MUST
+ either use one of the address types indicated in the Supported
+ Address Types parameter when responding to the INIT, or abort the
+ association with an "Unresolvable Address" error cause if it is
+ unwilling or incapable of using any of the address types indicated by
+ its peer.
+
+ ---------
+ New text: (Section 5.1.2)
+ ---------
+
+ The sender of INIT chunks MAY include a 'Supported Address Types'
+ parameter in the INIT to indicate what types of addresses are
+ acceptable.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.42.3. Solution Description
+
+ The conflicting text has been removed.
+
+3.43. Integration of RFC 6096
+
+3.43.1. Description of the Problem
+
+ [RFC6096] updates [RFC4960] by adding the "Chunk Flags" registry.
+ This should be integrated into the base specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 67]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.43.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 14.1)
+ ---------
+
+ 14.1. IETF-Defined Chunk Extension
+
+ The assignment of new chunk parameter type codes is done through
+ an IETF Consensus action, as defined in [RFC2434]. Documentation
+ of the chunk parameter MUST contain the following information:
+
+ a) A long and short name for the new chunk type.
+
+ b) A detailed description of the structure of the chunk, which
+ MUST conform to the basic structure defined in Section 3.2.
+
+ c) A detailed definition and description of the intended use of
+ each field within the chunk, including the chunk flags if any.
+
+ d) A detailed procedural description of the use of the new chunk
+ type within the operation of the protocol.
+
+ The last chunk type (255) is reserved for future extension if
+ necessary.
+
+ ---------
+ New text: (Section 14.1)
+ ---------
+
+ 14.1. IETF-Defined Chunk Extension
+
+ The assignment of new chunk type codes is done through an IETF
+ Review action, as defined in [RFC8126]. Documentation for a new
+ chunk MUST contain the following information:
+
+ a) A long and short name for the new chunk type.
+
+ b) A detailed description of the structure of the chunk, which
+ MUST conform to the basic structure defined in Section 3.2.
+
+ c) A detailed definition and description of the intended use of
+ each field within the chunk, including the chunk flags
+ (if any). Defined chunk flags will be used as initial entries
+ in the chunk flags table for the new chunk type.
+
+ d) A detailed procedural description of the use of the new chunk
+ type within the operation of the protocol.
+
+
+
+Stewart, et al. Informational [Page 68]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ The last chunk type (255) is reserved for future extension if
+ necessary.
+
+ For each new chunk type, IANA creates a registration table for the
+ chunk flags of that type. The procedure for registering
+ particular chunk flags is described in Section 14.2.
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.3. It is in final form and is not
+ further updated in this document.
+
+ ---------
+ New text: (Section 14.2)
+ ---------
+
+ 14.2. New IETF Chunk Flags Registration
+
+ The assignment of new chunk flags is done through an RFC Required
+ action, as defined in [RFC8126]. Documentation for the chunk
+ flags MUST contain the following information:
+
+ a) A name for the new chunk flag.
+
+ b) A detailed procedural description of the use of the new chunk
+ flag within the operation of the protocol. It MUST be
+ considered that implementations not supporting the flag will
+ send '0' on transmit and just ignore it on receipt.
+
+ IANA selects a chunk flags value. This MUST be one of 0x01, 0x02,
+ 0x04, 0x08, 0x10, 0x20, 0x40, or 0x80, which MUST be unique within
+ the chunk flag values for the specific chunk type.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ Please note that Sections 14.2, 14.3, 14.4, and 14.5 as shown in
+ [RFC4960] will need to be renumbered when [RFC4960] is updated.
+
+3.43.3. Solution Description
+
+ [RFC6096] has been integrated, and the reference has been updated to
+ [RFC8126].
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 69]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.44. Integration of RFC 6335
+
+3.44.1. Description of the Problem
+
+ [RFC6335] updates [RFC4960] by updating procedures for the "Service
+ Name and Transport Protocol Port Number Registry". This should be
+ integrated into the base specification. Also, the "Guidelines for
+ Writing an IANA Considerations Section in RFCs" reference needs to be
+ changed to [RFC8126].
+
+3.44.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 14.5)
+ ---------
+
+ SCTP services may use contact port numbers to provide service to
+ unknown callers, as in TCP and UDP. IANA is therefore requested to
+ open the existing Port Numbers registry for SCTP using the following
+ rules, which we intend to mesh well with existing Port Numbers
+ registration procedures. An IESG-appointed Expert Reviewer supports
+ IANA in evaluating SCTP port allocation requests, according to the
+ procedure defined in [RFC2434].
+
+ Port numbers are divided into three ranges. The Well Known Ports are
+ those from 0 through 1023, the Registered Ports are those from 1024
+ through 49151, and the Dynamic and/or Private Ports are those from
+ 49152 through 65535. Well Known and Registered Ports are intended
+ for use by server applications that desire a default contact point on
+ a system. On most systems, Well Known Ports can only be used by
+ system (or root) processes or by programs executed by privileged
+ users, while Registered Ports can be used by ordinary user processes
+ or programs executed by ordinary users. Dynamic and/or Private Ports
+ are intended for temporary use, including client-side ports, out-of-
+ band negotiated ports, and application testing prior to registration
+ of a dedicated port; they MUST NOT be registered.
+
+ The Port Numbers registry should accept registrations for SCTP ports
+ in the Well Known Ports and Registered Ports ranges. Well Known and
+ Registered Ports SHOULD NOT be used without registration. Although
+ in some cases -- such as porting an application from TCP to SCTP --
+ it may seem natural to use an SCTP port before registration
+ completes, we emphasize that IANA will not guarantee registration of
+ particular Well Known and Registered Ports. Registrations should be
+ requested as early as possible.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 70]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ Each port registration SHALL include the following information:
+
+ o A short port name, consisting entirely of letters (A-Z and a-z),
+ digits (0-9), and punctuation characters from "-_+./*" (not
+ including the quotes).
+
+ o The port number that is requested for registration.
+
+ o A short English phrase describing the port's purpose.
+
+ o Name and contact information for the person or entity performing
+ the registration, and possibly a reference to a document defining
+ the port's use. Registrations coming from IETF working groups
+ need only name the working group, but indicating a contact person
+ is recommended.
+
+ Registrants are encouraged to follow these guidelines when submitting
+ a registration.
+
+ o A port name SHOULD NOT be registered for more than one SCTP port
+ number.
+
+ o A port name registered for TCP MAY be registered for SCTP as well.
+ Any such registration SHOULD use the same port number as the
+ existing TCP registration.
+
+ o Concrete intent to use a port SHOULD precede port registration.
+ For example, existing TCP ports SHOULD NOT be registered in
+ advance of any intent to use those ports for SCTP.
+
+ ---------
+ New text: (Section 14.5)
+ ---------
+
+ SCTP services can use contact port numbers to provide service to
+ unknown callers, as in TCP and UDP. IANA is therefore requested to
+ open the existing "Service Name and Transport Protocol Port Number
+ Registry" for SCTP using the following rules, which we intend to mesh
+ well with existing port-number registration procedures. An
+ IESG-appointed expert reviewer supports IANA in evaluating SCTP port
+ allocation requests, according to the procedure defined in [RFC8126].
+ The details of this process are defined in [RFC6335].
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 71]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.44.3. Solution Description
+
+ [RFC6335] has been integrated, and the reference has been updated to
+ [RFC8126].
+
+3.45. Integration of RFC 7053
+
+3.45.1. Description of the Problem
+
+ [RFC7053] updates [RFC4960] by adding the I bit to the DATA chunk.
+ This should be integrated into the base specification.
+
+3.45.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 3.3.1)
+ ---------
+
+ The following format MUST be used for the DATA chunk:
+
+ 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 = 0 | Reserved|U|B|E| Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | TSN |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Stream Identifier S | Stream Sequence Number n |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Protocol Identifier |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ \ \
+ / User Data (seq n of Stream S) /
+ \ \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Reserved: 5 bits
+
+ Should be set to all '0's and ignored by the receiver.
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 72]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 3.3.1)
+ ---------
+
+ The following format MUST be used for the DATA chunk:
+
+ 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 = 0 | Res |I|U|B|E| Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | TSN |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Stream Identifier S | Stream Sequence Number n |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Payload Protocol Identifier |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ \ \
+ / User Data (seq n of Stream S) /
+ \ \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Res: 4 bits
+
+ SHOULD be set to all '0's and ignored by the receiver.
+
+ I bit: 1 bit
+
+ The (I)mmediate bit MAY be set by the sender whenever the sender
+ of a DATA chunk can benefit from the corresponding SACK chunk
+ being sent back without delay. See Section 4 of [RFC7053] for a
+ discussion of the benefits.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 73]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Append to Section 6.1)
+ ---------
+
+ Whenever the sender of a DATA chunk can benefit from the
+ corresponding SACK chunk being sent back without delay, the sender
+ MAY set the I bit in the DATA chunk header. Please note that why the
+ sender has set the I bit is irrelevant to the receiver.
+
+ Reasons for setting the I bit include, but are not limited to, the
+ following (see Section 4 of [RFC7053] for a discussion of the
+ benefits):
+
+ o The application requests that the I bit of the last DATA chunk of
+ a user message be set when providing the user message to the SCTP
+ implementation (see Section 7).
+
+ o The sender is in the SHUTDOWN-PENDING state.
+
+ o The sending of a DATA chunk fills the congestion or receiver
+ window.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 6.2)
+ ---------
+
+ Note: The SHUTDOWN chunk does not contain Gap Ack Block fields.
+ Therefore, the endpoint should use a SACK instead of the SHUTDOWN
+ chunk to acknowledge DATA chunks received out of order.
+
+ ---------
+ New text: (Section 6.2)
+ ---------
+
+ Note: The SHUTDOWN chunk does not contain Gap Ack Block fields.
+ Therefore, the endpoint SHOULD use a SACK instead of the SHUTDOWN
+ chunk to acknowledge DATA chunks received out of order.
+
+ Upon receipt of an SCTP packet containing a DATA chunk with the I bit
+ set, the receiver SHOULD NOT delay the sending of the corresponding
+ SACK chunk, i.e., the receiver SHOULD immediately respond with the
+ corresponding SACK chunk.
+
+ Please note that this change is only about adding a paragraph.
+
+
+
+
+Stewart, et al. Informational [Page 74]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 10.1 E))
+ ---------
+
+ E) Send
+
+ Format: SEND(association id, buffer address, byte count [,context]
+ [,stream id] [,life time] [,destination transport address]
+ [,unordered flag] [,no-bundle flag] [,payload protocol-id] )
+ -> result
+
+ ---------
+ New text: (Section 10.1 E))
+ ---------
+
+ E) Send
+
+ Format: SEND(association id, buffer address, byte count [,context]
+ [,stream id] [,life time] [,destination transport address]
+ [,unordered flag] [,no-bundle flag] [,payload protocol-id]
+ [,sack-immediately])
+ -> result
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ New text: (Append optional parameter in item E) of Section 10.1)
+ ---------
+
+ o sack-immediately flag - set the I bit on the last DATA chunk used
+ for the user message to be transmitted.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.45.3. Solution Description
+
+ [RFC7053] has been integrated.
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 75]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.46. CRC32c Code Improvements
+
+3.46.1. Description of the Problem
+
+ The code given for the CRC32c computations uses types such as "long",
+ which may have different lengths on different operating systems or
+ processors. Therefore, the code needs to be changed, so that it uses
+ specific types such as uint32_t.
+
+ Some syntax errors and a comment also need to be fixed.
+
+ We remind the reader that per Section 3.10.2 of this document most of
+ Appendix C of RFC 4960 will be moved to Appendix B in the bis
+ document (thus the "Old text: (Appendix C)" and "New text:
+ (Appendix B)" items in this section).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 76]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.46.2. Text Changes to the Document
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ /*************************************************************/
+ /* Note Definition for Ross Williams table generator would */
+ /* be: TB_WIDTH=4, TB_POLLY=0x1EDC6F41, TB_REVER=TRUE */
+ /* For Mr. Williams direct calculation code use the settings */
+ /* cm_width=32, cm_poly=0x1EDC6F41, cm_init=0xFFFFFFFF, */
+ /* cm_refin=TRUE, cm_refot=TRUE, cm_xorort=0x00000000 */
+ /*************************************************************/
+
+ /* Example of the crc table file */
+ #ifndef __crc32cr_table_h__
+ #define __crc32cr_table_h__
+
+ #define CRC32C_POLY 0x1EDC6F41
+ #define CRC32C(c,d) (c=(c>>8)^crc_c[(c^(d))&0xFF])
+
+ unsigned long crc_c[256] =
+ {
+ 0x00000000L, 0xF26B8303L, 0xE13B70F7L, 0x1350F3F4L,
+ 0xC79A971FL, 0x35F1141CL, 0x26A1E7E8L, 0xD4CA64EBL,
+ 0x8AD958CFL, 0x78B2DBCCL, 0x6BE22838L, 0x9989AB3BL,
+ 0x4D43CFD0L, 0xBF284CD3L, 0xAC78BF27L, 0x5E133C24L,
+ 0x105EC76FL, 0xE235446CL, 0xF165B798L, 0x030E349BL,
+ 0xD7C45070L, 0x25AFD373L, 0x36FF2087L, 0xC494A384L,
+ 0x9A879FA0L, 0x68EC1CA3L, 0x7BBCEF57L, 0x89D76C54L,
+ 0x5D1D08BFL, 0xAF768BBCL, 0xBC267848L, 0x4E4DFB4BL,
+ 0x20BD8EDEL, 0xD2D60DDDL, 0xC186FE29L, 0x33ED7D2AL,
+ 0xE72719C1L, 0x154C9AC2L, 0x061C6936L, 0xF477EA35L,
+ 0xAA64D611L, 0x580F5512L, 0x4B5FA6E6L, 0xB93425E5L,
+ 0x6DFE410EL, 0x9F95C20DL, 0x8CC531F9L, 0x7EAEB2FAL,
+ 0x30E349B1L, 0xC288CAB2L, 0xD1D83946L, 0x23B3BA45L,
+
+ 0xF779DEAEL, 0x05125DADL, 0x1642AE59L, 0xE4292D5AL,
+ 0xBA3A117EL, 0x4851927DL, 0x5B016189L, 0xA96AE28AL,
+ 0x7DA08661L, 0x8FCB0562L, 0x9C9BF696L, 0x6EF07595L,
+ 0x417B1DBCL, 0xB3109EBFL, 0xA0406D4BL, 0x522BEE48L,
+ 0x86E18AA3L, 0x748A09A0L, 0x67DAFA54L, 0x95B17957L,
+ 0xCBA24573L, 0x39C9C670L, 0x2A993584L, 0xD8F2B687L,
+ 0x0C38D26CL, 0xFE53516FL, 0xED03A29BL, 0x1F682198L,
+ 0x5125DAD3L, 0xA34E59D0L, 0xB01EAA24L, 0x42752927L,
+ 0x96BF4DCCL, 0x64D4CECFL, 0x77843D3BL, 0x85EFBE38L,
+ 0xDBFC821CL, 0x2997011FL, 0x3AC7F2EBL, 0xC8AC71E8L,
+ 0x1C661503L, 0xEE0D9600L, 0xFD5D65F4L, 0x0F36E6F7L,
+
+
+
+Stewart, et al. Informational [Page 77]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ 0x61C69362L, 0x93AD1061L, 0x80FDE395L, 0x72966096L,
+ 0xA65C047DL, 0x5437877EL, 0x4767748AL, 0xB50CF789L,
+ 0xEB1FCBADL, 0x197448AEL, 0x0A24BB5AL, 0xF84F3859L,
+ 0x2C855CB2L, 0xDEEEDFB1L, 0xCDBE2C45L, 0x3FD5AF46L,
+ 0x7198540DL, 0x83F3D70EL, 0x90A324FAL, 0x62C8A7F9L,
+ 0xB602C312L, 0x44694011L, 0x5739B3E5L, 0xA55230E6L,
+ 0xFB410CC2L, 0x092A8FC1L, 0x1A7A7C35L, 0xE811FF36L,
+ 0x3CDB9BDDL, 0xCEB018DEL, 0xDDE0EB2AL, 0x2F8B6829L,
+ 0x82F63B78L, 0x709DB87BL, 0x63CD4B8FL, 0x91A6C88CL,
+ 0x456CAC67L, 0xB7072F64L, 0xA457DC90L, 0x563C5F93L,
+ 0x082F63B7L, 0xFA44E0B4L, 0xE9141340L, 0x1B7F9043L,
+ 0xCFB5F4A8L, 0x3DDE77ABL, 0x2E8E845FL, 0xDCE5075CL,
+ 0x92A8FC17L, 0x60C37F14L, 0x73938CE0L, 0x81F80FE3L,
+ 0x55326B08L, 0xA759E80BL, 0xB4091BFFL, 0x466298FCL,
+ 0x1871A4D8L, 0xEA1A27DBL, 0xF94AD42FL, 0x0B21572CL,
+ 0xDFEB33C7L, 0x2D80B0C4L, 0x3ED04330L, 0xCCBBC033L,
+ 0xA24BB5A6L, 0x502036A5L, 0x4370C551L, 0xB11B4652L,
+ 0x65D122B9L, 0x97BAA1BAL, 0x84EA524EL, 0x7681D14DL,
+ 0x2892ED69L, 0xDAF96E6AL, 0xC9A99D9EL, 0x3BC21E9DL,
+ 0xEF087A76L, 0x1D63F975L, 0x0E330A81L, 0xFC588982L,
+ 0xB21572C9L, 0x407EF1CAL, 0x532E023EL, 0xA145813DL,
+ 0x758FE5D6L, 0x87E466D5L, 0x94B49521L, 0x66DF1622L,
+ 0x38CC2A06L, 0xCAA7A905L, 0xD9F75AF1L, 0x2B9CD9F2L,
+ 0xFF56BD19L, 0x0D3D3E1AL, 0x1E6DCDEEL, 0xEC064EEDL,
+ 0xC38D26C4L, 0x31E6A5C7L, 0x22B65633L, 0xD0DDD530L,
+ 0x0417B1DBL, 0xF67C32D8L, 0xE52CC12CL, 0x1747422FL,
+ 0x49547E0BL, 0xBB3FFD08L, 0xA86F0EFCL, 0x5A048DFFL,
+ 0x8ECEE914L, 0x7CA56A17L, 0x6FF599E3L, 0x9D9E1AE0L,
+ 0xD3D3E1ABL, 0x21B862A8L, 0x32E8915CL, 0xC083125FL,
+ 0x144976B4L, 0xE622F5B7L, 0xF5720643L, 0x07198540L,
+ 0x590AB964L, 0xAB613A67L, 0xB831C993L, 0x4A5A4A90L,
+ 0x9E902E7BL, 0x6CFBAD78L, 0x7FAB5E8CL, 0x8DC0DD8FL,
+ 0xE330A81AL, 0x115B2B19L, 0x020BD8EDL, 0xF0605BEEL,
+ 0x24AA3F05L, 0xD6C1BC06L, 0xC5914FF2L, 0x37FACCF1L,
+ 0x69E9F0D5L, 0x9B8273D6L, 0x88D28022L, 0x7AB90321L,
+ 0xAE7367CAL, 0x5C18E4C9L, 0x4F48173DL, 0xBD23943EL,
+ 0xF36E6F75L, 0x0105EC76L, 0x12551F82L, 0xE03E9C81L,
+
+ 0x34F4F86AL, 0xC69F7B69L, 0xD5CF889DL, 0x27A40B9EL,
+ 0x79B737BAL, 0x8BDCB4B9L, 0x988C474DL, 0x6AE7C44EL,
+ 0xBE2DA0A5L, 0x4C4623A6L, 0x5F16D052L, 0xAD7D5351L,
+ };
+
+ #endif
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 78]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Appendix B)
+ ---------
+
+ <CODE BEGINS>
+ /****************************************************************/
+ /* Note: The definitions for Ross Williams's table generator */
+ /* would be TB_WIDTH=4, TB_POLY=0x1EDC6F41, TB_REVER=TRUE. */
+ /* For Mr. Williams's direct calculation code, use the settings */
+ /* cm_width=32, cm_poly=0x1EDC6F41, cm_init=0xFFFFFFFF, */
+ /* cm_refin=TRUE, cm_refot=TRUE, cm_xorot=0x00000000. */
+ /****************************************************************/
+
+ /* Example of the crc table file */
+ #ifndef __crc32cr_h__
+ #define __crc32cr_h__
+
+ #define CRC32C_POLY 0x1EDC6F41UL
+ #define CRC32C(c,d) (c=(c>>8)^crc_c[(c^(d))&0xFF])
+
+ uint32_t crc_c[256] =
+ {
+ 0x00000000UL, 0xF26B8303UL, 0xE13B70F7UL, 0x1350F3F4UL,
+ 0xC79A971FUL, 0x35F1141CUL, 0x26A1E7E8UL, 0xD4CA64EBUL,
+ 0x8AD958CFUL, 0x78B2DBCCUL, 0x6BE22838UL, 0x9989AB3BUL,
+ 0x4D43CFD0UL, 0xBF284CD3UL, 0xAC78BF27UL, 0x5E133C24UL,
+ 0x105EC76FUL, 0xE235446CUL, 0xF165B798UL, 0x030E349BUL,
+ 0xD7C45070UL, 0x25AFD373UL, 0x36FF2087UL, 0xC494A384UL,
+ 0x9A879FA0UL, 0x68EC1CA3UL, 0x7BBCEF57UL, 0x89D76C54UL,
+ 0x5D1D08BFUL, 0xAF768BBCUL, 0xBC267848UL, 0x4E4DFB4BUL,
+ 0x20BD8EDEUL, 0xD2D60DDDUL, 0xC186FE29UL, 0x33ED7D2AUL,
+ 0xE72719C1UL, 0x154C9AC2UL, 0x061C6936UL, 0xF477EA35UL,
+ 0xAA64D611UL, 0x580F5512UL, 0x4B5FA6E6UL, 0xB93425E5UL,
+ 0x6DFE410EUL, 0x9F95C20DUL, 0x8CC531F9UL, 0x7EAEB2FAUL,
+ 0x30E349B1UL, 0xC288CAB2UL, 0xD1D83946UL, 0x23B3BA45UL,
+ 0xF779DEAEUL, 0x05125DADUL, 0x1642AE59UL, 0xE4292D5AUL,
+ 0xBA3A117EUL, 0x4851927DUL, 0x5B016189UL, 0xA96AE28AUL,
+ 0x7DA08661UL, 0x8FCB0562UL, 0x9C9BF696UL, 0x6EF07595UL,
+ 0x417B1DBCUL, 0xB3109EBFUL, 0xA0406D4BUL, 0x522BEE48UL,
+ 0x86E18AA3UL, 0x748A09A0UL, 0x67DAFA54UL, 0x95B17957UL,
+ 0xCBA24573UL, 0x39C9C670UL, 0x2A993584UL, 0xD8F2B687UL,
+ 0x0C38D26CUL, 0xFE53516FUL, 0xED03A29BUL, 0x1F682198UL,
+ 0x5125DAD3UL, 0xA34E59D0UL, 0xB01EAA24UL, 0x42752927UL,
+ 0x96BF4DCCUL, 0x64D4CECFUL, 0x77843D3BUL, 0x85EFBE38UL,
+ 0xDBFC821CUL, 0x2997011FUL, 0x3AC7F2EBUL, 0xC8AC71E8UL,
+ 0x1C661503UL, 0xEE0D9600UL, 0xFD5D65F4UL, 0x0F36E6F7UL,
+ 0x61C69362UL, 0x93AD1061UL, 0x80FDE395UL, 0x72966096UL,
+ 0xA65C047DUL, 0x5437877EUL, 0x4767748AUL, 0xB50CF789UL,
+
+
+
+Stewart, et al. Informational [Page 79]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ 0xEB1FCBADUL, 0x197448AEUL, 0x0A24BB5AUL, 0xF84F3859UL,
+ 0x2C855CB2UL, 0xDEEEDFB1UL, 0xCDBE2C45UL, 0x3FD5AF46UL,
+ 0x7198540DUL, 0x83F3D70EUL, 0x90A324FAUL, 0x62C8A7F9UL,
+ 0xB602C312UL, 0x44694011UL, 0x5739B3E5UL, 0xA55230E6UL,
+ 0xFB410CC2UL, 0x092A8FC1UL, 0x1A7A7C35UL, 0xE811FF36UL,
+ 0x3CDB9BDDUL, 0xCEB018DEUL, 0xDDE0EB2AUL, 0x2F8B6829UL,
+ 0x82F63B78UL, 0x709DB87BUL, 0x63CD4B8FUL, 0x91A6C88CUL,
+ 0x456CAC67UL, 0xB7072F64UL, 0xA457DC90UL, 0x563C5F93UL,
+ 0x082F63B7UL, 0xFA44E0B4UL, 0xE9141340UL, 0x1B7F9043UL,
+ 0xCFB5F4A8UL, 0x3DDE77ABUL, 0x2E8E845FUL, 0xDCE5075CUL,
+ 0x92A8FC17UL, 0x60C37F14UL, 0x73938CE0UL, 0x81F80FE3UL,
+ 0x55326B08UL, 0xA759E80BUL, 0xB4091BFFUL, 0x466298FCUL,
+ 0x1871A4D8UL, 0xEA1A27DBUL, 0xF94AD42FUL, 0x0B21572CUL,
+ 0xDFEB33C7UL, 0x2D80B0C4UL, 0x3ED04330UL, 0xCCBBC033UL,
+ 0xA24BB5A6UL, 0x502036A5UL, 0x4370C551UL, 0xB11B4652UL,
+ 0x65D122B9UL, 0x97BAA1BAUL, 0x84EA524EUL, 0x7681D14DUL,
+ 0x2892ED69UL, 0xDAF96E6AUL, 0xC9A99D9EUL, 0x3BC21E9DUL,
+ 0xEF087A76UL, 0x1D63F975UL, 0x0E330A81UL, 0xFC588982UL,
+ 0xB21572C9UL, 0x407EF1CAUL, 0x532E023EUL, 0xA145813DUL,
+ 0x758FE5D6UL, 0x87E466D5UL, 0x94B49521UL, 0x66DF1622UL,
+ 0x38CC2A06UL, 0xCAA7A905UL, 0xD9F75AF1UL, 0x2B9CD9F2UL,
+ 0xFF56BD19UL, 0x0D3D3E1AUL, 0x1E6DCDEEUL, 0xEC064EEDUL,
+ 0xC38D26C4UL, 0x31E6A5C7UL, 0x22B65633UL, 0xD0DDD530UL,
+ 0x0417B1DBUL, 0xF67C32D8UL, 0xE52CC12CUL, 0x1747422FUL,
+ 0x49547E0BUL, 0xBB3FFD08UL, 0xA86F0EFCUL, 0x5A048DFFUL,
+ 0x8ECEE914UL, 0x7CA56A17UL, 0x6FF599E3UL, 0x9D9E1AE0UL,
+ 0xD3D3E1ABUL, 0x21B862A8UL, 0x32E8915CUL, 0xC083125FUL,
+ 0x144976B4UL, 0xE622F5B7UL, 0xF5720643UL, 0x07198540UL,
+ 0x590AB964UL, 0xAB613A67UL, 0xB831C993UL, 0x4A5A4A90UL,
+ 0x9E902E7BUL, 0x6CFBAD78UL, 0x7FAB5E8CUL, 0x8DC0DD8FUL,
+ 0xE330A81AUL, 0x115B2B19UL, 0x020BD8EDUL, 0xF0605BEEUL,
+ 0x24AA3F05UL, 0xD6C1BC06UL, 0xC5914FF2UL, 0x37FACCF1UL,
+ 0x69E9F0D5UL, 0x9B8273D6UL, 0x88D28022UL, 0x7AB90321UL,
+ 0xAE7367CAUL, 0x5C18E4C9UL, 0x4F48173DUL, 0xBD23943EUL,
+ 0xF36E6F75UL, 0x0105EC76UL, 0x12551F82UL, 0xE03E9C81UL,
+ 0x34F4F86AUL, 0xC69F7B69UL, 0xD5CF889DUL, 0x27A40B9EUL,
+ 0x79B737BAUL, 0x8BDCB4B9UL, 0x988C474DUL, 0x6AE7C44EUL,
+ 0xBE2DA0A5UL, 0x4C4623A6UL, 0x5F16D052UL, 0xAD7D5351UL,
+ };
+
+ #endif
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.10. It is in final form and is not
+ further updated in this document.
+
+
+
+
+
+
+Stewart, et al. Informational [Page 80]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ /* Example of table build routine */
+
+ #include <stdio.h>
+ #include <stdlib.h>
+
+ #define OUTPUT_FILE "crc32cr.h"
+ #define CRC32C_POLY 0x1EDC6F41L
+ FILE *tf;
+ unsigned long
+ reflect_32 (unsigned long b)
+ {
+ int i;
+ unsigned long rw = 0L;
+
+ for (i = 0; i < 32; i++){
+ if (b & 1)
+ rw |= 1 << (31 - i);
+ b >>= 1;
+ }
+ return (rw);
+ }
+
+ unsigned long
+ build_crc_table (int index)
+ {
+ int i;
+ unsigned long rb;
+
+ rb = reflect_32 (index);
+
+ for (i = 0; i < 8; i++){
+ if (rb & 0x80000000L)
+ rb = (rb << 1) ^ CRC32C_POLY;
+ else
+ rb <<= 1;
+ }
+ return (reflect_32 (rb));
+ }
+
+ main ()
+
+ {
+ int i;
+
+
+
+
+Stewart, et al. Informational [Page 81]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ printf ("\nGenerating CRC-32c table file <%s>\n",
+ OUTPUT_FILE);
+ if ((tf = fopen (OUTPUT_FILE, "w")) == NULL){
+ printf ("Unable to open %s\n", OUTPUT_FILE);
+ exit (1);
+ }
+ fprintf (tf, "#ifndef __crc32cr_table_h__\n");
+ fprintf (tf, "#define __crc32cr_table_h__\n\n");
+ fprintf (tf, "#define CRC32C_POLY 0x%08lX\n",
+ CRC32C_POLY);
+ fprintf (tf,
+ "#define CRC32C(c,d) (c=(c>>8)^crc_c[(c^(d))&0xFF])\n");
+ fprintf (tf, "\nunsigned long crc_c[256] =\n{\n");
+ for (i = 0; i < 256; i++){
+ fprintf (tf, "0x%08lXL, ", build_crc_table (i));
+ if ((i & 3) == 3)
+ fprintf (tf, "\n");
+ }
+ fprintf (tf, "};\n\n#endif\n");
+
+ if (fclose (tf) != 0)
+ printf ("Unable to close <%s>." OUTPUT_FILE);
+ else
+ printf ("\nThe CRC-32c table has been written to <%s>.\n",
+ OUTPUT_FILE);
+ }
+
+ ---------
+ New text: (Appendix B)
+ ---------
+
+ /* Example of table build routine */
+
+ #include <stdio.h>
+ #include <stdlib.h>
+
+ #define OUTPUT_FILE "crc32cr.h"
+ #define CRC32C_POLY 0x1EDC6F41UL
+
+ static FILE *tf;
+
+ static uint32_t
+ reflect_32(uint32_t b)
+ {
+ int i;
+ uint32_t rw = 0UL;
+
+ for (i = 0; i < 32; i++) {
+
+
+
+Stewart, et al. Informational [Page 82]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ if (b & 1)
+ rw |= 1 << (31 - i);
+ b >>= 1;
+ }
+ return (rw);
+ }
+
+ static uint32_t
+ build_crc_table (int index)
+ {
+ int i;
+ uint32_t rb;
+
+ rb = reflect_32(index);
+
+ for (i = 0; i < 8; i++) {
+ if (rb & 0x80000000UL)
+ rb = (rb << 1) ^ (uint32_t)CRC32C_POLY;
+ else
+ rb <<= 1;
+ }
+ return (reflect_32(rb));
+ }
+
+ int
+ main (void)
+ {
+ int i;
+
+ printf("\nGenerating CRC32c table file <%s>.\n",
+ OUTPUT_FILE);
+ if ((tf = fopen(OUTPUT_FILE, "w")) == NULL) {
+ printf("Unable to open %s.\n", OUTPUT_FILE);
+ exit (1);
+ }
+ fprintf(tf, "#ifndef __crc32cr_h__\n");
+ fprintf(tf, "#define __crc32cr_h__\n\n");
+ fprintf(tf, "#define CRC32C_POLY 0x%08XUL\n",
+ (uint32_t)CRC32C_POLY);
+ fprintf(tf,
+ "#define CRC32C(c,d) (c=(c>>8)^crc_c[(c^(d))&0xFF])\n");
+ fprintf(tf, "\nuint32_t crc_c[256] =\n{\n");
+ for (i = 0; i < 256; i++) {
+ fprintf(tf, "0x%08XUL,", build_crc_table (i));
+ if ((i & 3) == 3)
+
+
+
+
+
+
+Stewart, et al. Informational [Page 83]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ fprintf(tf, "\n");
+ else
+ fprintf(tf, " ");
+ }
+ fprintf(tf, "};\n\n#endif\n");
+
+ if (fclose(tf) != 0)
+ printf("Unable to close <%s>.\n", OUTPUT_FILE);
+ else
+ printf("\nThe CRC32c table has been written to <%s>.\n",
+ OUTPUT_FILE);
+ }
+
+ This text has been modified by multiple errata. It includes
+ modifications from Section 3.10. It is in final form and is not
+ further updated in this document.
+
+ ---------
+ Old text: (Appendix C)
+ ---------
+
+ /* Example of crc insertion */
+
+ #include "crc32cr.h"
+
+ unsigned long
+ generate_crc32c(unsigned char *buffer, unsigned int length)
+ {
+ unsigned int i;
+ unsigned long crc32 = ~0L;
+ unsigned long result;
+ unsigned char byte0,byte1,byte2,byte3;
+
+ for (i = 0; i < length; i++){
+ CRC32C(crc32, buffer[i]);
+ }
+
+ result = ~crc32;
+
+ /* result now holds the negated polynomial remainder;
+ * since the table and algorithm is "reflected" [williams95].
+ * That is, result has the same value as if we mapped the message
+ * to a polynomial, computed the host-bit-order polynomial
+ * remainder, performed final negation, then did an end-for-end
+ * bit-reversal.
+ * Note that a 32-bit bit-reversal is identical to four inplace
+ * 8-bit reversals followed by an end-for-end byteswap.
+ * In other words, the bytes of each bit are in the right order,
+
+
+
+Stewart, et al. Informational [Page 84]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ * but the bytes have been byteswapped. So we now do an explicit
+ * byteswap. On a little-endian machine, this byteswap and
+ * the final ntohl cancel out and could be elided.
+ */
+
+ byte0 = result & 0xff;
+ byte1 = (result>>8) & 0xff;
+ byte2 = (result>>16) & 0xff;
+ byte3 = (result>>24) & 0xff;
+ crc32 = ((byte0 << 24) |
+ (byte1 << 16) |
+ (byte2 << 8) |
+ byte3);
+ return ( crc32 );
+ }
+
+ int
+ insert_crc32(unsigned char *buffer, unsigned int length)
+ {
+ SCTP_message *message;
+ unsigned long crc32;
+ message = (SCTP_message *) buffer;
+ message->common_header.checksum = 0L;
+ crc32 = generate_crc32c(buffer,length);
+ /* and insert it into the message */
+ message->common_header.checksum = htonl(crc32);
+ return 1;
+ }
+
+ int
+ validate_crc32(unsigned char *buffer, unsigned int length)
+ {
+ SCTP_message *message;
+ unsigned int i;
+ unsigned long original_crc32;
+ unsigned long crc32 = ~0L;
+
+ /* save and zero checksum */
+ message = (SCTP_message *) buffer;
+ original_crc32 = ntohl(message->common_header.checksum);
+ message->common_header.checksum = 0L;
+ crc32 = generate_crc32c(buffer,length);
+ return ((original_crc32 == crc32)? 1 : -1);
+ }
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 85]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Appendix B)
+ ---------
+
+ /* Example of crc insertion */
+
+ #include "crc32cr.h"
+
+ uint32_t
+ generate_crc32c(unsigned char *buffer, unsigned int length)
+ {
+ unsigned int i;
+ uint32_t crc32 = 0xffffffffUL;
+ uint32_t result;
+ uint8_t byte0, byte1, byte2, byte3;
+
+ for (i = 0; i < length; i++) {
+ CRC32C(crc32, buffer[i]);
+ }
+
+ result = ~crc32;
+
+ /* result now holds the negated polynomial remainder,
+ * since the table and algorithm are "reflected" [williams95].
+ * That is, result has the same value as if we mapped the message
+ * to a polynomial, computed the host-bit-order polynomial
+ * remainder, performed final negation, and then did an
+ * end-for-end bit-reversal.
+ * Note that a 32-bit bit-reversal is identical to four in-place
+ * 8-bit bit-reversals followed by an end-for-end byteswap.
+ * In other words, the bits of each byte are in the right order,
+ * but the bytes have been byteswapped. So, we now do an explicit
+ * byteswap. On a little-endian machine, this byteswap and
+ * the final ntohl cancel out and could be elided.
+ */
+
+ byte0 = result & 0xff;
+ byte1 = (result>>8) & 0xff;
+ byte2 = (result>>16) & 0xff;
+ byte3 = (result>>24) & 0xff;
+ crc32 = ((byte0 << 24) |
+ (byte1 << 16) |
+ (byte2 << 8) |
+ byte3);
+ return (crc32);
+ }
+
+ int
+
+
+
+Stewart, et al. Informational [Page 86]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ insert_crc32(unsigned char *buffer, unsigned int length)
+ {
+ SCTP_message *message;
+ uint32_t crc32;
+ message = (SCTP_message *) buffer;
+ message->common_header.checksum = 0UL;
+ crc32 = generate_crc32c(buffer,length);
+ /* and insert it into the message */
+ message->common_header.checksum = htonl(crc32);
+ return 1;
+ }
+
+ int
+ validate_crc32(unsigned char *buffer, unsigned int length)
+ {
+ SCTP_message *message;
+ unsigned int i;
+ uint32_t original_crc32;
+ uint32_t crc32;
+
+ /* save and zero checksum */
+ message = (SCTP_message *)buffer;
+ original_crc32 = ntohl(message->common_header.checksum);
+ message->common_header.checksum = 0L;
+ crc32 = generate_crc32c(buffer, length);
+ return ((original_crc32 == crc32)? 1 : -1);
+ }
+ <CODE ENDS>
+
+ This text has been modified by multiple errata. It includes
+ modifications from Sections 3.5 and 3.10. It is in final form and is
+ not further updated in this document.
+
+3.46.3. Solution Description
+
+ The code was changed to use platform-independent types.
+
+3.47. Clarification of Gap Ack Blocks in SACK Chunks
+
+3.47.1. Description of the Problem
+
+ The Gap Ack Blocks in the SACK chunk are intended to be isolated.
+ However, this is not mentioned with normative text.
+
+ This issue was reported as part of an errata for [RFC4960] with
+ Errata ID 5202.
+
+
+
+
+
+Stewart, et al. Informational [Page 87]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.47.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 3.3.4)
+ ---------
+
+ The SACK also contains zero or more Gap Ack Blocks. Each Gap Ack
+ Block acknowledges a subsequence of TSNs received following a break
+ in the sequence of received TSNs. By definition, all TSNs
+ acknowledged by Gap Ack Blocks are greater than the value of the
+ Cumulative TSN Ack.
+
+ ---------
+ New text: (Section 3.3.4)
+ ---------
+
+ The SACK also contains zero or more Gap Ack Blocks. Each Gap Ack
+ Block acknowledges a subsequence of TSNs received following a break
+ in the sequence of received TSNs. The Gap Ack Blocks SHOULD be
+ isolated. This means that the TSN just before each Gap Ack Block and
+ the TSN just after each Gap Ack Block have not been received. By
+ definition, all TSNs acknowledged by Gap Ack Blocks are greater than
+ the value of the Cumulative TSN Ack.
+
+ This text is in final form and is not further updated in this
+ document.
+
+ ---------
+ Old text: (Section 3.3.4)
+ ---------
+
+ Gap Ack Blocks:
+
+ These fields contain the Gap Ack Blocks. They are repeated for
+ each Gap Ack Block up to the number of Gap Ack Blocks defined in
+ the Number of Gap Ack Blocks field. All DATA chunks with TSNs
+ greater than or equal to (Cumulative TSN Ack + Gap Ack Block
+ Start) and less than or equal to (Cumulative TSN Ack + Gap Ack
+ Block End) of each Gap Ack Block are assumed to have been received
+ correctly.
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 88]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 3.3.4)
+ ---------
+
+ Gap Ack Blocks:
+
+ These fields contain the Gap Ack Blocks. They are repeated for
+ each Gap Ack Block up to the number of Gap Ack Blocks defined in
+ the Number of Gap Ack Blocks field. All DATA chunks with TSNs
+ greater than or equal to (Cumulative TSN Ack + Gap Ack Block
+ Start) and less than or equal to (Cumulative TSN Ack + Gap Ack
+ Block End) of each Gap Ack Block are assumed to have been received
+ correctly. Gap Ack Blocks SHOULD be isolated. This means that
+ the DATA chunks with TSNs equal to (Cumulative TSN Ack + Gap Ack
+ Block Start - 1) and (Cumulative TSN Ack + Gap Ack Block End + 1)
+ have not been received.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.47.3. Solution Description
+
+ Normative text describing the intended usage of Gap Ack Blocks has
+ been added.
+
+3.48. Handling of SSN Wraparounds
+
+3.48.1. Description of the Problem
+
+ The Stream Sequence Number (SSN) is used for preserving the ordering
+ of user messages within each SCTP stream. The SSN is limited to
+ 16 bits. Therefore, multiple wraparounds of the SSN might happen
+ within the current send window. To allow the receiver to deliver
+ ordered user messages in the correct sequence, the sender should
+ limit the number of user messages per stream.
+
+3.48.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 6.1)
+ ---------
+
+ Note: The data sender SHOULD NOT use a TSN that is more than 2**31 -
+ 1 above the beginning TSN of the current send window.
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 89]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ ---------
+ New text: (Section 6.1)
+ ---------
+
+ Note: The data sender SHOULD NOT use a TSN that is more than
+ 2**31 - 1 above the beginning TSN of the current send window.
+ Note: For each stream, the data sender SHOULD NOT have more than
+ 2**16 - 1 ordered user messages in the current send window.
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.48.3. Solution Description
+
+ The data sender is required to limit the number of ordered user
+ messages within the current send window.
+
+3.49. Update to RFC 2119 Boilerplate Text
+
+3.49.1. Description of the Problem
+
+ The text to be used to refer to the terms ("key words") defined in
+ [RFC2119] has been updated by [RFC8174]. This needs to be integrated
+ into the base specification.
+
+3.49.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 2)
+ ---------
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119 [RFC2119].
+
+ ---------
+ New text: (Section 2)
+ ---------
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+ This text is in final form and is not further updated in this
+ document.
+
+
+
+
+Stewart, et al. Informational [Page 90]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+3.49.3. Solution Description
+
+ The text has been updated to the text specified in [RFC8174].
+
+3.50. Removal of Text (Previously Missed in RFC 4960)
+
+3.50.1. Description of the Problem
+
+ When integrating the changes to Section 7.2.4 of [RFC2960] as
+ described in Section 2.8.2 of [RFC4460], some text was not removed
+ and is therefore still in [RFC4960].
+
+3.50.2. Text Changes to the Document
+
+ ---------
+ Old text: (Section 7.2.4)
+ ---------
+
+ A straightforward implementation of the above keeps a counter for
+ each TSN hole reported by a SACK. The counter increments for each
+ consecutive SACK reporting the TSN hole. After reaching 3 and
+ starting the Fast-Retransmit procedure, the counter resets to 0.
+ Because cwnd in SCTP indirectly bounds the number of outstanding
+ TSN's, the effect of TCP Fast Recovery is achieved automatically with
+ no adjustment to the congestion control window size.
+
+ ---------
+ New text: (Section 7.2.4)
+ ---------
+
+ This text is in final form and is not further updated in this
+ document.
+
+3.50.3. Solution Description
+
+ The text has finally been removed.
+
+4. IANA Considerations
+
+ Section 3.44 of this document suggests new text that would update the
+ "Service Name and Transport Protocol Port Number Registry" for SCTP
+ to be consistent with [RFC6335].
+
+ IANA has confirmed that it is OK to make the proposed text change in
+ an upcoming Standards Track document that will update [RFC4960].
+ IANA is not asked to perform any other action, and this document does
+ not request that IANA make a change to any registry.
+
+
+
+
+Stewart, et al. Informational [Page 91]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+5. Security Considerations
+
+ This document does not add any security considerations to those given
+ in [RFC4960].
+
+6. References
+
+6.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol",
+ RFC 4960, DOI 10.17487/RFC4960, September 2007,
+ <https://www.rfc-editor.org/info/rfc4960>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+6.2. Informative References
+
+ [RFC1122] Braden, R., Ed., "Requirements for Internet Hosts -
+ Communication Layers", STD 3, RFC 1122,
+ DOI 10.17487/RFC1122, October 1989,
+ <https://www.rfc-editor.org/info/rfc1122>.
+
+ [RFC1858] Ziemba, G., Reed, D., and P. Traina, "Security
+ Considerations for IP Fragment Filtering", RFC 1858,
+ DOI 10.17487/RFC1858, October 1995,
+ <https://www.rfc-editor.org/info/rfc1858>.
+
+ [RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C.,
+ Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M.,
+ Zhang, L., and V. Paxson, "Stream Control Transmission
+ Protocol", RFC 2960, DOI 10.17487/RFC2960, October 2000,
+ <https://www.rfc-editor.org/info/rfc2960>.
+
+ [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
+ of Explicit Congestion Notification (ECN) to IP",
+ RFC 3168, DOI 10.17487/RFC3168, September 2001,
+ <https://www.rfc-editor.org/info/rfc3168>.
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 92]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+ [RFC4460] Stewart, R., Arias-Rodriguez, I., Poon, K., Caro, A., and
+ M. Tuexen, "Stream Control Transmission Protocol (SCTP)
+ Specification Errata and Issues", RFC 4460,
+ DOI 10.17487/RFC4460, April 2006,
+ <https://www.rfc-editor.org/info/rfc4460>.
+
+ [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion
+ Control", RFC 5681, DOI 10.17487/RFC5681, September 2009,
+ <https://www.rfc-editor.org/info/rfc5681>.
+
+ [RFC6096] Tuexen, M. and R. Stewart, "Stream Control Transmission
+ Protocol (SCTP) Chunk Flags Registration", RFC 6096,
+ DOI 10.17487/RFC6096, January 2011,
+ <https://www.rfc-editor.org/info/rfc6096>.
+
+ [RFC6298] Paxson, V., Allman, M., Chu, J., and M. Sargent,
+ "Computing TCP's Retransmission Timer", RFC 6298,
+ DOI 10.17487/RFC6298, June 2011,
+ <https://www.rfc-editor.org/info/rfc6298>.
+
+ [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S.
+ Cheshire, "Internet Assigned Numbers Authority (IANA)
+ Procedures for the Management of the Service Name and
+ Transport Protocol Port Number Registry", BCP 165,
+ RFC 6335, DOI 10.17487/RFC6335, August 2011,
+ <https://www.rfc-editor.org/info/rfc6335>.
+
+ [RFC7053] Tuexen, M., Ruengeler, I., and R. Stewart, "SACK-
+ IMMEDIATELY Extension for the Stream Control Transmission
+ Protocol", RFC 7053, DOI 10.17487/RFC7053, November 2013,
+ <https://www.rfc-editor.org/info/rfc7053>.
+
+ [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
+ Writing an IANA Considerations Section in RFCs", BCP 26,
+ RFC 8126, DOI 10.17487/RFC8126, June 2017,
+ <https://www.rfc-editor.org/info/rfc8126>.
+
+ [RFC8311] Black, D., "Relaxing Restrictions on Explicit Congestion
+ Notification (ECN) Experimentation", RFC 8311,
+ DOI 10.17487/RFC8311, January 2018,
+ <https://www.rfc-editor.org/info/rfc8311>.
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 93]
+
+RFC 8540 SCTP: Errata and Issues in RFC 4960 February 2019
+
+
+Acknowledgements
+
+ The authors wish to thank Pontus Andersson, Eric W. Biederman, Cedric
+ Bonnet, Spencer Dawkins, Gorry Fairhurst, Benjamin Kaduk, Mirja
+ Kuehlewind, Peter Lei, Gyula Marosi, Lionel Morand, Jeff Morriss,
+ Karen E. E. Nielsen, Tom Petch, Kacheong Poon, Julien Pourtet, Irene
+ Ruengeler, Michael Welzl, and Qiaobing Xie for their invaluable
+ comments.
+
+Authors' Addresses
+
+ Randall R. Stewart
+ Netflix, Inc.
+ Chapin, SC 29036
+ United States of America
+
+ Email: randall@lakerest.net
+
+
+ Michael Tuexen
+ Muenster University of Applied Sciences
+ Stegerwaldstrasse 39
+ 48565 Steinfurt
+ Germany
+
+ Email: tuexen@fh-muenster.de
+
+
+ Maksim Proshin
+ Ericsson
+ Kistavaegen 25
+ Stockholm 164 80
+ Sweden
+
+ Email: mproshin@tieto.mera.ru
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Stewart, et al. Informational [Page 94]
+