<?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 RFC8444 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8444.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'>
        ]>
        <?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-04" 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="Tony Przygienda" initials="A." surname="Przygienda">
            <organization>Juniper Networks, Inc.</organization>
            <address>
                <email>prz@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 protocol"
                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).
                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>
            <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-ID in the IPv6 packet SHOULD be copied from the entropy field in
                the BIER encapsulation.
            </t>

        <section title="IPv6 Options Considerations">
            <!-- Hooman -->
            <t>RFC 8200 section 4, defines the IPv6 extension headers. Currently 
               there are two defined extension headers, Hop-by-Hop and Destination 
               options header, which can carry a variable number of options. These 
               extension headers are inserted by the source node.
            </t>
            <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>
        </section>
        </section>

        <section title="BIER Header">
            <t>The BIER header MUST be encoded per Section 2.2 of [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.dhanaraj-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.dhanaraj-bier-lsr-ethernet-extensions"/>
               is needed.
            </t>
            <t>Otherwise, a node that requires IPv6 encapsualtion
               MUST advertise the BIER IPv6 transportation 
               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-TLV of BIER defined
                    in OSPF <xref target="RFC8444"></xref>, and a new sub-sub-TLV of BIER
                    Info sub-TLV defined in ISIS <xref target="RFC8401"></xref>.
                </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 12) is used to indicate
                            it is the IPv6 transportation sub-TLV. For ISIS, value TBD2
                            (prefer 3) 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.dhanaraj-bier-lsr-ethernet-extensions"/>
                or redistributed across protocol boundaries per
                <xref target="I-D.zwzw-bier-prefix-redistribute"/>,
                the BIER IPv6 transportation sub-TLV or 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-TLV" type in the 
            "OSPFv2 Extended Prefix TLV Sub-TLVs" Registry.
        </t>
        <t>
            IANA is requested to set up a new 
            "BIER IPv6 transportation Sub-sub-TLV" type in the 
            "IS-IS BIER Info 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 Jeffrey Zhang for his review and valuable contributions.
    </t>
    </section>
</middle>

<back>
    <references title="Normative References">
        &RFC8200;
        &RFC8401;
        &RFC8444;
        &RFC8279;
        &RFC8296;
    </references>

    <references title="Informative References">
        &RFC7368;
        <?rfc include="reference.I-D.zhang-bier-babel-extensions"?>
        <?rfc include="reference.I-D.dhanaraj-bier-lsr-ethernet-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>

