<?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 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 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.zwzw-bier-prefix-redistribute PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.zwzw-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'>
  ]>
  <?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-07" ipr="trust200902">
<front>
  <title abbrev="BIERv6">BIER in IPv6 (BIERin6)</title>

    <author fullname="Zheng(Sandy) Zhang" initials="Z." surname="Zhang">
      <organization>ZTE Corporation</organization>
      <address>
        <email>zzhang_ietf@hotmail.com</email>
      </address>
    </author>

    <author fullname="Zhaohui Zhang" initials="Z." surname="Zhang">
      <organization>Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>

    <author fullname="IJsbrand Wijnands" initials="I." surname="Wijnands">
      <organization>Cisco Systems</organization>
      <address>
        <email>ice@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="Mike McBride" initials="M." surname="McBride">
      <organization>Futurewei</organization>
      <address>
        <email>mmcbride@futurewei.com</email>
      </address>
    </author>

    <date year="2020"/>

    <workgroup>BIER</workgroup>

    <abstract>
      <t>BIER is a new architecture for the forwarding of
          multicast data packets. This document defines native
          IPv6 encapsulation for BIER hop-by-hop forwarding or
          BIERin6 for short.
      </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 RFC2119.
      </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
        necessarily 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, refferred 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>
    <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".
    </t>
    <t>
        That can be used as is in a pure IPv6 non-mpls environment.
        Between two directly connected BFRs, a BIER header could
        directly follow link layer header, e.g.,
        an Ethernet header (with the Ethertype set to 0xAB37). 
        But if the downstream BFR can not support Ethernet encapsulation, 
        IPv6 encapsulation can be used. 
        If a BFR needs to tunnel BIER packets to another BFR,
            e.g. per <xref target="RFC8279"/> Section 6.9,
              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".
    </t>
      <figure  align="center">
        <artwork align="center"><![CDATA[
     +---------------+------------------------
     |  IPv6 header  | BIER header + data
     |               |
     | Next Header = |
     |    BIER       |
     +---------------+------------------------
             ]]></artwork>
          <postamble></postamble>
      </figure>
    <t> The IPv6 encapsulation could be used even between two directly
        connected BFRs 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="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>      
         BIER has its own OAM function, so generally the IPv6 OAM function is not 
         needed. But if the network operator takes the IPv6 packet OAM function 
         into account, the IPv6 OAM function can be used also.        
      </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 specificed 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 encapsualtion
       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.zwzw-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
        "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, Gyan Mishra for their review and valuable comments.
  </t>
  </section>
</middle>

<back>
    <references title="Normative References">
        &RFC8200;
        &RFC8401;
        &RFC8279;
        &RFC8296;
    </references>

    <references title="Informative References">
        &RFC7368;
        <?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.zwzw-bier-prefix-redistribute"?>
    </references>
</back>
</rfc>

