<?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 RFC9252 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9252.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-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-ietf-bier-bierin6-13" 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">
      <organization>Verizon</organization>
      <address>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>

    <workgroup>BIER</workgroup>

    <abstract>
      <t>BIER is a multicast forwarding architecture
	  that does not require per-flow state inside the network
	  yet still provides optimal replication.
	  This document describes how the existing BIER encapsulation specified in
	  RFC 8296 works in a non-MPLS IPv6 network, which is 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 multicast forwarding architecture
	  that does not require per-flow state inside the network
	  yet still provides optimal replication.
    </t>
    <t> BIER forwarding with MPLS is IPv4/IPv6 agnostic.
        This document describes how BIER works in a non-MPLS IPv6
        <xref target="RFC8200"></xref> environment using non-MPLS BIER
		encapsulation <xref target="RFC8296"></xref>,
		with optional procedures specified for IPv6 specific features.
    </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 for MPLS and non-MPLS data planes.
        With a non-MPLS data plane, a BIER packet is the payload
        of an "outer" encapsulation, which could be a L2 link
		or a tunnel. The outer encapsulation has a "next header"
        field that is set to a value for "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, native IPv6 encapsulation
		(SRv6 or not) is a natural choice.
      <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 IPv6 Home Networking
		<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><xref target="I-D.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-intarea-generic-delivery-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>BIERin6 can support SRv6 based overlay services (e.g. MVPN/EVPN)
	  with one of the following methods:
      <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). Any SRv6-based scheme can
	  by used for service delimiting.
		</t>
		<t>
	  Alternatively, since only the IPv6 address in the above-mentioned
	  outer 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 SRv6 Service SID <xref target="RFC9252"/>
	  (instead of an entire IPv6 header) is added between the BIER header
	  and original payload. For example, an End.DT2/4/6
	  service SID could be used to route the original payload in a
	  corresponding VRF.
		</t>
        </list>
	  </t>
	  <t>The details of fagmentation/ESP support and service delimitation
	  are all outside the scope of this document.
	  </t>
	  <t>BIERin6 being a solution based on [RFC8279] and [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 <xref target="RFC6437"/>,
	  so that routers along the tunnel can do ECMP
	  based on Flow Labels (instead of hashing based on 5-tuple of an IP
	  packet).
	  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> If IPv6 encapsulation is used to tunnel BIER packets
	(whether to a direct or indirect BIER neighbor),
        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 IPv6 encapsulation is used even between directly connected neighbors,
        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
        TTL MUST be set to 1.
	  </t>
	  <t>
		If the neighbor is not directly connected, 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>

    <!-- Hooman -->
    <!--section title="IPv6 Options Considerations">
      <t>For directly connected BIER neighbors, IPv6 Hop-by-Hop or Destination 
         options are irrelevant and SHOULD NOT be inserted.
		 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-non-mpls-extensions"/>.
    </t>
  </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-non-mpls-extensions"/>
       is needed.
    </t>
    <t>Otherwise, a node that requires IPv6 encapsulation
       MUST advertise the BIER IPv6 encapsulation 
       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 bop-by-hop encapsulation possibilities, it is a
        matter of local policy which encapsulation is imposed and the receiving
        router MUST accept all encapsulations that it advertises.
    </t-->

    <section title="Format">
      <t>The BIER IPv6 Encapsulation is a new sub-sub-TLV of OSPFv3 BIER non-MPLS
	  Encapsulation sub-TLV,
      and a new sub-sub-sub-TLV of ISIS BIER non-MPLS Encapsulation sub-sub-TLV
      as per <xref target="I-D.ietf-bier-lsr-non-mpls-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 indicates
              it is the IPv6 Encapsulation sub-TLV. For ISIS, value TBD2
              indicates it is the IPv6 encapsulation 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-non-mpls-extensions"/>
        or redistributed across protocol boundaries per
        <xref target="I-D.ietf-bier-prefix-redistribute"/>,
        the BIER IPv6 encapsulation 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 "BIER" type for "Next Header"
        in the "Assigned Internet Protocol Numbers" registry.
    </t>
    <!--t>
        IANA is requested to assign a "BIERin6" type for "invalid
        options" in the "ICMP code value" registry.
    </t-->
    <t>
        IANA is requested to assign a
        "BIER IPv6 encapsulation Sub-sub-TLV" type in the 
        "OSPFv3 BIER non-MPLS Encapsulation sub-TLV" Registry.
    </t>
    <t>
        IANA is requested to assign a 
        "BIER IPv6 encapsulation Sub-sub-sub-TLV" type in the 
        "IS-IS BIER non-MPLS Encapsulation sub-sub-TLV" Registry.
    </t>
    <t>
        IANA is requested to allocate a value "SRv6 Service" from 
        "BIER Next Protocol Identifiers" registry to indicate that BIER
		payload starts with an SRv6 Service SID.
    </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;
        &RFC8279;
        &RFC8296;
        &RFC6437;        
        &RFC9252;        
        <?rfc include="reference.I-D.ietf-bier-lsr-non-mpls-extensions"?>
    </references>

    <references title="Informative References">
        &RFC7368;
        <?rfc include="reference.I-D.zzhang-intarea-generic-delivery-functions"?>
        <?rfc include="reference.I-D.ietf-bier-ipv6-requirements"?>
        <?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>

