blob: 1345b19ccc878582edaead72c17327f20ddcc275 [file] [log] [blame]
Austin Schuh8d0a2852019-12-28 22:54:28 -08001
2
3
4
5
6
7Network Working Group R. Stewart
8Request for Comments: 4460 Cisco Systems, Inc.
9Category: Informational I. Arias-Rodriguez
10 Nokia Research Center
11 K. Poon
12 Sun Microsystems, Inc.
13 A. Caro
14 BBN Technologies
15 M. Tuexen
16 Muenster Univ. of Applied Sciences
17 April 2006
18
19
20 Stream Control Transmission Protocol (SCTP) Specification
21 Errata and Issues
22
23
24Status of This Memo
25
26 This memo provides information for the Internet community. It does
27 not specify an Internet standard of any kind. Distribution of this
28 memo is unlimited.
29
30Copyright Notice
31
32 Copyright (C) The Internet Society (2006).
33
34Abstract
35
36 This document is a compilation of issues found during six
37 interoperability events and 5 years of experience with implementing,
38 testing, and using Stream Control Transmission Protocol (SCTP) along
39 with the suggested fixes. This document provides deltas to RFC 2960
40 and is organized in a time-based way. The issues are listed in the
41 order they were brought up. Because some text is changed several
42 times, the last delta in the text is the one that should be applied.
43 In addition to the delta, a description of the problem and the
44 details of the solution are also provided.
45
46Table of Contents
47
48 1. Introduction ....................................................6
49 1.1. Conventions ................................................7
50 2. Corrections to RFC 2960 .........................................7
51 2.1. Incorrect Error Type During Chunk Processing. ..............7
52 2.1.1. Description of the Problem ..........................7
53 2.1.2. Text changes to the document ........................7
54 2.1.3. Solution Description ................................7
55
56
57
58Stewart, et al. Informational [Page 1]
59
60RFC 4460 SCTP Errata April 2006
61
62
63 2.2. Parameter Processing Issue .................................7
64 2.2.1. Description of the Problem ..........................7
65 2.2.2. Text Changes to the Document ........................8
66 2.2.3. Solution Description ................................8
67 2.3. Padding Issues .............................................8
68 2.3.1. Description of the Problem ..........................8
69 2.3.2. Text Changes to the Document ........................9
70 2.3.3. Solution Description ...............................10
71 2.4. Parameter Types across All Chunk Types ....................10
72 2.4.1. Description of the Problem .........................10
73 2.4.2. Text Changes to the Document .......................10
74 2.4.3. Solution Description ...............................12
75 2.5. Stream Parameter Clarification ............................12
76 2.5.1. Description of the problem .........................12
77 2.5.2. Text Changes to the Document .......................12
78 2.5.3. Solution Description ...............................13
79 2.6. Restarting Association Security Issue .....................13
80 2.6.1. Description of the Problem .........................13
81 2.6.2. Text Changes to the Document .......................14
82 2.6.3. Solution Description ...............................18
83 2.7. Implicit Ability to Exceed cwnd by PMTU-1 Bytes ...........19
84 2.7.1. Description of the Problem .........................19
85 2.7.2. Text Changes to the Document .......................19
86 2.7.3. Solution Description ...............................19
87 2.8. Issues with Fast Retransmit ...............................19
88 2.8.1. Description of the Problem .........................19
89 2.8.2. Text Changes to the Document .......................20
90 2.8.3. Solution Description ...............................23
91 2.9. Missing Statement about partial_bytes_acked Update ........24
92 2.9.1. Description of the Problem .........................24
93 2.9.2. Text Changes to the Document .......................24
94 2.9.3. Solution Description ...............................25
95 2.10. Issues with Heartbeating and Failure Detection ...........25
96 2.10.1. Description of the Problem ........................25
97 2.10.2. Text Changes to the Document ......................26
98 2.10.3. Solution Description ..............................28
99 2.11. Security interactions with firewalls .....................29
100 2.11.1. Description of the Problem ........................29
101 2.11.2. Text Changes to the Document ......................29
102 2.11.3. Solution Description ..............................31
103 2.12. Shutdown Ambiguity .......................................31
104 2.12.1. Description of the Problem ........................31
105 2.12.2. Text Changes to the Document ......................31
106 2.12.3. Solution Description ..............................32
107 2.13. Inconsistency in ABORT Processing ........................32
108 2.13.1. Description of the Problem ........................32
109 2.13.2. Text changes to the document ......................33
110 2.13.3. Solution Description ..............................33
111
112
113
114Stewart, et al. Informational [Page 2]
115
116RFC 4460 SCTP Errata April 2006
117
118
119 2.14. Cwnd Gated by Its Full Use ...............................34
120 2.14.1. Description of the Problem ........................34
121 2.14.2. Text Changes to the Document ......................34
122 2.14.3. Solution Description ..............................36
123 2.15. Window Probes in SCTP ....................................36
124 2.15.1. Description of the Problem ........................36
125 2.15.2. Text Changes to the Document ......................36
126 2.15.3. Solution Description ..............................38
127 2.16. Fragmentation and Path MTU Issues ........................39
128 2.16.1. Description of the Problem ........................39
129 2.16.2. Text Changes to the Document ......................39
130 2.16.3. Solution Description ..............................40
131 2.17. Initial Value of the Cumulative TSN Ack ..................40
132 2.17.1. Description of the Problem ........................40
133 2.17.2. Text Changes to the Document ......................40
134 2.17.3. Solution Description ..............................41
135 2.18. Handling of Address Parameters within the INIT or
136 INIT-ACK .................................................41
137 2.18.1. Description of the Problem ........................41
138 2.18.2. Text Changes to the Document ......................41
139 2.18.3. Solution description ..............................42
140 2.19. Handling of Stream Shortages .............................42
141 2.19.1. Description of the Problem ........................42
142 2.19.2. Text Changes to the Document ......................42
143 2.19.3. Solution Description ..............................43
144 2.20. Indefinite Postponement ..................................43
145 2.20.1. Description of the Problem ........................43
146 2.20.2. Text Changes to the Document ......................43
147 2.20.3. Solution Description ..............................44
148 2.21. User-Initiated Abort of an Association ...................44
149 2.21.1. Description of the Problem ........................44
150 2.21.2. Text changes to the document ......................44
151 2.21.3. Solution Description ..............................50
152 2.22. Handling of Invalid Initiate Tag of INIT-ACK .............50
153 2.22.1. Description of the Problem ........................50
154 2.22.2. Text Changes to the Document ......................50
155 2.22.3. Solution Description ..............................51
156 2.23. Sending an ABORT in Response to an INIT ..................51
157 2.23.1. Description of the Problem ........................51
158 2.23.2. Text Changes to the Document ......................51
159 2.23.3. Solution Description ..............................52
160 2.24. Stream Sequence Number (SSN) Initialization ..............52
161 2.24.1. Description of the Problem ........................52
162 2.24.2. Text Changes to the Document ......................52
163 2.24.3. Solution Description ..............................53
164 2.25. SACK Packet Format .......................................53
165 2.25.1. Description of the Problem ........................53
166 2.25.2. Text Changes to the Document ......................53
167
168
169
170Stewart, et al. Informational [Page 3]
171
172RFC 4460 SCTP Errata April 2006
173
174
175 2.25.3. Solution Description ..............................53
176 2.26. Protocol Violation Error Cause ...........................53
177 2.26.1. Description of the Problem ........................53
178 2.26.2. Text Changes to the Document ......................54
179 2.26.3. Solution Description ..............................56
180 2.27. Reporting of Unrecognized Parameters .....................56
181 2.27.1. Description of the Problem ........................56
182 2.27.2. Text Changes to the Document ......................56
183 2.27.3. Solution Description ..............................57
184 2.28. Handling of IP Address Parameters ........................58
185 2.28.1. Description of the Problem ........................58
186 2.28.2. Text Changes to the Document ......................58
187 2.28.3. Solution Description ..............................58
188 2.29. Handling of COOKIE ECHO Chunks When a TCB Exists .........59
189 2.29.1. Description of the Problem ........................59
190 2.29.2. Text Changes to the Document ......................59
191 2.29.3. Solution Description ..............................59
192 2.30. The Initial Congestion Window Size .......................59
193 2.30.1. Description of the Problem ........................59
194 2.30.2. Text Changes to the Document ......................60
195 2.30.3. Solution Description ..............................61
196 2.31. Stream Sequence Numbers in Figures .......................62
197 2.31.1. Description of the Problem ........................62
198 2.31.2. Text Changes to the Document ......................63
199 2.31.3. Solution description ..............................67
200 2.32. Unrecognized Parameters ..................................67
201 2.32.1. Description of the Problem ........................67
202 2.32.2. Text Changes to the Document ......................67
203 2.32.3. Solution Description ..............................68
204 2.33. Handling of Unrecognized Parameters ......................68
205 2.33.1. Description of the Problem ........................68
206 2.33.2. Text Changes to the Document ......................68
207 2.33.3. Solution Description ..............................70
208 2.34. Tie Tags .................................................70
209 2.34.1. Description of the Problem ........................70
210 2.34.2. Text Changes to the Document ......................70
211 2.34.3. Solution Description ..............................72
212 2.35. Port Number Verification in the COOKIE-ECHO ..............72
213 2.35.1. Description of the Problem ........................72
214 2.35.2. Text Changes to the Document ......................72
215 2.35.3. Solution Description ..............................73
216 2.36. Path Initialization ......................................74
217 2.36.1. Description of the Problem ........................74
218 2.36.2. Text Changes to the Document ......................74
219 2.36.3. Solution Description ..............................76
220 2.37. ICMP Handling Procedures .................................76
221 2.37.1. Description of the Problem ........................76
222 2.37.2. Text Changes to the Document ......................77
223
224
225
226Stewart, et al. Informational [Page 4]
227
228RFC 4460 SCTP Errata April 2006
229
230
231 2.37.3. Solution Description ..............................79
232 2.38. Checksum .................................................79
233 2.38.1. Description of the problem ........................79
234 2.38.2. Text Changes to the Document ......................79
235 2.38.3. Solution Description ..............................86
236 2.39. Retransmission Policy ....................................86
237 2.39.1. Description of the Problem ........................86
238 2.39.2. Text Changes to the Document ......................87
239 2.39.3. Solution Description ..............................87
240 2.40. Port Number 0 ............................................88
241 2.40.1. Description of the Problem ........................88
242 2.40.2. Text Changes to the Document ......................88
243 2.40.3. Solution Description ..............................89
244 2.41. T Bit ....................................................89
245 2.41.1. Description of the Problem ........................89
246 2.41.2. Text Changes to the Document ......................89
247 2.41.3. Solution Description ..............................93
248 2.42. Unknown Parameter Handling ...............................93
249 2.42.1. Description of the Problem ........................93
250 2.42.2. Text Changes to the Document ......................93
251 2.42.3. Solution Description ..............................95
252 2.43. Cookie Echo Chunk ........................................95
253 2.43.1. Description of the Problem ........................95
254 2.43.2. Text Changes to the Document ......................95
255 2.43.3. Solution Description ..............................96
256 2.44. Partial Chunks ...........................................96
257 2.44.1. Description of the Problem ........................96
258 2.44.2. Text Changes to the Document ......................96
259 2.44.3. Solution Description ..............................97
260 2.45. Non-unicast Addresses ....................................97
261 2.45.1. Description of the Problem ........................97
262 2.45.2. Text Changes to the Document ......................97
263 2.45.3. Solution Description ..............................98
264 2.46. Processing of ABORT Chunks ...............................98
265 2.46.1. Description of the Problem ........................98
266 2.46.2. Text Changes to the Document ......................98
267 2.46.3. Solution Description ..............................98
268 2.47. Sending of ABORT Chunks ..................................99
269 2.47.1. Description of the Problem ........................99
270 2.47.2. Text Changes to the Document ......................99
271 2.47.3. Solution Description ..............................99
272 2.48. Handling of Supported Address Types Parameter ............99
273 2.48.1. Description of the Problem ........................99
274 2.48.2. Text Changes to the Document .....................100
275 2.48.3. Solution Description .............................100
276 2.49. Handling of Unexpected Parameters .......................101
277 2.49.1. Description of the Problem .......................101
278 2.49.2. Text Changes to the Document .....................101
279
280
281
282Stewart, et al. Informational [Page 5]
283
284RFC 4460 SCTP Errata April 2006
285
286
287 2.49.3. Solution Description .............................102
288 2.50. Payload Protocol Identifier .............................102
289 2.50.1. Description of the Problem .......................102
290 2.50.2. Text Changes to the Document .....................103
291 2.50.3. Solution Description .............................103
292 2.51. Karn's Algorithm ........................................104
293 2.51.1. Description of the Problem .......................104
294 2.51.2. Text Changes to the Document .....................104
295 2.51.3. Solution Description .............................104
296 2.52. Fast Retransmit Algorithm ...............................104
297 2.52.1. Description of the Problem .......................104
298 2.52.2. Text Changes to the Document .....................105
299 2.52.3. Solution Description .............................105
300 3. Security Considerations .......................................105
301 4. Acknowledgements ..............................................106
302 5. IANA Considerations ...........................................106
303 6. Normative References ..........................................106
304
3051. Introduction
306
307 This document contains a compilation of all defects found up until
308 the publishing of this document for the Stream Control Transmission
309 Protocol (SCTP), RFC 2960 [5]. These defects may be of an editorial
310 or technical nature. This document may be thought of as a companion
311 document to be used in the implementation of SCTP to clarify errors
312 in the original SCTP document.
313
314 This document provides a history of the changes that will be compiled
315 into RFC 2960's [5] BIS document. Each error will be detailed within
316 this document in the form of
317
318 o the problem description,
319
320 o the text quoted from RFC 2960 [5],
321
322 o the replacement text that should be placed into the BIS document,
323 and
324
325 o a description of the solution.
326
327 This document is a historical record of sequential changes what have
328 been found necessary at various interop events and through discussion
329 on this list.
330
331 Note that because some text is changed several times, the last delta
332 for a text in the document is the erratum for that text in RFC 2960.
333
334
335
336
337
338Stewart, et al. Informational [Page 6]
339
340RFC 4460 SCTP Errata April 2006
341
342
3431.1. Conventions
344
345 The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD,
346 SHOULD NOT, RECOMMENDED, NOT RECOMMENDED, MAY, and OPTIONAL, when
347 they appear in this document, are to be interpreted as described in
348 RFC 2119 [2].
349
3502. Corrections to RFC 2960
351
3522.1. Incorrect Error Type During Chunk Processing.
353
3542.1.1. Description of the Problem
355
356 A typo was discovered in RFC 2960 [5] that incorrectly specifies an
357 action to be taken when processing chunks of unknown identity.
358
3592.1.2. Text changes to the document
360
361 ---------
362 Old text: (Section 3.2)
363 ---------
364
365 01 - Stop processing this SCTP packet and discard it, do not process
366 any further chunks within it, and report the unrecognized
367 parameter in an 'Unrecognized Parameter Type' (in either an
368 ERROR or in the INIT ACK).
369
370 ---------
371 New text: (Section 3.2)
372 ---------
373
374 01 - Stop processing this SCTP packet and discard it, do not process
375 any further chunks within it, and report the unrecognized
376 chunk in an 'Unrecognized Chunk Type'.
377
3782.1.3. Solution Description
379
380 The receiver of an unrecognized chunk should not send a 'parameter'
381 error but instead should send the appropriate chunk error as
382 described above.
383
3842.2. Parameter Processing Issue
385
3862.2.1. Description of the Problem
387
388 A typographical error was introduced through an improper cut and
389 paste in the use of the upper two bits to describe proper handling of
390 unknown parameters.
391
392
393
394Stewart, et al. Informational [Page 7]
395
396RFC 4460 SCTP Errata April 2006
397
398
3992.2.2. Text Changes to the Document
400
401 ---------
402 Old text: (Section 3.2.1)
403 ---------
404
405 00 - Stop processing this SCTP packet and discard it; do not process
406 any further chunks within it.
407
408 01 - Stop processing this SCTP packet and discard it, do not process
409 any further chunks within it, and report the unrecognized
410 parameter in an 'Unrecognized Parameter Type' (in either an
411 ERROR or in the INIT ACK).
412
413 ---------
414 New text: (Section 3.2.1)
415 ---------
416
417 00 - Stop processing this SCTP chunk and discard it, do not process
418 any further parameters within this chunk.
419
420 01 - Stop processing this SCTP chunk and discard it, do not process
421 any further parameters within this chunk, and report the
422 unrecognized parameter in an 'Unrecognized Parameter Type' (in
423 either an ERROR or in the INIT ACK).
424
4252.2.3. Solution Description
426
427 It was always the intent to stop processing at the level one was at
428 in an unknown chunk or parameter with the upper bit set to 0. Thus,
429 if you are processing a chunk, you should drop the packet. If you
430 are processing a parameter, you should drop the chunk.
431
4322.3. Padding Issues
433
4342.3.1. Description of the Problem
435
436 A problem was found when a Chunk terminated in a TLV parameter. If
437 this last TLV was not on a 32-bit boundary (as required), there was
438 confusion as to whether the last padding was included in the chunk
439 length.
440
441
442
443
444
445
446
447
448
449
450Stewart, et al. Informational [Page 8]
451
452RFC 4460 SCTP Errata April 2006
453
454
4552.3.2. Text Changes to the Document
456
457 ---------
458 Old text: (Section 3.2)
459 ---------
460
461 Chunk Length: 16 bits (unsigned integer)
462
463 This value represents the size of the chunk in bytes including the
464 Chunk Type, Chunk Flags, Chunk Length, and Chunk Value fields.
465 Therefore, if the Chunk Value field is zero-length, the Length
466 field will be set to 4. The Chunk Length field does not count any
467 padding.
468
469 Chunk Value: variable length
470
471 The Chunk Value field contains the actual information to be
472 transferred in the chunk. The usage and format of this field is
473 dependent on the Chunk Type.
474
475 The total length of a chunk (including Type, Length and Value fields)
476 MUST be a multiple of 4 bytes. If the length of the chunk is not a
477 multiple of 4 bytes, the sender MUST pad the chunk with all zero
478 bytes and this padding is not included in the chunk length field.
479 The sender should never pad with more than 3 bytes. The receiver
480 MUST ignore the padding bytes.
481
482 ---------
483 New text: (Section 3.2)
484 ---------
485
486 Chunk Length: 16 bits (unsigned integer)
487
488 This value represents the size of the chunk in bytes, including
489 the Chunk Type, Chunk Flags, Chunk Length, and Chunk Value fields.
490 Therefore, if the Chunk Value field is zero-length, the Length
491 field will be set to 4. The Chunk Length field does not count any
492 chunk padding.
493
494 Chunks (including Type, Length, and Value fields) are padded out
495 by the sender with all zero bytes to be a multiple of 4 bytes
496 long. This padding MUST NOT be more than 3 bytes in total. The
497 Chunk Length value does not include terminating padding of the
498 chunk. However, it does include padding of any variable-length
499 parameter except the last parameter in the chunk. The receiver
500 MUST ignore the padding.
501
502
503
504
505
506Stewart, et al. Informational [Page 9]
507
508RFC 4460 SCTP Errata April 2006
509
510
511 Note: A robust implementation should accept the Chunk whether or
512 not the final padding has been included in the Chunk Length.
513
514 Chunk Value: variable length
515
516 The Chunk Value field contains the actual information to be
517 transferred in the chunk. The usage and format of this field is
518 dependent on the Chunk Type.
519
520 The total length of a chunk (including Type, Length, and Value
521 fields) MUST be a multiple of 4 bytes. If the length of the chunk is
522 not a multiple of 4 bytes, the sender MUST pad the chunk with all
523 zero bytes, and this padding is not included in the chunk length
524 field. The sender should never pad with more than 3 bytes. The
525 receiver MUST ignore the padding bytes.
526
5272.3.3. Solution Description
528
529 The above text makes clear that the padding of the last parameter is
530 not included in the Chunk Length field. It also clarifies that the
531 padding of parameters that are not the last one must be counted in
532 the Chunk Length field.
533
5342.4. Parameter Types across All Chunk Types
535
5362.4.1. Description of the Problem
537
538 A problem was noted when multiple errors are needed to be sent
539 regarding unknown or unrecognized parameters. Since often the error
540 type does not hold the chunk type field, it may become difficult to
541 tell which error was associated with which chunk.
542
5432.4.2. Text Changes to the Document
544
545 ---------
546 Old text: (Section 3.2.1)
547 ---------
548
549 The actual SCTP parameters are defined in the specific SCTP chunk
550 sections. The rules for IETF-defined parameter extensions are
551 defined in Section 13.2.
552
553 ---------
554 New text: (Section 3.2.1)
555 ---------
556
557 The actual SCTP parameters are defined in the specific SCTP chunk
558 sections. The rules for IETF-defined parameter extensions are
559
560
561
562Stewart, et al. Informational [Page 10]
563
564RFC 4460 SCTP Errata April 2006
565
566
567 defined in Section 13.2. Note that a parameter type MUST be unique
568 across all chunks. For example, the parameter type '5' is used to
569 represent an IPv4 address (see Section 3.3.2). The value '5' then is
570 reserved across all chunks to represent an IPv4 address and MUST NOT
571 be reused with a different meaning in any other chunk.
572
573 ---------
574 Old text: (Section 13.2)
575 ---------
576
577 13.2 IETF-defined Chunk Parameter Extension
578
579 The assignment of new chunk parameter type codes is done through an
580 IETF Consensus action as defined in [RFC2434]. Documentation of the
581 chunk parameter MUST contain the following information:
582
583 a) Name of the parameter type.
584
585 b) Detailed description of the structure of the parameter field.
586 This structure MUST conform to the general type-length-value
587 format described in Section 3.2.1.
588
589 c) Detailed definition of each component of the parameter type.
590
591 d) Detailed description of the intended use of this parameter type,
592 and an indication of whether and under what circumstances multiple
593 instances of this parameter type may be found within the same
594 chunk.
595
596 ---------
597 New text: (Section 13.2)
598 ---------
599
600 13.2. IETF-defined Chunk Parameter Extension
601
602 The assignment of new chunk parameter type codes is done through an
603 IETF Consensus action, as defined in [RFC2434]. Documentation of the
604 chunk parameter MUST contain the following information:
605
606 a) Name of the parameter type.
607
608 b) Detailed description of the structure of the parameter field.
609 This structure MUST conform to the general type-length-value
610 format described in Section 3.2.1.
611
612 c) Detailed definition of each component of the parameter type.
613
614
615
616
617
618Stewart, et al. Informational [Page 11]
619
620RFC 4460 SCTP Errata April 2006
621
622
623 d) Detailed description of the intended use of this parameter type,
624 and an indication of whether and under what circumstances multiple
625 instances of this parameter type may be found within the same
626 chunk.
627
628 e) Each parameter type MUST be unique across all chunks.
629
6302.4.3. Solution Description
631
632 By having all parameters unique across all chunk assignments (the
633 current assignment policy), no ambiguity exists as to what a
634 parameter means in different contexts. The trade-off for this is a
635 smaller parameter space, i.e., 65,536 parameters versus 65,536 *
636 Number-of- chunks.
637
6382.5. Stream Parameter Clarification
639
6402.5.1. Description of the problem
641
642 A problem was found where the specification is unclear on the
643 legality of an endpoint asking for more stream resources than were
644 allowed in the MIS value of the INIT. In particular, the value in
645 the INIT ACK requested in its OS value was larger than the MIS value
646 received in the INIT chunk. This behavior is illegal, yet it was
647 unspecified in RFC 2960 [5]
648
6492.5.2. Text Changes to the Document
650
651 ---------
652 Old text: (Section 3.3.3)
653 ---------
654
655 Number of Outbound Streams (OS): 16 bits (unsigned integer)
656
657 Defines the number of outbound streams the sender of this INIT ACK
658 chunk wishes to create in this association. The value of 0 MUST
659 NOT be used.
660
661 Note: A receiver of an INIT ACK with the OS value set to 0 SHOULD
662 destroy the association discarding its TCB.
663
664
665
666
667
668
669
670
671
672
673
674Stewart, et al. Informational [Page 12]
675
676RFC 4460 SCTP Errata April 2006
677
678
679 ---------
680 New text: (Section 3.3.3)
681 ---------
682
683 Number of Outbound Streams (OS): 16 bits (unsigned integer)
684
685 Defines the number of outbound streams the sender of this INIT ACK
686 chunk wishes to create in this association. The value of 0 MUST
687 NOT be used, and the value MUST NOT be greater than the MIS value
688 sent in the INIT chunk.
689
690 Note: A receiver of an INIT ACK with the OS value set to 0 SHOULD
691 destroy the association, discarding its TCB.
692
6932.5.3. Solution Description
694
695 The change in wording, above, changes it so that a responder to an
696 INIT chunk does not specify more streams in its OS value than were
697 represented to it in the MIS value, i.e., its maximum.
698
6992.6. Restarting Association Security Issue
700
7012.6.1. Description of the Problem
702
703 A security problem was found when a restart occurs. It is possible
704 for an intruder to send an INIT to an endpoint of an existing
705 association. In the INIT the intruder would list one or more of the
706 current addresses of an association and its own. The normal restart
707 procedures would then occur, and the intruder would have hijacked an
708 association.
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730Stewart, et al. Informational [Page 13]
731
732RFC 4460 SCTP Errata April 2006
733
734
7352.6.2. Text Changes to the Document
736
737 ---------
738 Old text: (Section 3.3.10)
739 ---------
740
741 Cause Code
742 Value Cause Code
743 --------- ----------------
744 1 Invalid Stream Identifier
745 2 Missing Mandatory Parameter
746 3 Stale Cookie Error
747 4 Out of Resource
748 5 Unresolvable Address
749 6 Unrecognized Chunk Type
750 7 Invalid Mandatory Parameter
751 8 Unrecognized Parameters
752 9 No User Data
753 10 Cookie Received While Shutting Down
754
755 Cause Length: 16 bits (unsigned integer)
756
757 Set to the size of the parameter in bytes, including the Cause
758 Code, Cause Length, and Cause-Specific Information fields
759
760 Cause-specific Information: variable length
761
762 This field carries the details of the error condition.
763
764 Sections 3.3.10.1 - 3.3.10.10 define error causes for SCTP.
765
766 Guidelines for the IETF to define new error cause values are
767 discussed in Section 13.3.
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786Stewart, et al. Informational [Page 14]
787
788RFC 4460 SCTP Errata April 2006
789
790
791 ---------
792 New text: (Section 3.3.10)
793 ---------
794
795 Cause Code
796 Value Cause Code
797 --------- ----------------
798 1 Invalid Stream Identifier
799 2 Missing Mandatory Parameter
800 3 Stale Cookie Error
801 4 Out of Resource
802 5 Unresolvable Address
803 6 Unrecognized Chunk Type
804 7 Invalid Mandatory Parameter
805 8 Unrecognized Parameters
806 9 No User Data
807 10 Cookie Received While Shutting Down
808 11 Restart of an Association with New Addresses
809
810 Cause Length: 16 bits (unsigned integer)
811
812 Set to the size of the parameter in bytes, including the Cause
813 Code, Cause Length, and Cause-Specific Information fields.
814
815 Cause-specific Information: variable length
816
817 This field carries the details of the error condition.
818
819 Sections 3.3.10.1 - 3.3.10.11 define error causes for SCTP.
820 Guidelines for the IETF to define new error cause values are
821 discussed in Section 13.3.
822
823 ---------
824 New text: (Note no old text, new error cause added in section 3.3.10)
825 ---------
826
827 3.3.10.11. Restart of an Association with New Addresses (11)
828
829 Cause of error
830 --------------
831 Restart of an association with new addresses: An INIT was received
832 on an existing association. But the INIT added addresses to the
833 association that were previously NOT part of the association. The
834 new addresses are listed in the error code. This ERROR is normally
835 sent as part of an ABORT refusing the INIT (see Section 5.2).
836
837
838
839
840
841
842Stewart, et al. Informational [Page 15]
843
844RFC 4460 SCTP Errata April 2006
845
846
847 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
848 | Cause Code=11 | Cause Length=Variable |
849 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
850 / New Address TLVs /
851 \ \
852 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
853
854 Note: Each New Address TLV is an exact copy of the TLV
855 that was found in the INIT chunk that was new, including the
856 Parameter Type and the Parameter length.
857
858 ---------
859 Old text: (Section 5.2.1)
860 ---------
861
862 Upon receipt of an INIT in the COOKIE-WAIT or COOKIE-ECHOED state, an
863 endpoint MUST respond with an INIT ACK using the same parameters it
864 sent in its original INIT chunk (including its Initiation Tag,
865 unchanged). These original parameters are combined with those from
866 the newly received INIT chunk. The endpoint shall also generate a
867 State Cookie with the INIT ACK. The endpoint uses the parameters
868 sent in its INIT to calculate the State Cookie.
869
870 ---------
871 New text: (Section 5.2.1)
872 ---------
873
874 Upon receipt of an INIT in the COOKIE-WAIT state, an endpoint MUST
875 respond with an INIT ACK using the same parameters it sent in its
876 original INIT chunk (including its Initiation Tag, unchanged). When
877 responding, the endpoint MUST send the INIT ACK back to the same
878 address that the original INIT (sent by this endpoint) was sent to.
879
880 Upon receipt of an INIT in the COOKIE-ECHOED state, an endpoint MUST
881 respond with an INIT ACK using the same parameters it sent in its
882 original INIT chunk (including its Initiation Tag, unchanged),
883 provided that no NEW address has been added to the forming
884 association. If the INIT message indicates that a new address has
885 been added to the association, then the entire INIT MUST be
886 discarded, and NO changes should be made to the existing association.
887 An ABORT SHOULD be sent in response that MAY include the error
888 'Restart of an association with new addresses'. The error SHOULD
889 list the addresses that were added to the restarting association.
890
891
892
893
894
895
896
897
898Stewart, et al. Informational [Page 16]
899
900RFC 4460 SCTP Errata April 2006
901
902
903 When responding in either state (COOKIE-WAIT or COOKIE-ECHOED) with
904 an INIT ACK, the original parameters are combined with those from the
905 newly received INIT chunk. The endpoint shall also generate a State
906 Cookie with the INIT ACK. The endpoint uses the parameters sent in
907 its INIT to calculate the State Cookie.
908
909 ---------
910 Old text: (Section 5.2.2)
911 ---------
912
913 5.2.2 Unexpected INIT in States Other than CLOSED, COOKIE-ECHOED,
914 COOKIE-WAIT and SHUTDOWN-ACK-SENT
915
916 Unless otherwise stated, upon reception of an unexpected INIT for
917 this association, the endpoint shall generate an INIT ACK with a
918 State Cookie. In the outbound INIT ACK the endpoint MUST copy its
919 current Verification Tag and peer's Verification Tag into a reserved
920 place within the state cookie. We shall refer to these locations as
921 the Peer's-Tie-Tag and the Local-Tie-Tag. The outbound SCTP packet
922 containing this INIT ACK MUST carry a Verification Tag value equal to
923 the Initiation Tag found in the unexpected INIT. And the INIT ACK
924 MUST contain a new Initiation Tag (randomly generated see Section
925 5.3.1). Other parameters for the endpoint SHOULD be copied from the
926 existing parameters of the association (e.g., number of outbound
927 streams) into the INIT ACK and cookie.
928
929 After sending out the INIT ACK, the endpoint shall take no further
930 actions, i.e., the existing association, including its current state,
931 and the corresponding TCB MUST NOT be changed.
932
933 Note: Only when a TCB exists and the association is not in a COOKIE-
934 WAIT state are the Tie-Tags populated. For a normal association INIT
935 (i.e., the endpoint is in a COOKIE-WAIT state), the Tie-Tags MUST be
936 set to 0 (indicating that no previous TCB existed). The INIT ACK and
937 State Cookie are populated as specified in section 5.2.1.
938
939 ---------
940 New text: (Section 5.2.2)
941 ---------
942
943 5.2.2. Unexpected INIT in States Other Than CLOSED, COOKIE-ECHOED,
944 COOKIE-WAIT, and SHUTDOWN-ACK-SENT
945
946 Unless otherwise stated, upon receipt of an unexpected INIT for this
947 association, the endpoint shall generate an INIT ACK with a State
948 Cookie. Before responding, the endpoint MUST check to see if the
949 unexpected INIT adds new addresses to the association. If new
950 addresses are added to the association, the endpoint MUST respond
951
952
953
954Stewart, et al. Informational [Page 17]
955
956RFC 4460 SCTP Errata April 2006
957
958
959 with an ABORT, copying the 'Initiation Tag' of the unexpected INIT
960 into the 'Verification Tag' of the outbound packet carrying the
961 ABORT. In the ABORT response, the cause of error MAY be set to
962 'restart of an association with new addresses'. The error SHOULD
963 list the addresses that were added to the restarting association.
964
965 If no new addresses are added, when responding to the INIT in the
966 outbound INIT ACK, the endpoint MUST copy its current Verification
967 Tag and peer's Verification Tag into a reserved place within the
968 state cookie. We shall refer to these locations as the Peer's-Tie-
969 Tag and the Local-Tie-Tag. The outbound SCTP packet containing this
970 INIT ACK MUST carry a Verification Tag value equal to the Initiation
971 Tag found in the unexpected INIT. And the INIT ACK MUST contain a
972 new Initiation Tag (randomly generated; see Section 5.3.1). Other
973 parameters for the endpoint SHOULD be copied from the existing
974 parameters of the association (e.g., number of outbound streams) into
975 the INIT ACK and cookie.
976
977 After sending out the INIT ACK or ABORT, the endpoint shall take no
978 further actions; i.e., the existing association, including its
979 current state, and the corresponding TCB MUST NOT be changed.
980
981 Note: Only when a TCB exists and the association is not in a COOKIE-
982 WAIT or SHUTDOWN-ACK-SENT state are the Tie-Tags populated with a
983 value other than 0. For a normal association INIT (i.e., the
984 endpoint is in the CLOSED state), the Tie-Tags MUST be set to 0
985 (indicating that no previous TCB existed).
986
9872.6.3. Solution Description
988
989 A new error code is being added, along with specific instructions to
990 send back an ABORT to a new association in a restart case or
991 collision case, where new addresses have been added. The error code
992 can be used by a legitimate restart to inform the endpoint that it
993 has made a software error in adding a new address. The endpoint then
994 can choose to wait until the OOTB ABORT tears down the old
995 association, or to restart without the new address.
996
997 Also, the note at the end of Section 5.2.2 explaining the use of the
998 Tie-Tags was modified to properly explain the states in which the
999 Tie-Tags should be set to a value different than 0.
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010Stewart, et al. Informational [Page 18]
1011
1012RFC 4460 SCTP Errata April 2006
1013
1014
10152.7. Implicit Ability to Exceed cwnd by PMTU-1 Bytes
1016
10172.7.1. Description of the Problem
1018
1019 Some implementations were having difficulty growing their cwnd. This
1020 was due to an improper enforcement of the congestion control rules.
1021 The rules, as written, provided for a slop over of the cwnd value.
1022 Without this slop over, the sender would appear NOT to be using its
1023 full cwnd value and thus would never increase it.
1024
10252.7.2. Text Changes to the Document
1026
1027 ---------
1028 Old text: (Section 6.1)
1029 ---------
1030
1031 B) At any given time, the sender MUST NOT transmit new data to a
1032 given transport address if it has cwnd or more bytes of data
1033 outstanding to that transport address.
1034
1035 ---------
1036 New text: (Section 6.1)
1037 ---------
1038
1039 B) At any given time, the sender MUST NOT transmit new data to a
1040 given transport address if it has cwnd or more bytes of data
1041 outstanding to that transport address. The sender may exceed cwnd
1042 by up to (PMTU-1) bytes on a new transmission if the cwnd is not
1043 currently exceeded.
1044
10452.7.3. Solution Description
1046
1047 The text changes make clear the ability to go over the cwnd value by
1048 no more than (PMTU-1) bytes.
1049
10502.8. Issues with Fast Retransmit
1051
10522.8.1. Description of the Problem
1053
1054 Several problems were found in the current specification of fast
1055 retransmit. The current wording did not require GAP ACK blocks to be
1056 sent, even though they are essential to the workings of SCTP's
1057 congestion control. The specification left unclear how to handle the
1058 fast retransmit cycle, having the implementation wait on the cwnd to
1059 retransmit a TSN that was marked for fast retransmit. No limit was
1060 placed on how many times a TSN could be fast retransmitted. Fast
1061 Recovery was not specified, causing the congestion window to be
1062 reduced drastically when there are multiple losses in a single RTT.
1063
1064
1065
1066Stewart, et al. Informational [Page 19]
1067
1068RFC 4460 SCTP Errata April 2006
1069
1070
10712.8.2. Text Changes to the Document
1072
1073 ---------
1074 Old text: (Section 6.2)
1075 ---------
1076
1077 Acknowledgements MUST be sent in SACK chunks unless shutdown was
1078 requested by the ULP in which case an endpoint MAY send an
1079 acknowledgement in the SHUTDOWN chunk. A SACK chunk can acknowledge
1080 the reception of multiple DATA chunks. See Section 3.3.4 for SACK
1081 chunk format. In particular, the SCTP endpoint MUST fill in the
1082 Cumulative TSN Ack field to indicate the latest sequential TSN (of a
1083 valid DATA chunk) it has received. Any received DATA chunks with TSN
1084 greater than the value in the Cumulative TSN Ack field SHOULD also be
1085 reported in the Gap Ack Block fields.
1086
1087 ---------
1088 New text: (Section 6.2)
1089 ---------
1090
1091 Acknowledegments MUST be sent in SACK chunks unless shutdown was
1092 requested by the ULP, in which case an endpoint MAY send an
1093 acknowledgement in the SHUTDOWN chunk. A SACK chunk can acknowledge
1094 the reception of multiple DATA chunks. See Section 3.3.4 for SACK
1095 chunk format. In particular, the SCTP endpoint MUST fill in the
1096 Cumulative TSN Ack field to indicate the latest sequential TSN (of a
1097 valid DATA chunk) it has received. Any received DATA chunks with
1098 TSN greater than the value in the Cumulative TSN Ack field are
1099 reported in the Gap Ack Block fields. The SCTP endpoint MUST
1100 report as many Gap Ack Blocks as can fit in a single SACK
1101 chunk limited by the current path MTU.
1102
1103 ---------
1104 Old text: (Section 6.2.1)
1105 ---------
1106
1107 D) Any time a SACK arrives, the endpoint performs the following:
1108
1109 i) If Cumulative TSN Ack is less than the Cumulative TSN Ack
1110 Point, then drop the SACK. Since Cumulative TSN Ack is
1111 monotonically increasing, a SACK whose Cumulative TSN Ack is
1112 less than the Cumulative TSN Ack Point indicates an out-of-
1113 order SACK.
1114
1115 ii) Set rwnd equal to the newly received a_rwnd minus the
1116 number of bytes still outstanding after processing the
1117 Cumulative TSN Ack and the Gap Ack Blocks.
1118
1119
1120
1121
1122Stewart, et al. Informational [Page 20]
1123
1124RFC 4460 SCTP Errata April 2006
1125
1126
1127 iii) If the SACK is missing a TSN that was previously
1128 acknowledged via a Gap Ack Block (e.g., the data receiver
1129 reneged on the data), then mark the corresponding DATA chunk
1130 as available for retransmit: Mark it as missing for fast
1131 retransmit as described in Section 7.2.4 and if no
1132 retransmit timer is running for the destination address
1133 to which the DATA chunk was originally transmitted, then
1134 T3-rtx is started for that destination address.
1135
1136 ---------
1137 New text: (Section 6.2.1)
1138 ---------
1139
1140 D) Any time a SACK arrives, the endpoint performs the following:
1141
1142 i) If Cumulative TSN Ack is less than the Cumulative TSN Ack
1143 Point, then drop the SACK. Since Cumulative TSN Ack is
1144 monotonically increasing, a SACK whose Cumulative TSN Ack is
1145 less than the Cumulative TSN Ack Point indicates an out-of-
1146 order SACK.
1147
1148 ii) Set rwnd equal to the newly received a_rwnd minus the
1149 number of bytes still outstanding after processing the
1150 Cumulative TSN Ack and the Gap Ack Blocks.
1151
1152 iii) If the SACK is missing a TSN that was previously
1153 acknowledged via a Gap Ack Block (e.g., the data receiver
1154 reneged on the data), then consider the corresponding DATA
1155 that might be possibly missing: Count one miss indication
1156 towards fast retransmit as described in Section 7.2.4, and
1157 if no retransmit timer is running for the destination
1158 address to which the DATA chunk was originally transmitted,
1159 then T3-rtx is started for that destination address.
1160
1161 iv) If the Cumulative TSN Ack matches or exceeds the Fast
1162 Recovery exitpoint (Section 7.2.4), Fast Recovery is exited.
1163
1164 ---------
1165 Old text: (Section 7.2.4)
1166 ---------
1167
1168 Whenever an endpoint receives a SACK that indicates some TSN(s)
1169 missing, it SHOULD wait for 3 further miss indications (via
1170 subsequent SACK's) on the same TSN(s) before taking action with
1171 regard to Fast Retransmit.
1172
1173 When the TSN(s) is reported as missing in the fourth consecutive
1174 SACK, the data sender shall:
1175
1176
1177
1178Stewart, et al. Informational [Page 21]
1179
1180RFC 4460 SCTP Errata April 2006
1181
1182
1183 1) Mark the missing DATA chunk(s) for retransmission,
1184
1185 2) Adjust the ssthresh and cwnd of the destination address(es) to
1186 which the missing DATA chunks were last sent, according to the
1187 formula described in Section 7.2.3.
1188
1189 3) Determine how many of the earliest (i.e., lowest TSN) DATA chunks
1190 marked for retransmission will fit into a single packet, subject
1191 to constraint of the path MTU of the destination transport address
1192 to which the packet is being sent. Call this value K. Retransmit
1193 those K DATA chunks in a single packet.
1194
1195 4) Restart T3-rtx timer only if the last SACK acknowledged the lowest
1196 outstanding TSN number sent to that address, or the endpoint is
1197 retransmitting the first outstanding DATA chunk sent to that
1198 address.
1199
1200 Note: Before the above adjustments, if the received SACK also
1201 acknowledges new DATA chunks and advances the Cumulative TSN Ack
1202 Point, the cwnd adjustment rules defined in Sections 7.2.1 and 7.2.2
1203 must be applied first.
1204
1205 A straightforward implementation of the above keeps a counter for
1206 each TSN hole reported by a SACK. The counter increments for each
1207 consecutive SACK reporting the TSN hole. After reaching 4 and
1208 starting the fast retransmit procedure, the counter resets to 0.
1209 Because cwnd in SCTP indirectly bounds the number of outstanding
1210 TSN's, the effect of TCP fast-recovery is achieved automatically with
1211 no adjustment to the congestion control window size.
1212
1213 ---------
1214 New text: (Section 7.2.4)
1215 ---------
1216
1217 Whenever an endpoint receives a SACK that indicates that some TSNs
1218 are missing, it SHOULD wait for 3 further miss indications (via
1219 subsequent SACKs) on the same TSN(s) before taking action with
1220 regard to Fast Retransmit.
1221
1222 Miss indications SHOULD follow the HTNA (Highest TSN Newly
1223 Acknowledged) algorithm. For each incoming SACK, miss
1224 indications are incremented only for missing TSNs prior to
1225 the highest TSN newly acknowledged in the SACK. A newly
1226 acknowledged DATA chunk is one not previously acknowledged
1227 in a SACK. If an endpoint is in Fast Recovery and a SACK
1228 arrives that advances the Cumulative TSN Ack Point, the
1229 miss indications are incremented for all TSNs reported
1230 missing in the SACK.
1231
1232
1233
1234Stewart, et al. Informational [Page 22]
1235
1236RFC 4460 SCTP Errata April 2006
1237
1238
1239 When the fourth consecutive miss indication is received for a TSN(s),
1240 the data sender shall do the following:
1241
1242 1) Mark the DATA chunk(s) with four miss indications for
1243 retransmission.
1244
1245 2) If not in Fast Recovery, adjust the ssthresh and cwnd of the
1246 destination address(es) to which the missing DATA chunks were
1247 last sent, according to the formula described in Section 7.2.3.
1248
1249 3) Determine how many of the earliest (i.e., lowest TSN) DATA chunks
1250 marked for retransmission will fit into a single packet, subject
1251 to constraint of the path MTU of the destination transport address
1252 to which the packet is being sent. Call this value K. Retransmit
1253 those K DATA chunks in a single packet. When a Fast Retransmit is
1254 being performed, the sender SHOULD ignore the value of cwnd and
1255 SHOULD NOT delay retransmission for this single packet.
1256
1257 4) Restart T3-rtx timer only if the last SACK acknowledged the lowest
1258 outstanding TSN number sent to that address, or the endpoint is
1259 retransmitting the first outstanding DATA chunk sent to that
1260 address.
1261
1262 5) Mark the DATA chunk(s) as being fast retransmitted and thus
1263 ineligible for a subsequent fast retransmit. Those TSNs marked
1264 for retransmission due to the Fast Retransmit algorithm that
1265 did not fit in the sent datagram carrying K other TSNs are also
1266 marked as ineligible for a subsequent fast retransmit. However,
1267 as they are marked for retransmission they will be retransmitted
1268 later on as soon as cwnd allows.
1269
1270 6) If not in Fast Recovery, enter Fast Recovery and mark the highest
1271 outstanding TSN as the Fast Recovery exit point. When a SACK
1272 acknowledges all TSNs up to and including this exit point, Fast
1273 Recovery is exited. While in Fast Recovery, the ssthresh and cwnd
1274 SHOULD NOT change for any destinations due to a subsequent Fast
1275 Recovery event (i.e., one SHOULD NOT reduce the cwnd further due
1276 to a subsequent fast retransmit).
1277
1278 Note: Before the above adjustments, if the received SACK also
1279 acknowledges new DATA chunks and advances the Cumulative TSN Ack
1280 Point, the cwnd adjustment rules defined in Sections 7.2.1 and 7.2.2
1281 must be applied first.
1282
12832.8.3. Solution Description
1284
1285 The effect of the above wording changes are as follows:
1286
1287
1288
1289
1290Stewart, et al. Informational [Page 23]
1291
1292RFC 4460 SCTP Errata April 2006
1293
1294
1295 o It requires with a MUST the sending of GAP Ack blocks instead of
1296 the current RFC 2960 [5] SHOULD.
1297
1298 o It allows a TSN being Fast Retransmitted (FR) to be sent only once
1299 via FR.
1300
1301 o It ends the delay in waiting for the flight size to drop when a
1302 TSN is identified as being ready to FR.
1303
1304 o It changes the way chunks are marked during fast retransmit, so
1305 that only new reports are counted.
1306
1307 o It introduces a Fast Recovery period to avoid multiple congestion
1308 window reductions when there are multiple losses in a single RTT
1309 (as shown by Caro et al. [3]).
1310
1311 These changes will effectively allow SCTP to follow a similar model
1312 as TCP+SACK in the handling of Fast Retransmit.
1313
13142.9. Missing Statement about partial_bytes_acked Update
1315
13162.9.1. Description of the Problem
1317
1318 SCTP uses four control variables to regulate its transmission rate:
1319 rwnd, cwnd, ssthresh, and partial_bytes_acked. Upon detection of
1320 packet losses from SACK, or when the T3-rtx timer expires on an
1321 address, cwnd and ssthresh should be updated as stated in Section
1322 7.2.3. However, that section should also clarify that
1323 partial_bytes_acked must be updated as well; it has to be reset to 0.
1324
13252.9.2. Text Changes to the Document
1326
1327 ---------
1328 Old text: (Section 7.2.3)
1329 ---------
1330
1331 7.2.3 Congestion Control
1332
1333 Upon detection of packet losses from SACK (see Section 7.2.4), An
1334 endpoint should do the following:
1335
1336 ssthresh = max(cwnd/2, 2*MTU)
1337 cwnd = ssthresh
1338
1339 Basically, a packet loss causes cwnd to be cut in half.
1340
1341 When the T3-rtx timer expires on an address, SCTP should perform slow
1342 start by:
1343
1344
1345
1346Stewart, et al. Informational [Page 24]
1347
1348RFC 4460 SCTP Errata April 2006
1349
1350
1351 ssthresh = max(cwnd/2, 2*MTU)
1352 cwnd = 1*MTU
1353
1354 ---------
1355 New text: (Section 7.2.3)
1356 ---------
1357
1358 7.2.3. Congestion Control
1359
1360 Upon detection of packet losses from SACK (see Section 7.2.4), an
1361 endpoint should do the following if not in Fast Recovery:
1362
1363 ssthresh = max(cwnd/2, 2*MTU)
1364 cwnd = ssthresh
1365 partial_bytes_acked = 0
1366
1367 Basically, a packet loss causes cwnd to be cut in half.
1368
1369 When the T3-rtx timer expires on an address, SCTP should perform slow
1370 start by
1371
1372 ssthresh = max(cwnd/2, 2*MTU)
1373 cwnd = 1*MTU
1374 partial_bytes_acked = 0
1375
13762.9.3. Solution Description
1377
1378 The missing text added solves the doubts about what to do with
1379 partial_bytes_acked in the situations stated in Section 7.2.3, making
1380 clear that, along with ssthresh and cwnd, partial_bytes_acked should
1381 also be updated by being reset to 0.
1382
13832.10. Issues with Heartbeating and Failure Detection
1384
13852.10.1. Description of the Problem
1386
1387 Five basic problems have been discovered with the current heartbeat
1388 procedures:
1389
1390 o The current specification does not specify that you should count a
1391 failed heartbeat as an error against the overall association.
1392
1393 o The current specification is not specific as to when you start
1394 sending heartbeats and when you should stop.
1395
1396 o The current specification is not specific as to when you should
1397 respond to heartbeats.
1398
1399
1400
1401
1402Stewart, et al. Informational [Page 25]
1403
1404RFC 4460 SCTP Errata April 2006
1405
1406
1407 o When responding to a Heartbeat, it is unclear what to do if more
1408 than a single TLV is present.
1409
1410 o The jitter applied to a heartbeat was meant to be a small variance
1411 of the RTO and is currently a wide variance, due to the default
1412 delay time and incorrect wording within the RFC.
1413
14142.10.2. Text Changes to the Document
1415
1416 ---------
1417 Old text: (Section 8.1)
1418 ---------
1419
1420 8.1 Endpoint Failure Detection
1421
1422 An endpoint shall keep a counter on the total number of consecutive
1423 retransmissions to its peer (including retransmissions to all the
1424 destination transport addresses of the peer if it is multi-homed).
1425 If the value of this counter exceeds the limit indicated in the
1426 protocol parameter 'Association.Max.Retrans', the endpoint shall
1427 consider the peer endpoint unreachable and shall stop transmitting
1428 any more data to it (and thus the association enters the CLOSED
1429 state). In addition, the endpoint shall report the failure to the
1430 upper layer, and optionally report back all outstanding user data
1431 remaining in its outbound queue. The association is automatically
1432 closed when the peer endpoint becomes unreachable.
1433
1434 The counter shall be reset each time a DATA chunk sent to that peer
1435 endpoint is acknowledged (by the reception of a SACK), or a
1436 HEARTBEAT-ACK is received from the peer endpoint.
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458Stewart, et al. Informational [Page 26]
1459
1460RFC 4460 SCTP Errata April 2006
1461
1462
1463 ---------
1464 New text: (Section 8.1)
1465 ---------
1466
1467 8.1. Endpoint Failure Detection
1468
1469 An endpoint shall keep a counter on the total number of consecutive
1470 retransmissions to its peer (this includes retransmissions to all the
1471 destination transport addresses of the peer if it is multi-homed),
1472 including unacknowledged HEARTBEAT Chunks. If the value of this
1473 counter exceeds the limit indicated in the protocol parameter
1474 'Association.Max.Retrans', the endpoint shall consider the peer
1475 endpoint unreachable and shall stop transmitting any more data to it
1476 (and thus the association enters the CLOSED state). In addition, the
1477 endpoint MAY report the failure to the upper layer and optionally
1478 report back all outstanding user data remaining in its outbound
1479 queue. The association is automatically closed when the peer
1480 endpoint becomes unreachable.
1481
1482 The counter shall be reset each time a DATA chunk sent to that peer
1483 endpoint is acknowledged (by the reception of a SACK), or a
1484 HEARTBEAT-ACK is received from the peer endpoint.
1485
1486
1487 ---------
1488 Old text: (Section 8.3)
1489 ---------
1490
1491 8.3 Path Heartbeat
1492
1493 By default, an SCTP endpoint shall monitor the reachability of the
1494 idle destination transport address(es) of its peer by sending a
1495 HEARTBEAT chunk periodically to the destination transport
1496 address(es).
1497
1498 ---------
1499 New text: (Section 8.3)
1500 ---------
1501
1502 8.3 Path Heartbeat
1503
1504 By default, an SCTP endpoint SHOULD monitor the reachability of the
1505 idle destination transport address(es) of its peer by sending a
1506 HEARTBEAT chunk periodically to the destination transport
1507 address(es). HEARTBEAT sending MAY begin upon reaching the
1508 ESTABLISHED state and is discontinued after sending either SHUTDOWN
1509 or SHUTDOWN-ACK. A receiver of a HEARTBEAT MUST respond to a
1510 HEARTBEAT with a HEARTBEAT-ACK after entering the COOKIE-ECHOED state
1511
1512
1513
1514Stewart, et al. Informational [Page 27]
1515
1516RFC 4460 SCTP Errata April 2006
1517
1518
1519 (INIT sender) or the ESTABLISHED state (INIT receiver), up until
1520 reaching the SHUTDOWN-SENT state (SHUTDOWN sender) or the SHUTDOWN-
1521 ACK-SENT state (SHUTDOWN receiver).
1522
1523
1524 ---------
1525 Old text: (Section 8.3)
1526 ---------
1527
1528 The receiver of the HEARTBEAT should immediately respond with a
1529 HEARTBEAT ACK that contains the Heartbeat Information field copied
1530 from the received HEARTBEAT chunk.
1531
1532 ---------
1533 New text: (Section 8.3)
1534 ---------
1535
1536 The receiver of the HEARTBEAT should immediately respond with a
1537 HEARTBEAT ACK that contains the Heartbeat Information TLV, together
1538 with any other received TLVs, copied unchanged from the received
1539 HEARTBEAT chunk.
1540
1541
1542 ---------
1543 Old text: (Section 8.3)
1544 ---------
1545
1546 On an idle destination address that is allowed to heartbeat, a
1547 HEARTBEAT chunk is RECOMMENDED to be sent once per RTO of that
1548 destination address plus the protocol parameter 'HB.interval' , with
1549 jittering of +/- 50%, and exponential back-off of the RTO if the
1550 previous HEARTBEAT is unanswered.
1551
1552 ---------
1553 New text: (Section 8.3)
1554 ---------
1555
1556 On an idle destination address that is allowed to heartbeat, it is
1557 recommended that a HEARTBEAT chunk is sent once per RTO of that
1558 destination address plus the protocol parameter 'HB.interval', with
1559 jittering of +/- 50% of the RTO value, and exponential back-off of
1560 the RTO if the previous HEARTBEAT is unanswered.
1561
15622.10.3. Solution Description
1563
1564 The above text provides guidance as to how to respond to the five
1565 issues mentioned in Section 2.10.1. In particular, the wording
1566 changes provide guidance as to when to start and stop heartbeating,
1567
1568
1569
1570Stewart, et al. Informational [Page 28]
1571
1572RFC 4460 SCTP Errata April 2006
1573
1574
1575 how to respond to a heartbeat with extra parameters, and it clarifies
1576 the error counting procedures for the association.
1577
15782.11. Security interactions with firewalls
1579
15802.11.1. Description of the Problem
1581
1582 When dealing with firewalls, it is advantageous for the firewall to
1583 be able to properly determine the initial startup sequence of a
1584 reliable transport protocol. With this in mind, the following text
1585 is to be added to SCTP's security section.
1586
15872.11.2. Text Changes to the Document
1588
1589 ---------
1590 New text: (no old text, new section added)
1591 ---------
1592
1593 11.4 SCTP Interactions with Firewalls
1594
1595 It is helpful for some firewalls if they can inspect
1596 just the first fragment of a fragmented SCTP packet and unambiguously
1597 determine whether it corresponds to an INIT chunk (for further
1598 information, please refer to RFC1858). Accordingly, we
1599 stress the requirements, stated in 3.1, that (1) an INIT chunk MUST
1600 NOT be bundled with any other chunk in a packet, and (2) a packet
1601 containing an INIT chunk MUST have a zero Verification Tag.
1602 Furthermore, we require that the receiver of an INIT chunk MUST
1603 enforce these rules by silently discarding an arriving packet with an
1604 INIT chunk that is bundled with other chunks.
1605
1606 ---------
1607 Old text: (Section 18)
1608 ---------
1609
1610 18. Bibliography
1611
1612 [ALLMAN99] Allman, M. and Paxson, V., "On Estimating End-to-End
1613 Network Path Properties", Proc. SIGCOMM'99, 1999.
1614
1615 [FALL96] Fall, K. and Floyd, S., Simulation-based Comparisons of
1616 Tahoe, Reno, and SACK TCP, Computer Communications Review,
1617 V. 26 N. 3, July 1996, pp. 5-21.
1618
1619 [RFC1750] Eastlake, D. (ed.), "Randomness Recommendations for
1620 Security", RFC 1750, December 1994.
1621
1622
1623
1624
1625
1626Stewart, et al. Informational [Page 29]
1627
1628RFC 4460 SCTP Errata April 2006
1629
1630
1631 [RFC1950] Deutsch P. and J. Gailly, "ZLIB Compressed Data Format
1632 Specification version 3.3", RFC 1950, May 1996.
1633
1634 [RFC2104] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-
1635 Hashing for Message Authentication", RFC 2104, March 1997.
1636
1637 [RFC2196] Fraser, B., "Site Security Handbook", FYI 8, RFC 2196,
1638 September 1997.
1639
1640 [RFC2522] Karn, P. and W. Simpson, "Photuris: Session-Key Management
1641 Protocol", RFC 2522, March 1999.
1642
1643 [SAVAGE99] Savage, S., Cardwell, N., Wetherall, D., and Anderson, T.,
1644 "TCP Congestion Control with a Misbehaving Receiver", ACM
1645 Computer Communication Review, 29(5), October 1999.
1646
1647 ---------
1648 New text: (Section 18)
1649 ---------
1650
1651 18. Bibliography
1652
1653 [ALLMAN99] Allman, M. and Paxson, V., "On Estimating End-to-End
1654 Network Path Properties", Proc. SIGCOMM'99, 1999.
1655
1656 [FALL96] Fall, K. and Floyd, S., Simulation-based Comparisons of
1657 Tahoe, Reno, and SACK TCP, Computer Communications Review,
1658 V. 26 N. 3, July 1996, pp. 5-21.
1659
1660 [RFC1750] Eastlake, D. (ed.), "Randomness Recommendations for
1661 Security", RFC 1750, December 1994.
1662
1663 [RFC1858] Ziemba, G., Reed, D. and Traina P., "Security
1664 Considerations for IP Fragment Filtering", RFC 1858,
1665 October 1995.
1666
1667 [RFC1950] Deutsch P. and J. Gailly, "ZLIB Compressed Data Format
1668 Specification version 3.3", RFC 1950, May 1996.
1669
1670 [RFC2104] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-
1671 Hashing for Message Authentication", RFC 2104, March 1997.
1672
1673 [RFC2196] Fraser, B., "Site Security Handbook", FYI 8, RFC 2196,
1674 September 1997.
1675
1676 [RFC2522] Karn, P. and W. Simpson, "Photuris: Session-Key Management
1677 Protocol", RFC 2522, March 1999.
1678
1679
1680
1681
1682Stewart, et al. Informational [Page 30]
1683
1684RFC 4460 SCTP Errata April 2006
1685
1686
1687 [SAVAGE99] Savage, S., Cardwell, N., Wetherall, D., and Anderson, T.,
1688 "TCP Congestion Control with a Misbehaving Receiver", ACM
1689 Computer Communication Review, 29(5), October 1999.
1690
16912.11.3. Solution Description
1692
1693 The above text, which adds a new subsection to the Security
1694 Considerations section of RFC 2960 [5] makes clear that, to make
1695 easier the interaction with firewalls, an INIT chunk must not be
1696 bundled in any case with any other chunk that will silently discard
1697 the packets that do not follow this rule (this rule is enforced by
1698 the packet receiver).
1699
17002.12. Shutdown Ambiguity
1701
17022.12.1. Description of the Problem
1703
1704 Currently, there is an ambiguity between the statements in Sections
1705 6.2 and 9.2. Section 6.2 allows the sending of a SHUTDOWN chunk in
1706 place of a SACK when the sender is in the process of shutting down,
1707 while section 9.2 requires that both a SHUTDOWN chunk and a SACK
1708 chunk be sent.
1709
1710 Along with this ambiguity there is a problem wherein an errant
1711 SHUTDOWN receiver may fail to stop accepting user data.
1712
17132.12.2. Text Changes to the Document
1714
1715 ---------
1716 Old text: (Section 9.2)
1717 ---------
1718
1719 If there are still outstanding DATA chunks left, the SHUTDOWN
1720 receiver shall continue to follow normal data transmission procedures
1721 defined in Section 6 until all outstanding DATA chunks are
1722 acknowledged; however, the SHUTDOWN receiver MUST NOT accept new data
1723 from its SCTP user.
1724
1725 While in SHUTDOWN-SENT state, the SHUTDOWN sender MUST immediately
1726 respond to each received packet containing one or more DATA chunk(s)
1727 with a SACK, a SHUTDOWN chunk, and restart the T2-shutdown timer. If
1728 it has no more outstanding DATA chunks, the SHUTDOWN receiver shall
1729 send a SHUTDOWN ACK and start a T2-shutdown timer of its own,
1730 entering the SHUTDOWN-ACK-SENT state. If the timer expires, the
1731 endpoint must re-send the SHUTDOWN ACK.
1732
1733
1734
1735
1736
1737
1738Stewart, et al. Informational [Page 31]
1739
1740RFC 4460 SCTP Errata April 2006
1741
1742
1743 ---------
1744 New text: (Section 9.2)
1745 ---------
1746
1747 If there are still outstanding DATA chunks left, the SHUTDOWN
1748 receiver MUST continue to follow normal data transmission procedures
1749 defined in Section 6, until all outstanding DATA chunks are
1750 acknowledged; however, the SHUTDOWN receiver MUST NOT accept new data
1751 from its SCTP user.
1752
1753 While in SHUTDOWN-SENT state, the SHUTDOWN sender MUST immediately
1754 respond to each received packet containing one or more DATA chunks
1755 with a SHUTDOWN chunk and restart the T2-shutdown timer. If a
1756 SHUTDOWN chunk by itself cannot acknowledge all of the received DATA
1757 chunks (i.e., there are TSNs that can be acknowledged that are larger
1758 than the cumulative TSN, and thus gaps exist in the TSN sequence), or
1759 if duplicate TSNs have been received, then a SACK chunk MUST also be
1760 sent.
1761
1762 The sender of the SHUTDOWN MAY also start an overall guard timer
1763 'T5-shutdown-guard' to bound the overall time for shutdown sequence.
1764 At the expiration of this timer, the sender SHOULD abort the
1765 association by sending an ABORT chunk. If the 'T5-shutdown-guard'
1766 timer is used, it SHOULD be set to the recommended value of 5 times
1767 'RTO.Max'.
1768
1769 If the receiver of the SHUTDOWN has no more outstanding DATA chunks,
1770 the SHUTDOWN receiver MUST send a SHUTDOWN ACK and start a
1771 T2-shutdown timer of its own, entering the SHUTDOWN-ACK-SENT state.
1772 If the timer expires, the endpoint must re-send the SHUTDOWN ACK.
1773
17742.12.3. Solution Description
1775
1776 The above text clarifies the use of a SACK in conjunction with a
1777 SHUTDOWN chunk. It also adds a guard timer to the SCTP shutdown
1778 sequence to protect against errant receivers of SHUTDOWN chunks.
1779
17802.13. Inconsistency in ABORT Processing
1781
17822.13.1. Description of the Problem
1783
1784 It was noted that the wording in Section 8.5.1 did not give proper
1785 directions in the use of the 'T bit' with the Verification Tags.
1786
1787
1788
1789
1790
1791
1792
1793
1794Stewart, et al. Informational [Page 32]
1795
1796RFC 4460 SCTP Errata April 2006
1797
1798
17992.13.2. Text changes to the document
1800
1801 ---------
1802 Old text: (Section 8.5.1)
1803 ---------
1804
1805 B) Rules for packet carrying ABORT:
1806
1807 - The endpoint shall always fill in the Verification Tag field
1808 of the outbound packet with the destination endpoint's tag
1809 value if it is known.
1810
1811 - If the ABORT is sent in response to an OOTB packet, the
1812 endpoint MUST follow the procedure described in Section 8.4.
1813
1814 - The receiver MUST accept the packet if the Verification Tag
1815 matches either its own tag, OR the tag of its peer. Otherwise,
1816 the receiver MUST silently discard the packet and take no
1817 further action.
1818
1819 ---------
1820 New text: (Section 8.5.1)
1821 ---------
1822
1823 B) Rules for packet carrying ABORT:
1824
1825 - The endpoint MUST always fill in the Verification Tag field of
1826 the outbound packet with the destination endpoint's tag value,
1827 if it is known.
1828
1829 - If the ABORT is sent in response to an OOTB packet, the
1830 endpoint MUST follow the procedure described in Section 8.4.
1831
1832 - The receiver of a ABORT MUST accept the packet if the
1833 Verification Tag field of the packet matches its own tag OR if
1834 it is set to its peer's tag and the T bit is set in the Chunk
1835 Flags. Otherwise, the receiver MUST silently discard the
1836 packet and take no further action.
1837
18382.13.3. Solution Description
1839
1840 The above text change clarifies that the T bit must be set before an
1841 implementation looks for the peer's tag.
1842
1843
1844
1845
1846
1847
1848
1849
1850Stewart, et al. Informational [Page 33]
1851
1852RFC 4460 SCTP Errata April 2006
1853
1854
18552.14. Cwnd Gated by Its Full Use
1856
18572.14.1. Description of the Problem
1858
1859 A problem was found with the current specification of the growth and
1860 decay of cwnd. The cwnd should only be increased if it is being
1861 fully utilized, and after periods of underutilization, the cwnd
1862 should be decreased. In some sections, the current wording is weak
1863 and is not clearly defined. Also, the current specification
1864 unnecessarily introduces the need for special case code to ensure
1865 cwnd degradation. Plus, the cwnd should not be increased during Fast
1866 Recovery, since a full cwnd during Fast Recovery does not qualify the
1867 cwnd as being fully utilized. Additionally, multiple loss scenarios
1868 in a single window may cause the cwnd to grow more rapidly as the
1869 number of losses in a window increases [3].
1870
18712.14.2. Text Changes to the Document
1872
1873 ---------
1874 Old text: (Section 6.1)
1875 ---------
1876
1877 D) Then, the sender can send out as many new DATA chunks as Rule A
1878 and Rule B above allow.
1879
1880 ---------
1881 New text: (Section 6.1)
1882 ---------
1883
1884 D) When the time comes for the sender to transmit new DATA chunks,
1885 the protocol parameter Max.Burst SHOULD be used to limit the
1886 number of packets sent. The limit MAY be applied by adjusting
1887 cwnd as follows:
1888
1889 if((flightsize + Max.Burst*MTU) < cwnd)
1890 cwnd = flightsize + Max.Burst*MTU
1891
1892 Or it MAY be applied by strictly limiting the number of packets
1893 emitted by the output routine.
1894
1895 E) Then, the sender can send out as many new DATA chunks as Rule A
1896 and Rule B allow.
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906Stewart, et al. Informational [Page 34]
1907
1908RFC 4460 SCTP Errata April 2006
1909
1910
1911 ---------
1912 Old text: (Section 7.2.1)
1913 ---------
1914
1915 o When cwnd is less than or equal to ssthresh an SCTP endpoint MUST
1916 use the slow start algorithm to increase cwnd (assuming the
1917 current congestion window is being fully utilized). If an
1918 incoming SACK advances the Cumulative TSN Ack Point, cwnd MUST be
1919 increased by at most the lesser of 1) the total size of the
1920 previously outstanding DATA chunk(s) acknowledged, and 2) the
1921 destination's path MTU. This protects against the ACK-Splitting
1922 attack outlined in [SAVAGE99].
1923
1924 ---------
1925 New text: (Section 7.2.1)
1926 ---------
1927
1928 o When cwnd is less than or equal to ssthresh, an SCTP endpoint MUST
1929 use the slow start algorithm to increase cwnd only if the current
1930 congestion window is being fully utilized, an incoming SACK
1931 advances the Cumulative TSN Ack Point, and the data sender is not
1932 in Fast Recovery. Only when these three conditions are met can
1933 the cwnd be increased; otherwise, the cwnd MUST not be increased.
1934 If these conditions are met, then cwnd MUST be increased by, at
1935 most, the lesser of 1) the total size of the previously
1936 outstanding DATA chunk(s) acknowledged, and 2) the destination's
1937 path MTU. This upper bound protects against the ACK-Splitting
1938 attack outlined in [SAVAGE99].
1939
1940
1941 ---------
1942 Old text: (Section 14)
1943 ---------
1944
1945 14. Suggested SCTP Protocol Parameter Values
1946
1947 The following protocol parameters are RECOMMENDED:
1948
1949 RTO.Initial - 3 seconds
1950 RTO.Min - 1 second
1951 RTO.Max - 60 seconds
1952 RTO.Alpha - 1/8
1953 RTO.Beta - 1/4
1954 Valid.Cookie.Life - 60 seconds
1955 Association.Max.Retrans - 10 attempts
1956 Path.Max.Retrans - 5 attempts (per destination address)
1957 Max.Init.Retransmits - 8 attempts
1958 HB.interval - 30 seconds
1959
1960
1961
1962Stewart, et al. Informational [Page 35]
1963
1964RFC 4460 SCTP Errata April 2006
1965
1966
1967 ---------
1968 New text: (Section 14)
1969 ---------
1970
1971 14. Suggested SCTP Protocol Parameter Values
1972
1973 The following protocol parameters are RECOMMENDED:
1974
1975 RTO.Initial - 3 seconds
1976 RTO.Min - 1 second
1977 RTO.Max - 60 seconds
1978 Max.Burst - 4
1979 RTO.Alpha - 1/8
1980 RTO.Beta - 1/4
1981 Valid.Cookie.Life - 60 seconds
1982 Association.Max.Retrans - 10 attempts
1983 Path.Max.Retrans - 5 attempts (per destination address)
1984 Max.Init.Retransmits - 8 attempts
1985 HB.Interval - 30 seconds
1986
19872.14.3. Solution Description
1988
1989 The above changes strengthen the rules and make it much more apparent
1990 as to the need to block cwnd growth when the full cwnd is not being
1991 utilized. The changes also apply cwnd degradation without
1992 introducing the need for complex special case code.
1993
19942.15. Window Probes in SCTP
1995
19962.15.1. Description of the Problem
1997
1998 When a receiver clamps its rwnd to 0 to flow control the peer, the
1999 specification implies that one must continue to accept data from the
2000 remote peer. This is incorrect and needs clarification.
2001
20022.15.2. Text Changes to the Document
2003
2004 ---------
2005 Old text: (Section 6.2)
2006 ---------
2007
2008 The SCTP endpoint MUST always acknowledge the receipt of each valid
2009 DATA chunk.
2010
2011
2012
2013
2014
2015
2016
2017
2018Stewart, et al. Informational [Page 36]
2019
2020RFC 4460 SCTP Errata April 2006
2021
2022
2023 ---------
2024 New text: (Section 6.2)
2025 ---------
2026
2027 The SCTP endpoint MUST always acknowledge the reception of each valid
2028 DATA chunk when the DATA chunk received is inside its receive window.
2029
2030 When the receiver's advertised window is 0, the receiver MUST drop
2031 any new incoming DATA chunk with a TSN larger than the largest TSN
2032 received so far. If the new incoming DATA chunk holds a TSN value
2033 less than the largest TSN received so far, then the receiver SHOULD
2034 drop the largest TSN held for reordering and accept the new incoming
2035 DATA chunk. In either case, if such a DATA chunk is dropped, the
2036 receiver MUST immediately send back a SACK with the current receive
2037 window showing only DATA chunks received and accepted so far. The
2038 dropped DATA chunk(s) MUST NOT be included in the SACK, as they were
2039 not accepted. The receiver MUST also have an algorithm for
2040 advertising its receive window to avoid receiver silly window
2041 syndrome (SWS), as described in RFC 813. The algorithm can be
2042 similar to the one described in Section 4.2.3.3 of RFC 1122.
2043
2044
2045 ---------
2046 Old text: (Section 6.1)
2047 ---------
2048
2049 A) At any given time, the data sender MUST NOT transmit new data to
2050 any destination transport address if its peer's rwnd indicates
2051 that the peer has no buffer space (i.e., rwnd is 0, see Section
2052 6.2.1). However, regardless of the value of rwnd (including if it
2053 is 0), the data sender can always have one DATA chunk in flight to
2054 the receiver if allowed by cwnd (see rule B below). This rule
2055 allows the sender to probe for a change in rwnd that the sender
2056 missed due to the SACK having been lost in transit from the data
2057 receiver to the data sender.
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074Stewart, et al. Informational [Page 37]
2075
2076RFC 4460 SCTP Errata April 2006
2077
2078
2079 ---------
2080 New text: (Section 6.1)
2081 ---------
2082
2083 A) At any given time, the data sender MUST NOT transmit new data to
2084 any destination transport address if its peer's rwnd indicates
2085 that the peer has no buffer space (i.e., rwnd is 0; see Section
2086 6.2.1). However, regardless of the value of rwnd (including if it
2087 is 0), the data sender can always have one DATA chunk in flight to
2088 the receiver if allowed by cwnd (see rule B, below). This rule
2089 allows the sender to probe for a change in rwnd that the sender
2090 missed due to the SACK's having been lost in transit from the data
2091 receiver to the data sender.
2092
2093 When the receiver's advertised window is zero, this probe is
2094 called a zero window probe. Note that a zero window probe
2095 SHOULD only be sent when all outstanding DATA chunks have
2096 been cumulatively acknowledged and no DATA chunks are in
2097 flight. Zero window probing MUST be supported.
2098
2099 If the sender continues to receive new packets from the receiver
2100 while doing zero window probing, the unacknowledged window probes
2101 should not increment the error counter for the association or any
2102 destination transport address.This is because the receiver MAY
2103 keep its window closed for an indefinite time. Refer to
2104 Section 6.2 on the receiver behavior when it advertises a zero
2105 window. The sender SHOULD send the first zero window probe after
2106 1 RTO when it detects that the receiver has closed its window
2107 and SHOULD increase the probe interval exponentially afterwards.
2108 Also note that the cwnd SHOULD be adjusted according to
2109 Section 7.2.1. Zero window probing does not affect the
2110 calculation of cwnd.
2111
2112 The sender MUST also have an algorithm for sending new DATA chunks
2113 to avoid silly window syndrome (SWS) as described in RFC 813. The
2114 algorithm can be similar to the one described in Section 4.2.3.4
2115 of RFC 1122.
2116
21172.15.3. Solution Description
2118
2119 The above allows a receiver to drop new data that arrives and yet
2120 still requires the receiver to send a SACK showing the conditions
2121 unchanged (with the possible exception of a new a_rwnd) and the
2122 dropped chunk as missing. This will allow the association to
2123 continue until the rwnd condition clears.
2124
2125
2126
2127
2128
2129
2130Stewart, et al. Informational [Page 38]
2131
2132RFC 4460 SCTP Errata April 2006
2133
2134
21352.16. Fragmentation and Path MTU Issues
2136
21372.16.1. Description of the Problem
2138
2139 The current wording of the Fragmentation and Reassembly forces an
2140 implementation that supports fragmentation to always fragment. This
2141 prohibits an implementation from offering its users an option to
2142 disable sends that exceed the SCTP fragmentation point.
2143
2144 The restriction in RFC 2960 [5], Section 6.9, was never meant to
2145 restrict an implementations API from this behavior.
2146
21472.16.2. Text Changes to the Document
2148
2149 ---------
2150 Old text: (Section 6.1)
2151 ---------
2152
2153 6.9 Fragmentation and Reassembly
2154
2155 An endpoint MAY support fragmentation when sending DATA chunks, but
2156 MUST support reassembly when receiving DATA chunks. If an endpoint
2157 supports fragmentation, it MUST fragment a user message if the size
2158 of the user message to be sent causes the outbound SCTP packet size
2159 to exceed the current MTU. If an implementation does not support
2160 fragmentation of outbound user messages, the endpoint must return an
2161 error to its upper layer and not attempt to send the user message.
2162
2163 IMPLEMENTATION NOTE: In this error case, the Send primitive
2164 discussed in Section 10.1 would need to return an error to the upper
2165 layer.
2166
2167 ---------
2168 New text: (Section 6.1)
2169 ---------
2170
2171 6.9. Fragmentation and Reassembly
2172
2173 An endpoint MAY support fragmentation when sending DATA chunks, but
2174 it MUST support reassembly when receiving DATA chunks. If an
2175 endpoint supports fragmentation, it MUST fragment a user message if
2176 the size of the user message to be sent causes the outbound SCTP
2177 packet size to exceed the current MTU. If an implementation does not
2178 support fragmentation of outbound user messages, the endpoint MUST
2179 return an error to its upper layer and not attempt to send the user
2180 message.
2181
2182
2183
2184
2185
2186Stewart, et al. Informational [Page 39]
2187
2188RFC 4460 SCTP Errata April 2006
2189
2190
2191 Note: If an implementation that supports fragmentation makes
2192 available to its upper layer a mechanism to turn off fragmentation it
2193 may do so. However, in so doing, it MUST react just like an
2194 implementation that does NOT support fragmentation, i.e., it MUST
2195 reject sends that exceed the current P-MTU.
2196
2197 IMPLEMENTATION NOTE: In this error case, the Send primitive
2198 discussed in Section 10.1 would need to return an error to the upper
2199 layer.
2200
22012.16.3. Solution Description
2202
2203 The above wording will allow an implementation to offer the option of
2204 rejecting sends that exceed the P-MTU size even when the
2205 implementation supports fragmentation.
2206
22072.17. Initial Value of the Cumulative TSN Ack
2208
22092.17.1. Description of the Problem
2210
2211 The current description of the SACK chunk within the RFC does not
2212 clearly state the value that would be put within a SACK when no DATA
2213 chunk has been received.
2214
22152.17.2. Text Changes to the Document
2216
2217 ---------
2218 Old text: (Section 3.3.4)
2219 ---------
2220
2221 Cumulative TSN Ack: 32 bits (unsigned integer)
2222
2223 This parameter contains the TSN of the last DATA chunk received in
2224 sequence before a gap.
2225
2226 ---------
2227 New text: (Section 3.3.4)
2228 ---------
2229
2230 Cumulative TSN Ack: 32 bits (unsigned integer)
2231
2232 This parameter contains the TSN of the last DATA chunk received in
2233 sequence before a gap. In the case where no DATA chunk has
2234 been received, this value is set to the peer's Initial TSN minus
2235 one.
2236
2237
2238
2239
2240
2241
2242Stewart, et al. Informational [Page 40]
2243
2244RFC 4460 SCTP Errata April 2006
2245
2246
22472.17.3. Solution Description
2248
2249 This change clearly states what the initial value will be for a SACK
2250 sender.
2251
22522.18. Handling of Address Parameters within the INIT or INIT-ACK
2253
22542.18.1. Description of the Problem
2255
2256 The current description on handling address parameters contained
2257 within the INIT and INIT-ACK does not fully describe a requirement
2258 for their handling.
2259
22602.18.2. Text Changes to the Document
2261
2262 ---------
2263 Old text: (Section 5.1.2)
2264 ---------
2265
2266 C) If there are only IPv4/IPv6 addresses present in the received INIT
2267 or INIT ACK chunk, the receiver shall derive and record all the
2268 transport address(es) from the received chunk AND the source IP
2269 address that sent the INIT or INIT ACK. The transport address(es)
2270 are derived by the combination of SCTP source port (from the
2271 common header) and the IP address parameter(s) carried in the INIT
2272 or INIT ACK chunk and the source IP address of the IP datagram.
2273 The receiver should use only these transport addresses as
2274 destination transport addresses when sending subsequent packets to
2275 its peer.
2276
2277 ---------
2278 New text: (Section 5.1.2)
2279 ---------
2280
2281 C) If there are only IPv4/IPv6 addresses present in the received INIT
2282 or INIT ACK chunk, the receiver MUST derive and record all the
2283 transport addresses from the received chunk AND the source IP
2284 address that sent the INIT or INIT ACK. The transport addresses
2285 are derived by the combination of SCTP source port (from the
2286 common header) and the IP address parameter(s) carried in the INIT
2287 or INIT ACK chunk and the source IP address of the IP datagram.
2288 The receiver should use only these transport addresses as
2289 destination transport addresses when sending subsequent packets to
2290 its peer.
2291
2292
2293
2294
2295
2296
2297
2298Stewart, et al. Informational [Page 41]
2299
2300RFC 4460 SCTP Errata April 2006
2301
2302
2303 D) An INIT or INIT ACK chunk MUST be treated as belonging
2304 to an already established association (or one in the
2305 process of being established) if the use of any of the
2306 valid address parameters contained within the chunk
2307 would identify an existing TCB.
2308
23092.18.3. Solution description
2310
2311 This new text clearly specifies to an implementor the need to look
2312 within the INIT or INIT ACK. Any implementation that does not do
2313 this may (for example) not be able to recognize an INIT chunk coming
2314 from an already established association that adds new addresses (see
2315 Section 2.6) or an incoming INIT ACK chunk sent from a source address
2316 different from the destination address used to send the INIT chunk.
2317
23182.19. Handling of Stream Shortages
2319
23202.19.1. Description of the Problem
2321
2322 The current wording in the RFC places the choice of sending an ABORT
2323 upon the SCTP stack when a stream shortage occurs. This decision
2324 should really be made by the upper layer, not the SCTP stack.
2325
23262.19.2. Text Changes to the Document
2327
2328 ---------
2329 Old text:
2330 ---------
2331
2332 5.1.1 Handle Stream Parameters
2333
2334 In the INIT and INIT ACK chunks, the sender of the chunk shall
2335 indicate the number of outbound streams (OS) it wishes to have in
2336 the association, as well as the maximum inbound streams (MIS) it
2337 will accept from the other endpoint.
2338
2339 After receiving the stream configuration information from the other
2340 side, each endpoint shall perform the following check: If the peer's
2341 MIS is less than the endpoint's OS, meaning that the peer is
2342 incapable of supporting all the outbound streams the endpoint wants
2343 to configure, the endpoint MUST either use MIS outbound streams, or
2344 abort the association and report to its upper layer the resources
2345 shortage at its peer.
2346
2347
2348
2349
2350
2351
2352
2353
2354Stewart, et al. Informational [Page 42]
2355
2356RFC 4460 SCTP Errata April 2006
2357
2358
2359 ---------
2360 New text: (Section 5.1.2)
2361 ---------
2362
2363 5.1.1. Handle Stream Parameters
2364
2365 In the INIT and INIT ACK chunks, the sender of the chunk MUST
2366 indicate the number of outbound streams (OS) it wishes to have in
2367 the association, as well as the maximum inbound streams (MIS) it will
2368 accept from the other endpoint.
2369
2370 After receiving the stream configuration information from the other
2371 side, each endpoint MUST perform the following check: If the peer's
2372 MIS is less than the endpoint's OS, meaning that the peer is
2373 incapable of supporting all the outbound streams the endpoint wants
2374 to configure, the endpoint MUST use MIS outbound streams and MAY
2375 report any shortage to the upper layer. The upper layer can then
2376 choose to abort the association if the resource shortage
2377 is unacceptable.
2378
23792.19.3. Solution Description
2380
2381 The above changes take the decision to ABORT out of the realm of the
2382 SCTP stack and place it into the user's hands.
2383
23842.20. Indefinite Postponement
2385
23862.20.1. Description of the Problem
2387
2388 The current RFC does not provide any guidance on the assignment of
2389 TSN sequence numbers to outbound messages nor reception of these
2390 messages. This could lead to a possible indefinite postponement.
2391
23922.20.2. Text Changes to the Document
2393
2394 ---------
2395 Old text: (Section 6.1)
2396 ---------
2397
2398 Note: The data sender SHOULD NOT use a TSN that is more than 2**31 -
2399 1 above the beginning TSN of the current send window.
2400
2401 6.2 Acknowledgement on Reception of DATA Chunks
2402
2403
2404
2405
2406
2407
2408
2409
2410Stewart, et al. Informational [Page 43]
2411
2412RFC 4460 SCTP Errata April 2006
2413
2414
2415 ---------
2416 New text: (Section 6.1)
2417 ---------
2418
2419 Note: The data sender SHOULD NOT use a TSN that is more than 2**31 -
2420 1 above the beginning TSN of the current send window.
2421
2422 The algorithm by which an implementation assigns sequential TSNs to
2423 messages on a particular association MUST ensure that no user
2424 message that has been accepted by SCTP is indefinitely postponed
2425 from being assigned a TSN. Acceptable algorithms for assigning TSNs
2426 include
2427
2428 (a) assigning TSNs in round-robin order over all streams with
2429 pending data; and
2430
2431 (b) preserving the linear order in which the user messages were
2432 submitted to the SCTP association.
2433
2434 When an upper layer requests to read data on an SCTP association,
2435 the SCTP receiver SHOULD choose the message with the lowest TSN from
2436 among all deliverable messages. In SCTP implementations that allow a
2437 user to request data on a specific stream, this operation SHOULD NOT
2438 block if data is not available, since this can lead to a deadlock
2439 under certain conditions.
2440
2441 6.2. Acknowledgement on Receipt of DATA Chunks
2442
24432.20.3. Solution Description
2444
2445 The above wording clarifies how TSNs SHOULD be assigned by the
2446 sender.
2447
24482.21. User-Initiated Abort of an Association
2449
24502.21.1. Description of the Problem
2451
2452 It is not possible for an upper layer to abort the association and
2453 provide the peer with an indication of why the association is
2454 aborted.
2455
24562.21.2. Text changes to the document
2457
2458 Some of the changes given here already include changes suggested in
2459 Section 2.6 of this document.
2460
2461
2462
2463
2464
2465
2466Stewart, et al. Informational [Page 44]
2467
2468RFC 4460 SCTP Errata April 2006
2469
2470
2471 ---------
2472 Old text: (Section 3.3.10)
2473 ---------
2474
2475 Cause Code
2476 Value Cause Code
2477 --------- ----------------
2478 1 Invalid Stream Identifier
2479 2 Missing Mandatory Parameter
2480 3 Stale Cookie Error
2481 4 Out of Resource
2482 5 Unresolvable Address
2483 6 Unrecognized Chunk Type
2484 7 Invalid Mandatory Parameter
2485 8 Unrecognized Parameters
2486 9 No User Data
2487 10 Cookie Received While Shutting Down
2488
2489 Cause Length: 16 bits (unsigned integer)
2490
2491 Set to the size of the parameter in bytes, including the Cause
2492 Code, Cause Length, and Cause-Specific Information fields
2493
2494 Cause-specific Information: variable length
2495
2496 This field carries the details of the error condition.
2497
2498 Sections 3.3.10.1 - 3.3.10.10 define error causes for SCTP.
2499 Guidelines for the IETF to define new error cause values are
2500 discussed in Section 13.3.
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522Stewart, et al. Informational [Page 45]
2523
2524RFC 4460 SCTP Errata April 2006
2525
2526
2527 ---------
2528 New text: (Section 3.3.10)
2529 ---------
2530
2531 Cause Code
2532 Value Cause Code
2533 --------- ----------------
2534 1 Invalid Stream Identifier
2535 2 Missing Mandatory Parameter
2536 3 Stale Cookie Error
2537 4 Out of Resource
2538 5 Unresolvable Address
2539 6 Unrecognized Chunk Type
2540 7 Invalid Mandatory Parameter
2541 8 Unrecognized Parameters
2542 9 No User Data
2543 10 Cookie Received While Shutting Down
2544 11 Restart of an Association with New Addresses
2545 12 User-Initiated Abort
2546
2547 Cause Length: 16 bits (unsigned integer)
2548
2549 Set to the size of the parameter in bytes, including the Cause
2550 Code, Cause Length, and Cause-Specific Information fields
2551
2552 Cause-specific Information: variable length
2553
2554 This field carries the details of the error condition.
2555
2556 Sections 3.3.10.1 - 3.3.10.12 define error causes for SCTP.
2557 Guidelines for the IETF to define new error cause values are
2558 discussed in Section 13.3.
2559
2560 ---------
2561 New text: (Note: no old text, new error added in Section 3.3.10)
2562 ---------
2563
2564 3.3.10.12. User-Initiated Abort (12)
2565
2566 Cause of error
2567 --------------
2568
2569 This error cause MAY be included in ABORT chunks that are sent
2570 because of an upper layer request. The upper layer can specify
2571 an Upper Layer Abort Reason that is transported by SCTP
2572 transparently and MAY be delivered to the upper layer protocol
2573 at the peer.
2574
2575
2576
2577
2578Stewart, et al. Informational [Page 46]
2579
2580RFC 4460 SCTP Errata April 2006
2581
2582
2583 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2584 | Cause Code=12 | Cause Length=Variable |
2585 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2586 / Upper Layer Abort Reason /
2587 \ \
2588 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2589
2590 ---------
2591 Old text: (Section 9.1)
2592 ---------
2593
2594 9.1 Abort of an Association
2595
2596 When an endpoint decides to abort an existing association, it
2597 shall send an ABORT chunk to its peer endpoint. The sender MUST
2598 fill in the peer's Verification Tag in the outbound packet and
2599 MUST NOT bundle any DATA chunk with the ABORT.
2600
2601 An endpoint MUST NOT respond to any received packet that contains
2602 an ABORT chunk (also see Section 8.4).
2603
2604 An endpoint receiving an ABORT shall apply the special
2605 Verification Tag check rules described in Section 8.5.1.
2606
2607 After checking the Verification Tag, the receiving endpoint shall
2608 remove the association from its record and shall report the
2609 termination to its upper layer.
2610
2611 ---------
2612 New text: (Section 9.1)
2613 ---------
2614
2615 9.1. Abort of an Association
2616
2617 When an endpoint decides to abort an existing association, it MUST
2618 send an ABORT chunk to its peer endpoint. The sender MUST fill in
2619 the peer's Verification Tag in the outbound packet and MUST NOT
2620 bundle any DATA chunk with the ABORT. If the association is
2621 aborted on request of the upper layer, a User-Initiated Abort
2622 error cause (see 3.3.10.12) SHOULD be present in the ABORT chunk.
2623
2624 An endpoint MUST NOT respond to any received packet that contains
2625 an ABORT chunk (also see Section 8.4).
2626
2627 An endpoint receiving an ABORT MUST apply the special Verification
2628 Tag check rules described in Section 8.5.1.
2629
2630 After checking the Verification Tag, the receiving endpoint MUST
2631
2632
2633
2634Stewart, et al. Informational [Page 47]
2635
2636RFC 4460 SCTP Errata April 2006
2637
2638
2639 remove the association from its record and SHOULD report the
2640 termination to its upper layer. If a User-Initiated Abort error
2641 cause is present in the ABORT chunk, the Upper Layer Abort Reason
2642 SHOULD be made available to the upper layer.
2643
2644 ---------
2645 Old text: (Section 10.1)
2646 ---------
2647
2648 D) Abort
2649
2650 Format: ABORT(association id [, cause code])
2651 -> result
2652
2653 Ungracefully closes an association. Any locally queued user
2654 data will be discarded and an ABORT chunk is sent to the peer.
2655 A success code will be returned on successful abortion of the
2656 association. If attempting to abort the association results
2657 in a failure, an error code shall be returned.
2658
2659 Mandatory attributes:
2660
2661 o association id - local handle to the SCTP association
2662
2663 Optional attributes:
2664
2665 o cause code - reason of the abort to be passed to the peer.
2666
2667
2668 ---------
2669 New text: (Section 10.1)
2670 ---------
2671
2672 D) Abort
2673
2674 Format: ABORT(association id [, Upper Layer Abort Reason])
2675 -> result
2676
2677 Ungracefully closes an association. Any locally queued user
2678 data will be discarded, and an ABORT chunk is sent to the peer.
2679 A success code will be returned on successful abortion of the
2680 association. If attempting to abort the association results
2681 in a failure, an error code shall be returned.
2682
2683 Mandatory attributes:
2684
2685 o association id - Local handle to the SCTP association.
2686
2687
2688
2689
2690Stewart, et al. Informational [Page 48]
2691
2692RFC 4460 SCTP Errata April 2006
2693
2694
2695 Optional attributes:
2696
2697 o Upper Layer Abort Reason - Reason of the abort to be passed
2698 to the peer.
2699
2700 None.
2701
2702 ---------
2703 Old text: (Section 10.2)
2704 ---------
2705
2706 E) COMMUNICATION LOST notification
2707
2708 When SCTP loses communication to an endpoint completely (e.g., via
2709 Heartbeats) or detects that the endpoint has performed an abort
2710 operation, it shall invoke this notification on the ULP.
2711
2712 The following shall be passed with the notification:
2713
2714 o association id - local handle to the SCTP association
2715
2716 o status - This indicates what type of event has occurred; The
2717 status may indicate a failure OR a normal termination
2718 event occurred in response to a shutdown or abort
2719 request.
2720
2721 The following may be passed with the notification:
2722
2723 o data retrieval id - an identification used to retrieve
2724 unsent and unacknowledged data.
2725
2726 o last-acked - the TSN last acked by that peer endpoint;
2727
2728 o last-sent - the TSN last sent to that peer endpoint;
2729
2730 ---------
2731 New text: (Section 10.2)
2732 ---------
2733
2734 E) COMMUNICATION LOST notification
2735
2736 When SCTP loses communication to an endpoint completely (e.g., via
2737 Heartbeats) or detects that the endpoint has performed an abort
2738 operation, it shall invoke this notification on the ULP.
2739
2740 The following shall be passed with the notification:
2741
2742 o association id - Local handle to the SCTP association.
2743
2744
2745
2746Stewart, et al. Informational [Page 49]
2747
2748RFC 4460 SCTP Errata April 2006
2749
2750
2751 o status - This indicates what type of event has occurred; The
2752 status may indicate that a failure OR a normal
2753 termination event occurred in response to a shutdown
2754 or abort request.
2755
2756 The following may be passed with the notification:
2757
2758 o data retrieval id - An identification used to retrieve unsent
2759 and unacknowledged data.
2760
2761 o last-acked - The TSN last acked by that peer endpoint.
2762
2763 o last-sent - The TSN last sent to that peer endpoint.
2764
2765 o Upper Layer Abort Reason - The abort reason specified in
2766 case of a user-initiated abort.
2767
27682.21.3. Solution Description
2769
2770 The above allows an upper layer to provide its peer with an
2771 indication of why the association was aborted. Therefore, an
2772 addition error cause was introduced.
2773
27742.22. Handling of Invalid Initiate Tag of INIT-ACK
2775
27762.22.1. Description of the Problem
2777
2778 RFC 2960 requires that the receiver of an INIT-ACK with the Initiate
2779 Tag set to zero handles this as an error and sends back an ABORT.
2780 But the sender of the INIT-ACK normally has no TCB, and thus the
2781 ABORT is useless.
2782
27832.22.2. Text Changes to the Document
2784
2785 ---------
2786 Old text: (Section 3.3.3)
2787 ---------
2788
2789 Initiate Tag: 32 bits (unsigned integer)
2790
2791 The receiver of the INIT ACK records the value of the
2792 Initiate Tag parameter. This value MUST be placed into
2793 the Verification Tag field of every SCTP packet that the
2794 INIT ACK receiver transmits within this association.
2795
2796 The Initiate Tag MUST NOT take the value 0. See Section 5.3.1
2797 for more on the selection of the Initiate Tag value.
2798
2799
2800
2801
2802Stewart, et al. Informational [Page 50]
2803
2804RFC 4460 SCTP Errata April 2006
2805
2806
2807 If the value of the Initiate Tag in a received INIT ACK chunk
2808 is found to be 0, the receiver MUST treat it as an error and
2809 close the association by transmitting an ABORT.
2810
2811 ---------
2812 New text: (Section 3.3.3)
2813 ---------
2814
2815 Initiate Tag: 32 bits (unsigned integer)
2816
2817 The receiver of the INIT ACK records the value of the
2818 Initiate Tag parameter. This value MUST be placed into
2819 the Verification Tag field of every SCTP packet that the
2820 INIT ACK receiver transmits within this association.
2821
2822 The Initiate Tag MUST NOT take the value 0. See Section 5.3.1
2823 for more on the selection of the Initiate Tag value.
2824
2825 If the value of the Initiate Tag in a received INIT ACK
2826 chunk is found to be 0, the receiver MUST destroy the
2827 association discarding its TCB. The receiver MAY send an
2828 ABORT for debugging purpose.
2829
28302.22.3. Solution Description
2831
2832 The new text does not require that the receiver of the invalid INIT-
2833 ACK send the ABORT. This behavior is in tune with the error case of
2834 invalid stream numbers in the INIT-ACK. However, sending an ABORT
2835 for debugging purposes is allowed.
2836
28372.23. Sending an ABORT in Response to an INIT
2838
28392.23.1. Description of the Problem
2840
2841 Whenever the receiver of an INIT chunk has to send an ABORT chunk in
2842 response, for whatever reason, it is not stated clearly which
2843 Verification Tag and value of the T-bit should be used.
2844
28452.23.2. Text Changes to the Document
2846
2847 ---------
2848 Old text: (Section 8.4)
2849 ---------
2850
2851 3) If the packet contains an INIT chunk with a Verification Tag
2852 set to '0', process it as described in Section 5.1.
2853 Otherwise,
2854
2855
2856
2857
2858Stewart, et al. Informational [Page 51]
2859
2860RFC 4460 SCTP Errata April 2006
2861
2862
2863 ---------
2864 New text: (Section 8.4)
2865 ---------
2866
2867 3) If the packet contains an INIT chunk with a Verification Tag
2868 set to '0', process it as described in Section 5.1. If, for
2869 whatever reason, the INIT cannot be processed normally and
2870 an ABORT has to be sent in response, the Verification Tag
2871 of the packet containing the ABORT chunk MUST be the
2872 Initiate tag of the received INIT chunk, and the T-Bit of
2873 the ABORT chunk has to be set to 0, indicating that
2874 a TCB was destroyed. Otherwise,
2875
28762.23.3. Solution Description
2877
2878 The new text stated clearly which value of the Verification Tag and
2879 T-bit have to be used.
2880
28812.24. Stream Sequence Number (SSN) Initialization
2882
28832.24.1. Description of the Problem
2884
2885 RFC 2960 does not describe the fact that the SSN has to be
2886 initialized to 0, as required by RFC 2119.
2887
28882.24.2. Text Changes to the Document
2889
2890 ---------
2891 Old text: (Section 6.5)
2892 ---------
2893
2894 The stream sequence number in all the streams shall start from 0
2895 when the association is established. Also, when the stream
2896 sequence number reaches the value 65535 the next stream sequence
2897 number shall be set to 0.
2898
2899 ---------
2900 New text: (Section 6.5)
2901 ---------
2902
2903 The stream sequence number in all the streams MUST start from 0
2904 when the association is established. Also, when the stream
2905 sequence number reaches the value 65535 the next stream sequence
2906 number MUST be set to 0.
2907
2908
2909
2910
2911
2912
2913
2914Stewart, et al. Informational [Page 52]
2915
2916RFC 4460 SCTP Errata April 2006
2917
2918
29192.24.3. Solution Description
2920
2921 The 'shall' in the text is replaced by a 'MUST' to clearly state the
2922 required behavior.
2923
29242.25. SACK Packet Format
2925
29262.25.1. Description of the Problem
2927
2928 It is not clear in RFC 2960 whether a SACK must contain the fields
2929 Number of Gap Ack Blocks and Number of Duplicate TSNs.
2930
29312.25.2. Text Changes to the Document
2932
2933 ---------
2934 Old text: (Section 3.3.4)
2935 ---------
2936
2937 The SACK MUST contain the Cumulative TSN Ack and
2938 Advertised Receiver Window Credit (a_rwnd) parameters.
2939
2940 ---------
2941 New text: (Section 3.3.4)
2942 ---------
2943
2944 The SACK MUST contain the Cumulative TSN Ack,
2945 Advertised Receiver Window Credit (a_rwnd), Number
2946 of Gap Ack Blocks, and Number of Duplicate TSNs fields.
2947
29482.25.3. Solution Description
2949
2950 The text has been modified. It is now clear that a SACK always
2951 contains the fields Number of Gap Ack Blocks and Number of Duplicate
2952 TSNs.
2953
29542.26. Protocol Violation Error Cause
2955
29562.26.1. Description of the Problem
2957
2958 There are many situations where an SCTP endpoint may detect that its
2959 peer violates the protocol. The result of such detection often
2960 results in the association being destroyed by the sending of an
2961 ABORT. Currently, there are only some error causes that could be
2962 used to indicate the reason for the abort, but these do not cover all
2963 cases.
2964
2965
2966
2967
2968
2969
2970Stewart, et al. Informational [Page 53]
2971
2972RFC 4460 SCTP Errata April 2006
2973
2974
29752.26.2. Text Changes to the Document
2976
2977 Some of the changes given here already include changes suggested in
2978 Section 2.6 and 2.21 of this document.
2979
2980 ---------
2981 Old text: (Section 3.3.10)
2982 ---------
2983
2984 Cause Code
2985 Value Cause Code
2986 --------- ----------------
2987 1 Invalid Stream Identifier
2988 2 Missing Mandatory Parameter
2989 3 Stale Cookie Error
2990 4 Out of Resource
2991 5 Unresolvable Address
2992 6 Unrecognized Chunk Type
2993 7 Invalid Mandatory Parameter
2994 8 Unrecognized Parameters
2995 9 No User Data
2996 10 Cookie Received While Shutting Down
2997
2998 Cause Length: 16 bits (unsigned integer)
2999
3000 Set to the size of the parameter in bytes, including the Cause
3001 Code, Cause Length, and Cause-Specific Information fields
3002
3003 Cause-specific Information: variable length
3004
3005 This field carries the details of the error condition.
3006
3007 Sections 3.3.10.1 - 3.3.10.10 define error causes for SCTP.
3008 Guidelines for the IETF to define new error cause values are
3009 discussed in Section 13.3.
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026Stewart, et al. Informational [Page 54]
3027
3028RFC 4460 SCTP Errata April 2006
3029
3030
3031 ---------
3032 New text: (Section 3.3.10)
3033 ---------
3034
3035 Cause Code
3036 Value Cause Code
3037 --------- ----------------
3038 1 Invalid Stream Identifier
3039 2 Missing Mandatory Parameter
3040 3 Stale Cookie Error
3041 4 Out of Resource
3042 5 Unresolvable Address
3043 6 Unrecognized Chunk Type
3044 7 Invalid Mandatory Parameter
3045 8 Unrecognized Parameters
3046 9 No User Data
3047 10 Cookie Received While Shutting Down
3048 11 Restart of an Association with New Addresses
3049 12 User Initiated Abort
3050 13 Protocol Violation
3051
3052 Cause Length: 16 bits (unsigned integer)
3053
3054 Set to the size of the parameter in bytes, including the Cause
3055 Code, Cause Length, and Cause-Specific Information fields
3056
3057 Cause-specific Information: variable length
3058
3059 This field carries the details of the error condition.
3060
3061 Sections 3.3.10.1 - 3.3.10.13 define error causes for SCTP.
3062 Guidelines for the IETF to define new error cause values are
3063 discussed in Section 13.3.
3064
3065 ---------
3066 New text: (Note: no old text; new error added in section 3.3.10)
3067 ---------
3068
3069 3.3.10.13. Protocol Violation (13)
3070
3071 Cause of error
3072 --------------
3073
3074 This error cause MAY be included in ABORT chunks that are sent
3075 because an SCTP endpoint detects a protocol violation of the peer
3076 that is not covered by the error causes described in 3.3.10.1 to
3077 3.3.10.12. An implementation MAY provide additional information
3078 specifying what kind of protocol violation has been detected.
3079
3080
3081
3082Stewart, et al. Informational [Page 55]
3083
3084RFC 4460 SCTP Errata April 2006
3085
3086
3087 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3088 | Cause Code=13 | Cause Length=Variable |
3089 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3090 / Additional Information /
3091 \ \
3092 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3093
30942.26.3. Solution Description
3095
3096 An additional error cause has been defined that can be used by an
3097 endpoint to indicate a protocol violation of the peer.
3098
30992.27. Reporting of Unrecognized Parameters
3100
31012.27.1. Description of the Problem
3102
3103 It is not stated clearly in RFC 2960 [5] how unrecognized parameters
3104 should be reported. Unrecognized parameters in an INIT chunk could
3105 be reported in the INIT-ACK chunk or in a separate ERROR chunk, which
3106 can get lost. Unrecognized parameters in an INIT-ACK chunk have to
3107 be reported in an ERROR-chunk. This can be bundled with the COOKIE-
3108 ERROR chunk or sent separately. If it is sent separately and
3109 received before the COOKIE-ECHO, it will be handled as an OOTB
3110 packet, resulting in sending out an ABORT chunk. Therefore, the
3111 association would not be established.
3112
31132.27.2. Text Changes to the Document
3114
3115 Some of the changes given here already include changes suggested in
3116 Section 2.2 of this document.
3117
3118 ---------
3119 Old text: (Section 3.2.1)
3120 ---------
3121
3122 00 - Stop processing this SCTP packet and discard it, do not process
3123 any further chunks within it.
3124
3125 01 - Stop processing this SCTP packet and discard it, do not process
3126 any further chunks within it, and report the unrecognized
3127 parameter in an 'Unrecognized Parameter Type' (in either an
3128 ERROR or in the INIT ACK).
3129
3130 10 - Skip this parameter and continue processing.
3131
3132 11 - Skip this parameter and continue processing but report the
3133 unrecognized parameter in an 'Unrecognized Parameter Type' (in
3134 either an ERROR or in the INIT ACK).
3135
3136
3137
3138Stewart, et al. Informational [Page 56]
3139
3140RFC 4460 SCTP Errata April 2006
3141
3142
3143 ---------
3144 New text: (Section 3.2.1)
3145 ---------
3146
3147 00 - Stop processing this SCTP chunk and discard it; do not process
3148 any further parameters within this chunk.
3149
3150 01 - Stop processing this SCTP chunk and discard it, do not process
3151 any further parameters within this chunk, and report the
3152 unrecognized parameter in an 'Unrecognized Parameter Type', as
3153 described in 3.2.2.
3154
3155 10 - Skip this parameter and continue processing.
3156
3157 11 - Skip this parameter and continue processing but report the
3158 unrecognized parameter in an 'Unrecognized Parameter Type', as
3159 described in 3.2.2.
3160
3161 ---------
3162 New text: (Note: no old text; clarification added in Section 3.2)
3163 ---------
3164
3165 3.2.2. Reporting of Unrecognized Parameters
3166
3167 If the receiver of an INIT chunk detects unrecognized parameters
3168 and has to report them according to Section 3.2.1, it MUST put
3169 the 'Unrecognized Parameter' parameter(s) in the INIT-ACK chunk
3170 sent in response to the INIT-chunk. Note that if the receiver
3171 of the INIT chunk is NOT going to establish an association (e.g.,
3172 due to lack of resources), then no report would be sent back.
3173
3174 If the receiver of an INIT-ACK chunk detects unrecognized
3175 parameters and has to report them according to Section 3.2.1,
3176 it SHOULD bundle the ERROR chunk containing the
3177 'Unrecognized Parameter' error cause with the COOKIE-ECHO
3178 chunk sent in response to the INIT-ACK chunk. If the
3179 receiver of the INIT-ACK cannot bundle the COOKIE-ECHO chunk
3180 with the ERROR chunk, the ERROR chunk MAY be sent separately
3181 but not before the COOKIE-ACK has been received.
3182
3183 Note: Any time a COOKIE-ECHO is sent in a packet, it MUST be the
3184 first chunk.
3185
31862.27.3. Solution Description
3187
3188 The procedure of reporting unrecognized parameters has been described
3189 clearly.
3190
3191
3192
3193
3194Stewart, et al. Informational [Page 57]
3195
3196RFC 4460 SCTP Errata April 2006
3197
3198
31992.28. Handling of IP Address Parameters
3200
32012.28.1. Description of the Problem
3202
3203 It is not stated clearly in RFC 2960 [5] how an SCTP endpoint that
3204 supports either IPv4 addresses or IPv6 addresses should respond if
3205 IPv4 and IPv6 addresses are presented by the peer in the INIT or
3206 INIT-ACK chunk.
3207
32082.28.2. Text Changes to the Document
3209
3210 ---------
3211 Old text: (Section 5.1.2)
3212 ---------
3213
3214 IMPLEMENTATION NOTE: In the case that the receiver of an INIT ACK
3215 fails to resolve the address parameter due to an unsupported type,
3216 it can abort the initiation process and then attempt a
3217 re-initiation by using a 'Supported Address Types' parameter in
3218 the new INIT to indicate what types of address it prefers.
3219
3220 ---------
3221 New text: (Section 5.1.2)
3222 ---------
3223
3224 IMPLEMENTATION NOTE: In the case that the receiver of an INIT ACK
3225 fails to resolve the address parameter due to an unsupported type,
3226 it can abort the initiation process and then attempt a re-
3227 initiation by using a 'Supported Address Types' parameter in the
3228 new INIT to indicate what types of address it prefers.
3229
3230 IMPLEMENTATION NOTE: If an SCTP endpoint that only supports either
3231 IPv4 or IPv6 receives IPv4 and IPv6 addresses in an INIT or INIT-
3232 ACK chunk from its peer, it MUST use all the addresses belonging
3233 to the supported address family. The other addresses MAY be
3234 ignored. The endpoint SHOULD NOT respond with any kind of error
3235 indication.
3236
32372.28.3. Solution Description
3238
3239 The procedure of handling IP address parameters has been described
3240 clearly.
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250Stewart, et al. Informational [Page 58]
3251
3252RFC 4460 SCTP Errata April 2006
3253
3254
32552.29. Handling of COOKIE ECHO Chunks When a TCB Exists
3256
32572.29.1. Description of the Problem
3258
3259 The description of the behavior in RFC 2960 [5] when a COOKIE ECHO
3260 chunk and a TCB exist could be misunderstood. When a COOKIE ECHO is
3261 received, a TCB exists and the local tag and peer's tag match, it is
3262 stated that the endpoint should enter the ESTABLISHED state if it has
3263 not already done so and send a COOKIE ACK. It was not clear that, in
3264 the case the endpoint has already left the ESTABLISHED state again,
3265 then it should not go back to established. In case D, the endpoint
3266 can only enter state ESTABLISHED from COOKIE-ECHOED because in state
3267 CLOSED it has no TCB and in state COOKIE-WAIT it has a TCB but knows
3268 nothing about the peer's tag, which is requested to match in this
3269 case.
3270
32712.29.2. Text Changes to the Document
3272
3273 ---------
3274 Old text: (Section 5.2.4)
3275 ---------
3276 D) When both local and remote tags match the endpoint should
3277 always enter the ESTABLISHED state, if it has not already
3278 done so. It should stop any init or cookie timers that may
3279 be running and send a COOKIE ACK.
3280
3281 ---------
3282 New text: (Section 5.2.4)
3283 ---------
3284 D) When both local and remote tags match, the endpoint should
3285 enter the ESTABLISHED state, if it is in the COOKIE-ECHOED
3286 state. It should stop any cookie timer that may
3287 be running and send a COOKIE ACK.
3288
32892.29.3. Solution Description
3290
3291 The procedure of handling of COOKIE-ECHO chunks when a TCB exists has
3292 been described clearly.
3293
32942.30. The Initial Congestion Window Size
3295
32962.30.1. Description of the Problem
3297
3298 RFC 2960 was published with the intention of having the same
3299 congestion control properties as TCP. Since the publication of RFC
3300 2960, TCP's initial congestion window size has been increased via RFC
3301 3390. This same update will be needed for SCTP to keep SCTP's
3302 congestion control properties equivalent to that of TCP.
3303
3304
3305
3306Stewart, et al. Informational [Page 59]
3307
3308RFC 4460 SCTP Errata April 2006
3309
3310
33112.30.2. Text Changes to the Document
3312
3313 ---------
3314 Old text: (Section 7.2.1)
3315 ---------
3316 o The initial cwnd before DATA transmission or after a
3317 sufficiently long idle period MUST be <= 2*MTU.
3318
3319 ---------
3320 New text: (Section 7.2.1)
3321 ---------
3322 o The initial cwnd before DATA transmission or after a
3323 sufficiently long idle period MUST be set to
3324 min(4*MTU, max (2*MTU, 4380 bytes)).
3325
3326 ---------
3327 Old text: (Section 7.2.1)
3328 ---------
3329 o When the endpoint does not transmit data on a given transport
3330 address, the cwnd of the transport address should be adjusted
3331 to max(cwnd/2, 2*MTU) per RTO.
3332
3333 ---------
3334 New text: (Section 7.2.1)
3335 ---------
3336 o When the endpoint does not transmit data on a given transport
3337 address, the cwnd of the transport address should be adjusted
3338 to max(cwnd/2, 4*MTU) per RTO.
3339
3340 ---------
3341 Old text: (Section 7.2.2)
3342 ---------
3343 o Same as in the slow start, when the sender does not transmit
3344 DATA on a given transport address, the cwnd of the transport
3345 address should be adjusted to max(cwnd / 2, 2*MTU) per RTO.
3346
3347 ---------
3348 New text: (Section 7.2.2)
3349 ---------
3350 o Same as in the slow start, when the sender does not transmit
3351 DATA on a given transport address, the cwnd of the transport
3352 address should be adjusted to max(cwnd / 2, 4*MTU) per RTO.
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362Stewart, et al. Informational [Page 60]
3363
3364RFC 4460 SCTP Errata April 2006
3365
3366
3367 ---------
3368 Old text: (Section 7.2.3)
3369 ---------
3370
3371 7.2.3. Congestion Control
3372
3373 Upon detection of packet losses from SACK (see Section 7.2.4), an
3374 endpoint should do the following:
3375
3376 ssthresh = max(cwnd/2, 2*MTU)
3377 cwnd = ssthresh
3378
3379 Basically, a packet loss causes cwnd to be cut in half.
3380
3381 When the T3-rtx timer expires on an address, SCTP should perform
3382 slow start by
3383
3384 ssthresh = max(cwnd/2, 2*MTU)
3385 cwnd = 1*MTU
3386
3387 ---------
3388 New text: (Section 7.2.3)
3389 ---------
3390
3391 7.2.3 Congestion Control
3392
3393 Upon detection of packet losses from SACK (see Section 7.2.4), An
3394 endpoint should do the following:
3395
3396 ssthresh = max(cwnd/2, 4*MTU)
3397 cwnd = ssthresh
3398
3399 Basically, a packet loss causes cwnd to be cut in half.
3400
3401 When the T3-rtx timer expires on an address, SCTP should perform
3402 slow start by:
3403
3404 ssthresh = max(cwnd/2, 4*MTU)
3405 cwnd = 1*MTU
3406
34072.30.3. Solution Description
3408
3409 The change to SCTP's initial congestion window will allow it to
3410 continue to maintain the same congestion control properties as TCP.
3411
3412
3413
3414
3415
3416
3417
3418Stewart, et al. Informational [Page 61]
3419
3420RFC 4460 SCTP Errata April 2006
3421
3422
34232.31. Stream Sequence Numbers in Figures
3424
34252.31.1. Description of the Problem
3426
3427 In Section 2.24 of this document, it is clarified that the SSN are
3428 initialized with 0. Two figures in RFC 2960 [5] illustrate that they
3429 start with 1.
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474Stewart, et al. Informational [Page 62]
3475
3476RFC 4460 SCTP Errata April 2006
3477
3478
34792.31.2. Text Changes to the Document
3480
3481 ---------
3482 Old text: (Section 7.2.1)
3483 ---------
3484
3485 Endpoint A Endpoint Z
3486 {app sets association with Z}
3487 (build TCB)
3488 INIT [I-Tag=Tag_A
3489 & other info] ------\
3490 (Start T1-init timer) \
3491 (Enter COOKIE-WAIT state) \---> (compose temp TCB and Cookie_Z)
3492 /-- INIT ACK [Veri Tag=Tag_A,
3493 / I-Tag=Tag_Z,
3494 (Cancel T1-init timer) <-----/ Cookie_Z, & other info]
3495 (destroy temp TCB)
3496 COOKIE ECHO [Cookie_Z] ------\
3497 (Start T1-init timer) \
3498 (Enter COOKIE-ECHOED state) \---> (build TCB enter ESTABLISHED
3499 state)
3500 /---- COOKIE-ACK
3501 /
3502 (Cancel T1-init timer, <-----/
3503 Enter ESTABLISHED state)
3504 {app sends 1st user data; strm 0}
3505 DATA [TSN=initial TSN_A
3506 Strm=0,Seq=1 & user data]--\
3507 (Start T3-rtx timer) \
3508 \->
3509 /----- SACK [TSN Ack=init
3510 / TSN_A,Block=0]
3511 (Cancel T3-rtx timer) <------/
3512 ...
3513 {app sends 2 messages;strm 0}
3514 /---- DATA
3515 / [TSN=init TSN_Z
3516 <--/ Strm=0,Seq=1 & user data 1]
3517 SACK [TSN Ack=init TSN_Z, / ---- DATA
3518 Block=0] --------\ / [TSN=init TSN_Z +1,
3519 \/ Strm=0,Seq=2 & user data 2]
3520 <------/\
3521 \
3522 \------>
3523
3524 Figure 4: INITiation Example
3525
3526
3527
3528
3529
3530Stewart, et al. Informational [Page 63]
3531
3532RFC 4460 SCTP Errata April 2006
3533
3534
3535 ---------
3536 New text: (Section 7.2.1)
3537 ---------
3538
3539
3540 Endpoint A Endpoint Z
3541 {app sets association with Z}
3542 (build TCB)
3543 INIT [I-Tag=Tag_A
3544 & other info] ------\
3545 (Start T1-init timer) \
3546 (Enter COOKIE-WAIT state) \---> (compose temp TCB and Cookie_Z)
3547 /-- INIT ACK [Veri Tag=Tag_A,
3548 / I-Tag=Tag_Z,
3549 (Cancel T1-init timer) <------/ Cookie_Z, & other info]
3550 (destroy temp TCB)
3551 COOKIE ECHO [Cookie_Z] ------\
3552 (Start T1-init timer) \
3553 (Enter COOKIE-ECHOED state) \---> (build TCB enter ESTABLISHED
3554 state)
3555 /---- COOKIE-ACK
3556 /
3557 (Cancel T1-init timer, <-----/
3558 Enter ESTABLISHED state)
3559 {app sends 1st user data; strm 0}
3560 DATA [TSN=initial TSN_A
3561 Strm=0,Seq=0 & user data]--\
3562 (Start T3-rtx timer) \
3563 \->
3564 /----- SACK [TSN Ack=init
3565 / TSN_A,Block=0]
3566 (Cancel T3-rtx timer) <------/
3567 ...
3568 {app sends 2 messages;strm 0}
3569 /---- DATA
3570 / [TSN=init TSN_Z
3571 <--/ Strm=0,Seq=0 & user data 1]
3572 SACK [TSN Ack=init TSN_Z, /---- DATA
3573 Block=0] --------\ / [TSN=init TSN_Z +1,
3574 \/ Strm=0,Seq=1 & user data 2]
3575 <------/\
3576 \
3577 \------>
3578
3579 Figure 4: INITiation Example
3580
3581
3582
3583
3584
3585
3586Stewart, et al. Informational [Page 64]
3587
3588RFC 4460 SCTP Errata April 2006
3589
3590
3591 ---------
3592 Old text: (Section 5.2.4.1)
3593 ---------
3594
3595 Endpoint A Endpoint Z
3596 <------------ Association is established---------------------->
3597 Tag=Tag_A Tag=Tag_Z
3598 <------------------------------------------------------------->
3599 {A crashes and restarts}
3600 {app sets up a association with Z}
3601 (build TCB)
3602 INIT [I-Tag=Tag_A'
3603 & other info] --------\
3604 (Start T1-init timer) \
3605 (Enter COOKIE-WAIT state) \---> (find a existing TCB
3606 compose temp TCB and Cookie_Z
3607 with Tie-Tags to previous
3608 association)
3609 /--- INIT ACK [Veri Tag=Tag_A',
3610 / I-Tag=Tag_Z',
3611 (Cancel T1-init timer) <------/ Cookie_Z[TieTags=
3612 Tag_A,Tag_Z
3613 & other info]
3614 (destroy temp TCB,leave original
3615 in place)
3616 COOKIE ECHO [Veri=Tag_Z',
3617 Cookie_Z
3618 Tie=Tag_A,
3619 Tag_Z]----------\
3620 (Start T1-init timer) \
3621 (Enter COOKIE-ECHOED state) \---> (Find existing association,
3622 Tie-Tags match old tags,
3623 Tags do not match i.e.,
3624 case X X M M above,
3625 Announce Restart to ULP
3626 and reset association).
3627 /---- COOKIE-ACK
3628 (Cancel T1-init timer, <------/
3629 Enter ESTABLISHED state)
3630 {app sends 1st user data; strm 0}
3631 DATA [TSN=initial TSN_A
3632 Strm=0,Seq=1 & user data]--\
3633 (Start T3-rtx timer) \
3634 \->
3635 /--- SACK [TSN Ack=init TSN_A,Block=0]
3636 (Cancel T3-rtx timer) <------/
3637
3638 Figure 5: A Restart Example
3639
3640
3641
3642Stewart, et al. Informational [Page 65]
3643
3644RFC 4460 SCTP Errata April 2006
3645
3646
3647 ---------
3648 New text: (Section 5.2.4.1)
3649 ---------
3650
3651 Endpoint A Endpoint Z
3652 <-------------- Association is established---------------------->
3653 Tag=Tag_A Tag=Tag_Z
3654 <--------------------------------------------------------------->
3655 {A crashes and restarts}
3656 {app sets up a association with Z}
3657 (build TCB)
3658 INIT [I-Tag=Tag_A'
3659 & other info] --------\
3660 (Start T1-init timer) \
3661 (Enter COOKIE-WAIT state) \---> (find a existing TCB
3662 compose temp TCB and Cookie_Z
3663 with Tie-Tags to previous
3664 association)
3665 /--- INIT ACK [Veri Tag=Tag_A',
3666 / I-Tag=Tag_Z',
3667 (Cancel T1-init timer) <------/ Cookie_Z[TieTags=
3668 Tag_A,Tag_Z
3669 & other info]
3670 (destroy temp TCB,leave original
3671 in place)
3672 COOKIE ECHO [Veri=Tag_Z',
3673 Cookie_Z
3674 Tie=Tag_A,
3675 Tag_Z]----------\
3676 (Start T1-init timer) \
3677 (Enter COOKIE-ECHOED state) \---> (Find existing association,
3678 Tie-Tags match old tags,
3679 Tags do not match i.e.,
3680 case X X M M above,
3681 Announce Restart to ULP
3682 and reset association).
3683 /---- COOKIE-ACK
3684 (Cancel T1-init timer, <------/
3685 Enter ESTABLISHED state)
3686 {app sends 1st user data; strm 0}
3687 DATA [TSN=initial TSN_A
3688 Strm=0,Seq=0 & user data]--\
3689 (Start T3-rtx timer) \
3690 \->
3691 /--- SACK [TSN Ack=init TSN_A,Block=0]
3692 (Cancel T3-rtx timer) <------/
3693
3694 Figure 5: A Restart Example
3695
3696
3697
3698Stewart, et al. Informational [Page 66]
3699
3700RFC 4460 SCTP Errata April 2006
3701
3702
37032.31.3. Solution description
3704
3705 Figure 4 and 5 were changed so that the SSN starts with 0 instead of
3706 1.
3707
37082.32. Unrecognized Parameters
3709
37102.32.1. Description of the Problem
3711
3712 The RFC does not state clearly in Section 3.3.3.1 whether one or
3713 multiple unrecognized parameters are included in the 'Unrecognized
3714 Parameter' parameter.
3715
37162.32.2. Text Changes to the Document
3717
3718 ---------
3719 Old text: (Section 3.3.3)
3720 ---------
3721 Variable Parameters Status Type Value
3722 -------------------------------------------------------------
3723 State Cookie Mandatory 7
3724 IPv4 Address (Note 1) Optional 5
3725 IPv6 Address (Note 1) Optional 6
3726 Unrecognized Parameters Optional 8
3727 Reserved for ECN Capable (Note 2) Optional 32768 (0x8000)
3728 Host Name Address (Note 3) Optional 11
3729
3730 ---------
3731 New text: (Section 3.3.3)
3732 ---------
3733 Variable Parameters Status Type Value
3734 -------------------------------------------------------------
3735 State Cookie Mandatory 7
3736 IPv4 Address (Note 1) Optional 5
3737 IPv6 Address (Note 1) Optional 6
3738 Unrecognized Parameter Optional 8
3739 Reserved for ECN Capable (Note 2) Optional 32768 (0x8000)
3740 Host Name Address (Note 3) Optional 11
3741
3742
3743 ---------
3744 Old text: (Section 3.3.3.1)
3745 ---------
3746 Unrecognized Parameters:
3747
3748 Parameter Type Value: 8
3749
3750 Parameter Length: Variable Size.
3751
3752
3753
3754Stewart, et al. Informational [Page 67]
3755
3756RFC 4460 SCTP Errata April 2006
3757
3758
3759 Parameter Value:
3760 This parameter is returned to the originator of the INIT
3761 chunk when the INIT contains an unrecognized parameter
3762 which has a value that indicates that it should be reported
3763 to the sender. This parameter value field will contain
3764 unrecognized parameters copied from the INIT chunk complete
3765 with Parameter Type, Length and Value fields.
3766
3767 ---------
3768 New text: (Section 3.3.3.1)
3769 ---------
3770 Unrecognized Parameter:
3771
3772 Parameter Type Value: 8
3773
3774 Parameter Length: Variable Size.
3775
3776 Parameter Value:
3777
3778 This parameter is returned to the originator of the INIT
3779 chunk when the INIT contains an unrecognized parameter
3780 that has a value that indicates that it should be reported
3781 to the sender. This parameter value field will contain the
3782 unrecognized parameter copied from the INIT chunk complete
3783 with Parameter Type, Length, and Value fields.
3784
37852.32.3. Solution Description
3786
3787 The new text states clearly that only one unrecognized parameter is
3788 reported per parameter.
3789
37902.33. Handling of Unrecognized Parameters
3791
37922.33.1. Description of the Problem
3793
3794 It is not stated clearly in RFC 2960 [5] how unrecognized parameters
3795 should be handled. The problem comes up when an INIT contains an
3796 unrecognized parameter with highest bits 00. It was not clear
3797 whether an INIT-ACK should be sent.
3798
37992.33.2. Text Changes to the Document
3800
3801 Some of the changes given here already include changes suggested in
3802 Section 2.27 of this document.
3803
3804
3805
3806
3807
3808
3809
3810Stewart, et al. Informational [Page 68]
3811
3812RFC 4460 SCTP Errata April 2006
3813
3814
3815 ---------
3816 Old text: (Section 3.2.1)
3817 ---------
3818
3819 00 - Stop processing this SCTP packet and discard it, do not process
3820 any further chunks within it.
3821
3822 01 - Stop processing this SCTP packet and discard it, do not process
3823 any further chunks within it, and report the unrecognized
3824 parameter in an 'Unrecognized Parameter Type' (in either an
3825 ERROR or in the INIT ACK).
3826
3827 10 - Skip this parameter and continue processing.
3828
3829 11 - Skip this parameter and continue processing but report the
3830 unrecognized parameter in an 'Unrecognized Parameter Type' (in
3831 either an ERROR or in the INIT ACK).
3832
3833 ---------
3834 New text: (Section 3.2.1)
3835 ---------
3836
3837 00 - Stop processing this parameter; do not process
3838 any further parameters within this chunk.
3839
3840 01 - Stop processing this parameter, do not process
3841 any further parameters within this chunk, and report the
3842 unrecognized parameter in an 'Unrecognized Parameter Type', as
3843 described in 3.2.2.
3844
3845 10 - Skip this parameter and continue processing.
3846
3847 11 - Skip this parameter and continue processing but report the
3848 unrecognized parameter in an 'Unrecognized Parameter Type', as
3849 described in 3.2.2.
3850
3851
3852 ---------
3853 New text: (Note: no old text; clarification added in section 3.2)
3854 ---------
3855
3856 3.2.2. Reporting of Unrecognized Parameters
3857
3858 If the receiver of an INIT chunk detects unrecognized parameters and
3859 has to report them according to Section 3.2.1, it MUST put the
3860 'Unrecognized Parameter' parameter(s) in the INIT-ACK chunk sent in
3861 response to the INIT-chunk. Note that if the receiver of the INIT
3862 chunk is NOT going to establish an association (e.g., due to lack of
3863
3864
3865
3866Stewart, et al. Informational [Page 69]
3867
3868RFC 4460 SCTP Errata April 2006
3869
3870
3871 resources), an 'Unrecognized Parameter' would NOT be included with
3872 any ABORT being sent to the sender of the INIT.
3873
3874 If the receiver of an INIT-ACK chunk detects unrecognized parameters
3875 and has to report them according to Section 3.2.1, it SHOULD bundle
3876 the ERROR chunk containing the 'Unrecognized Parameter' error cause
3877 with the COOKIE-ECHO chunk sent in response to the INIT-ACK chunk.
3878 If the receiver of the INIT-ACK cannot bundle the COOKIE-ECHO chunk
3879 with the ERROR chunk, the ERROR chunk MAY be sent separately but not
3880 before the COOKIE-ACK has been received.
3881
3882 Note: Any time a COOKIE-ECHO is sent in a packet, it MUST be the
3883 first chunk.
3884
38852.33.3. Solution Description
3886
3887 The procedure of handling unrecognized parameters has been described
3888 clearly.
3889
38902.34. Tie Tags
3891
38922.34.1. Description of the Problem
3893
3894 RFC 2960 requires that Tie-Tags be included in the COOKIE. The
3895 cookie may not be encrypted. An attacker could discover the value of
3896 the Verification Tags by analyzing cookies received after sending an
3897 INIT.
3898
38992.34.2. Text Changes to the Document
3900
3901 ---------
3902 Old text: (Section 1.4)
3903 ---------
3904 o Tie-Tags: Verification Tags from a previous association. These
3905 Tags are used within a State Cookie so that the newly
3906 restarting association can be linked to the original
3907 association within the endpoint that did not restart.
3908
3909 ---------
3910 New text: (Section 1.4)
3911 ---------
3912
3913 o Tie-Tags: Two 32-bit random numbers that together make a 64-
3914 bit nonce. These Tags are used within a State Cookie and TCB
3915 so that a newly restarting association can be linked to the
3916 original association within the endpoint that did not restart
3917 and yet not reveal the true Verification Tags of an existing
3918 association.
3919
3920
3921
3922Stewart, et al. Informational [Page 70]
3923
3924RFC 4460 SCTP Errata April 2006
3925
3926
3927 ---------
3928 Old text: (Section 5.2.1)
3929 ---------
3930
3931 For an endpoint that is in the COOKIE-ECHOED state it MUST
3932 populate its Tie-Tags with the Tag information of itself and
3933 its peer (see Section 5.2.2 for a description of the Tie-Tags).
3934
3935 ---------
3936 New text: (Section 5.2.1)
3937 ---------
3938 For an endpoint that is in the COOKIE-ECHOED state it MUST
3939 populate its Tie-Tags within both the association TCB and
3940 inside the State Cookie (see section 5.2.2 for a description
3941 of the Tie-Tags).
3942
3943
3944 ---------
3945 Old text: (Section 5.2.2)
3946 ---------
3947 Unless otherwise stated, upon reception of an unexpected INIT for
3948 this association, the endpoint shall generate an INIT ACK with a
3949 State Cookie. In the outbound INIT ACK the endpoint MUST copy its
3950 current Verification Tag and peer's Verification Tag into a
3951 reserved place within the state cookie. We shall refer to these
3952 locations as the Peer's-Tie-Tag and the Local-Tie-Tag. The
3953 outbound SCTP packet containing this INIT ACK MUST carry a
3954 Verification Tag value equal to the Initiation Tag found in the
3955 unexpected INIT. And the INIT ACK MUST contain a new Initiation
3956 Tag (randomly generated see Section 5.3.1). Other parameters
3957 for the endpoint SHOULD be copied from the existing parameters
3958 of the association (e.g., number of outbound streams) into the
3959 INIT ACK and cookie.
3960
3961 ---------
3962 New text: (Section 5.2.2)
3963 ---------
3964
3965 Unless otherwise stated, upon receipt of an unexpected INIT for
3966 this association, the endpoint MUST generate an INIT ACK with a
3967 State Cookie. In the outbound INIT ACK, the endpoint MUST copy
3968 its current Tie-Tags to a reserved place within the State Cookie
3969 and the association's TCB. We shall refer to these locations
3970 inside the cookie as the Peer's-Tie-Tag and the Local-Tie-Tag. We
3971 will refer to the copy within an association's TCB as the Local
3972 Tag and Peer's Tag. The outbound SCTP packet containing this INIT
3973 ACK MUST carry a Verification Tag value equal to the Initiation
3974 Tag found in the unexpected INIT. And the INIT ACK MUST contain a
3975
3976
3977
3978Stewart, et al. Informational [Page 71]
3979
3980RFC 4460 SCTP Errata April 2006
3981
3982
3983 new Initiation Tag (randomly generated; see Section 5.3.1). Other
3984 parameters for the endpoint SHOULD be copied from the existing
3985 parameters of the association (e.g., number of outbound streams)
3986 into the INIT ACK and cookie.
3987
39882.34.3. Solution Description
3989
3990 The solution to this problem is not to use the real Verification Tags
3991 within the State Cookie as tie-tags. Instead, two 32-bit random
3992 numbers are created to form one 64-bit nonce and stored both in the
3993 State Cookie and the existing association TCB. This prevents
3994 exposing the Verification Tags inadvertently.
3995
39962.35. Port Number Verification in the COOKIE-ECHO
3997
39982.35.1. Description of the Problem
3999
4000 The State Cookie sent by a listening SCTP endpoint may not contain
4001 the original port numbers or the local Verification Tag. It is then
4002 possible that the endpoint, on receipt of the COOKIE-ECHO, will not
4003 be able to verify that these values match the original values found
4004 in the INIT and INIT-ACK that began the association setup.
4005
40062.35.2. Text Changes to the Document
4007
4008 ---------
4009 Old text: (Section 5.1.5)
4010 ---------
4011 3) Compare the creation timestamp in the State Cookie to the
4012 current local time. If the elapsed time is longer than the
4013 lifespan carried in the State Cookie, then the packet,
4014 including the COOKIE ECHO and any attached DATA chunks,
4015 SHOULD be discarded and the endpoint MUST transmit an ERROR
4016 chunk with a "Stale Cookie" error cause to the peer endpoint,
4017
4018 4) If the State Cookie is valid, create an association to the
4019 sender of the COOKIE ECHO chunk with the information in the
4020 TCB data carried in the COOKIE ECHO, and enter the
4021 ESTABLISHED state,
4022
4023 5) Send a COOKIE ACK chunk to the peer acknowledging reception
4024 of the COOKIE ECHO. The COOKIE ACK MAY be bundled with an
4025 outbound DATA chunk or SACK chunk; however, the COOKIE ACK
4026 MUST be the first chunk in the SCTP packet.
4027
4028 6) Immediately acknowledge any DATA chunk bundled with the COOKIE
4029 ECHO with a SACK (subsequent DATA chunk acknowledgement should
4030 follow the rules defined in Section 6.2). As mentioned in step
4031
4032
4033
4034Stewart, et al. Informational [Page 72]
4035
4036RFC 4460 SCTP Errata April 2006
4037
4038
4039 5), if the SACK is bundled with the COOKIE ACK, the COOKIE ACK
4040 MUST appear first in the SCTP packet.
4041
4042 ---------
4043 New text: (Section 5.1.5)
4044 ---------
4045
4046 3) Compare the port numbers and the Verification Tag contained
4047 within the COOKIE ECHO chunk to the actual port numbers and the
4048 Verification Tag within the SCTP common header of the received
4049 packet. If these values do not match, the packet MUST be
4050 silently discarded.
4051
4052 4) Compare the creation timestamp in the State Cookie to the
4053 current local time. If the elapsed time is longer than the
4054 lifespan carried in the State Cookie, then the packet,
4055 including the COOKIE ECHO and any attached DATA chunks,
4056 SHOULD be discarded, and the endpoint MUST transmit an
4057 ERROR chunk with a "Stale Cookie" error cause to the peer
4058 endpoint.
4059
4060 5) If the State Cookie is valid, create an association to the
4061 sender of the COOKIE ECHO chunk with the information in the
4062 TCB data carried in the COOKIE ECHO and enter the
4063 ESTABLISHED state.
4064
4065 6) Send a COOKIE ACK chunk to the peer acknowledging receipt of
4066 the COOKIE ECHO. The COOKIE ACK MAY be bundled with an
4067 outbound DATA chunk or SACK chunk; however, the COOKIE ACK
4068 MUST be the first chunk in the SCTP packet.
4069
4070 7) Immediately acknowledge any DATA chunk bundled with the COOKIE
4071 ECHO with a SACK (subsequent DATA chunk acknowledgement should
4072 follow the rules defined in Section 6.2). As mentioned in step
4073 5, if the SACK is bundled with the COOKIE ACK, the COOKIE ACK
4074 MUST appear first in the SCTP packet.
4075
40762.35.3. Solution Description
4077
4078 By including both port numbers and the local Verification Tag within
4079 the State Cookie and verifying these during COOKIE-ECHO processing,
4080 this issue is resolved.
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090Stewart, et al. Informational [Page 73]
4091
4092RFC 4460 SCTP Errata April 2006
4093
4094
40952.36. Path Initialization
4096
40972.36.1. Description of the Problem
4098
4099 When an association enters the ESTABLISHED state, the endpoint has no
4100 verification that all of the addresses presented by the peer do in
4101 fact belong to the peer. This could cause various forms of denial of
4102 service attacks.
4103
41042.36.2. Text Changes to the Document
4105
4106 ---------
4107 Old text: None
4108 ---------
4109
4110 ---------
4111 New text: (Section 5.4)
4112 ---------
4113 5.4. Path Verification
4114
4115 During association establishment, the two peers exchange a list of
4116 addresses. In the predominant case, these lists accurately represent
4117 the addresses owned by each peer. However, it is possible that a
4118 misbehaving peer may supply addresses that it does not own. To
4119 prevent this, the following rules are applied to all addresses of the
4120 new association:
4121
4122 1) Any address passed to the sender of the INIT by its upper layer is
4123 automatically considered to be CONFIRMED.
4124
4125 2) For the receiver of the COOKIE-ECHO the only CONFIRMED address is
4126 the one that the INIT-ACK was sent to.
4127
4128 3) All other addresses not covered by rules 1 and 2 are considered
4129 UNCONFIRMED and are subject to probing for verification.
4130
4131 To probe an address for verification, an endpoint will send
4132 HEARTBEATs including a 64-bit random nonce and a path indicator (to
4133 identify the address that the HEARTBEAT is sent to) within the
4134 HEARTBEAT parameter.
4135
4136 Upon receipt of the HEARTBEAT-ACK, a verification is made that the
4137 nonce included in the HEARTBEAT parameter is the one sent to the
4138 address indicated inside the HEARTBEAT parameter. When this match
4139 occurs, the address that the original HEARTBEAT was sent to is now
4140 considered CONFIRMED and available for normal data transfer.
4141
4142
4143
4144
4145
4146Stewart, et al. Informational [Page 74]
4147
4148RFC 4460 SCTP Errata April 2006
4149
4150
4151 These probing procedures are started when an association moves to the
4152 ESTABLISHED state and are ended when all paths are confirmed.
4153
4154 Each RTO a probe may be sent on an active UNCONFIRMED path in an
4155 attempt to move it to the CONFIRMED state. If during this probing
4156 the path becomes inactive, this rate is lowered to the normal
4157 HEARTBEAT rate. At the expiration of the RTO timer, the error
4158 counter of any path that was probed but not CONFIRMED is incremented
4159 by one and subjected to path failure detection, as defined in section
4160 8.2. When probing UNCONFIRMED addresses, however, the association
4161 overall error count is NOT incremented.
4162
4163 The number of HEARTBEATS sent at each RTO SHOULD be limited by the
4164 HB.Max.Burst parameter. It is an implementation decision as to how
4165 to distribute HEARTBEATS to the peer's addresses for path
4166 verification.
4167
4168 Whenever a path is confirmed, an indication MAY be given to the upper
4169 layer.
4170
4171 An endpoint MUST NOT send any chunks to an UNCONFIRMED address, with
4172 the following exceptions:
4173
4174 - A HEARTBEAT including a nonce MAY be sent to an UNCONFIRMED
4175 address.
4176
4177 - A HEARTBEAT-ACK MAY be sent to an UNCONFIRMED address.
4178
4179 - A COOKIE-ACK MAY be sent to an UNCONFIRMED address, but it MUST be
4180 bundled with a HEARTBEAT including a nonce. An implementation that
4181 does NOT support bundling MUST NOT send a COOKIE-ACK to an
4182 UNCONFIRMED address.
4183
4184 - A COOKE-ECHO MAY be sent to an UNCONFIRMED address, but it MUST be
4185 bundled with a HEARTBEAT including a nonce, and the packet MUST NOT
4186 exceed the path MTU. If the implementation does NOT support
4187 bundling or if the bundled COOKIE-ECHO plus HEARTBEAT (including
4188 nonce) would exceed the path MTU, then the implementation MUST NOT
4189 send a COOKIE-ECHO to an UNCONFIRMED address.
4190
4191 ---------
4192 Old text: (Section 14)
4193 ---------
4194
4195 14. Suggested SCTP Protocol Parameter Values
4196
4197 The following protocol parameters are RECOMMENDED:
4198
4199
4200
4201
4202Stewart, et al. Informational [Page 75]
4203
4204RFC 4460 SCTP Errata April 2006
4205
4206
4207 RTO.Initial - 3 seconds
4208 RTO.Min - 1 second
4209 RTO.Max - 60 seconds
4210 RTO.Alpha - 1/8
4211 RTO.Beta - 1/4
4212 Valid.Cookie.Life - 60 seconds
4213 Association.Max.Retrans - 10 attempts
4214 Path.Max.Retrans - 5 attempts (per destination address)
4215 Max.Init.Retransmits - 8 attempts
4216 HB.interval - 30 seconds
4217
4218 ---------
4219 New text: (Section 14)
4220 ---------
4221
4222 14. Suggested SCTP Protocol Parameter Values
4223
4224 The following protocol parameters are RECOMMENDED:
4225
4226 RTO.Initial - 3 seconds
4227 RTO.Min - 1 second
4228 RTO.Max - 60 seconds
4229 Max.Burst - 4
4230 RTO.Alpha - 1/8
4231 RTO.Beta - 1/4
4232 Valid.Cookie.Life - 60 seconds
4233 Association.Max.Retrans - 10 attempts
4234 Path.Max.Retrans - 5 attempts (per destination address)
4235 Max.Init.Retransmits - 8 attempts
4236 HB.Interval - 30 seconds
4237 HB.Max.Burst - 1
4238
42392.36.3. Solution Description
4240
4241 By properly setting up initial path state and accelerated probing via
4242 HEARTBEAT's, a new association can verify that all addresses
4243 presented by a peer belong to that peer.
4244
42452.37. ICMP Handling Procedures
4246
42472.37.1. Description of the Problem
4248
4249 RFC 2960 does not describe how ICMP messages should be processed by
4250 an SCTP endpoint.
4251
4252
4253
4254
4255
4256
4257
4258Stewart, et al. Informational [Page 76]
4259
4260RFC 4460 SCTP Errata April 2006
4261
4262
42632.37.2. Text Changes to the Document
4264
4265 --------
4266 Old text: None
4267 --------
4268
4269 ---------
4270 New text
4271 ---------
4272
4273 11.5. Protection of Non-SCTP Capable Hosts.
4274
4275 To provide a non-SCTP capable host with the same level of protection
4276 against attacks as for SCTP-capable ones, all SCTP stacks MUST
4277 implement the ICMP handling described in Appendix C.
4278
4279 When an SCTP stack receives a packet containing multiple control or
4280 DATA chunks and the processing of the packet requires the sending of
4281 multiple chunks in response, the sender of the response chunk(s) MUST
4282 NOT send more than one packet. If bundling is supported, multiple
4283 response chunks that fit into a single packet MAY be bundled together
4284 into one single response packet. If bundling is not supported, then
4285 the sender MUST NOT send more than one response chunk and MUST
4286 discard all other responses. Note that this rule does NOT apply to a
4287 SACK chunk, since a SACK chunk is, in itself, a response to DATA and
4288 a SACK does not require a response of more DATA.
4289
4290 An SCTP implementation SHOULD abort the association if it receives a
4291 SACK acknowledging a TSN that has not been sent.
4292
4293 An SCTP implementation that receives an INIT that would require a
4294 large packet in response, due to the inclusion of multiple ERROR
4295 parameters, MAY (at its discretion) elect to omit some or all of the
4296 ERROR parameters to reduce the size of the INIT-ACK. Due to a
4297 combination of the size of the COOKIE parameter and the number of
4298 addresses a receiver of an INIT may be indicating to a peer, it is
4299 always possible that the INIT-ACK will be larger than the original
4300 INIT. An SCTP implementation SHOULD attempt to make the INIT-ACK as
4301 small as possible to reduce the possibility of byte amplification
4302 attacks.
4303
4304 ---------
4305 Old text: None
4306 ---------
4307
4308
4309
4310
4311
4312
4313
4314Stewart, et al. Informational [Page 77]
4315
4316RFC 4460 SCTP Errata April 2006
4317
4318
4319 ---------
4320 New text: (Appendix C)
4321 ---------
4322
4323 Appendix C ICMP Handling
4324
4325 Whenever an ICMP message is received by an SCTP endpoint the
4326 following procedures MUST be followed to ensure proper utilization of
4327 the information being provided by layer 3.
4328
4329 ICMP1) An implementation MAY ignore all ICMPv4 messages where the
4330 type field is not set to "Destination Unreachable".
4331
4332 ICMP2) An implementation MAY ignore all ICMPv6 messages where the
4333 type field is not "Destination Unreachable, "Parameter
4334 Problem" or "Packet Too Big".
4335
4336 ICMP3) An implementation MAY ignore any ICMPv4 messages where the
4337 code does not indicate "Protocol Unreachable" or
4338 "Fragmentation Needed".
4339
4340 ICMP4) An implementation MAY ignore all ICMPv6 messages of type
4341 "Parameter Problem" if the code is not "Unrecognized next
4342 header type encountered".
4343
4344 ICMP5) An implementation MUST use the payload of the ICMP message (V4
4345 or V6) to locate the association that sent the message that
4346 ICMP is responding to. If the association cannot be found, an
4347 implementation SHOULD ignore the ICMP message.
4348
4349 ICMP6) An implementation MUST validate that the Verification Tag
4350 contained in the ICMP message matches the verification tag of
4351 the peer. If the Verification Tag is not 0 and does NOT
4352 match, discard the ICMP message. If it is 0 and the ICMP
4353 message contains enough bytes to verify that the chunk type is
4354 an INIT chunk and that the initiate tag matches the tag of the
4355 peer, continue with ICMP7. If the ICMP message is too short
4356 or the chunk type or the initiate tag does not match, silently
4357 discard the packet.
4358
4359 ICMP7) If the ICMP message is either a V6 "Packet Too Big" or a V4
4360 "Fragmentation Needed", an implementation MAY process this
4361 information as defined for PATH MTU discovery.
4362
4363 ICMP8) If the ICMP code is a "Unrecognized next header type
4364 encountered" or a "Protocol Unreachable", an implementation
4365 MUST treat this message as an abort with the T bit set if it
4366 does not contain an INIT chunk. If it does contain an INIT
4367
4368
4369
4370Stewart, et al. Informational [Page 78]
4371
4372RFC 4460 SCTP Errata April 2006
4373
4374
4375 chunk and the association is in COOKIE-WAIT state, handle the
4376 ICMP message like an ABORT.
4377
4378 ICMP9) If the ICMPv6 code is "Destination Unreachable", the
4379 implementation MAY mark the destination into the unreachable
4380 state or alternatively increment the path error counter.
4381
4382 Note that these procedures differ from RFC 1122 [1] and from its
4383 requirements for processing of port-unreachable messages and the
4384 requirements that an implementation MUST abort associations in
4385 response to a "protocol unreachable" message. Port unreachable
4386 messages are not processed, since an implementation will send an
4387 ABORT, not a port unreachable. The stricter handling of the
4388 "protocol unreachable" message is due to security concerns for hosts
4389 that do NOT support SCTP.
4390
43912.37.3. Solution Description
4392
4393 The new appendix now describes proper handling of ICMP messages in
4394 conjunction with SCTP.
4395
43962.38. Checksum
4397
43982.38.1. Description of the problem
4399
4400 RFC 3309 [6] changes the SCTP checksum due to weaknesses in the
4401 original Adler 32 checksum for small messages. This document, being
4402 used as a guide for a cut and paste replacement to update RFC 2960,
4403 thus also needs to incorporate the checksum changes. The idea is
4404 that one could apply all changes found in this guide to a copy of RFC
4405 2960 and have a "new" document that has ALL changes (including RFC
4406 3309).
4407
44082.38.2. Text Changes to the Document
4409
4410 ---------
4411 Old text:
4412 ---------
4413
4414 6.8 Adler-32 Checksum Calculation
4415
4416 When sending an SCTP packet, the endpoint MUST strengthen the data
4417 integrity of the transmission by including the Adler-32 checksum
4418 value calculated on the packet, as described below.
4419
4420 After the packet is constructed (containing the SCTP common header
4421 and one or more control or DATA chunks), the transmitter shall:
4422
4423
4424
4425
4426Stewart, et al. Informational [Page 79]
4427
4428RFC 4460 SCTP Errata April 2006
4429
4430
4431 1) Fill in the proper Verification Tag in the SCTP common header
4432 and initialize the checksum field to 0's.
4433
4434 2) Calculate the Adler-32 checksum of the whole packet, including
4435 the SCTP common header and all the chunks. Refer to
4436 appendix B for details of the Adler-32 algorithm. And,
4437
4438 3) Put the resultant value into the checksum field in the common
4439 header, and leave the rest of the bits unchanged.
4440
4441 When an SCTP packet is received, the receiver MUST first check the
4442 Adler-32 checksum:
4443
4444 1) Store the received Adler-32 checksum value aside,
4445
4446 2) Replace the 32 bits of the checksum field in the received SCTP
4447 packet with all '0's and calculate an Adler-32 checksum value
4448 of the whole received packet. And,
4449
4450 3) Verify that the calculated Adler-32 checksum is the same as the
4451 received Adler-32 checksum. If not, the receiver MUST treat
4452 the packet as an invalid SCTP packet.
4453
4454 The default procedure for handling invalid SCTP packets is to
4455 silently discard them.
4456
4457 ---------
4458 New text:
4459 ---------
4460
4461 6.8 CRC-32c Checksum Calculation
4462
4463 When sending an SCTP packet, the endpoint MUST strengthen the data
4464 integrity of the transmission by including the CRC32c checksum
4465 value calculated on the packet, as described below.
4466
4467 After the packet is constructed (containing the SCTP common header
4468 and one or more control or DATA chunks), the transmitter MUST
4469
4470 1) fill in the proper Verification Tag in the SCTP common header
4471 and initialize the checksum field to '0's,
4472
4473 2) calculate the CRC32c checksum of the whole packet, including
4474 the SCTP common header and all the chunks (refer to
4475 appendix B for details of the CRC32c algorithm); and
4476
4477 3) put the resultant value into the checksum field in the common
4478 header, and leave the rest of the bits unchanged.
4479
4480
4481
4482Stewart, et al. Informational [Page 80]
4483
4484RFC 4460 SCTP Errata April 2006
4485
4486
4487 When an SCTP packet is received, the receiver MUST first check the
4488 CRC32c checksum as follows:
4489
4490 1) Store the received CRC32c checksum value aside.
4491
4492 2) Replace the 32 bits of the checksum field in the received SCTP
4493 packet with all '0's and calculate a CRC32c checksum value of
4494 the whole received packet.
4495
4496 3) Verify that the calculated CRC32c checksum is the same as the
4497 received CRC32c checksum. If it is not, the receiver MUST
4498 treat the packet as an invalid SCTP packet.
4499
4500 The default procedure for handling invalid SCTP packets is to
4501 silently discard them.
4502
4503 Any hardware implementation SHOULD be done in a way that is
4504 verifiable by the software.
4505
4506
4507 ---------
4508 Old text:
4509 ---------
4510
4511 Appendix B Alder 32 bit checksum calculation
4512
4513 The Adler-32 checksum calculation given in this appendix is
4514 copied from [RFC1950].
4515
4516 Adler-32 is composed of two sums accumulated per byte: s1 is the
4517 sum of all bytes, s2 is the sum of all s1 values. Both sums are
4518 done modulo 65521. s1 is initialized to 1, s2 to zero. The
4519 Adler-32 checksum is stored as s2*65536 + s1 in network byte
4520 order.
4521
4522 The following C code computes the Adler-32 checksum of a data
4523 buffer. It is written for clarity, not for speed. The sample
4524 code is in the ANSI C programming language. Non C users may
4525 find it easier to read with these hints:
4526
4527 & Bitwise AND operator.
4528 >> Bitwise right shift operator. When applied to an
4529 unsigned quantity, as here, right shift inserts zero bit(s)
4530 at the left.
4531 << Bitwise left shift operator. Left shift inserts zero
4532 bit(s) at the right.
4533 ++ "n++" increments the variable n.
4534 % modulo operator: a % b is the remainder of a divided by b.
4535
4536
4537
4538Stewart, et al. Informational [Page 81]
4539
4540RFC 4460 SCTP Errata April 2006
4541
4542
4543 #define BASE 65521 /* largest prime smaller than 65536 */
4544 /*
4545 Update a running Adler-32 checksum with the bytes buf[0..len-1]
4546 and return the updated checksum. The Adler-32 checksum should
4547 be initialized to 1.
4548
4549 Usage example:
4550
4551 unsigned long adler = 1L;
4552
4553 while (read_buffer(buffer, length) != EOF) {
4554 adler = update_adler32(adler, buffer, length);
4555 }
4556 if (adler != original_adler) error();
4557 */
4558 unsigned long update_adler32(unsigned long adler,
4559 unsigned char *buf, int len)
4560 {
4561 unsigned long s1 = adler & 0xffff;
4562 unsigned long s2 = (adler >> 16) & 0xffff;
4563 int n;
4564
4565 for (n = 0; n < len; n++) {
4566 s1 = (s1 + buf[n]) % BASE;
4567 s2 = (s2 + s1) % BASE;
4568 }
4569 return (s2 << 16) + s1;
4570 }
4571
4572 /* Return the adler32 of the bytes buf[0..len-1] */
4573 unsigned long adler32(unsigned char *buf, int len)
4574 {
4575 return update_adler32(1L, buf, len);
4576 }
4577
4578 ---------
4579 New text:
4580 ---------
4581
4582 Appendix B CRC32c Checksum Calculation
4583
4584 We define a 'reflected value' as one that is the opposite of the
4585 normal bit order of the machine. The 32-bit CRC is calculated as
4586 described for CRC-32c and uses the polynomial code 0x11EDC6F41
4587 (Castagnoli93) or x^32+x^28+x^27+x^26+x^25
4588 +x^23+x^22+x^20+x^19+x^18+x^14+x^13+x^11+x^10+x^9+x^8+x^6+x^0.
4589 The CRC is computed using a procedure similar to ETHERNET CRC
4590 [ITU32], modified to reflect transport level usage.
4591
4592
4593
4594Stewart, et al. Informational [Page 82]
4595
4596RFC 4460 SCTP Errata April 2006
4597
4598
4599 CRC computation uses polynomial division. A message
4600 bit-string M is transformed to a polynomial, M(X), and the CRC
4601 is calculated from M(X) using polynomial arithmetic [PETERSON 72].
4602
4603 When CRCs are used at the link layer, the polynomial is derived
4604 from on-the-wire bit ordering: the first bit 'on the wire' is the
4605 high-order coefficient. Since SCTP is a transport-level protocol,
4606 it cannot know the actual serial-media bit ordering. Moreover,
4607 different links in the path between SCTP endpoints may use
4608 different link-level bit orders.
4609
4610 A convention must therefore be established for mapping SCTP
4611 transport messages to polynomials for purposes of CRC computation.
4612 The bit-ordering for mapping SCTP messages to polynomials is that
4613 bytes are taken most-significant first; but within each byte, bits
4614 are taken least-significant first. The first byte of the message
4615 provides the eight highest coefficients. Within each byte,
4616 the least-significant SCTP bit gives the most significant
4617 polynomial coefficient within that byte, and the most-significant
4618 SCTP bit is the least significant polynomial coefficient in that
4619 byte. (This bit ordering is sometimes called 'mirrored' or
4620 'reflected' [WILLIAMS93].) CRC polynomials are to be transformed
4621 back into SCTP transport-level byte values, using a consistent
4622 mapping.
4623
4624 The SCTP transport-level CRC value should be calculated as
4625 follows:
4626
4627 - CRC input data are assigned to a byte stream, numbered from
4628 0 to N-1.
4629
4630 - The transport-level byte-stream is mapped to a polynomial
4631 value. An N-byte PDU with j bytes numbered 0 to N-1 is
4632 considered as coefficients of a polynomial M(x) of order
4633 8N-1, with bit 0 of byte j being coefficient x^(8(N-j)-8),
4634 and bit 7 of byte j being coefficient x^(8(N-j)-1).
4635
4636 - The CRC remainder register is initialized with all 1s and
4637 the CRC is computed with an algorithm that simultaneously
4638 multiplies by x^32 and divides by the CRC polynomial.
4639
4640 - The polynomial is multiplied by x^32 and divided by G(x),
4641 the generator polynomial, producing a remainder R(x) of
4642 degree less than or equal to 31.
4643
4644 - The coefficients of R(x) are considered a 32-bit sequence.
4645
4646
4647
4648
4649
4650Stewart, et al. Informational [Page 83]
4651
4652RFC 4460 SCTP Errata April 2006
4653
4654
4655 - The bit sequence is complemented. The result is the CRC
4656 polynomial.
4657
4658 - The CRC polynomial is mapped back into SCTP transport-level
4659 bytes. The coefficient of x^31 gives the value of bit 7 of
4660 SCTP byte 0, and the coefficient of x^24 gives the value of
4661 bit 0 of byte 0. The coefficient of x^7 gives bit 7 of
4662 byte 3, and the coefficient of x^0 gives bit 0 of byte 3.
4663 The resulting four-byte transport-level sequence is the
4664 32-bit SCTP checksum value.
4665
4666 IMPLEMENTATION NOTE: Standards documents, textbooks, and vendor
4667 literature on CRCs often follow an alternative formulation, in
4668 which the register used to hold the remainder of the
4669 long-division algorithm is initialized to zero rather than
4670 all-1s, and instead the first 32 bits of the message are
4671 complemented. The long-division algorithm used in our
4672 formulation is specified such that the initial
4673 multiplication by 2^32 and the long-division are combined into
4674 one simultaneous operation. For such algorithms, and for
4675 messages longer than 64 bits, the two specifications are
4676 precisely equivalent. That equivalence is the intent of
4677 this document.
4678
4679 Implementors of SCTP are warned that both specifications are to be
4680 found in the literature, sometimes with no restriction on the
4681 long-division algorithm. The choice of formulation in this
4682 document is to permit non-SCTP usage, where the same CRC
4683 algorithm may be used to protect messages shorter than 64 bits.
4684
4685 There may be a computational advantage in validating the
4686 Association against the Verification Tag, prior to performing a
4687 checksum, as invalid tags will result in the same action as a bad
4688 checksum in most cases. The exceptions for this technique would
4689 be INIT and some SHUTDOWN-COMPLETE exchanges, as well as a stale
4690 COOKIE-ECHO. These special case exchanges must represent small
4691 packets and will minimize the effect of the checksum calculation.
4692
4693
4694 ---------
4695 Old text: (Section 18)
4696 ---------
4697
4698 18. Bibliography
4699
4700 [ALLMAN99] Allman, M. and Paxson, V., "On Estimating End-to-End
4701 Network Path Properties", Proc. SIGCOMM'99, 1999.
4702
4703
4704
4705
4706Stewart, et al. Informational [Page 84]
4707
4708RFC 4460 SCTP Errata April 2006
4709
4710
4711 [FALL96] Fall, K. and Floyd, S., Simulation-based Comparisons of
4712 Tahoe, Reno, and SACK TCP, Computer Communications Review,
4713 V. 26 N. 3, July 1996, pp. 5-21.
4714
4715 [RFC1750] Eastlake, D. (ed.), "Randomness Recommendations for
4716 Security", RFC 1750, December 1994.
4717
4718 [RFC1950] Deutsch P. and J. Gailly, "ZLIB Compressed Data Format
4719 Specification version 3.3", RFC 1950, May 1996.
4720
4721 [RFC2104] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-
4722 Hashing for Message Authentication", RFC 2104, March 1997.
4723
4724 [RFC2196] Fraser, B., "Site Security Handbook", FYI 8, RFC 2196,
4725 September 1997.
4726
4727 [RFC2522] Karn, P. and W. Simpson, "Photuris: Session-Key Management
4728 Protocol", RFC 2522, March 1999.
4729
4730 [SAVAGE99] Savage, S., Cardwell, N., Wetherall, D., and Anderson, T.,
4731 "TCP Congestion Control with a Misbehaving Receiver", ACM
4732 Computer Communication Review, 29(5), October 1999.
4733
4734 ---------
4735 New text: (Section 18, including changes from 2.11)
4736 ---------
4737
4738 18. Bibliography
4739
4740 [ALLMAN99] Allman, M. and Paxson, V., "On Estimating End-to-End
4741 Network Path Properties", Proc. SIGCOMM'99, 1999.
4742
4743 [FALL96] Fall, K. and Floyd, S., Simulation-based Comparisons of
4744 Tahoe, Reno, and SACK TCP, Computer Communications Review,
4745 V. 26 N. 3, July 1996, pp. 5-21.
4746
4747 [ITU32] ITU-T Recommendation V.42, "Error-correcting
4748 procedures for DCEs using asynchronous-to-synchronous
4749 conversion", Section 8.1.1.6.2, October 1996.
4750
4751 [PETERSON 1972] W. W. Peterson and E.J Weldon, Error Correcting
4752 Codes, 2nd Edition, MIT Press, Cambridge,
4753 Massachusetts.
4754
4755 [RFC1750] Eastlake, D., Ed., "Randomness Recommendations for
4756 Security", RFC 1750, December 1994.
4757
4758
4759
4760
4761
4762Stewart, et al. Informational [Page 85]
4763
4764RFC 4460 SCTP Errata April 2006
4765
4766
4767 [RFC1858] Ziemba, G., Reed, D. and Traina P., "Security
4768 Considerations for IP Fragment Filtering", RFC 1858,
4769 October 1995.
4770
4771 [RFC1950] Deutsch P. and J. Gailly, "ZLIB Compressed Data Format
4772 Specification version 3.3", RFC 1950, May 1996.
4773
4774 [RFC2104] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-
4775 Hashing for Message Authentication", RFC 2104, March 1997.
4776
4777 [RFC2196] Fraser, B., "Site Security Handbook", FYI 8, RFC 2196,
4778 September 1997.
4779
4780 [RFC2522] Karn, P. and W. Simpson, "Photuris: Session-Key Management
4781 Protocol", RFC 2522, March 1999.
4782
4783 [SAVAGE99] Savage, S., Cardwell, N., Wetherall, D., and Anderson, T.,
4784 "TCP Congestion Control with a Misbehaving Receiver", ACM
4785 Computer Communication Review, 29(5), October 1999.
4786
4787 [WILLIAMS93] Williams, R., "A PAINLESS GUIDE TO CRC ERROR
4788 DETECTION ALGORITHMS" - Internet publication, August
4789 1993,
4790 http://www.geocities.com/SiliconValley/Pines/
4791 8659/crc.htm.
4792
47932.38.3. Solution Description
4794
4795 This change adds to the implementor's guide the complete set of
4796 changes that, when combined with RFC 2960 [5], encompasses the
4797 changes from RFC 3309 [6].
4798
47992.39. Retransmission Policy
4800
48012.39.1. Description of the Problem
4802
4803 The current retransmission policy (send all retransmissions an
4804 alternate destination) in the specification has performance issues
4805 under certain loss conditions with multihomed endpoints. Instead,
4806 fast retransmissions should be sent to the same destination, and only
4807 timeout retransmissions should be sent to an alternate destination
4808 [4].
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818Stewart, et al. Informational [Page 86]
4819
4820RFC 4460 SCTP Errata April 2006
4821
4822
48232.39.2. Text Changes to the Document
4824
4825 ---------
4826 Old text: (Section 6.4)
4827 ---------
4828
4829 Furthermore, when its peer is multi-homed, an endpoint SHOULD try to
4830 retransmit a chunk to an active destination transport address that is
4831 different from the last destination address to which the DATA chunk
4832 was sent.
4833
4834 ---------
4835 New text: (Section 6.4)
4836 ---------
4837
4838 Furthermore, when its peer is multi-homed, an endpoint SHOULD try to
4839 retransmit a chunk that timed out to an active destination transport
4840 address that is different from the last destination address to which
4841 the DATA chunk was sent.
4842
4843 ---------
4844 Old text: (Section 6.4.1)
4845 ---------
4846
4847 When retransmitting data, if the endpoint is multi-homed, it should
4848 consider each source-destination address pair in its retransmission
4849 selection policy. When retransmitting the endpoint should attempt to
4850 pick the most divergent source-destination pair from the original
4851 source-destination pair to which the packet was transmitted.
4852
4853 ---------
4854 New text: (Section 6.4.1)
4855 ---------
4856
4857 When retransmitting data that timed out, if the endpoint is
4858 multi-homed, it should consider each source-destination address
4859 pair in its retransmission selection policy. When retransmitting
4860 timed out data, the endpoint should attempt to pick the most
4861 divergent source-destination pair from the original
4862 source-destination pair to which the packet was transmitted.
4863
48642.39.3. Solution Description
4865
4866 The above wording changes clarify that only timeout retransmissions
4867 should be sent to an alternate active destination.
4868
4869
4870
4871
4872
4873
4874Stewart, et al. Informational [Page 87]
4875
4876RFC 4460 SCTP Errata April 2006
4877
4878
48792.40. Port Number 0
4880
48812.40.1. Description of the Problem
4882
4883 The port number 0 has a special semantic in various APIs. For
4884 example, in the socket API, if the user specifies 0, the SCTP
4885 implementation chooses an appropriate port number for the user.
4886 Therefore, the port number 0 should not be used on the wire.
4887
48882.40.2. Text Changes to the Document
4889
4890 ---------
4891 Old text: (Section 3.1)
4892 ---------
4893
4894 Source Port Number: 16 bits (unsigned integer)
4895
4896 This is the SCTP sender's port number. It can be used by the
4897 receiver in combination with the source IP address, the SCTP
4898 destination port, and possibly the destination IP address to
4899 identify the association to which this packet belongs.
4900
4901 Destination Port Number: 16 bits (unsigned integer)
4902
4903 This is the SCTP port number to which this packet is destined.
4904 The receiving host will use this port number to de-multiplex
4905 the SCTP packet to the correct receiving endpoint/application.
4906
4907 ---------
4908 New text: (Section 3.1)
4909 ---------
4910
4911 Source Port Number: 16 bits (unsigned integer)
4912
4913 This is the SCTP sender's port number. It can be used by the
4914 receiver in combination with the source IP address, the SCTP
4915 destination port and possibly the destination IP address to
4916 identify the association to which this packet belongs.
4917 The port number 0 MUST NOT be used.
4918
4919 Destination Port Number: 16 bits (unsigned integer)
4920
4921 This is the SCTP port number to which this packet is destined.
4922 The receiving host will use this port number to de-multiplex
4923 the SCTP packet to the correct receiving endpoint/application.
4924 The port number 0 MUST NOT be used.
4925
4926
4927
4928
4929
4930Stewart, et al. Informational [Page 88]
4931
4932RFC 4460 SCTP Errata April 2006
4933
4934
49352.40.3. Solution Description
4936
4937 It is clearly stated that the port number 0 is an invalid value on
4938 the wire.
4939
49402.41. T Bit
4941
49422.41.1. Description of the Problem
4943
4944 The description of the T bit as the bit describing whether a TCB has
4945 been destroyed is misleading. In addition, the procedure described
4946 in Section 2.13 is not as precise as needed.
4947
49482.41.2. Text Changes to the Document
4949
4950 ---------
4951 Old text: (Section 3.3.7)
4952 ---------
4953
4954 T bit: 1 bit
4955 The T bit is set to 0 if the sender had a TCB that it
4956 destroyed. If the sender did not have a TCB it should set
4957 this bit to 1.
4958
4959 ---------
4960 New text: (Section 3.3.7)
4961 ---------
4962
4963 T bit: 1 bit
4964 The T bit is set to 0 if the sender filled in the
4965 Verification Tag expected by the peer. If the Verification
4966 Tag is reflected, the T bit MUST be set to 1. Reflecting means
4967 that the sent Verification Tag is the same as the received
4968 one.
4969
4970
4971 ---------
4972 Old text: (Section 3.3.13)
4973 ---------
4974
4975 T bit: 1 bit
4976 The T bit is set to 0 if the sender had a TCB that it
4977 destroyed. If the sender did not have a TCB it should set
4978 this bit to 1.
4979
4980
4981
4982
4983
4984
4985
4986Stewart, et al. Informational [Page 89]
4987
4988RFC 4460 SCTP Errata April 2006
4989
4990
4991 ---------
4992 New text: (Section 3.3.13)
4993 ---------
4994
4995 T bit: 1 bit
4996 The T bit is set to 0 if the sender filled in the
4997 Verification Tag expected by the peer. If the Verification
4998 Tag is reflected, the T bit MUST be set to 1. Reflecting means
4999 that the sent Verification Tag is the same as the received
5000 one.
5001
5002
5003 ---------
5004 Old text: (Section 8.4)
5005 ---------
5006
5007 3) If the packet contains an INIT chunk with a Verification Tag
5008 set to '0', process it as described in Section 5.1.
5009 Otherwise,
5010
5011 ---------
5012 New text: (Section 8.4)
5013 ---------
5014 3) If the packet contains an INIT chunk with a Verification Tag
5015 set to '0', process it as described in Section 5.1. If, for
5016 whatever reason, the INIT cannot be processed normally and
5017 an ABORT has to be sent in response, the Verification Tag of
5018 the packet containing the ABORT chunk MUST be the Initiate
5019 tag of the received INIT chunk, and the T-Bit of the ABORT
5020 chunk has to be set to 0, indicating that the Verification
5021 Tag is NOT reflected.
5022
5023
5024 ---------
5025 Old text: (Section 8.4)
5026 ---------
5027 5) If the packet contains a SHUTDOWN ACK chunk, the receiver
5028 should respond to the sender of the OOTB packet with a
5029 SHUTDOWN COMPLETE. When sending the SHUTDOWN COMPLETE, the
5030 receiver of the OOTB packet must fill in the Verification
5031 Tag field of the outbound packet with the Verification Tag
5032 received in the SHUTDOWN ACK and set the T-bit in the Chunk
5033 Flags to indicate that no TCB was found. Otherwise,
5034
5035
5036
5037
5038
5039
5040
5041
5042Stewart, et al. Informational [Page 90]
5043
5044RFC 4460 SCTP Errata April 2006
5045
5046
5047 ---------
5048 New text: (Section 8.4)
5049 ---------
5050
5051 5) If the packet contains a SHUTDOWN ACK chunk, the receiver
5052 should respond to the sender of the OOTB packet with a
5053 SHUTDOWN COMPLETE. When sending the SHUTDOWN COMPLETE, the
5054 receiver of the OOTB packet must fill in the Verification
5055 Tag field of the outbound packet with the Verification Tag
5056 received in the SHUTDOWN ACK and set the T-bit in the
5057 Chunk Flags to indicate that the Verification Tag is
5058 reflected. Otherwise,
5059
5060
5061 ---------
5062 Old text: (Section 8.4)
5063 ---------
5064
5065 8) The receiver should respond to the sender of the OOTB packet
5066 with an ABORT. When sending the ABORT, the receiver of the
5067 OOTB packet MUST fill in the Verification Tag field of the
5068 outbound packet with the value found in the Verification
5069 Tag field of the OOTB packet and set the T-bit in the Chunk
5070 Flags to indicate that no TCB was found. After sending this
5071 ABORT, the receiver of the OOTB packet shall discard the
5072 OOTB packet and take no further action.
5073
5074 ---------
5075 New text: (Section 8.4)
5076 ---------
5077
5078 8) The receiver should respond to the sender of the OOTB packet
5079 with an ABORT. When sending the ABORT, the receiver of the
5080 OOTB packet MUST fill in the Verification Tag field of the
5081 outbound packet with the value found in the Verification Tag
5082 field of the OOTB packet and set the T-bit in the Chunk Flags
5083 to indicate that the Verification Tag is reflected. After
5084 sending this ABORT, the receiver of the OOTB packet shall
5085 discard the OOTB packet and take no further action.
5086
5087
5088 ---------
5089 Old text: (Section 8.5.1)
5090 ---------
5091
5092 B) Rules for packet carrying ABORT:
5093
5094
5095
5096
5097
5098Stewart, et al. Informational [Page 91]
5099
5100RFC 4460 SCTP Errata April 2006
5101
5102
5103 - The endpoint shall always fill in the Verification Tag
5104 field of the outbound packet with the destination
5105 endpoint's tag value if it is known.
5106
5107 - If the ABORT is sent in response to an OOTB packet, the
5108 endpoint MUST follow the procedure described in
5109 Section 8.4.
5110
5111 - The receiver MUST accept the packet if the Verification
5112 Tag matches either its own tag, OR the tag of its peer.
5113 Otherwise, the receiver MUST silently discard the packet
5114 and take no further action.
5115
5116 ---------
5117 New text: (Section 8.5.1)
5118 ---------
5119
5120 B) Rules for packet carrying ABORT:
5121
5122 - The endpoint MUST always fill in the Verification Tag
5123 field of the outbound packet with the destination
5124 endpoint's tag value, if it is known.
5125
5126 - If the ABORT is sent in response to an OOTB packet, the
5127 endpoint MUST follow the procedure described in
5128 Section 8.4.
5129
5130 - The receiver of an ABORT MUST accept the packet
5131 if the Verification Tag field of the packet matches its
5132 own tag and the T bit is not set
5133 OR
5134 if it is set to its peer's tag and the T bit is set in
5135 the Chunk Flags.
5136 Otherwise, the receiver MUST silently discard the packet
5137 and take no further action.
5138
5139
5140 ---------
5141 Old text: (Section 8.5.1)
5142 ---------
5143
5144 C) Rules for packet carrying SHUTDOWN COMPLETE:
5145
5146 - When sending a SHUTDOWN COMPLETE, if the receiver of the
5147 SHUTDOWN ACK has a TCB then the destination endpoint's
5148 tag MUST be used. Only where no TCB exists should the
5149 sender use the Verification Tag from the SHUTDOWN ACK.
5150
5151
5152
5153
5154Stewart, et al. Informational [Page 92]
5155
5156RFC 4460 SCTP Errata April 2006
5157
5158
5159 - The receiver of a SHUTDOWN COMPLETE shall accept the
5160 packet if the Verification Tag field of the packet matches
5161 its own tag OR it is set to its peer's tag and the T bit
5162 is set in the Chunk Flags. Otherwise, the receiver MUST
5163 silently discard the packet and take no further action.
5164 An endpoint MUST ignore the SHUTDOWN COMPLETE if it is
5165 not in the SHUTDOWN-ACK-SENT state.
5166
5167 ---------
5168 New text: (Section 8.5.1)
5169 ---------
5170
5171 C) Rules for packet carrying SHUTDOWN COMPLETE:
5172
5173 - When sending a SHUTDOWN COMPLETE, if the receiver of the
5174 SHUTDOWN ACK has a TCB, then the destination endpoint's tag
5175 MUST be used, and the T-bit MUST NOT be set. Only where no
5176 TCB exists should the sender use the Verification Tag from
5177 the SHUTDOWN ACK, and MUST set the T-bit.
5178
5179 - The receiver of a SHUTDOWN COMPLETE shall accept the packet
5180 if the Verification Tag field of the packet matches its own
5181 tag and the T bit is not set
5182 OR
5183 if it is set to its peer's tag and the T bit is set in the
5184 Chunk Flags.
5185 Otherwise, the receiver MUST silently discard the packet
5186 and take no further action. An endpoint MUST ignore the
5187 SHUTDOWN COMPLETE if it is not in the SHUTDOWN-ACK-SENT
5188 state.
5189
51902.41.3. Solution Description
5191
5192 The description of the T bit now clearly describes the semantic of
5193 the bit. The procedures for receiving the T bit have been clarified.
5194
51952.42. Unknown Parameter Handling
5196
51972.42.1. Description of the Problem
5198
5199 The description given in Section 2.33 does not state clearly whether
5200 an INIT-ACK or COOKIE-ECHO is sent.
5201
52022.42.2. Text Changes to the Document
5203
5204 The changes given here already include changes suggested in Section
5205 2.2, 2.27, and 2.33 of this document.
5206
5207
5208
5209
5210Stewart, et al. Informational [Page 93]
5211
5212RFC 4460 SCTP Errata April 2006
5213
5214
5215 ---------
5216 Old text: (Section 3.2.1)
5217 ---------
5218
5219 00 - Stop processing this SCTP packet and discard it do not process
5220 any further chunks within it.
5221
5222 01 - Stop processing this SCTP packet and discard it, do not process
5223 any further chunks within it, and report the unrecognized
5224 parameter in an 'Unrecognized Parameter Type' (in either an
5225 ERROR or in the INIT ACK).
5226
5227 10 - Skip this parameter and continue processing.
5228
5229 11 - Skip this parameter and continue processing but report the
5230 unrecognized parameter in an 'Unrecognized Parameter Type' (in
5231 either an ERROR or in the INIT ACK).
5232
5233 ---------
5234 New text: (Section 3.2.1)
5235 ---------
5236
5237 00 - Stop processing this parameter; do not process
5238 any further parameters within this chunk.
5239
5240 01 - Stop processing this parameter, do not process
5241 any further parameters within this chunk, and report the
5242 unrecognized parameter in an 'Unrecognized Parameter', as
5243 described in 3.2.2.
5244
5245 10 - Skip this parameter and continue processing.
5246
5247 11 - Skip this parameter and continue processing but report the
5248 unrecognized parameter in an 'Unrecognized Parameter', as
5249 described in 3.2.2.
5250
5251 Please note that in all four cases an INIT-ACK or COOKIE-ECHO
5252 chunk is sent. In the 00 or 01 case the processing of the
5253 parameters after the unknown parameter is canceled, but no
5254 processing already done is rolled back.
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266Stewart, et al. Informational [Page 94]
5267
5268RFC 4460 SCTP Errata April 2006
5269
5270
5271 ---------
5272 New text: (Note: no old text; clarification added in Section 3.2)
5273 ---------
5274
5275 3.2.2. Reporting of Unrecognized Parameters
5276
5277 If the receiver of an INIT chunk detects unrecognized parameters
5278 and has to report them according to Section 3.2.1, it MUST put
5279 the 'Unrecognized Parameter' parameter(s) in the INIT-ACK chunk
5280 sent in response to the INIT-chunk. Note that if the receiver
5281 of the INIT chunk is NOT going to establish an association (e.g.,
5282 due to lack of resources), an 'Unrecognized Parameter' would NOT
5283 be included with any ABORT being sent to the sender of the INIT.
5284
5285 If the receiver of an INIT-ACK chunk detects unrecognized
5286 parameters and has to report them according to Section 3.2.1, it
5287 SHOULD bundle the ERROR chunk containing the 'Unrecognized
5288 Parameters' error cause with the COOKIE-ECHO chunk sent in
5289 response to the INIT-ACK chunk. If the receiver of the INIT-ACK
5290 cannot bundle the COOKIE-ECHO chunk with the ERROR chunk, the
5291 ERROR chunk MAY be sent separately but not before the COOKIE-ACK
5292 has been received.
5293
5294 Note: Any time a COOKIE-ECHO is sent in a packet, it MUST be the
5295 first chunk.
5296
52972.42.3. Solution Description
5298
5299 The new text clearly states that an INIT-ACK or COOKIE-ECHO has to be
5300 sent.
5301
53022.43. Cookie Echo Chunk
5303
53042.43.1. Description of the Problem
5305
5306 The description given in Section 3.3.11 of RFC 2960 [5] is unclear as
5307 to how the COOKIE-ECHO is composed.
5308
53092.43.2. Text Changes to the Document
5310
5311 ---------
5312 Old text: (Section 3.3.11)
5313 ---------
5314 Cookie: variable size
5315
5316 This field must contain the exact cookie received in the State
5317 Cookie parameter from the previous INIT ACK.
5318
5319
5320
5321
5322Stewart, et al. Informational [Page 95]
5323
5324RFC 4460 SCTP Errata April 2006
5325
5326
5327 An implementation SHOULD make the cookie as small as possible
5328 to insure interoperability.
5329
5330 ---------
5331 New text: (Section 3.3.11)
5332 ---------
5333 Cookie: variable size
5334
5335 This field must contain the exact cookie received in the State
5336 Cookie parameter from the previous INIT ACK.
5337
5338 An implementation SHOULD make the cookie as small as possible
5339 to ensure interoperability.
5340
5341 Note: A Cookie Echo does NOT contain a State Cookie
5342 Parameter; instead, the data within the State Cookie's
5343 Parameter Value becomes the data within the Cookie Echo's
5344 Chunk Value. This allows an implementation to change only
5345 the first two bytes of the State Cookie parameter to become
5346 a Cookie Echo Chunk.
5347
53482.43.3. Solution Description
5349
5350 The new text adds a note that helps clarify that a Cookie Echo chunk
5351 is nothing more than the State Cookie parameter with only two bytes
5352 modified.
5353
53542.44. Partial Chunks
5355
53562.44.1. Description of the Problem
5357
5358 Section 6.10 of RFC 2960 [5] uses the notion of 'partial chunks'
5359 without defining it.
5360
53612.44.2. Text Changes to the Document
5362
5363 ---------
5364 Old text: (Section 6.10)
5365 ---------
5366 Partial chunks MUST NOT be placed in an SCTP packet.
5367
5368 ---------
5369 New text: (Section 6.10)
5370 ---------
5371 Partial chunks MUST NOT be placed in an SCTP packet. A partial
5372 chunk is a chunk that is not completely contained in the SCTP
5373 packet; i.e., the SCTP packet is too short to contain all the bytes
5374 of the chunk as indicated by the chunk length.
5375
5376
5377
5378Stewart, et al. Informational [Page 96]
5379
5380RFC 4460 SCTP Errata April 2006
5381
5382
53832.44.3. Solution Description
5384
5385 The new text adds a definition of 'partial chunks'.
5386
53872.45. Non-unicast Addresses
5388
53892.45.1. Description of the Problem
5390
5391 Section 8.4 of RFC 2960 [5] forces the OOTB handling to discard all
5392 non-unicast addresses. This leaves future use of anycast addresses
5393 in question. With the addition of the add-ip feature, SCTP should be
5394 able to easily handle anycast INIT s that can be followed, after
5395 association setup, with a delete of the anycast address from the
5396 association.
5397
53982.45.2. Text Changes to the Document
5399
5400 ---------
5401 Old text: (Section 8.4)
5402 ---------
5403 8.4 Handle "Out of the blue" Packets
5404
5405 An SCTP packet is called an "out of the blue" (OOTB) packet if
5406 it is correctly formed, i.e., passed the receiver's Adler-32
5407 check (see Section 6.8), but the receiver is not able to
5408 identify the association to which this packet belongs.
5409
5410 The receiver of an OOTB packet MUST do the following:
5411
5412 1) If the OOTB packet is to or from a non-unicast address,
5413 silently discard the packet. Otherwise,
5414
5415
5416 ---------
5417 New text: (Section 8.4)
5418 ---------
5419
5420 8.4. Handle "Out of the Blue" Packets
5421
5422 An SCTP packet is called an "out of the blue" (OOTB) packet if
5423 it is correctly formed (i.e., passed the receiver's CRC32c
5424 check; see Section 6.8), but the receiver is not able to identify
5425 the association to which this packet belongs.
5426
5427 The receiver of an OOTB packet MUST do the following:
5428
5429 1) If the OOTB packet is to or from a non-unicast address, a
5430 receiver SHOULD silently discard the packet. Otherwise,
5431
5432
5433
5434Stewart, et al. Informational [Page 97]
5435
5436RFC 4460 SCTP Errata April 2006
5437
5438
54392.45.3. Solution Description
5440
5441 The loosening of the wording to a SHOULD will now allow future use of
5442 anycast addresses. Note that no changes are made to Section
5443 11.2.4.1, since responding to broadcast addresses could lead to
5444 flooding attacks and implementors should pay careful attention to
5445 these words.
5446
54472.46. Processing of ABORT Chunks
5448
54492.46.1. Description of the Problem
5450
5451 Section 3.3.7 of RFC 2960 [5] requires an SCTP endpoint to silently
5452 discard ABORT chunks received for associations that do not exist. It
5453 is not clear what this means in the COOKIE-WAIT state, for example.
5454 Therefore, it was not clear whether an ABORT sent in response to an
5455 INIT should be processed or silently discarded.
5456
54572.46.2. Text Changes to the Document
5458
5459 ---------
5460 Old text: (Section 3.3.7)
5461 ---------
5462
5463 If an endpoint receives an ABORT with a format error or for an
5464 association that doesn't exist, it MUST silently discard it.
5465
5466 ---------
5467 New text: (Section 3.3.7)
5468 ---------
5469
5470 If an endpoint receives an ABORT with a format error or no
5471 TCB is found, it MUST silently discard it.
5472
54732.46.3. Solution Description
5474
5475 It is now clearly stated that an ABORT chunk should be processed
5476 whenever a TCB is found.
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490Stewart, et al. Informational [Page 98]
5491
5492RFC 4460 SCTP Errata April 2006
5493
5494
54952.47. Sending of ABORT Chunks
5496
54972.47.1. Description of the Problem
5498
5499 Section 5.1 of RFC 2960 [5] requires that an ABORT chunk be sent in
5500 response to an INIT chunk when there is no listening end point. To
5501 make port scanning harder, someone might not want these ABORTs to be
5502 received by the sender of the INIT chunks. Currently, the only way
5503 to enforce this is by using a firewall that discards the packets
5504 containing the INIT chunks or the packets containing the ABORT
5505 chunks. It is desirable that the same can be done without a middle
5506 box.
5507
55082.47.2. Text Changes to the Document
5509
5510 ---------
5511 Old text: (Section 5.1)
5512 ---------
5513
5514 If an endpoint receives an INIT, INIT ACK, or COOKIE ECHO chunk
5515 but decides not to establish the new association due to missing
5516 mandatory parameters in the received INIT or INIT ACK, invalid
5517 parameter values, or lack of local resources, it MUST respond with
5518 an ABORT chunk.
5519
5520 ---------
5521 New text: (Section 5.1)
5522 ---------
5523
5524 If an endpoint receives an INIT, INIT ACK, or COOKIE ECHO chunk
5525 but decides not to establish the new association due to missing
5526 mandatory parameters in the received INIT or INIT ACK, invalid
5527 parameter values, or lack of local resources, it SHOULD respond
5528 with an ABORT chunk.
5529
55302.47.3. Solution Description
5531
5532 The requirement of sending ABORT chunks is relaxed such that an
5533 implementation can decide not to send ABORT chunks.
5534
55352.48. Handling of Supported Address Types Parameter
5536
55372.48.1. Description of the Problem
5538
5539 The sender of the INIT chunk can include a 'Supported Address Types'
5540 parameter to indicate which address families are supported. It is
5541 unclear how an INIT chunk should be processed where the source
5542 address of the packet containing the INIT chunk or listed addresses
5543
5544
5545
5546Stewart, et al. Informational [Page 99]
5547
5548RFC 4460 SCTP Errata April 2006
5549
5550
5551 within the INIT chunk indicate that more address types are supported
5552 than those listed in the 'Supported Address Types' parameter.
5553
55542.48.2. Text Changes to the Document
5555
5556 The changes given here already include changes suggested in Section
5557 2.28 of this document.
5558
5559 ---------
5560 Old text: (Section 5.1.2)
5561 ---------
5562
5563 IMPLEMENTATION NOTE: In the case that the receiver of an INIT ACK
5564 fails to resolve the address parameter due to an unsupported type,
5565 it can abort the initiation process and then attempt a
5566 re-initiation by using a 'Supported Address Types' parameter in
5567 the new INIT to indicate what types of address it prefers.
5568
5569 ---------
5570 New text: (Section 5.1.2)
5571 ---------
5572
5573 IMPLEMENTATION NOTE: In the case that the receiver of an INIT ACK
5574 fails to resolve the address parameter due to an unsupported type,
5575 it can abort the initiation process and then attempt a re-
5576 initiation by using a 'Supported Address Types' parameter in the
5577 new INIT to indicate what types of address it prefers.
5578
5579 IMPLEMENTATION NOTE: If an SCTP endpoint that only supports either
5580 IPv4 or IPv6 receives IPv4 and IPv6 addresses in an INIT or INIT-
5581 ACK chunk from its peer, it MUST use all the addresses belonging
5582 to the supported address family. The other addresses MAY be
5583 ignored. The endpoint SHOULD NOT respond with any kind of error
5584 indication.
5585
5586 IMPLEMENTATION NOTE: If an SCTP endpoint lists in the 'Supported
5587 Address Types' parameter either IPv4 or IPv6, but uses the other
5588 family for sending the packet containing the INIT chunk, or if it
5589 also lists addresses of the other family in the INIT chunk, then
5590 the address family that is not listed in the 'Supported Address
5591 Types' parameter SHOULD also be considered as supported by the
5592 receiver of the INIT chunk. The receiver of the INIT chunk SHOULD
5593 NOT respond with any kind of error indication.
5594
55952.48.3. Solution Description
5596
5597 It is now clearly described how these Supported Address Types
5598 parameters with incorrect data should be handled.
5599
5600
5601
5602Stewart, et al. Informational [Page 100]
5603
5604RFC 4460 SCTP Errata April 2006
5605
5606
56072.49. Handling of Unexpected Parameters
5608
56092.49.1. Description of the Problem
5610
5611 RFC 2960 [5] clearly describes how unknown parameters in the INIT and
5612 INIT-ACK chunk should be processed. But it is not described how
5613 unexpected parameters should be processed. A parameter is unexpected
5614 if it is known and is an optional parameter in either the INIT or
5615 INIT-ACK chunk but is received in the chunk for which it is not an
5616 optional parameter. For example, the 'Supported Address Types'
5617 parameter would be an unexpected parameter if contained in an INIT-
5618 ACK chunk.
5619
56202.49.2. Text Changes to the Document
5621
5622 ---------
5623 Old text: (Section 3.3.2)
5624 ---------
5625
5626 Note 4: This parameter, when present, specifies all the address
5627 types the sending endpoint can support. The absence of this
5628 parameter indicates that the sending endpoint can support any
5629 address type.
5630
5631 ---------
5632 New text: (Section 3.3.2)
5633 ---------
5634
5635 Note 4: This parameter, when present, specifies all the address
5636 types the sending endpoint can support. The absence of this
5637 parameter indicates that the sending endpoint can support any
5638 address type.
5639
5640 IMPLEMENTATION NOTE: If an INIT chunk is received with known
5641 parameters that are not optional parameters of the INIT chunk
5642 then the receiver SHOULD process the INIT chunk and send back
5643 an INIT-ACK. The receiver of the INIT chunk MAY bundle an ERROR
5644 chunk with the COOKIE-ACK chunk later. However, restrictive
5645 implementations MAY send back an ABORT chunk in response to
5646 the INIT chunk.
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658Stewart, et al. Informational [Page 101]
5659
5660RFC 4460 SCTP Errata April 2006
5661
5662
5663 ---------
5664 Old text: (Section 3.3.3)
5665 ---------
5666
5667 IMPLEMENTATION NOTE: An implementation MUST be prepared to receive
5668 a INIT ACK that is quite large (more than 1500 bytes) due to the
5669 variable size of the state cookie AND the variable address list.
5670 For example if a responder to the INIT has 1000 IPv4 addresses
5671 it wishes to send, it would need at least 8,000 bytes to encode
5672 this in the INIT ACK.
5673
5674 ---------
5675 New text: (Section 3.3.3)
5676 ---------
5677
5678 IMPLEMENTATION NOTE: An implementation MUST be prepared to receive
5679 a INIT ACK that is quite large (more than 1500 bytes) due to the
5680 variable size of the state cookie AND the variable address list.
5681 For example, if a responder to the INIT has 1000 IPv4 addresses
5682 it wishes to send, it would need at least 8,000 bytes to encode
5683 this in the INIT ACK.
5684
5685 IMPLEMENTATION NOTE: If an INIT-ACK chunk is received with known
5686 parameters that are not optional parameters of the INIT-ACK
5687 chunk, then the receiver SHOULD process the INIT-ACK chunk and
5688 send back a COOKIE-ECHO. The receiver of the INIT-ACK chunk
5689 MAY bundle an ERROR chunk with the COOKIE-ECHO chunk. However,
5690 restrictive implementations MAY send back an ABORT chunk in
5691 response to the INIT-ACK chunk.
5692
56932.49.3. Solution Description
5694
5695 It is now stated how unexpected parameters should be processed.
5696
56972.50. Payload Protocol Identifier
5698
56992.50.1. Description of the Problem
5700
5701 The current description of the payload protocol identifier does NOT
5702 highlight the fact that the field is NOT necessarily in network byte
5703 order.
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714Stewart, et al. Informational [Page 102]
5715
5716RFC 4460 SCTP Errata April 2006
5717
5718
57192.50.2. Text Changes to the Document
5720
5721 ---------
5722 Old text: (Section 3.3.1)
5723 ---------
5724 Payload Protocol Identifier: 32 bits (unsigned integer)
5725
5726 This value represents an application (or upper layer) specified
5727 protocol identifier. This value is passed to SCTP by its upper
5728 layer and sent to its peer. This identifier is not used by
5729 SCTP but can be used by certain network entities as well as
5730 the peer application to identify the type of information being
5731 carried in this DATA chunk. This field must be sent even in
5732 fragmented DATA chunks (to make sure it is available for agents
5733 in the middle of the network).
5734
5735 The value 0 indicates no application identifier is specified by
5736 the upper layer for this payload data.
5737
5738 ---------
5739 New text: (Section 3.3.1)
5740 ---------
5741 Payload Protocol Identifier: 32 bits (unsigned integer)
5742
5743 This value represents an application (or upper layer) specified
5744 protocol identifier. This value is passed to SCTP by its upper
5745 layer and sent to its peer. This identifier is not used by
5746 SCTP but can be used by certain network entities, as well as by
5747 the peer application, to identify the type of information being
5748 carried in this DATA chunk. This field must be sent even in
5749 fragmented DATA chunks (to make sure it is available for agents
5750 in the middle of the network). Note that this field is NOT
5751 touched by an SCTP implementation, therefore its byte order is
5752 NOT necessarily Big Endian. The upper layer is responsible
5753 for any byte order conversions to this field.
5754
5755 The value 0 indicates that no application identifier is
5756 specified by the upper layer for this payload data.
5757
57582.50.3. Solution Description
5759
5760 It is now explicitly stated that the upper layer is responsible for
5761 the byte order of this field.
5762
5763
5764
5765
5766
5767
5768
5769
5770Stewart, et al. Informational [Page 103]
5771
5772RFC 4460 SCTP Errata April 2006
5773
5774
57752.51. Karn's Algorithm
5776
57772.51.1. Description of the Problem
5778
5779 The current wording of the use of Karn's algorithm is not descriptive
5780 enough to ensure that an implementation in a multi-homed association
5781 does not incorrectly mismeasure the RTT.
5782
57832.51.2. Text Changes to the Document
5784
5785 ---------
5786 Old text: (Section 6.3.1)
5787 ---------
5788
5789 C5) Karn's algorithm: RTT measurements MUST NOT be made using
5790 packets that were retransmitted (and thus for which it is
5791 ambiguous whether the reply was for the first instance of the
5792 packet or a later instance)
5793 ---------
5794 New text: (Section 6.3.1)
5795 ---------
5796
5797 C5) Karn's algorithm: RTT measurements MUST NOT be made using
5798 chunks that were retransmitted (and thus for which it is
5799 ambiguous whether the reply was for the first instance of
5800 the chunk or for a later instance)
5801
5802 IMPLEMENTATION NOTE: RTT measurements should only be
5803 made using a chunk with TSN r if no chunk
5804 with TSN less than or equal to r is retransmitted
5805 since r is first sent.
5806
58072.51.3. Solution Description
5808
5809 The above clarification adds an implementation note that will provide
5810 additional guidance in the application of Karn's algorithm.
5811
58122.52. Fast Retransmit Algorithm
5813
58142.52.1. Description of the Problem
5815
5816 The original SCTP specification is overly conservative in requiring 4
5817 missing reports before fast retransmitting a segment. TCP uses 3
5818 missing reports or 4 acknowledgements indicating that the same
5819 segment was received.
5820
5821
5822
5823
5824
5825
5826Stewart, et al. Informational [Page 104]
5827
5828RFC 4460 SCTP Errata April 2006
5829
5830
58312.52.2. Text Changes to the Document
5832
5833 ---------
5834 Old text:
5835 ---------
5836
5837 7.2.4 Fast Retransmit on Gap Reports
5838
5839 In the absence of data loss, an endpoint performs delayed
5840 acknowledgement. However, whenever an endpoint notices a hole in
5841 the arriving TSN sequence, it SHOULD start sending a SACK back
5842 every time a packet arrives carrying data until the
5843 hole is filled.
5844
5845 Whenever an endpoint receives a SACK that indicates some TSN(s)
5846 missing, it SHOULD wait for 3 further miss indications (via
5847 subsequent SACK's) on the same TSN(s) before taking action with
5848 regard to Fast Retransmit.
5849
5850
5851 ---------
5852 New text:
5853 ---------
5854
5855 7.2.4. Fast Retransmit on Gap Reports
5856
5857 In the absence of data loss, an endpoint performs delayed
5858 acknowledgement. However, whenever an endpoint notices a hole in
5859 the arriving TSN sequence, it SHOULD start sending a SACK back
5860 every time a packet arrives carrying data until the
5861 hole is filled.
5862
5863 Whenever an endpoint receives a SACK that indicates that some
5864 TSNs are missing, it SHOULD wait for 2 further miss indications
5865 (via subsequent SACKs for a total of 3 missing reports) on the
5866 same TSNs before taking action with regard to Fast Retransmit.
5867
58682.52.3. Solution Description
5869
5870 The above changes will make SCTP and TCP behave similarly in terms of
5871 how fast they engage the Fast Retransmission algorithm upon receiving
5872 missing reports.
5873
58743. Security Considerations
5875
5876 This document should add no additional security risks to SCTP and in
5877 fact SHOULD correct some original security flaws within the original
5878 document once it is incorporated into a RFC 2960 [5] BIS document.
5879
5880
5881
5882Stewart, et al. Informational [Page 105]
5883
5884RFC 4460 SCTP Errata April 2006
5885
5886
58874. Acknowledgements
5888
5889 The authors would like to thank the following people who have
5890 provided comments and input for this document:
5891
5892 Barry Zuckerman, La Monte Yarroll, Qiaobing Xie, Wang Xiaopeng,
5893 Jonathan Wood, Jeff Waskow, Mike Turner, John Townsend, Sabina
5894 Torrente, Cliff Thomas, Yuji Suzuki, Manoj Solanki, Sverre Slotte,
5895 Keyur Shah, Jan Rovins, Ben Robinson, Renee Revis, Ian Periam, RC
5896 Monee, Sanjay Rao, Sujith Radhakrishnan, Heinz Prantner, Biren Patel,
5897 Nathalie Mouellic, Mitch Miers, Bernward Meyknecht, Stan McClellan,
5898 Oliver Mayor, Tomas Orti Martin, Sandeep Mahajan, David Lehmann,
5899 Jonathan Lee, Philippe Langlois, Karl Knutson, Joe Keller, Gareth
5900 Keily, Andreas Jungmaier, Janardhan Iyengar, Mutsuya Irie, John
5901 Hebert, Kausar Hassan, Fred Hasle, Dan Harrison, Jon Grim, Laurent
5902 Glaude, Steven Furniss, Atsushi Fukumoto, Ken Fujita, Steve Dimig,
5903 Thomas Curran, Serkan Cil, Melissa Campbell, Peter Butler, Rob
5904 Brennan, Harsh Bhondwe, Brian Bidulock, Caitlin Bestler, Jon Berger,
5905 Robby Benedyk, Stephen Baucke, Sandeep Balani, and Ronnie Sellar.
5906
5907 A special thanks to Mark Allman, who should actually be a co-author
5908 for his work on the max-burst, but managed to wiggle out due to a
5909 technicality. Also, we would like to acknowledge Lyndon Ong and Phil
5910 Conrad for their valuable input and many contributions.
5911
59125. IANA Considerations
5913
5914 This document recommends changes for the RFC 2960 [5] BIS document.
5915 As such, even though it lists new error cause code, this document in
5916 itself does NOT define those new codes. Instead, the BIS document
5917 will make the needed changes to RFC 2960 [5] and thus its IANA
5918 section will require changes to be made.
5919
59206. Normative References
5921
5922 [1] Braden, R., "Requirements for Internet Hosts - Communication
5923 Layers", STD 3, RFC 1122, October 1989.
5924
5925 [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
5926 Levels", BCP 14, RFC 2119, March 1997.
5927
5928 [3] Caro, A., Shah, K., Iyengar, J., Amer, P., and R. Stewart, "SCTP
5929 and TCP Variants: Congestion Control Under Multiple Losses",
5930 Technical Report TR2003-04, Computer and Information Sciences
5931 Department, University of Delaware, February 2003,
5932 <http://www.armandocaro.net/papers>.
5933
5934
5935
5936
5937
5938Stewart, et al. Informational [Page 106]
5939
5940RFC 4460 SCTP Errata April 2006
5941
5942
5943 [4] Caro, A., Amer, P., and R. Stewart, "Retransmission Schemes for
5944 End-to-end Failover with Transport Layer Multihoming", GLOBECOM,
5945 November 2004., <http://www.armandocaro.net/papers>.
5946
5947 [5] Stewart, R., Xie, Q., Morneault, K., Sharp, C., Schwarzbauer,
5948 H., Taylor, T., Rytina, I., Kalla, M., Zhang, L., and V.
5949 Paxson, "Stream Control Transmission Protocol", RFC 2960,
5950 October 2000.
5951
5952 [6] Stone, J., Stewart, R., and D. Otis, "Stream Control
5953 Transmission Protocol (SCTP) Checksum Change", RFC 3309,
5954 September 2002.
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994Stewart, et al. Informational [Page 107]
5995
5996RFC 4460 SCTP Errata April 2006
5997
5998
5999Authors' Addresses
6000
6001 Randall R. Stewart
6002 Cisco Systems, Inc.
6003 4875 Forest Drive
6004 Suite 200
6005 Columbia, SC 29206
6006 USA
6007
6008 EMail: rrs@cisco.com
6009
6010
6011 Ivan Arias-Rodriguez
6012 Nokia Research Center
6013 PO Box 407
6014 FIN-00045 Nokia Group
6015 Finland
6016
6017 EMail: ivan.arias-rodriguez@nokia.com
6018
6019
6020 Kacheong Poon
6021 Sun Microsystems, Inc.
6022 3571 N. First St.
6023 San Jose, CA 95134
6024 USA
6025
6026 EMail: kacheong.poon@sun.com
6027
6028
6029 Armando L. Caro Jr.
6030 BBN Technologies
6031 10 Moulton St.
6032 Cambridge, MA 02138
6033
6034 EMail: acaro@bbn.com
6035 URI: http://www.armandocaro.net
6036
6037
6038 Michael Tuexen
6039 Muenster Univ. of Applied Sciences
6040 Stegerwaldstr. 39
6041 48565 Steinfurt
6042 Germany
6043
6044 EMail: tuexen@fh-muenster.de
6045
6046
6047
6048
6049
6050Stewart, et al. Informational [Page 108]
6051
6052RFC 4460 SCTP Errata April 2006
6053
6054
6055Full Copyright Statement
6056
6057 Copyright (C) The Internet Society (2006).
6058
6059 This document is subject to the rights, licenses and restrictions
6060 contained in BCP 78, and except as set forth therein, the authors
6061 retain all their rights.
6062
6063 This document and the information contained herein are provided on an
6064 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
6065 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
6066 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
6067 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
6068 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
6069 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
6070
6071Intellectual Property
6072
6073 The IETF takes no position regarding the validity or scope of any
6074 Intellectual Property Rights or other rights that might be claimed to
6075 pertain to the implementation or use of the technology described in
6076 this document or the extent to which any license under such rights
6077 might or might not be available; nor does it represent that it has
6078 made any independent effort to identify any such rights. Information
6079 on the procedures with respect to rights in RFC documents can be
6080 found in BCP 78 and BCP 79.
6081
6082 Copies of IPR disclosures made to the IETF Secretariat and any
6083 assurances of licenses to be made available, or the result of an
6084 attempt made to obtain a general license or permission for the use of
6085 such proprietary rights by implementers or users of this
6086 specification can be obtained from the IETF on-line IPR repository at
6087 http://www.ietf.org/ipr.
6088
6089 The IETF invites any interested party to bring to its attention any
6090 copyrights, patents or patent applications, or other proprietary
6091 rights that may cover technology that may be required to implement
6092 this standard. Please address the information to the IETF at
6093 ietf-ipr@ietf.org.
6094
6095Acknowledgement
6096
6097 Funding for the RFC Editor function is provided by the IETF
6098 Administrative Support Activity (IASA).
6099
6100
6101
6102
6103
6104
6105
6106Stewart, et al. Informational [Page 109]
6107