idnits 2.17.1 draft-tuexen-tsvwg-sctp-scheduling-00.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 (November 19, 2012) is 4170 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 4960 (Obsoleted by RFC 9260) Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group R. Seggelmann 3 Internet-Draft T-Systems International GmbH 4 Intended status: Informational R. Stewart 5 Expires: May 23, 2013 Adara Networks 6 M. Tuexen 7 Muenster Univ. of Appl. Sciences 8 November 19, 2012 10 Pluggable Stream Scheduling for the Stream Control Transmission Protocol 11 draft-tuexen-tsvwg-sctp-scheduling-00.txt 13 Abstract 15 This document describes pluggable stream scheduling to change the 16 scheduling behavior of the Stream Control Transmission Protocol 17 (SCTP). 19 Pluggable stream scheduling allows to use different scheduling 20 algorithms to optimize SCTP's behavior in different scenarios. 22 Status of this Memo 24 This Internet-Draft is submitted in full conformance with the 25 provisions of BCP 78 and BCP 79. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF). Note that other groups may also distribute 29 working documents as Internet-Drafts. The list of current Internet- 30 Drafts is at http://datatracker.ietf.org/drafts/current/. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 This Internet-Draft will expire on May 23, 2013. 39 Copyright Notice 41 Copyright (c) 2012 IETF Trust and the persons identified as the 42 document authors. All rights reserved. 44 This document is subject to BCP 78 and the IETF Trust's Legal 45 Provisions Relating to IETF Documents 46 (http://trustee.ietf.org/license-info) in effect on the date of 47 publication of this document. Please review these documents 48 carefully, as they describe your rights and restrictions with respect 49 to this document. Code Components extracted from this document must 50 include Simplified BSD License text as described in Section 4.e of 51 the Trust Legal Provisions and are provided without warranty as 52 described in the Simplified BSD License. 54 Table of Contents 56 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 2. SCTP Scheduling API . . . . . . . . . . . . . . . . . . . . . . 3 58 3. Default scheduling . . . . . . . . . . . . . . . . . . . . . . 4 59 4. Round-Robin scheduling (SCTP_SS_RR) . . . . . . . . . . . . . . 4 60 5. Round-Robin per Packet scheduling (SCTP_SS_RR_PACKET) . . . . . 5 61 6. Priority scheduling (SCTP_SS_PRIORITY) . . . . . . . . . . . . 5 62 7. Fair Bandwidth scheduling (SCTP_SS_FAIR_BANDWITH) . . . . . . . 5 63 8. First-Come, First-Serve scheduling (SCTP_SS_FCFS) . . . . . . . 5 64 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 65 10. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 66 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 6 67 11.1. Normative References . . . . . . . . . . . . . . . . . . . 6 68 11.2. Informative References . . . . . . . . . . . . . . . . . . 6 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 6 71 1. Introduction 73 1.1. Overview 75 This document describes pluggable stream scheduling for the Stream 76 Control Transmission Protocol (SCTP). It allows the user to choose 77 between multiple scheduling algorithms to optimize the sending 78 behavior of SCTP in scenarios with different requirements. 80 1.2. Data Types 82 This documents uses data types from Draft 6.6 (March 1997) of POSIX 83 1003.1g: uintN_t means an unsigned integer of exactly N bits (e.g. 84 uint16_t). This is the same as in [RFC6458] 86 2. SCTP Scheduling API 88 This API extends the one described in [RFC6458] by defining two new 89 socket options. They both use IPPROTO_SCTP at their level. 91 +-------------------+--------------------------+-----+-----+ 92 | option name | data type | get | set | 93 +-------------------+--------------------------+-----+-----+ 94 | SCTP_PLUGGABLE_SS | struct sctp_assoc_value | X | X | 95 | SCTP_SS_VALUE | struct sctp_stream_value | X | X | 96 +-------------------+--------------------------+-----+-----+ 98 Table 1 100 A stream scheduler can be selected with the SCTP_PLUGGABLE_SS option 101 for setsockopt(). The struct sctp_assoc_value is used to specify the 102 association for which the scheduler should be changed and the value 103 of the desired algorithm. 105 The definition of struct sctp_assoc_value is the same as in 106 [RFC6458]: 108 struct sctp_assoc_value { 109 sctp_assoc_t assoc_id; 110 uint32_t assoc_value; 111 }; 113 assoc_id: Holds the identifier for the association of which the 114 scheduler should be changed. The special SCTP_{FUTURE|CURRENT| 115 ALL}_ASSOC can also be used. This parameter is ignored for one- 116 to-one style sockets. 118 assoc_value: This specifies which scheduler is used. The values 119 defined in this document are given in Table 2. 121 +-----------------------+-----------------+ 122 | name | per stream info | 123 +-----------------------+-----------------+ 124 | SCTP_SS_RR | no | 125 | SCTP_SS_RR_PACKET | no | 126 | SCTP_SS_PRIORITY | yes | 127 | SCTP_SS_FAIR_BANDWITH | no | 128 | SCTP_SS_FCFS | no | 129 +-----------------------+-----------------+ 131 Table 2 133 Some schedulers require additional information to be set for single 134 streams. This is achieved with the SCTP_SS_VALUE option and the 135 corresponding struct sctp_stream_value. 137 The definition of struct sctp_stream_value is as follows: 139 struct sctp_stream_value { 140 uint16_t stream_id; 141 uint16_t stream_value; 142 }; 144 stream_id: Holds the stream id for the stream for which additional 145 information has to be provided. 147 stream_value: The meaning of this field depends on the scheduler 148 specified. It is ignored when the scheduler does not need 149 additional information. 151 3. Default scheduling 153 By default the standard algorithm of the SCTP implementation will be 154 used. This is usually either round-robin or first-come, first-serve. 156 4. Round-Robin scheduling (SCTP_SS_RR) 158 This scheduler can be used with SCTP_SS_RR for fair scheduling based 159 on the number of packets per stream. The scheduler cycles trough all 160 available streams and always selects the first message in the queue 161 of each stream. 163 5. Round-Robin per Packet scheduling (SCTP_SS_RR_PACKET) 165 This variant of the round-robin scheduler can be activated with the 166 option SCTP_SS_RR_PACKET. It is a round-robin scheduler but only 167 bundles user messages of the same stream in one packet. This 168 minimizes head-of-line blocking when a packet is lost because only a 169 single stream is affected. 171 6. Priority scheduling (SCTP_SS_PRIORITY) 173 Scheduling with different priorities can be used with the option 174 SCTP_SS_PRIORITY. Streams having a higher priority will be scheduled 175 first and when multiple streams have the same priority, a round robin 176 scheduling should be used for them. The priority can be assigned 177 with the sctp_stream_value struct. The higher the assigned value, 178 the lower the priority, that is the default value 0 is the highest 179 priority and therefore the round robin scheduling will be used if no 180 priorities have been assigned. 182 7. Fair Bandwidth scheduling (SCTP_SS_FAIR_BANDWITH) 184 A fair bandwidth distribution between the streams can be activated 185 with the SCTP_SS_FAIR_BANDWITH option. This scheduler considers the 186 lengths of the messages of each stream and schedules them in a 187 certain way to maintain an equal bandwidth for all streams. 189 8. First-Come, First-Serve scheduling (SCTP_SS_FCFS) 191 The simple first-come, first-serve algorithm can be selected with the 192 option SCTP_SS_FCFS. It just passes through the messages in the 193 order in which they have been delivered by the application. No 194 modification of the order is done at all. 196 9. IANA Considerations 198 This document requires no actions from IANA. 200 10. Security Considerations 202 This document does not add any additional security considerations in 203 addition to the ones given in [RFC4960] and [RFC6458]. 205 11. References 207 11.1. Normative References 209 [RFC4960] Stewart, R., "Stream Control Transmission Protocol", 210 RFC 4960, September 2007. 212 11.2. Informative References 214 [RFC6458] Stewart, R., Tuexen, M., Poon, K., Lei, P., and V. 215 Yasevich, "Sockets API Extensions for the Stream Control 216 Transmission Protocol (SCTP)", RFC 6458, December 2011. 218 Authors' Addresses 220 Robin Seggelmann 221 T-Systems International GmbH 222 Fasanenweg 5 223 70771 Leinfelden-Echterdingen 224 DE 226 Email: robin.seggelmann@t-systems.com 228 Randall R. Stewart 229 Adara Networks 230 Chapin, SC 29036 231 US 233 Email: randall@lakerest.net 235 Michael Tuexen 236 Muenster University of Applied Sciences 237 Stegerwaldstrasse 39 238 48565 Steinfurt 239 DE 241 Email: tuexen@fh-muenster.de