<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-bashandy-isis-srv6-extensions-01.txt"
     ipr="trust200902" updates="">
  <front>
    <title abbrev="draft-bashandy-isis-srv6-extensions">IS-IS Extensions to
    Support Routing over IPv6 Dataplane</title>

    <author fullname="Les Ginsberg" initials="L" surname="Ginsberg">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>821 Alder Drive</street>

          <city>Milpitas</city>

          <code>95035</code>

          <region>CA</region>

          <country>USA</country>
        </postal>

        <email>ginsberg@cisco.com</email>
      </address>
    </author>

    <author fullname="Ahmed Bashandy" initials="A" surname="Bashandy">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>170 West Tasman Dr</street>

          <city>San Jose</city>

          <code>95134</code>

          <region>CA</region>

          <country>USA</country>
        </postal>

        <email>bashandy@cisco.com</email>
      </address>
    </author>

    <author fullname="Clarence Filsfils" initials="C" surname="Filsfils">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street/>

          <city>Brussels</city>

          <code/>

          <region/>

          <country>Belgium</country>
        </postal>

        <email>cfilsfil@cisco.com</email>
      </address>
    </author>

    <author fullname="Bruno Decraene" initials="B" surname="Decraene">
      <organization>Orange</organization>

      <address>
        <postal>
          <street/>

          <city>Issy-les-Moulineaux</city>

          <code/>

          <region/>

          <country>France</country>
        </postal>

        <email>bruno.decraene@orange.com</email>
      </address>
    </author>

    <date day="29" month="September" year="2017"/>

    <area>Routing Area</area>

    <workgroup>Networking Working Group</workgroup>

    <keyword/>

    <abstract>
      <t>Segment Routing (SR) allows for a flexible definition of end-to-end
      paths by encoding paths as sequences of topological sub-paths, called
      "segments". Segment routing architecture can be implemented over an MPLS
      data plane as well as an IPv6 data plane. This draft describes the IS-IS
      extensions required to support Segment Routing over an IPv6 data
      plane.</t>
    </abstract>

    <note title="Requirements Language">
      <t>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].</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>With Segment Routing (SR)[SRARCH], a node steers a packet through an
      ordered list of instructions, called segments.</t>

      <t>Segments are identified through Segment Identifiers (SIDs).</t>

      <t>Segment Routing can be directly instantiated on the IPv6 data plane
      through the use of the Segment Routing Header defined in [SRH]. SRv6
      refers to this SR instantiation on the IPv6 dataplane.</t>

      <t>The network programming paradigm [NP] is central to SRv6.</t>

      <t>It describes how any function can be bound to a SID and how any
      network program can be expressed as a combination of SID's.</t>

      <t>It defines several well-known functions such as End, End.X, T.Insert,
      T.Encaps, etc.</t>

      <t>This document specifies IS-IS extensions that allow IS-IS protocol to
      encode some of these functions.</t>

      <t>Familiarity with the network programming paradigm [NP] is necessary
      to understand the extensions specified in this document.</t>

      <t>This document defines one new top level IS-IS_TLV and three new IS-
      IS sub-TLVs.</t>

      <t>The SRv6 Capabilities sub-TLV announces the ability to support SRv6
      and some functions defined in [NP] as well as advertising limitations
      when applying such functions.</t>

      <t>The SRv6 SID top level TLV, the P2P SRv6 X-SID sub-TLV, and the LAN
      SRv6 X-SID sub-TLV are used to advertise which SIDs are instantiated at
      a node and what function is bound to each instantiated SID.</t>

      <t>Only ISIS-related functions such as End and its variants D and X [NP]
      are defined in this document.</t>
    </section>

    <section title="SRv6-Capabilities sub-TLV">
      <t>As described in [SRH] and [NP], the list of Segments is stored in the
      segment routing header referred hereafter as "SRH".</t>

      <t>A router that supports SRv6 MUST be able to process the segment
      routing header as described in [SRH] and [NP] up to the limitations set
      by the advertised SRv6-capabilities sub-TLV.</t>

      <t>To announce this ability, a router uses the newly defined SRv6-
      capabilities sub-TLV of the router capabilities TLV [RFC7981]. The SRv6-
      capabilities sub-TLV may contain optional sub-sub-TLVs.</t>

      <t>The SRv6 Capabilities sub-TLV has the following format:</t>

      <t><figure>
          <artwork><![CDATA[   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    |            Flags              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   sub-sub-TLVs...
 
     Type: Suggested value 22, to be assigned by IANA

     Length: 2 + length of sub-sub-TLVs

     Flags: 2 octets  The following flags are defined:

      0                   1
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |E|                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      where:
        E-flag: If set, then router is able to apply "T.Encap"
        operation

]]></artwork>
        </figure></t>

      <t>The following sections define the supported sub-sub-TLVs.</t>

      <section title="Maximum SL sub-sub-TLV">
        <t>The Maximum Segments Left sub-sub-TLV specifies the maximum value
        of the "SL" field [SRH] in the SRH of a received packet before
        applying the function associated with a SID.</t>

        <t><figure>
            <artwork><![CDATA[  0                   1                   2        
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    |  Max SL       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type: 1
   Length: 1
   SL Value: 1 octet
   An 8 bit unsigned integer.

   If the sub-sub-TLV is NOT advertised the value is assumed to be 0.
   ]]></artwork>
          </figure></t>
      </section>

      <section title="Maximum End Pop SRH sub-sub-TLV">
        <t>The Maximum End Pop SRH sub-sub-TLV specifies the maximum number of
        SIDs in the top SRH in an SRH stack to which the router can apply
        "PSP" or USP" [NP] flavors.</t>

        <t><figure>
            <artwork><![CDATA[  0                   1                   2        
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    |Max-End-Pop-SRH|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type: 2
   Length: 1
   Max-End-Pop-SRH Value: 1 octet
   An 8 bit unsigned integer.

   If the value is zero or the sub-sub-TLV is NOT advertised,
   then it is assumed that the router cannot apply PSP or USP flavors.
   ]]></artwork>
          </figure></t>
      </section>

      <section title="Maximum T.Insert SRH sub-sub-TLV">
        <t>The Maximum T.Insert SRH sub-sub-TLV specifies the maximum number
        of SIDs that can be inserted as part of the "T.insert" behavior
        [NP].</t>

        <t><figure>
            <artwork><![CDATA[  0                   1                   2        
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    | Max-T.Insert  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type: 3
   Length: 1
   Max-T.Insert Value: 1 octet
   An 8 bit unsigned integer.

   If the value is zero or the sub-sub-TLV is omitted,
   then the router is assumed not to support any variation
   of the "T.insert" behavior. 
   ]]></artwork>
          </figure></t>
      </section>

      <section title="Maximum T.Encap SRH sub-sub-TLV">
        <t>The Maximum T.Encap SRH sub-sub-TLV specifies the maximum number of
        SIDs that can be included as part of the "T.Encap" behavior [NP].</t>

        <t><figure>
            <artwork><![CDATA[  0                   1                   2        
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    | Max-T.Encap  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type: 4
   Length: 1
   Max-T.Encap Value: 1 octet
   An 8 bit unsigned integer.

   If this value is zero or the sub-sub-TLV is omitted and
   the "E" flag is set in the associated SRv6 Capabilities
   sub-TLV, then it is assumed that the router can apply T.Encap
   by encapsulating the incoming packet in another IPv6 header
   without SRH the same way IPinIP encapsulation is performed.
   If the "E" flag is clear, then this sub-sub-TLV SHOULD NOT
   be transmitted and MUST be ignored on receipt.
   ]]></artwork>
          </figure></t>
      </section>

      <section title="Maximum End D SRH sub-sub-TLV">
        <t>The Maximum End D SRH sub-sub-TLV specifies the maximum number of
        SIDs in an SRH when applying "End.DX6" and "End.DT6" functions.</t>

        <t><figure>
            <artwork><![CDATA[  0                   1                   2        
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    | Max End D     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Type: 5
   Length: 1
   Max End D Value: 1 octet
   An 8 bit unsigned integer.

   If this value is zero or the sub-sub-TLV is omitted,
   then it is assumed that the router cannot apply
   "End.DX6" or "End.DT6" functions if the extension
   header right underneath the outer IPv6 header is an SRH.
   ]]></artwork>
          </figure></t>
      </section>
    </section>

    <section title="SRv6-function Descriptor">
      <t>The SRv6 SID TLV defined in Section 4, P2P SRv6 X-SID sub-TLV
      specified in Section 6.1, and LAN SRv6 X-SID sub-TLV specified in
      section 6.2 MUST include one SRv6 function Descriptor.</t>

      <t>When included in the SRv6 SID TLV, the descriptor is encoded as a
      sub-TLV. When included in a P2P/LAN SRv6 X-SID sub-TLV, the descriptor
      is encoded as a sub-sub-TLV.</t>

      <t>The SRv6-function Descriptor encodes the function (and its flavors)
      bound to the SRv6 SID advertised in the SRv6 SID TLV [NP].</t>

      <t>The SRv6 SID function Descriptor has the following format:</t>

      <t><figure>
          <artwork><![CDATA[   0                   1           
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 
   +-+-+-+-+-+-+-+-+
   |   Type        |
   +-+-+-+-+-+-+-+-+
   |   Length      |
   +-+-+-+-+-+-+-+-+
   |   Flags       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Function (2 octets)           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Type: See IANA considerations in Section 7.

      Length: 3 

      Flags: 
 
          0 1 2 3 4 5 6 7 
         +-+-+-+-+-+-+-+-+
         |P|U| Reserved  |
         +-+-+-+-+-+-+-+-+
 
     This document defines two flags to specify the 
     flavor(s) [NP] associated with the SRv6 function
     specified in the "Function" field:

        P bit: If set, then the PSP flavor [NP] is associated with the
        function encoded in the "function" field

        U bit: If set, then the USP flavor [NP] is associated with the
        function encoded in the "function" field

        Reserved Bits SHOULD be transmitted as 0 and MUST be ignored on
        receipt.
 
     The second two octets encode the function. Function code points
     are defined in Section 5.

     For a given SRv6 SID function encoded in the "Function" field,
     the "P" and "U" bits are set/cleared according to the rules of
     enabling/disabling the PSP and USP flavors, respectively, for
     that function as specified in [NP].

]]></artwork>
        </figure></t>
    </section>

    <section title="SRv6-SID TLV">
      <t>A new top level TLV is introduced to advertise SRv6 Segment
      Identifiers (SID) and their attributes.</t>

      <t>The new TLV is used to advertise SRv6 SIDs with any of the functions
      defined in [NP] whose code point is defined in this document except
      those SIDs which must be associated with a particular neighbor in order
      to be correctly applied [NP]. SRv6 SIDs associated with a neighbor are
      advertised in the sub-TLVs defined in Section 6.</t>

      <t>This new TLV shares the sub-TLV space defined for TLVs 135, 235, 236
      and 237. The SRv6 SID TLV has the following format:</t>

      <t><figure>
          <artwork><![CDATA[   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    |    flags      |   SID-size    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        SID (variable) . . .                                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | sub-tlv-len   |         Sub-TLVs (variable) . . .             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Type: 27 (Suggested value to be assigned by IANA)

      Length: variable.

      One or more SID entries, each of which has the following format:

     Flags: 1 octet. The following flags are defined

       0
       0 1 2 3 4 5 6 7
      +-+-+-+-+-+-+-+-+
      |D| Reserved    |
      +-+-+-+-+-+-+-+-+

      where:
        D bit: When the SID is leaked from level-2 to level-1, the D
        bit MUST be set.  Otherwise, this bit MUST be clear.  SIDs with
        the D bit set MUST NOT be leaked from level-1 to level-2.  This
        is to prevent looping.


        The remaining bits are reserved for future use. They SHOULD be
        set to zero on transmission and MUST be ignored on receipt.

      SID-Size: 1 octet. Number of bits in the SID field.

      SID: 1-16 octets. This field encodes the advertised SRv6 SID. The
      "SID-size" field can have the values 1-128 and indicates the
      number of bits in the SID.  The SRv6 SID is encoded in the
      minimal number of octets for the given number of bits. The owning
      router may associate one or more functions as specified in [NP],
      in other documents, or as locally configured.

     Sub-TLV-length: 1 octet. Number of octets used by sub-TLVs

     The function associated with the advertised SID is specified by
     the SRv6-Function Descriptor sub-TLV specified in Section 3.

]]></artwork>
        </figure></t>
    </section>

    <section title="Function Code Points">
      <t>This section defines the code points for supported functions
      associated with SRv6 SIDs. Functions are defined in [NP].</t>

      <t><list style="symbols">
          <t>0: Reserved</t>

          <t>1: End Function</t>

          <t>2: End.X Function</t>

          <t>3: End.DX6 Function</t>

          <t>4: End.DT6 Function</t>
        </list></t>
    </section>

    <section title="Advertising SRv6 SIDs associated with a Neighbor">
      <t>Certain SRv6 functions [NP] must be associated with a particular
      neighbor, and in case of multiple layer 3 links to the same neighbor,
      with a particular link in order to be correctly applied.</t>

      <t>This document specifies how to advertise two such functions in IS-
      IS, namely End.X and End.DX6 [NP].</t>

      <t>SIDs associated with End.X and End.DX6 functions are advertised
      within neighbor reachability TLVs.</t>

      <t>This document defines two new sub-TLVs of TLV 22, 23, 222, 223, and
      141 - namely "P2P SRv6 X-SID" and "LAN SRv6 X- SID".</t>

      <section title="P2P Srv6 X-SID sub-TLV">
        <t>This sub-TLV is used to advertise one or more SRv6 SIDs associated
        with End.X and End.DX6 [NP] functions over a point to point
        adjacency.</t>

        <t>The "P2P SRv6 X-SID" sub-TLV has the following format:</t>

        <t><figure>
            <artwork><![CDATA[   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    |    Flags      |   SID-size    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        SID (variable) . . .                                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |sub-sub-tlv-len|      Sub-sub-TLVs (variable) . . .            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


      Type: 40 (Suggested value to be assigned by IANA)

      Length: variable.

      One or more SIDs each of which has the following format:

      Flags: 1 octet. No flags defined in this document

      SID-Size: 1 octet. Number of bits in the SID field.

      SID: 1-16 octets. This field encodes the advertised SRv6 SID. The
      "SID-size" field can have the values 1-128 and indicates the
      number of bits in the SID.  The SRv6 SID is encoded in the
      minimal number of octets for the given number of bits. The owning
      router may associate one or more functions as specified in [NP],
      in other documents, or as locally configured.

      Sub-sub-TLV-length: 1 octet. Number of octets used by sub-sub-
      TLVs

]]></artwork>
          </figure>The function associated with the advertised SID is
        specified by the SRv6-Function Descriptor sub-sub-TLV specified in
        Section 3. If the SRv6-Function Descriptor is encoded in the P2P SRv6
        X-SID sub-TLV, then the encoded SRv6 SID function MUST include only
        the code points of SRv6 SID functions that require the specification
        of a neighbor to be correctly applied. This document specifies the
        code points of two such functions, namely End.X and End.DX6 [NP].</t>
      </section>

      <section title="LAN SRv6 X-SID sub-TLV">
        <t>This sub-TLV is used to advertise one or more SRv6 SIDs associated
        with End.X and End.DX6 [NP] functions over a LAN adjacency. The "LAN
        SRv6 X-SID" sub-TLV has the following format:</t>

        <t><figure>
            <artwork><![CDATA[   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type        |     Length    |    System ID (6 octets)       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Flags       |  SID-size   |    SID (variable) . . .         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |sub-sub-tlv-len|      sub-sub-TLVs (variable) . . .            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Type: 41 (Suggested value to be assigned by IANA)
      Length: variable.

      System-ID: 6 octets of IS-IS System-ID of length "ID Length" as
      defined in [ISO10589].

      One or more SIDs each of which has the following format:

      Flags 1 Octet. No flags are defined in this document

      SID-Size: 1 octet. Number of bits in the SID field.

      SID: 1-16 octets. This field encodes the advertised SRv6 SID. The
      "SID-size" field can have the values 1-128 and indicates the
      number of bits in the SID.  The SRv6 SID is encoded in the
      minimal number of octets for the given number of bits. The owning
      router may associate one or more functions as specified in [NP],
      in other documents, or as locally configured.

      Sub-sub-TLV-length: 1 octet. Number of octets used by sub-sub-
      TLVs.

]]></artwork>
          </figure>The function associated with the advertised SID is
        specified by the SRv6-Function Descriptor sub-sub-TLV specified in
        Section 3. If the SRv6-Function Descriptor is encoded in the P2P SRv6
        X-SID sub-TLV, then the encoded SRv6 SID function MUST include only
        the code points of SRv6 SID functions that require the specification
        of a neighbor to be correctly applied. This document specifies the
        code points of two such functions, namely End.X and End.DX6 [NP].</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This documents request allocation for the following TLVs, sub- TLVs,
      and sub-sub-TLVs as well updating the ISIS TLV registry and defining a
      new registry.</t>

      <section title="SRv6 SID TLV and sub-TLVs">
        <t>This document adds the following new TLV to the IS-IS TLV
        Codepoints registry.</t>

        <t>Value: 27 (suggested - to be assigned by IANA)</t>

        <t>Name: SRv6 SID</t>

        <t>The name of the "Sub-TLVs for TLVs 135, 235, 236 and 237 registry"
        needs to be changed to "Sub-TLVs for TLVs 27, 135, 235, 236 and 237
        registry".</t>

        <t>This document adds a new sub-TLV to the (renamed) "Sub-TLVs for
        TLVs 27, 135, 235, 236 and 237 registry".</t>

        <t>Value: 5 (Suggested - to be assigned by IANA)</t>

        <t>Name: SRv6-function Descriptor</t>

        <t>The revised table of sub-TLVs in the registry should be:</t>

        <t><figure>
            <artwork><![CDATA[   Type  27 135 235 236 237

   1     n   y   y   y   y
   2     n   y   y   y   y
   3     y   y   y   y   y
   4     y   y   y   y   y
   5(new)y   n   n   n   n
   11    y   y   y   y   y
   12    y   y   y   y   y

]]></artwork>
          </figure></t>
      </section>

      <section title="IS-IS SRv6-functions Codepoints Registry">
        <t>This document requests the creation of a new IANA managed registry
        to identify SRv6 SID functions. The registration procedure is "Expert
        Review" as defined in [RFC7370]. Suggested registry name is "SRv6 SID
        Function Types". A function identifier is an unsigned 8 bit value. The
        following values are defined by this document:</t>

        <t>0 Reserved</t>

        <t>1 End function.</t>

        <t>2 End.X function</t>

        <t>3 End.DX6 function.</t>

        <t>4 End.DT6 function.</t>
      </section>

      <section title="SRv6 Capabilities sub-TLV">
        <t>This document adds the definition of a new sub-TLV in the "Sub-
        TLVs for TLV 242 registry".</t>

        <t>Type: 22 (Suggested - to be assigned by IANA)</t>

        <t>Description: SRv6 Capabilities</t>

        <t>Thuis document requests the creation of a new IANA managed registry
        for sub-sub-TLVs of the SRv6 Capability sub-TLV. The registration
        procedure is "Expert Review" as defined in [RFC7370]. Suggested
        registry name is "sub-sub-TLVs for SRv6 Capability sub-TLV". The
        following sub-TLVs are defined by this document:</t>

        <t>0: Reserved</t>

        <t>1: Max-SL</t>

        <t>2: Max-End-Pop-SRH</t>

        <t>3: Max-T-Ins-SRH</t>

        <t>4: Max-T-Encap-SRH</t>

        <t>5: Max-End-D-SR</t>
      </section>

      <section title="P2P SRv6 X-SID and LAN SRv6 X-SID sub-TLVs">
        <t>This document adds the definition of two new sub-TLVs in the "sub-
        TLVs for TLV 22, 23, 141, 222 and 223 registry".</t>

        <t>Type: 40 (suggested - to be assigned by IANA)</t>

        <t>Description: Point-to-Point SRv6 X-SID</t>

        <t>Type: 41 (suggested - to be assigned by IANA)</t>

        <t>Description: LAN SRv6 X-SID</t>

        <t><figure>
            <artwork><![CDATA[   Type  22 23 141 222 223

   40     y  y  y   y   y
   41     y  y  y   y   y

]]></artwork>
          </figure></t>
      </section>

      <section title="IS-IS SRv6 X-SID sub-sub-TLV Codepoints Registry">
        <t>This document requests the creation of a new IANA managed registry
        to identify SRv6 SID functions encoded in P2P/LAN X-SID sub-TLVs. The
        registration procedure is "Expert Review" as defined in [RFC7370].
        Suggested registry name is "SRv6 X-SID sub-sub-TLV Codepoints
        Registry". The following values are defined by this document:</t>

        <t>Value: 5 (Suggested - to be assigned by IANA)</t>

        <t>Name: SRv6-function</t>

        <t>Descriptor This sub-sub-TLV MAY appear in either the Point-to-Point
        SRv6 X-SID or the LAN SRv6 X-SID sub-TLVs described in Section
        7.4.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Security concerns for IS-IS are addressed in [ISO10589, [RFC5304],
      and [RFC5310].</t>
    </section>

    <section anchor="Acknowledgements" title="Contributors">
      <t>The following people gave a substantial contribution to the content
      of this document and should be considered as co-authors:</t>

      <t><figure>
          <artwork><![CDATA[  Stefano Previdi
  Cisco Systems, Inc.
  Email: stefano@previdi.net

  Peter Psenak
  Cisco Systems
  Apollo Business Center Mlynske nivy 43
  Bratislava  821 09
  Slovakia
  Email: ppsenak@cisco.com

  Paul Wells
  Cisco Systems
  Saint Paul,
  Minnesota
  United States
  Email: pauwells@cisco.com

  Daniel Voyer
  Email:  daniel.voyer@bell.ca

  Satoru Matsushima
  Email: satoru.matsushima@g.softbank.co.jp

  Bart Peirens
  Email: bart.peirens@proximus.com

  Hani Elmalky
  Email: hani.elmalky@ericsson.com

  Prem Jonnalagadda
  Email: prem@barefootnetworks.com

  Milad Sharif
  Email: msharif@barefootnetworks.com>

  Robert Hanzl
  Cisco Systems
  Millenium Plaza Building, V Celnici 10, Prague 1,
  Prague, Czech Republic
  Email rhanzl@cisco.com

]]></artwork>
        </figure></t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.7981"?>

      <?rfc include='reference.RFC.5304'?>

      <?rfc include='reference.RFC.5310'?>

      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.7370'?>

      <reference anchor="ISO10589">
        <front>
          <title>Intermediate system to Intermediate system intra-domain
          routeing information exchange protocol for use in conjunction with
          the protocol for providing the connectionless-mode Network Service
          (ISO 8473), ISO/IEC 10589:2002, Second Edition.</title>

          <author fullname="ISO &quot;International Organization for Standardization&quot;"/>

          <date month="Nov" year="2002"/>
        </front>
      </reference>
    </references>

    <references title="Informative References">
      <reference anchor="SRARCH">
        <front>
          <title>Segment Routing Architecture,
          draft-ietf-spring-segment-routing-12(work in progress)</title>

          <author fullname="Filsfils C., et al,"/>

          <date month="June" year="2017"/>
        </front>
      </reference>

      <reference anchor="SRH">
        <front>
          <title>IPv6 SegmentRouting Header (SRH),
          draft-ietf-6man-segment-routing-header-07 (work in progress)</title>

          <author fullname="Previdi S., et al,"/>

          <date month="July" year="2017"/>
        </front>
      </reference>

      <reference anchor="NP">
        <front>
          <title>SRv6 Network Programming,
          draft-filsfils-spring-srv6-network-programming-01 (work in
          progress)</title>

          <author fullname="Filsfils C., et al,"/>

          <date month="June" year="2017"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
