<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
  <!ENTITY RFC2119 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
  <!ENTITY RFC8174 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
  <!ENTITY RFC8200 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
  <!ENTITY RFC4364 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4364.xml">
  <!ENTITY RFC6514 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6514.xml">
  <!ENTITY RFC7368 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7368.xml">
  <!ENTITY RFC7432 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7432.xml">
  <!ENTITY RFC8279 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8279.xml">
  <!ENTITY RFC8296 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8296.xml">
  <!ENTITY RFC8401 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8401.xml">
  <!ENTITY RFC6437 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6437.xml">
  <!ENTITY I-D.zhang-bier-babel-extensions PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.zhang-bier-babel-extensions.xml'>
  <!ENTITY I-D.ietf-bier-idr-extensions PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-idr-extensions.xml'>
  <!ENTITY I-D.ietf-bier-bar-ipa PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-bar-ipa.xml'>
  <!ENTITY I-D.ietf-bier-non-mpls-bift-encoding PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-non-mpls-bift-encoding.xml'>
  <!ENTITY I-D.ietf-bier-prefix-redistribute PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-prefix-redistribute.xml'>
  <!ENTITY I-D.ietf-bier-ospfv3-extensions PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-ospfv3-extensions.xml'>
  <!ENTITY I-D.ietf-bier-ping PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-ping.xml'>
  <!ENTITY I-D.ietf-bier-bfd PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-bfd.xml'>
  <!ENTITY I-D.ietf-bier-pmmm-oam PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-pmmm-oam.xml'>
  <!ENTITY I-D.ietf-bier-path-mtu-discovery PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bier-path-mtu-discovery.xml'>
  <!ENTITY I-D.xzlnp-bier-ioam PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.xzlnp-bier-ioam.xml'>
  ]>
  <?rfc toc="yes"?>
  <?rfc tocompact="yes"?>
  <?rfc tocdepth="3"?>
  <?rfc tocindent="yes"?>
  <?rfc symrefs="yes"?>
  <?rfc sortrefs="yes"?>
  <?rfc strict="no"?>
  <?rfc rfcedstyle="yes"?>
  <?rfc comments="yes"?>
  <?rfc inline="yes"?>
  <?rfc compact="yes"?>
  <?rfc subcompact="no"?>
<rfc category="std" docName="draft-zhang-bier-bierin6-09" ipr="trust200902">
<front>
  <title abbrev="BIERin6">Supporting BIER in IPv6 Networks (BIERin6)</title>

    <author fullname="Zheng(Sandy) Zhang" initials="Z." surname="Zhang">
      <organization>ZTE Corporation</organization>
      <address>
        <email>zhang.zheng@zte.com.cn</email>
      </address>
    </author>

    <author fullname="Zhaohui Zhang" initials="Z." surname="Zhang"
			role="editor">
      <organization>Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>

    <author fullname="IJsbrand Wijnands" initials="I." surname="Wijnands">
      <organization>Individual</organization>
      <address>
        <email>ice@braindump.be</email>
      </address>
    </author>

    <author fullname="Mankamana Mishra" initials="M." surname="Mishra">
      <organization>Cisco Systems</organization>
      <address>
        <email>mankamis@cisco.com</email>
      </address>
    </author>

    <author fullname="Hooman Bidgoli" initials="H." surname="Bidgoli">
      <organization>Nokia</organization>
      <address>
        <email>hooman.bidgoli@nokia.com</email>
      </address>
    </author>

    <author fullname="Gyan Mishra" initials="G." surname="Mishra"
			role="editor">
      <organization>Verizon</organization>
      <address>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>

    <date year="2021"/>

    <workgroup>BIER</workgroup>

    <abstract>
      <t>BIER is a new architecture for the forwarding of
      multicast data packets without requiring per-flow
	  state inside the network. This document describes
	  how the existing BIER encapsulation specified in
	  RFC 8296 works in an IPv6 non-MPLS network, referred
	  to as BIERin6. Specifically,
	  like in an IPv4 network, BIER can work over L2 links directly
	  or over tunnels. In case of IPv6 tunneling, a new
	  IP "Next Header" type is to be assigned for BIER.
      </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 target="RFC2119"/> <xref
          target="RFC8174"/> when, and only when, they appear in all
          capitals, as shown here.
    </t>
    </note>
</front>

<middle>
  <section title="Introduction">
    <t>BIER
        <xref target="RFC8279"></xref>
        is a new architecture for the
        forwarding of multicast data packets. It provides optimal
        forwarding through a "multicast domain" and it does not
        precondition construction of a multicast
        distribution tree, nor does it require intermediate nodes
        to maintain any per-flow state.
    </t>
    <t>
        This document specifies non-MPLS BIER forwarding in an IPv6
        <xref target="RFC8200"></xref> environment, referred to
        as BIERin6, using non-MPLS BIER encapsulation specified in
        <xref target="RFC8296"></xref>.
    </t>
    <t> MPLS BIER forwarding in IPv6 is outside the scope of this
        document.
    </t>
    <t> This document uses terminology defined in
        <xref target="RFC8279"></xref> and
        <xref target="RFC8296"></xref>.
    </t>
	<section title="BIER over L2/Tunnels">
    <t>
        <xref target="RFC8296"></xref> defines the BIER
        encapsulation format in MPLS and non-MPLS environment.
        In case of non-MPLS environment, a BIER packet is the payload
        of an "outer" encapsulation, which has a "next header"
        codepoint that is set to a value that means "non-MPLS BIER".
      This "BIER over L2/Tunnel" model can be used as is in an
	  IPv6 non-mpls environment, and is referred to as BIERin6.
    </t>
    <t>
        If a BFR needs to tunnel BIER packets to another BFR,
        e.g. per <xref target="RFC8279"/> Section 6.9,
		while any type of tunnel will work, for best efficiency
		native IPv6 encapsulation can be used with the destination
		address being the downstream BFR and the Next Header field set to
        a to-be-assigned value for "non-MPLS BIER".
      <figure  align="center">
        <artwork align="center"><![CDATA[
                   +---------------+------------------------
                   |  IPv6 header  | BIER header + data
                   |               |
                   | Next Header = |
                   |    BIER       |
                   +---------------+------------------------
             ]]></artwork>
          <postamble></postamble>
      </figure>
    </t>
    <t>
        Between two directly connected BFRs, a BIER header can
        directly follow link layer header, e.g.,
        an Ethernet header (with the Ethertype set to 0xAB37). 
        Optionally, IPv6 encapsulation can be used even between
		directly connected BFRs (i.e. one-hop IPv6 tunneling)
        in the following two cases:
      <list style="symbols">
        <t>An operator mandates all traffic to be carried in IPv6.
        </t>
        <t>A BFR does not have BIER support in its "fast forwarding path" and
           relies on "slow/software forwarding path", e.g. in environments like
           <xref target="RFC7368"/>
           where high
           throughput multicast forwarding performance is not critical.
        </t>
      </list>
    </t>
	</section>
	<section title="Considerations of Requirements for BIER in IPv6 Networks">
	  <t>[draft-ietf-bier-ipv6-requirements] lists mandatory and optional
	  requirements for BIER in IPv6 Networks. As a solution based
	  on the BIER over L2/tunnel model [RFC8296], BIERin6 satisfies all
	  the mandatory requirements.
	  </t>
	  <t>For the two optional requirements for fragmentation and Encapsulating
	  Security Payload (ESP), they can be satisfied by one of two ways:
        <list style="symbols">
          <t>IPv6 based fragmentation/ESP: a BFIR encapsulates the payload
		  in IPv6 with fragmentation and/or ESP header, and then the IPv6
		  packets are treated as BIER payload.
		  </t>
          <t>Generic Fragmentation/ESP
		  <xref target="I-D.zzhang-tsvwg-generic-transport-functions"/>:
		  a BFIR does generic fragmentation and/or ESP (without using IPv6
		  encapsulation) and the resulting packets are treated as BIER payload.
		  </t>
        </list>
	  </t>
	  <t>Either way, the fragmentation/ESP is handled by a layer outside
	  of BIER and then the resulting packets are treated as BIER payload.
	  </t>
	  <t>BIERin6 does support SRv6 based overlay services (e.g. MVPN/EVPN).
	  One of the following methods can be used (relevant overlay signaling
	  will be specified separately):
      <list style="symbols">
		<t>
	  An ingress PE (which is a BFIR)
	  can encapsulate customer packets with an IPv6 header (with optional
	  fragmentation and ESP extension headers). The destination address
	  is a multicast locator plus the Fucn/Arg portion that identifies the
	  service. That IPv6 packet is then treated as BIER payload. An egress PE
	  (which is a BFER) uses the standard SRv6 procedures to forward the IPv6
	  packet that is exposed after the BIER header is decapsulated.
		</t>
		<t>
	  Alternatively, since only the destination IPv6 address in the
	  above-mentioned IPv6 header is used for service delimiting purpose,
	  a new value can be assigned for the Proto field in the BIER header to
	  indicate that an IPv6 address (instead of an entire IPv6 header)
	  is added between the BIER header and original payload.
		</t>
        </list>
	  </t>
	  <t>BIERin6 being a solution based on [RFC8279] [RFC8296],
	  ECMP is inherently supported by BFRs using the the 20-bit entropy field
	  in the BIER header for the load balancing hash.  When a BIER packet
	  is transported over an IPv6 tunnel, the entropy value is copied into
	  the 20-bit IPv6 Flow Label (instead of using local 5-tuple input key to
	  a hash function to locally generate the stateless 20-bit flow label)
	  so that routers along the tunnel can do ECMP based on Flow Labels.
	  For a router along the tunnel doing deep packet inspection for ECMP
	  purpose, if it understands BIER header it can go past the BIER header
	  to look for the 5-tuple input key to a hash function,
	  otherwise it stops at the BIER header. 
	  In either case the router will not mistake the BIER header as an IP header so
	  no misordering should happen.
	  </t>
	<t>BIER has its own OAM functions independent of those related to the
	underlying links or tunnels. With BIERin6 following the "BIER over
    L2/tunnel" model, 
    IPv6 OAM function and BIER OAM functions are used independently
	for their own purposes.
	</t>
	<t>
      Specifically, BIERin6 works with all of the following OAM methods,
	  or any future methods that are based on the "BIER over L2/tunnel" model:
  <list style="symbols">
    <t>BIER OAM specified in <xref target="I-D.ietf-bier-ping"/>
	</t>
    <t>BIER BFD specified in <xref target="I-D.ietf-bier-bfd"/>
    </t>
    <t>BIER Performance Measurement specified in <xref target="I-D.ietf-bier-pmmm-oam"/>
    </t>
    <t>BIER Path Maximum Transmission Unit Discovery specified in <xref target="I-D.ietf-bier-path-mtu-discovery"/>
    </t>
    <t>BIER IOAM specified in <xref target="I-D.xzlnp-bier-ioam"/>
    </t>
  </list>
  </t>
  </section>
  
  </section>

  <section title="IPv6 Header">

    <t> Whenever IPv6 encapsulation is used for BIER forwarding,
        The Next Header field in the IPv6 Header (if there are no
        extension headers), or the Next Header field in the last
        extension header is set to TBD, indicating that the payload
        is a BIER packet.
    </t>
    <t>
        If the neighbor is directly connected,
        The destination address in IPv6 header SHOULD be the neighbor's
        link-local address on this router's outgoing interface,
        the source destination address SHOULD be this router's
        link-local address on the outgoing interface,
        and the IPv6 TTL MUST be
        set to 1. Otherwise, the destination address SHOULD
        be the BIER prefix of the BFR neighbor, the source address
        SHOULD be this router's BIER prefix, and the TTL MUST be
        large enough to get the packet to the BFR neighbor.
    </t>
    <t>
        The "Flow label" field in the IPv6 packet SHOULD be copied from the entropy field in
        the BIER encapsulation.
    </t>

    <section title="IPv6 Options Considerations">
      <!-- Hooman -->
      <t>For directly connected BIER routers, IPv6 Hop-by-Hop or Destination 
         options are irrelevant and SHOULD NOT be inserted by BFIR on the 
         BIERin6 packet. In this case IPv6 header, Next Header field should 
         be set to TBD. Any IPv6 packet arriving on BFRs and BFERs, with 
         multiple extension header where the last extension header has a Next 
         Header field set to TBD, SHOULD be discard and the node should 
         transmit an ICMP Parameter Problem message to the source of the 
         packet (BFIR) with an ICMP code value of TBD10 ('invalid options for 
         BIERin6').
      </t>
      <t>This also indicates that for disjoint BIER routers using IPv6
         encapsulation, there SHOULD NOT be any IPv6 Hop-by-Hop or Destination
         options be present in a BIERin6 packet.  In this case, if additional
         traffic engineering is required, IPv6 tunneling (i.e.  BIERin6 over
         SRv6) can be implemented.
      </t>
      <t>      
                 
      </t>
    </section>
  </section>

  <section title="BIER Header">
    <t>The BIER header MUST be encoded per Section 2.2 of <xref target="RFC8296"/>.
    </t>
    <t>The BIFT-id is either encoded per 
        <xref target="I-D.ietf-bier-non-mpls-bift-encoding"/>
        or per advertised by BFRs, as specified in
        <xref target="I-D.ietf-bier-lsr-ethernet-extensions"/>.
    </t>

    <!-- optional IPv6 header with BIER inside ASCII example -->

  </section>

  <section title="IPv6 Encapsulation Advertisement">
    <!-- Sandy -->
    <t>When IPv6 encapsulation is not required between directly
       connected BFRs, no signaling in addition to that specified in
       <xref target="I-D.ietf-bier-lsr-ethernet-extensions"/>
       is needed.
    </t>
    <t>Otherwise, a node that requires IPv6 encapsulation
       MUST advertise the BIER IPv6 transportation 
       sub-sub-sub-TLV/sub-sub-TLV according to local configuration or policy 
       in the BIER domain to request other BFRs to always use
       IPv6 encapsulation.
    </t>
    <t>In presence of multiple encapsulation possibilities hop-by-hop it is a
        matter of local policy which encapsulation is imposed and the receiving
        router MUST accept all encapsulations that it advertised.
    </t>

    <section title="Format">
      <t>The BIER IPv6 transportation is a new sub-sub-TLV of BIER Ethernet Encapsulation sub-TLV defined in OSPFv3, 
         and a new sub-sub-sub-TLV of BIER Ethernet Encapsulation sub-sub-TLV defined in ISIS, 
         as per <xref target="I-D.ietf-bier-lsr-ethernet-extensions"/>.
      </t>

      <figure  align="center">
          <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       |   Length      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           ]]></artwork>
        <postamble></postamble>
      </figure>

      <t>
        <list style="symbols">
          <t>Type: For OSPF, value TBD1 (prefer 1) is used to indicate
              it is the IPv6 transportation sub-TLV. For ISIS, value TBD2
              (prefer 1) is used to indicate it is the IPv6 transportation
              sub-sub-TLV.</t>
          <t>Length: 0.</t>
        </list>
      </t>
    </section>

    <section title="Inter-area prefix redistribution">
    <t>When BFR-prefixes are advertised across IGP areas per
        <xref target="I-D.ietf-bier-lsr-ethernet-extensions"/>
        or redistributed across protocol boundaries per
        <xref target="I-D.ietf-bier-prefix-redistribute"/>,
        the BIER IPv6 transportation sub-sub-TLV or sub-sub-sub-TLV
        MAY be re-advertised/re-distributed as well.
    </t>
    </section>
  </section>

  <section title="IANA Considerations">
    <t>
        IANA is requested to assign a new "BIER" type for "Next Header"
        in the "Assigned Internet Protocol Numbers" registry.
    </t>
    <t>
        IANA is requested to assign a new "BIERin6" type for "invalid
        options" in the "ICMP code value" registry.
    </t>
    <t>
        IANA is requested to assign a new "IPv6 address" type 
        in the "BIER Next Protocol Identifiers" registry.
    </t>
    <t>
        IANA is requested to assign a new
        "BIER IPv6 transportation Sub-sub-TLV" type in the 
        "OSPFv3 BIER Ethernet Encapsulation sub-TLV" Registry.
    </t>
    <t>
        IANA is requested to set up a new 
        "BIER IPv6 transportation Sub-sub-sub-TLV" type in the 
        "IS-IS BIER Ethernet Encapsulation sub-sub-TLV" Registry.
    </t>
    </section>

  <section title="Security Considerations">
      <t>
          General IPv6 and BIER security considerations apply.
      </t>
  </section>
	
  <section title="Acknowledgement"> 
  <t>
      The authors would like to thank Tony Przygienda, Nagendra Kumar for their review and valuable comments.
  </t>
  </section>
</middle>

<back>
    <references title="Normative References">
        &RFC2119;
        &RFC8174;
        &RFC8200;
        &RFC8401;
        &RFC8279;
        &RFC8296;
        &RFC6437;        
    </references>

    <references title="Informative References">
        &RFC7368;
        <?rfc include="reference.I-D.zzhang-tsvwg-generic-transport-functions"?>
        <?rfc include="reference.I-D.ietf-bier-ipv6-requirements"?>
        <?rfc include="reference.I-D.zhang-bier-babel-extensions"?>
        <?rfc include="reference.I-D.ietf-bier-lsr-ethernet-extensions"?>
        <?rfc include="reference.I-D.ietf-bier-ospfv3-extensions"?>
        <?rfc include="reference.I-D.ietf-bier-idr-extensions"?>
        <?rfc include="reference.I-D.ietf-bier-bar-ipa"?>
        <?rfc include="reference.I-D.ietf-bier-non-mpls-bift-encoding"?>
        <?rfc include="reference.I-D.ietf-bier-prefix-redistribute"?>
        <?rfc include="reference.I-D.ietf-bier-ping"?>
        <?rfc include="reference.I-D.ietf-bier-bfd"?>
        <?rfc include="reference.I-D.ietf-bier-pmmm-oam"?>
        <?rfc include="reference.I-D.ietf-bier-path-mtu-discovery"?>
        <?rfc include="reference.I-D.xzlnp-bier-ioam"?>
    </references>
</back>
</rfc>

