<?xml version="1.0" encoding="US-ASCII"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com)
     by Daniel M Kohn (private) -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="exp" docName="draft-ietf-idr-vpn-prefix-orf-33"
     ipr="trust200902">
  <front>
    <title abbrev="RD-ORF">VPN Prefix Outbound Route Filter (VPN Prefix ORF)
    for BGP-4</title>

    <author fullname="Wei Wang" initials="W" surname="Wang">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>Beiqijia Town, Changping District</street>

          <city>Beijing</city>

          <region>Beijing</region>

          <code>102209</code>

          <country>China</country>
        </postal>

        <email>weiwang94@foxmail.com</email>
      </address>
    </author>

    <author fullname="Aijun Wang" initials="A" surname="Wang">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>Beiqijia Town, Changping District</street>

          <city>Beijing</city>

          <region>Beijing</region>

          <code>102209</code>

          <country>China</country>
        </postal>

        <email>wangaj3@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Haibo Wang" initials="H" surname="Wang">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Building, No.156 Beiqing Rd.</street>

          <city>Beijing</city>

          <region>Beijing</region>

          <code>100095</code>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>rainsword.wang@huawei.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Gyan S. Mishra" initials="G" surname="Mishra">
      <organization>Verizon Inc.</organization>

      <address>
        <postal>
          <street>13101 Columbia Pike</street>

          <city>Silver Spring</city>

          <region/>

          <code>MD 20904</code>

          <country>United States of America</country>
        </postal>

        <facsimile/>

        <email>hayabusagsm@gmail.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Jie Dong" initials="J" surname="Dong">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Building, No.156 Beiqing Rd.</street>

          <city>Beijing</city>

          <region>Beijing</region>

          <code>100095</code>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>jie.dong@huawei.com</email>

        <uri/>
      </address>
    </author>

    <date day="30" month="March" year="2026"/>

    <area>RTG Area</area>

    <workgroup>IDR Working Group</workgroup>

    <keyword>RFC</keyword>

    <abstract>
      <t>This draft defines a new type of Outbound Route Filter (ORF), known
      as the Virtual Private Network (VPN) Prefix ORF. The VPN Prefix ORF
      mechanism is applicable when VPN routes from different Virtual Routing
      and Forwarding (VRF) instances are exchanged through a single shared
      Border Gateway Protocol (BGP) session.The purpose of VPN Prefix ORF
      mechanism is to control the overload of VPN routes based on RT. With
      this mechanism, the overload can be limited within the minimum
      range.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>The BGP Maximum Prefix feature <xref target="RFC4486"/> is often used
      at the network boundary to control the number of prefixes injected into
      the network. However, in scenarios where VPN routes from multiple VRFs
      are advertised over a shared BGP session, there is a lack of appropriate
      methods to control route flooding within one VRF. This flooding can
      overwhelming the processing of VPN routes in other VRFs, consequently
      degrading their performance (e.g., causing route drops, processing
      delays, and abnormal customer services). Therefore, it is desirable to
      control excessive VPN route advertisements individually for each VRF
      within such a shared BGP session.</t>

      <t>Several solutions can be used to alleviate this problem:<list
          style="symbols">
          <t>Route Target Constraint (RTC) as defined in <xref
          target="RFC4684"/></t>

          <t>Address Prefix ORF as defined in <xref target="RFC5292"/></t>

          <t>Covering Prefixes Outbound Route Filter (CP-ORF) mechanism as
          defined in <xref target="RFC7543"/></t>

          <t>Provider Edge (PE) - Customer Edge (CE) edge peer Maximum
          Prefix</t>

          <t>Configuring the Maximum Prefix for each VRF on edge nodes</t>
        </list></t>

      <t>However, each existing solution has its own limitation as described
      in Section 3.</t>

      <t>This draft defines a new type of Outbound Route Filter (ORF), called
      the VPN Prefix ORF. This mechanism is event-driven and does not require
      pre-configuration. When the number of VPN routes in a VRF exceeds the
      prefix limit, the router identifies the VPN prefix (Route Distinguisher
      (RD), Route Target (RT), source PE, etc.) of the overload VPN routes and
      sends a VPN Prefix ORF message to the BGP peer that announced these
      overload VPN routes. Upon receiving a VPN Prefix ORF entry, the BGP
      speaker filters and withdraws any overload VPN routes that were
      previously announced to its peer.</t>

      <t>The purpose of this mechanism is to control the overload within the
      minimum scope and avoid route churn effects when a VRF overflows. The
      VPN Prefix ORF mechanism is applicable when VPN routes from different
      VRFs are exchanged via a shared BGP session.</t>

      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in BCP
        14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
        when, they appear in all capitals, as shown here.</t>
      </section>
    </section>

    <section title="Terminology">
      <t>The following terms are used in this draft:<list style="symbols">
          <t>AFI: Address Family Identifier, defined in <xref
          target="RFC4760"/></t>

          <t>ASBR: Autonomous System Border Router.</t>

          <t>BGP: Border Gateway Protocol, defined in <xref
          target="RFC4271"/></t>

          <t>EVPN: BGP/MPLS Ethernet VPN, defined in <xref
          target="RFC7432"/></t>

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

          <t>ORF: Outbound Route Filter, defined in <xref
          target="RFC5291"/></t>

          <t>Quota: A threshold to limit the number of VPN routes under
          specific granularities (such as &lt;PE&gt;, &lt;RD, Source
          AS&gt;).</t>

          <t>RD: Route Distinguisher, defined in <xref target="RFC4364"/></t>

          <t>RIB: Routing Information Base.</t>

          <t>RR: Route Reflector, provides a simple solution to the problem of
          IBGP full mesh connection in large-scale IBGP implementation <xref
          target="RFC4456"/></t>

          <t>RT: Route Target, defined in <xref target="RFC4364"/></t>

          <t>SAFI: Subsequent Address Family Identifier, defined in <xref
          target="RFC4760"/></t>

          <t>VPN: Virtual Private Networks, defined in <xref
          target="RFC4364"/></t>

          <t>VRF: Virtual Routing Forwarding, a virtual routing table based on
          VPN instance.</t>
        </list></t>

      <t/>
    </section>

    <section title="Existing Solutions">
      <section title="Route Target Constraint (RTC)">
        <t>RTC can only filter the VPN routes from any uninterested VRFs, if
        the route overload comes from an interested VRF, the RTC mechanism
        can't filter them.</t>
      </section>

      <section title="Address Prefix ORF">
        <t>Using Address Prefix ORF to filter VPN routes requires a
        pre-configuration, but it is impossible to know in advance which
        prefix may exceed the predefined threshold.</t>
      </section>

      <section title="CP-ORF Mechanism">
        <t><xref target="RFC7543"/> defines the Covering Prefixes ORF
        (CP-ORF). A BGP speaker sends a CP-ORF to a peer in order to pull
        routes that cover a specified host address. A prefix covers a host
        address if it can be used to forward traffic towards that host
        address.</t>

        <t>CP-ORF is applicable in Virtual Hub-and-Spoke <xref
        target="RFC7024"/> VPN and also BGP/MPLS Ethernet VPN (EVPN) <xref
        target="RFC7432"/> networks, but its primary function is to retrieve
        interested VPN prefixes and it cannot be used to filter overload of
        VPN prefixes dynamically.</t>
      </section>

      <section title="PE-CE edge peer Maximum Prefix">
        <t>The BGP Maximum-Prefix feature controls the number of prefixes
        received from a neighbor. Configuring it on every PE-CE link can
        prevent VPN route overflow. However, relying solely on sender-side
        protection is insufficient. If the sender has not configured Maximum
        Prefix, the VPN Prefix ORF mechanism can still prevent VPN route
        overflow.</t>
      </section>

      <section title="Configuring the Maximum Prefix for each VRF on edge nodes">
        <t>When a VRF overflows, some implementations may stop importing
        routes. Any additional VPN routes are held in the Routing Information
        Base (RIB). However, PEs still need to parse the incoming BGP
        messages, which consumes CPU cycles and further burdens the overflowed
        PE.</t>

        <t>The VPN Prefix ORF mechanism improves upon this by enabling the
        overloaded PE to signal the specific overload routes back to the
        sender. The sender can then suppress these routes at the source,
        eliminating wasted processing and preserving resources for healthy
        VRFs.</t>
      </section>
    </section>

    <section anchor="Encodings" title="VPN Prefix ORF Encoding">
      <t>In this section, we describe the encoding of VPN Prefix ORF entries.
      The VPN Prefix ORF entries are carried in the BGP ROUTE-REFRESH message
      as defined in <xref target="RFC5291"/>. A BGP ROUTE-REFRESH message can
      carry one or more ORF entries. VPN Prefix ORF entries consist
      exclusively of Match fields with the value DENY. VPN Prefix ORF entries
      are evaluated in sequential order based on the Sequence field, defined
      below. When no VPN Prefix ORF entries in a non-empty VPN Prefix ORF
      match the route that is passed through the ORF, the Match criteria for
      the route is considered PERMIT. The format of a ROUTE-REFRESH message
      carrying VPN Prefix ORF entries is as follow:</t>

      <t><list style="symbols">
          <t>AFI (2 octets). The AFI MUST be set to IPv4, IPv6, or Layer 2 VPN
          (L2VPN).</t>

          <t>SAFI (1 octet). If the AFI is set to IPv4 or IPv6, the SAFI can
          be set to MCAST-VPN, MCAST-VPLS, VPLS, BGP EVPN or MPLS-Labeled VPN.
          If the AFI is set to L2VPN, the SAFI MUST be set to BGP EVPN. It is
          applicable for all types of EVPN routes as mentioned in <xref
          target="RFC7432"/>. The combination relationships between SAFI and
          AFI are presented in the Table 1:<figure>
              <artwork align="center"><![CDATA[     Table 1 The combination relationships between SAFI and AFI.
+-----------+-------------------------+----------------------------+
|    AFI    |          SAFI           |          Document          |
+-----------+-------------------------+----------------------------+
|IPv4(1)/   |MCAST-VPN(5)             | [RFC6514]                  |
|IPv6(2)    +-------------------------+----------------------------+
|           |MPLS-labeled VPN address | [RFC4364][RFC8277][RFC9252]|
|           |(128)                    |                            |
+-----------+-------------------------+----------------------------+
|L2VPN(25)  |BGP EVPNs(70)            | [RFC7432]                  |
|           +-------------------------+----------------------------+
|           |VPLS(65)                 | [RFC4761][RFC6074]         |     
|           +-------------------------+----------------------------+
|           |MCAST-VPLS(8)            | [RFC7117]                  |
+-----------+-------------------------+----------------------------+
]]></artwork>
            </figure></t>

          <t>When-to-refresh (1 octet): the value MUST be IMMEDIATE or
          DEFER.</t>

          <t>ORF Type (1 octet): The type of VPN Prefix ORF is 66.</t>

          <t>Length of ORF entries (2 octets)</t>
        </list>A VPN Prefix ORF entry contains a common part and type-specific
      part. The encoding of the common part is shown in Figure 1.<figure>
          <artwork align="center"><![CDATA[ +-----------------------------------------+
 |                                         |
 |            Action (2 bits)              |
 |                                         |
 +-----------------------------------------+
 |                                         |
 |             Match (1 bits)              |
 |                                         |
 +-----------------------------------------+
 |                                         |
 |      Overload VPN routes process        |
 |             method (1 bit)              |
 |                                         |
 +-----------------------------------------+
 |                                         |
 |            Reserved (4 bits)            |
 |                                         |
 +-----------------------------------------+
 
   Figure 1: VPN Prefix ORF type-common part encoding
]]></artwork>
        </figure><list style="symbols">
          <t>Action (2 bits): the value is ADD, REMOVE or REMOVE-ALL as
          described in <xref target="RFC5291"/>.</t>

          <t>Match (1 bit): the value is PERMIT or DENY as described in <xref
          target="RFC5291"/>. For the purpose of this document, only the DENY
          value is permitted. This bit MUST be set to 1.</t>

          <t>Overload VPN routes process method (1 bit):if the value is set to
          0, it means all overload VPN routes on the sender of VPN Prefix ORF
          message SHOULD be withdrawn and the receiver of such message SHOULD
          withdraw the overload VPN routes matching the ORF's type-specific
          part, defined below&#65307;If the value is set to 1, it means the
          sender of the VPN Prefix ORF message will refuse to accept new
          overload VPN routes and that the receiver of the VPN Prefix ORF
          message SHOULD NOT announce new overload VPN routes&#12290;The
          default value is 0. *This bit is specific to the ORF Type introduced
          by this document and MUST be ignored (i.e., considered to be 0) for
          all other ORF Types.* .</t>

          <t>Reserved (4 bits)</t>
        </list>VPN Prefix ORF also contains type-specific part. The encoding
      of the type-specific part is shown in Figure 2.</t>

      <t><figure>
          <artwork align="center"><![CDATA[ +-----------------------------------------+
 |                                         |
 |             Sequence (4 octets)         |
 |                                         |
 +-----------------------------------------+
 |                                         |
 |             Length (2 octets)           |
 |                                         |
 +-----------------------------------------+
 |                                         |
 |      Route Distinguisher (8 octets)     |
 |                                         |
 +-----------------------------------------+
 |                                         |
 |        Optional TLVs (variable)         |
 |                                         |
 +-----------------------------------------+
 
   Figure 2: VPN Prefix ORF type-specific encoding
]]></artwork>
        </figure><list style="symbols">
          <t>Sequence: Identifies the order in which VPN Prefix ORF is
          generated and evaluated. It uniquely identifies a VPN Prefix ORF
          entry, along with the AFI/SAFI, ORF-Type, and Route Distinguisher.
          The Sequence SHOULD be non-contiguous to facilitate the insertion of
          new rules at a later stage.</t>

          <t>Length: Specifies the length of this VPN Prefix ORF entry.</t>

          <t>Route Distinguisher: Distinguishes different user routes. The VPN
          Prefix ORF filters the VPN routes it intends to send based on Route
          Distinguisher. If the RD is set to 0, it indicates all VPN
          prefixes.</t>

          <t>Optional TLVs: Carries potential additional information to
          provide extensibility for the VPN Prefix ORF mechanism. Its format
          is shown in Figure 3. If one or more TLV(s) are unrecognized, the
          entire VPN Prefix ORF entry SHOULD be discarded.<figure>
              <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Type     |      Length   |       value (variable)        :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                  Figure 3 The format of optional TLV(s)]]></artwork>
            </figure></t>
        </list>Note that if the Action component of an ORF entry specifies
      REMOVE-ALL, the ORF entry does not include the type-specific part.</t>

      <t>When the BGP ROUTE-REFRESH message carries VPN Prefix ORF entries, it
      MUST be set as follows:</t>

      <t><list style="symbols">
          <t>The ORF-Type MUST be set to 66 (VPN Prefix ORF).</t>

          <t>The purpose of VPN Prefix ORF is to block unwanted VPN prefixes;
          therefore, the "Action" of a valid entry SHOULD be set to "DENY".
          VPN routes that do not match any corresponding VPN Prefix ORF
          entries MUST be imported into the corresponding VRF.</t>
        </list></t>

      <t>According to <xref target="RFC5291"/>, if any field in a VPN Prefix
      ORF entry in the message contains an unrecognized value, the entire
      specified ORF previously received is removed.</t>

      <t>A BGP speaker that is willing to receive ORF entries from its peer,
      or a BGP speaker that would like to send ORF entries to its peer,
      advertises this capability by using the Outbound Route Filtering
      Capability defined in <xref target="RFC5291"/>.</t>

      <section title="Source PE TLV (including 3 types)">
        <t>The Source PE TLV is defined to identify the originator of the VPN
        routes. The sender of the VPN Prefix ORF MUST check for the existence
        of the Source PE Extended Community (SPE EC) on the VPN route being
        matched. If the SPE EC exists, the sender MUST include its value in
        the Source PE TLV. Otherwise, the value of Source PE TLV SHOULD be set
        to the Next Hop address.</t>

        <t>The Source PE TLV SHOULD appear at most once within an individual
        ORF entry. If an ORF entry contains multiple Source PE TLVs, the
        entire ORF entry MUST be ignored.</t>

        <t>The source PE TLV supports the following types:<list
            style="symbols">
            <t>IPv4 Source PE TLV: Type = 1, Length = 4 octets, value = Next
            Hop address in IPv4 format.</t>

            <t>IPv6 Source PE TLV: Type = 2, Length = 16 octets, value = Next
            Hop address in IPv6 format (global IPv6 address only).</t>

            <t>Source PE identifier TLV: Type = 3, Length = 4 octets, value =
            the value of ORIGINATOR_ID in the Source PE Extended
            Community.</t>
          </list></t>
      </section>

      <section title="Source AS TLV">
        <t>The Source AS TLV is defined to identify the source AS number of
        the source PE. It is only required in inter-domain scenarios.</t>

        <t>The Source AS TLV SHOULD appear at most once within an individual
        ORF entry. If an ORF entry contains multiple Source AS TLVs, the
        entire entry SHOULD be ignored.</t>

        <t>The encoding of Source AS TLV is as follows:<list style="empty">
            <t>Type = 4, Length = 4 octets, value = the value of the Source AS
            field in the Source AS Extended Community, as defined in <xref
            target="RFC6514"/>.</t>
          </list></t>
      </section>

      <section title="Route Target TLV">
        <t>The Route Target TLV is defined to identify the RT of the
        overloaded VPN routes. The RT and RD can be used together to filter
        VPN routes if the source VRF contains multiple RTs, and the VPN routes
        with different RTs MAY be assigned to different VRFs on the
        receiver.</t>

        <t>If this TLV contains only one RT but multiple RTs are configured on
        the VPN route, the device SHOULD check whether the RT included in this
        TLV exists among the configured RTs. If so, the device SHOULD filter
        out the VPN route.</t>

        <t>The Route Target TLV supports the following type:<list
            style="empty">
            <t>Type = 5, Length = 8*n (where n is the number of RTs associated
            with the overloaded VPN routes) octets, value = the RT value(s) of
            the overload VPN routes. If multiple RTs are included, an exact
            match is required.</t>
          </list></t>
      </section>

      <section title="Route Type TLV">
        <t>This TLV applies to all VPN routes containing a route type field,
        to distinguish between different types of VPN routes and prevent the
        filtering of higher-priority routes .</t>

        <t>The encoding of Route Type TLV is as follow:<list style="empty">
            <t>Type = 6, Length = 1 octect, value = the value of Route Type
            field of the overload routes.</t>
          </list></t>
      </section>
    </section>

    <section title="The general procedures of VPN Prefix ORF mechanism">
      <section title="Process of VPN Prefix ORF mechanism on sender">
        <t>The operation of the VPN Prefix ORF mechanism on each device is
        independent. Each device makes a local judgment to determine whether
        it needs to send a VPN Prefix ORF message to its upstream peer.
        Operators can configure the algorithms according to their specific
        circumstances.</t>

        <t>This section describes the procedures for the receiving BGP peer to
        process VPN route information from the sending BGP peer. The VPN
        information includes updated VPN routes and their corresponding VPN
        instance identification information. Based on this identification
        information, the receiving BGP peer determines the newly added VPN
        routes and checks whether the number of these routes causes the total
        number of VPN routes to exceed the maximum route limit for the
        associated VPN instance.</t>

        <t>If the route limit of the VPN instance (identified by the VPN
        instance identification information) is reached or exceeded, the
        receiving BGP peer sends a VPN Prefix ORF message to the sending BGP
        peer. This message indicates that the sender SHOULD stop transmitting
        the corresponding VPN routes identified by the information.</t>

        <t>Before originating a VPN Prefix ORF message, the device SHOULD
        compare the list of RTs carried by the VPN routes with those imported
        by other VRFs on the device. If a route's RT is included in the import
        rules of other VRFs, the VPN Prefix ORF message MUST NOT be
        originated.</t>

        <t>The receiving and sending BGP peers are iBGP peers within the same
        Autonomous System (AS). The VPN instance identification information
        consists of the RD, and the instruction information is sent using ORF
        within the ROUTE-REFRESH message.</t>

        <t>The instruction information sent by the receiving BGP peer includes
        the following details:<list style="symbols">
            <t>ORF entries that are contained in the ROUTE-REFRESH
            message.</t>

            <t>An Action field (in ORF entries) set to a value that instructs
            the sending BGP peer to add the corresponding filter condition to
            its outbound route filter.</t>

            <t>A Match field (in ORF entries) set to a value that instructs
            the sending BGP peer to deny VPN route updates matching the
            corresponding ORF entries.</t>

            <t>An RD value (identifying the above mentioned VPN instance)
            added to the type-specific part of the ORF entries.</t>
          </list></t>

        <t>When multiple VRFs on a PE receive VPN routes with a specific RD,
        the PE sends a VPN Prefix ORF message if one of these VRFs exceeds its
        limit for routes with that RD. This prevents other non-exceeded VRFs
        from receiving VPN routes containing the same RD, thereby avoiding
        communication disruptions between these VRFs and the rejected VPN
        routes. In order to more finely control VPN routing, if not all VRFs
        on a PE that are interested in VPN routes with a specific RD exceed
        the limit, the PE MUST NOT send a VPN Prefix ORF entry.</t>

        <t>When the VPN Prefix ORF mechanism is triggered, the device SHOULD
        send alarm information to network operators.</t>

        <t>The procedures for senders of VPN Prefix ORF entries are described
        below:</t>

        <figure>
          <artwork><![CDATA[S01. For each VRF v that receives updated VPN routes {
S02.     If (the total number of prefixes in VRF v exceeds its 
         configured prefix limit) {
S03.         RT_set = the set of Route Targets imported by VRF v.
S04.         overload_RD_source_pairs = all <RD, Source PE> 
             tuples from the newly received routes that belong 
             to VRF v.

             // Check if any RT in RT_set is also imported by 
                another VRF that has NOT exceeded its limit
S05.         conflict_exists = FALSE;
S06.         For each RT r in RT_set {
S07.             For each other VRF u on this device {
S08.                 If (r is in the import RT list of VRF u) 
                     AND (the prefix count of VRF u <= its 
                     prefix limit) {
S09.                     conflict_exists = TRUE;
S10.                 }
S11.             }
S12.         }

S13.         If (conflict_exists == TRUE) {
S14.             // Cannot send ORF: would block routes needed
                    by healthy VRFs
S15.             Send warning message to the operator.
S16.         }

S17.         // Safe to send ORF entries
S18.         For each <RD_x, PE_y> in overload_RD_source_pairs {
S19.             Collect all RTs carried by routes with RD=RD_x 
                 from source PE_y that are imported into VRF v.

S20.             Construct a VPN Prefix ORF entry with:
S21.                 Action = ADD,
S22.                 Match = DENY,
S23.                 Overload VPN routes process method = 0,
S24.                 Sequence = Generate unique Sequence number,
S25.                 Route Distinguisher = RD_x,
S26.                 Optional TLVs include:
S27.                     Source PE TLV = PE_y,
S28.                     Route Target TLV = RT_list.

S29.             Send a BGP ROUTE-REFRESH message containing this 
                 ORF entry to the upstream BGP peer (e.g., RR).
S30.             Send an alarm message to the operator indicating 
                 VRF v overflow and ORF transmission.
S31.         }
S32.     } Else {
S33.         // No overflow in this VRF; no ORF triggered
S34.         Continue normal route processing.
S35.     }
S36. }]]></artwork>
        </figure>

        <t/>

        <section title="Intra-domain Scenarios and Solutions">
          <t>For intra-AS VPN deployment, there are two scenarios:<list
              style="symbols">
              <t>unique RD (per VPN, per PE).</t>

              <t>the same RD (per VPN, same on all PEs)</t>
            </list></t>

          <t>Detailed descriptions about the above solutions are in provided
          Appendix B.</t>
        </section>
      </section>

      <section title="Protocol process of VPN Prefix ORF mechanism on receiver">
        <t>The VPN Prefix ORF is used mainly to block the unwanted BGP
        updates. When the receiver receives a VPN Prefix ORF entry, it MUST
        check first whether the "Match" bit is "DENY" or not.</t>

        <t>If the "Match" bit is "PERMIT", the entry MUST be discarded and a
        warning MUST be sent to the operator.</t>

        <t>The default entry for the VPN Prefix ORF type is "Permit All",
        which means that all routes that do not match the existing entries in
        the VPN Prefix ORF table shall be advertised. The following procedures
        will only be evaluated when the "Match" bit is "DENY".</t>

        <t>The receiver of VPN Prefix ORF entries (which may be an RR, ASBR or
        PE) performs the following actions upon receiving a VPN Prefix ORF
        entry from its BGP peer:<figure>
            <artwork><![CDATA[S01. The receiver checks the combination of <AFI/SAFI, ORF-Type, 
     Sequence, Route Distinguisher> in the received VPN Prefix 
     ORF entry.
S02. If (the combination does not already exist in the ORF-Policy
     table) {
S03.     The receiver adds the VPN Prefix ORF entry to the 
         ORF-Policy table.
S04. } else if (Action is set to ADD) {
S05.         The receiver overwrite the old VPN Prefix ORF entry
             with the new one.
S06. } else if (Action is set to REMOVE) {
S07.         The receiver removes the corresponding VPN Prefix ORF
             entry from the ORF-Policy table.
S07. } else {
             The receiver SHOULD remove all VPN Prefix ORF entries
             from the ORF-Policy table. 
S08. }
]]></artwork>
          </figure></t>

        <t>The filtering conditions for stored VPN Prefix ORF entries include
        the RD and RT of the source PE.</t>

        <t>If the SPE EC is not attached to the BGP Update message for the VPN
        prefixes, the receiver MUST use NEXT_HOP or ORIGINATOR_ID attribute as
        the originator of the VPN prefix to match against the VPN Prefix ORF
        entry.</t>

        <t>After installing the filter entries for outbound VPN prefixes, the
        receiver performs the following actions before sending VPN
        routes:<figure>
            <artwork><![CDATA[S01. The receiver checks if there are matching filtering conditions
     in the ORF-Policy table for the VPN routes. 
S02. If (no matching filtering conditions exist) {
S03.     The receiver sends the VPN routes.
S04. } else {
S05.     If (the "Overload VPN routes process method" bit is set
         to 0) {
S06.         The receiver withdraws all the VPN routes identified 
             by RD, RT and any relevant information in the optional
             TLVs within the entry, and stops sending the 
             corresponding VPN routes to the sender of the VPN 
             Prefix ORF entry.
S07.     } else {
S08.         The receiver stops sending the newly learnt matched VPN
             routes according to the value of RD, RT and any relevant information
             in optional TLVs within the entry to the sender of the
             VPN Prefix ORF entry.

S09. }
]]></artwork>
          </figure></t>

        <t>The procedure above can be used for route refresh processing after
        receiving an ORF update and the usual VPN route propagation. A change
        to the ORF prefixes triggers a rescan of the relevant routing
        information, followed by a route refresh. In contrast, regular
        individual VPN route updates are only subject to matching against the
        existing ORF rules.</t>

        <t>The route-refresh procedure as specified in [RFC5291] is modified
        in the presence of VPN Prefix ORF Type entry with O-bit set to 1. The
        receiver is required to keep track of routes matching the ORF entries
        with O-bit set to 1 that have been already sent to the peer before
        those ORF entries were received and continue to advertise them even if
        denied by those ORF entries during both route-refresh processing and
        subsequent updates received for those routes. </t>
      </section>
    </section>

    <section title="Source PE Extended Community">
      <t>Next Hop does not always identify the source as seen in the following
      scenarios:<list style="symbols">
          <t>a PE MAY have multiple addresses, so that its BGP peer MAY
          receive several different next hop addresses from the same
          source.</t>

          <t>In an Option B inter-domain scenario, the ASBR will change the
          Next Hop.</t>
        </list></t>

      <t>ORIGINATOR_ID is a non-transitive attribute generated by an RR to
      identify the source, but ORIGINATOR_ID cannot be advertised outside the
      local AS. To address these scenarios, we define a new Extended
      Community: Source PE Extended Community (SPE EC), which is designed to
      transmit the identifier of the source PE. The value of the SPE EC can be
      set by the source PE, RR or Autonomous System Boundary Router (ASBR).
      Once set and attached to a BGP UPDATE message, its value SHOULD NOT be
      altered along the advertisement path.</t>

      <t/>

      <t>The AS number of the source PE can be conveyed by the Source AS
      Extended Community, as defined in <xref target="RFC6514"/></t>

      <t>The format of SPE EC is shown as Figure 4. <figure>
          <artwork align="center"><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Type (TBD)        |          ORIGINATOR_ID        :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:     ORIGINATOR_ID (cont.)     |            Reserved           :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                Figure 4 The format of SPE EC
]]></artwork>
        </figure></t>

      <t>Where:<list style="symbols">
          <t>Type: Specifies the type value assigned by IANA, now it is
          TBD.</t>

          <t>ORIGINATOR_ID: Specifies the identifier of the source PE.</t>

          <t>Reserved: MUST be set to zero on transmission.</t>
        </list></t>

      <t>For an RR/ASBR, it SHOULD perform the following actions:<list
          style="symbols">
          <t>Check for the existence of the SPE EC. If it exists, the RR/ASBR
          MUST NOT change it.</t>

          <t>If the SPE EC does not exist, check for the existence of the
          ORIGINATOR_ID. If it exists, put it into the SPE EC.</t>

          <t>If the ORIGINATOR_ID does not exist, put the router-id of the
          source PE into the SPE EC.</t>
        </list></t>

      <t>This section extends route reflection behaviours, meaning that if
      support for this feature extension is required, the RR MUST perform the
      additional actions specified above.</t>
    </section>

    <section title="Operational Considerations">
      <section title="Quota value calculation">
        <t>The VPN Prefix ORF mechanism is designed for intra-domain BGP/MPLS
        IP VPN <xref target="RFC4364"/> and BGP/MPLS Ethernet VPN (EVPN) <xref
        target="RFC7432"/> deployments where multiple VRFs on a Provider Edge
        (PE) router exchange VPN routes via a single shared iBGP session
        (typically with a Route Reflector).</t>

        <t>This mechanism operates in two modes:<list style="symbols">
            <t>Basic mode: Triggered solely by VRF-level prefix limits. No
            per-source quota configuration is required. In this mode, the PE
            sends a VPN Prefix ORF only if all VRFs that import the same Route
            Target(s) have exceeded their respective prefix limits.</t>

            <t>Granular mode (optional): Enabled when operators configure
            per-&lt;Route Distinguisher, Source PE&gt; quotas via their
            Network Management System (NMS) or CLI. This enables finer-grained
            control, allowing ORF triggering even if only one VRF exceeds its
            limit while others sharing the same RT remain healthy, provided
            that the overload routes originate from a specific source.</t>
          </list></t>

        <t>Quota is a threshold to limit the number of VPN routes under
        specific granularities (such as &lt;PE&gt;, &lt;RD, Source AS&gt;). In
        deployment, quota values SHOULD be set and delivered by the Network
        Management System (NMS).</t>

        <t>When the granular mode is enabled, an operator may configure a
        quota for each &lt;RD, Source PE&gt; tuple imported into a VRF. This
        quota represents the maximum number of prefixes allowed from that
        specific source for the given RD.</t>

        <t>The quota value can be derived based on historical traffic
        patterns, service level agreements (SLAs), or static provisioning via
        NMS/CLI. It is not a prerequisite for the VPN Prefix ORF mechanism to
        operate; the mechanism defaults to VRF-level prefix limit enforcement
        if no per-source quotas are configured.</t>

        <t>If the quota value is set to (VRF prefix limit/the number of PEs),
        whenever a new PE access to the network, the quota value SHOULD be
        re-evaluated or adjusted accordingly.</t>

        <t>To avoid frequent changes to the quota value, the value SHOULD be
        set based on the following formula:</t>

        <t>Quota=MIN[(Margins coefficient)*&lt;PE,CE limit&gt;*&lt;Number of
        PEs within the VPN, includes the possibility expansion in futures&gt;,
        VRF Prefixes Limit]</t>

        <t>It SHOULD be noted that the above formula is only an example, the
        operators can use different formulas based on actual needs in
        management plane.</t>

        <t/>
      </section>

      <section title="Withdraw of VPN Prefix ORF entries">
        <t>When the VPN Prefix ORF mechanism is triggered, a warning message
        will be generated and sent to the network operators. Operators SHOULD
        manually configure the network to resume normal operation. Since
        devices can record the VPN Prefix ORF entries sent by each VRF,
        operators can identify the entries that need to be withdrawn and
        manually trigger the withdraw process.</t>

        <t>The withdrawal of the VPN Prefix ORF mechanism is manually
        triggered, and its activation requires two conditions: <list
            style="numbers">
            <t>Network operation and maintenance personnel have confirmed
            through device alarms that the issue of "overload routes", which
            originally caused the VRF route count to exceed the limit --- has
            been resolved;</t>

            <t>Operation and maintenance personnel have located the target ORF
            entry to be withdrawn. Devices record the VPN Prefix ORF entries
            sent by each VRF, providing a basis for personnel to locate the
            target of the withdrawal.</t>
          </list></t>

        <t>Operation and maintenance personnel manually configure withdrawal
        commands on the device that triggered the ORF (typically the original
        ORF sender, such as a PE with an exceeded route limit). The commands
        MUST include the unique identification information of the target ORF
        entry, and set the "Action" field of the ORF entry to "REMOVE" (for
        removing a single entry) or "REMOVE-ALL" (for removing all entries of
        the same type).</t>

        <t>The withdrawal of ORF entries relies on manual intervention from a
        management entity (e.g., NMS), and there is no automatic withdrawal
        mechanism. This is to prevent route disruptions caused by
        misoperations.</t>
      </section>
    </section>

    <section title="Security Considerations">
      <t>On devices that support VPN Prefix ORF mechanism, it is necessary to
      enforce a per-peer limit on the number of VPN Prefix ORF entries. Once
      this limit is exceeded, the peer will ignore all newly received VPN
      Prefix ORF entries.</t>

      <t>Others security considerations are aligned with <xref
      target="RFC4271"/>.</t>
    </section>

    <section title="IANA Considerations">
      <section anchor="iana" title="VPN Prefix Outbound Route Filter">
        <t>This document defines a new Outbound Route Filter type, entitled
        "VPN Prefix Outbound Route Filter (VPN Prefix ORF)", and assigns a
        value of 66 from the BGP Outbound Route Filtering (ORF) Types space
        which is under the "Border Gateway Protocol (BGP) Parameters" registry
        group.</t>

        <figure align="center">
          <artwork><![CDATA[ +==========+=========================+=========================+
 | Value    | Description             | Reference               |
 +====================================+=========================+
 | 66    | VPN Prefix ORF             | This document           |
 +----------+-------------------------+-------------------------+

]]></artwork>
        </figure>

        <t/>
      </section>

      <section title="VPN Prefix ORF TLV types">
        <t>This document defines a new "VPN Prefix ORF TLV Type" subregistry
        in the "Border Gateway Protocol (BGP) Parameters" registry. The
        registration policies, per <xref target="RFC8126"/>, for this
        subregistry are as follows:<figure align="center">
            <artwork><![CDATA[under "Border Gateway Protocol (BGP) Parameters"
Registry: "VPN Prefix ORF TLV"
 +==========+=========================+
 | Range    | Registration Procedures |
 +====================================+
 | 0-127    | IETF Review             |
 +----------+-------------------------+
 | 128-255  | First Come First Served |
 +----------+-------------------------+
]]></artwork>
          </figure></t>

        <t>IANA should make initial assignments as follows:</t>

        <t><figure align="center">
            <artwork><![CDATA[ +=========+==========================+===========================+
 | Value   | Description              | Reference                 |
 +=========+==========================+===========================+
 | 0       | Reserved                 | This document             |
 +---------+--------------------------+---------------------------+
 | 1       | IPv4 Source PE TLV       | This document             |
 +---------+--------------------------+---------------------------+
 | 2       | IPv6 Source PE TLV       | This document             |
 +---------+--------------------------+---------------------------+
 | 3       | Source PE Identifier TLV | This document             |
 +---------+--------------------------+---------------------------+
 | 4       | Source AS TLV            | This document             |
 +---------+--------------------------+---------------------------+
 | 5       | Route Target TLV         | This document             |
 +---------+--------------------------+---------------------------+
 | 6       | Route Type TLV           | This document             |
 +---------+--------------------------+---------------------------+
 | 7-127   | Unassigned               |                           |
 +---------+--------------------------+---------------------------+
 | 128-255 | Unassigned               |                           |
 +---------+--------------------------+---------------------------+
]]></artwork>
          </figure></t>
      </section>

      <section title="Source PE Extended Community">
        <t>This document defines a new BGP Transitive Extended Community Type
        called "Source PE Extended Community". Codepoint 0x0d is suggested to
        be allocated to the Source PE Extended Community.<figure align="left">
            <artwork><![CDATA[        Under "BGP Transitive Extended Community Types"
        Registry: "Source PE Extended Community"
         0x0d(suggested)         Source PE Extended Community
]]></artwork>
          </figure></t>
      </section>

      <section title="Commen part of ORF entry">
        <t>IANA needs to make a new "ORF Entry Bits" registry in the "Border
        Gateway Protocol (BGP) Parameters" registry. The registration policy
        for this subregistry is IETF Review.</t>

        <t>IANA should make initial assignments as follows:</t>

        <t><figure align="left">
            <artwork><![CDATA[ +==============+==============+===========================+===========+
 | Bit Position | Name         | Description               | Reference |
 +==============+==============+===========================+===========+
 | 0-1          | Action       | The value of this field   |  RFC5291  |
                |              | is 0 for ADD,1 for REMOVE,|           |
                |              | and 2 for REMOVE-ALL.     |           |
 +--------------+--------------+---------------------------+-----------+
 | 2            | Match        | The value of this field is|  RFC5291  |
 |              |              | 0 for PERMIT and 1 for    |           |
 |              |              |  DENY.                    |           |
 +--------------+--------------+---------------------------+-----------+
 | 3            | Overload VPN | The value of this field is| This      |
                  routes       | 0 for withdrawn all       | document  |
 |              | process      | overload VPN routes, and 1|           |
 |              | method       | for refusing to receive   |           |
 |              |              | new overload VPN routes.  |           |
 +--------------+--------------+---------------------------+-----------+
 | 4-7          | Reserved     |                           |  RFC5291  |
 +--------------+--------------+---------------------------+-----------+

]]></artwork>
          </figure></t>
      </section>
    </section>

    <section title="Contributor">
      <t>Shunwan Zhuang</t>

      <t>Huawei Technologies</t>

      <t>Huawei Building, No.156 Beiqing Rd.</t>

      <t>Beijing</t>

      <t>Beijing, 100095 China</t>
    </section>

    <section title="Acknowledgement">
      <t>Thanks Jeffrey Haas, Robert Raszuk, Jim Uttaro, Jakob Heitz, Jeff
      Tantsura, Rajiv Asati, John E Drake, Gert Doering, Shuanglong Chen, Enke
      Chen, Srihari Sangli and Igor Malyushkin for their valuable comments on
      this draft.</t>

      <t>Thanks Qian Wang and Penglun Zhang for their development work on the
      FRR-based implementation of the technical solution described in this
      document.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.4364"?>

      <?rfc include="reference.RFC.7432"?>

      <?rfc include="reference.RFC.5291"?>

      <?rfc include='reference.RFC.4760'?>

      <?rfc include='reference.RFC.4684'?>

      <?rfc include='reference.RFC.5292'?>

      <?rfc include='reference.RFC.7543'?>

      <?rfc include='reference.RFC.7024'
?>

      <?rfc include='reference.RFC.6514'?>

      <?rfc include='reference.RFC.4456'?>

      <?rfc include='reference.RFC.4486'?>

      <?rfc include='reference.RFC.4271'
?>

      <?rfc include='reference.RFC.8174'?>

      <?rfc include='reference.RFC.8126'?>

      <?rfc include='reference.RFC.8277'?>

      <?rfc include='reference.RFC.4761'?>

      <?rfc include='reference.RFC.6074'?>

      <?rfc include='reference.RFC.7117'?>

      <?rfc include='reference.RFC.9252'?>
    </references>

    <section anchor="topology" title="Experimental topology">
      <t>The experimental topology is shown in Figure 5.<figure align="center">
          <artwork><![CDATA[+------------------------+             +------------------------+
|                        |             |                        |
|                        |             |                        |
| +---------+            |             |            +---------+ |
| |   PE1   |            |             |            |   PE3   | |
| +---------+            |             |            +---------+ |
|            \           |             |           /            |
|              \+---------+    EBGP   +---------+/              |
|               |         |           |         |               |
|               |  ASBR1  |-----------|  ASBR2  |               |
|               |         |           |         |               |
|               +---------+           +---------+               |
|              /         |             |         \              |
| +---------+/           |             |           \+---------+ |
| |   PE2   |            |             |            |   PE4   | |
| +---------+            |             |            +---------+ |
|                        |             |                        |
|         AS1            |             |           AS2          |
+------------------------+             +------------------------+
               Figure 5 The experimental topology
]]></artwork>
        </figure></t>

      <t>This topology can be used to verify the following:<list
          style="symbols">
          <t>whether the VPN Prefix ORF mechanism can block overload routes in
          intra-domain scenarios.</t>

          <t>whether the VPN Prefix ORF mechanism conflicts with existing
          mechanism and causes failure.</t>

          <t>whether the quota value leads to route flapping.</t>
        </list></t>

      <t>This draft is experimental in order to determine if the proposed
      mechanism could block the overload routes as expected or not, and
      whether it would cause other potential network failures or operational
      challenges. The status of the document may be changed to proposed
      standard once there is sufficient deployment experience and issues
      identified, if any, are addressed.</t>

      <t/>
    </section>

    <section title="Intra-domain Scenarios and Solutions">
      <t>This section describes the workflow of some example scenarios for
      illustrative purposes.</t>

      <section title="Scenario 1: unique RD (per VPN, per PE)">
        <t>In this scenario, PE1-PE4 and RR are iBGP peers. RD is allocated
        per VPN per PE. The overload VPN routes only carry one RT. We assume
        that the network topology is shown in Figure 6.<figure>
            <artwork><![CDATA[ +----------------------------------------------------------------+
 |    +-------+                                       +-------+   |
 |    |  PE1  +----------------+    +-----------------+  PE4  |   |
 |    +-------+                |    |                 +-------+   |
 | VPN1(RD11,RT1)              |    |              VPN2(RD12,RT2) |
 | VPN2(RD12,RT2)              |    |                             |
 |                           +-+----+-+                           |
 |                           |   RR   |                           |
 |                           +-+----+-+                           |
 |                             |    |                             |
 |                             |    |                             |
 |    +-------+                |    |                 +-------+   |
 |    |  PE2  +----------------+    +-----------------+  PE3  |   |
 |    +-------+                                       +-------+   |
 | VPN1(RD21,RT1)                                  VPN1(RD31,RT1) |
 | VPN2(RD22,RT2,RT1)                              VPN2(RD32,RT2) |
 |                                                                |
 |                             AS 100                             |
 +----------------------------------------------------------------+
              Figure 6 Network Topology of Scenario 1
]]></artwork>
          </figure></t>

        <t>When PE3 sends an excessive number of VPN routes with RT1, and both
        PE1 and PE2 import VPN routes with RT1, the process of overload VPN
        routes will influence performance of VRFs on PEs. PEs and RR need to
        have appropriate mechanisms to identify and control the advertising of
        overload VPN routes.</t>

        <t>a) PE1</t>

        <t>If no quota value is set on PE1 and each VRF on PE1 has a prefix
        limit, when PE1 receives VPN routes from its BGP peer, it performs the
        following actions:</t>

        <t><figure>
            <artwork><![CDATA[S01. If (the prefix limit for VPN1 VRF is exceeded){
S02.     PE1 sends a VPN Prefix ORF message to the 
         RR and a warning message to the operator.
         The VPN Prefix ORF message carries the 
         following parameters: RD set to RD31, RT 
         value set to RT1, and source PE set to PE3.
         The RR processes the overload VPN routes 
         and controls the number of VPN routes based
         on the value of the "Overload VPN routes 
         process method" field.
S03. } else {
S04.     PE1 does not trigger the VPN Prefix ORF 
         mechanism and only performs VPN route 
         filtering for the target VRF.
S05. }
]]></artwork>
          </figure></t>

        <t>NOTE: When the prefix limit for the VPN1 VRF is exceeded, no other
        VRFs on PE1 import VPN routes with RT1. PE1 sends a VPN Prefix ORF
        message to the RR and a warning message to the operator.</t>

        <t>If a quota is configured for each &lt;RD31, source PE3&gt; tuple
        imported into a VRF and each VRF has a prefix limit, when PE1 receives
        VPN routes from its BGP peer, it performs the following actions:</t>

        <t><figure>
            <artwork><![CDATA[S01. If (VPN routes associated with <RD31, PE3>
     tuple exceed the quota) {
S02.     If (the prefix limit of the VPN1 VRF
         is not exceeded) {
S03.         PE1 sends a warning message to the 
             operator, and the VPN Prefix ORF 
             mechanism is not triggered.
S04.     } else {
S05.         PE1 generates a BGP ROUTE-REFRESH
             message containing a VPN Prefix ORF
             entry with the parameters (RD = RD31, 
             source PE = PE3, RT = RT1), and sends
             this entry to the RR.
             The RR proceses the overload VPN 
             routes based on the value of the
             "Overload VPN routes process method".
S06.     }
S07. }
]]></artwork>
          </figure></t>

        <t>b) PE2</t>

        <t>If no quota value is set on PE2 and each VRF on PE2 has a prefix
        limit, when PE2 receives VPN routes from its BGP peer, it performs the
        following actions:</t>

        <t><figure>
            <artwork><![CDATA[S01. If (the prefix limit for the VPN1 VRF is exceeded) {
S02.     If (the prefix limit for the VPN2 VRF is exceeded) {
S03.         PE2 sends a VPN Prefix ORF message to the RR and a 
             warning message to the operator. The VPN Prefix ORF
             message specifies the RD set to RD31 and the RT 
             value set to RT1. The RR processes the overload VPN
             routes and controls the number of VPN routes based
             on the value of the "Overload VPN routes process 
             method" field.
S04.     } else {
S04. } else {
S05.     PE2 does not trigger the VPN Prefix ORF mechanism and 
         only performs VPN route filtering for the target VRF.
S06. }
]]></artwork>
          </figure></t>

        <t>NOTE: PE2 does not directly trigger the VPN Prefix ORF mechanism
        when the prefix limit of the VPN1 VRF is exceeded, because the VPN2
        VRF imports VPN routes with RT1. PE2 triggers the mechanism only when
        the prefix limits for both the VPN1 and VPN2 VRFs are exceeded.</t>

        <t>If a quota is configured for each &lt;RD31, source PE3&gt; tuple
        imported into a VRF and each VRF has a prefix limit, when PE2 receives
        VPN routes from its BGP peer, it performs the following actions:</t>

        <t><figure>
            <artwork><![CDATA[S01. If (the VPN routes associated with the <RD31, PE3> tuple
     exceed the quota) {
S02.     If (the prefix limit of the VPN1 VRF is not exceeded) {
S03.         PE2 sends a warning message to the operator, and the
             VPN Prefix ORF mechanism is not triggered.
S04.     } else {
S05.         If (the prefix limit of the VPN2 VRF is not exceeded)
             {
S06.             PE2 does not trigger the VPN Prefix ORF mechanism
                 and only performs VPN route filtering for the 
                 target VPN1 VRF, stopping the import of VPN routes
                 associated with <RD31, PE3>.
S07.         } else {
S08.             PE2 generates a BGP ROUTE-REFRESH message 
                 containing a VPN Prefix ORF entry with the 
                 parameters (RD31, source PE = PE3, RTs = RT1 and 
                 RT2), and sends this entry to the RR. The RR 
                 processes the overload VPN routes based on the 
                 value of the "Overload VPN routes process method"
                 field.
S09.         }
S10.     }
S11. }
]]></artwork>
          </figure></t>

        <t/>
      </section>

      <section title="Scenario 2: the same RD (per VPN, same on all PEs)">
        <t>In this scenario, PE1-PE4 and RR are iBGP peers. RD is allocated
        per VPN. One/Multiple RTs are associated with the overload VPN routes
        and are imported into different VRFs on other devices. We assume the
        network topology is shown in Figure 7.<figure>
            <artwork align="center"><![CDATA[+----------------------------------------------------------------+
|                                                                |
|                                                                |
|    +-------+                                       +-------+   |
|    |  PE1  +----------------+    +-----------------+  PE4  |   |
|    +-------+                |    |                 +-------+   |
| VPN1(RD1,RT1)               |    |              VPN2(RD12,RT2) |
| VPN2(RD12,RT2)              |    |                             |
|                           +-+----+-+                           |
|                           |   RR   |                           |
|                           +-+----+-+                           |
|                             |    |                             |
|                             |    |                             |
|    +-------+                |    |                 +-------+   |
|    |  PE2  +----------------+    +-----------------+  PE3  |   |
|    +-------+                                       +-------+   |
| VPN1(RD1,RT1)                                VPN1(RD1,RT1,RT2) |
|                                              VPN2(RD32,RT2)    |
|                                                                |
|                             AS 100                             |
|                                                                |
+----------------------------------------------------------------+
              Figure 7 Network Topology of Scenario 2
]]></artwork>
          </figure></t>

        <t>When PE3 sends an excessive number of VPN routes associated with
        RD1, RT1 and RT2, and both PE1 and PE2 import VPN routes with RT1, the
        process of overload VPN routes can affect the performance of the VRFs
        on PEs.</t>

        <t>a) PE1</t>

        <t>If no quota value is set on PE1 and each VRF on PE1 has a prefix
        limit, PE1 does not directly trigger the VPN Prefix ORF mechanism when
        the prefix limit of the VPN1 VRF is exceeded, because the VPN2 VRF
        imports VPN routes with RT2. This case is similar to that of PE2
        without a quota in Scenario 1, with modifications as follows:</t>

        <t><figure>
            <artwork><![CDATA[S03.         PE1 sends a VPN Prefix ORF message to the RR and a 
             warning message to the operator. The VPN Prefix ORF
             message specifies the RD set to RD1, the RT values 
             set to RT1 and RT2, and the source PE identified as 
             PE3. The RR processes the overload VPN routes and 
             controls the number of VPN routes based on the value 
             of the "Overload VPN routes process method" field.
]]></artwork>
          </figure></t>

        <t>If a quota is configured for each &lt;RD1, source PE3&gt; tuple
        imported into a VRF and each VRF has a prefix limit, this case is
        similar to that of PE2 with a quota in Scenario 1, with modifications
        as follows:</t>

        <t><figure>
            <artwork><![CDATA[S08.             PE1 generates a BGP ROUTE-REFRESH message 
                 containing a VPN Prefix ORF entry with the 
                 parameters (RD1, source PE = PE3, RTs = RT1
                 and RT2), and sends this entry to the RR. The RR
                 processes the overload VPN routes based on the 
                 value of the "Overload VPN routes process method"
                 field.
]]></artwork>
          </figure></t>

        <t>b) PE2</t>

        <t>If no quota value is set on PE2 and each VRF on PE2 has a prefix
        limit, since only the VPN1 VRF needs to import VPN routes with RT1,
        this case is similar to that of PE1 without a quota in Scenario 1,
        with modifications as follows:</t>

        <t><figure>
            <artwork><![CDATA[S02.     PE2 sends a VPN Prefix ORF message to the RR and a 
         warning message to the operator. The VPN Prefix ORF
         message specifies the RD set to RD1, the RT values set
         to RT1 and RT2, and the source PE identified as PE3. 
         The RR processes the overload VPN routes and controls
         the number of VPN routes based on the value of the 
         "Overload VPN routes process method" field.
]]></artwork>
          </figure></t>

        <t>If a quota is configured for each &lt;RD31, source PE3&gt; tuple
        imported into a VRF and each VRF has a prefix limit, this case is
        similar to that of PE1 with a quota in Scenario 1, with modifications
        as follows:</t>

        <t><figure>
            <artwork><![CDATA[S05.         PE2 generates a BGP ROUTE-REFRESH message containing
             a VPN Prefix ORF entry with the parameters (RD1, 
             source PE = PE3, RTs = RT1 and RT2), and sends this 
             entry to the RR. The RR processes the overload VPN 
             routes based on the value of the "Overload VPN routes
             process method" field.
]]></artwork>
          </figure></t>

        <t/>
      </section>
    </section>

    <section title="Applicability">
      <t>Using scenario 1 in Appendix B, we demonstrate how to determine each
      field when the sender generates a VPN Prefix ORF entry. Assuming an IPv4
      network. When the VPN Prefix ORF mechanism is triggered on PE1, PE1
      generates a VPN Prefix ORF entry that contains the following
      information:<list style="symbols">
          <t>AFI is equal to IPv4</t>

          <t>SAFI is equal to MPLS-labeled VPN address</t>

          <t>When-to-refresh is equal to IMMEDIATE</t>

          <t>ORF Type is equal to VPN Prefix ORF</t>

          <t>Length of ORF entries is equal to 45</t>

          <t>Action is equal to ADD</t>

          <t>Match is equal to DENY</t>

          <t>Overload VPN routes process method is equal to 0</t>

          <t>Sequence is equal to 1</t>

          <t>Length is equal to 31</t>

          <t>Route Distinguisher is equal to RD31</t>

          <t>Optional TLV:<list style="symbols">
              <t>Type is equal to 1 (Source PE TLV)</t>

              <t>Length is equal to 4</t>

              <t>value is equal to PE3's IPv4 address</t>

              <t>Type is equal to 4 (Source AS TLV)</t>

              <t>Length is equal to 4</t>

              <t>value is equal to PE3's source AS number</t>

              <t>Type is equal to 5 (Route Target TLV)</t>

              <t>Length is equal to 8</t>

              <t>value is equal to RT1</t>
            </list></t>
        </list></t>
    </section>
  </back>
</rfc>
