<?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="no"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-bier-isis-extensions-11"
     ipr="trust200902" obsoletes="" submissionType="IETF" updates=""
     xml:lang="en">
  <front>
    <title abbrev="draft-ietf-bier-isis-extensions">BIER support via
    ISIS</title>

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

      <address>
        <postal>
          <street>510 McCarthy Blvd.</street>

          <city>Milpitas</city>

          <region>CA</region>

          <code>95035</code>

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

        <phone/>

        <facsimile/>

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

        <uri/>
      </address>
    </author>

    <author fullname="Tony Przygienda" initials="A." surname="Przygienda">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>prz@juniper.net</email>

        <uri/>
      </address>
    </author>

    <author fullname="Sam Aldrin" initials="S." surname="Aldrin">
      <organization>Google</organization>

      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>

          <city>Mountain View</city>

          <region>CA</region>

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

        <phone/>

        <facsimile/>

        <email>aldrin.ietf@gmail.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Jeffrey (Zhaohui) Zhang" initials="J." surname="Zhang">
      <organization>Juniper Networks, Inc.</organization>

      <address>
        <postal>
          <street>10 Technology Park Drive</street>

          <city>Westford</city>

          <region>MA</region>

          <code>01886</code>

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

        <phone/>

        <facsimile/>

        <email>zzhang@juniper.net</email>

        <uri/>
      </address>
    </author>

    <date day="30" month="March" year="2018"/>

    <workgroup>Internet Engineering Task Force</workgroup>

    <abstract>
      <t>This document defines ISIS extensions to support multicast forwarding
      using the Bit Index Explicit Replication (BIER) architecture.</t>
    </abstract>

    <note 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 BCP 14
      <xref format="default" pageno="false" target="RFC2119"/> <xref
      target="RFC8174"/> when, and only when, they appear in all capitals, as
      shown here.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction" toc="default">
      <t>Bit Index Explicit Replication (BIER) <xref format="default"
      pageno="false" target="RFC8279"/> defines an architecture where all
      intended multicast receivers are encoded as bitmask in the Multicast
      packet header within different encapsulations such as <xref
      format="default" pageno="false" target="RFC8296"/>. A router that
      receives such a packet will forward the packet based on the Bit Position
      in the packet header towards the receiver(s), following a precomputed
      tree for each of the bits in the packet. Each receiver is represented by
      a unique bit in the bitmask.</t>

      <t>This document presents necessary extensions to the currently deployed
      ISIS for IP <xref format="default" pageno="false" target="RFC1195"/>
      protocol to support distribution of information necessary for operation
      of BIER domains and sub-domains. This document defines a new TLV to be
      advertised by every router participating in BIER signaling.</t>

      <t>This document defines support for MPLS encapsulation as specified in
      <xref target="RFC8296"/>. Support for other encapsulation types is
      outside the scope of this document. The use of multiple encapsulation
      types is outside the scope of this document.</t>
    </section>

    <section title="Terminology" toc="default">
      <t>Some of the terminology specified in <xref format="default"
      pageno="false" target="RFC8279"/> is replicated here and extended by
      necessary definitions:</t>

      <t><list style="hanging">
          <t hangText="BIER:">Bit Index Explicit Replication (The overall
          architecture of forwarding multicast using a Bit Position).</t>

          <t hangText="BIER-OL:">BIER Overlay Signaling. (The method for the
          BFIR to learn about BFER's).</t>

          <t hangText="BFR:">Bit Forwarding Router (A router that participates
          in Bit Index Multipoint Forwarding). A BFR is identified by a unique
          BFR-prefix in a BIER domain.</t>

          <t hangText="BFIR:">Bit Forwarding Ingress Router (The ingress
          border router that inserts the BM into the packet). Each BFIR must
          have a valid BFR-id assigned.</t>

          <t hangText="BFER:">Bit Forwarding Egress Router. A router that
          participates in Bit Index Forwarding as leaf. Each BFER must be a
          BFR. Each BFER must have a valid BFR-id assigned.</t>

          <t hangText="BFT:">Bit Forwarding Tree used to reach all BFERs in a
          domain.</t>

          <t hangText="BIER sub-domain:">A further distinction within a BIER
          domain identified by its unique sub-domain identifier. A BIER
          sub-domain can support multiple BitString Lengths.</t>

          <t hangText="BFR-id:">An optional, unique identifier for a BFR
          within a BIER sub-domain.</t>

          <t hangText="Invalid BFR-id:">Unassigned BFR-id. The special value 0
          is reserved for this purpose.</t>

          <t hangText="BAR">BIER Algorithm. Used to calculate underlay next
          hops.</t>

          <t hangText="IPA">IGP Algorithm. May be used to modify, enhance or
          replace the calculation of underlay paths as defined by the BAR
          value</t>

          <t hangText="SPF">Shortest Path First routing calculation based on
          IGP link metric</t>

          <!--
-->
        </list></t>
    </section>

    <section anchor="IANA" title="IANA Considerations" toc="default">
      <t>This document adds the following new sub-TLV to the registry of
      Sub-TLVs for TLVs 135, 235, 236, and 237.</t>

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

      <t>Name: BIER Info</t>

      <t>This document also introduces a new registry for sub-sub-TLVs for the
      BIER Info sub-TLV added above. The registration policy is Expert Review
      as defined in <xref target="RFC8126"/>. This registry is part of the
      "IS-IS TLV Codepoints" registry. The name of the registry is
      "sub-sub-TLVs for BIER Info sub-TLV". The defined values are:</t>

      <t><figure>
          <artwork><![CDATA[
  Type    Name
  ----    ----
  1       BIER MPLS Encapsulation

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

      <t>IANA is requested to set up a registry called "BIER Algorithm
      Registry" under category "Bit Index Explicit Replication". The
      registration policies <xref target="RFC8126"/> for this registry
      are:</t>

      <t><list style="empty">
          <t>"Standards Action" for values 0-127</t>

          <t>&ldquo;Specification Required&rdquo; for values 128-240</t>

          <t>"Experimental Use" for values 240-254"</t>
        </list></t>

      <t>The initial values in the BIER Algorithm Registry are:</t>

      <t><list style="empty">
          <t>0: No BIER specific algorithm is used</t>

          <t>1-254: Unassigned</t>

          <t>255: Reserved</t>
        </list></t>
    </section>

    <section title="Concepts">
      <section title="BIER Domains and Sub-Domains">
        <t>An ISIS signalled BIER domain is aligned with the scope of
        distribution of BFR-prefixes that identify the BFRs within ISIS. ISIS
        acts in such a case as the supporting BIER underlay.</t>

        <t>Within such a domain, the extensions defined in this document
        advertise BIER information for one or more BIER sub-domains. Each
        sub-domain is uniquely identified by a subdomain-id (SD). Each
        subdomain is associated with a single ISIS topology (MT) <xref
        format="default" pageno="false" target="RFC5120"/>, which may be any
        of the topologies supported by ISIS. Local configuration controls
        which &lt;MT,SD&gt; pairs are supported by a router. The mapping of
        sub-domains to topologies MUST be consistent within the IS-IS flooding
        domain used to advertise BIER information.</t>

        <t>Each BIER sub-domain has as its unique attributes the encapsulation
        used and the type of tree it is using to forward BIER frames
        (currently always SPF). Additionally, per supported bitstring length
        in the sub-domain, each router will advertise the necessary label
        ranges to support it.</t>
      </section>

      <section title="Advertising BIER Information">
        <t>BIER information advertisements are associated with a new sub-TLV
        in the extended reachability TLVs. BIER information is always
        associated with a host prefix which MUST be a node address for the
        advertising node. If this is not the case the advertisement MUST be
        ignored. Therefore the following restrictions apply:</t>

        <t><list style="symbols">
            <t>Prefix length MUST be 32 for an IPv4 prefix or 128 for an IPv6
            prefix</t>

            <t>When the Prefix Attributes Flags sub-TLV <xref format="default"
            pageno="false" target="RFC7794">is present N flag MUST be set and
            R flag MUST NOT be set.</xref></t>
          </list></t>

        <t><list style="symbols">
            <t>BIER sub-TLVs MUST be included when a prefix reachability
            advertisement is leaked between levels.</t>
          </list></t>
      </section>
    </section>

    <section title="Procedures">
      <!--
-->

      <section anchor="MTOPSUB" title="Multi Topology and Sub-Domain">
        <t>A given sub-domain is supported within one and only one topology.
        All routers in the flooding scope of the BIER sub-TLVs MUST advertise
        the same sub-domain within the same multi-topology. A router receiving
        an &lt;MT,SD&gt; advertisement which does not match the locally
        configured pair MUST report a misconfiguration of the received
        &lt;MT,SD&gt; pair. All received BIER advertisements associated with
        the conflicting &lt;MT,SD&gt; pair MUST be ignored. Note that in the
        presence of such a misconfiguration this will lead to partitioning of
        the sub-domian.</t>

        <t>Example:</t>

        <t>The following combination of advertisements are valid: &lt;0,0&gt;
        &lt;0,1&gt; &lt;2,2&gt;.</t>

        <t>The following combination of advertisements are invalid:
        &lt;0,0&gt; &lt;0,1&gt; &lt;2,0&gt;. Advertisements associated with
        &lt;0,0&gt; and &lt;2,0&gt; must be ignored.</t>
      </section>

      <!--
-->

      <section title="BFR-id Advertisements">
        <t>If a BFER/BFIR is configured with a BFR-id then it advertises this
        value in its BIER advertisements. If no BFR-id is configured then the
        value "Invalid BFR-id" is advertised. A valid BFR-id MUST be unique
        within the flooding scope of the BIER advertisements. All BFERs/BFIRs
        MUST detect advertisement of duplicate valid BFR-IDs for a given
        &lt;MT, SD&gt;. When such duplication is detected all of the routers
        advertising duplicates MUST be treated as if they did not advertise a
        valid BFR-id. This implies they cannot act as BFER or BFIR in that
        &lt;MT,SD&gt;.</t>
      </section>

      <section title="Logging Misconfiguration">
        <t>Whenever an advertisement is received which violates any of the
        constraints defined in this document the receiving router MUST support
        logging this occurrence. Logging SHOULD be dampened to avoid excessive
        output.</t>
      </section>

      <section title="Flooding Reduction">
        <t>It is expected that changes in BIER domain information which is
        advertised by IS-IS occur infrequently. If this expectation is not met
        for an extended period of time (more than a few seconds of burstiness)
        changes will increase the number of Link State PDU (LSP) updates and
        negatively impact performance in the network. Implementations SHOULD
        protect against this possibility e.g., by dampening updates if they
        occur over an extended period of time.</t>
      </section>

      <!--
-->
    </section>

    <!--
-->

    <section title="Packet Formats" toc="default">
      <t>All ISIS BIER information is carried within the TLVs 235, 237 <xref
      format="default" pageno="false" target="RFC5120"/> or TLVs 135 <xref
      format="default" pageno="false" target="RFC5305"/>, <xref
      format="default" pageno="false" target="RFC5308">or TLV 236</xref>.</t>

      <section anchor="S2L" title="BIER Info sub-TLV">
        <t>This sub-TLV carries the information for the BIER sub-domains that
        the router participates in as BFR. This sub-TLV MAY appear multiple
        times in a given prefix-reachability TLV - once for each sub-domain
        supported in the associated topology.</t>

        <t>The sub-TLV advertises a single &lt;MT,SD&gt; combination followed
        by optional sub-sub-TLVs as described in the following sections.</t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve"><![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      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |   BAR         |    IPA        | subdomain-id  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     BFR-id                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  sub-sub-TLVs (variable)                                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+										

]]></artwork>
        </figure>

        <t><list style="hanging">
            <t hangText="Type:">as indicated in IANA section.</t>

            <t hangText="Length:">variable</t>

            <!---->

            <!---->

            <t hangText="BAR">BIER Algorithm. Specifies a BIER specific
            algorithm used to calculate underlay paths to reach BFERs. Values
            are allocated from the BIER Algorithm Registry. 1 octet</t>

            <t hangText="IPA">IGP algorithm. Specifies an IGP Algorithm to
            either modify, enhance or replace the calculation of underlay
            paths to reach BFERs as defined by the BAR value. Values are from
            the IGP Algorithm registry. 1 octet</t>

            <t hangText="subdomain-id:">Unique value identifying the BIER
            sub-domain. 1 octet</t>

            <t hangText="BFR-id:">A 2 octet field encoding the BFR-id, as
            documented in <xref format="default" pageno="false"
            target="RFC8279"/>. If no BFR-id has been assigned the value of
            this field is set to "Invalid BFR-id", which is defined as illegal
            in <xref target="RFC8279"/> .</t>
          </list>The use of non-zero values in either the BAR field or the IPA
        field is outside the scope of this document. If an implementation does
        not support the use of non-zero values in these fields, but receives a
        BIER Info sub-TLV containing non-zero values in these fields, it
        SHOULD treat the advertising router as incapable of supporting BIER
        (one way of handling incapable routers is documented in section 6.9 of
        <xref target="RFC8279"/> and additional methods may be defined in the
        future).</t>
      </section>

      <section anchor="MS2L" title="BIER MPLS Encapsulation sub-sub-TLV">
        <t>This sub-sub-TLV carries the information for the BIER MPLS
        encapsulation including the label range for a specific bitstring
        length for a certain &lt;MT<!--,S-->,SD&gt;. It is advertised within
        the BIER Info sub-TLV (<xref target="S2L"> </xref>) . This sub-sub-TLV
        MAY appear multiple times within a single BIER info sub-TLV.</t>

        <t>If the same Bitstring length is repeated in multiple sub-sub-TLVs
        inside the same BIER Info Sub-TLV, the BIER Info sub-TLV MUST be
        ignored.</t>

        <t>Label ranges within all BIER MPLS Encapsulation sub-sub-TLVs across
        all BIER Info sub-TLVs advertised by the same BFR MUST NOT overlap. If
        overlap is detected, the advertising router MUST be treated as if it
        did not advertise any BIER sub-TLVs.</t>

        <t>Label values MUST NOT match any of the reserved values defined in
        <xref target="RFC3032"/></t>

        <figure align="left" alt="" height="" suppress-title="false" title=""
                width="">
          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve"><![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 SI      |BS Len |                    Label              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      
]]></artwork>
        </figure>

        <t><list style="hanging">
            <t hangText="Type:">value of 1 indicating MPLS encapsulation.</t>

            <t hangText="Length:">4</t>

            <t hangText="Max SI">Maximum Set Identifier (section 1 of
            [RFC8279]) used in the encapsulation for this BIER sub-domain for
            this bitstring length, 1 octet. Each SI maps to a single label in
            the label range. The first label is for SI=0, the second label is
            for SI=1, etc. If the label associated with the Maximum Set
            Identifier exceeds the 20 bit range the sub-sub-TLV MUST be
            ignored.</t>

            <t hangText="Local BitString Length (BS Len):">Encoded bitstring
            length as per <xref format="default" pageno="false"
            target="RFC8296"/>. 4 bits.</t>

            <t hangText="Label:">First label of the range, 20 bits. The labels
            are as defined in <xref format="default" pageno="false"
            target="RFC8296"/>.</t>
          </list></t>
      </section>
    </section>

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

      <t>The Security Considerations section of <xref target="RFC8279"/>
      discusses the possibility of performing a Denial of Service (DoS) attack
      by setting too many bits in the BitString of a BIER-encapsulated packet.
      However, this sort of DoS attack cannot be initiated by modifying the
      ISIS BIER advertisements specified in this document. A BFIR decides
      which systems are to receive a BIER-encapsulated packet. In making this
      decision, it is not influenced by the ISIS control messages. When
      creating the encapsulation, the BFIR sets one bit in the encapsulation
      for each destination system. The information in the ISIS BIER
      advertisements is used to construct the forwarding tables that map each
      bit in the encapsulation into a set of next hops for the host that is
      identified by that bit, but is not used by the BFIR to decide which bits
      to set. Hence an attack on the ISIS control plane cannot be used to
      cause this sort of DoS attack.</t>

      <t>While a BIER-encapsulated packet is traversing the network, a BFR
      that receives a BIER-encapsulated packet with n bits set in its
      BitString may have to replicate the packet and forward multiple copies.
      However, a given bit will only be set in one copy of the packet. That
      means that each transmitted replica of a received packet has fewer bits
      set (i.e., is targeted to fewer destinations) than the received packet.
      This is an essential property of the BIER forwarding process as defined
      in <xref target="RFC8279"/>. While a failure of this process might cause
      a DoS attack (as discussed in the Security Considerations of <xref
      target="RFC8279"/>), such a failure cannot be caused by an attack on the
      ISIS control plane.</t>

      <t>Further discussion of BIER specific security considerations can be
      found in <xref target="RFC8279"/>.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements" toc="default">
      <t>The RFC is aligned with the <xref format="default" pageno="false"
      target="I-D.ietf-bier-ospf-bier-extensions"/> draft as far as the
      protocol mechanisms overlap.</t>

      <t>Many thanks for comments from (in no particular order) Hannes
      Gredler, Ijsbrand Wijnands, Peter Psenak and Chris Bowers.</t>

      <t>Special thanks to Eric Rosen.</t>
    </section>
  </middle>

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

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

      <?rfc include="reference.RFC.3032"?>

      <?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.7794"?>

      <?rfc include="reference.RFC.8279"?>

      <?rfc include="reference.RFC.8296"?>

      <?rfc include="reference.RFC.8174"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.8126"?>

      <?rfc include="reference.I-D.ietf-bier-ospf-bier-extensions.xml"?>
    </references>
  </back>
</rfc>
