<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.16 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-malyushkin-bess-ip-vpn-abstract-next-hops-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.0 -->
  <front>
    <title abbrev="IP VPNs abstract next-hops">Abstract next-hop addresses in IP VPNs</title>
    <seriesInfo name="Internet-Draft" value="draft-malyushkin-bess-ip-vpn-abstract-next-hops-00"/>
    <author fullname="I. Malyushkin">
      <organization>Independent Contributor</organization>
      <address>
        <email>gmalyushkin@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="August" day="17"/>
    <area>Routing</area>
    <workgroup>BGP Enabled ServiceS</workgroup>
    <abstract>
      <t>This document discusses the IP VPN convergence aspects and specifies procedures for IP VPN to signal the attachment circuit failure. The specified procedures help significantly improve the IP VPN convergence.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-malyushkin-bess-ip-vpn-abstract-next-hops/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        BGP Enabled ServiceS Working Group mailing list (<eref target="mailto:bess@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/bess/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/bess/"/>.
      </t>
    </note>
  </front>
  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>Neither IP VPN <xref target="RFC4364"/> nor IPv6 VPN <xref target="RFC4659"/> have a mass routes withdrawal mechanism. The failure of a connection to a CE forces a PE to withdraw all affected VPN routes instead of noticing other PE routers about the attachment circuit failure. These routes may be packed into one or more BGP UPDATE messages and then disseminated through the network. Depending on the BGP topology these messages may be further processed and replicated by intermediate nodes (e.g., route reflectors). In general, every affected route must be withdrawn from all interested parties. The number of failed routes impacts the convergence time. More routes require more time. A sophisticated intermediate BGP topology may also negatively affect this time.</t>
      <t>Network`s convergence speed is important. There is a potential traffic loss that lasts until the failure notification (BGP UPDATE messages) reaches other members participating in the affected VPN service (i.e., routers using the affected VPN routes for traffic forwarding). Moreover, this loss happens at the egress point where the failed CE router is connected to the network and after traffic has proceeded a whole path.</t>
      <t>There is a mechanism to avoid this traffic loss that acts while the network is converging which is named the BGP PIC edge <xref target="I-D.ietf-rtgwg-bgp-pic"/>. This mechanism depends on the availability of an extra exit point for every affected route. In case when the CE router is connected to a pair of PE routers (i.e., it is multihomed) and a link between the CE and one of these PE fails all affected traffic can be redirected by this PE toward another. On the other hand, the BGP PIC edge when it is active at egress is associated with the sub-optimal routing. Traffic from an ingress PE must follow the path toward the egress PE where the failed link with the CE is attached. Then this egress PE redirects traffic thanks to the pre-installed backup records toward another PE. Such a tromboning can negatively influence traffic characteristics (delay, loss rate, etc.).</t>
      <t>Another problem with the BGP PIC edge at egress is a possible routing loop. Suppose a CE router is connected to a pair of PE routers and contributes to them a set of routes. These PE install these routes and propagate them via internal BGP VPN sessions. Both PEs receive these routes via a PE-CE protocol and the internal BGP VPN sessions. The routes received via the internal BGP VPN sessions are used as backups for the routes received via the PE-CE protocol. When the CE fails the PE routers activate their backups sending traffic to each other until TTL reaches zero.</t>
      <t>The BGP PIC edge mechanism is a transient solution. As soon as all VPN members are notified about the unreachability of all affected VPN routes traffic will be sent to the extra exit point in an optimal way or it will be dropped at ingress. The goal of the solution described in this document is to decrease the time required by all VPN members to be aware of the failure thus reduce the time the BGP PIC edge lasts. This solution does not replace the BGP PIC edge and can be applied to networks in parallel with it. It is recommended to combine them together.</t>
      <t>Even if destinations that were advertised by a failed CE lack alternatives the time of the network reaction may be important. Imagine that the CE advertises a huge number of routes and attracts a considerable amount of traffic, but for some reason, these routes do not have an alternative exit point. Until all other members of the VPN service are aware of the failure traffic will flow through the network in vain. The solution described in this document will significantly reduce this time.</t>
      <t>This document refers to <xref target="RFC4364"/> in all cases when a logic of the latter is applicable to both address families. <xref target="RFC4659"/> is referred to explicitly if it introduces a new logic.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="terminoly">
      <name>Terminoly</name>
      <t>The document uses the terminology defined in <xref target="RFC4271"/>, <xref target="RFC4364"/>, <xref target="RFC6513"/>, and <xref target="RFC3031"/>.</t>
      <dl newline="true">
        <dt>AC</dt>
        <dd>
          <t>Attachment Circuit.</t>
        </dd>
        <dt>GRT</dt>
        <dd>
          <t>Global Routing Table.</t>
        </dd>
        <dt>EC</dt>
        <dd>
          <t>BGP Extended Community <xref target="RFC4360"/>.</t>
        </dd>
        <dt>BGP VPN route</dt>
        <dd>
          <t>Either a VPN-IPv4 or VPN-IPv6 route.</t>
        </dd>
        <dt>Abstract Next-Hop (ANH) address</dt>
        <dd>
          <t>An artificial IPv4 or IPv6 address in the GRT that represents an address of CE in VRF.</t>
        </dd>
        <dt>Linked Address (LA)</dt>
        <dd>
          <t>An actual IPv4 or IPv6 address of CE that is bound (linked) to ANH.</t>
        </dd>
        <dt>ANH proxying</dt>
        <dd>
          <t>A unidirectional dependency between the statuses of ANH and LA.</t>
        </dd>
      </dl>
    </section>
    <section anchor="sd">
      <name>Solution Description</name>
      <t>Consider the topology in <xref target="fig1"/>. CE1 and CE2 maintain external BGP sessions with PE1 for IPv4 and IPv6 unicast address families. Both CEs send routes via these sessions, which must be reachable by CE3 through the VPN service. PE1 exports routes installed into VRF1 and send them as VPN routes to PE2.</t>
      <figure anchor="fig1">
        <name>IP/MPLS network with IP VPN</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="416" width="568" viewBox="0 0 568 416" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,112 L 8,176" fill="none" stroke="black"/>
              <path d="M 8,224 L 8,400" fill="none" stroke="black"/>
              <path d="M 40,32 L 40,64" fill="none" stroke="black"/>
              <path d="M 64,72 L 64,104" fill="none" stroke="black"/>
              <path d="M 64,184 L 64,216" fill="none" stroke="black"/>
              <path d="M 88,32 L 88,64" fill="none" stroke="black"/>
              <path d="M 120,112 L 120,176" fill="none" stroke="black"/>
              <path d="M 120,224 L 120,400" fill="none" stroke="black"/>
              <path d="M 168,240 L 168,384" fill="none" stroke="black"/>
              <path d="M 264,240 L 264,256" fill="none" stroke="black"/>
              <path d="M 264,288 L 264,336" fill="none" stroke="black"/>
              <path d="M 264,368 L 264,384" fill="none" stroke="black"/>
              <path d="M 512,256 L 512,288" fill="none" stroke="black"/>
              <path d="M 512,336 L 512,368" fill="none" stroke="black"/>
              <path d="M 560,256 L 560,288" fill="none" stroke="black"/>
              <path d="M 560,336 L 560,368" fill="none" stroke="black"/>
              <path d="M 40,32 L 88,32" fill="none" stroke="black"/>
              <path d="M 40,64 L 88,64" fill="none" stroke="black"/>
              <path d="M 8,112 L 120,112" fill="none" stroke="black"/>
              <path d="M 8,176 L 120,176" fill="none" stroke="black"/>
              <path d="M 8,224 L 120,224" fill="none" stroke="black"/>
              <path d="M 168,240 L 264,240" fill="none" stroke="black"/>
              <path d="M 512,256 L 560,256" fill="none" stroke="black"/>
              <path d="M 272,272 L 504,272" fill="none" stroke="black"/>
              <path d="M 512,288 L 560,288" fill="none" stroke="black"/>
              <path d="M 128,304 L 160,304" fill="none" stroke="black"/>
              <path d="M 512,336 L 560,336" fill="none" stroke="black"/>
              <path d="M 272,352 L 504,352" fill="none" stroke="black"/>
              <path d="M 512,368 L 560,368" fill="none" stroke="black"/>
              <path d="M 168,384 L 264,384" fill="none" stroke="black"/>
              <path d="M 8,400 L 120,400" fill="none" stroke="black"/>
              <g class="text">
                <text x="64" y="52">CE3</text>
                <text x="64" y="148">PE2</text>
                <text x="64" y="164">192.0.2.2</text>
                <text x="276" y="260">.0</text>
                <text x="384" y="260">198.51.100.0/31</text>
                <text x="492" y="260">.1</text>
                <text x="220" y="276">VRF1</text>
                <text x="256" y="276">AC1</text>
                <text x="536" y="276">CE1</text>
                <text x="280" y="292">::1</text>
                <text x="360" y="292">FE80::/64</text>
                <text x="488" y="292">::2</text>
                <text x="64" y="308">IP/MPLS</text>
                <text x="216" y="308">PE1</text>
                <text x="64" y="324">network</text>
                <text x="216" y="324">192.0.2.1</text>
                <text x="276" y="340">.2</text>
                <text x="384" y="340">198.51.100.2/31</text>
                <text x="492" y="340">.3</text>
                <text x="220" y="356">VRF1</text>
                <text x="256" y="356">AC2</text>
                <text x="536" y="356">CE2</text>
                <text x="280" y="372">::0</text>
                <text x="380" y="372">2001:DB8::/127</text>
                <text x="488" y="372">::1</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
    +-----+
    | CE3 |
    +-----+
       |
       |
+-------------+
|             |
|     PE2     |
|  192.0.2.2  |
+-------------+
       |
       |
+-------------+
|             |     +-----------+
|             |     |           |.0     198.51.100.0/31     .1 +-----+
|             |     |    VRF1 AC1------------------------------| CE1 |
|             |     |           |::1    FE80::/64          ::2 +-----+
|   IP/MPLS   |-----|    PE1    |
|   network   |     | 192.0.2.1 |
|             |     |           |.2     198.51.100.2/31     .3 +-----+
|             |     |    VRF1 AC2------------------------------| CE2 |
|             |     |           |::0    2001:DB8::/127     ::1 +-----+
|             |     +-----------+
+-------------+
]]></artwork>
        </artset>
      </figure>
      <t><xref target="fig2"/> shows the routes received from the CEs and installed into VRF1 by PE1 on the left and VPN routes advertised by PE1 on the right. The most interesting column here is "VPN Next-Hops". The address of 192.0.2.1 is a primary address of PE1 which is used as a default VPN next-hop address and as a source address of internal BGP sessions. All routes of CE2 use the default address of PE1 as the next-hop when exported as VPN routes. There is a special export policy on PE1 for the internal BGP sessions that modifies next-hops for the VPN-IPv4 routes of CE1 to the address of 192.0.2.100 and for the VPN-IPv6 routes of CE1 to the address of ::ffff:192.0.2.200.</t>
      <figure anchor="fig2">
        <name>Export routes into VPN by PE1</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="496" width="472" viewBox="0 0 472 496" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,288 L 8,480" fill="none" stroke="black"/>
              <path d="M 48,32 L 48,224" fill="none" stroke="black"/>
              <path d="M 184,288 L 184,480" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,224" fill="none" stroke="black"/>
              <path d="M 232,232 L 232,280" fill="none" stroke="black"/>
              <path d="M 344,32 L 344,224" fill="none" stroke="black"/>
              <path d="M 368,288 L 368,480" fill="none" stroke="black"/>
              <path d="M 432,32 L 432,224" fill="none" stroke="black"/>
              <path d="M 464,288 L 464,480" fill="none" stroke="black"/>
              <path d="M 48,32 L 432,32" fill="none" stroke="black"/>
              <path d="M 48,64 L 432,64" fill="none" stroke="black"/>
              <path d="M 48,80 L 432,80" fill="none" stroke="black"/>
              <path d="M 48,112 L 432,112" fill="none" stroke="black"/>
              <path d="M 48,144 L 432,144" fill="none" stroke="black"/>
              <path d="M 48,160 L 432,160" fill="none" stroke="black"/>
              <path d="M 48,192 L 432,192" fill="none" stroke="black"/>
              <path d="M 48,224 L 432,224" fill="none" stroke="black"/>
              <path d="M 8,288 L 464,288" fill="none" stroke="black"/>
              <path d="M 8,320 L 464,320" fill="none" stroke="black"/>
              <path d="M 8,336 L 464,336" fill="none" stroke="black"/>
              <path d="M 8,368 L 464,368" fill="none" stroke="black"/>
              <path d="M 8,400 L 464,400" fill="none" stroke="black"/>
              <path d="M 8,416 L 464,416" fill="none" stroke="black"/>
              <path d="M 8,448 L 464,448" fill="none" stroke="black"/>
              <path d="M 8,480 L 464,480" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="240,280 228,274.4 228,285.6" fill="black" transform="rotate(90,232,280)"/>
              <g class="text">
                <text x="100" y="52">VRF1</text>
                <text x="148" y="52">Routes</text>
                <text x="236" y="52">VRF1</text>
                <text x="296" y="52">Next-Hops</text>
                <text x="372" y="52">VRF1</text>
                <text x="408" y="52">ACs</text>
                <text x="116" y="100">203.0.113.0/25</text>
                <text x="268" y="100">198.51.100.1</text>
                <text x="368" y="100">AC1</text>
                <text x="124" y="132">203.0.113.128/25</text>
                <text x="268" y="132">198.51.100.3</text>
                <text x="368" y="132">AC2</text>
                <text x="128" y="180">2001:DB8:100::/64</text>
                <text x="248" y="180">FE80::2</text>
                <text x="368" y="180">AC1</text>
                <text x="128" y="212">2001:DB8:200::/64</text>
                <text x="264" y="212">2001:DB8::1</text>
                <text x="368" y="212">AC2</text>
                <text x="72" y="308">VPN</text>
                <text x="116" y="308">Routes</text>
                <text x="232" y="308">VPN</text>
                <text x="288" y="308">Next-Hops</text>
                <text x="392" y="308">VPN</text>
                <text x="432" y="308">Label</text>
                <text x="88" y="356">RD:203.0.113.0/25</text>
                <text x="248" y="356">0:192.0.2.100</text>
                <text x="392" y="356">100</text>
                <text x="96" y="388">RD:203.0.113.128/25</text>
                <text x="240" y="388">0:192.0.2.1</text>
                <text x="392" y="388">100</text>
                <text x="100" y="436">RD:2001:DB8:100::/64</text>
                <text x="276" y="436">0:::ffff:192.0.2.200</text>
                <text x="392" y="436">100</text>
                <text x="100" y="468">RD:2001:DB8:200::/64</text>
                <text x="268" y="468">0:::ffff:192.0.2.1</text>
                <text x="392" y="468">100</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
     +-------------------+----------------+----------+
     |    VRF1 Routes    | VRF1 Next-Hops | VRF1 ACs |
     +-------------------+----------------+----------+
     +-------------------+----------------+----------+
     | 203.0.113.0/25    | 198.51.100.1   | AC1      |
     +-------------------+----------------+----------+
     | 203.0.113.128/25  | 198.51.100.3   | AC2      |
     +-------------------+----------------+----------+
     +-------------------+----------------+----------+
     | 2001:DB8:100::/64 | FE80::2        | AC1      |
     +-------------------+----------------+----------+
     | 2001:DB8:200::/64 | 2001:DB8::1    | AC2      |
     +-------------------+----------------+----------+
                            |
                            |
                            v
+---------------------+----------------------+-----------+
|      VPN Routes     |    VPN Next-Hops     | VPN Label |
+---------------------+----------------------+-----------+
+---------------------+----------------------+-----------+
| RD:203.0.113.0/25   | 0:192.0.2.100        | 100       |
+---------------------+----------------------+-----------+
| RD:203.0.113.128/25 | 0:192.0.2.1          | 100       |
+---------------------+----------------------+-----------+
+---------------------+----------------------+-----------+
| RD:2001:DB8:100::/64| 0:::ffff:192.0.2.200 | 100       |
+---------------------+----------------------+-----------+
| RD:2001:DB8:200::/64| 0:::ffff:192.0.2.1   | 100       |
+---------------------+----------------------+-----------+
]]></artwork>
        </artset>
      </figure>
      <t>PE1 advertises unicast host-specific routes for the addresses 192.0.2.1, 192.0.2.100, and 192.0.2.200 via a routing protocol. PE2 receives these routes and installs them into the GRT. PE1 also allocates an MPLS label for the addresses mentioned above and distributes the bindings of this label via a label distribution protocol. PE2 receives these bindings and installs them into its tunnel table. Thus, PE2 can resolve all VPN routes that PE1 has sent.</t>
      <t>Suppose that AC2 between PE1 and CE2 has failed for some reason. When PE1 has noticed the failure it invalidates all routes inside VRF1 that were used to reach the CE2 addresses, 198.51.100.2/31 and 2001:DB8::/127. Other routes that recursively uses the routes to addresses of CE2 for look up their next-hops become inactive too. Because of that PE1 starts withdrawing the corresponding VPN routes, 203.0.113.128/25 and 2001:DB8:200::/64 (RD is omitted). PE2 must wait for these withdrawals before it stops sending traffic toward PE1 (traffic from CE3 to CE2).</t>
      <t>In another scenario, AC1 fails instead of AC2. Imagine, PE1 is configured to monitor the status of AC1 and in the case of the failure of AC1 PE1 immediately updates the routing protocol and the label distribution protocol. These updates include the withdrawal of the unicast routes for the addresses 192.0.2.100 and 192.0.2.200 (but not for 192.0.2.1) and the label bindings for them. In parallel with it, PE1 proceeds with the similar steps described previously for the case with the AC2 failure. PE2 eventually receives the updates either by the routing protocol or the label distribution protocol or both. Thanks to a hierarchical FIB it invalidates all VPN routes at once that use the failed routes (and tunnels) to their VPN next-hops. PE2 stops sending traffic to PE1 (traffic from CE3 to CE1) even if it has not received yet any withdrawals for the corresponding VPN routes.</t>
      <t>For the sake of brevity, both scenarios are discussed without alternative exit points for the routes inside VRF1 and just for a couple of such routes. In real deployments, CE can distribute much more routes to more than one PE. In that case, the mechanism described above can significantly improve the network convergence times.</t>
      <t>This document introduces the mechanism that helps notify VPN members about the AC failure that has happened to one of these members. The described solution expects the following:</t>
      <ul spacing="normal">
        <li>Hierarchical FIB <bcp14>MUST</bcp14> be supported and used among all VPN members.</li>
        <li>Any VPN member acting as an ingress PE <bcp14>MUST</bcp14> consider the status of a unicast route in the GRT toward the BGP next-hop (BGP next-hop tracking). This status <bcp14>MUST</bcp14> be considered during the BGP route resolution and after the route is placed into the appropriate routing table.</li>
        <li>It is <bcp14>RECOMMENDED</bcp14> for any VPN member acting as an ingress PE to consider the status of a tunnel toward the BGP next-hop also during the BGP VPN route resolution and after the route is placed into the appropriate routing table.</li>
      </ul>
      <t>The solution described in this document modifies the behavior of egress PE routers only and can be deployed incrementally.</t>
    </section>
    <section anchor="anh">
      <name>Abstract Next-Hop Address</name>
      <t><xref section="4.3.2" sectionFormat="of" target="RFC4364"/> states:</t>
      <ul empty="true">
        <li>
          <t>When a PE router distributes a VPN-IPv4 route via BGP, it uses its own address as the "BGP next hop".</t>
        </li>
      </ul>
      <t>In most cases, the "own address" is the address of a virtual interface (e.g., a loopback). This address usually acts as a tunnel endpoint for labeled traffic. The tunnel using it may be instantiated by different mechanisms and must be capable of forwarding MPLS traffic. The PE also uses this address as a source address of internal BGP sessions. Due to a virtual nature of the interface owning this address, it is nearly impossible to face the failure of this interface (except for artificial ways). Only the failure of a whole PE leads to it.</t>
      <t>The solution described in the document proposes using additional next-hops for VPN routes advertised by a single PE. This alters a behavior described in <xref target="RFC4364"/> and <xref target="RFC4659"/> that presupposes the advertising of a single next-hop address for all VPN routes of a PE. With regard to the described solution, additional next-hops advertised by a PE are named ANH addresses. An ANH address is an artificial IPv4 or IPv6 address that belongs to the GRT. An ANH acts as a proxy address for an actual address of a CE residing in a VRF. The status of the latter address influences the status of its ANH. A CE`s address selected for an ANH is named an LA. An LA may belong to a common subnet of a PE-CE pair in a VRF or can be any other address of the CE, it cannot belong to the GRT. An ANH and LA pair does not necessarily belong to the same address family. For example, it is possible to have an ANH of IPv4 and an LA of its ANH of IPv6, and vice versa. An LA can be a link-local IPv6 address, in this case, its ANH <bcp14>MUST</bcp14> be a proxy to a triplet (LA, AC, VRF) instead of (LA, VRF) where the LA belongs to the AC from the triplet.</t>
      <t>Addresses installed in different VRFs may be overlapped. Thus, values of ANHs may be arbitrary and do not have to be the same as their LAs. An operator is free to choose these values according to network address plans. To achieve goals stated in <xref target="intro"/> values of ANHs <bcp14>MUST</bcp14> be unique throughout the GRTs of the network. The case when several PE routers advertise the same value for the ANH (e.g., anycast) is out of the scope of this document.</t>
      <t>The ANH proxying is not a route leaking mechanism, it cannot be used for traffic forwarding between the GRT and a VRF in any direction. The ANH proxying creates a dependency between the statuses of an ANH and an LA (<xref target="anh_status"/>). An ANH <bcp14>MUST</bcp14> be bound to only one LA. An LA in turn <bcp14>MUST</bcp14> be bound to only one ANH. There is a strict one-to-one mapping between them. An operator may create the ANH proxying for any address in a VRF, but the solution expects that this address is used as a next-hop for routes in this VRF. These routes does not necessarily belong to the same CE that owns the LA (i.e., third-party next-hop).</t>
      <t>The ANH proxying can be described as a static host-specific route that is installed in the GRT. A destination address of this route is configured as a value selected for an ANH by an operator. A next-hop address of the static route is equal to an LA (selected for the ANH). Additionally, the operator configures a VRF (its name or index) directly for this static route. It points to where the next-hop of the route must be resolved. For unlabeled traffic coming to a PE via the GRT, the static route acts as a route to the bit bucket. This document does not restrict implementations by this mechanic.</t>
      <section anchor="anh_status">
        <name>Status of the Abstract Next-Hop</name>
        <t>The status of an ANH depends on the existence of a route to its LA. This route <bcp14>MUST</bcp14> be present in a VRF associated with the ANH. The ANH is considered active if and only if the route to its LA is active and is available for traffic forwarding. The proposed solution does not restrict the type of this route, but it <bcp14>MUST</bcp14> support at least direct routes and static routes. An implementation <bcp14>MAY</bcp14> filter the protocols used for resolution of LAs by a configuration policy.</t>
        <t>The status of an ANH is unidirectional, only the status of an LA defines the status of an ANH.</t>
        <t>An implementation <bcp14>MAY</bcp14> support the option of deactivation of an ANH manually by an operator.</t>
        <t>Besides the dependency on a route toward an LA, an ANH <bcp14>MAY</bcp14> be a client of any mechanism of active monitoring of the LA. It can be any next-hop tracking (ARP, ICMP probes if they are applicable to the LA) or a BFD <xref target="RFC5880"/> session between a CE that owns the LA and a PE that owns the ANH.</t>
      </section>
      <section anchor="anh_dist">
        <name>Distribution of the Abstract Next-Hop</name>
        <t>In general, the distribution of ANHs by means of a routing protocol does not differ from the distribution of any other addresses that are considered to be BGP next-hops.</t>
        <t>An ANH <bcp14>SHOULD</bcp14> be advertised by a routing protocol. In this case, the next conditions <bcp14>MUST</bcp14> be met:</t>
        <ul spacing="normal">
          <li>The status of the ANH is active (<xref target="anh_status"/>).</li>
          <li>The ANH is advertised as a host-specific route.</li>
          <li>This route is reachable by at least a subset of PEs via the routing protocol.</li>
          <li>These PEs import VPN routes with a BGP next-hop address equal to the ANH (covered by the route) in appropriate VRFs and use these VPN routes for traffic forwarding.</li>
        </ul>
        <t>This solution does not restrict the type of the routing protocol for ANH routes distribution.</t>
        <t>When the status of an ANH changes from active to inactive a PE <bcp14>MUST</bcp14> notify the other PEs receiving a route to this ANH. The speed of origination of such notification and its propagation is crucial.</t>
        <t>PEs that received a route to an ANH act according to the standard procedures that are applicable to the routing protocol. This solution does not modify this behavior.</t>
      </section>
      <section anchor="anh_tuns">
        <name>Tunnels to the Abstract Next-Hop</name>
        <t>A PE may have one or several ANHs and distributes them as per <xref target="anh_dist"/>. In that case, according to <xref section="5" sectionFormat="of" target="RFC4364"/> there <bcp14>MUST</bcp14> be a tunnel for every such address of the PE.</t>
        <t>This solution does not restrict the type of tunnels that point to ANHs, but these tunnels <bcp14>MUST</bcp14> forward MPLS traffic. However, an implementation of an egress tunnel endpoint may require some changes to support a point-to-point tunnel (e.g., RSVP-TE LSP <xref target="RFC3209"/> or IP GRE <xref target="RFC4032"/>) to an ANH. These changes are out of the scope of this document.</t>
        <t>The solution does not consider in detail using tunneling technologies other than MPLS LSPs for transport of labeled VPN traffic. The rest of the section is applicable to MPLS LSPs only.</t>
        <t>For all ANHs with LAs that belong to the same VRF, a PE <bcp14>MUST</bcp14> allocate the same label. A PE <bcp14>MAY</bcp14> allocate a single label for all ANHs (e.g., implicit label).</t>
        <t>When a PE allocates a label for an ANH it <bcp14>MUST</bcp14> associate a release timer with this label. If the status of the ANH changes to inactive the PE starts the release timer for the label. While the timer is active if the PE is receiving traffic with this label it <bcp14>MUST</bcp14> continue to handle this traffic like the failure has not happened. When the timer reaches zero the PE starts freeing the resources associated with the label. This timer does not influence the generation and advertising of the failure notification via the label distribution protocol. An implementation <bcp14>SHOULD</bcp14> support a manual setting of the release timer (including zero). If a label is allocated for a group of ANHs a PE starts the timer if and only if the last active address of the group becomes inactive.</t>
        <t>When a PE advertises a label binding to an ANH it either <bcp14>MUST</bcp14> be accomplished by a label distribution protocol in parallel with the advertising of the ANH via a routing protocol (<xref target="anh_dist"/>), or the ANH <bcp14>MUST</bcp14> be sent as a labeled route (e.g., BGP-LU <xref target="RFC8277"/>).</t>
        <t>When the status of an ANH (<xref target="anh_status"/>) changes to inactive and a label binding to this ANH was advertised by a PE via the label distribution protocol the PE <bcp14>MUST</bcp14> notify other routers receiving the label for this ANH. The speed of origination of such notification and its propagation is also important, this notification may be received before the notification via the routing protocol, or it may be the only notification channel (<xref target="dc_ra"/>).</t>
        <t>Routers that received a label binding for an ANH act according to the standard procedures that are applicable to the label distribution protocol. The proposed solution does not change the behavior of ingress LERs or LSRs.</t>
      </section>
    </section>
    <section anchor="vpn_dist">
      <name>Distribution of VPN Routes</name>
      <t>The solution that is proposed in this document is only applicable to VPN-IPv4 and VPN-IPv6 routes (i.e., SAFI 128). Using any other routes with ANHs is out of the scope of this document.</t>
      <t>For a group of routes installed in a VRF and united by a common next-hop address, an operator <bcp14>MAY</bcp14> set up an ANH as a next-hop of the corresponding VPN routes. The rest routes from the same VRF (if they are left) <bcp14>MUST</bcp14> be advertised by procedures <xref target="RFC4364"/> or <xref target="RFC4659"/> if it is supposed to advertise them.</t>
      <t>An ANH for VPN-IPv4 routes is encoded according to <xref section="4.3.2" sectionFormat="of" target="RFC4364"/> as a VPN-IPv4 address with an RD of 0.</t>
      <t>An ANH for VPN-IPv6 routes is encoded according to <xref section="3.2.1" sectionFormat="of" target="RFC4659"/> as a VPN-IPv6 address. This VPN-IPv6 address contains an RD of 0 and an IPv6 address which is equal to the ANH. In case when the ANH is the IPv4 address the VPN-IPv6 address is encoded as an IPv4-mapped IPv6 address. The procedures of including a link-local address are not altered by this solution.</t>
      <t>According to <xref section="4.3" sectionFormat="of" target="RFC4364"/>, routes that are installed in a VRF are converted to VPN routes (this statement is applicable to both address families), and "exported" to BGP. This solution assumes that all VPN routes are installed into the VPN Loc-RIB with a next-hop address that is equal to the own address of a PE where this VRF is configured. In the other words, the solution does not modify procedures for converting routes from VRFs to VPN routes.</t>
      <t>All routes in a Loc-RIB are processed into appropriate Adj-RIBs-Out according to configured policies <xref section="9.1.3" sectionFormat="comma" target="RFC4271"/>. The solution expects that there <bcp14>MUST</bcp14> be a special export policy that is applicable to routes undergoing from the VPN Loc-RIB to VPN Adj-RIBs-Out and is processed in a chain before all policies that are configured by an operator (if there are such policies). This special export policy modifies next-hop addresses only for those routes that are supposed by a configuration to be sent with ANHs (or a single ANH).</t>
      <t>A PE does not check the presence of a route to an ANH in the GRT before copying VPN routes from a Loc-RIB into a corresponding Adj-RIB-Out and during the Update-send process (<xref section="9.2" sectionFormat="of" target="RFC4271"/>). When the status of an ANH (<xref target="anh_status"/>) changes to inactive a PE does not start withdrawing VPN routes that use this ANH as their next-hop. It prevents churn in the case when an operator decides to maintain a network and manually disable the ANH. On the other hand, deleting a binding between an ANH and its LA <bcp14>MUST</bcp14> start changing the corresponding next-hop addresses in Adj-RIBs-Out to the default value (the value from the Loc-RIB).</t>
      <t>An implementation <bcp14>MAY</bcp14> support an option of selecting distinct Adj-RIBs-Out where VPN routes will be placed with ANHs.</t>
    </section>
    <section anchor="fwd">
      <name>Forwarding</name>
      <t>For an ingress PE, it is impossible to determine whether a next-hop address of received VPN routes is a regular address or an abstract one. The ingress PE considers every VPN next-hop address as the address of a standalone egress router even if a group of VPN next-hop addresses belongs to the same device. Having an active route and a tunnel to a BGP next-hop address the ingress PE encapsulates and sends traffic via the tunnel according to <xref section="5" sectionFormat="of" target="RFC4364"/>.</t>
      <t>If an egress PE receives MPLS traffic with a label that was allocated for one of its ANHs the solution expects the following (other cases are out of the scope of this document):</t>
      <ul spacing="normal">
        <li>This label <bcp14>MUST NOT</bcp14> contain a Bottom of Stack bit <xref target="RFC3032"/> is set.</li>
        <li>At a bottom of the received stack there <bcp14>MUST</bcp14> be a label that was allocated by the egress PE.</li>
        <li>There <bcp14>MAY</bcp14> be other labels between these two labels (e.g., entropy labels <xref target="RFC6790"/>).</li>
      </ul>
    </section>
    <section anchor="failure-detection">
      <name>Failure Detection</name>
      <section anchor="fd_egr">
        <name>Egress PE</name>
        <t>A PE detects the failure of a connected CE by different mechanisms. These mechanisms are not considered in this document. The net effect of the failure is the unreachability of routes to addresses (or a route to a single address) of the failed CE in a VRF where an AC to the CE resides. The PE usually uses these routes to recursively resolve next-hops for other routes in the VRF (are also usually distributed by the CE). All failed routes try to find new options to resolve their next-hops, if there are no such options the PE starts deleting the failed routes from the VRF.</t>
        <t>After the PE detected the CE had failed and if one of addresses of the CE is an LA the PE immediately deactivates an ANH of this LA. If a route to the ANH was distributed as per <xref target="anh_dist"/> the PE notifies all neighbors of a routing protocol. If the ANH was also bound to a label and this label was distributed via a label distribution protocol, the PE notifies all neighbors of the label distribution protocol.</t>
        <t>The PE may start distributing updates via BGP VPN sessions notifying its peers that the routes in the VRF are no longer reachable. This process does not relate to the process described above and the solution does not modify it. However, if the route to ANH was distributed by BGP via the same set of sessions that are used for VPN routes distribution an implementation <bcp14>SHOULD</bcp14> schedule sending of the UPDATE message with the ANH`s withdrawal prior to UPDATE messages with the failed VPN routes.</t>
      </section>
      <section anchor="fd_ing">
        <name>Ingress PE</name>
        <t>As stated in <xref target="sd"/>, the proposed solution expects an ingress PE to consider the status of a tunnel toward a BGP VPN next-hop. Thus, when the status of the tunnel changes to inactive the ingress PE simultaneously deactivates all VPN routes with a next-hop equal to an address of the tunnel`s endpoint. If the ingress PE does not follow this logic, the solution expects that the status of a route toward a BGP VPN next-hop in the GRT is used the same way. The ingress PE can apply both procedures. In any case, the ingress PE can react to the failure of a remote CE (the CE connected to a remote PE in the same VPN) or an AC to the CE independently of the receiving of BGP UPDATE messages that withdraw VPN routes pointing to this CE. The ingress PE may activate backups for these routes and redirect traffic by them.</t>
      </section>
    </section>
    <section anchor="deployment-considirations">
      <name>Deployment Considirations</name>
      <section anchor="dc_scal">
        <name>Scalability</name>
        <t>A requirement to have a tunnel to every next-hop address that a PE uses to advertise VPN routes may pose scalability concerns. There are some thoughts on how to deploy the described solution from the scalability point of view:</t>
        <ul spacing="normal">
          <li>Use multipoint-to-point tunnels to reach VPN next-hop addresses. It helps to reduce state on a PE that advertises VPN routes with these next-hops avoiding dependence on the number of upstream routers. It also reduces state on intermediate routers when the tunnels are LSPs.</li>
          <li>Selective installation of routes and tunnels helps spend resources only for VPN next-hop addresses that an ingress PE will use. If the ingress PE does not import a VPN route it is not always necessary to have a tunnel towards a next-hop address of this route. In the case of ANHs, having such tunnels is even more questionable.</li>
          <li>Do not use the ANH proxying for every possible CE address in every possible VRF. There are a lot of cases when the traditional VPN convergence is good enough.</li>
          <li>A PE may advertise a common label for all its ANHs if tunnels towards them are supposed to be LSPs. In this case, it is expected that the ANHs also share a common value for the release timer (<xref target="anh_tuns"/>). Using different values for the release timer may require to deaggregate labels.</li>
        </ul>
      </section>
      <section anchor="dc_use">
        <name>Using the Abstract Next-Hops</name>
        <t>Deploying of the ANH solution should be considered on a per-service basis. The following points may help to decide whether an ANH is appropriate:</t>
        <ul spacing="normal">
          <li>Most VPN services exchange a small number of routes, hundreds, or several thousand. Usually, any CE contributes a small portion of them, and its failure can be noticed and repaired by the network in a reasonable time. Imagine a situation when a CE advertises a significant number of routes, tens of thousands or more. In this case, the restoration after the failure of the CE may exceed the expected convergence time.</li>
          <li>Independently on the number of routes that are advertised by a CE existence of an extra exit point should be considered. Improving the switchover time requires a point where to switch.</li>
          <li>Sometimes it may be desirable to stop traffic flowing through a network after a destination CE fails, even if there is no extra exit point. For example, there is a cosiderable amount of traffic towards a failed CE.</li>
          <li>Some services require special treatment due to stricter SLAs, using ANH may help to achieve these SLAs.</li>
        </ul>
      </section>
      <section anchor="dc_fd">
        <name>Failure Detection</name>
        <t>It is worth noting the detection time of a CE failure or a failure of link (or an AC) to the CE. This time contributes much to overall convergence. For example, sometimes it is not possible to notice the link failure by a loss of a signal, and extra mechanisms are required for this task. Some of these mechanisms interact with a session of a PE-CE protocol. When these mechanisms detect the failure, routes distributed by an associated PE-CE protocol`s session will become inactive. At the same time routes toward addresses of the CE (or a single route) are usually not distributed by the PE-CE protocol`s session. They may be direct routes or statics. Thus, the routes toward the addresses of the CE are not affected by the detection mechanism described above and are staying alive. If one of the CE`s addresses is an LA the status of an ANH that is proxying to the LA will also be active. To prevent such behavior, it is recommended to use detection of the failure of an address of the CE or a route to this address (both on the PE and the CE, especially if the CE is multihomed). In the other words, it is better (in the described case) to monitor a next-hop for the routes distributed by the PE-CE protocol, but not the session of the PE-CE protocol.</t>
      </section>
      <section anchor="dc_ra">
        <name>Routes Aggregation</name>
        <t>Routes advertised by a routing protocol can be aggregated at some points of a network (e.g., ABRs). Such aggregation may lead to obscurity issues in the event of an ANH deactivation. The aggregation of routes removes a notification channel that is supplied by the routing protocol. A label distribution protocol can provide this notification channel when it is used for the distribution of labels for ANHs. But in this case, it requires all VPN members to consider the status of tunnels toward ANHs as described in <xref target="sd"/>.</t>
        <t>If LDP <xref target="RFC5036"/> is used as the label distribution protocol for ANHs, the following steps should be considered:</t>
        <ul spacing="normal">
          <li>LDP extension for Inter-Area LSPs <xref target="RFC5283"/> must be used through the network.</li>
          <li>If LDP is configured in Downstream Unsolicited mode it must also be configured in Ordered Control mode. LDP LSR with Independent Control mode on a path to ANH will break the notification channel.</li>
        </ul>
      </section>
    </section>
    <section anchor="mcc">
      <name>Multicast Considirations</name>
      <t><xref section="7" sectionFormat="of" target="RFC6514"/> introduces the VRF Route Import EC. <xref section="5.1.3" sectionFormat="of" target="RFC6513"/> describes a scenario when unicast VPN routes do not contain this community during the selection of Upstream PE:</t>
      <ul empty="true">
        <li>
          <t>If a route does not have a VRF Route Import Extended Community, the route's Upstream PE is determined from the route's BGP Next Hop.</t>
        </li>
      </ul>
      <t>The solution described in this document expects that unicast VPN routes of a VPN service may be sent by a PE with different BGP next-hop addresses. It may create an issue with the importing of C-Multicast routes if this VPN service also acts as MVPN and does not mark its VPN routes with the VRF Route Import EC. It is not recommended to configure a new import Route Target EC for every ANH. Instead, there are two possible ways to mitigate the described problem:</t>
      <ul spacing="normal">
        <li>Using procedures described in <xref section="10" sectionFormat="of" target="RFC6514"/>.</li>
        <li>Do not use ANHs for unicast VPN routes that cover multicast sources or RP addresses.</li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document specifies extensions for the advertisement of VPN routes with different next-hops by a signle PE. From this point of view, the security considirations described in <xref target="RFC4364"/> and <xref target="RFC4659"/> are equally applicable for the extensions described in this document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC4364" target="https://www.rfc-editor.org/info/rfc4364">
          <front>
            <title>BGP/MPLS IP Virtual Private Networks (VPNs)</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter">
              <organization/>
            </author>
            <date month="February" year="2006"/>
            <abstract>
              <t>This document describes a method by which a Service Provider may use an IP backbone to provide IP Virtual Private Networks (VPNs) for its customers.  This method uses a "peer model", in which the customers' edge routers (CE routers) send their routes to the Service Provider's edge routers (PE routers); there is no "overlay" visible to the customer's routing algorithm, and CE routers at different sites do not peer with each other.  Data packets are tunneled through the backbone, so that the core routers do not need to know the VPN routes.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4364"/>
          <seriesInfo name="DOI" value="10.17487/RFC4364"/>
        </reference>
        <reference anchor="RFC4659" target="https://www.rfc-editor.org/info/rfc4659">
          <front>
            <title>BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6 VPN</title>
            <author fullname="J. De Clercq" initials="J." surname="De Clercq">
              <organization/>
            </author>
            <author fullname="D. Ooms" initials="D." surname="Ooms">
              <organization/>
            </author>
            <author fullname="M. Carugi" initials="M." surname="Carugi">
              <organization/>
            </author>
            <author fullname="F. Le Faucheur" initials="F." surname="Le Faucheur">
              <organization/>
            </author>
            <date month="September" year="2006"/>
            <abstract>
              <t>This document describes a method by which a Service Provider may use its packet-switched backbone to provide Virtual Private Network (VPN) services for its IPv6 customers.  This method reuses, and extends where necessary, the "BGP/MPLS IP VPN" method for support of IPv6.  In BGP/MPLS IP VPN, "Multiprotocol BGP" is used for distributing IPv4 VPN routes over the service provider backbone, and MPLS is used to forward IPv4 VPN packets over the backbone.  This document defines an IPv6 VPN address family and describes the corresponding IPv6 VPN route distribution in "Multiprotocol BGP".</t>
              <t>This document defines support of the IPv6 VPN service over both an IPv4 and an IPv6 backbone, and for using various tunneling techniques over the core, including MPLS, IP-in-IP, Generic Routing Encapsulation (GRE) and IPsec protected tunnels.  The inter-working between an IPv4 site and an IPv6 site is outside the scope of this document.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4659"/>
          <seriesInfo name="DOI" value="10.17487/RFC4659"/>
        </reference>
        <reference anchor="RFC4271" target="https://www.rfc-editor.org/info/rfc4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter">
              <organization/>
            </author>
            <author fullname="T. Li" initials="T." role="editor" surname="Li">
              <organization/>
            </author>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares">
              <organization/>
            </author>
            <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="RFC3031" target="https://www.rfc-editor.org/info/rfc3031">
          <front>
            <title>Multiprotocol Label Switching Architecture</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <author fullname="A. Viswanathan" initials="A." surname="Viswanathan">
              <organization/>
            </author>
            <author fullname="R. Callon" initials="R." surname="Callon">
              <organization/>
            </author>
            <date month="January" year="2001"/>
            <abstract>
              <t>This document specifies the architecture for Multiprotocol Label Switching (MPLS).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3031"/>
          <seriesInfo name="DOI" value="10.17487/RFC3031"/>
        </reference>
        <reference anchor="RFC3032" target="https://www.rfc-editor.org/info/rfc3032">
          <front>
            <title>MPLS Label Stack Encoding</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <author fullname="D. Tappan" initials="D." surname="Tappan">
              <organization/>
            </author>
            <author fullname="G. Fedorkow" initials="G." surname="Fedorkow">
              <organization/>
            </author>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter">
              <organization/>
            </author>
            <author fullname="D. Farinacci" initials="D." surname="Farinacci">
              <organization/>
            </author>
            <author fullname="T. Li" initials="T." surname="Li">
              <organization/>
            </author>
            <author fullname="A. Conta" initials="A." surname="Conta">
              <organization/>
            </author>
            <date month="January" year="2001"/>
            <abstract>
              <t>This document specifies the encoding to be used by an LSR in order to transmit labeled packets on Point-to-Point Protocol (PPP) data links, on LAN data links, and possibly on other data links as well.  This document also specifies rules and procedures for processing the various fields of the label stack encoding.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3032"/>
          <seriesInfo name="DOI" value="10.17487/RFC3032"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8277" target="https://www.rfc-editor.org/info/rfc8277">
          <front>
            <title>Using BGP to Bind MPLS Labels to Address Prefixes</title>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <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="RFC3209" target="https://www.rfc-editor.org/info/rfc3209">
          <front>
            <title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
            <author fullname="D. Awduche" initials="D." surname="Awduche">
              <organization/>
            </author>
            <author fullname="L. Berger" initials="L." surname="Berger">
              <organization/>
            </author>
            <author fullname="D. Gan" initials="D." surname="Gan">
              <organization/>
            </author>
            <author fullname="T. Li" initials="T." surname="Li">
              <organization/>
            </author>
            <author fullname="V. Srinivasan" initials="V." surname="Srinivasan">
              <organization/>
            </author>
            <author fullname="G. Swallow" initials="G." surname="Swallow">
              <organization/>
            </author>
            <date month="December" year="2001"/>
            <abstract>
              <t>This document describes the use of RSVP (Resource Reservation Protocol), including all the necessary extensions, to establish label-switched paths (LSPs) in MPLS (Multi-Protocol Label Switching).  Since the flow along an LSP is completely identified by the label applied at the ingress node of the path, these paths may be treated as tunnels.  A key application of LSP tunnels is traffic engineering with MPLS as specified in RFC 2702.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3209"/>
          <seriesInfo name="DOI" value="10.17487/RFC3209"/>
        </reference>
        <reference anchor="RFC4032" target="https://www.rfc-editor.org/info/rfc4032">
          <front>
            <title>Update to the Session Initiation Protocol (SIP) Preconditions Framework</title>
            <author fullname="G. Camarillo" initials="G." surname="Camarillo">
              <organization/>
            </author>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat">
              <organization/>
            </author>
            <date month="March" year="2005"/>
            <abstract>
              <t>This document updates RFC 3312, which defines the framework for preconditions in SIP.  We provide guidelines for authors of new precondition types and describe how to use SIP preconditions in situations that involve session mobility.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4032"/>
          <seriesInfo name="DOI" value="10.17487/RFC4032"/>
        </reference>
        <reference anchor="RFC6790" target="https://www.rfc-editor.org/info/rfc6790">
          <front>
            <title>The Use of Entropy Labels in MPLS Forwarding</title>
            <author fullname="K. Kompella" initials="K." surname="Kompella">
              <organization/>
            </author>
            <author fullname="J. Drake" initials="J." surname="Drake">
              <organization/>
            </author>
            <author fullname="S. Amante" initials="S." surname="Amante">
              <organization/>
            </author>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx">
              <organization/>
            </author>
            <author fullname="L. Yong" initials="L." surname="Yong">
              <organization/>
            </author>
            <date month="November" year="2012"/>
            <abstract>
              <t>Load balancing is a powerful tool for engineering traffic across a network.  This memo suggests ways of improving load balancing across MPLS networks using the concept of "entropy labels".  It defines the concept, describes why entropy labels are useful, enumerates properties of entropy labels that allow maximal benefit, and shows how they can be signaled and used for various applications.  This document updates RFCs 3031, 3107, 3209, and 5036.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6790"/>
          <seriesInfo name="DOI" value="10.17487/RFC6790"/>
        </reference>
        <reference anchor="RFC5880" target="https://www.rfc-editor.org/info/rfc5880">
          <front>
            <title>Bidirectional Forwarding Detection (BFD)</title>
            <author fullname="D. Katz" initials="D." surname="Katz">
              <organization/>
            </author>
            <author fullname="D. Ward" initials="D." surname="Ward">
              <organization/>
            </author>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document describes a protocol intended to detect faults in the bidirectional path between two forwarding engines, including interfaces, data link(s), and to the extent possible the forwarding engines themselves, with potentially very low latency.  It operates independently of media, data protocols, and routing protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5880"/>
          <seriesInfo name="DOI" value="10.17487/RFC5880"/>
        </reference>
        <reference anchor="RFC4360" target="https://www.rfc-editor.org/info/rfc4360">
          <front>
            <title>BGP Extended Communities Attribute</title>
            <author fullname="S. Sangli" initials="S." surname="Sangli">
              <organization/>
            </author>
            <author fullname="D. Tappan" initials="D." surname="Tappan">
              <organization/>
            </author>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter">
              <organization/>
            </author>
            <date month="February" year="2006"/>
            <abstract>
              <t>This document describes the "extended community" BGP-4 attribute.  This attribute provides a mechanism for labeling information carried in BGP-4.  These labels can be used to control the distribution of this information, or for other applications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4360"/>
          <seriesInfo name="DOI" value="10.17487/RFC4360"/>
        </reference>
        <reference anchor="RFC5036" target="https://www.rfc-editor.org/info/rfc5036">
          <front>
            <title>LDP Specification</title>
            <author fullname="L. Andersson" initials="L." role="editor" surname="Andersson">
              <organization/>
            </author>
            <author fullname="I. Minei" initials="I." role="editor" surname="Minei">
              <organization/>
            </author>
            <author fullname="B. Thomas" initials="B." role="editor" surname="Thomas">
              <organization/>
            </author>
            <date month="October" year="2007"/>
            <abstract>
              <t>The architecture for Multiprotocol Label Switching (MPLS) is described in RFC 3031.  A fundamental concept in MPLS is that two Label Switching Routers (LSRs) must agree on the meaning of the labels used to forward traffic between and through them.  This common understanding is achieved by using a set of procedures, called a label distribution protocol, by which one LSR informs another of label bindings it has made.  This document defines a set of such procedures called LDP (for Label Distribution Protocol) by which LSRs distribute labels to support MPLS forwarding along normally routed paths.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5036"/>
          <seriesInfo name="DOI" value="10.17487/RFC5036"/>
        </reference>
        <reference anchor="RFC5283" target="https://www.rfc-editor.org/info/rfc5283">
          <front>
            <title>LDP Extension for Inter-Area Label Switched Paths (LSPs)</title>
            <author fullname="B. Decraene" initials="B." surname="Decraene">
              <organization/>
            </author>
            <author fullname="JL. Le Roux" initials="JL." surname="Le Roux">
              <organization/>
            </author>
            <author fullname="I. Minei" initials="I." surname="Minei">
              <organization/>
            </author>
            <date month="July" year="2008"/>
            <abstract>
              <t>To facilitate the establishment of Label Switched Paths (LSPs) that would span multiple IGP areas in a given Autonomous System (AS), this document describes a new optional Longest-Match Label Mapping Procedure for the Label Distribution Protocol (LDP).</t>
              <t>This procedure allows the use of a label if the Forwarding Equivalence Class (FEC) Element matches an entry in the Routing Information Base (RIB).  Matching is defined by an IP longest-match search and does not mandate an exact match.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5283"/>
          <seriesInfo name="DOI" value="10.17487/RFC5283"/>
        </reference>
        <reference anchor="RFC6513" target="https://www.rfc-editor.org/info/rfc6513">
          <front>
            <title>Multicast in MPLS/BGP IP VPNs</title>
            <author fullname="E. Rosen" initials="E." role="editor" surname="Rosen">
              <organization/>
            </author>
            <author fullname="R. Aggarwal" initials="R." role="editor" surname="Aggarwal">
              <organization/>
            </author>
            <date month="February" year="2012"/>
            <abstract>
              <t>In order for IP multicast traffic within a BGP/MPLS IP VPN (Virtual Private Network) to travel from one VPN site to another, special protocols and procedures must be implemented by the VPN Service Provider.  These protocols and procedures are specified in this document.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6513"/>
          <seriesInfo name="DOI" value="10.17487/RFC6513"/>
        </reference>
        <reference anchor="RFC6514" target="https://www.rfc-editor.org/info/rfc6514">
          <front>
            <title>BGP Encodings and Procedures for Multicast in MPLS/BGP IP VPNs</title>
            <author fullname="R. Aggarwal" initials="R." surname="Aggarwal">
              <organization/>
            </author>
            <author fullname="E. Rosen" initials="E." surname="Rosen">
              <organization/>
            </author>
            <author fullname="T. Morin" initials="T." surname="Morin">
              <organization/>
            </author>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter">
              <organization/>
            </author>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the BGP encodings and procedures for exchanging the information elements required by Multicast in MPLS/BGP IP VPNs, as specified in RFC 6513.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6514"/>
          <seriesInfo name="DOI" value="10.17487/RFC6514"/>
        </reference>
        <reference anchor="I-D.ietf-rtgwg-bgp-pic" target="https://www.ietf.org/archive/id/draft-ietf-rtgwg-bgp-pic-18.txt">
          <front>
            <title>BGP Prefix Independent Convergence</title>
            <author fullname="Ahmed Bashandy">
              <organization>Individual Contributor</organization>
            </author>
            <author fullname="Clarence Filsfils">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Prodosh Mohapatra">
              <organization>Sproute Networks</organization>
            </author>
            <date day="9" month="April" year="2022"/>
            <abstract>
              <t>In a network comprising thousands of BGP peers exchanging millions of
routes, many routes are reachable via more than one next-hop. Given
the large scaling targets, it is desirable to restore traffic after
failure in a time period that does not depend on the number of BGP
prefixes. In this document we proposed an architecture by which
traffic can be re-routed to ECMP or pre-calculated backup paths in a
timeframe that does not depend on the number of BGP prefixes. The
objective is achieved through organizing the forwarding data
structures in a hierarchical manner and sharing forwarding elements
among the maximum possible number of routes. The proposed technique
achieves prefix independent convergence while ensuring incremental
deployment, complete automation, and zero management and provisioning
effort. It is noteworthy to mention that the benefits of BGP Prefix
Independent Convergence (BGP-PIC) are hinged on the existence of more
than one path whether as ECMP or primary-backup.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rtgwg-bgp-pic-18"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank Roman Peshekhonov for his review and valuable input.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
