<?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-bonica-lsr-crh-isis-extensions-06"
     ipr="trust200902">
  <front>
    <title abbrev="ISIS-CRH">IS-IS Extensions To Support The IPv6 Compressed
    Routing Header (CRH)</title>

    <author fullname="Parag Kaneriya " initials="P." surname="Kaneriya">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>Elnath-Exora Business Park Survey</street>

          <city>Bangalore</city>

          <region>Karnataka</region>

          <code>560103</code>

          <country>India</country>
        </postal>

        <email>pkaneria@juniper.net</email>
      </address>
    </author>

    <author fullname="Rejesh Shetty" initials="R." surname="Shetty">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>Elnath-Exora Business Park Survey</street>

          <city>Bangalore</city>

          <region>Karnataka</region>

          <code>560103</code>

          <country>India</country>
        </postal>

        <email>mrajesh@juniper.net</email>
      </address>
    </author>

    <author fullname="Shraddha Hegde" initials="S." surname="Hegde">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>Elnath-Exora Business Park Survey</street>

          <city>Bangalore</city>

          <region>Karnataka</region>

          <code>560103</code>

          <country>India</country>
        </postal>

        <email>shraddha@juniper.net</email>
      </address>
    </author>

    <author fullname="Ron Bonica" initials="R." surname="Bonica">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>2251 Corporate Park Drive</street>

          <city>Herndon</city>

          <code>20171</code>

          <region>Virginia</region>

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

        <email>rbonica@juniper.net</email>
      </address>
    </author>

    <date day="24" month="February" year="2022"/>

    <area>Routing Area</area>

    <workgroup>LSR Working Group</workgroup>

    <keyword>ISIS</keyword>

    <keyword>Draft</keyword>

    <abstract>
      <t>Source nodes can use the IPv6 Compressed Routing Header (CRH) to
      steer packets through a specified path. This document defines IS-IS
      extensions that support the CRH.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>Source nodes can use the <xref
      target="I-D.bonica-6man-comp-rtg-hdr">IPv6 Compressed Routing Header
      (CRH) </xref> to steer packets through a specified path. This document
      defines IS-IS extensions that support the CRH.</t>
    </section>

    <section anchor="ReqLang" title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in <xref
      target="RFC2119">BCP 14</xref> <xref target="RFC8174"/> when, and only
      when, they appear in all capitals, as shown here.</t>
    </section>

    <section title="Advertising The CRH Capability">
      <t>The <xref target="RFC7981">Router CAPABILITY TLV</xref> MAY contain
      exactly one CRH sub-TLV. The CRH sub-TLV indicates that the advertising
      node can process the CRH.</t>

      <t>The CRH sub-TLV MAY contain sub-sub-TLVs. No sub-sub-TLVs are
      currently defined.</t>

      <figure align="center" anchor="CRH-CAP-FIG" title="CRH Sub-TLV">
        <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     |  Max CRH Len  |    Reserved   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

]]></artwork>
      </figure>

      <t><xref target="CRH-CAP-FIG"/> depicts the CRH sub-TLV. The CRH sub-TLV
      contains the following fields:</t>

      <t><list style="symbols">
          <t>Type: 8 bits. CRH (value TBD by IANA. Suggested value is 30.)</t>

          <t>Length: 8 bits. Length of TLV data excluding the TLV header. MUST
          be equal to 2 plus the length of sub-sub-TLVs (if any).</t>

          <t>Max CRH Len: 8 bits. Maximum CRH length supported by the
          advertising node, measured in 8-octet units, not including the first
          8 octets. See Note 1.</t>

          <t>Reserved: 8 bits. SHOULD be set to zero by sender. MUST be
          ignored by receiver.</t>
        </list></t>

      <t>Note 1: According to <xref target="RFC8200"/>, all IPv6 Routings
      header include a "Hdr Ext Len" field. That field specifies the length of
      the Routing header in 8-octet units, not including the first 8 octets.
      The same unit of measure was chosen for the "Max CRH Len" field in the
      CRH sub-TLV.</t>
    </section>

    <section title="Advertising Prefix Segment Identifiers">
      <t>The following TLVs MAY contain one or more Prefix SID sub-TLVs:</t>

      <t><list style="symbols">
          <t>TLV-236 (IPv6 IP Reachability) <xref target="RFC5308"/>.</t>

          <t>TLV-237 (Multitopology IPv6 IP Reachability) <xref
          target="RFC5120"/>.</t>
        </list>The Prefix SID sub-TLV is valid only when its parent TLV
      specifies a prefix length of 128. In this case, it binds the SID that it
      contains to the prefix (i.e., IPv6 address) that its parent TLV
      contains. This information is used to construct the mapping table
      described in <xref target="I-D.bonica-6man-comp-rtg-hdr"/>.</t>

      <t>When the parent TLV is propagated across level boundaries, the Prefix
      SID sub-TLV SHOULD be kept.</t>

      <t/>

      <figure align="center" anchor="LRSFIG" title="Prefix SID sub-TLV">
        <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    |           Reserved            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            SID         
   +-+-+-+-+-+-+-+
]]></artwork>
      </figure>

      <t><xref target="LRSFIG"/> depicts the Prefix SID sub-TLV. It contains
      the following fields:</t>

      <t><list style="symbols">
          <t>Type: 8 bits. Prefix SID sub-TLV (Value TBD by IANA. Suggested
          value is 33.)</t>

          <t>Length: 8 bits. Length of TLV data excluding the TLV header,
          measured in bytes.</t>

          <t>Reserved: 16 bits. SHOULD be set to zero by the sender. MUST be
          ignored by the receiver.</t>

          <t>SID - Variable length. Segment Identifier.</t>
        </list></t>
    </section>

    <section title="Advertising Adjacency Segment Identifiers">
      <t>The following TLVs can contain one or more Adjacency SID
      sub-TLVs:</t>

      <t><list style="symbols">
          <t>TLV-22 (Extended IS reachability) <xref target="RFC5305"/></t>

          <t>TLV-222 (Multitopology IS) <xref target="RFC5120"/></t>

          <t>TLV-23 (IS Neighbor Attribute) <xref target="RFC5311"/></t>

          <t>TLV-223 (Multitopology IS Neighbor Attribute) <xref
          target="RFC5311"/></t>

          <t>TLV-141 (inter-AS reachability information) <xref
          target="RFC5316"/></t>
        </list></t>

      <t>The Adjacency SID sub-TLV is valid only when its parent TLV also
      contains an <xref target="RFC6119">IPv6 Neighbor Address
      sub-TLVs</xref>. In this case, the SID contained by the Adjacency SID
      sub-TLV is bound to the IPv6 address contained by the IPv6 Neighbor
      Address sub-TLV. This information is used to construct the mapping table
      described in <xref target="I-D.bonica-6man-comp-rtg-hdr"/>.</t>

      <figure anchor="SRSFIB" title="Adjacency SID Sub-TLV">
        <artwork align="right"><![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     |     Weight    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            SID            
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
]]></artwork>
      </figure>

      <t><xref target="SRSFIB"/> depicts the Adjacency SID sub-TLV. It
      contains the following fields:</t>

      <t><list style="symbols">
          <t>Type: 8 bits. Adjacency SID sub-TLV (Value TBD by IANA. Suggested
          value is 45.)</t>

          <t>Length: 8 bits. Length of TLV data excluding the TLV header,
          measured in bytes.</t>

          <t>Flags: 8 bits. See below.</t>

          <t>Weight: 8 bits. The value represents the SID weight for the
          purpose of load balancing.</t>

          <t>SID - Variable length. Segment Identifier.</t>
        </list></t>

      <figure align="center" anchor="SRSFlags"
              title="Adjacency SID Sub-TLV Flags">
        <artwork><![CDATA[          0 1 2 3 4 5 6 7
         +-+-+-+-+-+-+-+-+
         |B|S|P| Reserved|
         +-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>

      <t><xref target="SRSFlags"/> depicts Adjacency SID Sub-TLV flags. They
      include the following:<list style="symbols">
          <t>B-Flag: Backup flag. If set, the SID is eligible for
          protection.</t>

          <t>S-Flag:. Set flag. When set, the S-Flag indicates that the SID
          refers to a set of adjacencies (and therefore MAY be assigned to
          other adjacencies as well).</t>

          <t>P-Flag: Persistent flag. When set, the P-Flag indicates that the
          SID is persistently allocated, i.e., the SID value remains
          consistent across router restart and/or interface flap.)</t>
        </list></t>
    </section>

    <section title="Advertising Adjacency Segment Identifiers Into LANs">
      <t>In LAN subnetworks, the Designated Intermediate System (DIS) is
      elected and originates the Pseudonode-LSP (PN-LSP) including all
      neighbors of the DIS.</t>

      <t>When the CRH is used, each router in the LAN MAY advertise its
      Adjacency SIDs of each of its neighbors. Since, on LANs, each router
      only advertises one adjacency to the DIS (and doesn't advertise any
      other adjacency), each router advertises the set of Adjacency SIDs (for
      each of its neighbors) inside a newly defined sub-TLV part of the TLV
      advertising the adjacency to the DIS (e.g.: TLV-22).</t>

      <t>The following TLVs can contain one or more LAN Adjacency SID
      sub-TLVs:</t>

      <t><list style="symbols">
          <t>TLV-22 (Extended IS reachability) <xref target="RFC5305"/></t>

          <t>TLV-222 (Multitopology IS) <xref target="RFC5120"/></t>

          <t>TLV-23 (IS Neighbor Attribute) <xref target="RFC5311"/></t>

          <t>TLV-223 (Multitopology IS Neighbor Attribute) <xref
          target="RFC5311"/></t>
        </list></t>

      <t>The LAN Adjacency SID sub-TLV binds an IPv6 address to a SID. The
      sub-TLV contains both the IPv6 address and the SID. This information is
      used to construct the mapping table described in <xref
      target="I-D.bonica-6man-comp-rtg-hdr"/>.</t>

      <t/>

      <figure anchor="SRSFIB-l" title="LAN Strictly Routed SID Sub-TLV">
        <artwork align="right"><![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    |    Weight     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  Neighbor System-ID (ID length octets)        |
   +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            SID            
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
]]></artwork>
      </figure>

      <t><xref target="SRSFIB-l"/> depicts the Adjacency SID sub-TLV. It
      contains the following fields:</t>

      <t><list style="symbols">
          <t>Type: 8 bits. Adjacency SID sub-TLV (Value TBD by IANA. Suggested
          value is 46.)</t>

          <t>Length: 8 bits. Length of TLV data excluding the TLV header,
          measured in bytes.</t>

          <t>Flags: 8 bits. See below.</t>

          <t>Weight: 8 bits. The value represents the SID weight for the
          purpose of load balancing.</t>

          <t>Neighbor System-ID: 6 bytes. IS-IS System-ID of length "ID
          Length" as defined in <xref target="ISO10589"/>.</t>

          <t>SID - Variable length. Segment Identifier.</t>
        </list></t>

      <figure align="center" anchor="SRSFlags-l"
              title="Adjacency SID Sub-TLV Flags">
        <artwork><![CDATA[          0 1 2 3 4 5 6 7
         +-+-+-+-+-+-+-+-+
         |B|S|P| Reserved|
         +-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>

      <t><xref target="SRSFlags-l"/> depicts Adjacency SID Sub-TLV flags. They
      include the following:<list style="symbols">
          <t>B-Flag: Backup flag. If set, the SID is eligible for
          protection.</t>

          <t>S-Flag:. Set flag. When set, the S-Flag indicates that the SID
          refers to a set of adjacencies (and therefore MAY be assigned to
          other adjacencies as well).</t>

          <t>P-Flag: Persistent flag. When set, the P-Flag indicates that the
          SID is persistently allocated, i.e., the SID value remains
          consistent across router restart and/or interface flap.)</t>
        </list></t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t/>

      <section title="The CRH Sub-TLV">
        <t>IANA is requested to add a new sub-TLV in the <xref
        target="capreg">Sub-TLVs for TLV 242 (IS-IS Router CAPABILITY TLV)
        Registry </xref>.</t>

        <t><list style="symbols">
            <t>Value - TBD by IANA. (Suggested value is 30).</t>

            <t>Description - CRH</t>
          </list>This document requests the creation of a new IANA managed
        registry for sub-sub-TLVs of the CRH sub-TLV. The registration
        procedure is "Expert Review" as defined in <xref target="RFC7370"/>.
        Suggested registry name is "sub-sub-TLVs for CRH sub-TLV". No sub-
        sub-TLVs are defined by this document except for the reserved
        value.</t>

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

            <t>1 - 255 Unassigned</t>
          </list></t>
      </section>

      <section title="Prefix SID Sub-TLV">
        <t>IANA is requested to add a new entry in the <xref
        target="loosereg">Sub-TLVs for TLVs 135, 235, 236, and 237 (Extended
        IP reachability, MT IP. Reach, IPv6 IP. Reach, and MT IPv6 IP. Reach
        TLVs) Registry </xref>.</t>

        <t><list style="symbols">
            <t>Value - TBD by IANA. (Suggested value is 33)</t>

            <t>Description - Prefix SID</t>

            <t>135 - N</t>

            <t>136 - N</t>

            <t>236 - Y</t>

            <t>237 - Y</t>

            <t>Reference - This document.</t>
          </list></t>
      </section>

      <section title="Adjacency SID Sub-TLV">
        <t>IANA is requested to add the following entries in the <xref
        target="strictreg">Sub-TLVs for TLVs 22, 23, 25, 141, 222, and 223
        (Extended IS reachability, IS Neighbor Attribute, L2 Bundle Member
        Attributes, inter-AS reachability information, MT-ISN, and MT IS
        Neighbor Attribute TLVs) Registry </xref>.</t>

        <t>The first entry follows:</t>

        <t><list style="symbols">
            <t>Value - TBD by IANA (Suggested value is 45).</t>

            <t>Description - Adjacency SID</t>

            <t>22 - Y</t>

            <t>23 - Y</t>

            <t>25 - N</t>

            <t>141 - Y</t>

            <t>222 - Y</t>

            <t>223 - Y</t>

            <t>Reference - This document.</t>
          </list>The second entry follows:</t>

        <t><list style="symbols">
            <t>Value - TBD by IANA (Suggested value is 46)</t>

            <t>Description - LAN Adjacency SID</t>

            <t>22 - Y</t>

            <t>23 - Y</t>

            <t>25 - N</t>

            <t>141 - N</t>

            <t>222 - Y</t>

            <t>223 - Y</t>

            <t>Reference - This document.</t>
          </list></t>
      </section>
    </section>

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

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Thanks to Ram Santhanakrishnan for his comments on this document.</t>
    </section>
  </middle>

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

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

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

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

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

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

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

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

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

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

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

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

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

      <?rfc ?>

      <?rfc include='reference.I-D.bonica-6man-comp-rtg-hdr'?>

      <?rfc ?>

      <reference anchor="ISO10589" target="ISO/IEC 10589:2002">
        <front>
          <title>Intermediate system to Intermediate system routing
          information exchange protocol for use in conjunction with the
          Protocol for providing the Connectionless-mode Network Service (ISO
          8473)</title>

          <author fullname="ISO" initials="" surname="">
            <organization>IANA</organization>
          </author>

          <date month="August" year="1987"/>
        </front>
      </reference>
    </references>

    <references title="Informative References">
      <?rfc ?>

      <?rfc ?>

      <?rfc ?>

      <reference anchor="capreg"
                 target="https://www.iana.org/assignments/isis-tlv-codepoints/isis-tlv-codepoints.xhtml#isis-tlv-codepoints-242">
        <front>
          <title>Sub-TLVs for TLV 242 (IS-IS Router CAPABILITY TLV)</title>

          <author fullname="" initials="" surname="">
            <organization>IANA</organization>
          </author>

          <date month="August" year="1987"/>
        </front>
      </reference>

      <reference anchor="loosereg"
                 target="https://www.iana.org/assignments/isis-tlv-codepoints/isis-tlv-codepoints.xhtml#isis-tlv-codepoints-135-235-236-237">
        <front>
          <title>Sub-TLVs for TLVs 135, 235, 236, and 237 (Extended IP
          reachability, MT IP. Reach, IPv6 IP. Reach, and MT IPv6 IP. Reach
          TLVs)</title>

          <author fullname="" initials="" surname="">
            <organization>IANA</organization>
          </author>

          <date month="August" year="1987"/>
        </front>
      </reference>

      <reference anchor="strictreg"
                 target="https://www.iana.org/assignments/isis-tlv-codepoints/isis-tlv-codepoints.xhtml#isis-tlv-codepoints-22-23-25-141-222-223">
        <front>
          <title>Sub-TLVs for TLVs 22, 23, 25, 141, 222, and 223 (Extended IS
          reachability, IS Neighbor Attribute, L2 Bundle Member Attributes,
          inter-AS reachability information, MT-ISN, and MT IS Neighbor
          Attribute TLVs)</title>

          <author fullname="" initials="" surname="">
            <organization>IANA</organization>
          </author>

          <date month="August" year="1987"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
