RFC 6096 PROPOSED STANDARD TRANSPORT · SCTP · IANA

Stream Control Transmission Protocol (SCTP) Chunk Flags Registration

A registry for chunk flag assignments in SCTP messages.

On rfc-editor.org ↗
PUBLISHED
January 2011
AUTHORS
M. Tuexen, R. Stewart
STREAM
IETF
BUILDS ON
RFC 4960 — SCTP
OBSOLETED BY
RFC 9260 — SCTP
FLAG VALUES
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 (one bit each)
MAXIMUM FLAGS PER CHUNK TYPE
8
CHUNK TYPES WITH EXISTING FLAGS
DATA, ABORT, SHUTDOWN COMPLETE
REGISTRATION REQUIREMENT
RFC Required action
DOI
10.17487/RFC6096

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                         M. Tuexen
Request for Comments: 6096            Muenster Univ. of Applied Sciences
Updates: 4960                                                 R. Stewart
Category: Standards Track                                         Huawei
ISSN: 2070-1721                                             January 2011


  Stream Control Transmission Protocol (SCTP) Chunk Flags Registration

Abstract

   This document defines the procedure for registering chunk flags with
   the Internet Assigned Numbers Authority (IANA) for the Stream Control
   Transmission Protocol (SCTP).  It updates RFC 4960 and also defines
   the IANA registry for contents for currently defined chunk types.  It
   does not change SCTP in any other way.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc6096.

Copyright Notice

   Copyright (c) 2011 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
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 3
   2.  Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . 3
   3.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 3
     3.1.  Updated IETF-Defined Chunk Extension  . . . . . . . . . . . 3
     3.2.  New IETF Chunk Flags Registration . . . . . . . . . . . . . 4
     3.3.  Initial Registrations . . . . . . . . . . . . . . . . . . . 4
       3.3.1.  DATA Chunk Flags  . . . . . . . . . . . . . . . . . . . 4
       3.3.2.  INIT Chunk Flags  . . . . . . . . . . . . . . . . . . . 5
       3.3.3.  INIT ACK Chunk Flags  . . . . . . . . . . . . . . . . . 5
       3.3.4.  SACK Chunk Flags  . . . . . . . . . . . . . . . . . . . 5
       3.3.5.  HEARTBEAT Chunk Flags . . . . . . . . . . . . . . . . . 5
       3.3.6.  HEARTBEAT ACK Chunk Flags . . . . . . . . . . . . . . . 5
       3.3.7.  ABORT Chunk Flags . . . . . . . . . . . . . . . . . . . 5
       3.3.8.  SHUTDOWN Chunk Flags  . . . . . . . . . . . . . . . . . 5
       3.3.9.  SHUTDOWN ACK Chunk Flags  . . . . . . . . . . . . . . . 6
       3.3.10. ERROR Chunk Flags . . . . . . . . . . . . . . . . . . . 6
       3.3.11. COOKIE ECHO Chunk Flags . . . . . . . . . . . . . . . . 6
       3.3.12. COOKIE ACK Chunk Flags  . . . . . . . . . . . . . . . . 6
       3.3.13. ECNE Chunk Flags  . . . . . . . . . . . . . . . . . . . 6
       3.3.14. CWR Chunk Flags . . . . . . . . . . . . . . . . . . . . 6
       3.3.15. SHUTDOWN COMPLETE Chunk Flags . . . . . . . . . . . . . 6
       3.3.16. AUTH Chunk Flags  . . . . . . . . . . . . . . . . . . . 7
       3.3.17. ASCONF ACK Chunk Flags  . . . . . . . . . . . . . . . . 7
       3.3.18. PAD Chunk Flags . . . . . . . . . . . . . . . . . . . . 7
       3.3.19. FORWARD TSN Chunk Flags . . . . . . . . . . . . . . . . 7
       3.3.20. ASCONF Chunk Flags  . . . . . . . . . . . . . . . . . . 7
   4.  Security Considerations . . . . . . . . . . . . . . . . . . . . 7
   5.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 7
   6.  Normative References  . . . . . . . . . . . . . . . . . . . . . 8

1.  Introduction

   [RFC4960], which currently defines the Stream Control Transmission
   Protocol (SCTP), provides a procedure to define new chunk types.
   However, several protocol extensions currently being discussed need
   to define new chunk flags for existing chunks.

   This document updates RFC 4960 to overcome this limitation.  It
   defines the procedure to register chunk flags and specifies the
   registry entries for existing chunk types.  The protocol is not
   changed in any other way.  Therefore, only Section 14.1 of [RFC4960]
   is affected.

2.  Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

3.  IANA Considerations

   Section 3.1 provides the updated procedure for SCTP Chunk Type
   registration; it replaces Section 14.1 of [RFC4960].

   Section 3.2 provides a new procedure for SCTP Chunk Flag
   registration.  A registry entry must be created for each SCTP Chunk
   Type.

   Section 3.3 provides the SCTP Chunk Flag registry values for the SCTP
   Chunk Types specified in [RFC3758], [RFC4820], [RFC4960], [RFC4895],
   and [RFC5061].

3.1.  Updated IETF-Defined Chunk Extension

   The assignment of new chunk type codes is done through an IETF Review
   action, as defined in [RFC5226].  Documentation of a new chunk MUST
   contain the following information:

   a)  A long and short name for the new chunk type;

   b)  A detailed description of the structure of the chunk, which MUST
       conform to the basic structure defined in Section 3.2 of
       [RFC4960];

   c)  A detailed definition and description of intended use of each
       field within the chunk, including the chunk flags if any.
       Defined chunk flags will be used as initial entries in the chunk
       flags table for the new chunk type;

   d)  A detailed procedural description of the use of the new chunk
       type within the operation of the protocol.

   The last chunk type (255) is reserved for future extension if
   necessary.

   For each new chunk type, IANA creates a registration table for the
   chunk flags of that type.  The procedure for registering particular
   chunk flags is described in the following Section 3.2.

3.2.  New IETF Chunk Flags Registration

   The assignment of new chunk flags is done through an RFC required
   action, as defined in [RFC5226].  Documentation of the chunk flags
   MUST contain the following information:

   a)  A name for the new chunk flag;

   b)  A detailed procedural description of the use of the new chunk
       flag within the operation of the protocol.  It MUST be considered
       that implementations not supporting the flag will send '0' on
       transmit and just ignore it on receipt.

   IANA selects a chunk flags value.  This must be one of 0x01, 0x02,
   0x04, 0x08, 0x10, 0x20, 0x40, or 0x80, which MUST be unique within
   the chunk flag values for the specific chunk type.

3.3.  Initial Registrations

   This section describes the initial values of the chunk flag tables,
   one table for each chunk.  Most tables are currently empty.  IANA
   used these values to create the new registry.

3.3.1.  DATA Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+
            | 0x01             | E bit           | [RFC4960] |
            | 0x02             | B bit           | [RFC4960] |
            | 0x04             | U bit           | [RFC4960] |
            +------------------+-----------------+-----------+

3.3.2.  INIT Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.3.  INIT ACK Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.4.  SACK Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.5.  HEARTBEAT Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.6.  HEARTBEAT ACK Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.7.  ABORT Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+
            | 0x01             | T bit           | [RFC4960] |
            +------------------+-----------------+-----------+

3.3.8.  SHUTDOWN Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.9.  SHUTDOWN ACK Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.10.  ERROR Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.11.  COOKIE ECHO Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.12.  COOKIE ACK Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.13.  ECNE Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.14.  CWR Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.15.  SHUTDOWN COMPLETE Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+
            | 0x01             | T bit           | [RFC4960] |
            +------------------+-----------------+-----------+

3.3.16.  AUTH Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.17.  ASCONF ACK Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.18.  PAD Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.19.  FORWARD TSN Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

3.3.20.  ASCONF Chunk Flags

            +------------------+-----------------+-----------+
            | Chunk Flag Value | Chunk Flag Name | Reference |
            +------------------+-----------------+-----------+

4.  Security Considerations

   This document does not add any additional security considerations in
   addition to the ones given in [RFC4960].

5.  Acknowledgments

   The authors wish to thank Anna Brunstroem, Gorry Fairhurst, Russ
   Housley, Suresh Krishnan, and Dan Romascanu for their invaluable
   comments.

6.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3758]  Stewart, R., Ramalho, M., Xie, Q., Tuexen, M., and P.
              Conrad, "Stream Control Transmission Protocol (SCTP)
              Partial Reliability Extension", RFC 3758, May 2004.

   [RFC4820]  Tuexen, M., Stewart, R., and P. Lei, "Padding Chunk and
              Parameter for the Stream Control Transmission Protocol
              (SCTP)", RFC 4820, March 2007.

   [RFC4895]  Tuexen, M., Stewart, R., Lei, P., and E. Rescorla,
              "Authenticated Chunks for the Stream Control Transmission
              Protocol (SCTP)", RFC 4895, August 2007.

   [RFC4960]  Stewart, R., "Stream Control Transmission Protocol",
              RFC 4960, September 2007.

   [RFC5061]  Stewart, R., Xie, Q., Tuexen, M., Maruyama, S., and M.
              Kozuka, "Stream Control Transmission Protocol (SCTP)
              Dynamic Address Reconfiguration", RFC 5061,
              September 2007.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

Authors' Addresses

   Michael Tuexen
   Muenster University of Applied Sciences
   Stegerwaldstr. 39
   48565 Steinfurt
   DE

   EMail: tuexen@fh-muenster.de


   Randall R. Stewart
   Huawei
   Chapin, SC  29036
   US

   EMail: randall@lakerest.net

AI ELI5

On this page
PROBLEMSCTP defines chunk types for different message kinds, and each chunk type needs a way to add flags (on-off switches) for future extensions. The original protocol lacked a formal registration procedure.
MECHANISMRFC 6096 creates an IANA registry for chunk flags, where each SCTP chunk type gets its own table of flag values (0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80). New flags require an RFC and IANA assignment.
SUPERSEDED BY RFC 9260Extensions to SCTP can define new flags without conflicts, and the registries document which flags are in use. This RFC was superseded by RFC 9260, which consolidated SCTP specifications.

§1The Problem: Extending SCTP with Flags

SCTP (Stream Control Transmission Protocol) breaks messages into smaller pieces called chunks. Each chunk type (DATA, INIT, SACK, and so on) has a fixed structure defined in RFC 4960, but the protocol needs room for extensions.

RFC 4960 allowed new chunk types to be defined, but did not provide a clear way to add flags to existing chunk types. Since new protocol extensions were being designed that needed flags (for example, to enable optional features), there was a risk that different extensions would assign conflicting meanings to the same flag values.

RFC 6096 solves this by creating a formal registration process, so that flag assignments for each chunk type are coordinated through IANA.

SCTP chunks are like envelopes, and each envelope type can have little stickers (flags) to mark special information. This RFC makes sure everyone registers their stickers so two people don't use the same sticker to mean different things.

§2Chunk Types and Flags

A chunk in SCTP is a self-describing unit with a type code, flags, length, and value. The chunk type tells the receiver what kind of data it contains: DATA chunks carry application data; INIT and INIT ACK chunks set up connections; SACK chunks acknowledge received data; HEARTBEAT and HEARTBEAT ACK chunks check link health.

Each chunk type has an 8-bit flags field. The standard allows chunk flags to be 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, or 0x80—one bit per flag, up to 8 flags per chunk type. An implementation that does not understand a flag sets it to 0 on transmission and ignores it on receipt, so flags are backward compatible.

A chunk is like a labeled box in an envelope, and the flags are eight tiny on-off switches on the label. Protocols can add new switches without breaking old systems that don't understand them.

§3Registration Procedure

This RFC updates RFC 4960 with a formal registration procedure. For each SCTP chunk type, IANA maintains a table of which flags are in use and what they mean.

To register a new chunk flag, a document (usually an RFC) MUST specify the chunk type, the flag bit value (0x01 through 0x80), a name for the flag, and a detailed description of what the flag does. The flag value MUST be unique within that chunk type.

Registrations are handled through RFC Required action: only published RFCs can register flags, not informal proposals.

When someone wants to add a new switch to a chunk type, they write an RFC saying which switch they want and what it does. An official arbiter (IANA) checks that the switch number is not already taken and adds it to the list.

§4Current Registries

RFC 6096 creates registries for chunk types defined in RFC 4960 and related standards. Most registries are initially empty, but a few chunk types already had flags defined:

  • DATA chunk has three flags: E bit (0x01), B bit (0x02), and U bit (0x04), all from RFC 4960.
  • ABORT chunk has the T bit (0x01) from RFC 4960.
  • SHUTDOWN COMPLETE chunk has the T bit (0x01) from RFC 4960.

Other chunk types (INIT, INIT ACK, SACK, HEARTBEAT, HEARTBEAT ACK, ERROR, COOKIE ECHO, COOKIE ACK, ECNE, CWR, AUTH, ASCONF ACK, PAD, FORWARD TSN, and ASCONF) start with empty flag registries, available for future extensions.

The DATA chunk already has three switches defined. Most other chunk types don't have any yet, so they have room to add switches in the future.

§5Security Impact

RFC 6096 itself does not change SCTP's security. The registry only documents which flags are allocated, and the registration procedure ensures that extensions go through public review.

The underlying SCTP specification RFC 4960 handles security and privacy. Future extensions that define new flags must provide their own security analysis in the RFC that registers them.

This RFC just keeps track of which stickers are used and makes sure new stickers are documented. The actual safety of SCTP messages is handled elsewhere.

§6References