<?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-ietf-bier-idr-extensions-07"
     ipr="trust200902">
  <front>
    <title abbrev="BGP Extensions for BIER">BGP Extensions for BIER</title>

    <author fullname="Xiaohu Xu" initials="X.X." role="editor" surname="Xu">
      <organization>Alibaba Inc.</organization>

      <address>
        <email>xiaohu.xxh@alibaba-inc.com</email>
      </address>
    </author>

    <author fullname="Mach Chen" initials="M.C." surname="Chen">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>mach.chen@huawei.com</email>

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

    <author fullname="Keyur Patel" initials="K.P." surname="Patel">
      <organization>Arrcus, Inc.</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>keyur@arrcus.com</email>

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

    <author fullname="IJsbrand Wijnands" initials="I.W." surname="Wijnands">
      <organization>Cisco</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

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

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

    <author fullname="Antoni Przygienda" initials="A.P." surname="Przygienda">
      <organization>Juniper</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

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

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

    <date day="6" month="September" year="2019"/>

    <abstract>
      <t>Bit Index Explicit Replication (BIER) is a new multicast forwarding
      architecture which doesn't require an explicit tree-building protocol
      and doesn't require intermediate routers to maintain any multicast
      state. BIER is applicable in a multi-tenant data center network
      environment for efficient delivery of Broadcast, Unknown-unicast and
      Multicast (BUM) traffic while eliminating the need for maintaining a
      huge amount of multicast state in the underlay. This document describes
      BGP extensions for advertising the BIER-specific information. These
      extensions are applicable in those multi-tenant data centers where BGP
      instead of IGP is deployed as an underlay for network reachability
      advertisement. These extensions may also be applicable in other
      scenarios.</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 <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>Bit Index Explicit Replication (BIER) [RFC8279] is a new multicast
      forwarding architecture which doesn't require an explicit tree-building
      protocol and doesn't require intermediate routers to maintain any
      multicast state. BIER is applicable in a multi-tenant data center
      network environment for efficient delivery of Broadcast, Unknown-unicast
      and Multicast (BUM) traffic while eliminating the need for maintaining a
      huge amount of multicast state in the underlay. This document describes
      BGP extensions for advertising the BIER-specific information. More
      specifically, in this document, we define a new optional, non-
      transitive BGP attribute, referred to as the BIER attribute, to convey
      the BIER-specific information such as BFR-ID, BitString Length (BSL) and
      so on. In addition, this document specifies procedures to prevent the
      BIER attribute from "leaking out" of a BIER domain.</t>

      <t>These extensions are applicable in those multi-tenant data centers
      where BGP instead of IGP is used as an underlay [RFC7938]. These
      extensions may also be applicable to other BGP based network
      scenarios.</t>
    </section>

    <section anchor="Abbreviations_Terminology" title="Terminology">
      <t>This memo makes use of the terms defined in [RFC4271] and
      [RFC8279].</t>
    </section>

    <section title="BIER Path Attribute">
      <t>This draft defines a new optional, transitive BGP path attribute,
      referred to as the BIER attribute. This attribute can be attached to a
      BGP UPDATE message by the originator so as to indicate the BIER-
      specific information of a particular BFR which is identified by the /32
      or /128 address prefix contained in the NLRI. In other words, if the
      BIER path attribute is present, the NLRI is treated by BIER as a
      "BFR-prefix". When creating a BIER attribute, a BFR needs to include one
      BIER TLV for every &lt;Sub-domain, BFR-ID&gt; pair that it supports. The
      attribute type code for the BIER Attribute is TBD. The value field of
      the BIER Attribute contains one or more BIER TLV as shown in Figure
      1.</t>

      <t><figure>
          <artwork align="center"><![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=TBD            |            Length             |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  Sub-domain   |            BFR-ID             |   Reserved    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       ~                                                               ~
       |                           Sub-TLVs                            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+..........................
                             Figure 1:BIER TLV          
]]></artwork>
        </figure><list>
          <t>Type: Two octets encoding the BIER TLV Type: TBD.</t>

          <t>Length: Two octets encoding the length in octets of the TLV,
          including the type and length fields. The length is encoded as an
          unsigned binary integer. (Note that the minimum length is 8,
          indicating that no sub-TLV is present.)</t>

          <t>Sub-domain: a one-octet field encoding the sub-domain ID
          corresponding to the BFR-ID.</t>

          <t>BFR-ID: a two-octet field encoding the BFR-ID.</t>

          <t>Sub-TLVs: contains one or more sub-TLV. The BIER MPLS
          Encapsulation sub-TLV is one of such sub-TLVs.</t>
        </list></t>

      <t>The BIER MPLS Encapsulation sub-TLV is encoded as follows:</t>

      <t><figure>
          <artwork align="center"><![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=TBD            |         Length=12             |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                Label Range Base               |Lbl Range Size |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |      BSL      |                    Reserved                   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   Figure 2:BIER MPLS Encapsulation sub-TLV
]]></artwork>
        </figure><list>
          <t>Type:TBD</t>

          <t>Length:12</t>

          <t>Label Range Size: a one-octet field indicating the size of the
          label range.</t>

          <t>Label Range Base: a 3-octet field where the 20 rightmost bits
          represent the first label in the label range while the other bits
          MUST be set to 0 when transmitting, and MUST be ignored upon
          receipt.</t>

          <t>BSL: a one-octet field indicating the length of the Bitstring in
          4-octets. The field MUST be filled with one of the valid BSL values
          as specified in [RFC8279]. Upon receiving a BSL-TLV containing an
          invalid BSL value, it MUST be ignored.</t>
        </list></t>
    </section>

    <section title="Originating BIER Attribute">
      <t>An implementation that supports the BIER attribute MUST support a
      policy to enable or disable the creation of the BIER attribute and its
      attachment to specific BGP routes. An implementation MAY disable the
      creation of the BIER attribute unless explicitly configured to do so
      otherwise. A BGP speaker MUST only attach the locally created BIER
      attribute to a BGP UPDATE message in which at least one of its
      BFR-prefixes is contained in the NLRI</t>
    </section>

    <section title="Restrictions on Sending/Receiving">
      <t>An implementation that supports the BIER attribute MUST support a
      per-EBGP-session policy, that indicates whether the attribute is enabled
      or disabled for use on that session. The BIER attribute MUST NOT be sent
      on any EBGP peers for which the session policy is not configured. If an
      BIER attribute is received on a BGP session for which session policy is
      not configured, then the received attribute MUST be treated exactly as
      if it were an unrecognised non-transitive attribute. That is, "it MUST
      be quietly ignored and not passed along to other BGP peers".</t>

      <t>To prevent the BIER attribute from "leaking out" of an BIER domain,
      each BGP router on the BIER domain MUST support an outbound route
      announcement policy. Such a policy MUST be disabled on each EBGP session
      by default unless explicitly configured.</t>
    </section>

    <section title="Deployment Considerations ">
      <t>It's assumed by this document that the BIER domain is aligned with
      the Administrative Domain (AD) which are composed of multiple ASes
      (either private or public ASes). Use of the BIER attribute in other
      scenarios is outside the scope of this document.</t>

      <t>Since the BIER attribute is an optional, transitive BGP path
      attribute, a non-BFR BGP speakers could still advertise the received
      route with a BIER attribute. This is desirable in the incremental
      deployment scenario where a BGP speaker could tunnel a BIER packet or
      the payload of a BIER packet to a BFER directly if the BGP next-hop of
      the route for that BFER is a non-BFR. Furthermore, a BGP speaker is
      allowed to tunnel a BIER packet to the BGP next-hop if these two
      BFR-capable BGP neighbors are not directly connected (e.g., multi-hop
      EBGP).</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Thanks a lot for Eric Rosen and Peter Psenak for their valuable
      comments on this document.</t>

      <!---->
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is requested to assign a codepoint in the "BGP Path Attributes"
      registry to the BIER attribute. IANA shall create a registry for "BGP
      BIER Attribute Types". The type field consists of two octets, with
      possible values from 1 to 655355 (The value 0 is "reserved".) The
      allocation policy for this field is to be "First Come First Serve". Type
      codes should be allocated for BIER TLV and BIER MPLS Encapsulation
      sub-TLV respectively.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This document introduces no new security considerations beyond those
      already specified in [RFC4271].</t>

      <!---->
    </section>
  </middle>

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

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

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

      <?rfc include='reference.RFC.7938'?>
    </references>
  </back>
</rfc>
