idnits 2.17.1 draft-ietf-tsvwg-sctp-sack-immediately-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 14, 2013) is 4061 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 4960 (Obsoleted by RFC 9260) ** Obsolete normative reference: RFC 6096 (Obsoleted by RFC 9260) Summary: 2 errors (**), 0 flaws (~~), 1 warning (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Tuexen 3 Internet-Draft I. Ruengeler 4 Intended status: Standards Track Muenster Univ. of Appl. Sciences 5 Expires: September 15, 2013 R. R. Stewart 6 Adara Networks 7 March 14, 2013 9 SACK-IMMEDIATELY Extension for the Stream Control Transmission Protocol 10 draft-ietf-tsvwg-sctp-sack-immediately-01.txt 12 Abstract 14 This document defines a method for the sender of a DATA chunk to 15 indicate that the corresponding SACK chunk should be sent back 16 immediately and not be delayed. It is done by specifying a bit in 17 the DATA chunk header, called the I-bit, which can get set either by 18 the SCTP implementation or by the application using an SCTP stack. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at http://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on September 15, 2013. 37 Copyright Notice 39 Copyright (c) 2013 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 2 56 3. The I-bit in the DATA Chunk Header . . . . . . . . . . . . . 3 57 4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 4.1. Triggering at the Application Level . . . . . . . . . . . 3 59 4.2. Triggering at the SCTP Level . . . . . . . . . . . . . . 3 60 5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . 4 61 5.1. Sender Side Considerations . . . . . . . . . . . . . . . 4 62 5.2. Receiver Side Considerations . . . . . . . . . . . . . . 4 63 6. Interoperability Considerations . . . . . . . . . . . . . . . 5 64 7. Socket API Considerations . . . . . . . . . . . . . . . . . . 5 65 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 66 9. Security Considerations . . . . . . . . . . . . . . . . . . . 5 67 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 6 68 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 69 11.1. Normative References . . . . . . . . . . . . . . . . . . 6 70 11.2. Informative References . . . . . . . . . . . . . . . . . 6 71 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 6 73 1. Introduction 75 According to [RFC4960] the receiver of a DATA chunk should use 76 delayed SACKs. This delaying is completely controlled by the 77 receiver of the DATA chunk and remains the to be the default 78 behavior. 80 In specific situations the delaying of SACKs results in reduced 81 performance of the protocol. If such a situation can be detected by 82 the receiver, the corresponding SACK can be sent immediately. For 83 example, [RFC4960] recommends the immediate sending if the receiver 84 has detected message loss or message duplication. However, if the 85 situation can only be detected by the sender of the DATA chunk, 86 [RFC4960] provides no method of avoiding the delaying of the SACK. 87 Thus the protocol performance might be reduced. 89 This document overcomes this limitation and describes a simple 90 extension of the SCTP DATA chunk by defining a new flag, the I-bit. 91 The sender of a DATA chunk indicates by setting this bit that the 92 corresponding SACK chunk should not be delayed. Use-cases are 93 described in Section 4. 95 2. Conventions 96 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 97 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 98 document are to be interpreted as described in [RFC2119]. 100 3. The I-bit in the DATA Chunk Header 102 The following Figure 1 shows the extended DATA chunk. 104 0 1 2 3 105 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 106 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 107 | Type = 0 | Res |I|U|B|E| Length | 108 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 109 | TSN | 110 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 111 | Stream Identifier | Stream Sequence Number | 112 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 113 | Payload Protocol Identifier | 114 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 115 \ \ 116 / User Data / 117 \ \ 118 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 120 Figure 1: Extended DATA chunk format 122 The only difference between the DATA chunk in Figure 1 and the DATA 123 chunk defined in [RFC4960] is the addition of the I-bit in the flags 124 field of the DATA chunk header. 126 4. Use Cases 128 The setting of the I-bit can either be triggered by the application 129 using SCTP or by the SCTP stack itself. 131 4.1. Triggering at the Application Level 133 Upper layers of SCTP using the socket API as defined in [RFC6458] may 134 subscribe to the SCTP_SENDER_DRY_EVENT for getting a notification as 135 soon as no user data is outstanding anymore. To avoid an unnecessary 136 delay while waiting for such an event, the application might set the 137 I-Bit on the last DATA chunk sent before waiting for the event. This 138 enabling is possible using the extension of the socket API described 139 in Section 7. 141 4.2. Triggering at the SCTP Level 142 There are also situations in which the SCTP implementation can set 143 the I-bit without interacting with the upper layer. 145 If the association is in the SHUTDOWN-PENDING state, the I-bit should 146 be set. This reduces the number of simultaneous associations in case 147 of a busy server handling short living associations. 149 Another case is where the sending of a DATA chunk fills the 150 congestion or receiver window. Setting the I-bit in these cases 151 improves the throughput of the transfer. 153 If an SCTP association supports the SCTP Stream Reconfiguration 154 extension defined in [RFC6525], the performance can be improved by 155 setting the I-bit when there are pending reconfiguration requests 156 requiring no outstanding DATA chunks. 158 5. Procedures 160 5.1. Sender Side Considerations 162 Whenever the sender of a DATA chunk can benefit from the 163 corresponding SACK chunk being sent back without delay, the sender 164 MAY set the I-bit in the DATA chunk header. Please note that it is 165 irrelevant to the receiver why the sender has set the I-bit. 167 Reasons for setting the I-bit include, but are not limited to, the 168 following (see Section 4 for the benefits): 170 o The application requests to set the I-bit of the last DATA chunk 171 of a user message when providing the user message to the SCTP 172 implementation (see Section 7). 174 o The sender is in the SHUTDOWN-PENDING state. 176 o The sending of a DATA chunk fills the congestion or receiver 177 window. 179 o The sending of an Outgoing SSN Reset Request Parameter or an SSN/ 180 TSN Reset Request Parameter is pending, if the association 181 supports the Stream Reconfiguration extension defined in 182 [RFC6525]. 184 5.2. Receiver Side Considerations 186 On reception of an SCTP packet containing a DATA chunk with the I-bit 187 set, the receiver SHOULD NOT delay the sending of the corresponding 188 SACK chunk and send it back immediately. 190 6. Interoperability Considerations 192 According to [RFC4960] the receiver of a DATA chunk with the I-bit 193 set should ignore this bit when it does not support the extension 194 described in this document. Since the sender of the DATA chunk is 195 able to handle this case, there is no requirement for negotiating the 196 support of the feature described in this document. 198 7. Socket API Considerations 200 This section describes how the socket API defined in [RFC6458] is 201 extended to provide a way for the application to set the I-bit. 203 Please note that this section is informational only. 205 A socket API implementation based on [RFC6458] is extended to allow 206 the application to set the I-bit of the last DATA chunk for each 207 provided user message. 209 This can be done by setting a flag called SCTP_SACK_IMMEDIATELY in 210 the snd_flags field of the struct sctp_sndinfo structure when using 211 sctp_sendv() or sendmsg(). If the deprecated struct sctp_sndrcvinfo 212 structure is used instead when calling sctp_send(), sctp_sendx(), or 213 sendmsg(), the SCTP_SACK_IMMEDIATELY flags can be set in the 214 sinfo_flags field. When using the deprecated function sctp_sendmsg() 215 the SCTP_SACK_IMMEDIATELY flag can be in the flags parameter. 217 8. IANA Considerations 219 [NOTE to RFC-Editor: 221 "RFCXXXX" is to be replaced by the RFC number you assign this 222 document. 224 ] 226 Following the chunk flag registration procedure defined in [RFC6096] 227 IANA should register a new bit, the I-bit, for the DATA chunk. The 228 suggested value is 0x08. The reference for the new chunk flag in the 229 chunk flags table for the DATA chunk should be RFCXXXX. 231 9. Security Considerations 233 This document does not add any additional security considerations in 234 addition to the ones given in [RFC4960] and [RFC6458]. It should be 235 noted that an malicious sender can force its peer to send packets 236 containing SACK chunks for each received packet containing DATA 237 chunks instead of every other. However, every receiver has to be 238 able to do this anyway. It might be configured to do so or has to do 239 this because of packet loss or reordering in the network. 241 10. Acknowledgments 243 The authors wish to thank Mark Allmann, Brian Bidulock, Gorry 244 Fairhurst, Janardhan Iyengar, and Kacheong Poon for their invaluable 245 comments. 247 11. References 249 11.1. Normative References 251 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 252 Requirement Levels", BCP 14, RFC 2119, March 1997. 254 [RFC4960] Stewart, R., "Stream Control Transmission Protocol", RFC 255 4960, September 2007. 257 [RFC6096] Tuexen, M. and R. Stewart, "Stream Control Transmission 258 Protocol (SCTP) Chunk Flags Registration", RFC 6096, 259 January 2011. 261 11.2. Informative References 263 [RFC6458] Stewart, R., Tuexen, M., Poon, K., Lei, P., and V. 264 Yasevich, "Sockets API Extensions for the Stream Control 265 Transmission Protocol (SCTP)", RFC 6458, December 2011. 267 [RFC6525] Stewart, R., Tuexen, M., and P. Lei, "Stream Control 268 Transmission Protocol (SCTP) Stream Reconfiguration", RFC 269 6525, February 2012. 271 Authors' Addresses 273 Michael Tuexen 274 Muenster University of Applied Sciences 275 Stegerwaldstr. 39 276 48565 Steinfurt 277 DE 279 Email: tuexen@fh-muenster.de 280 Irene Ruengeler 281 Muenster University of Applied Sciences 282 Stegerwaldstr. 39 283 48565 Steinfurt 284 DE 286 Email: i.ruengeler@fh-muenster.de 288 Randall R. Stewart 289 Adara Networks 290 Chapin, SC 29036 291 US 293 Email: randall@lakerest.net