Skip to main content

CSS Requirements for RFCs
draft-iab-rfc-css-00

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft that was ultimately published as RFC 7993.
Author Heather Flanagan
Last updated 2016-02-11 (Latest revision 2016-01-05)
Replaces draft-flanagan-rfc-css
RFC stream Internet Architecture Board (IAB)
Formats
Additional resources
Stream IAB state Community Review
Consensus boilerplate Unknown
IAB shepherd (None)
draft-iab-rfc-css-00
Network Working Group                                    S. Previdi, Ed.
Internet-Draft                                                Individual
Intended status: Standards Track                             C. Filsfils
Expires: July 24, 2018                                           K. Raza
                                                                D. Dukes
                                                     Cisco Systems, Inc.
                                                                J. Leddy
                                                                B. Field
                                                                 Comcast
                                                                D. Voyer
                                                              D. Bernier
                                                             Bell Canada
                                                           S. Matsushima
                                                                Softbank
                                                                I. Leung
                                                   Rogers Communications
                                                              J. Linkova
                                                                  Google
                                                                E. Aries
                                                                Facebook
                                                               T. Kosugi
                                                                     NTT
                                                               E. Vyncke
                                                     Cisco Systems, Inc.
                                                               D. Lebrun
                                        Universite Catholique de Louvain
                                                            D. Steinberg
                                                    Steinberg Consulting
                                                               R. Raszuk
                                                               Bloomberg
                                                        January 20, 2018

                   IPv6 Segment Routing Header (SRH)
               draft-ietf-6man-segment-routing-header-08

Abstract

   Segment Routing (SR) allows a node to steer a packet through a
   controlled set of instructions, called segments, by prepending an SR
   header to the packet.  A segment can represent any instruction,
   topological or service-based.  SR allows to enforce a flow through
   any path (topological, or application/service based) while
   maintaining per-flow state only at the ingress node to the SR domain.

   Segment Routing can be applied to the IPv6 data plane with the
   addition of a new type of Routing Extension Header.  This draft

Previdi, et al.           Expires July 24, 2018                 [Page 1]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

   describes the Segment Routing Extension Header Type and how it is
   used by SR capable nodes.

Requirements Language

   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 RFC 2119 [RFC2119].

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 https://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 July 24, 2018.

Copyright Notice

   Copyright (c) 2018 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
   (https://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.

Previdi, et al.           Expires July 24, 2018                 [Page 2]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

Table of Contents

   1.  Segment Routing Documents . . . . . . . . . . . . . . . . . .   4
   2.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   4
     2.1.  Data Planes supporting Segment Routing  . . . . . . . . .   4
     2.2.  SRv6 Segment  . . . . . . . . . . . . . . . . . . . . . .   5
     2.3.  Segment Routing (SR) Domain . . . . . . . . . . . . . . .   5
       2.3.1.  SR Domain in a Service Provider Network . . . . . . .   6
       2.3.2.  SR Domain in a Overlay Network  . . . . . . . . . . .   7
   3.  Segment Routing Extension Header (SRH)  . . . . . . . . . . .   9
     3.1.  SRH TLVs  . . . . . . . . . . . . . . . . . . . . . . . .  11
       3.1.1.  Ingress Node TLV  . . . . . . . . . . . . . . . . . .  11
       3.1.2.  Egress Node TLV . . . . . . . . . . . . . . . . . . .  12
       3.1.3.  Opaque Container TLV  . . . . . . . . . . . . . . . .  13
       3.1.4.  Padding TLV . . . . . . . . . . . . . . . . . . . . .  14
       3.1.5.  HMAC TLV  . . . . . . . . . . . . . . . . . . . . . .  14
       3.1.6.  NSH Carrier TLV . . . . . . . . . . . . . . . . . . .  15
     3.2.  SRH and RFC2460 behavior  . . . . . . . . . . . . . . . .  16
   4.  SRH Functions . . . . . . . . . . . . . . . . . . . . . . . .  16
     4.1.  Endpoint Function (End) . . . . . . . . . . . . . . . . .  17
     4.2.  End.X: Endpoint with Layer-3 cross-connect  . . . . . . .  18
   5.  SR Nodes  . . . . . . . . . . . . . . . . . . . . . . . . . .  19
     5.1.  Source SR Node  . . . . . . . . . . . . . . . . . . . . .  19
     5.2.  Transit Node  . . . . . . . . . . . . . . . . . . . . . .  20
     5.3.  SR Segment Endpoint Node  . . . . . . . . . . . . . . . .  20
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  20
     6.1.  Threat model  . . . . . . . . . . . . . . . . . . . . . .  21
       6.1.1.  Source routing threats  . . . . . . . . . . . . . . .  21
       6.1.2.  Applicability of RFC 5095 to SRH  . . . . . . . . . .  21
       6.1.3.  Service stealing threat . . . . . . . . . . . . . . .  22
       6.1.4.  Topology disclosure . . . . . . . . . . . . . . . . .  22
       6.1.5.  ICMP Generation . . . . . . . . . . . . . . . . . . .  23
     6.2.  Security fields in SRH  . . . . . . . . . . . . . . . . .  23
       6.2.1.  Selecting a hash algorithm  . . . . . . . . . . . . .  24
       6.2.2.  Performance impact of HMAC  . . . . . . . . . . . . .  25
       6.2.3.  Pre-shared key management . . . . . . . . . . . . . .  25
     6.3.  Deployment Models . . . . . . . . . . . . . . . . . . . .  26
       6.3.1.  Nodes within the SR domain  . . . . . . . . . . . . .  26
       6.3.2.  Nodes outside of the SR domain  . . . . . . . . . . .  26
       6.3.3.  SR path exposure  . . . . . . . . . . . . . . . . . .  27
       6.3.4.  Impact of BCP-38  . . . . . . . . . . . . . . . . . .  27
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28
     7.1.  Segment Routing Header TLVs Register  . . . . . . . . . .  28
   8.  Manageability Considerations  . . . . . . . . . . . . . . . .  29
   9.  Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  29
   10. Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  29
   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  29
     11.1.  Normative References . . . . . . . . . . . . . . . . . .  29

Previdi, et al.           Expires July 24, 2018                 [Page 3]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

     11.2.  Informative References . . . . . . . . . . . . . . . . .  30
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  32

1.  Segment Routing Documents

   Segment Routing terminology is defined in
   [I-D.ietf-spring-segment-routing].

   The network programming paradigm
   [I-D.filsfils-spring-srv6-network-programming] defines the basic
   functions associated to an SRv6 SID.

   Segment Routing use cases are described in [RFC7855] and
   [I-D.ietf-spring-ipv6-use-cases].

   Segment Routing protocol extensions are defined in
   [I-D.ietf-isis-segment-routing-extensions], and
   [I-D.ietf-ospf-ospfv3-segment-routing-extensions].

2.  Introduction

   Segment Routing (SR), defined in [I-D.ietf-spring-segment-routing],
   allows a node to steer a packet through a controlled set of
   instructions, called segments, by prepending an SR header to the
   packet.  A segment can represent any instruction, topological or
   service-based.  SR allows to enforce a flow through any path
   (topological or service/application based) while maintaining per-flow
   state only at the ingress node to the SR domain.  Segments can be
   derived from different components: IGP, BGP, Services, Contexts,
   Locators, etc.  The list of segment forming the path is called the
   Segment List and is encoded in the packet header.

   SR allows the use of strict and loose source based routing paradigms
   without requiring any additional signaling protocols in the
   infrastructure hence delivering an excellent scalability property.

   The source based routing model described in
   [I-D.ietf-spring-segment-routing] is inherited from the ones proposed
   by [RFC1940] and [RFC2460].  The source based routing model offers
   the support for explicit routing capability.

2.1.  Data Planes supporting Segment Routing

   Segment Routing (SR), can be instantiated over MPLS
   ([I-D.ietf-spring-segment-routing-mpls]) and IPv6.  This document
   defines its instantiation over the IPv6 data-plane based on the use-
   cases defined in [I-D.ietf-spring-ipv6-use-cases].

Previdi, et al.           Expires July 24, 2018                 [Page 4]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

   This document defines a new type of Routing Header (originally
   defined in [RFC2460]) called the Segment Routing Header (SRH) in
   order to convey the Segment List in the packet header as defined in
   [I-D.ietf-spring-segment-routing].  Mechanisms through which segment
   are known and advertised are outside the scope of this document.

2.2.  SRv6 Segment

   An SRv6 Segment is a 128-bit value.  "SRv6 SID" or simply "SID" are
   often used as a shorter reference for "SRv6 Segment".

   An SRv6-capable node N maintains a "My Local SID Table".  This table
   contains all the local SRv6 segments explicitly instantiated at node
   N.  N is the parent node for these SID's.

   A local SID of N could be an IPv6 address of a local interface of N
   but it does not have to.  Most often, a local SID is not an address
   of a local interface of N.  The My Local SID Table is thus not
   populated by default with all the addresses of a node.

   An illustration is provided in
   [I-D.filsfils-spring-srv6-network-programming].

   Every SRv6 local SID instantiated has a specific instruction bounded
   to it.

   This information is stored in the "My Local SID Table".  The "My
   Local SID Table" has three main purposes:

   o  Define which local SID's are explicitly instantiated.

   o  Specify which instruction is bound to each of the instantiated
      SID's.

   o  Store the parameters associated to such instruction (i.e.  OIF,
      NextHop,...).

   A node may receive a packet with an SRv6 SID in the DA without an
   SRH.  In such case the packet should still be processed by the
   Segment Routing engine.

2.3.  Segment Routing (SR) Domain

   We define the concept of the Segment Routing Domain (SR Domain) as
   the set of nodes participating into the source based routing model.
   These nodes may be connected to the same physical infrastructure
   (e.g.: a Service Provider's network) as well as nodes remotely
   connected to each other (e.g.: an enterprise VPN or an overlay).

Previdi, et al.           Expires July 24, 2018                 [Page 5]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

   A non-exhaustive list of examples of SR Domains is:

   o  The network of an operator, service provider, content provider,
      enterprise including nodes, links and Autonomous Systems.

   o  A set of nodes connected as an overlay over one or more transit
      providers.  The overlay nodes exchange SR-enabled traffic with
      segments belonging solely to the overlay routers (the SR domain).
      None of the segments in the SR-enabled packets exchanged by the
      overlay belong to the transit networks

   The source based routing model through its instantiation of the
   Segment Routing Header (SRH) defined in this document equally applies
   to all the above examples.

   It is assumed in this document that the SRH is added to the packet by
   its source, consistently with the source routing model defined in
   [RFC2460].  For example:

   o  At the node originating the packet (host, server).

   o  At the ingress node of an SR domain where the ingress node
      receives an IPv6 packet and encapsulates it into an outer IPv6
      header followed by a Segment Routing header.

2.3.1.  SR Domain in a Service Provider Network

   The following figure illustrates an SR domain consisting of an
   operator's network infrastructure.

     (-------------------------- Operator 1 -----------------------)
     (                                                             )
     (  (-----AS 1-----)  (-------AS 2-------)  (----AS 3-------)  )
     (  (              )  (                  )  (               )  )
 A1--(--(--11---13--14-)--(-21---22---23--24-)--(-31---32---34--)--)--Z1
     (  ( /|\  /|\  /| )  ( |\  /|\  /|\  /| )  ( |\  /|\  /| \ )  )
 A2--(--(/ | \/ | \/ | )  ( | \/ | \/ | \/ | )  ( | \/ | \/ |  \)--)--Z2
     (  (  | /\ | /\ | )  ( | /\ | /\ | /\ | )  ( | /\ | /\ |   )  )
     (  (  |/  \|/  \| )  ( |/  \|/  \|/  \| )  ( |/  \|/  \|   )  )
 A3--(--(--15---17--18-)--(-25---26---27--28-)--(-35---36---38--)--)--Z3
     (  (              )  (                  )  (               )  )
     (  (--------------)  (------------------)  (---------------)  )
     (                                                             )
     (-------------------------------------------------------------)

                   Figure 1: Service Provider SR Domain

Previdi, et al.           Expires July 24, 2018                 [Page 6]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

   Figure 1 describes an operator network including several ASes and
   delivering connectivity between endpoints.  In this scenario, Segment
   Routing is used within the operator networks and across the ASes
   boundaries (all being under the control of the same operator).  In
   this case segment routing can be used in order to address use cases
   such as end-to-end traffic engineering, fast re-route, egress peer
   engineering, data-center traffic engineering as described in
   [RFC7855], [I-D.ietf-spring-ipv6-use-cases] and
   [I-D.ietf-spring-resiliency-use-cases].

   Typically, an IPv6 packet received at ingress (i.e.: from outside the
   SR domain), is classified according to network operator policies and
   such classification results into an outer header with an SRH applied
   to the incoming packet.  The SRH contains the list of segment
   representing the path the packet must take inside the SR domain.
   Thus, the SA of the packet is the ingress node, the DA (due to SRH
   procedures described in Section 5) is set as the first segment of the
   path and the last segment of the path is the egress node of the SR
   domain.

   The path may include intra-AS as well as inter-AS segments.  It has
   to be noted that all nodes within the SR domain are under control of
   the same administration.  When the packet reaches the egress point of
   the SR domain, the outer header and its SRH are removed so that the
   destination of the packet is unaware of the SR domain the packet has
   traversed.

   The outer header with the SRH is no different from any other
   tunneling encapsulation mechanism and allows a network operator to
   implement traffic engineering mechanisms so to efficiently steer
   traffic across his infrastructure.

2.3.2.  SR Domain in a Overlay Network

   The following figure illustrates an SR domain consisting of an
   overlay network over multiple operator's networks.

Previdi, et al.           Expires July 24, 2018                 [Page 7]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

       (--Operator 1---)  (-----Operator 2-----)  (--Operator 3---)
       (               )  (                    )  (               )
   A1--(--11---13--14--)--(--21---22---23--24--)--(-31---32---34--)--C1
       ( /|\  /|\  /|  )  (  |\  /|\  /|\  /|  )  ( |\  /|\  /| \ )
   A2--(/ | \/ | \/ |  )  (  | \/ | \/ | \/ |  )  ( | \/ | \/ |  \)--C2
       (  | /\ | /\ |  )  (  | /\ | /\ | /\ |  )  ( | /\ | /\ |   )
       (  |/  \|/  \|  )  (  |/  \|/  \|/  \|  )  ( |/  \|/  \|   )
   A3--(--15---17--18--)--(--25---26---27--28--)--(-35---36---38--)--C3
       (               )  (  |    |         |  )  (               )
       (---------------)  (--|----|---------|--)  (---------------)
                             |    |         |
                             B1   B2        B3

                        Figure 2: Overlay SR Domain

   Figure 2 describes an overlay consisting of nodes connected to three
   different network operators and forming a single overlay network
   where Segment routing packets are exchanged.

   The overlay consists of nodes A1, A2, A3, B1, B2, B3, C1, C2 and C3.
   These nodes are connected to their respective network operator and
   form an overlay network.

   Each node may originate packets with an SRH which contains, in the
   segment list of the SRH or in the DA, segments identifying other
   overlay nodes.  This implies that packets with an SRH may traverse
   operator's networks but, obviously, these SRHs cannot contain an
   address/segment of the transit operators 1, 2 and 3.  The SRH
   originated by the overlay can only contain address/segment under the
   administration of the overlay (e.g. address/segments supported by A1,
   A2, A3, B1, B2, B3, C1,C2 or C3).

   In this model, the operator network nodes are transit nodes and,
   according to [RFC2460], MUST NOT inspect the routing extension header
   since they are not the DA of the packet.

   It is a common practice in operators networks to filter out, at
   ingress, any packet whose DA is the address of an internal node and
   it is also possible that an operator would filter out any packet
   destined to an internal address and having an extension header in it.

   This common practice does not impact the SR-enabled traffic between
   the overlay nodes as the intermediate transit networks never see a
   destination address belonging to their infrastructure.  These SR-
   enabled overlay packets will thus never be filtered by the transit
   operators.

Previdi, et al.           Expires July 24, 2018                 [Page 8]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

   In all cases, transit packets (i.e.: packets whose DA is outside the
   domain of the operator's network) will be forwarded accordingly
   without introducing any security concern in the operator's network.
   This is similar to tunneled packets.

3.  Segment Routing Extension Header (SRH)

   A new type of the Routing Header (originally defined in [RFC2460]) is
   defined: the Segment Routing Header (SRH) which has a new Routing
   Type, (suggested value 4) to be assigned by IANA.

   The Segment Routing Header (SRH) is defined as follows:

     0                   1                   2                   3
     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Next Header   |  Hdr Ext Len  | Routing Type  | Segments Left |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Last Entry   |     Flags     |              Tag              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |            Segment List[0] (128 bits IPv6 address)            |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                                                               |
                                  ...
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |            Segment List[n] (128 bits IPv6 address)            |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    //                                                             //
    //         Optional Type Length Value objects (variable)       //
    //                                                             //
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   where:

   o  Next Header: 8-bit selector.  Identifies the type of header
      immediately following the SRH.

Previdi, et al.           Expires July 24, 2018                 [Page 9]
Internet-Draft      IPv6 Segment Routing Header (SRH)       January 2018

   Internet-Draft                     I-D                      January 2016

   o  A fixed-width font must be used for code and artwork-tagged
      sections.

   o  All fonts should be publicly licensed and supported by all major
      web browsers.

5.  Printing

   The CSS must include support for a printer-friendly output.  The
   print rules should be a part of the embedded style sheet; consumers
   of an RFC may develop their own print-specific style sheet as
   desired.

6.  Lists

   Lists should provide ample whitespace between list elements for
   legibility unless a 'compact' class is specified (e.g., .dlCompact,
   .ulCompact, .olCompact).

7.  CSS Classes and Attributes

   This section describes the CSS classes that result in specific
   changes to the natural language content of a document.  A full list
   of available classes, not including basic selectors, are included in
   "Appendix A".

7.1.  .alignCenter

   To be used with '.artwork' to indicate the figure should align in the
   center of the page flow.

7.2.  .alignRight

   To be used with '.artwork' to indicate the figure should align on the
   right of the page flow.

7.3.  .artwork

   These classes will mostly be styled as part of .artwork.  Specific
   classes may include '.art-ascii-art' and '.art-svg'.  Artwork will be
   held in its own block of space, centered in the page flow, and will
   not float.  Images should have a max width of 100% so views will
   scale properly across a variety of screens and devices.

Flanagan                  Expires July 7, 2016                  [Page 5]
Internet-Draft                     I-D                      January 2016

7.3.1.  .art-ascii-art

   Must use a mono-spaced font.

7.3.2.  .art-logo

   No visible changes to the natural language content; keep in default
   style.  Note that such images are not currently allowed in RFCs.

7.4.  .closeParen

   Close the whitespace before a closing parenthesis after a <span>
   block by moving the text within the block to the right and moving the
   closing parenthesis to the left..

7.5.  .comma

   Close the whitespace before a comma after a <span> block by moving
   the text within the block to the left and moving the comma to the
   right.

7.6.  .cref

   A comment within an I-D; should be visually distinct.

   For I-Ds only; not for RFCs.

7.7.  .crefAnchor

   A comment within an I-D; should be visually distinct.

   For I-Ds only; not for RFCs.

7.8.  .crefSource

   A comment within an I-D; should be visually distinct.

   For I-Ds only; not for RFCs.

7.9.  .dlCompact

   Use less spacing on a definition list than the default.

7.10.  .dlHanging

   Use the standard hanging indent for a definition list; indent terms.

Flanagan                  Expires July 7, 2016                  [Page 6]
Internet-Draft                     I-D                      January 2016

7.11.  .dlParallel

   Do not use the standard hanging indent for a definition list; align
   terms and definitions along left side.

7.12.  .docInfo

   Hide from visible content.

7.13.  .eref

   Standard link formatting (underlined, change in color).

7.14.  .finalized

   Hide from visible content.

7.15.  .fullStop

   Close the whitespace before a period or full stop after a <span>
   block by moving the text within the block to the left and moving the
   period to the right.

7.16.  .note

   Notes should be emphasized and distinct from normal paragraph text.

7.16.1.  .rfcEditorRemove

   An RFC Editor note may be added after the standard boilerplage.  It
   should be visually distinct to highlight final removal of the note by
   the RFC Editor.

7.17.  .olCompact

   Use less spacing on a numbered list than the default.

7.18.  .olPercent

   If the style attribute from the source XML contains a percent sign, a
   particular style setting will be required to make this setting behave
   like an HTML ordered list.

7.19.  .openParen

   Close the whitespace after an opening parenthesis and before a <span>
   block by moving the text within the block to the left and moving the
   opening parenthesis to the right.

Flanagan                  Expires July 7, 2016                  [Page 7]
Internet-Draft                     I-D                      January 2016

7.20.  .pilcrow

   Pilcrows, when used as described in draft-hildebrand-html-rfc, should
   appear at the end of the paragraph, artwork, or sourcecode segment.
   They should not appear until moused-over.  They should not show when
   printed, and should not be selected when copied with a copy/paste
   function.

7.21.  .relref

   Should be clearly distinguished as links.

7.22.  .rendered

   Hide from visible content.

7.23.  .sourcecode

   Code examples or components should be in a fixed-width font if the
   human language used has an available fixed-width font option, and
   should be visually distinct.  If no fixed-width font is available,
   use the default font for that human language.

7.24.  .toc

   The table of contents should be clearly distinguished using an
   indented, ordered list with the list style set to 'none', allowing
   for hyperlinked, in-line dotted number notation (e.g., 1., 1.1.,
   1.1.1.).

7.25.  .type

   No visible changes to the natural language content; keep in default
   style.

7.26.  .ulCompact

   Use less spacing on a bulleted list than the default.

7.27.  .ulEmpty

   Indent from the margin of the previous paragraph.

7.28.  .url

   Should be clearly distinguished as links.

Flanagan                  Expires July 7, 2016                  [Page 8]
Internet-Draft                     I-D                      January 2016

7.29.  .xref

   Should be clearly distinguished as links.

8.  Security Considerations

   Security vulnerabilities can be introduced through the CSS.  How much
   detail do we need to go into here to say "don't do foolish things and
   introduce security issues?"

9.  IANA Considerations

   This draft contains no action for IANA

10.  Acknowledgements

   With many thanks to the RFC Format Design Team for their efforts in
   making this transition successful: Nevil Brownlee (ISE), Tony Hansen,
   Joe Hildebrand, Paul Hoffman, Ted Lemon, Julian Reschke, Adam Roach,
   Alice Russo, Robert Sparks (Tools Team liaison), and Dave Thaler.

   Additional thanks to Arlen Johnson of Spherical Cow Group, LLC, for
   his assistance in clarifying the requirements in more CSS designer-
   friendly language.

11.  Draft Change Log

   To be removed before publication

11.1.  Changes from -02 to -03

   Moved Appendix to correct location; fixed typos; moved lang-* to
   Appendix,

11.2.  Changes from -01 to -02

   Adjusted class names where possible to a common naming pattern
   (CamelCase).

   Added alignCenter, alignRight, dlHanging, closedParen, openParen,
   ulEmpty

11.3.  Changes from -00 to -01

   Moved full list of classes to Appendix; only discussed classes that
   will have visible changes to the text in the body

   Introduction: text regarding expected future changes added.

Flanagan                  Expires July 7, 2016                  [Page 9]
Internet-Draft                     I-D                      January 2016

   Body: added text regarding anchors and tags; this text also applied
   to .relref, .url, .xref

   Artwork: clarified non-floating behavior of artwork

   List behavior: clarified the behavior of .ulCompact, .olCompact, and
   .dlCompact as distinct from default list behavior; clarified behavior
   of .dlparallel

   Note: clarified text around behavior of notes

   RFC: added additional class to allow the CSS to distinguish between
   RFCs and Internet Drafts if desired

   TOC: clarified text around behavior of table of contents

12.  Normative References

   [HTMLBP]   W3C, "Best Practices for Authoring HTML Current Status",
              n.d., <http://www.w3.org/standards/techs/htmlbp>.

   [RFC5741]  Daigle, L., Ed., Kolkman, O., Ed., and IAB, "RFC Streams,
              Headers, and Boilerplates", RFC 5741,
              DOI 10.17487/RFC5741, December 2009,
              <http://www.rfc-editor.org/info/rfc5741>.

   [RFC7322]  Flanagan, H. and S. Ginoza, "RFC Style Guide", RFC 7322,
              DOI 10.17487/RFC7322, September 2014,
              <http://www.rfc-editor.org/info/rfc7322>.

   [I-D.hildebrand-html-rfc]
              Hildebrand, J. and P. Hoffman, "HyperText Markup Language
              Request For Comments Format", draft-hildebrand-html-rfc-10
              (work in progress), August 2015.

   [I-D.flanagan-rfc-framework]
              Flanagan, H., "RFC Format Framework", draft-flanagan-rfc-
              framework-08 (work in progress), December 2015.

Appendix A.  List of classes

   This section lists all the CSS classes.  Except for those also listed
   above in section 7, none of these result in specific changes to the
   natural language content of a document.

   o  .adr

   o  .alignCenter

Flanagan                  Expires July 7, 2016                 [Page 10]
Internet-Draft                     I-D                      January 2016

   o  .alignRight

   o  .annotation

   o  .artwork

         .art-ascii-art

         .art-logo

         .art-svg

   o  .ascii

   o  .author

   o  .authors

   o  .bcp14

   o  .city

   o  .closeParen

   o  .comma

   o  .compact

   o  .country-name

   o  .cref

   o  .crefAnchor

   o  .crefSource

   o  .dlCompact

   o  .dlHanging

   o  .dlParallel

   o  .docInfo

   o  .email

   o  .eref

Flanagan                  Expires July 7, 2016                 [Page 11]
Internet-Draft                     I-D                      January 2016

   o  .finalized

   o  .fn

   o  .fullStop

   o  .index

   o  .indexChar

   o  .indexIndex

   o  .indexItem

   o  .indexPrimary

   o  .indexSubItem

   o  .initial

   o  .iref

   o  .irefItem

   o  .irefRefs

   o  .irefSubItem

   o  .label

   o  .locality

   o  .nameRole

   o  .note

         .rfcEditorRemove

   o  .olCompact

   o  .olPercent

   o  .openParen

   o  .org

   o  .organization

Flanagan                  Expires July 7, 2016                 [Page 12]
Internet-Draft                     I-D                      January 2016

   o  .pilcrow

   o  .postal-code

   o  .published

   o  .refAuthor

   o  .refContent

   o  .refDate

   o  .refTitle

   o  .reference

   o  .referenceGroup

   o  .region

   o  .relref

   o  .rendered

   o  .RFC

   o  .rfcEditorRemove

   o  .role

   o  .selfRef

   o  .series

   o  .seriesInfo

   o  .sourcecode

         .lang-*

   o  .street-address

   o  .status

   o  .street-address

   o  .surname

Flanagan                  Expires July 7, 2016                 [Page 13]
Internet-Draft                     I-D                      January 2016

   o  .tel

   o  .toc

   o  .type

   o  .ulCompact

   o  .url

   o  .workgroup

   o  .xref

   o  .vcard

Author's Address

   Heather Flanagan
   RFC Editor

   Email: rse@rfc-editor.org
   URI:   http://orcid.org/0000-0002-2647-2220

Flanagan                  Expires July 7, 2016                 [Page 14]