<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-bier-bar-ipa-13" number="9272" submissionType="IETF" category="std" consensus="true" ipr="trust200902"
updates="8401, 8444" obsoletes="" xml:lang="en" tocInclude="true" tocDepth="3"
symRefs="true" sortRefs="true" version="3">

  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title abbrev="BAR and IPA Interaction">Underlay Path Calculation Algorithm and Constraints for Bit Index Explicit Replication (BIER)</title>
    <seriesInfo name="RFC" value="9272"/>
    <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="IJ." 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" month="September" />

    <area>rtg</area>
    <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 within the Bit Index Explicit Replication (BIER)
  architecture.  The semantics defined in this document update RFC 8401
  and RFC 8444.  This document also updates the "BIER Algorithm"
  registry established in RFC 8401.
      </t>
    </abstract>
  </front>
  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>
      <t>In the Bit Index Explicit Replication (BIER) architecture <xref
      target="RFC8279" format="default"/>, 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 <xref target="RFC8401" format="default"/> and <xref target="RFC8444" format="default"/>, 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.
      </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 <xref target="RFC8401" format="default"/>
   and <xref target="RFC8444" format="default"/>.  This document also updates the "BIER Algorithm" registry defined
   in <xref target="RFC8401" format="default"/> by renaming the "Experimental
   Use" range to "Private or Experimental Use".
      </t>
    <section>
      <name>Requirements Language</name>
        <t>
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
    </section>

    </section>
    <section numbered="true" toc="default">
      <name>Updated Definitions for IPA and BAR Fields</name>
      <t>The definitions for the IPA and BAR fields in <xref target="RFC8401" section="6.1" sectionFormat="of" format="default"/> and <xref target="RFC8444" section="2.1" sectionFormat="of" format="default"/> are updated as follows.
      </t>
      <dl newline="false">
	<dt>IPA:</dt>
	<dd>IGP Algorithm.  Specifies a generic Routing Algorithm and
      related Routing Constraints to calculate underlay paths to
      reach other Bit-Forwarding Routers (BFRs).
      Values are from the "IGP Algorithm Types" registry. One octet.
	</dd>

	<dt>BAR:</dt>
	<dd><t>BIER Algorithm.  Specifies a BIER-specific Algorithm and
	BIER-specific Constraints 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 BIER-specific Algorithm (BA) and BIER-specific Constraint (BC) semantics <bcp14>SHOULD</bcp14> be specified.  For an IGP Algorithm to be
	used as a BIER IPA, its Routing Algorithm (RA) and Routing Constraint (RC) semantics <bcp14>SHOULD</bcp14> be specified.  If any of these semantics is not specified, it
	<bcp14>MUST</bcp14> be interpreted as the "NULL" algorithm or constraint. For
	example, the IGP Algorithm 0 defined in <xref target="RFC8665"
	format="default"/> is treated as having a NULL RC, i.e., no
	constraints (see <xref target="general_rules"/>).
      </t>
      <t>If a specification is not available for a specific BAR value, its 
      value <bcp14>MUST</bcp14> be from the Private or Experimental Use range of 
      the registry. 
      </t>
    </dd>
      </dl>
    </section>
    <section numbered="true" toc="default" anchor="general_rules">
      <name>General Rules for the BAR and IPA Interaction</name>
      <t>For a particular sub-domain, all BFRs <bcp14>MUST</bcp14> be provisioned with and
      signal the same BAR and IPA values. If a BFR discovers another BFR
      advertising a different BAR or IPA value for a sub-domain, it <bcp14>MUST</bcp14> treat
      the advertising router as incapable of supporting BIER for that
      sub-domain. (One way of handling incapable routers is documented in
      <xref target="RFC8279" section="6.9" sectionFormat="of" format="default"/>, 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 <bcp14>MUST</bcp14> calculate the underlay paths according to its BAR and
	IPA values in the following way:
      </t>
      <ol spacing="normal" type="1">
	<li>Apply the BIER constraints, resulting in BC(X). If BC is NULL, then BC(X) is X itself.
    </li>
        <li>Apply the routing constraints, resulting in RC(BC(X)). If RC is NULL, then RC(BC(X)) is BC(X).
    </li>
        <li>
          <t>Select the algorithm AG as follows:
          </t>
          <ol spacing="normal" type="a">
	    <li>If BA is NULL, AG is set to RA.</li>
            <li>If BA is not NULL, AG is set to BA.</li>
          </ol>
        </li>
        <li>Run AG on RC(BC(X)).
    </li>
      </ol>
      <t>It's possible that the resulting AG is not applicable to BIER.
	In that case, no BIER paths will be calculated, and this is a network
	design issue that an operator needs to avoid when choosing the BAR or IPA.
      </t>
      <section numbered="true" toc="default">
        <name>When BAR Is Not Used</name>
        <t>BAR value 0 is defined as "No BIER-specific algorithm is used"
        <xref target="RFC8401" format="default"/>.  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 numbered="true" toc="default">
        <name>Exceptions or Extensions to the General Rules</name>
        <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>
    <section numbered="true" toc="default">
      <name>Examples</name>
      <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, i.e., any RC defined by the IPA is augmented with "excluding
  BIER-incapable routers". (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. This is a
       network design issue that an operator needs to avoid when choosing
       the BAR or IPA.
      </t>
      <t>In another example, a BAR value can be specified to use the Steiner tree
	algorithm and used together with IPA 0 (which uses an SPF algorithm).
	According to the general rules, the BIER-specific algorithm takes
	precedence so SPF is not used.
      </t>
    </section>
    <section numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>The "BIER Algorithm" registry has been updated as follows:
      </t>
      <ol spacing="normal" type="1">
	<li>The "Experimental Use" range has been renamed "Private or Experimental Use".</li>
        <li>This document has been added as a reference both for the registry itself and for values 240-254 in the registry.</li>
      </ol>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <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
      <xref target="RFC8279" format="default"/>, <xref target="RFC8401"
      format="default"/>, and <xref target="RFC8444" format="default"/>.
      </t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8401.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8444.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8279.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8665.xml"/>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="default">
      <name>Acknowledgements</name>
      <t>The authors thank <contact fullname="Alia Atlas"/>, <contact fullname="Eric Rosen"/>, 
         <contact fullname="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>
  </back>
</rfc>
