<?xml version="1.1" 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 RFC8279 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8279.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 RFC8665 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8665.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" updates="8401,8444" docName="draft-ietf-bier-bar-ipa-13" ipr="trust200902">
  <front>
    <title abbrev="bier-bar-ipa">BIER Underlay Path Calculation Algorithm and Constraints</title>

    <author fullname="Zhaohui Zhang" initials="Z." surname="Zhang">
      <organization>Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>

    <author fullname="Antoni Przygienda" initials="A." surname="Przygienda">
      <organization>Juniper Networks</organization>
      <address>
        <email>prz@juniper.net</email>
      </address>
    </author>

    <author fullname="Andrew Dolganow" initials="A." surname="Dolganow">
      <organization>Individual</organization>
      <address>
        <email>adolgano@gmail.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="IJsbrand Wijnands" initials="I." surname="Wijnands">
      <organization>Individual</organization>
      <address>
        <email>ice@braindump.be</email>
      </address>
    </author>

    <author fullname="Arkadiy Gulko" initials="A." surname="Gulko">
      <organization>Edward Jones Wealth Management</organization>
      <address>
        <email>arkadiy.gulko@edwardjones.com</email>
      </address>
    </author>
    <date year="2022"/>

    <workgroup>BIER</workgroup>

    <abstract>
      <t>
   This document specifies general rules for the interaction between
   the BIER Algorithm (BAR) and the IGP Algorithm (IPA) used for underlay
   path calculation.  The semantics defined in this document update
   RFC8401 and RFC8444. This document also updates the BIER Algorithm
   registry established in RFC8401.
      </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>In the Bit Index Explicit Replication (BIER) architecture [RFC8279],
    packets with a BIER encapsulation header are forwarded to the neighbors
	on the underlay paths towards Bit-Forwarding Egress Routers (BFERs)
	that are represented by bits set in the BIER header's BitString.
       The paths are calculated in the underlay topology
       for each sub-domain following a calculation algorithm specific to the
       sub-domain. The topology or algorithm may or may not be congruent 
       with unicast. The algorithm could be a BIER specific algorithm or
	   could be a generic IGP one, e.g., Shortest Path First (SPF).
    </t>
    <t>
	  In [RFC8401] and [RFC8444], an 8-bit BAR
       (BIER Algorithm) field and 8-bit IPA (IGP Algorithm) field are defined
       to signal the BIER specific algorithm
       and generic IGP Algorithm respectively and only value 0 is allowed for
       both fields in those two documents.
<!--
       This document specifies the general rules for the two fields and their
       interaction when either or both fields are not 0, and updates
       their semantics defined in [RFC8444] and [RFC8401].
-->
	</t>
	<t>
   This document specifies general rules for the interaction between
   the BIER Algorithm (BAR) and the IGP Algorithm (IPA) used for underlay
   path calculation when other BAR and/or IPA values are used.
   The semantics defined in this document update [RFC8401], [RFC8444].
   This document also updates the BIER Algorithm registry defined in [RFC8401]
   by renaming the "Experimental Use" range to "Private or Experimental Use".
    </t>
</section>
    <section title = "Updated Definition for BAR and IPA Fields">
	  <t>The definition for the BAR and IPA fields in Section 6.1 of [RFC8401] and Section 2.1 of [RFC8444]
	  are updated as follows.
	  </t>
	  <t>
	 IPA: IGP Algorithm.  Specifies a generic Routing Algorithm (RA) and
	 related Routing Constraints (RC) to calculate underlay paths to
	 reach other Bit-Forwarding Routers (BFRs).
	 Values are from the "IGP Algorithm Types" registry. One Octet.
	  </t>
	  <t>
     BAR: BIER Algorithm.  Specifies a BIER-specific Algorithm (BA) and
     BIER-specific Constraints (BC) used to either modify, enhance, or
     replace the calculation of underlay paths to reach other BFRs
	 as defined by the IPA value. Values are allocated from the "BIER
     Algorithm" registry. One Octet.
	  </t>
	  <t>
		When a BAR value is defined,
		the corresponding BA and BC semantics SHOULD be specified.
		For an IGP Algorithm to be used as a
		BIER IPA, its RA and RC semantics SHOULD be specified.
		If any of these semantics is not specified, it MUST be
		interpreted as "NULL" algorithm or constraint. For example,
		the IGP Algorithm 0 defined in [RFC8665] is treated
		as having a NULL RC, i.e., no constraints (see Section 3).
	  </t>
	  <t>If a specification is not available for a specific BAR value, its 
value MUST be from the Private or Experimental Use range of 
the registry. 
	  </t>
	</section>
    <section title = "General Rules for the BAR and IPA Interaction">
      <t>For a particular sub-domain, all BFRs MUST be
	  provisioned with and signal the same BAR and IPA values. If a BFR
	  discovers another BFR advertising different BAR or IPA value for a
	  sub-domain, it MUST treat the advertising router as incapable of
	  supporting BIER for that sub-domain
      (one way of handling incapable routers is documented in Section 6.9
      of [RFC8279] and additional methods may be defined in the future).
    </t>
    <t>For a particular topology X that a sub-domain is associated with,
	a router MUST calculate the underlay paths according to its BAR and
	IPA values in the following way:
    <list style="numbers">
    <t>Apply the BIER constraints, resulting in BC(X). If BC is NULL, then BC(X) is X itself.
    </t>
    <t>Apply the routing constraints, resulting in RC(BC(X)). If RC is NULL, then RC(BC(X)) is BC(X).
    </t>
    <t>Select the algorithm AG as following:
    <list style="letters">
    <t>If BA is NULL, AG is set to RA.
    </t>
    <t>If BA is not NULL, AG is set to BA.
    </t>
    </list>
    </t>
    <t>Run AG on RC(BC(X)).
    </t>
    </list>
    </t>
	<t>It's possible that the resulting AG is not applicable to BIER,
	In that case, no BIER paths will be calculated and it is a network
	design issue that an operator needs to avoid when choosing BAR/IPA.
	</t>
    <section title = "When BAR Is Not Used">
    <t>BAR value 0 is defined as "No BIER-specific algorithm is used" [RFC8401].
   This value indicates NULL BA and BC.  Following the rules defined above,
   the IPA value alone identifies the calculation algorithm and constraints
   to be used for a particular sub-domain.
    </t>
    </section>
    <section title = "Exceptions/Extensions to the General Rules">
    <t>Exceptions or extensions to the above general rules may be specified
       in the future for specific BAR and/or IPA values. When that happens,
       compatibility with defined BAR and/or IPA values and semantics need
       to be specified.
    </t>
    </section>
    <!--section title = "Compatibility">
    <t>Currently only value 0 is used for both BAR and IPA in [RFC8401],
      [RFC8444] and <xref target="I-D.ietf-bier-ospfv3-extensions"/>,
      which means no constraints, so there are no compatibility issues.
    </t-->
    </section>
    <section title = "Examples">
    <t>As an example, one may define a new BAR with a BIER specific
       constraint of "excluding BIER
       incapable routers". No BIER specific algorithm is specified, and the
	   BIER specific constraint can go with any IPA -
       whatever RC defined by the IPA is augmented with "excluding BIER
       incapable routers", i.e., routers that do not support BIER are not
	   considered when applying the IGP Algorithm.
    </t>
    <t>If the BC and RC happen to conflict and lead to an empty
       topology, then no BIER forwarding path will be found. For example,
       the BC could be "exclude BIER-incapable routers" and the RC could
       be "include green links only". If all the green links are associated
       with BIER-incapable routers, it results in an empty topology. That is a
       network design issue that an operator needs to avoid when choosing
       BAR/IPA.
    </t>
    <t>In another example, a BAR value can be specified to use Steiner Tree
	algorithm and used together with IPA 0 (which uses SPF algorithm).
	According to the general rules, the BIER specific algorithm takes
	precedence so SPF is not used.
    </t>
    </section>
    <section title="IANA Considerations">
      <t>This document requests the following changes to the "BIER Algorithm" registry:
    <list style="numbers">
    <t>Rename the "Experimental Use" range to "Private or Experimental Use"</t>
    <t>Add this document as a reference</t>
	</list>
	  </t>
    </section>
    <section anchor="Security" title="Security Considerations">
    <t>This document specifies general rules for the interaction between
   the BIER Algorithm (BAR) and the IGP Algorithm (IPA) used for underlay
   path calculation. It does not change the security aspects as discussed in
    [RFC8279], [RFC8401], [RFC8444].
    </t>
    </section>
    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors thank Alia Atlas, Eric Rosen, 
         Senthil Dhanaraj and many others for their suggestions and comments.
         In particular, the BC/BA/RC/RA representation for the interaction rules
         is based on Alia's write-up.
      </t>
    </section>
   </middle>

  <back>
    <references title="Normative References">
	  &RFC2119;
	  &RFC8174;
	  &RFC8401;
	  &RFC8444;
	  &RFC8279;
	  &RFC8665;
    </references>

  </back>
</rfc>
