<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 4.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc toc, sortrefs, symrefs, comments="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-idr-multinexthop-attribute-05" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="BGP MNH attribute">BGP MultiNexthop Attribute</title>

    <author initials="K." surname="Vairavakkalai" fullname="Kaliraj Vairavakkalai">
      <organization>HPE</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>USA</country>
        </postal>
        <email>kaliraj.vairavakkalai@hpe.com</email>
      </address>
    </author>
    <author initials="M." surname="Jeyananth" fullname="Minto Jeyananth">
      <organization>HPE</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>USA</country>
        </postal>
        <email>jeyananth-minto.jeganathan@hpe.com</email>
      </address>
    </author>
    <author initials="M." surname="Nanduri" fullname="Mohan Nanduri">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <street>1 Microsoft Way</street>
          <city>Redmond</city>
          <region>WA</region>
          <code>98052</code>
          <country>USA</country>
        </postal>
        <email>mohannanduri@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Reddy" fullname="Avinash Reddy">
      <organization>AT&amp;T</organization>
      <address>
        <postal>
          <street>400 W Plano Pkwy</street>
          <city>Plano</city>
          <region>TX</region>
          <code>75075</code>
          <country>USA</country>
        </postal>
        <email>ar977m@att.com</email>
      </address>
    </author>

    <date year="2026" month="May" day="12"/>

    <area>Routing</area>
    <workgroup>IDR Working Group</workgroup>
    <keyword>BGP MNH, MultiNexthop Attribute</keyword>

    <abstract>


<?line 85?>

<t>Today, a BGP speaker can advertise one nexthop for a set of NLRIs in an Update message. This nexthop can be encoded in either the top-level BGP-Nexthop attribute (code 3), or inside the MP_REACH_NLRI attribute (code 14). Forwarding information related to the nexthop is scattered across various attributes, extended communities or the NLRI field.</t>

<t>This document defines a new optional non-transitive BGP attribute called "MultiNexthop (MNH)" with IANA code TBD. The MNH provides two things: it allows carrying the Nexthop and related forwarding information in one BGP attribute. The MNH also enables carrying an ordered set of multiple Nexthops in the same attribute, with forwarding information scoped on a per Nexthop basis.</t>



    </abstract>



  </front>

  <middle>


<?line 92?>

<section anchor="introduction"><name>Introduction</name>

<t>Today, a BGP speaker can advertise one nexthop for a set of NLRIs in an Update message. This nexthop can be encoded in either the top-level BGP-Nexthop attribute (code 3), or inside the MP_REACH_NLRI attribute (code 14). Forwarding information related to the nexthop is scattered across various attributes, extended communities or the NLRI field.</t>

<t>This document defines a new optional non-transitive BGP attribute called "MultiNexthop (MNH)" with IANA code TBD. The MNH provides two things: it allows carrying the Nexthop and related forwarding information in one BGP attribute. The MNH also enables carrying an ordered set of multiple Nexthops in the same attribute, with forwarding information scoped on a per Nexthop basis.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>iSN: Ingress Service Node</t>

<t>eSN: Egress Service Node</t>

<t>NLRI: Network Layer Reachability Information</t>

<t>AFI: Address Family Identifier</t>

<t>SAFI: Subsequent Address Family Identifier</t>

<t>PE : Provider Edge</t>

<t>RT : Route-Target extended community</t>

<t>RD : Route-Distinguisher</t>

<t>MPLS: Multi Protocol Label Switching</t>

<t>ECMP: Equal Cost Multi Path</t>

<t>WECMP: Weighted Equal Cost Multi Path</t>

<t>FRR: Fast Re Route</t>

<t>PNH : Protocol Next hop address carried in a BGP Update message</t>

<t>MNH: BGP MultiNextHop attribute</t>

<t>NFI: Nexthop Forwarding Information</t>

<t>FI: Forwarding Instruction</t>

<t>FA: Forwarding Argument</t>

<section anchor="definitions"><name>Definitions</name>

<t>MULTI_NEXT_HOP (aka MNH): BGP MultiNexthop attribute. The new attribute defined by this document.</t>

<t>MNH TLV: Top level TLV contained in a MULTI_NEXT_HOP.</t>

<t>NFI TLV: Nexthop Forwarding Information TLV, contained in a MNH TLV.</t>

<t>FI TLV: Forwarding Instruction TLV, contained in a NFI TLV.</t>

<t>FA TLV: Forwarding Argument TLV, contained as an argument to a FI in the FI TLV.</t>

</section>
</section>
<section anchor="motivation"><name>Motivation</name>

<t>Today, in a BGP Update, forwarding information related to the BGP nexthop is scattered across various attributes, extended communities or the NLRI field. On some other address families like Flowspec, nexthop address is carried without using the nexthop attribute, in one or more extended communities of specific type.</t>

<t>It may be desirable to carry the forwarding information for a nexthop scoped in a single attribute, and uniformly for all address families.</t>

<t>For cases where multiple nexthops need to be advertised, BGP Addpath <xref target="RFC7911"/> is used with some address families. Though Addpath allows basic ability to advertise multiple routes, it does not allow the sender to express the desired relationship between the multiple nexthops being advertised e.g., relative ordering, type of load balancing, fast reroute. These are local decisions based on configuration and path selection at the receiving node. Also, Addpath does not consider things like Link-bandwidth community when selecting add-path routes. Some scenarios (explained in Appendix A) may benefit from having a mechanism, where egress node can signal multiple nexthops along with their relationship to ingress nodes.</t>

<t>It would be desirable to have a common way to carry more than one nexthop on a BGP route of any family, and express relationship between them.</t>

<t>This document defines a new optional non-transitive BGP attribute "MultiNexthop (MNH)" that can be used for these purposes. The MNH attribute can be used in any BGP family that wants to carry one or more nexthops, with all forwarding information being carried in one attribute, scoped on a per nexthop basis.</t>

<t>E.g. The MNH can be used to advertise MPLS label along with nexthop for labeled and unlabeled families (e.g. Inet Unicast, Inet6 Unicast, Flowspec) alike. Such that, mechanisms at the transport layer can work uniformly on labeled and unlabled BGP families to realize various use-cases.</t>

</section>
<section anchor="spec"><name>Base Encoding And Protocol Procedures</name>

<t>"MultiNexthop (MNH)" is a new BGP optional non-transitive attribute (code TBD), that can be used to carry an ordered set of one or more Nexthops in the same route, with all forwarding information being carried in one attribute, scoped on a per nexthop basis. This attribute describes forwarding instructions using TLVs as shown below.</t>

<t>This section describes the organization and encoding of the MNH attribute.</t>

<figure title="Overview of MNH Attribute Layout - Eye candy summary" anchor="mnh-eye-candy"><artwork><![CDATA[
          MNH Attribute: {
                PrimaryPath {
                    [Forwarding Instruction 1],
                     ..
                    [Forwarding Instruction n]
                }
                RepairPath {
                    [Forwarding Instruction 1],
                     ..
                    [Forwarding Instruction n]
                }
          }

          Forwarding Instruction: {
              {FwdAction, Forwarding Arguments}
          }

]]></artwork></figure>

<t>A MNH attribute consists of a Header and one or more "MNH TLVs".</t>

<t>A MNH TLV contains a Type and one unit of "Nexthop Forwarding Information" (NFI TLV).</t>

<t>A NFI TLV contains one or more "Forwarding Instructions" (FI TLVs).</t>

<t>A FI TLV contains a "Forwarding Action" code and one more "Forwarding Arguments" (FA TLVs).</t>

<t>The FA TLVs describe the parameters required to complete a "Forwarding Action".</t>

<section anchor="multinexthop-attribute"><name>MultiNexthop Attribute</name>

<figure title="MultiNexthop - BGP Attribute" anchor="mnh-attr"><artwork><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attr. Flags  |Attr. Type Code|          Length               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver| MNH-Flags |       Advertising Router ID  (Four ..         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   .. bytes)   |       MNH TLV                                 ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                       MNH TLV                                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


 MNH Header:
   - Attr. Flags (1 octet)
       BGP Path-attribute flags. indicating an Optional Non-Transitive
       attribute. i.e. Optional bit set, Transitive bit reset.

   - Attr. Type Code (1 octet)
       Type code allotted by IANA. TBD.

   - Length (1 or 2 octets)
       One or Two bytes field stating length of attribute value in bytes.

   - Version (2 bits)
       MNH Version - indicates layout of the MNH header.
       Set to 0x0 indicating "MNH v0", which is defined in this document.

       If there is any significant changes to the skeletal layout of
       MNH attribute in future, this Version field will be useful.

   - MNH Flags (6 bits)

           2 3 4 5 6 7
          +-+-+-+-+-+-+
          |R R R R R M|
          +-+-+-+-+-+-+

       6 bits following the Version bits are MNH Flags.

           M: "Mandatory".
              Value 1 indicates that this MNH attribute is mandatory.
              If this MNH attr is invalid, the route is Unusable Hidden.

           R: Reserved. MUST be set to zero, SHOULD be ignored by receiver.

   - Advertising Router ID (4 octets)
      Router ID of the BGP speaker that is the source of truth for the
      contents of this MNH attribute.

 MNH TLVs: One or more MNH TLVs are carried in a MNH attr.
      MNH TLV is described in subsequent sections.

]]></artwork></figure>

<section anchor="processing-the-mnh-header"><name>Processing the MNH Header</name>

<t>A BGP speaker MUST fill MNH Version field to 0.</t>

<t>If a MNH is received with a Version other than 0, the MNH attribute MUST be considered invalid, and be treated as Unrecognized Non-transitive attribute.</t>

<t>The "Advertising Router ID" field identifies the router that added the MNH attribute.</t>

<t>The "Advertising Router ID" field is intended to help in debugging and troubleshooting only. It is not used for validating the MNH. The non-transitive nature of MNH avoids attribute escape.</t>

</section>
<section anchor="scope-of-use-origination-and-propagation"><name>Scope of Use, Origination and Propagation</name>

<t>The MNH attribute is intended to be used in a BGP free core, between egress and ingress BGP speakers that understand this attribute. These BGP speakers may have an intra-AS or inter-AS BGP session between them.</t>

<t>To avoid un-intentionally leaking the MNH to another AS, via a BGP speaker that does not understand MNH attribute, it is defined as "optional non-transitive". But this also means that a RR needs to be upgraded to support this attribute before any PEs in the network can make use of it.</t>

<t>Use of MNH on a BGP session is disabled by default. An implementation MUST provide configuration control on a per BGP neighbor address family basis, to enable MNH support.</t>

<t>A BGP speaker MUST NOT advertise MNH on a BGP route if MNH support is not enabled for the corresponding address family on the advertising BGP session.</t>

<t>If the MNH attribute is received on a BGP session where MNH support is not enabled, the attribute MUST be treated as Unrecognized non-transitive. This rule provides additional protection against unintended propagation of this attribute, when both BGP speakers understand MNH but receiver has not enabled the support. A RFC3392 Capability is not used for this purpose, because it would cause session reset whenever 'MNH support' config is changed.</t>

<t>Remaining text in this section apply when both receiving and advertising BGP sessions are enabled with MNH support.</t>

<t>When a BGP speaker receives the MNH attribute on a BGP route, and re-advertises it with the nexthop unchanged, it MUST propagate the attribute unchanged. E.g. a Route Reflector. The "Advertising Router ID" field in the MNH will thus contain the original BGP speaker that added it.</t>

<t>When a BGP speaker receives the MNH attribute on a BGP route, and re-advertises it with the nexthop altered, it processes the attribute but MUST NOT propagate it as-is. The BGP speaker MAY however attach a new instance of MNH attribute on the re-advertised route, and MAY derive its value from the received MNH. The "Advertising Router ID" field is set to the Router-ID of the speaker attaching the MNH.</t>

<t>A BGP speaker re-advertising a BGP route with nexthop unchanged MAY add the MNH attribute on the reflected BGP route, on behalf of the originating BGP speaker. The "Advertising Router ID" field in the MNH is set to the Router-ID of the speaker adding the MNH.</t>

</section>
<section anchor="interaction-with-forwarding-info-in-rest-of-update"><name>Interaction with Forwarding Info in Rest of Update</name>

<t>A type of forwarding information may be carried in both the MNH as-well as remaining portions of the Update message. E.g., AIGP, Link Bandwidth Extended Community.</t>

<t>The instance of forwarding information carried outside the MNH is associated with the BGP Nexthop (attribute codes 3, 14). The instance of forwarding information carried inside the MNH attribute is more specific, and overrides the one carried outside the MNH. It is associated with the Endpoint (<xref target="ep-tlv"/>) in Forwarding Instruction TLV (<xref target="fwd-instr-tlv"/>) that is part of same MNH attribute.</t>

<t>This rule holds good for any type of forwarding information carried in the MNH, unless specified otherwise by that type of forwarding information.</t>

<t>An exception to this rule is the MPLS Label stack information carried in <xref target="RFC8277"/> NLRI field. The Labels carried in the NLRI are imposed as inner labels with the Encapsulation Info specified in Encap Info TLV (<xref target="encap-tlv"/>) used as outer encapsulation.</t>

</section>
<section anchor="err-mnh-attr"><name>MNH attribute Error Handling</name>

<t>As specified in <xref target="RFC7606"/> BGP update message can contain no more than one instance of MP_REACH attribute or NEXT_HOP attribute. Similarly, a BGP update MUST contain no more than one instance of MNH attribute. If the MNH attribute (whether recognized or unrecognized) appears more than once in an UPDATE message, then all the occurrences of the attribute other than the first one SHALL be discarded and the UPDATE message will continue to be processed. The anomaly MAY be logged for diagnosis.</t>

<t>A TLV or sub-TLV of a certain Type in a MNH attribute can occur only once, unless specified otherwise by that type value. If multiple instances of such TLV or sub-TLV is received, the instances other than the first occurrence are ignored.</t>

<t>MNH employs a hierarchical error detection mechanism, where an error in lower layer TLVs is percolated upwards to the MNH attribute, based on the M bit. If the M bit in a TLV is 0, any error in the TLV is ignored and continue processing. If the M bit is 1, the TLV is considered invalid, and the error exception percolates up to the upper layer TLV, which takes the decision again based on it's M bit, until the MNH attribute top level. If the M bits all the way to the top were set to 1, then the error makes the MNH invalid.</t>

<t>If processing of a received MNH attribute resulted in an error, then the "M bit" is used to decide the action. If the M bit is 0, then the MNH attribute is ignored, <xref target="RFC7606"/> 'Attribute Discard' approach MUST be used, and continue to process rest of the update. If M bit is 1, then the BGP Route containing the MNH MUST be considered Unusable.</t>

<t>Implementations MAY provide policy configuration to set M bit to 0 on a MNH attribute being added, this helps with testing impact of the MNH on receiving nodes. Once confident, the MNH attribute can be re-advertised with M bit set. This helps in graceful incremental deployment.</t>

<t>The definition of a certain type of TLV or Sub-TLV in the MNH should specify in it's procedures, the value of M bit to be used. An implementation MAY provide configuration to set or reset the M bit.</t>

</section>
</section>
<section anchor="mnh-tlv"><name>MNH TLV</name>

<t>The type of MNH TLV describes how the forwarding information carried in the MNH TLV is used.</t>

<figure title="MNH TLV" anchor="fig-mnh-tlv"><artwork><![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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  MNH-TLV Flags| MNH Type Code |          Length               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                              Value                            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



 - MNH-TLV Flags (1 octet)

           0 1 2 3 4 5 6 7
          +-+-+-+-+-+-+-+-+
          |R R R R R R R M|
          +-+-+-+-+-+-+-+-+

       All bits are reserved.

           M: "Mandatory".
              Value 1 indicates that this MNH TLV is mandatory.
              If this MNH TLV is not understood, the MNH attribute
              containing it is considered invalid.

           R: "Reserved".
              MUST be set to zero, SHOULD be ignored by receiver.

 - MNH Type Code (1 octet)
      Type of MNH TLV. 0 is Reserved.

 - Length
    Length of Value portion in octets.

 - Value
    Value portion contains the NFI TLV.

]]></artwork></figure>

<t>A sending BGP speaker advertises the information for one ore more nexthops in a MNH TLV.</t>

<t>Information received in MNH TLV is used to create the Forwarding state at receiving BGP speaker.</t>

<t>The MNH Type code indicates how the information carried in the TLV is used at the receiving node.</t>

<section anchor="err-mnh-tlv"><name>MNH TLV Error Handling</name>

<t>If invalid Type Code 0 is received, the MNH TLV is ignored irrespective of "M bit", and continue to process rest of the update.</t>

<t>If the received Type Code is incompatible for the prefix in BGP NLRI, the MNH TLV is considered invalid.</t>

<t>If an unrecognized Type Code is received, or processing of a recognized MNH TLV type results in an error, the TLV is considered invalid.</t>

<t>Invalid MNH TLV is handled based on the "M bit" on the MNH TLV.</t>

<t>If the M bit is 0, then the MNH TLV is ignored and continue to process rest of the update. If M bit is 1, then the MNH attribute containing this MNH TLV is considered invalid, triggering the procedures in <xref target="err-mnh-attr"/>.</t>

</section>
</section>
<section anchor="nexthop-forwarding-information-tlv"><name>Nexthop Forwarding Information TLV</name>

<t>A Nexthop Forwarding Information TLV describes a MNH TLV. It contains one or more Forwarding Instruction TLVs. These Forwarding Instructions are the Forwarding Legs of the MNH.</t>

<figure title="Nexthop Forwarding Information TLV" anchor="nfi-tlv"><artwork><![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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  NFI  Flags   |      Num-Nexthops             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Forwarding Instruction TLV (F.I. TLV)                  ~
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      ~        Forwarding Instruction TLV (F.I. YLV)                  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 - NFI Flags (1 octet)

           0 1 2 3 4 5 6 7
          +-+-+-+-+-+-+-+-+
          |R R R R R R R M|
          +-+-+-+-+-+-+-+-+

           M: "Mandatory".
              Value 1 indicates that this NFI TLV (Nexthop Leg) is mandatory.
              If this Nexthop Leg is not understood, the MNH TLV
              containing it is considered invalid.

           R: "Reserved".
              MUST be set to zero, SHOULD be ignored by receiver.

 - Num-Nexthops
        Number of F.I. TLVs.

 - Forwarding Instruction TLV
        Each F.I. TLV describes a Nexthop Leg.
        Layout of Forwarding Instruction TLV is described in next section.
]]></artwork></figure>

<t>M bit on a NFI TLV SHOULD be set to 1.</t>

<section anchor="err-nfi-tlv"><name>NFI TLV Error Handling</name>

<t>If Num-Nexthops in a received NFI is 0, it is considered invalid. Irrespective of M bit value, the NFI TLV is ignored and remaining update is processed.</t>

<t>The receiving BGP speaker MAY consider the "Num-Nexthops" value in a Nexthop Forwarding Information TLV not acceptable, based on it's forwarding capabilities or local policy. In such cases, the NFI TLV is considered Invalid.</t>

<t>An Invalid NFI TLV is handled based on value of M bit on it. If the M bit is 0, the NFI TLV is ignored, and remaining update continue to be processed. If M bit is 1, the MNH TLV carrying this NFI is considered Invalid, triggering the procedures in <xref target="err-mnh-tlv"/>.</t>

</section>
</section>
<section anchor="fwd-instr-tlv"><name>Forwarding Instruction TLV</name>

<t>Each Forwarding Instruction TLV describes a Nexthop Leg. It expresses a "Forwarding Action" (FwdAction) along with arguments required to complete the action. The type of actions defined by this TLV are given below. The arguments are denoted by "Forwarding Argument TLVs". The Forwarding Argument TLVs takes appropriate values based on the FwdAction.</t>

<t>Each FwdAction should note the Arguments needed to complete the action. Any extraneous arguments should be ignored. If the minimum set of arguments required to complete an action is not received, the Forwarding Instruction TLV should be ignored. Appropriate logging and diagnostic info MAY be provided by an implementation to help troubleshoot such scenarios.</t>

<figure title="Forwarding Instruction TLV" anchor="fig-fi-tlv"><artwork><![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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  F.I. Flags   |          Relative Pref        |  FwdAction    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            Length             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                   Fwd Argument TLV                            ~
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      ~                   Fwd Argument TLV                            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



  - F.I. Flags (1 octet)

           0 1 2 3 4 5 6 7
          +-+-+-+-+-+-+-+-+
          |R R R R R R R M|
          +-+-+-+-+-+-+-+-+

           M: "Mandatory".
              Value 1 indicates that this Forwarding Instruction is mandatory.
              If this instruction is not understood, the NFI TLV
              containing it is considered invalid.

           R: "Reserved".
              MUST be set to zero, SHOULD be ignored by receiver.

 - Relative Pref (2 octets)

     Unsigned 2 octet integer specifying relative order or preference, among
     the many forwarding instructions, to use in FIB. All usable nexthop legs
     with lowest relative-pref are installed in FIB as primary-path. Thus if
     multiple legs exist with that lowest relative-pref, ECMP is formed.

 - FwdAction (1 octet)

     Type Code denoting the Forwarding action to be performed by receiving node.
     0 is Reserved.

 - Length (2 octets)

    Length in octets, of all Forwarding Argument TLVs.
]]></artwork></figure>

<t>Definition of a Forwarding Action should specify the set of forwarding arguments required to execute the action, and value of M bit.</t>

<section anchor="err-fi-tlv"><name>FI TLV Error Handling</name>

<t>If an Invalid value of 0 is received as FwdAction, the TLV is ignored irrespective of "M bit", and continue to process rest of the update..</t>

<t>If an unrecognized or unsupported FwdAction is received, the FI TLV is considered Invalid.</t>

<t>If a certain Forwarding Action is unable to be executed because the set of required arguments are not available, the FI TLV is considered Invalid. If a certain Forwarding Action is applied to an incompatible NLRI, the FI TLV is considered Invalid.</t>

<t>An Invalid FI TLV is handled based on value of M bit on it. If the M bit is 0, the FI TLV is ignored, and remaining update continue to be processed. If M bit is 1, the NFI TLV carrying this NFI is considered Invalid, triggering the procedures in <xref target="err-nfi-tlv"/>.</t>

</section>
</section>
<section anchor="forwarding-argument-tlv"><name>Forwarding Argument TLV</name>

<t>The Forwarding Argument TLV describes various parameters required to execute a FwdAction.</t>

<figure title="Forwarding Argument TLV" anchor="fig-farg-tlv"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code            |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     |     Value                                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


 - F.A. Flags (1 octet)

           0 1 2 3 4 5 6 7
          +-+-+-+-+-+-+-+-+
          |R R R R R E C M|
          +-+-+-+-+-+-+-+-+

           M: "Mandatory".
              Value 1 indicates that this argument is mandatory for the Forwarding Action.
              If this argument is not understood, the FI TLV containing it
              is considered invalid.

           C: "Cumulative".
              Request nodes to accumulate value in re-advertised MNH.
              By default Forwarding Arguments are not cumulative, so C bit is 0
              unless otherwise specified by the forwarding argument type.

           E: "Egress Attached".
              This bit is maintained when C bit is set to 1.
              E bit is set to 1 if a cumulative argument is being added to a route
              with empty AS-path.

           R: "Reserved".
              MUST be set to zero, SHOULD be ignored by receiver.


 - F.A. Type Code (2 octets)

    Type Code of Forwarding Argument. 0 is Reserved.

 - Length (2 octets)

    Length in bytes of Value field.


]]></artwork></figure>

<t>The C bit is set to 1 on attributes that need to be accumulated across BGP nexthop-self propagation hops. If a received MNH has a FA with C bit 1, it MUST be set to 1 on the FA inserted in any advertised MNH also. The value of the FA in the advertised MNH MAY be derived from the value of the FA in the received MNH. The specific FA SHOULD define the procedure on how the accumulation of value happens for the specific type of FA.</t>

<t>If a received MNH has a FA with C bit 1, and receiving speaker is unable to perform the accumulation of FA, it MUST NOT include the FA type in any advertised MNH.</t>

<t>A FA that need to be accumulated end-to-end may want to know if the cumulative value denotes the path until the Egress node. The E bit denotes that the FA was originated by the Egress node that originated this BGP route. The E bit is set to 1 by the node adding the FA, if the AS-path on the route is empty. The E bit value received on a MNH MUST be propagated on the MNH added to the re-advertisement. This allows the Ingress node to see the E bit value set by the Egress node.</t>

<section anchor="err-farg-tlv"><name>FA TLV Error Handling</name>

<t>If an Invalid F.A. Type Code value of 0 is received, the TLV is ignored irrespective of "M bit", and continue to process rest of the update..</t>

<t>If an unrecognized F.A. Type Code is received, the FA TLV is considered Invalid.</t>

<t>An Invalid FA TLV is handled based on value of M bit on it. If the M bit is 0, the FA TLV is ignored, and remaining update continue to be processed. If M bit is 1, the FI TLV carrying this FA is considered Invalid, triggering the procedures in <xref target="err-fi-tlv"/>.</t>

</section>
</section>
<section anchor="interaction-with-addpath"><name>Interaction with Addpath</name>

<t><xref target="I-D.draft-ietf-idr-add-paths-guidelines-08"/> Sec 2 suggests the following:</t>

<t>"Diverse path: A BGP path associated with a different BGP next-hop and BGP router than some other set of paths. The BGP router associated with a path is inferred from the ORIGINATOR_ID attribute or, if there is none, the BGP Identifier of the peer that advertised the path."</t>

<t>When selecting "diverse paths" for ADD_PATH as specified above, the MNH attribute should also be compared if it exists, to determine if two routes have "different BGP next-hop".</t>

</section>
<section anchor="path-selection-considerations"><name>Path Selection Considerations</name>

<section anchor="determining-igp-cost"><name>Determining IGP Cost</name>

<t>While tie breaking in the path-selection as described in <xref target="RFC4271"/>, 9.1.2.2. step (e) viz. the "IGP cost to nexthop", consider the highest cost among the nexthop-legs present in this attribute.</t>

<t>The IGP cost thus calculated is also used when constructing AIGP TLV (<xref target="RFC7311"/>)</t>

</section>
</section>
</section>
<section anchor="tlvs-defined-in-this-document"><name>TLVs Defined In This Document</name>

<t>This section describes the initial set of MNH TLVs, Forwarding Instructions and Arguments that this document defines.</t>

<section anchor="mnh-tlvs"><name>MNH TLVs</name>

<t>The type of MNH TLV describes how the forwarding information carried in the MNH TLV is used.</t>

<figure title="MNH TLV Types" anchor="fig-mnh-tlv-def"><artwork><![CDATA[
 This document defines the following MNH TLV types:

  MNH Type Code        Meaning
 --------------     -------------
       0           Reserved
       1           Primary forwarding path
       2           Backup forwarding path


 - Length
    Length of Value portion in octets.

 - Value
    Value portion contains the NFI TLV.
]]></artwork></figure>

<t>Type codes 1 and 2 are applicable for upstream allocated prefixes, example IP, Upstream MPLS labels, Flowspec routes.</t>

<t>Note that usage of Type code 1 in a BGP route containing IP prefix gives similar result as advertising the route with nexthop contained in BGP path-attributes: Nexthop (code 3) or MP_REACH_NLRI (code 14).</t>

<t>Upstream allocation for MPLS routes is achieved by using mechanisms explained in <xref target="I-D.draft-kaliraj-bess-bgp-sig-private-mpls-labels-06"/>.</t>

<t>If an invalid Type Code 0 is received, the TLV is ignored, and continue to process rest of the update.</t>

<t>If the received Type Code is incompatible for the prefix in BGP NLRI, the TLV should be ignored.</t>

<section anchor="primary-path-tlv"><name>Primary Forwarding Path</name>

<t>This is a MNH TLV (<xref target="mnh-tlv"/>) with MNH Type Code = 1, called "Primary Forwarding Path"</t>

<t>This TLV describes forwarding state to be programmed at receiving speaker as Primary Path nexthop leg. This TLV is used with Upstream allocated or global scope prefixes carried in BGP NLRI. Value part of this TLV contains Nexthop Forwarding Information TLV.</t>

<t>A BGP speaker uses the nexthop forwarding information received in this TLV as a primary path nexthop leg when programming the route for the NLRI prefix in its Forwarding table.</t>

<figure title="Primary forwarding path TLV" anchor="prim-path-tlv"><artwork><![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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  MNH-TLV Flags|  MNH Type = 1 |          Length               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |               Nexthop Forwarding Information TLV              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


]]></artwork></figure>

</section>
<section anchor="repair-path-tlv"><name>Repair Forwarding Path</name>

<t>This is a MNH TLV (<xref target="mnh-tlv"/>) with MNH Type Code = 2, called "Repair Forwarding Path"</t>

<t>This TLV describes forwarding state to be programmed during traffic repair at receiving speaker. i.e. This TLV is used to program a backup/repair path. This TLV is used with Upstream allocated prefixes or global scoped prefixes. Value part contains Nexthop Forwarding Information TLV.</t>

<t>Signaling a different nexthop for use as backup path is desirable in some labeled forwarding scenarios, where two multihomed edge devices use each other as backup path to protect traffic when primary path fails.</t>

<t>This is required to avoid label advertisement oscillation between the multihomed PEs when they implement per-nexthop label allocation mode.</t>

<t>The label advertised by a PE1 for primary path advertisement is allocated/forwarded using external paths as primary leg and backup-path label from other multihomed PE2 as backup-path label. Such that primary-path label allocation at PE1 is not a function of the primary-path label advertised by PE2. Thus the primary path label remains stable at a PE and does not change when a new primary path label is received from the other multihomed PE. This prevents the label oscillation problem.</t>

<figure title="Repair forwarding path TLV" anchor="fig-repair-path-tlv"><artwork><![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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  MNH-TLV Flags|  MNH Type = 2 |          Length               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |               Nexthop Forwarding Information TLV              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


]]></artwork></figure>

<t>The backup path label allocated and advertised by a PE is a function of only the primary path. E.g. path to the CE device. So this label value does not change when a new label is received from the other multihomed PE</t>

</section>
</section>
<section anchor="forwarding-actions-in-fi-tlv"><name>Forwarding Actions in FI TLV</name>

<t>Each Forwarding Instruction TLV describes a Nexthop Leg. It expresses a "Forwarding Action" (FwdAction) along with arguments required to complete the action. The type of actions defined by this TLV are given below. The arguments are denoted by "Forwarding Argument TLVs". The Forwarding Argument TLVs takes appropriate values based on the FwdAction.</t>

<t>Each FwdAction should note the Arguments needed to complete the action. Any extraneous arguments should be ignored. If the minimum set of arguments required to complete an action is not received, the Forwarding Instruction TLV should be ignored. Appropriate logging and diagnostic info MAY be provided by an implementation to help troubleshoot such scenarios.</t>

<t>Following Forwarding Actions are defined by this document.</t>

<figure title="Forwarding Actions" anchor="fact-def"><artwork><![CDATA[
 FwdAction         Meaning
 ---------      -------------
       0        Reserved
       1        Forward
       2        Pop-And-Forward
       3        Swap
       4        Push
       5        Pop-And-Lookup
       6        Replicate

   Forwarding Instruction TLV with unknown FwdAction should be ignored, skipped
   and rest of the attribute processed; gracefully handling the error. The event
   may be appropriately logged for diagnosis.

 - Length (2 octets)

    Length in octets, of all Forwarding Argument TLVs.
]]></artwork></figure>

<t>Meaning of most of the above FwdAction semantics is well understood. FwdAction 1 is applicable for both IP and MPLS routes. FwdActions 2-5 are applicable for encapsulated payloads (like MPLS) only. FwdActions 1, 6 are applicable for Flowspec routes for Redirect and Mirror actions. FwdAction 6 can also be used to indicate multicast replication like functionality.</t>

<t>The "Forward" action means forward the IP/MPLS packet with the destination prefix (IP-dest-addr/MPLS-label) value unchanged. For IP routes, this is the forwarding-action given for next-hop addresses contained in BGP path-attributes: Nexthop (code 3) or MP_REACH_NLRI (code 14). For MPLS routes, usage of this action is equivalent to SWAP with same label-value; one such usage is explained in <xref target="I-D.draft-kaliraj-bess-bgp-sig-private-mpls-labels-06"/> when Upstream-label-allocation is in use.</t>

<t>The "Pop-And-Forward" action means Pop the payload header (e.g. MPLS-label) and forward the payload towards the Nexthop IP-address specified in the Endpoint Id TLV, using appropriate encapsulation to reach the Nexthop.</t>

<t>When applied to MPLS packet, the "Pop-And-Lookup" action may result in a MPLS-lookup or an upper-layer header (like IPv4, IPv6) lookup, depending on whether the label that was popped was the bottom of stack label.</t>

<t>If an incompatible FwdAction is received for a prefix-type, or an unsupported FwdAction is received, it is considered a semantic-error and MUST be dealt with as explained in "Error handling procedures" section.</t>

</section>
<section anchor="farg-tlv"><name>Forwarding Argument TLVs</name>

<t>The Forwarding Argument TLV describes various parameters required to execute a FwdAction.</t>

<t>Following types of Forwarding Argument are defined by this document.</t>

<figure title="Forwarding Argument Types" anchor="farg-def"><artwork><![CDATA[
  F.A. Type Code  Meaning
  -------------  ---------
     0           Reserved
     1           Endpoint Identifier
     2           Path Constraints
     3           Payload encapsulation info signaling
     4           Endpoint attributes advertisement

 - Length (2 octets)

    Length in bytes of Value field.

]]></artwork></figure>

<section anchor="ep-tlv"><name>Endpoint Identifier</name>

<t>This is a Forwarding Argument (<xref target="farg-tlv"/>) with F.A. Type Code = 1. It identifies an Endpoint of certain type.</t>

<figure title="Endpoint Identifier" anchor="ep-def"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code =1         |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Endpoint Type |  Endpoint Len | Endpoint Value|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Endpoint Value                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


 - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

 - Length (2 octets)
    Length in bytes of Value field.


  Endpoint Type   Value                    Len (octets)
  -------------  ---------                ---------------------
     0           Reserved
     1           IPv4 Address                4
     2           IPv6 Address                16
     3           MPLS Label (Upstream        4
                            allocated or
                            Global scope)
     4           Fwd Context RD              8
     5           Fwd Context RT              8

 - Endpoint Len (1 octet)

    Length in bytes of Endpoint Value field.


]]></artwork></figure>

</section>
<section anchor="constrain-tlv"><name>Path Constraints</name>

<t>This is a Forwarding Argument (<xref target="farg-tlv"/>) with F.A. Type Code = 2. It defines Constraints for Path to the Endpoint..</t>

<figure title="Path Constraints" anchor="path-constrain"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code = 2        |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | ConstrainType | Constrain Len | ConstrainValue|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  ConstrainValue                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

   - Length (2 octets)
       Length in bytes of Value field.

  ConstrainType             Value                Len (octets)
  -------------  -------------------------    ---------------------
     0           Reserved
     1           Proximity check                 2
     2           Transport Class ID (Color)      4
     3           Load balance factor             2

  - Constrain Len (1 octet)

    Length in bytes of Constrain Value field.

   - Proximity check Flags (2 octets)
        Flags describing whether the nexthop endpoint is expected to be single hop
        away, or multihop away. Format of flags is described in next section.

   - Transport Class ID (Color):

    This is a 32 bit identifier, associated with the Nexthop address.
    The Nexthop IP-address specified in "Endpoint Identifier" TLVs
    are resolved over tunnels of this color.
    Defined in {{RFC9832}}

   - Load balance factor (2 octets)
          Balance Percentage

]]></artwork></figure>

<section anchor="proximity-check"><name>Proximity Check</name>

<t>Usually EBGP singlehop received routes are expected to be one hop away, directly connected. And IBGP received routes are expected to be multihop away. Implementations today provide configuring exceptions to this rule.</t>

<t>The 'expected proximity' of the Nexthop can be signaled to the receiver using the Proximity check flags. Such that irrespective of whether the route is received from IBGP/EBGP peer, it can be treated as a single-hop away or multihop away nexthop.</t>

<t>The format of the Proximity check Sub-TLV is as follows:</t>

<figure title="Proximity check constrain" anchor="constrain-proximity"><artwork><![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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  F.A. Flags   |     F.A. Type Code = 2        |  Length       |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    Length     |ConstrainType=1|  Len = 2      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |       Proximity Check Flags   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

  - Length (2 octets)
       Length in bytes of Value field.

  - Proximity check Flags (2 octets)

           0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
          |S M R R R R R R R R R R R R R R|
          +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


           S: Restrict to Singlehop path.
           M: Expect Multihop path.
           R: Reserved. MUST be set to zero, SHOULD be ignored by receiver.

]]></artwork></figure>

<t>This TLV would be valid with Forwarding Instructions TLV with FwdAction of Forward, Pop-And-Forward, Swap or Push.</t>

<t>When S bit is set, receiver considers the nexthop valid only if it is directly connected to the receiver.</t>

<t>When M bit is set, receiver assumes that the nexthop can be multiple hops away, and resolves the path to the nexthop via another route.</t>

<t>When both S and M bits are set, M bit behavior takes precedence. When both S and M bits are Clear, the current behavior of deriving proximity from peer type (EBGP is singlehop, IBGP is multihop) is followed.</t>

</section>
<section anchor="tc-tlv"><name>Transport Class ID (Color)</name>

<t>The Nexthop can be associated with a Transport Class, so as to resolve a path that satisfies required Transport tunnel characteristics. Transport Class is defined in <xref target="RFC9832"/></t>

<t>Transport Class is a per-nexthop scoped attribute. Without MNH, the Transport class is applied to the nexthop IP-address encoded in the BGP-Nexthop attribute (code 3), or inside the MP_REACH_NLRI attribute (code 14). With MNH, the Transport Class can be specified per Nexthop-Leg (Forwarding Instruction TLV <xref target="fwd-instr-tlv"/>). It is applied to the IP-address encoded in the Endpoint Identifier TLV of type "IPv4 Address", "IPv6 Address" , "MPLS Label (Upstream allocated or Global scope)".</t>

<t>The format of the Transport Class ID Sub-TLV is as follows:</t>

<figure title="Transport Class ID (Color)" anchor="constrain-tc"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code = 2        |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     |ConstrainType=2|  Len = 4      | Transport..   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  .. Class ID (4 bytes)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

  - Length (2 octets)
       Length in bytes of Value field.

  - Transport Class ID (Color):
    This is a 32 bit identifier, associated with the Nexthop address.
    The Nexthop specified in Endpoint Identifier TLVs
    are resolved over tunnels of this color.
  Defined in {{RFC9832}}

]]></artwork></figure>

<t>This TLV would be valid with Forwarding Instructions TLV with FwdAction of Forward, Swap or Push.</t>

</section>
<section anchor="lb-perc"><name>Load Balance Factor</name>

<figure title="Load Balance Factor" anchor="constrain-lb"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code = 2        |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     |ConstrainType=3|  Len = 2      |   Balance..   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|.. Percentage  |
+-+-+-+-+-+-+-+-+

 - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

 - Length (2 octets)
       Length in bytes of Value field.

 - Len (1 octet)
    Length of the Constrain Value field.

 - Balance Percentage:
    This is the explicit "balance percentage" requested by the sender,
    for unequal load-balancing over these Nexthop-Descriptor-TLV legs.
    This balance percentage would override the implicit
    balance-percentage calculated using "Bandwidth" attribute
    sub-TLV.

]]></artwork></figure>

<t>This sub-TLV would be valid with Forwarding Instructions TLV with FwdAction of Forward, Swap or Push.</t>

<t>This is the explicit "balance percentage" requested by the sender, for unequal load-balancing over these Nexthop-Descriptor-TLV legs. This balance percentage would override the implicit balance-percentage calculated using "Bandwidth" attribute sub-TLV</t>

<t>When the sum of "balance percentage" on the nexthop legs does not equal 100, it is scaled up or down to match 100. The individual balance percentages in each nexthop leg are also scaled up or down proportionally to determine the effective balance percentage per nexthop leg.</t>

</section>
</section>
<section anchor="encap-tlv"><name>Payload Encapsulation Info</name>

<t>This is a Forwarding Argument (<xref target="farg-tlv"/>) with F.A. Type Code = 3. It defines Payload Encapsulation Information.</t>

<figure title="Payload Encapsulation Info" anchor="encap-info"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code =3         |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Encap Type  |         Encap Len               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Encap Value                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


 - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

 - Length (2 octets)
       Length in bytes of Value field.

   Endcap Type        Value
  -------------  --------------
     0           Reserved
     1           MPLS Label Info
     2           SR MPLS label Index Info
     3           SRv6 SID info
     4           DSCP code point

 - Encap Len (2 octets)

    Length in octets of Encap Value field.


]]></artwork></figure>

<section anchor="mpls-label-info"><name>MPLS Label Info</name>

<figure title="MPLS Label Info" anchor="encap-mpls"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code =3         |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Encap Type=1 |          Encap Len             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      L.V. Flags (2 bytes)    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MPLS Label (20 bits) |Rsrv |S~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ MPLS Label (20 bits) |Rsrv |S|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


  - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

  - Length (2 octets)
       Length in bytes of Value field.

  - Encap Type
     = 1, to signify MPLS Label Info.

  - Encap Len (2 octets)
       Length in bytes of following Encap Value field.

  - L.V. Flags (2 octets):

       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |E R R R R R R R R R R R R R R R|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

       E: ELC bit. Indicates if this egress NH is Entropy Label Capable.
             1 means the Entropy Label capable.
             0 means not capable to handle Entropy Label.

       R: Reserved. MUST be set to zero, SHOULD be ignored by receiver.

  - MPLS Label, Rsrv, S bit.
      20 bit MPLS Label stack encoded as in RFC 8277.
      S bit set on last label in label stack.


]]></artwork></figure>

</section>
<section anchor="sr-mpls-label-index-info"><name>SR MPLS Label Index Info</name>

<figure title="SR MPLS Label Index Info" anchor="encap-sr-mpls"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code =3         |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Encap Type=2 |            Encap Len           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   RESERVED    |       LI Flags                |    Label ..   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                ..Index                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


  - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

  - Length (2 octets)
       Length in bytes of Value field.

  - Encap Type
     = 2, to signify SR MPLS SID Info.

  - Encap Len (2 octets)
       Length in bytes of following Encap Value field.

  Rest of the value portion is encoded as specified in RFC-8669 sec 3.1.

  - RESERVED:  8-bit field. MUST be set to zero, SHOULD be ignored by receiver.

  - LI Flags:  16 bits of flags. None defined. MUST be set to zero, SHOULD be ignored by receiver.

  - Label Index:
      32-bit value representing the index value in the SRGB space.

]]></artwork></figure>

</section>
<section anchor="srv6-sid-info"><name>SRv6 SID Info</name>

<figure title="SRv6 SID Info" anchor="encap-srv6"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code =3         |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Encap Type=3 |           Encap Len            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         .. SRv6 SID Info (variable)                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


  - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

  - Length (2 octets)
       Length in bytes of Value field.

  - Encap Type
        = 3, to signify SRv6 SID Info.

  - Encap Len (2 octets)
       Length in bytes of following Encap Value field.

  - SRv6 SID Info:
        SRv6 SID Information, as specified in RFC-9252 sec 3.1.


]]></artwork></figure>

</section>
<section anchor="dscp"><name>DSCP</name>

<figure title="DSCP" anchor="encap-dscp"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code = 3        |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Encap Type=4 |           Encap Len            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|DSCP code point|
+-+-+-+-+-+-+-+-+


  - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

  - Length (2 octets)
       Length in bytes of Value field.

  - Encap Type
        = 4, to signify DSCP code point.

  - Encap Len (2 octets)
      = 1, Length in bytes of following Encap Value field.

  - DSCP code point:
        DS Field, as specified in RFC-2474 sec 3.


]]></artwork></figure>

</section>
</section>
<section anchor="epattr-tlv"><name>Endpoint Attributes</name>

<t>This is a Forwarding Argument (<xref target="farg-tlv"/>) with F.A. Type Code = 4. It defines Attributes of an Endpoint.</t>

<figure title="Endpoint attributes" anchor="ep-attr"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code = 4        |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Attrib Type  |    Attr Len    |  Attr  Value  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Attr Value                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   EP Attrib Type      Attrib Value               Attrib Len (octets)
  ----------------  ------------------            ---------------------
     0               None
     1               Endpoint Bandwidth               8
     2               Accumulated Metric               Variable


]]></artwork></figure>

<section anchor="ep-bw"><name>Endpoint Bandwidth</name>

<figure title="Endpoint Bandwidth" anchor="ep-attr-bw"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code = 4        |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Attrib Type 1|    Attr Len=8  |  Attr  Value  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Bandwidth (8 octets)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Bandwidth (contd.)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

 - Len (2 octets)
    Length in bytes of remaining portion of SubTLV.

 - Bandwidth
    The bandwidth to the endpoint expressed as 8 octets,
    units being bits per second.

]]></artwork></figure>

<t>This sub-TLV would be valid with Forwarding Instruction TLV with FwdAction of Forward, Swap or Push.</t>

</section>
<section anchor="accumulated-metric-to-endpoint"><name>Accumulated Metric to Endpoint</name>

<figure title="Accumulated Metric to Endpoint" anchor="ep-attr-acc-metric"><artwork><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  F.A. Flags   |     F.A. Type Code = 4        |  Length       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Length     | Attrib Type 2|    Metric Type |  Metric Len   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Metric Value (variable)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


 - F.A. Flags (1 octet)
     As defined in Forwarding Argument TLV.

        C: Cumulative bit is set to 1 by originator of this argument.


- Len (2 octets)
    Length in bytes of remaining portion of SubTLV.

- Metric Type: Type from "IGP Metric-Type" IANA registry under IGP Parameters
   Following types are defined by this document to be accumulated:
      0 IGP Metric
      1 Min Unidirectional Link Delay as defined in [RFC8570, Section 4.2]

- Metric Len: Length in octets of Metric Value field.
      IGP Metric: 4
      Min Unidirectional Link Delay: 4

- Metric Value:
      IGP Metric: 4 octet Accumulated IGP cost
      Min Unidirectional Link Delay: 4 octet Accumulated min delay in microseconds.

]]></artwork></figure>

<t>This sub-TLV would be valid with Forwarding Instruction TLV with FwdAction of Forward, Swap or Push.</t>

</section>
</section>
</section>
</section>
<section anchor="scaling-considerations"><name>Scaling Considerations</name>

<t>The MNH attribute allows receiving multiple nexthops on the same BGP session. This flexibility also opens up the possibility that a peer can send large number of multipath (ECMP/UCMP/FRR) nexthops that may overwhelm the local system's forwarding plane. Prefix-limit based checks will not avoid this situation.</t>

<t>To keep the scaling limits under check, a BGP speaker MAY keep account of number of unique multipath nexthops that are received from a BGP peer, and impose a configurable max-limit on that. This is especially useful for EBGP peers.</t>

<t>A good scaling property of conveying multipath nexthops using the MNH attribute with N nexthop legs on one BGP session, as against BGP routes on N BGP sessions is that, it limits the amount of transitionary multipath combinatorial state in the latter model. Because the final multipath state is conveyed by one route update in deterministic manner, there is no transitionary multipath combinatorial explosion created during establishment of N sessions.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document makes request to IANA to allocate the following codes in BGP attributes registry.</t>

<section anchor="bgp-path-attributes"><name>BGP Path Attributes</name>

<t>A new BGP attribute code TBD for "BGP MultiNexthop Attribute (MULTI_NEXT_HOP)", in "BGP Path Attributes" registry.</t>

</section>
<section anchor="bgp-multinexthop-attribute"><name>BGP MultiNextHop Attribute</name>

<t>This document requests IANA to create a new registry group for MultiNextHop attribute, and the following registries in it.</t>

<section anchor="multinexthop-mnh-tlv-types"><name>MultiNextHop (MNH) TLV Types</name>

<t>This is a Registry for Type codes in (<xref target="mnh-tlv"/>) "MNH TLV"</t>

<figure title="Registry - MNH TLV Types" anchor="reg-mnh-tlv"><artwork><![CDATA[
   Under "Border Gateway Protocol (BGP) Parameters",

     Registry Group: BGP MultiNextHop Attribute

     Registry Name: MultiNexthop (MNH) TLV Types

          MNH Type Code        Meaning
         --------------     -------------
           0                Reserved
           1                Primary forwarding path
           2                Backup forwarding path
           3-254            Unassigned
           255              Reserved

     Reference: This document.

     Registration Procedure(s)
         Future assignments are to be made using either the Standards Action
         process defined in [RFC2434], or the Early IANA Allocation process
         defined in [RFC4020].


]]></artwork></figure>

</section>
<section anchor="forwarding-action-types"><name>Forwarding Action Types</name>

<t>This is a Registry for Type codes in <xref target="fwd-instr-tlv"/> "Forwarding Instruction TLV"</t>

<figure title="Registry - Forwarding Action Types" anchor="reg-fact"><artwork><![CDATA[
    Under "Border Gateway Protocol (BGP) Parameters",

      Registry Group: BGP MultiNextHop Attribute

      Registry Name: Forwarding Action Types

            FwdAction         Meaning
            ---------      -------------
             0             Reserved
             1             Forward
             2             Pop-And-Forward
             3             Swap
             4             Push
             5             Pop-And-Lookup
             6             Replicate
             7-254         Unassigned
             255           Reserved

       Reference: This document.

       Registration Procedure(s)
           Future assignments are to be made using either the Standards Action
           process defined in [RFC2434], or the Early IANA Allocation process
           defined in [RFC4020].

]]></artwork></figure>

</section>
<section anchor="forwarding-argument-types"><name>Forwarding Argument Types</name>

<t>This is a Registry for Type codes in (<xref target="farg-tlv"/>) "Forwarding Arguments TLV"</t>

<figure title="Registry - Forwarding Argument Types" anchor="reg-farg"><artwork><![CDATA[
    Under "Border Gateway Protocol (BGP) Parameters",

      Registry Group: BGP MultiNextHop Attribute

      Registry Name: Forwarding Argument Types

         F.A. Type Code      Meaning
         ---------------   ------------------
            0              Reserved
            1              Endpoint Identifier
            2              Path Constraints
            3              Payload encapsulation info signaling
            4              Endpoint attributes advertisement
            5-65534        Unassigned
            65535          Reserved

      Reference: This document.

      Registration Procedure(s)
          Future assignments are to be made using either the Standards Action
          process defined in [RFC2434], or the Early IANA Allocation process
          defined in [RFC4020].


]]></artwork></figure>

</section>
<section anchor="endpoint-types"><name>Endpoint Types</name>

<t>This is a Registry for Type codes in <xref target="ep-tlv"/> "Endpoint Identifier" Forwarding Argument.</t>

<figure title="Registry - Endpoint Types" anchor="reg-ep"><artwork><![CDATA[
    Under "Border Gateway Protocol (BGP) Parameters",

      Registry Group: BGP MultiNextHop Attribute

      Registry Name: Endpoint Types

          Endpoint Type   Value
         -------------  ---------
            0           Reserved
            1           IPv4 Address
            2           IPv6 Address
            3           MPLS Label
            4           Fwd Context RD
            5           Fwd Context RT
            6-254       Unassigned
            255         Reserved

      Reference: This document.

      Registration Procedure(s)
          Future assignments are to be made using either the Standards Action
          process defined in [RFC2434], or the Early IANA Allocation process
          defined in [RFC4020].


]]></artwork></figure>

</section>
<section anchor="path-constrain-types"><name>Path Constrain Types</name>

<t>This is a Registry for Type codes in <xref target="constrain-tlv"/> "Path Constrain" Forwarding Argument.</t>

<figure title="Registry - Path Constrain Types" anchor="reg-constrains"><artwork><![CDATA[
    Under "Border Gateway Protocol (BGP) Parameters",

      Registry Group: BGP MultiNextHop Attribute

      Registry Name: Path Constrain Types

         ConstrainType             Value
         -------------  -------------------------
           0             Reserved
           1             Proximity check
           2             Transport Class ID (Color)
           3             Load balance factor
           4-254         Unassigned
           255           Reserved

      Reference: This document.

      Registration Procedure(s)
           Future assignments are to be made using either the Standards Action
           process defined in [RFC2434], or the Early IANA Allocation process
           defined in [RFC4020].


]]></artwork></figure>

</section>
<section anchor="encapsulation-types"><name>Encapsulation Types</name>

<t>This is a Registry for Type codes in <xref target="encap-tlv"/> "Payload Encapsulation Info" Forwarding Argument.</t>

<figure title="Registry - Encapsulation Types" anchor="reg-encap"><artwork><![CDATA[
      Under "Border Gateway Protocol (BGP) Parameters",

        Registry Group: BGP MultiNextHop Attribute

        Registry Name: Encapsulation Types

            Encap Type        Value
          -------------  --------------
            0           Reserved
            1           MPLS Label Info
            2           SR MPLS label Index Info
            3           SRv6 SID info
            4           DSCP code point
            5-254       Unassigned
            255         Reserved

        Reference: This document.

        Registration Procedure(s)
            Future assignments are to be made using either the Standards Action
            process defined in [RFC2434], or the Early IANA Allocation process
            defined in [RFC4020].


]]></artwork></figure>

</section>
<section anchor="endpoint-attribute-types"><name>Endpoint Attribute Types</name>

<t>This is a Registry for Type codes in <xref target="epattr-tlv"/> "Endpoint attributes" Forwarding Argument.</t>

<figure title="Registry - Endpoint Attribute Types" anchor="reg-ep-attr"><artwork><![CDATA[
    Under "Border Gateway Protocol (BGP) Parameters",

      Registry Group: BGP MultiNextHop Attribute

      Registry Name:  Endpoint Attribute Types

         EP Attrib Type      Attrib Value
         ----------------  ------------------
           0               Reserved
           1               Bandwidth
           2               Accumulated Metric to Endpoint
           3-254           Unassigned
           255             Reserved

       Reference: This document.

       Registration Procedure(s)
           Future assignments are to be made using either the Standards Action
           process defined in [RFC2434], or the Early IANA Allocation process
           defined in [RFC4020].


]]></artwork></figure>

<t>Note to RFC Editor: this section may be removed on publication as an RFC.</t>

</section>
</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The MNH attribute is defined as optional non-transitive BGP attribute, such that it does not accidentally get propagated or leaked via BGP speakers that don't support this feature, especially does not unintentionally leak across EBGP boundaries.</t>

<t>MNH may be used to advertise nexthop with MPLS label in various BGP families. In scenarios where MPLS is enabled on link to a device in an untrusted domain, e.g. a PE-CE link or ASBR-ASBR inter-AS link, security can be provided against MPLS label spoofing by using MPLS context tables as described in <xref target="mpls-enabled-ce"/>. Such that only MPLS traffic with labels advertised to the BGP speaker are allowed to forward. However, the PE may not be able to perform any checks based on inner payload in the MPLS packet since it performs label swap forwarding. Such 'inner payload' based checks may be offloaded to a downstream node that forwards and processes inner payload, e.g., an IP router having full FIB. These security aspects should be considered when using MPLS enabled CE devices.</t>

</section>
<section anchor="contributors"><name>Contributors</name>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>Thanks to Jeff Haas, Robert Raszuk, Ron Bonica for the review, discussions and input to the draft.</t>

<t>Thanks to Blaine Williams and Satya Mohanty for the discussions on some use-cases.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC7606">
  <front>
    <title>Revised Error Handling for BGP UPDATE Messages</title>
    <author fullname="E. Chen" initials="E." role="editor" surname="Chen"/>
    <author fullname="J. Scudder" initials="J." role="editor" surname="Scudder"/>
    <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
    <author fullname="K. Patel" initials="K." surname="Patel"/>
    <date month="August" year="2015"/>
    <abstract>
      <t>According to the base BGP specification, a BGP speaker that receives an UPDATE message containing a malformed attribute is required to reset the session over which the offending attribute was received. This behavior is undesirable because a session reset would impact not only routes with the offending attribute but also other valid routes exchanged over the session. This document partially revises the error handling for UPDATE messages and provides guidelines for the authors of documents defining new attributes. Finally, it revises the error handling procedures for a number of existing attributes.</t>
      <t>This document updates error handling for RFCs 1997, 4271, 4360, 4456, 4760, 5543, 5701, and 6368.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7606"/>
  <seriesInfo name="DOI" value="10.17487/RFC7606"/>
</reference>
<reference anchor="RFC8277">
  <front>
    <title>Using BGP to Bind MPLS Labels to Address Prefixes</title>
    <author fullname="E. Rosen" initials="E." surname="Rosen"/>
    <date month="October" year="2017"/>
    <abstract>
      <t>This document specifies a set of procedures for using BGP to advertise that a specified router has bound a specified MPLS label (or a specified sequence of MPLS labels organized as a contiguous part of a label stack) to a specified address prefix. This can be done by sending a BGP UPDATE message whose Network Layer Reachability Information field contains both the prefix and the MPLS label(s) and whose Next Hop field identifies the node at which said prefix is bound to said label(s). This document obsoletes RFC 3107.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8277"/>
  <seriesInfo name="DOI" value="10.17487/RFC8277"/>
</reference>
<reference anchor="RFC7311">
  <front>
    <title>The Accumulated IGP Metric Attribute for BGP</title>
    <author fullname="P. Mohapatra" initials="P." surname="Mohapatra"/>
    <author fullname="R. Fernando" initials="R." surname="Fernando"/>
    <author fullname="E. Rosen" initials="E." surname="Rosen"/>
    <author fullname="J. Uttaro" initials="J." surname="Uttaro"/>
    <date month="August" year="2014"/>
    <abstract>
      <t>Routing protocols that have been designed to run within a single administrative domain (IGPs) generally do so by assigning a metric to each link and then choosing, as the installed path between two nodes, the path for which the total distance (sum of the metric of each link along the path) is minimized. BGP, designed to provide routing over a large number of independent administrative domains (autonomous systems), does not make its path-selection decisions through the use of a metric. It is generally recognized that any attempt to do so would incur significant scalability problems as well as inter-administration coordination problems. However, there are deployments in which a single administration runs several contiguous BGP networks. In such cases, it can be desirable, within that single administrative domain, for BGP to select paths based on a metric, just as an IGP would do. The purpose of this document is to provide a specification for doing so.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7311"/>
  <seriesInfo name="DOI" value="10.17487/RFC7311"/>
</reference>
<reference anchor="RFC4271">
  <front>
    <title>A Border Gateway Protocol 4 (BGP-4)</title>
    <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
    <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
    <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
    <date month="January" year="2006"/>
    <abstract>
      <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
      <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
      <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
      <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4271"/>
  <seriesInfo name="DOI" value="10.17487/RFC4271"/>
</reference>
<reference anchor="RFC7911">
  <front>
    <title>Advertisement of Multiple Paths in BGP</title>
    <author fullname="D. Walton" initials="D." surname="Walton"/>
    <author fullname="A. Retana" initials="A." surname="Retana"/>
    <author fullname="E. Chen" initials="E." surname="Chen"/>
    <author fullname="J. Scudder" initials="J." surname="Scudder"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document defines a BGP extension that allows the advertisement of multiple paths for the same address prefix without the new paths implicitly replacing any previous ones. The essence of the extension is that each path is identified by a Path Identifier in addition to the address prefix.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7911"/>
  <seriesInfo name="DOI" value="10.17487/RFC7911"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC2474">
  <front>
    <title>Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers</title>
    <author fullname="K. Nichols" initials="K." surname="Nichols"/>
    <author fullname="S. Blake" initials="S." surname="Blake"/>
    <author fullname="F. Baker" initials="F." surname="Baker"/>
    <author fullname="D. Black" initials="D." surname="Black"/>
    <date month="December" year="1998"/>
    <abstract>
      <t>This document defines the IP header field, called the DS (for differentiated services) field. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2474"/>
  <seriesInfo name="DOI" value="10.17487/RFC2474"/>
</reference>
<reference anchor="RFC9832">
  <front>
    <title>BGP Classful Transport Planes</title>
    <author fullname="K. Vairavakkalai" initials="K." role="editor" surname="Vairavakkalai"/>
    <author fullname="N. Venkataraman" initials="N." role="editor" surname="Venkataraman"/>
    <date month="September" year="2025"/>
    <abstract>
      <t>This document specifies a mechanism referred to as "Intent-Driven Service Mapping". The mechanism uses BGP to express Intent-based association of overlay routes with underlay routes having specific Traffic Engineering (TE) characteristics satisfying a certain Service Level Agreement (SLA). This is achieved by defining new constructs to group underlay routes with sufficiently similar TE characteristics into identifiable classes (called "Transport Classes" or "TCs"), that overlay routes use as an ordered set to resolve reachability (Resolution Schemes) towards service endpoints. These constructs can be used, for example, to realize the "IETF Network Slice" defined in the TEAS Network Slices framework (RFC 9543).</t>
      <t>Additionally, this document specifies protocol procedures for BGP that enable dissemination of service mapping information in a network that may span multiple cooperating administrative domains. These domains may be administered either by the same provider or by closely coordinating providers. A new BGP address family that leverages the procedures described in RFC 4364 ("BGP/MPLS IP Virtual Private Networks (VPNs)") and follows the NLRI encoding described in RFC 8277 ("Using BGP to Bind MPLS Labels to Address Prefixes") is defined to enable each advertised underlay route to be identified by its class. This new address family is called "BGP Classful Transport" (or "BGP CT").</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9832"/>
  <seriesInfo name="DOI" value="10.17487/RFC9832"/>
</reference>
<reference anchor="RFC9256">
  <front>
    <title>Segment Routing Policy Architecture</title>
    <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
    <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <author fullname="A. Bogdanov" initials="A." surname="Bogdanov"/>
    <author fullname="P. Mattes" initials="P." surname="Mattes"/>
    <date month="July" year="2022"/>
    <abstract>
      <t>Segment Routing (SR) allows a node to steer a packet flow along any path. Intermediate per-path states are eliminated thanks to source routing. SR Policy is an ordered list of segments (i.e., instructions) that represent a source-routed policy. Packet flows are steered into an SR Policy on a node where it is instantiated called a headend node. The packets steered into an SR Policy carry an ordered list of segments associated with that SR Policy.</t>
      <t>This document updates RFC 8402 as it details the concepts of SR Policy and steering into an SR Policy.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9256"/>
  <seriesInfo name="DOI" value="10.17487/RFC9256"/>
</reference>

<reference anchor="I-D.draft-kaliraj-bess-bgp-sig-private-mpls-labels-06">
   <front>
      <title>BGP Signaled MPLS Namespaces</title>
      <author fullname="Kaliraj Vairavakkalai" initials="K." surname="Vairavakkalai">
         <organization>Juniper Networks, Inc.</organization>
      </author>
      <author fullname="Jeyananth Minto Jeganathan" initials="J. M." surname="Jeganathan">
         <organization>Juniper Networks, Inc.</organization>
      </author>
      <author fullname="Praveen Ramadenu" initials="P." surname="Ramadenu">
         <organization>AT&amp;T Services, Inc.</organization>
      </author>
      <date day="10" month="July" year="2023"/>
      <abstract>
	 <t>   The MPLS forwarding layer in a core network is a shared resource.
   The MPLS FIB at nodes in this layer contains labels that are
   dynamically allocated and locally significant at that node.  These
   labels are scoped in context of the global loopback address.  Let us
   call this the global MPLS namespace.

   For some usecases like upstream label allocation, it is useful to
   create private MPLS namespaces (virtual MPLS FIB) over this shared
   MPLS forwarding layer.  This allows installing deterministic label
   values in the private FIBs created at nodes participating in the
   private MPLS namespace, while preserving the &quot;locally significant&quot;
   nature of the underlying shared global MPLS FIB.

   This document defines new address families (AFI: 16399, SAFI: 128, or
   1) and associated signaling mechanisms to create and use MPLS
   forwarding contexts in a network.  Some example use cases are also
   described.


	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-kaliraj-bess-bgp-sig-private-mpls-labels-06"/>
   
</reference>

<reference anchor="I-D.draft-ietf-idr-flowspec-redirect-ip">
   <front>
      <title>BGP Flow-Spec Redirect-to-IP Action</title>
      <author fullname="Jeff Haas" initials="J." surname="Haas">
         <organization>HPE</organization>
      </author>
      <author fullname="Wim Henderickx" initials="W." surname="Henderickx">
         <organization>Nokia</organization>
      </author>
      <author fullname="Adam Simpson" initials="A." surname="Simpson">
         <organization>Nokia</organization>
      </author>
      <date day="28" month="April" year="2026"/>
      <abstract>
	 <t>   Flow-spec is an extension to BGP that allows for the dissemination of
   traffic flow specification rules.  This has many possible
   applications, but the primary one for many network operators is the
   distribution of traffic filtering actions for distributed denial of
   service (DDoS) mitigation.  The flow-spec standard, RFC 8955, defines
   a redirect-to-VRF action for policy-based forwarding.  This mechanism
   can be difficult to use, particularly in networks without L3 VPN
   infrastructure.

   This document defines a new redirect-to-IP flow-spec action that
   provides a simpler method of policy-based forwarding.  The details of
   the action, including the IPv4 or IPv6 target address, are encoded in
   newly defined BGP extended communities.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-idr-flowspec-redirect-ip-10"/>
   
</reference>

<reference anchor="I-D.draft-ietf-idr-add-paths-guidelines-08">
   <front>
      <title>Best Practices for Advertisement of Multiple Paths in IBGP</title>
      <author fullname="Jim Uttaro" initials="J." surname="Uttaro">
         <organization>AT&amp;T</organization>
      </author>
      <author fullname="Pierre Francois" initials="P." surname="Francois">
         <organization>IMDEA Networks</organization>
      </author>
      <author fullname="Keyur Patel" initials="K." surname="Patel">
         <organization>Cisco Systems</organization>
      </author>
      <author fullname="Jeffrey Haas" initials="J." surname="Haas">
         <organization>Juniper Networks</organization>
      </author>
      <author fullname="Adam Simpson" initials="A." surname="Simpson">
         <organization>Nokia</organization>
      </author>
      <author fullname="Roberto Fragassi" initials="R." surname="Fragassi">
         <organization>Nokia</organization>
      </author>
      <date day="25" month="April" year="2016"/>
      <abstract>
	 <t>   Add-Paths is a BGP enhancement that allows a BGP router to advertise
   multiple distinct paths for the same prefix/NLRI. This provides a
   number of potential benefits, including reduced routing churn, faster
   convergence and better loadsharing.

   This document provides recommendations to implementers of Add-Paths
   so that network operators have the tools needed to address their
   specific applications and to manage the scalability impact of Add-
   Paths. A router implementing Add-Paths may learn many paths for a
   prefix and must decide which of these to advertise to peers. This
   document analyses different algorithms for making this selection and
   provides recommendations based on the target application.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-idr-add-paths-guidelines-08"/>
   
</reference>



    </references>

</references>


<?line 1521?>

<section anchor="use"><name>Use Cases</name>

<t>This section describes various example use-cases of the MNH attribute.</t>

<section anchor="signaling-wecmp-to-ingress-node"><name>Signaling WECMP to Ingress Node</name>

<t>This section describes how MNH can be used to provide weighted equal cost multipath in a network fabric, while not increasing RIB scale.</t>

<figure title="WECMP without increasing RIB scale" anchor="topo-wecmp"><artwork><![CDATA[
                                   [RR1]
                                     .
                   . +-[P21]         |
                  .  +-[P22]         __
                 .   +-[P23]      _.(  )..
            [R1].    +-[P24] ..  (_      _) .. [R2]
                 .   +-[P25]       (._..)
                  .
                   . +-[P2n]


                    <---- Traffic Direction ----

]]></artwork></figure>

<t>{topo-wecmp} shows a network with BGP speaker R1 connected to a number of routers P21 .. P2n in its region. R1 is eSN and R2 is iSN for the IP traffic in consideration. BGP service families IPv4 Unicast (AFI/SAFI: 1/1) and IPv6 Unicast (AFI/SAFI: 2/1) are negotiated on the BGP sessions between RR1 - R1 and RR1 - R2. RR1 reflects the BGP routes between R1 and R2 with next hop unchanged.</t>

<t>When MNH is not in use, R1 advertises "n" BGP Addpath routes for a service prefix Pfx1, each having a distinct next hop, P21 .. P2n, and desired Link Bandwidth Extended Community. These Addpath routes will be received by R2, which can do WECMP based on the Link Bandwidth Extended Communities attached on the routes. This model increases RIB scale by "n" times, so that WECMP can be achieved.</t>

<t>When MNH is used in this network, R1 advertises a single BGP route for prefix Pfx1, which contains a MNH attribute with "n" next hops, each carrying the desired link bandwidth using <xref target="lb-perc"/> or <xref target="ep-bw"/></t>

<t>This allows achieving WECMP in the network without increasing RIB scale.</t>

</section>
<section anchor="signaling-optimal-forwarding-exit-points-to-ingress-node"><name>Signaling Optimal Forwarding Exit-points to Ingress Node</name>

<t>In a BGP free core, one can dynamically signal to the ingress-node, how traffic should be load-balanced towards a set of exit nodes, in one BGP-route containing this attribute.</t>

<t>Example, for prefix1, perform equal load balancing towards exit nodes A, B; where as for prefix2, perform weighted load balancing (40%, 30%, 30%) towards exit nodes A, B, C.</t>

<t>Example, for prefix1, use PE1 as primary-nexthop and use PE2 as a backup-nexthop.</t>

</section>
<section anchor="load-balancing-to-multiple-ces-in-a-vrf"><name>Load balancing to multiple CEs in a VRF</name>

<t>This section describes how MNH can be used to provide load balancing and entropy in a provider network for traffic destined to multiple CEs in a VRF, without increasing RIB scale.</t>

<figure title="Load balancing to multiple CEs in a VRF" anchor="topo-cevrf"><artwork><![CDATA[

                                   [RR1]
                                     .
            [CE1].                   |
                  .                  __
            [CE2]  .              _.(  )..
                    .[PE1]   ..  (_      _) .. [PE2]
            [CE3]  .               (._..)
                  .
            [CE4].


                    <---- Traffic Direction ----
]]></artwork></figure>

<t>{topo-cevrf} shows a L3VPN network with multiple CE devices connected to the same VRF at PE1. The VRF is configured with a RD: RD1, and uses "per next hop" label allocation mode to advertise the CE routes to L3VPN core. PE1 is eSN and PE2 is iSN for the IP traffic in consideration. CE1..CE4 advertise route for same prefix Pfx1 in BGP service families IPv4 Unicast (AFI/SAFI: 1/1) negotiated on the BGP sessions between the CEs and PE1. BGP L3VPN address family (AFI/SAFI: 1/128) is negotiated between PE1 - RR1, and RR1 - PE2. RR1 reflects the BGP routes between PE1 and PE2 with next hop unchanged.</t>

<t>PE1 would typically advertise to RR1 only the best path for prefix Pfx1 out of routes received from CE1..CE4. Using per CE RD or Addpath for L3VPN family may allow PE1 to advertise all CE routes to the RR, with an increase in RIB scale. This model increases RIB scale by "n" times, where 'n' is the number of CEs.</t>

<t>When MNH is used in this network, PE1 advertises a single BGP L3VPN route for prefix Pfx1, which contains a MNH attribute with "n" next hops, each carrying the label pointing towards a particular CE, using Payload Encapsulation Info TLV (<xref target="encap-tlv"/>) along with the Endpoint Identifier TLV (<xref target="ep-tlv"/>)</t>

<t>This allows the network to direct traffic to a specific CE, and better load-balance traffic in the provider network, with entropy provided by the per CE VPN labels, without increasing RIB scale.</t>

</section>
<section anchor="signaling-desired-forwarding-behavior-for-mpls-upstream-labels-at-receiving-node"><name>Signaling Desired Forwarding Behavior for MPLS Upstream labels at Receiving Node</name>

<t>In Upstream label allocation case, the receiving speaker's forwarding-state can be controlled by the advertising speaker, thus enabling a standardized API to program desired MPLS forwarding-state at the receiving node. This is described in the <xref target="I-D.draft-kaliraj-bess-bgp-sig-private-mpls-labels-06"/></t>

</section>
<section anchor="load-balancing-over-ebgp-parallel-links"><name>Load Balancing over EBGP Parallel Links</name>

<t>Consider N parallel links between two EBGP speakers. There are different models possible to do load balancing over these links:N single-hop EBGP sessions over the N links. Interface addresses are used as next-hops. N copies of the RIB are exchanged to form N-way ECMP paths. The routes advertised on the N sessions can be attached with Link bandwidth community to perform weighted ECMP. 1 multi-hop EBGP session between loopback addresses, reachable via static route over the N links. Loopback addresses are used as next-hops. 1 copy of the RIB is exchanged with loopback address as nexthop. And a static route can be configured to the loopback address to perform desired N-way ECMP path. M loopbacks are configured in this model, to achieve M different load balancing schemes: ECMP, weighted ECMP, Fast-reroute enabled paths etc. 1 multi-hop EBGP session between loopback addresses, reachable via static route over the N links. Interface addresses are used as next-hops, without using additional loopbacks. 1 copy of the RIB is exchanged with MNH attribute to form N-way ECMP paths, weighted ECMP, Fast-reroute backup paths etc. BFD may be used to these directly connected BGP nexthops to detect liveness.</t>

<t><list style="symbols">
  <t>N single-hop EBGP sessions over the N links. Interface addresses are used as next-hops. N copies of the RIB are exchanged to form N-way ECMP paths. The routes advertised on the N sessions can be attached with Link bandwidth community to perform weighted ECMP.</t>
  <t>1 multi-hop EBGP session between loopback addresses, reachable via static route over the N links. Loopback addresses are used as next-hops. 1 copy of the RIB is exchanged with loopback address as nexthop. And a static route can be configured to the loopback address to perform desired N-way ECMP path. M loopbacks are configured in this model, to achieve M different load balancing schemes: ECMP, weighted ECMP, Fast-reroute enabled paths etc.</t>
  <t>1 multi-hop EBGP session between loopback addresses, reachable via static route over the N links. Interface addresses are used as next-hops, without using additional loopbacks. 1 copy of the RIB is exchanged with MNH attribute to form N-way ECMP paths, weighted ECMP, Fast-reroute backup paths etc. BFD may be used to these directly connected BGP nexthops to detect liveness.</t>
</list></t>

</section>
<section anchor="flowspec-routes-with-multiple-redirect-ip-next-hops"><name>Flowspec Routes with Multiple "Redirect IP" next hops</name>

<t>There are existing protocol machinery which can benefit from the ability of MNH to clearly specify fallback behavior when multiple nexthops are involved. One example is the scenario described in <xref target="I-D.draft-ietf-idr-flowspec-redirect-ip"/> Sec 3 where multiple Redirect-to-IP nexthop addresses exist for a Flowspec prefix. In such a scenario, the receiving speakers may redirect the traffic to different nexthops, based on variables like IGP-cost. If instead, the MNH was used to specify the redirect-to-IP nexthop, then the order of preference between the different nexthops can be clearly specified using one flowspec route carrying a MNH containing those different nexthop-addresses specifying the desired preference-order. Such that, irrespective of IGP-cost, the receiving speakers will redirect the flow towards the same traffic collector device.</t>

</section>
<section anchor="color-only-resolution-next-hop"><name>Color-Only Resolution next hop</name>

<t>Another existing protocol machinery that manufactures nexthop addresses from overloaded extended color community is specified in <xref target="RFC9256"/> Sec 8.8.1. In a way, the color field is overloaded to carry one anycast BGP next-hop with pre-specified fallback options. This approach gives us only two next-hops to play with. The 'BGP nexthop address' and the 'Color-only nexthop'</t>

<t>Instead, the MNH could be used to achieve the same result with more flexibility. Multiple BGP nexthops can be carried, each resolving over a desired Transport class (Color), and with customizable fallback order. And the solution will work for non-SRTE networks as-well.</t>

</section>
<section anchor="problems-with-multihomed-pes-protecting-each-other"><name>Problems with Multihomed PEs Protecting Each Other</name>

<figure title="Example Topology with Multihomed PEs Protecting Each Other" anchor="topo-mh"><artwork><![CDATA[

                        +-----[PE11]    [RR1]
                        |       |        |
                        |       +------+ |
                     [CE1]             [P1]---[PE2]-----[CE2]
                        |       +------+
                        |       |
                        +-----[PE12]

                203.0.113.11                             203.0.113.22
                          ----  Traffic direction ---->

]]></artwork></figure>

<t>In a MPLS network, a router CE1 may be multihomed to two PEs PE11 and PE12. The PEs may re-advertise routes received from CE1 to the IBGP core with self as nexthop and a MPLS Label. The PEs may also protect failure of primary path to router CE1 by using the IBGP path via the other multihomed PE as a backup path. The advertised label has forwarding state installed with both primary and backup paths</t>

<t>Following problems are possible in this scenario:</t>

<section anchor="label-oscillation-between-multihomed-pes"><name>Label oscillation between Multihomed PEs</name>

<t>If "per nexthop" label allocation mechanism is used at the PEs, label allocation oscillation may occur when PE11 advertises a new label to PE12. Reception of a new label results in change of nexthop at PE12, as the received label is used as backup/repair nexthop leg, and per-nexthop label allocation is in use. Thus a new label is allocated by PE12 and advertised. And when this new label is received by the PE11, it allocates a new label in turn. This process repeats.</t>

<t>This problem can happen for either SAFI 4 or SAFI 128 routes.</t>

<t>This oscillation can be stopped only if the primary path label allocated by a PE does not depend on the primary path label advertised by other PE. A PE needs to be able to advertise multiple labels, one for use as primary path and another to be used as repair path by the receiver.</t>

<t>MNH attribute allows to advertise a Repair forwarding path label using <xref target="repair-path-tlv"/> in addition to Primary forwarding path label using <xref target="primary-path-tlv"/>. This avoids this label oscillation problem.</t>

</section>
<section anchor="forwarding-loop-between-multihomed-pes"><name>Forwarding loop between Multihomed PEs</name>

<t>If "per VRF table" label allocation mechanism is used at the PEs, a temporary forwarding loop may between PE11, PE12 in events like the CE1 router going down, which will cause both PE11-CE1 and PE12-CE1 links go down.</t>

<t>PE11 will forward traffic coming from PE2 on the backup path towards PE12. That packet will perform IP lookup in the VRF at PE12, which will result in the packet getting forwarded over the backup/repair path towards PE11. This loop will persist until global convergence completes, with the PEs send BGP withdrawals for the routes received from CE1 to each other.</t>

<t>This problem can happen for SAFI 128 routes.</t>

<t>This loop can also be avoided if the a PE can advertise a 'Repair path label' that does not include the primary path label advertised by other PE. A PE needs to be able to advertise multiple labels, one for use as primary path and another to be used as repair path by the receiver.</t>

<t>MNH attribute allows to advertise a Repair forwarding path label using <xref target="repair-path-tlv"/> in addition to Primary forwarding path label using <xref target="primary-path-tlv"/>. This avoids this forwarding loop problem also.</t>

</section>
</section>
<section anchor="signaling-intent-over-pe-ce-attachment-circuit"><name>Signaling Intent over PE-CE Attachment Circuit</name>

<t>BGP CT specifies procedures for Intent Driven Service Mapping in a service provider network, and defines 'Transport Class' construct to represent an Intent.</t>

<t>It may be desirable to allow a CE device to indicate in the data packet it sends what treatment it desires (the Intent) when the packet is forwarded within the provider network.</t>

<t>This section describes the mechanisms that enable such signaling. These procedures use existing AFIs 1 or 2, and service families (SAFI 1) on the PE-CE attachment circuit, with a new BGP attribute.</t>

<figure title="Example Topology with PE-CE Links" anchor="topo-pe-ce-intent"><artwork><![CDATA[
                                    ---Gold----->
                      [CE1]-----[PE1]---[P]----[PE2]-----[CE2]
                                    ---Bronze--->
                203.0.113.11                             203.0.113.22
                          ----  Traffic direction ---->

]]></artwork></figure>

<section anchor="using-dscp-in-multinexthop-attribute"><name>Using DSCP in MultiNexthop Attribute</name>

<t>Such an indication can be in form of DSCP code point (<xref target="RFC2474"></xref>) in the IP header.</t>

<t>In RFC2474, a Forwarding Class Selector maps to a PHB (Per-hop Behavior). The Transport Class construct is a PHB at transport layer.</t>

<t>Let PE1 be configured to map DSCP1 to Gold Transport class, and DSCP2 to Bronze Transport class. Based on the DSCP code point received on the IP traffic from CE1, PE1 forwards the IP packet over a Gold or Bronze tunnel. Thus, the forwarding is not based on just the destination IP address, but also the DSCP code point. This is known as Class Based Forwarding (CBF). Today CBF is configured at the PE1 device roles and CE1 doesn't receive any indication in BGP signaling regarding what DSCP code points are being offered by the provider network.</t>

<t>With a BGP MultiNexthop Attribute attached to a AFI/SAFI 1/1 service route, it is possible to extend the PE-CE BGP signaling (if used) to communicate such information to the CE1. In the preceding example, the MNH contains two Next hop Legs, described by two Forwarding Instruction TLVs. Each Next hop Leg contains PE1's peering self address in Endpoint Identifier TLV (<xref target="ep-tlv"/>), the color Gold or Bronze encoded in the Transport class ID TLV (<xref target="tc-tlv"/>), and associated DSCP code point indicating Gold or Bronze transport class encoded in the Payload Encapsulation Info TLV (<xref target="encap-tlv"/>). This allows the CE to discover what transport classes exist in the provider network, and which DSCP codepoint to encode so that traffic is forwarded using the desired transport class in the provided network.</t>

</section>
<section anchor="mpls-enabled-ce"><name>MPLS-enabled CE</name>

<t>If the PE-CE link is MPLS enabled, a distinct MPLS label can also be used to express Intent in data packets from CE. Enabling MPLS forwarding on PE-CE links comes with some security implications. This section gives details on these aspects.</t>

<t>Consider the ingress PE1 receiving a VPN prefix RD:Pfx1 received with VPN label VL1, next hop as PE2 and a mapping community containing TC1 as 'Transport class ID'. PE1 can allocate a MPLS Label PVL1 for the tuple "VPN Label, PNH Address, Transport class ID" and advertise to CE1.</t>

<t>Label PVL1 may identifies a service function at any node in the network, e.g. a Firewall device or egress node PE2. And, for the same service prefix, a distinct label may be advertised to different CEs, such that incoming traffic from different CEs to the same service prefix can be diverted to a distinct devices in the network for further processing. This provides Ingress Peer Engineering control to the network.</t>

<t>PE1 installs a MPLS FIB route for PVL1 with next hop as "Swap VL1, Push TL1 towards PE2". TL1 is the BGP CT label received for the tuple 'PE2, TC1'. In forwarding, when MPLS packet with label PVL1 is received from CE1, PVL1 Swaps to label VL1 and pushes the BGP CT label TL1. PE1 advertises the label "PVL1" in the MNH to CE1. PE1 forwards based on MPLS label without performing any IP lookup. This allows for PE1 to be a low IP FIB device and still support CBF by using MPLS Label inferred PHB. The number of MPLS Labels consumed at PE1 for this approach will be proportional to the number of Service functions and Intents that are exposed to CE1.</t>

<t>A BGP MultiNexthop Attribute is attached to a AFI/SAFI 1/1 service route to convey the MPLS Label information to CE1. In the preceding example, the MNH contains two Next hop Legs, described by two Forwarding Instruction TLVs. Each Next hop Leg contains PE1's peering self address in Endpoint Identifier TLV (<xref target="ep-tlv"/>), the color Gold or Bronze encoded in the Transport class ID TLV (<xref target="tc-tlv"/>), and associated MPLS Label "PVL1" or "PVL2" encoded in the Payload Encapsulation Info TLV (<xref target="encap-tlv"/>). This allows the CE to discover what transport classes exist in the provider network, and which MPLS Label to encode so that traffic is forwarded using the desired transport class.</t>

<section anchor="secure-mpls-forwarding-on-inter-as-link"><name>Secure MPLS Forwarding on Inter-AS Link</name>

<t>The MPLS enabled PE-CE attachment circuit is considered connecting to an untrusted domain. Such interfaces can be secured against MPLS label spoofing by a walled garden approach using "MPLS context tables".</t>

<t>The PE1-CE1 interface can be confined to a specific MPLS context table "A" corresponding to the BGP peer. Such that only the routes for labels advertised to CE1 are installed in MPLS context table "A".</t>

<t>This ensures that if CE1 sends MPLS packet with a label that was not advertised to the CE1, the packet will be dropped.</t>

<t>Furthermore, the routes for labels PVL1, PVL2 installed in MPLS context table "A" can match on 'Bottom of stack' bit being 'one', ensuring a MPLS packet is accepted from CE1 only if it has no more than one label in the label stack.</t>

<t>However, the PE itself may not be able to perform any checks based on inner payload in the MPLS packet since it performs label swap forwarding. Such inner payload based checks may be offloaded to a downstream node that forwards and processes inner payload, e.g. a IP FIB router. These security aspects should be considered when using MPLS enabled CE devices.</t>

</section>
</section>
</section>
<section anchor="pe-signal-mpls-label-for-ipv4-unicast-routes"><name>4PE - Signal MPLS Label for IPv4 Unicast routes</name>

<t>This section describes how MNH can be used to signal MPLS explicit null label in AFI/SAFI: 1/1 routes in a pure IPv6 core environment, to achieve 4PE.</t>

<figure title="4PE Network with Pure IPv6 Core" anchor="fig-topo-4pe"><artwork><![CDATA[
                                   [RR1]
                                     .
                                     |
                                     __
                                  _.(  )..
       [CE1] - [PE1]-[P1]    ..  (_  v6  _) .. [PE2] - [CE2]
                                   (._..)


                    <---- Traffic Direction ----
              P1: PHP node.
              PE1: Egress PE.
]]></artwork></figure>

<t><xref target="fig-topo-4pe"/> shows a 4PE network with pure IPv6 core, PE1 is the egress PE connected to penultimate hop node P1. PE1 to PE2 have some IPv6 core tunneling protocol like LDPv6. When PE1 has advertised Implicit Null label in LDPv6, some implementations of P1 may not be able to forward the inner IPv4 payload to PE1.</t>

<t>To solve this problem, PE1 needs to signal IPv4 Explicit NULL Label (Special Label 0) to PE2. PE2 will push this IPv4 Explicit NULL Label received in the MNH on the AFI/SAFI:1/1 route. Such that P1 does a MPLS Label swap operation and does not need to look into inner payload.</t>

<t>MNH can be used by PE1 on a AFI/SAFI: 1/1 route, to advertise the IPv4 Explicit Null label for the IPv4 Unicast service route. MPLS Label is encoded in the Payload Encapsulation Info TLV (<xref target="encap-tlv"/>).</t>

<t>This allows the network to provide clear separation of service and transport routes, and not overloading AFI/SAFI: 1/4 to carry the IPv4 service routes. Not mixing service and transport routes improves security and manageability aspects of the network.</t>

<t>An egress PE may not need to advertise IPv4 Explicit Null label for the IPv4 service route, if it does UHP label in LDPv6. This model using MNH provides a homogenous service layer (AFI/SAFI: 1/1) that accommodates differences in requirement of different PE and P routers. Only the PEs which are connected to P nodes that cannot handle the PHP situation need to advertise Label using MNH. The service layer is kept consistent in the network, and can seamlessly extend to multiple domains without needing redistribution between AFI/SAFIs.</t>

<t>Not mixing service and transport routes improves security and manageability aspects of the network.</t>


</section>
</section>


  </back>

<!-- ##markdown-source:
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
SgEA

-->

</rfc>

