<?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-11" 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.
      </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 generic IGP algorithm
       (e.g. SPF) or could be a BIER specific one.
    </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].
    </t>
</section>
    <section title = "Updated Definition for BAR and IPA Fields">
	  <t>The definition for the BAR and IPA fields in [RFC8401] and [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 [RFC8665].
	  </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 [RFC8401].
	  </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.
	  </t>
	  <t>
		None of the components of the BAR or IPA can be unknown.
		If any of the components is not specified, it is
		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.
	  </t>
	  <t>If a BAR value is not specified in a RFC but only privately used
	  for a deployment, it MUST be within the "240-254	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).
    </t>
    <t>Apply the routing constraints, resulting in RC(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>No IANA Consideration is requested in this document.</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;
    </references>

  </back>
</rfc>
