<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-model href="rfc7991bis.rnc"?>
<?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 xmlns:xi="http://www.w3.org/2001/XInclude"
     category="std"
     docName="draft-tantsura-bess-evpn-unreachability-00"
     ipr="trust200902"
     obsoletes=""
     updates=""
     submissionType="IETF"
     xml:lang="en"
     tocInclude="true"
     tocDepth="3"
     symRefs="true"
     sortRefs="true"
     version="3">

  <front>
    <title abbrev="EVPN Unreachability Signaling">EVPN Unreachability Signaling</title>
    <seriesInfo name="Internet-Draft" value="draft-tantsura-bess-evpn-unreachability-00"/>
    
    <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
      <organization>Nvidia</organization>
      <address>
        <email>jefftant.ietf@gmail.com</email>
      </address>
    </author>

    <author fullname="Vivek Venkatraman" initials="V." surname="Venkatraman">
      <organization>Nvidia</organization>
      <address>
        <email>vivek@nvidia.com</email>
      </address>
    </author>

    <author fullname="Karthikeya Venkat Muppalla" initials="K." surname="Muppalla">
      <organization>Nvidia</organization>
      <address>
        <email>kmuppalla@nvidia.com</email>
      </address>
    </author>

    <author fullname="Pooja Jagadeesh Doijode" initials="P." surname="Doijode">
      <organization>Nvidia</organization>
      <address>
        <email>pdoijode@nvidia.com</email>
      </address>
    </author>

    <author fullname="Maciej Rzehak" initials="M." surname="Rzehak">
      <organization>CoreWeave</organization>
      <address>
        <email>mrzehak@coreweave.com</email>
      </address>
    </author>

    <date year="2026" month="April" day="19"/>
    
    <area>Routing</area>
    <workgroup>BESS Working Group</workgroup>
    
    <keyword>BGP</keyword>
    <keyword>EVPN</keyword>
    <keyword>Unreachability</keyword>
    <keyword>Monitoring</keyword>
    <keyword>Route Type</keyword>
    
    <abstract>
      <t>
        This document defines a new EVPN Route Type for signaling prefix
        unreachability information without affecting the forwarding plane.
        The route type reuses the Route Type 5 (IP Prefix Advertisement)
        field order defined for EVPN IP prefix routes, adds
        an Address Family octet for unambiguous IPv4/IPv6 parsing, and
        appends Reporter TLVs that allow aggregation of unreachability
        reports from multiple network vantage points.
      </t>
    </abstract>
  </front>

  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>
      <t>
        EVPN (Ethernet VPN) <xref target="RFC7432" format="default"/> provides a flexible framework for
        Layer 2 and Layer 3 VPN services. While EVPN includes mechanisms
        for advertising reachable prefixes via Route Type 5 (IP Prefix
        Advertisement Route) <xref target="RFC9136" format="default"/>, there is no standard way to
        signal unreachability information for monitoring and troubleshooting
        purposes without affecting the forwarding plane.
      </t>
      <t>
        Similar to the challenges in standard BGP, EVPN withdrawals are
        only propagated for prefixes that have been previously announced.
        This behavior limits the ability of operators to share information
        about prefix unreachability for prefixes that were never announced
        or to correlate unreachability reports from multiple PE (Provider
        Edge) routers.
      </t>
      <t>
        Use cases for EVPN unreachability signaling include but not limited to:
      </t>
      <ul spacing="normal">
        <li>Multi-tenant network debugging and troubleshooting</li>
        <li>Security event coordination across EVPN instances</li>
        <li>DDoS attack target information sharing without null-routing</li>
        <li>Monitoring tenant prefix health across multiple data centers</li>
        <li>Correlating unreachability from multiple PE vantage points</li>
      </ul>
      <t>
        The goal of this mechanism is to provide comprehensive information
        about unreachability events:
      </t>
      <ul spacing="normal">
        <li>Where the event has happened: Reporter Identifier, Reporter AS
            Number, and optionally EVPN Instance (EVI)</li>
        <li>Why the event has happened: Reason Code indicating the cause
            of unreachability</li>
        <li>When the event has happened: Timestamp of the unreachability
            detection</li>
      </ul>
      <t>
        This document defines a new EVPN Route Type that creates a
        parallel information channel for unreachability data, maintaining
        complete separation from the forwarding plane. The encoding
        follows the architecture and terminology of
        <xref target="RFC9136" format="default"/>, applying similar
        concepts to EVPN as defined for standard BGP in
        <xref target="I-D.tantsura-idr-unreachability-safi" format="default"/>.
      </t>
      
      <section numbered="true" toc="default">
        <name>Requirements Language</name>
        <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 numbered="true" toc="default">
        <name>Terminology</name>
        <dl newline="false" spacing="normal" indent="10">
          <dt>EVPN:</dt>
          <dd>Ethernet VPN</dd>
          <dt>NVE:</dt>
          <dd>Network Virtualization Edge, as defined in <xref target="RFC7365"/>
              and <xref target="RFC9136"/>. An NVE is a network entity that
              provides virtualization functions. In this document, NVE and PE
              are used interchangeably.</dd>
          <dt>PE:</dt>
          <dd>Provider Edge router</dd>
          <dt>RT-5:</dt>
          <dd>EVPN Route Type 5 (IP Prefix Advertisement Route), as defined
              in <xref target="RFC9136"/></dd>
          <dt>Address Family (unreachability NLRI):</dt>
          <dd>1-octet field in the IP Prefix Unreachability Route NLRI,
              immediately after the Ethernet Tag ID, indicating IPv4
              (value 1) or IPv6 (value 2). The values are the existing
              BGP Address Family Identifier (AFI) numeric values
              assigned by IANA in the "Address Family Numbers" registry
              <xref target="RFC4760"/>; this document defines no new
              values and creates no new registry. See
              <xref target="unreachability-nlri"/>.</dd>
          <dt>UI-RIB:</dt>
          <dd>Unreachability Information RIB</dd>
          <dt>NLRI:</dt>
          <dd>Network Layer Reachability Information</dd>
          <dt>TLV:</dt>
          <dd>Type-Length-Value</dd>
          <dt>Reporter TLV:</dt>
          <dd>A nested TLV structure containing information about one 
              Reporting PE and its associated unreachability details</dd>
          <dt>Aggregation:</dt>
          <dd>The process of combining multiple Reporter TLVs from 
              different paths into a single NLRI</dd>
          <dt>Advertising PE:</dt>
          <dd>The PE router that sends the BGP UPDATE message containing
              the unreachability information</dd>
          <dt>Reporting PE:</dt>
          <dd>The PE router that originally generated the unreachability
              information (identified within a Reporter TLV)</dd>
        </dl>
        <t>
          This document also assumes familiarity with the terminology of
          <xref target="RFC7365"/>, <xref target="RFC7432"/>,
          <xref target="RFC8365"/>, and <xref target="RFC9136"/>.
        </t>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>EVPN Unreachability Route Type</name>
      
      <section numbered="true" toc="default">
        <name>Route Type Definition</name>
        <t>This document defines a new EVPN Route Type:</t>
        <ul spacing="normal">
          <li>Route Type: TBD1 (to be assigned by IANA)</li>
          <li>Name: IP Prefix Unreachability Route Type</li>
          <li>Based on: Route Type 5 field order and definitions from
              <xref target="RFC9136"/>, plus an Address Family octet after
              the Ethernet Tag ID (not present in reachability RT-5)</li>
        </ul>
        <t>
          This route type is carried in BGP UPDATE messages using the
          Multiprotocol Extensions for BGP-4 <xref target="RFC4760"/>,
          with AFI = 25 (L2VPN) and SAFI = 70 (EVPN), following the same
          procedures as other EVPN route types defined in <xref target="RFC7432"/>
          and <xref target="RFC9136"/>.
        </t>
        <t>
          This route type creates a parallel information plane for
          unreachability signaling. It MUST NOT affect the EVPN Loc-RIB
          or forwarding plane in any way. PE routers receiving this route
          type MUST maintain it in a separate Unreachability Information
          RIB (UI-RIB) and MUST NOT install or remove routes in the
          Loc-RIB or forwarding table based on these advertisements.
        </t>
      </section>
      
      <section numbered="true" toc="default">
        <name>Route Distinguisher and Route Targets</name>
        <t>
          The Route Distinguisher (RD) field and Route Target (RT)
          extended communities operate as defined in
          <xref target="RFC7432"/> and <xref target="RFC9136"/>.
          Unreachability routes for an EVPN
          instance SHOULD use the same RD and RTs as the corresponding
          reachability routes (Route Type 5), ensuring correlation with
          the same EVPN instance and following established EVPN patterns.
        </t>
        <t>
          Implementations MAY use distinct RTs for unreachability routes
          to limit distribution to specific PEs (e.g., monitoring systems)
          or to prevent distribution to legacy systems during incremental
          deployment.
        </t>
      </section>
    </section>

    <section numbered="true" toc="default" anchor="nlri-format">
      <name>NLRI Encoding</name>
      
      <section numbered="true" toc="default">
        <name>Design Philosophy</name>
        <t>
          The IP Prefix Unreachability Route encoding uses the Route Type 5
          field order and definitions from <xref target="RFC9136"/> to
          maximize consistency with existing EVPN implementations.
          Implementations can reuse much of existing RT-5 parsing logic but
          MUST insert handling for the Address Family octet (immediately
          after the Ethernet Tag ID) before reading the IP Prefix field,
          because reachability RT-5 has no such field.
        </t>
        <t>
          This approach provides:
        </t>
        <ul spacing="normal">
          <li>Structural consistency with Route Type 5 (with the Address
              Family extension noted above)</li>
          <li>Simplified implementation by following familiar RT-5 field
              order and semantics aside from that extension</li>
          <li>Extensibility via TLV-based reporter information</li>
          <li>Future-proof design if any currently unused fields become relevant</li>
        </ul>
      </section>
      
      <section numbered="true" toc="default">
        <name>Approach to Multiple Reporters</name>
        <t>
          When multiple PE routers report unreachability for the same
          prefix, implementers have several options:
        </t>
        <ol spacing="normal" type="1">
          <li>Single Reporter: Do nothing and allow the Reporter Identifier
              of the best route to be used as the only Reporter. This is the
              simplest approach but loses information from other reporters.
              This approach is fully compatible with all EVPN implementations.</li>
          
          <li>Nested TLV Aggregation (Recommended): Implement the nested TLV
              aggregation approach described in this specification to preserve
              all reporter perspectives in a single NLRI. This provides the
              most comprehensive view while maintaining a single EVPN route per
              prefix. This approach is designed specifically for EVPN and does
              not require additional protocol extensions beyond this specification.</li>
          
          <li>BGP ADD-PATH: Use BGP ADD-PATH <xref target="RFC7911"/> to maintain
              multiple paths, each carrying its own Reporter TLV. ADD-PATH is
              defined for BGP-4 and can be applied to EVPN route types by
              prepending a Path Identifier to each NLRI. However, ADD-PATH
              support for EVPN varies by implementation, and this approach would
              require both ADD-PATH capability negotiation and proper handling of
              Path Identifiers with EVPN Route Type structures. This option
              preserves full BGP path attributes per reporter but has higher
              complexity and deployment requirements.</li>
        </ol>
        <t>
          This specification focuses on the nested TLV aggregation approach
          (option 2) as the preferred mechanism, providing detailed procedures
          and encodings for this method throughout the remainder of this
          document. Option 2 is recommended because it provides comprehensive
          multi-reporter visibility while maintaining compatibility with
          standard EVPN processing and minimizing implementation complexity.
        </t>
      </section>
      
      <section numbered="true" toc="default" anchor="unreachability-nlri">
        <name>IP Prefix Unreachability Route NLRI</name>
        <t>
          The IP Prefix Unreachability Route uses the Route Type 5 field
          order and definitions from <xref target="RFC9136"/>, extended with
          Reporter TLVs and one additional field for address-family
          disambiguation (see below).
        </t>
        <t>
          The NLRI is uniquely identified by the combination of Route
          Distinguisher, Ethernet Tag ID, Address Family, IP Prefix Length,
          and IP Prefix. Reporter TLVs are NOT part of the NLRI key but
          provide information about each Reporting PE. The presence of an
          Unreachability Route for a prefix signifies that one or more PEs
          report the prefix as unreachable. The withdrawal of such a route
          indicates that all reporters have cleared their unreachability
          reports for that prefix.
        </t>
        <t>
          For reachability RT-5 routes, <xref target="RFC9136"/> fixes the
          size of the route-type-specific NLRI (34 octets for IPv4 or 58 octets
          for IPv6), which allows a receiver to infer whether the IP Prefix
          field is 4 or 16 octets. Because unreachability routes append a
          variable number of Reporter TLVs, the route-type-specific length is
          no longer sufficient to infer the address family: for example, an
          IPv4 prefix with a large set of Reporter TLVs can yield the same
          total size as a shorter IPv6 encoding. Furthermore, IP Prefix Length
          alone is ambiguous (e.g., a /24 can be valid for both IPv4 and
          IPv6). Therefore, this route type includes an explicit Address
          Family field immediately after the Ethernet Tag ID. Receivers MUST
          use this field to determine the width of the IP Prefix field before
          parsing Reporter TLVs.
        </t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
+---------------------------------------+
|  Route Type (1 octet)                 |
+---------------------------------------+
|  Length (1 octet)                     |
+---------------------------------------+
|  Route Distinguisher (8 octets)       |
+---------------------------------------+
|  Ethernet Segment Identifier (10 octets)|
+---------------------------------------+
|  Ethernet Tag ID (4 octets)           |
+---------------------------------------+
|  Address Family (1 octet)             |
+---------------------------------------+
|  IP Prefix Length (1 octet)           |
+---------------------------------------+
|  IP Prefix (4 or 16 octets)           |
+---------------------------------------+
|  GW IP Address Length (1 octet) = 0   |
+---------------------------------------+
|  MPLS Label (3 octets) = 0            |
+---------------------------------------+
|  Reporter TLVs (variable)             |
+---------------------------------------+]]></artwork>
        <t>Where:</t>
        <ul spacing="normal">
          <li>Route Type: TBD1 (IP Prefix Unreachability Route Type)</li>
          <li>Length: As defined in <xref target="RFC7432"/>, the number of
              octets in the Route Type specific field (from Route
              Distinguisher through the end of the last Reporter TLV). This
              differs from reachability RT-5 in <xref target="RFC9136"/>, where
              Length is 34 (IPv4) or 58 (IPv6) and does not include Reporter
              TLVs.</li>
          <li>Route Distinguisher: As defined in <xref target="RFC7432"/> and
              <xref target="RFC9136"/>, used to identify the EVPN instance. The
              RD MUST be used as specified in those documents.</li>
          <li>Ethernet Segment Identifier: As defined in <xref target="RFC7432"/>.
              MUST be set to 0 (all bytes zero) for unreachability routes.</li>
          <li>Ethernet Tag ID: As defined in <xref target="RFC7432"/> and
              <xref target="RFC9136"/>, identifies the broadcast domain. For
              unreachability routes, this SHOULD be set to 0 unless VLAN-aware
              bundle service is used, following the same conventions as
              reachability RT-5 routes.</li>
          <li>Address Family: 1 octet. The values are the existing BGP
              Address Family Identifier (AFI) numeric values assigned by
              IANA in the "Address Family Numbers" registry
              <xref target="RFC4760"/>; this document defines no new
              values and creates no new registry. Value 1 (IPv4, BGP
              AFI 1) requires an IP Prefix field of 4 octets and IP
              Prefix Length in the range 0-32 inclusive. Value 2 (IPv6,
              BGP AFI 2) requires an IP Prefix field of 16 octets and
              IP Prefix Length in the range 0-128 inclusive. Handling
              of any other Address Family value is specified in
              Section 4.10.1.</li>
          <li>IP Prefix Length: Length of the IP prefix in bits. Constraints
              depend on Address Family as described above.</li>
          <li>IP Prefix: IPv4 (4 octets) or IPv6 (16 octets) prefix being
              reported as unreachable, consistent with Address Family.</li>
          <li>GW IP Address Length: MUST be set to 0. The GW IP Address field
              is not used for unreachability routes.</li>
          <li>GW IP Address: MUST be zero octets (GW IP Address Length = 0).
              Unreachability routes do not use overlay index resolution.</li>
          <li>MPLS Label: 3-octet field where the high-order 20 bits contain
              the MPLS label value, as specified in <xref target="RFC9136"/>.
              MUST be set to 0 (reserved). Since unreachability routes are
              information-only and do not establish forwarding state, and do
              not use overlay index resolution, the label field has no semantic
              meaning and MUST be zero.</li>
          <li>Reporter TLVs: One or more Reporter TLVs as defined in 
              <xref target="reporter-tlv"/></li>
        </ul>
      </section>
      
      <section numbered="true" toc="default" anchor="gw-ip-usage">
        <name>Field Usage for Information-Only Routes</name>
        <t>
          Since unreachability routes are information-only and do not
          use overlay indexes for recursive resolution, the following
          constraints apply to fields inherited from Route Type 5:
        </t>
        <ul spacing="normal">
          <li>ESI: MUST be 0 (all bytes zero).</li>
          <li>GW IP Address Length: MUST be 0; GW IP Address: zero octets.</li>
          <li>MPLS Label: MUST be 0.</li>
          <li>Address Family: Used only to determine IP Prefix width
              for NLRI parsing.</li>
        </ul>
        <t>
          Receiving PEs MUST NOT use any of these fields for forwarding
          decisions or recursive resolution. ESI, GW IP Address, and
          MPLS Label are maintained for structural consistency with
          <xref target="RFC9136"/>; Address Family is an extension
          defined in this document.
        </t>
        <t>
          The <xref target="RFC9136"/> Section 3.1 rule that a route
          with a zero MPLS Label and no Overlay Index MUST be treated
          as withdrawn, and the Section 3.2 rule that a route with
          ESI, GW IP, Router's MAC, and MPLS Label all zero SHOULD be
          treated as withdrawn, apply only to Route Type 5.  The IP
          Prefix Unreachability Route Type defined here uses a
          distinct EVPN Route Type (Section 3.3) and is not subject
          to those rules.
        </t>
        <t>
          Unreachability Routes carry ESI=0 and encode no
          Ethernet-Segment membership. They signal IP-prefix
          unreachability from the Reporting PE's local perspective.
          DF election, Ethernet-Segment failure, and non-DF transitions
          do not in themselves trigger Unreachability Routes; the
          multi-homing procedures of <xref target="RFC7432"/> and
          <xref target="RFC9136"/> are unchanged.
        </t>
      </section>
      
      <section numbered="true" toc="default" anchor="reporter-tlv">
        <name>Reporter TLV Format</name>
        <t>
          The Reporter TLV encapsulates information about a single
          Reporting PE router. Multiple Reporter TLVs may be included
          in a single NLRI to support aggregation of reports from
          different network vantage points.
        </t>
        <artwork name="" type="" align="left" alt=""><![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             |               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               |
|                   Reporter Identifier (4 octets)              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Reporter AS Number (4 octets)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               Sub-TLVs (variable)                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
        
        <t>Reporter TLV Fields:</t>
        <dl newline="false" spacing="normal">
          <dt>Type:</dt>
          <dd>1 octet. Value: 1 (Reporter)</dd>
          
          <dt>Length:</dt>
          <dd>2 octets. Total length of Reporter Identifier, Reporter
              AS Number, and Sub-TLVs fields in octets (minimum 8
              octets when no Sub-TLVs are present)</dd>
          
          <dt>Reporter Identifier:</dt>
          <dd>4 octets. BGP Identifier (Router ID) of the Reporting PE
              in network byte order</dd>
          
          <dt>Reporter AS Number:</dt>
          <dd>4 octets. 4-octet AS number of the Reporting PE in
              network byte order. If the AS number is less than 65536,
              the upper 2 octets are set to 0.</dd>
          
          <dt>Sub-TLVs:</dt>
          <dd>Variable length. Contains zero or more Sub-TLVs providing
              additional context about the unreachability event. A
              Reporter TLV carrying no Sub-TLVs is valid: the presence
              of the Reporter TLV itself conveys the fact of
              unreachability, with the Reporter Identifier and Reporter
              AS Number identifying the PE that observed it. When the
              Unreachability Reason Code Sub-TLV (<xref
              target="sub-tlv-reason-code"/>) is absent, the reason is
              treated as Unspecified (code 0).</dd>
        </dl>
        <t>
          The combination of Reporter Identifier and Reporter AS Number
          uniquely identifies the Reporting PE. Multiple Reporter TLVs
          with the same Reporter Identifier and AS Number MUST NOT appear
          in the same NLRI. If such duplication occurs, only the first
          occurrence SHOULD be processed.
        </t>
        <t>
          Except that the first Reporter TLV in an NLRI corresponds to
          the best path (see <xref target="aggregation"/>), the order
          of subsequent Reporter TLVs is not significant; receivers
          MUST NOT derive meaning from their relative ordering.
          Implementations MUST tolerate any ordering of Reporter TLVs
          past the first position.
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Sub-TLV Types</name>
        
        <section numbered="true" toc="default" anchor="sub-tlv-reason-code">
          <name>Unreachability Reason Code Sub-TLV</name>
          <ul spacing="normal">
            <li>Sub-Type: 1</li>
            <li>Sub-Length: 2 octets</li>
            <li>Sub-Value: 2-octet reason code in network byte order</li>
          </ul>
          <t>Defined Reason Codes:</t>
          <ul spacing="normal">
            <li>0: Unspecified</li>
            <li>1: Policy Blocked</li>
            <li>2: Security Filtered</li>
            <li>3: RPKI Invalid</li>
            <li>4: No Export Policy</li>
            <li>5: Martian Address</li>
            <li>6: Bogon Prefix</li>
            <li>7: Route Dampening</li>
            <li>8: Local Administrative Action</li>
            <li>9: Local Link Down</li>
            <li>10: MAC Mobility Limit Exceeded (EVPN-specific)</li>
            <li>11: Tenant Isolation Violation (EVPN-specific)</li>
            <li>12: VTEP Unreachable (EVPN-specific)</li>
            <li>13-64535: Reserved for Future Use (IANA allocation required)</li>
            <li>64536-65535: Reserved for Private/Experimental Use</li>
          </ul>
          <t>
            Reason codes 0-9 align with the BGP Unreachability Information SAFI
            <xref target="I-D.tantsura-idr-unreachability-safi"/> for consistency
            across standard BGP and EVPN unreachability signaling. Reason codes
            10-12 are EVPN-specific extensions.
          </t>
        </section>
        
        <section numbered="true" toc="default">
          <name>Timestamp Sub-TLV</name>
          <ul spacing="normal">
            <li>Sub-Type: 2</li>
            <li>Sub-Length: 8 octets</li>
            <li>Sub-Value: Unix timestamp (seconds since epoch) in
                network byte order, indicates when the unreachability
                event occurred or was detected by this reporter</li>
          </ul>
        </section>
        
        <section numbered="true" toc="default">
          <name>EVI Sub-TLV</name>
          <ul spacing="normal">
            <li>Sub-Type: 3</li>
            <li>Sub-Length: 4 octets</li>
            <li>Sub-Value: EVPN Instance (EVI) identifier where the
                unreachability was observed</li>
          </ul>
          <t>
            Since the Route Distinguisher in the NLRI already identifies
            the EVPN instance in most deployments, this Sub-TLV SHOULD
            only be included when additional EVI-specific information
            is necessary that cannot be derived from the RD.
          </t>
          <t>
            Examples of when EVI Sub-TLV may be useful:
          </t>
          <ul spacing="normal">
            <li>Multiple EVIs share the same RD (non-recommended configuration)</li>
            <li>Correlation with locally-significant EVI identifiers</li>
            <li>Debugging scenarios requiring explicit EVI identification</li>
          </ul>
          <t>
            Omitting this Sub-TLV when not needed saves 7 octets
            (3 octets TLV overhead + 4 octets EVI value) per Reporter TLV.
          </t>
        </section>
        
        <section numbered="true" toc="default">
          <name>Sub-TLV Processing Rules</name>
          <t>
            Implementations MUST be prepared to receive Sub-TLVs in any
            order. Unknown Sub-TLV types MUST be silently ignored to
            allow for future extensibility.
          </t>
          <t>
            The Reason Code Sub-TLV SHOULD be included in all Reporter TLVs.
            If absent, implementations SHOULD treat it as Reason Code 0
            (Unspecified).
          </t>
        </section>
      </section>
      
    </section>

    <section numbered="true" toc="default">
      <name>Operation</name>
      
      <section numbered="true" toc="default" anchor="forwarding-plane-separation">
        <name>Forwarding Plane Separation</name>
        <t>
          This route type creates a parallel information plane that operates
          independently of the EVPN forwarding plane. Implementations MUST
          maintain strict separation between unreachability information and
          forwarding decisions.
        </t>
        <t>
          Specifically, implementations MUST:
        </t>
        <ul spacing="normal">
          <li>NOT install or remove any routes in the Loc-RIB or forwarding
              table based on unreachability information</li>
          <li>Maintain unreachability routes in a separate Unreachability
              Information RIB (UI-RIB) that is not consulted for forwarding
              decisions</li>
          <li>NOT modify forwarding table entries (including next-hop,
              label, or other attributes) based on unreachability information</li>
          <li>Process unreachability routes with lower priority than
              forwarding routes to prevent resource contention</li>
          <li>Implement separate rate limiting for unreachability routes</li>
        </ul>
        <t>
          Violation of these separation requirements could lead to incorrect
          forwarding behavior, traffic blackholing, or routing instability.
          Implementers MUST ensure proper separation through careful software
          architecture and testing.
        </t>
      </section>
      
      <section numbered="true" toc="default">
        <name>Generating Unreachability Routes</name>
        <t>
          A PE MAY generate an IP Prefix Unreachability Route when local
          processing determines, for any reason, that a prefix is to be
          reported as unreachable. The triggering condition is conveyed
          by the Reason Code Sub-TLV
          (<xref target="sub-tlv-reason-code"/>). This document does not
          mandate the set of local conditions that cause generation; that
          set is implementation- and deployment-specific, constrained
          only by the Reason Codes defined in this document or
          subsequently registered.
        </t>
        <t>
          The Reporting PE MUST set Address Family to 1 (IPv4) or 2 (IPv6)
          consistent with the IP Prefix field. The Reporting PE MUST
          populate the Reporter TLV with its own BGP Identifier and AS
          Number. The PE SHOULD include a Reason Code Sub-TLV and SHOULD
          include a Timestamp Sub-TLV to facilitate temporal correlation.
        </t>
        <t>
          Implementations SHOULD provide configuration options to control:
        </t>
        <ul spacing="normal">
          <li>Which events trigger unreachability route generation</li>
          <li>Rate limiting on route generation per prefix and globally</li>
          <li>Filtering criteria for which prefixes can be reported</li>
          <li>Default Reason Codes for different trigger conditions</li>
        </ul>
      </section>
      
      <section numbered="true" toc="default">
        <name>Processing Unreachability Routes</name>
        <t>
          When a PE router receives an IP Prefix Unreachability Route:
        </t>
        <ol spacing="normal" type="1">
          <li>It MUST validate that the route type is recognized</li>
          <li>It MUST parse the NLRI using the Address Family field to
              determine whether the IP Prefix is 4 or 16 octets, then parse
              Reporter TLVs according to <xref target="nlri-format"/>.
              Error handling for invalid Address Family or IP Prefix
              Length values is specified in Section 4.10.1.</li>
          <li>It MUST NOT install or remove any routes in the Loc-RIB or
              forwarding table based on this route</li>
          <li>It MUST maintain a separate UI-RIB for unreachability routes</li>
          <li>It SHOULD apply standard BGP path selection to UI-RIB entries
              for consistency</li>
          <li>It MAY propagate the route according to standard EVPN rules
              and local policy</li>
          <li>It MAY aggregate Reporter TLVs as described in 
              <xref target="aggregation"/></li>
          <li>It SHOULD make unreachability information available to
              management systems and monitoring tools</li>
        </ol>
        <t>
          Unknown Sub-TLV types within Reporter TLVs MUST be silently
          ignored to allow for future extensibility.
        </t>
      </section>
      
      <section numbered="true" toc="default" anchor="aggregation">
        <name>Aggregation Procedures</name>
        <t>
          When multiple routes arrive for the same prefix (identified by
          RD, Ethernet Tag ID, Address Family, IP Prefix Length, and IP
          Prefix), a PE supporting aggregation SHOULD combine Reporter TLVs
          from multiple paths into a single advertisement.
        </t>
        <t>
          Aggregation procedure:
        </t>
        <ol spacing="normal" type="1">
          <li>Perform standard BGP path selection based on BGP attributes
              (NOT Reporter TLV content) to select the best path</li>
          <li>Extract Reporter TLVs from the best path</li>
          <li>For each non-selected feasible path, extract Reporter TLVs
              and add unique reporters (by Reporter Identifier and Reporter AS)
              to the aggregated set. If a reporter already exists, keep the entry
              with the most recent timestamp (if present).</li>
          <li>Create a new NLRI with all unique Reporter TLVs</li>
          <li>Advertise the aggregated NLRI using BGP attributes from the
              best path</li>
        </ol>
        <t>
          A speaker performing Reporter TLV aggregation MUST place the
          Reporter TLV corresponding to the best path in the first
          position of the resulting NLRI. Reporter TLVs drawn from
          non-selected feasible paths MAY follow in any order. Pinning
          the first position provides a deterministic fallback for
          speakers that do not perform aggregation (see below).
        </t>
        <t>
          A receiver MUST parse all Reporter TLVs present in a received
          NLRI, up to the implementation limit defined in this section
          (RECOMMENDED 50). How the received Reporter TLVs are consumed
          locally -- stored in the UI-RIB, exported via BMP, displayed
          to operators -- is an implementation matter and does not
          affect wire behavior.
        </t>
        <t>
          A speaker that does not perform Reporter TLV aggregation,
          when re-advertising an IP Prefix Unreachability Route to its
          peers, MUST include only the first Reporter TLV from the
          received NLRI and MUST NOT append Reporter TLVs drawn from
          other paths. Because EVPN does not negotiate per-Route-Type
          capabilities, this rule -- together with the sender ordering
          rule above -- constitutes the interoperability contract
          between aggregating and non-aggregating speakers: at the
          first non-aggregating hop, the propagated view degrades to
          the best-path Reporter TLV only, with no loss of correctness.
        </t>
        <t>
          The maximum number of Reporter TLVs per route SHOULD be limited
          to prevent excessive route sizes. RECOMMENDED maximum: 50 Reporter
          TLVs per route.
        </t>
        <t>
          If the maximum is reached and a new reporter must be added,
          implementations SHOULD remove the oldest Reporter TLV based on
          Timestamp Sub-TLV (if present). The reporter from the best path
          MUST NOT be removed; if it is the oldest, remove the second-oldest
          instead.
        </t>
      </section>
      
      <section numbered="true" toc="default">
        <name>Withdrawal Procedures</name>
        <t>
          Withdrawal of unreachability information operates at two levels:
        </t>
        
        <section numbered="true" toc="default">
          <name>Individual Reporter Withdrawal</name>
          <t>
            When a PE determines that a specific reporter no longer considers
            a prefix unreachable (e.g., receives an UPDATE from that
            reporter's PE that does not include the unreachability NLRI, or
            local policy determines the report is stale), it SHOULD:
          </t>
          <ol spacing="normal" type="1">
            <li>Remove the corresponding Reporter TLV from the NLRI</li>
            <li>If other Reporter TLVs remain, re-advertise the NLRI with
                the remaining Reporter TLVs</li>
            <li>If no Reporter TLVs remain, withdraw the entire NLRI as
                described below</li>
          </ol>
          <t>
            To facilitate individual reporter withdrawal, implementations
            MUST track the source of each Reporter TLV (which BGP neighbor
            or local process it came from).
          </t>
        </section>
        
        <section numbered="true" toc="default">
          <name>Complete NLRI Withdrawal</name>
          <t>
            A PE MUST withdraw an Unreachability Route (send the NLRI key
            fields in MP_UNREACH_NLRI) when:
          </t>
          <ul spacing="normal">
            <li>All Reporter TLVs have been removed</li>
            <li>The prefix is explicitly withdrawn by all upstream sources</li>
            <li>Local policy dictates the information should no longer be
                propagated</li>
          </ul>
          <t>
            The MP_UNREACH_NLRI contains the NLRI fields (Route
            Distinguisher, Ethernet Segment Identifier, Ethernet Tag ID,
            Address Family, IP Prefix Length, IP Prefix, GW IP Address
            Length, and MPLS Label) without any Reporter TLVs.
          </t>
        </section>
        
        <section numbered="true" toc="default">
          <name>Stale Reporter Detection</name>
          <t>
            Implementations MAY implement aging mechanisms to remove
            stale Reporter TLVs:
          </t>
          <ul spacing="normal">
            <li>If a Timestamp Sub-TLV is present and indicates the report
                is older than a configurable threshold (RECOMMENDED default:
                24 hours), the Reporter TLV MAY be removed</li>
            <li>If the BGP session to the neighbor that provided a Reporter
                TLV goes down, implementations MAY mark associated
                Reporter TLVs as potentially stale and MAY remove them
                after a grace period</li>
          </ul>
        </section>
      </section>

      <section numbered="true" toc="default" anchor="graceful-restart">
        <name>Interaction with Graceful Restart</name>
        <t>
          BGP Graceful Restart <xref target="RFC4724"/> applies to the
          EVPN SAFI (AFI=25, SAFI=70) and thus to Unreachability Routes.
          GR procedures for other EVPN route types
          (<xref target="RFC7432"/>, <xref target="RFC9136"/>) are
          unchanged.
        </t>
        <t>
          Unreachability Routes follow the same GR procedures as RT-5
          <xref target="RFC9136"/>: one GR Capability for SAFI=70, one
          End-of-RIB (EoR) marker, one Restart Time. They are marked
          stale, retained, refreshed, and removed identically. The sole
          departure is the "Forwarding State" (F) bit. Unreachability
          Routes install no forwarding state
          (<xref target="forwarding-plane-separation"/>); the F bit has
          no meaning for this Route Type. Its interpretation for
          forwarding-state-bearing route types is unchanged.
        </t>

        <section numbered="true" toc="default">
          <name>Graceful Restart Capability</name>
          <t>
            No new capability is defined. GR is negotiated using the
            EVPN AFI/SAFI (25/70).
          </t>
          <t>
            Implementations MUST NOT treat any F bit value as indicating
            forwarding-state preservation for Unreachability Routes. The
            F bit advertised for SAFI=70 is determined by the
            preservation properties of the other route types carried in
            the SAFI.
          </t>
        </section>

        <section numbered="true" toc="default">
          <name>Restarting Speaker Behavior</name>
          <t>
            A PE that has negotiated GR for SAFI=70:
          </t>
          <ol spacing="normal" type="1">
            <li>
              <t>SHOULD re-advertise its preserved Unreachability
              Information RIB (UI-RIB) as soon as practicable; gradual
              re-advertisement is permitted to limit burstiness.</t>
            </li>
            <li>
              <t>If the UI-RIB was not preserved, SHOULD rebuild it
              from local sources (link-down state, policy decisions)
              before re-advertising.</t>
            </li>
            <li>
              <t>MUST send the SAFI=70 EoR marker
              <xref target="RFC4724"/> after re-advertisement completes.
              This marker covers all EVPN route types in the SAFI; no
              Route-Type-specific EoR is defined.</t>
            </li>
          </ol>
        </section>

        <section numbered="true" toc="default">
          <name>Receiving Speaker Behavior</name>
          <t>
            On detection of peer restart:
          </t>
          <ol spacing="normal" type="1">
            <li>
              <t>All Unreachability Routes from the restarting peer
              MUST be marked stale, irrespective of the F bit.</t>
            </li>
            <li>
              <t>Stale routes MUST NOT be withdrawn. They MUST be
              retained until the SAFI=70 EoR is received or the peer's
              Restart Time expires, whichever occurs first.</t>
            </li>
            <li>
              <t>While stale, the routes MAY be used for monitoring and
              correlation, MAY be distinguished in display and APIs,
              and SHOULD NOT be propagated to other peers absent
              explicit configuration.</t>
            </li>
            <li>
              <t>On receipt of the EoR:</t>
              <ul spacing="normal">
                <li>unrefreshed stale routes MUST be removed;</li>
                <li>Reporter TLVs from the restarted peer within
                    aggregated NLRIs MUST be removed if not
                    refreshed;</li>
                <li>if Reporter TLVs from other sources remain for the
                    same NLRI key, the route SHOULD be re-advertised
                    with those remaining TLVs
                    (<xref target="aggregation"/>).</li>
              </ul>
            </li>
            <li>
              <t>If the Restart Time expires before the EoR arrives,
              all stale routes MUST be removed.</t>
            </li>
          </ol>
        </section>

        <section numbered="true" toc="default">
          <name>Route Reflector Considerations</name>
          <t>
            A Route Reflector participating in GR for SAFI=70:
          </t>
          <ul spacing="normal">
            <li>MUST stale-mark Unreachability Routes from restarting
                clients identically to other EVPN route types;</li>
            <li>SHOULD NOT reflect stale Unreachability Routes absent
                an explicit reflection policy;</li>
            <li>MUST preserve ORIGINATOR_ID and CLUSTER_LIST across
                stale-to-refreshed transitions;</li>
            <li>SHOULD send the SAFI=70 EoR to clients after completing
                its own restart processing.</li>
          </ul>
        </section>

        <section numbered="true" toc="default">
          <name>Implementation Recommendations</name>
          <t>
            Restart Time is shared with the rest of SAFI=70. Operators
            SHOULD account for the additional UI-RIB re-advertisement
            volume when tuning it.
          </t>
          <t>
            Implementations SHOULD expose:
          </t>
          <ul spacing="normal">
            <li>UI-RIB preservation, toggled independently of other
                EVPN route types;</li>
            <li>propagation of stale Unreachability Routes during GR;</li>
            <li>action on EoR timeout.</li>
          </ul>
          <t>
            Implementations SHOULD log, per GR cycle:
            peer-restart detection affecting the UI-RIB, stale marking,
            EoR receipt, and stale removal.
          </t>
        </section>
      </section>

      <section numbered="true" toc="default">
        <name>Preventing State Explosion</name>
        <t>
          To prevent unbounded growth of the UI-RIB, implementations
          SHOULD enforce the following limits:
        </t>
        <ul spacing="normal">
          <li>Maximum Reporter TLVs per route (RECOMMENDED: 50)</li>
          <li>Maximum total UI-RIB routes (SHOULD be configurable;
              RECOMMENDED default: 100,000)</li>
          <li>Rate limiting on accepting new unreachability routes</li>
          <li>Per-peer rate limiting</li>
        </ul>
        <t>
          When limits are reached, implementations SHOULD log the event,
          apply aging policies to remove oldest entries, and continue
          accepting withdrawals to allow state to decrease.
        </t>
      </section>
      
      <section numbered="true" toc="default">
        <name>Relationship to BGP Route Damping</name>
        <t>
          Unreachability routes SHOULD NOT be subject to standard BGP route
          damping mechanisms since they do not affect forwarding and
          represent information that operators explicitly want to propagate.
        </t>
        <t>
          However, implementations MAY implement rate limiting specific to
          unreachability routes to prevent:
        </t>
        <ul spacing="normal">
          <li>UI-RIB resource exhaustion</li>
          <li>Excessive BGP UPDATE message generation</li>
          <li>Processing overhead on Receiving PEs</li>
          <li>Malicious or misconfigured PEs flooding the network</li>
        </ul>
        <t>
          Rate limiting should be applied at:
        </t>
        <ul spacing="normal">
          <li>Route generation (at Reporting PE)</li>
          <li>Route acceptance (at Receiving PE)</li>
          <li>Per-peer basis</li>
          <li>Global aggregate level</li>
        </ul>
      </section>
      
      <section numbered="true" toc="default">
        <name>Path Selection for Aggregation</name>
        <t>
          Path selection for Unreachability Routes follows standard BGP
          best path selection (<xref target="RFC7432"/> Section 15,
          incorporating <xref target="RFC9136"/>) with the following
          clarifications:
        </t>
        <ul spacing="normal">
          <li>Weight/Local Preference: Apply normally based on local
              policy.</li>
          <li>AS_PATH Length: Shorter AS_PATH is preferred. This
              represents the path the UPDATE message took.</li>
          <li>ORIGIN: IGP preferred over EGP over INCOMPLETE.</li>
          <li>MED: Apply if comparing paths from the same neighboring
              AS.</li>
          <li>BGP Identifier: Use for tie-breaking.</li>
        </ul>
        <t>
          The content of Reporter TLVs (number of reporters, reason codes,
          timestamps, etc.) MUST NOT influence path selection. Path
          selection determines which UPDATE's BGP attributes are used for
          propagation, while aggregation combines Reporter TLVs from
          multiple paths.
        </t>
      </section>
      
      <section numbered="true" toc="default">
        <name>Communities and Attributes</name>
        <t>
          Standard BGP communities and attributes apply to the UPDATE
          message carrying Unreachability Routes:
        </t>
        <ul spacing="normal">
          <li>NO_EXPORT, NO_ADVERTISE, and NO_EXPORT_SUBCONFED work as
              defined in their respective specifications</li>
          <li>Large Communities <xref target="RFC8092"/> MAY be used for
              policy control of aggregation behavior</li>
          <li>AS_PATH is constructed normally for the UPDATE message path</li>
          <li>ORIGIN SHOULD be set to INCOMPLETE for locally generated
              unreachability information, reflecting that the
              information does not originate from routing protocol
              state</li>
          <li>The Router's MAC Extended Community has no effect on
              Unreachability Routes; overlay index semantics do not
              apply (Section 3.4).  Senders SHOULD NOT attach it;
              receivers MUST ignore it if present.</li>
        </ul>
        <t>
          These attributes represent the path taken by the UPDATE message
          itself, not the paths of individual reporters (which are preserved
          in Reporter TLVs).
        </t>
      </section>

      <section numbered="true" toc="default">
        <name>Error Handling</name>
        <t>
          Error handling for IP Prefix Unreachability Routes follows
          <xref target="RFC7606"/> and
          <xref target="I-D.ietf-bess-rfc7432bis"/> Section 7.14.1.
          Per-class actions are specified in Sections 4.10.1 through
          4.10.4.  Per <xref target="I-D.ietf-bess-rfc7432bis"/>
          Section 7.14, "session reset" MAY be replaced with
          "AFI/SAFI disable" behavior where supported.  Checks in
          Section 4.10.1 are performed before those in
          Section 4.10.2; on first error the corresponding action
          MUST be taken and further NLRI parsing MUST cease.  All
          error conditions MUST be logged.
        </t>

        <section numbered="true" toc="default">
          <name>NLRI Structural Errors</name>
          <t>
            A receiver MUST apply "session reset" per
            <xref target="I-D.ietf-bess-rfc7432bis"/> Section 7.14.1
            on:
          </t>
          <ul spacing="normal">
            <li>Length below the minimum for this route type.</li>
            <li>Length inconsistent with the enclosing
                MP_REACH_NLRI or MP_UNREACH_NLRI attribute.</li>
            <li>Address Family other than 1 or 2: the IP Prefix
                field boundary cannot be determined, and
                subsequent Key fields cannot be parsed.</li>
            <li>IP Prefix Length outside the range permitted for
                the indicated Address Family: the prefix cannot
                be unambiguously constructed and is not suitable
                as a lookup key.</li>
          </ul>
        </section>

        <section numbered="true" toc="default">
          <name>Non-Key Field Errors</name>
          <t>
            A receiver MUST apply "treat-as-withdraw" per
            <xref target="I-D.ietf-bess-rfc7432bis"/> Section 7.14.1
            on:
          </t>
          <ul spacing="normal">
            <li>Non-zero Ethernet Segment Identifier, GW IP Address
                Length, GW IP Address, or MPLS Label (Section 3.4
                requires each to be zero).</li>
            <li>No Reporter TLVs present (Section 3.3 requires one
                or more).</li>
          </ul>
        </section>

        <section numbered="true" toc="default">
          <name>Reporter TLV Errors</name>
          <t>
            Per <xref target="RFC9552"/> Section 5.1, unknown or
            malformed Reporter TLVs MUST NOT cause the NLRI to be
            considered malformed.
          </t>
          <ul spacing="normal">
            <li>Unrecognized TLV Type: the TLV is ignored; parsing
                resumes at the next TLV boundary.</li>
            <li>Malformed TLV (Length inconsistent with remaining
                NLRI data or below the 8-octet minimum): the TLV
                MUST be discarded.  If well-formed Reporter TLVs
                remain, they are processed; otherwise
                "treat-as-withdraw" MUST be applied.</li>
            <li>Duplicate Reporter TLVs (same Identifier and AS
                Number): only the first is processed
                (Section 3.5).</li>
            <li>Reporter TLV count exceeding the implementation
                limit (Section 4.6): excess TLVs MUST be
                discarded.</li>
          </ul>
        </section>

        <section numbered="true" toc="default">
          <name>Sub-TLV Errors</name>
          <t>
            An unrecognized Sub-TLV Type within a Reporter TLV is
            silently ignored (Section 3.6.4).  A Sub-TLV whose
            Length is inconsistent with available data MUST be
            discarded; processing of the enclosing Reporter TLV
            and remaining Sub-TLVs continues.
          </t>
        </section>
      </section>

    </section>

    <section numbered="true" toc="default">
      <name>Interoperability Considerations</name>
      
      <section numbered="true" toc="default">
        <name>Incremental Deployment</name>
        <t>
          The IP Prefix Unreachability Route Type can be deployed
          incrementally without requiring network-wide upgrades:
        </t>
        <ul spacing="normal">
          <li>PEs that don't support this route type will ignore it per
              standard BGP behavior (unknown route type handling)</li>
          <li>Mixed environments with supporting and non-supporting PEs
              work correctly</li>
          <li>The feature can be enabled on specific EVPN instances for
              testing before broader deployment</li>
          <li>Aggregation support is OPTIONAL; PEs that do not implement
              aggregation can still propagate single-reporter routes</li>
          <li>Distinct Route Targets allow control over which PEs receive
              unreachability information</li>
        </ul>
      </section>
      
      <section numbered="true" toc="default">
        <name>Interaction with Route Reflectors</name>
        <t>
          Route Reflectors process Unreachability Routes like any other
          EVPN route type:
        </t>
        <ul spacing="normal">
          <li>Apply standard route reflection rules</li>
          <li>ORIGINATOR_ID and CLUSTER_LIST attributes apply normally to
              the UPDATE message, not to individual reporters</li>
          <li>Route Reflectors SHOULD support aggregation to combine
              reports from multiple clients</li>
          <li>When reflecting to clients, include all aggregated Reporter
              TLVs</li>
        </ul>
        <t>
          The distinction between the ORIGINATOR_ID BGP attribute and the
          Reporter Identifier field in Reporter TLVs is important:
        </t>
        <ul spacing="normal">
          <li>ORIGINATOR_ID identifies the originator of the BGP UPDATE
              message for loop prevention</li>
          <li>Reporter Identifier identifies the PE that observed and
              reported the unreachability condition</li>
          <li>These MAY be different in aggregated scenarios</li>
        </ul>
        <t>
          Route Reflectors that do not support aggregation will still
          properly reflect unreachability routes using standard route
          reflection procedures. In this case, only the best path's
          Reporter TLV(s) will be visible to clients.
        </t>
        <t>
          Operators deploying this feature SHOULD enable aggregation on
          Route Reflectors to maximize the utility of multi-vantage-point
          reporting.
        </t>
      </section>
      
      <section numbered="true" toc="default">
        <name>Interaction with Other EVPN Route Types</name>
        <t>
          IP Prefix Unreachability Routes are completely independent from
          other EVPN route types. Specifically:
        </t>
        <ul spacing="normal">
          <li>A Route Type 5 (IP Prefix Advertisement) and an IP Prefix
              Unreachability Route for the same logical prefix (same Route
              Distinguisher, Ethernet Tag ID, IP Prefix Length, and IP Prefix
              value, with the unreachability Address Family value matching the
              IPv4 or IPv6 encoding of that RT-5 per <xref target="RFC9136"/>)
              are independent and may coexist</li>
          <li>Presence of an unreachability route does NOT imply absence
              of a reachability route</li>
          <li>Withdrawal of a reachability route does NOT automatically
              generate an unreachability route</li>
          <li>BGP path selection is performed independently for each
              route type</li>
        </ul>
        <t>
          This independence is crucial for maintaining forwarding plane
          separation and allowing unreachability signaling for prefixes
          that were never advertised as reachable.
        </t>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>Deployment Considerations</name>
      
      <section numbered="true" toc="default">
        <name>Use Cases</name>
        <dl newline="false" spacing="normal">
          <dt>Multi-Tenant Data Centers:</dt>
          <dd>Share unreachability information across tenant networks
              for coordinated security response without affecting tenant
              traffic forwarding</dd>
          
          <dt>DCI (Data Center Interconnect):</dt>
          <dd>Correlate unreachability reports from multiple data centers
              to distinguish between local issues and global prefix problems</dd>
          
          <dt>Security Monitoring:</dt>
          <dd>Track suspicious prefix patterns across EVPN instances,
              coordinate DDoS response, and share threat intelligence</dd>
          
          <dt>Troubleshooting:</dt>
          <dd>Debug prefix reachability issues without impacting production
              forwarding, identify asymmetric reachability, and correlate
              with overlay network health</dd>
          
          <dt>Compliance and Auditing:</dt>
          <dd>Maintain records of unreachability events for compliance
              purposes and SLA verification</dd>
          
          <dt>Policy-Driven Actions:</dt>
          <dd>Trigger an action, as defined by a local policy, in
              response to received unreachability information (e.g.,
              traffic engineering adjustments, alerting, or logging)</dd>
        </dl>
      </section>
      
      <section numbered="true" toc="default">
        <name>Operational Recommendations</name>
        <ul spacing="normal">
          <li>Enable aggregation on Route Reflectors to maximize
              visibility while minimizing route count</li>
          <li>Include Timestamp Sub-TLVs for temporal correlation</li>
          <li>Monitor UI-RIB size for capacity planning</li>
          <li>Test the feature on non-production EVPN instances before
              production deployment</li>
        </ul>
        <t>
          Implementations SHOULD provide management interfaces to query
          the UI-RIB, display reporters per prefix, and export
          unreachability data to external monitoring systems.
        </t>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
        This route type SHOULD only be enabled between trusted BGP
        peers. The trust model is similar to that required for standard
        EVPN route types.
      </t>
      <t>
        The following threats are specific to unreachability signaling:
      </t>
      <ol spacing="normal" type="1">
        <li>Information Leakage: Unreachability information may reveal
            network topology or operational issues. Operators SHOULD use
            Route Target filtering to restrict distribution.</li>
        <li>State Exhaustion: Malicious peers could exhaust UI-RIB
            memory. Implementations SHOULD enforce the limits described
            in <xref target="aggregation"/> and the Preventing State
            Explosion section.</li>
        <li>False Information: Peers could advertise false unreachability
            data. Since this SAFI does not affect forwarding, the impact
            is limited to monitoring systems.</li>
        <li>Reporter Impersonation: A peer could include Reporter TLVs
            claiming to represent other PEs. Implementations SHOULD
            validate that Reporter AS Numbers are consistent with the
            AS_PATH of the UPDATE that introduced them.</li>
        <li>Aggregation Amplification: A peer could send many UPDATEs
            with different Reporter TLVs for the same prefix. Reporter
            TLV limits and rate limiting mitigate this.</li>
        <li>Tenant Isolation: Improper RT configuration could leak
            unreachability information between tenants. Use separate
            RDs and tenant-specific RTs.</li>
      </ol>
      <t>
        Operators SHOULD use BGP session security (TCP-AO per
        <xref target="RFC5925"/>), validate Reporter Identifiers
        against known PE lists, configure per-peer rate limits, and
        maintain audit logs of unreachability route updates.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>IANA Considerations</name>
      
      <section numbered="true" toc="default">
        <name>EVPN Route Type</name>
        <t>
          IANA is requested to assign a new EVPN Route Type value from the
          "EVPN Route Types" registry within the "Border Gateway Protocol
          (BGP) Parameters" registry group:
        </t>
        <ul spacing="normal">
          <li>Value: TBD1</li>
          <li>Description: IP Prefix Unreachability Route Type</li>
          <li>Reference: This document</li>
        </ul>
      </section>
      
      <section numbered="true" toc="default">
        <name>EVPN Unreachability Reporter TLV Types</name>
        <t>
          IANA is requested to create a new registry called "EVPN
          Unreachability Reporter TLV Types" under the "Border Gateway
          Protocol (BGP) Parameters" registry page.
        </t>
        <t>Registration Procedure: Standards Action</t>
        <t>Initial registrations:</t>
        <artwork><![CDATA[
Value   Description                          Reference
-----   ------------------------------------  -----------
0       Reserved                             This document
1       Reporter TLV                         This document
2-254   Unassigned
255     Reserved                             This document
]]></artwork>
      </section>
      
      <section numbered="true" toc="default">
        <name>EVPN Unreachability Sub-TLV Types</name>
        <t>
          IANA is requested to create a new registry called "EVPN
          Unreachability Sub-TLV Types" under the "Border Gateway Protocol
          (BGP) Parameters" registry page.
        </t>
        <t>Registration Procedure: RFC Required</t>
        <t>Initial registrations:</t>
        <artwork><![CDATA[
Value   Description                          Reference
-----   ------------------------------------  -----------
0       Reserved                             This document
1       Unreachability Reason Code           This document
2       Timestamp                            This document
3       EVI                                  This document
4-254   Unassigned
255     Reserved                             This document
]]></artwork>
      </section>
      
      <section numbered="true" toc="default">
        <name>EVPN Unreachability Reason Codes</name>
        <t>
          IANA is requested to create a new registry called "EVPN
          Unreachability Reason Codes" under the "Border Gateway Protocol
          (BGP) Parameters" registry page.
        </t>
        <t>Registration Procedure: RFC Required for values 0-64535,
           Reserved for Private Use for values 64536-65535</t>
        <t>Initial registrations:</t>
        <artwork><![CDATA[
Value   Description                          Reference
-----   ------------------------------------  -----------
0       Unspecified                          This document
1       Policy Blocked                       This document
2       Security Filtered                    This document
3       RPKI Invalid                         This document
4       No Export Policy                     This document
5       Martian Address                      This document
6       Bogon Prefix                         This document
7       Route Dampening                      This document
8       Local Administrative Action          This document
9       Local Link Down                      This document
10      MAC Mobility Limit Exceeded          This document
11      Tenant Isolation Violation           This document
12      VTEP Unreachable                     This document
13-64535    Unassigned
64536-65535 Reserved for Private Use         This document
]]></artwork>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>
        The authors would like to thank the BESS working group for their
        valuable feedback and suggestions on this proposal. Special thanks
        to the EVPN protocol designers whose work on RFC 7432, RFC 9136,
        and related specifications provided the foundation for this
        extension.
      </t>
      <t>
        The aggregation mechanism in this specification draws inspiration
        from similar multi-reporter approaches in other monitoring and
        troubleshooting protocols.
      </t>
    </section>
  </middle>

  <back>
    <references>
      <name>References</name>
      
      <references>
        <name>Normative References</name>
        
        <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 initials="S." surname="Bradner" fullname="S. Bradner"/>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        
        <reference anchor="RFC4760" target="https://www.rfc-editor.org/info/rfc4760">
          <front>
            <title>Multiprotocol Extensions for BGP-4</title>
            <author initials="T." surname="Bates" fullname="T. Bates"/>
            <author initials="R." surname="Chandra" fullname="R. Chandra"/>
            <author initials="D." surname="Katz" fullname="D. Katz"/>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter"/>
            <date year="2007" month="January"/>
          </front>
          <seriesInfo name="RFC" value="4760"/>
          <seriesInfo name="DOI" value="10.17487/RFC4760"/>
        </reference>

        <reference anchor="RFC4724" target="https://www.rfc-editor.org/info/rfc4724">
          <front>
            <title>Graceful Restart Mechanism for BGP</title>
            <author initials="S." surname="Sangli" fullname="S. Sangli"/>
            <author initials="E." surname="Chen" fullname="E. Chen"/>
            <author initials="R." surname="Fernando" fullname="R. Fernando"/>
            <author initials="J." surname="Scudder" fullname="J. Scudder"/>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter"/>
            <date year="2007" month="January"/>
          </front>
          <seriesInfo name="RFC" value="4724"/>
          <seriesInfo name="DOI" value="10.17487/RFC4724"/>
        </reference>

        <reference anchor="RFC7606" target="https://www.rfc-editor.org/info/rfc7606">
          <front>
            <title>Revised Error Handling for BGP UPDATE Messages</title>
            <author initials="E." surname="Chen" fullname="E. Chen" role="editor"/>
            <author initials="J." surname="Scudder" fullname="J. Scudder" role="editor"/>
            <author initials="P." surname="Mohapatra" fullname="P. Mohapatra"/>
            <author initials="K." surname="Patel" fullname="K. Patel"/>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="RFC" value="7606"/>
          <seriesInfo name="DOI" value="10.17487/RFC7606"/>
        </reference>
        
        <reference anchor="RFC7432" target="https://www.rfc-editor.org/info/rfc7432">
          <front>
            <title>BGP MPLS-Based Ethernet VPN</title>
            <author initials="A." surname="Sajassi" fullname="A. Sajassi" role="editor"/>
            <author initials="R." surname="Aggarwal" fullname="R. Aggarwal"/>
            <author initials="N." surname="Bitar" fullname="N. Bitar"/>
            <author initials="A." surname="Isaac" fullname="A. Isaac"/>
            <author initials="J." surname="Uttaro" fullname="J. Uttaro"/>
            <author initials="J." surname="Drake" fullname="J. Drake"/>
            <author initials="W." surname="Henderickx" fullname="W. Henderickx"/>
            <date year="2015" month="February"/>
          </front>
          <seriesInfo name="RFC" value="7432"/>
          <seriesInfo name="DOI" value="10.17487/RFC7432"/>
        </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 initials="B." surname="Leiba" fullname="B. Leiba"/>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        
        <reference anchor="RFC9136" target="https://www.rfc-editor.org/info/rfc9136">
          <front>
            <title>IP Prefix Advertisement in Ethernet VPN (EVPN)</title>
            <author initials="J." surname="Rabadan" fullname="J. Rabadan" role="editor"/>
            <author initials="W." surname="Henderickx" fullname="W. Henderickx"/>
            <author initials="J." surname="Drake" fullname="J. Drake"/>
            <author initials="W." surname="Lin" fullname="W. Lin"/>
            <author initials="A." surname="Sajassi" fullname="A. Sajassi"/>
            <date year="2021" month="October"/>
          </front>
          <seriesInfo name="RFC" value="9136"/>
          <seriesInfo name="DOI" value="10.17487/RFC9136"/>
        </reference>

        <reference anchor="RFC9552" target="https://www.rfc-editor.org/info/rfc9552">
          <front>
            <title>Distribution of Link-State and Traffic Engineering Information Using BGP</title>
            <author initials="K." surname="Talaulikar" fullname="K. Talaulikar" role="editor"/>
            <date year="2024" month="January"/>
          </front>
          <seriesInfo name="RFC" value="9552"/>
          <seriesInfo name="DOI" value="10.17487/RFC9552"/>
        </reference>

        <reference anchor="I-D.ietf-bess-rfc7432bis" target="https://datatracker.ietf.org/doc/draft-ietf-bess-rfc7432bis/">
          <front>
            <title>BGP MPLS-Based Ethernet VPN</title>
            <author initials="A." surname="Sajassi" fullname="A. Sajassi" role="editor"/>
            <author initials="L." surname="Burdet" fullname="L. Burdet" role="editor"/>
            <author initials="J." surname="Drake" fullname="J. Drake"/>
            <author initials="J." surname="Rabadan" fullname="J. Rabadan"/>
            <date year="2026" month="March"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-bess-rfc7432bis-14"/>
        </reference>
      </references>
      
      <references>
        <name>Informative References</name>
        
        <reference anchor="RFC5925" target="https://www.rfc-editor.org/info/rfc5925">
          <front>
            <title>The TCP Authentication Option</title>
            <author initials="J." surname="Touch" fullname="J. Touch"/>
            <author initials="A." surname="Mankin" fullname="A. Mankin"/>
            <author initials="R." surname="Bonica" fullname="R. Bonica"/>
            <date year="2010" month="June"/>
          </front>
          <seriesInfo name="RFC" value="5925"/>
          <seriesInfo name="DOI" value="10.17487/RFC5925"/>
        </reference>
        
        <reference anchor="RFC8092" target="https://www.rfc-editor.org/info/rfc8092">
          <front>
            <title>BGP Large Communities Attribute</title>
            <author initials="J." surname="Heitz" fullname="J. Heitz" role="editor"/>
            <author initials="J." surname="Snijders" fullname="J. Snijders" role="editor"/>
            <author initials="K." surname="Patel" fullname="K. Patel"/>
            <author initials="I." surname="Bagdonas" fullname="I. Bagdonas"/>
            <author initials="N." surname="Hilliard" fullname="N. Hilliard"/>
            <date year="2017" month="February"/>
          </front>
          <seriesInfo name="RFC" value="8092"/>
          <seriesInfo name="DOI" value="10.17487/RFC8092"/>
        </reference>
        
        <reference anchor="RFC7911" target="https://www.rfc-editor.org/info/rfc7911">
          <front>
            <title>Advertisement of Multiple Paths in BGP</title>
            <author initials="D." surname="Walton" fullname="D. Walton"/>
            <author initials="A." surname="Retana" fullname="A. Retana"/>
            <author initials="E." surname="Chen" fullname="E. Chen"/>
            <author initials="J." surname="Scudder" fullname="J. Scudder"/>
            <date year="2016" month="July"/>
          </front>
          <seriesInfo name="RFC" value="7911"/>
          <seriesInfo name="DOI" value="10.17487/RFC7911"/>
        </reference>
        
        <reference anchor="RFC7365" target="https://www.rfc-editor.org/info/rfc7365">
          <front>
            <title>Framework for Data Center (DC) Network Virtualization</title>
            <author initials="M." surname="Lasserre" fullname="M. Lasserre"/>
            <author initials="F." surname="Balus" fullname="F. Balus"/>
            <author initials="T." surname="Morin" fullname="T. Morin"/>
            <author initials="N." surname="Bitar" fullname="N. Bitar"/>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter"/>
            <date year="2014" month="October"/>
          </front>
          <seriesInfo name="RFC" value="7365"/>
          <seriesInfo name="DOI" value="10.17487/RFC7365"/>
        </reference>
        
        <reference anchor="RFC8365" target="https://www.rfc-editor.org/info/rfc8365">
          <front>
            <title>A Network Virtualization Overlay Solution Using Ethernet VPN (EVPN)</title>
            <author initials="A." surname="Sajassi" fullname="A. Sajassi" role="editor"/>
            <author initials="J." surname="Drake" fullname="J. Drake" role="editor"/>
            <author initials="N." surname="Bitar" fullname="N. Bitar"/>
            <author initials="A." surname="Isaac" fullname="A. Isaac"/>
            <author initials="W." surname="Henderickx" fullname="W. Henderickx"/>
            <author initials="R." surname="Shekhar" fullname="R. Shekhar"/>
            <date year="2018" month="March"/>
          </front>
          <seriesInfo name="RFC" value="8365"/>
          <seriesInfo name="DOI" value="10.17487/RFC8365"/>
        </reference>
        
        <reference anchor="I-D.tantsura-idr-unreachability-safi">
          <front>
            <title>BGP Unreachability Information SAFI</title>
            <author initials="J." surname="Tantsura" fullname="Jeff Tantsura"/>
            <author initials="D." surname="Sharp" fullname="Donald Sharp"/>
            <author initials="V." surname="Venkatraman" fullname="Vivek Venkatraman"/>
            <author initials="K." surname="Muppalla" fullname="Karthikeya Venkat Muppalla"/>
            <author initials="M." surname="Rzehak" fullname="Maciej Rzehak"/>
            <date year="2026" month="April"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tantsura-idr-unreachability-safi-03"/>
        </reference>
      </references>
    </references>
    
    <section numbered="false" toc="default">
      <name>Appendix A: Encoding Examples</name>
      
      <section numbered="false" toc="default">
        <name>Example 1: Minimal Unreachability Route</name>
        <t>
          IPv4 tenant prefix 192.0.2.0/24 reported unreachable by a
          single leaf PE because egress export policy suppresses the
          prefix (Reason Code 4, "No Export Policy"):
        </t>
        <artwork><![CDATA[
Route Type: TBD1
Length: 48 octets (route-type-specific)
Route Distinguisher: 198.51.100.1:100 (RD Type 1, 8 octets)
Ethernet Segment Identifier: 0 (10 octets)
Ethernet Tag ID: 0 (4 octets)
Address Family: 1 (IPv4)
IP Prefix Length: 24 (1 octet)
IP Prefix: 192.0.2.0 (4 octets)
GW IP Address Length: 0 (1 octet)
MPLS Label: 0 (3 octets)

Reporter TLV (on-wire: 16 octets = 1 Type + 2 Length + 13 payload):
  Type: 1
  Length: 13 (payload octets)
  Reporter Identifier: 198.51.100.1 (4 octets)
  Reporter AS: 65001 (4 octets)
  Sub-TLV Reason Code:
    Sub-Type: 1
    Sub-Length: 2
    Value: 4 (No Export Policy)

Route-type-specific = 8 + 10 + 4 + 1 + 1 + 4 + 1 + 3 + 16 = 48 octets
NLRI (with Route Type + Length) = 2 + 48 = 50 octets

Hexadecimal encoding (TT = TBD1 Route Type):
TT 30 00 01 C6 33 64 01 00 64 00 00 00 00 00 00
00 00 00 00 00 00 00 00 01 18 C0 00 02 00 00 00
00 00 01 00 0D C6 33 64 01 00 00 FD E9 01 00 02
00 04
]]></artwork>
        <t>
          See Example 3 for the equivalent IPv6 encoding.
        </t>
      </section>
      
      <section numbered="false" toc="default">
        <name>Example 2: Aggregated Route with Multiple Reporters</name>
        <t>
          IPv4 tenant prefix 198.51.100.0/24 reported by three leaf PEs
          in the same DC fabric following a coordinated administrative
          action (Reason Code 8, "Local Administrative Action").
          Timestamps are spaced by a few seconds, consistent with
          propagation of the administrative event across the fabric:
        </t>
        <artwork><![CDATA[
Route Type: TBD1
Length: 113 octets (route-type-specific)
Route Distinguisher: 198.51.100.1:100
Ethernet Segment Identifier: 0
Ethernet Tag ID: 0
Address Family: 1 (IPv4)
IP Prefix Length: 24
IP Prefix: 198.51.100.0
GW IP Address Length: 0
MPLS Label: 0

Reporter TLV #1 (on-wire: 27 octets):
  Type: 1, Length: 24 (payload)
  Reporter Identifier: 198.51.100.1
  Reporter AS: 65001
  Sub-TLVs:
    Reason Code (Type 1, Length 2): 8 (Local Administrative Action)
    Timestamp (Type 2, Length 8): 1704672000

Reporter TLV #2 (on-wire: 27 octets):
  Type: 1, Length: 24
  Reporter Identifier: 198.51.100.2
  Reporter AS: 65001
  Sub-TLVs:
    Reason Code (Type 1, Length 2): 8
    Timestamp (Type 2, Length 8): 1704672005

Reporter TLV #3 (on-wire: 27 octets):
  Type: 1, Length: 24
  Reporter Identifier: 198.51.100.3
  Reporter AS: 65001
  Sub-TLVs:
    Reason Code (Type 1, Length 2): 8
    Timestamp (Type 2, Length 8): 1704672008

Fields through MPLS Label: 32 octets
Reporter TLVs on wire: 3 x 27 = 81 octets
Route-type-specific total: 32 + 81 = 113 octets
NLRI (with Route Type + Length) = 2 + 113 = 115 octets

Hexadecimal encoding (TT = TBD1 Route Type):
TT 71 00 01 C6 33 64 01 00 64 00 00 00 00 00 00
00 00 00 00 00 00 00 00 01 18 C6 33 64 00 00 00
00 00 01 00 18 C6 33 64 01 00 00 FD E9 01 00 02
00 08 02 00 08 00 00 00 00 65 9B 3B 00 01 00 18
C6 33 64 02 00 00 FD E9 01 00 02 00 08 02 00 08
00 00 00 00 65 9B 3B 05 01 00 18 C6 33 64 03 00
00 FD E9 01 00 02 00 08 02 00 08 00 00 00 00 65
9B 3B 08
]]></artwork>
      </section>
      
      <section numbered="false" toc="default">
        <name>Example 3: IPv6 Unreachability Route</name>
        <t>
          IPv6 tenant prefix 2001:db8::/32 reported unreachable by a
          leaf PE following a local CE-facing link-down event (Reason
          Code 9, "Local Link Down"):
        </t>
        <artwork><![CDATA[
Route Type: TBD1
Length: 60 octets (route-type-specific)
Route Distinguisher: 198.51.100.1:100 (RD Type 1, 8 octets)
Ethernet Segment Identifier: 0 (10 octets)
Ethernet Tag ID: 0 (4 octets)
Address Family: 2 (IPv6)
IP Prefix Length: 32 (1 octet)
IP Prefix: 2001:db8:: (16 octets)
GW IP Address Length: 0 (1 octet)
MPLS Label: 0 (3 octets)

Reporter TLV (on-wire: 16 octets = 1 Type + 2 Length + 13 payload):
  Type: 1
  Length: 13 (payload octets)
  Reporter Identifier: 198.51.100.1 (4 octets)
  Reporter AS: 65001 (4 octets)
  Sub-TLV Reason Code:
    Sub-Type: 1
    Sub-Length: 2
    Value: 9 (Local Link Down)

Route-type-specific = 8 + 10 + 4 + 1 + 1 + 16 + 1 + 3 + 16 = 60 octets
NLRI (with Route Type + Length) = 2 + 60 = 62 octets

Hexadecimal encoding (TT = TBD1 Route Type):
TT 3C 00 01 C6 33 64 01 00 64 00 00 00 00 00 00
00 00 00 00 00 00 00 00 02 20 20 01 0D B8 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
0D C6 33 64 01 00 00 FD E9 01 00 02 00 09
]]></artwork>
      </section>

      <section numbered="false" toc="default">
        <name>Example 4: Complete BGP UPDATE Message</name>
        <t>
          A PE (198.51.100.1, AS 65001) advertises that
          192.0.2.0/24 is unreachable, with Reason RPKI Invalid
          and a detection timestamp:
        </t>
        <artwork><![CDATA[
BGP UPDATE Message:
  Withdrawn Routes Length: 0
  Total Path Attribute Length: (calculated)

  Path Attributes:
    ORIGIN (Type 1):
      Value: INCOMPLETE (2)

    AS_PATH (Type 2):
      Segment Type: AS_SEQUENCE
      Segment Length: 1
      AS: 65001

    MP_REACH_NLRI (Type 14, Flags 0x90):
      AFI: 25 (L2VPN)
      SAFI: 70 (EVPN)
      Next Hop Length: 4
      Next Hop: 198.51.100.1
      Reserved: 0
      NLRI:
        Route Type: TBD1 (IP Prefix Unreachability)
        Length: 59
        Route Distinguisher: 198.51.100.1:100
        Ethernet Segment Identifier: 0
        Ethernet Tag ID: 0
        Address Family: 1 (IPv4)
        IP Prefix Length: 24
        IP Prefix: 192.0.2.0
        GW IP Address Length: 0
        MPLS Label: 0
        Reporter TLV:
          Type: 1
          Length: 24
          Reporter Identifier: 198.51.100.1
          Reporter AS: 65001
          Sub-TLV (Reason):
            Sub-Type: 1
            Sub-Length: 2
            Value: 3 (RPKI Invalid)
          Sub-TLV (Timestamp):
            Sub-Type: 2
            Sub-Length: 8
            Value: 1733789400

    EXTENDED_COMMUNITIES (Type 16):
      Route Target: 65001:100
]]></artwork>
      </section>

      <section numbered="false" toc="default">
        <name>Example 5: Aggregation at a Receiving PE</name>
        <t>
          Router R1 receives two UPDATEs for the same
          Unreachability NLRI key (RD 198.51.100.1:100,
          Ethernet Tag 0, IPv4, 192.0.2.0/24) from different
          upstream neighbors.  R1 selects a best path by
          standard BGP procedure, extracts Reporter TLVs from
          the best path plus feasible paths, de-duplicates by
          (Reporter Identifier, Reporter AS), and re-advertises
          a single aggregated NLRI.
        </t>
        <artwork><![CDATA[
UPDATE 1 (from Neighbor N1, AS 65100):
  AFI: 25, SAFI: 70
  AS_PATH: 65100
  NLRI (192.0.2.0/24 Unreachability):
    Reporter TLV:
      Reporter ID: 198.51.100.1, AS: 65001
      Reason: RPKI Invalid (3)
      Timestamp: 1733789400

UPDATE 2 (from Neighbor N2, AS 65200):
  AFI: 25, SAFI: 70
  AS_PATH: 65200
  NLRI (192.0.2.0/24 Unreachability):
    Reporter TLV:
      Reporter ID: 198.51.100.2, AS: 65002
      Reason: Policy Blocked (1)
      Timestamp: 1733789410

R1 Path Selection:
  - Compare AS_PATH length: both length 1
  - Compare by BGP Identifier: UPDATE 1 wins

R1 Aggregation:
  - Extract Reporter TLV from UPDATE 1 (best path)
  - Extract Reporter TLV from UPDATE 2 (feasible path)
  - No duplicate (distinct Reporter ID + AS)
  - Build NLRI with both Reporter TLVs

R1 Advertisement to downstream:
  AFI: 25, SAFI: 70
  AS_PATH: 65100 (from best path)
  NLRI (192.0.2.0/24 Unreachability):
    Reporter TLV #1:
      Reporter ID: 198.51.100.1, AS: 65001
      Reason: 3 (RPKI Invalid)
      Timestamp: 1733789400
    Reporter TLV #2:
      Reporter ID: 198.51.100.2, AS: 65002
      Reason: 1 (Policy Blocked)
      Timestamp: 1733789410
]]></artwork>
      </section>

      <section numbered="false" toc="default">
        <name>Example 6: Withdrawal Procedures</name>
        <t>
          Continuing from Example 5, Reporter 198.51.100.1
          clears its report first (partial withdrawal), then
          Reporter 198.51.100.2 also clears (complete
          withdrawal).
        </t>
        <artwork><![CDATA[
Initial State on R1:
  UI-RIB Entry for NLRI key
  (RD 198.51.100.1:100, ETag 0, IPv4, 192.0.2.0/24):
    Reporter TLV #1: 198.51.100.1 / AS 65001 (from N1)
    Reporter TLV #2: 198.51.100.2 / AS 65002 (from N2)

Event: N1 sends MP_UNREACH_NLRI for the NLRI key.

R1 Processing:
  1. Identify withdrawal source: N1
  2. Remove Reporter TLVs sourced from N1
     (Reporter 198.51.100.1 / AS 65001)
  3. Reporter TLV #2 remains
  4. Re-advertise with the remaining Reporter TLV

R1 Advertisement to downstream:
  MP_REACH_NLRI (AFI 25, SAFI 70):
    NLRI (192.0.2.0/24 Unreachability):
      Reporter TLV:
        Reporter ID: 198.51.100.2, AS: 65002
        Reason: 1 (Policy Blocked)
        Timestamp: 1733789410

Later Event: N2 also sends MP_UNREACH_NLRI for the NLRI key.

R1 Processing:
  1. Remove Reporter TLVs sourced from N2
  2. No Reporter TLVs remain
  3. Withdraw the entire NLRI

R1 Advertisement to downstream:
  MP_UNREACH_NLRI (AFI 25, SAFI 70):
    Withdrawn NLRI:
      Route Type: TBD1
      Length: 32
      Route Distinguisher: 198.51.100.1:100
      Ethernet Segment Identifier: 0
      Ethernet Tag ID: 0
      Address Family: 1 (IPv4)
      IP Prefix Length: 24
      IP Prefix: 192.0.2.0
      GW IP Address Length: 0
      MPLS Label: 0
]]></artwork>
      </section>
    </section>

    <section numbered="false" toc="default" anchor="design-tradeoffs">
      <name>Appendix B: Design Tradeoffs</name>
      <t>
        This appendix summarizes encoding choices and their rationale.
      </t>
      <dl newline="false" spacing="normal">
        <dt>Explicit Address Family vs inferring IPv4/IPv6:</dt>
        <dd>Reachability RT-5 uses a fixed route-type-specific size
            (34 or 58 octets), so receivers can infer prefix width.
            Unreachability NLRIs append variable-length Reporter TLVs,
            so total length no longer implies address family, and IP
            Prefix Length alone is ambiguous (e.g., /24 is valid for
            both). A 1-octet Address Family field resolves this.</dd>
        
        <dt>One route type vs two (per address family):</dt>
        <dd>Separate route type values would remove the Address Family
            octet but duplicate specifications and IANA registrations.
            This document uses one type with an explicit family
            indicator.</dd>
        
        <dt>RT-5-shaped NLRI vs minimal custom encoding:</dt>
        <dd>Reusing the RT-5 field order maximizes familiarity and
            parser reuse, at the cost of carrying unused fields (ESI,
            GW IP, MPLS Label) plus one new octet for Address Family.
            Reporter detail is concentrated in TLVs.</dd>
        
        <dt>Route-type-specific Length limit:</dt>
        <dd>The Length field is one octet (<xref target="RFC7432"/>),
            so the route-type-specific portion cannot exceed 255
            octets. Implementations MUST stay within that limit by
            bounding the number of Reporter TLVs per NLRI.</dd>
      </dl>
    </section>
  </back>
</rfc>

