Network Working Group R. Seggelmann Internet-Draft T-Systems International GmbH Intended status: Informational R. Stewart Expires: May 23, 2013 Adara Networks M. Tuexen Muenster Univ. of Appl. Sciences November 19, 2012 Pluggable Stream Scheduling for the Stream Control Transmission Protocol draft-tuexen-tsvwg-sctp-scheduling-00.txt Abstract This document describes pluggable stream scheduling to change the scheduling behavior of the Stream Control Transmission Protocol (SCTP). Pluggable stream scheduling allows to use different scheduling algorithms to optimize SCTP's behavior in different scenarios. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on May 23, 2013. Copyright Notice Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect Seggelmann, et al. Expires May 23, 2013 [Page 1] Internet-Draft SCTP Stream Scheduling November 2012 to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. SCTP Scheduling API . . . . . . . . . . . . . . . . . . . . . . 3 3. Default scheduling . . . . . . . . . . . . . . . . . . . . . . 4 4. Round-Robin scheduling (SCTP_SS_RR) . . . . . . . . . . . . . . 4 5. Round-Robin per Packet scheduling (SCTP_SS_RR_PACKET) . . . . . 5 6. Priority scheduling (SCTP_SS_PRIORITY) . . . . . . . . . . . . 5 7. Fair Bandwidth scheduling (SCTP_SS_FAIR_BANDWITH) . . . . . . . 5 8. First-Come, First-Serve scheduling (SCTP_SS_FCFS) . . . . . . . 5 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 10. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 6 11.1. Normative References . . . . . . . . . . . . . . . . . . . 6 11.2. Informative References . . . . . . . . . . . . . . . . . . 6 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 6 Seggelmann, et al. Expires May 23, 2013 [Page 2] Internet-Draft SCTP Stream Scheduling November 2012 1. Introduction 1.1. Overview This document describes pluggable stream scheduling for the Stream Control Transmission Protocol (SCTP). It allows the user to choose between multiple scheduling algorithms to optimize the sending behavior of SCTP in scenarios with different requirements. 1.2. Data Types This documents uses data types from Draft 6.6 (March 1997) of POSIX 1003.1g: uintN_t means an unsigned integer of exactly N bits (e.g. uint16_t). This is the same as in [RFC6458] 2. SCTP Scheduling API This API extends the one described in [RFC6458] by defining two new socket options. They both use IPPROTO_SCTP at their level. +-------------------+--------------------------+-----+-----+ | option name | data type | get | set | +-------------------+--------------------------+-----+-----+ | SCTP_PLUGGABLE_SS | struct sctp_assoc_value | X | X | | SCTP_SS_VALUE | struct sctp_stream_value | X | X | +-------------------+--------------------------+-----+-----+ Table 1 A stream scheduler can be selected with the SCTP_PLUGGABLE_SS option for setsockopt(). The struct sctp_assoc_value is used to specify the association for which the scheduler should be changed and the value of the desired algorithm. The definition of struct sctp_assoc_value is the same as in [RFC6458]: struct sctp_assoc_value { sctp_assoc_t assoc_id; uint32_t assoc_value; }; assoc_id: Holds the identifier for the association of which the scheduler should be changed. The special SCTP_{FUTURE|CURRENT| ALL}_ASSOC can also be used. This parameter is ignored for one- to-one style sockets. Seggelmann, et al. Expires May 23, 2013 [Page 3] Internet-Draft SCTP Stream Scheduling November 2012 assoc_value: This specifies which scheduler is used. The values defined in this document are given in Table 2. +-----------------------+-----------------+ | name | per stream info | +-----------------------+-----------------+ | SCTP_SS_RR | no | | SCTP_SS_RR_PACKET | no | | SCTP_SS_PRIORITY | yes | | SCTP_SS_FAIR_BANDWITH | no | | SCTP_SS_FCFS | no | +-----------------------+-----------------+ Table 2 Some schedulers require additional information to be set for single streams. This is achieved with the SCTP_SS_VALUE option and the corresponding struct sctp_stream_value. The definition of struct sctp_stream_value is as follows: struct sctp_stream_value { uint16_t stream_id; uint16_t stream_value; }; stream_id: Holds the stream id for the stream for which additional information has to be provided. stream_value: The meaning of this field depends on the scheduler specified. It is ignored when the scheduler does not need additional information. 3. Default scheduling By default the standard algorithm of the SCTP implementation will be used. This is usually either round-robin or first-come, first-serve. 4. Round-Robin scheduling (SCTP_SS_RR) This scheduler can be used with SCTP_SS_RR for fair scheduling based on the number of packets per stream. The scheduler cycles trough all available streams and always selects the first message in the queue of each stream. Seggelmann, et al. Expires May 23, 2013 [Page 4] Internet-Draft SCTP Stream Scheduling November 2012 5. Round-Robin per Packet scheduling (SCTP_SS_RR_PACKET) This variant of the round-robin scheduler can be activated with the option SCTP_SS_RR_PACKET. It is a round-robin scheduler but only bundles user messages of the same stream in one packet. This minimizes head-of-line blocking when a packet is lost because only a single stream is affected. 6. Priority scheduling (SCTP_SS_PRIORITY) Scheduling with different priorities can be used with the option SCTP_SS_PRIORITY. Streams having a higher priority will be scheduled first and when multiple streams have the same priority, a round robin scheduling should be used for them. The priority can be assigned with the sctp_stream_value struct. The higher the assigned value, the lower the priority, that is the default value 0 is the highest priority and therefore the round robin scheduling will be used if no priorities have been assigned. 7. Fair Bandwidth scheduling (SCTP_SS_FAIR_BANDWITH) A fair bandwidth distribution between the streams can be activated with the SCTP_SS_FAIR_BANDWITH option. This scheduler considers the lengths of the messages of each stream and schedules them in a certain way to maintain an equal bandwidth for all streams. 8. First-Come, First-Serve scheduling (SCTP_SS_FCFS) The simple first-come, first-serve algorithm can be selected with the option SCTP_SS_FCFS. It just passes through the messages in the order in which they have been delivered by the application. No modification of the order is done at all. 9. IANA Considerations This document requires no actions from IANA. 10. Security Considerations This document does not add any additional security considerations in addition to the ones given in [RFC4960] and [RFC6458]. Seggelmann, et al. Expires May 23, 2013 [Page 5] Internet-Draft SCTP Stream Scheduling November 2012 11. References 11.1. Normative References [RFC4960] Stewart, R., "Stream Control Transmission Protocol", RFC 4960, September 2007. 11.2. Informative References [RFC6458] Stewart, R., Tuexen, M., Poon, K., Lei, P., and V. Yasevich, "Sockets API Extensions for the Stream Control Transmission Protocol (SCTP)", RFC 6458, December 2011. Authors' Addresses Robin Seggelmann T-Systems International GmbH Fasanenweg 5 70771 Leinfelden-Echterdingen DE Email: robin.seggelmann@t-systems.com Randall R. Stewart Adara Networks Chapin, SC 29036 US Email: randall@lakerest.net Michael Tuexen Muenster University of Applied Sciences Stegerwaldstrasse 39 48565 Steinfurt DE Email: tuexen@fh-muenster.de Seggelmann, et al. Expires May 23, 2013 [Page 6]