<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-li-idr-bgp-failure-propagation-convergence-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="BGP Failure Propagation">BGP Failure Propagation (BGP-FP) for Enhancing Control-Plane Convergence</title>
    <seriesInfo name="Internet-Draft" value="draft-li-idr-bgp-failure-propagation-convergence-00"/>
    <author initials="Y." surname="Li" fullname="Yuhang Li">
      <organization>Tsinghua University</organization>
      <address>
        <email>yh-li24@mails.tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="Y." surname="Li" fullname="Yahui Li">
      <organization>Tsinghua University</organization>
      <address>
        <email>liyahui@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="X." surname="Yin" fullname="Xia Yin">
      <organization>Tsinghua University</organization>
      <address>
        <email>yxia@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="H." surname="Zhang" fullname="Han Zhang">
      <organization>Tsinghua University</organization>
      <address>
        <email>zhhan@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="X." surname="Shi" fullname="Xingang Shi">
      <organization>Tsinghua University</organization>
      <address>
        <email>shixg@cernet.edu.cn</email>
      </address>
    </author>
    <date year="2026" month="February" day="10"/>
    <area>Routing</area>
    <workgroup>IDR</workgroup>
    <keyword>BGP</keyword>
    <keyword>convergence</keyword>
    <keyword>failure propagation</keyword>
    <keyword>path exploration</keyword>
    <abstract>
      <?line 63?>

<t>This document specifies BGP Failure Propagation (BGP-FP), an infrastructure and protocol that improves inter-domain routing convergence by accelerating the removal of stale (invalid) routes. BGP-FP uses (1) an Agent deployed per Autonomous System (AS) to detect eBGP link/policy/prefix failures and to configure local routers, (2) a logically centralized (potentially distributed) Repository to store and selectively forward failure information, and (3) BGP Large Communities as a "route freshness" marker. Agents validate and apply Repository updates to filter routes that traverse failed eBGP links or otherwise violate the originating AS’s forwarding intent, reducing route flap propagation in the control plane.</t>
    </abstract>
  </front>
  <middle>
    <?line 67?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>BGP-4 <xref target="RFC4271"/> is a path-vector inter-domain routing protocol. Internet operators have long observed BGP instability and route-flap propagation <xref target="RFC2439"/>. A key contributor is that routes that have become invalid (e.g., because an eBGP link failed) can persist and propagate until withdrawals and path exploration complete.</t>
      <t>BGP-FP addresses this by disseminating authenticated failure information and by marking routes with a per-AS freshness indicator. Upon learning a failure, downstream ASes can proactively reject stale routes that are provably older than the failure event, reducing control-plane churn and improving eBGP convergence.</t>
      <t>This document focuses on eBGP control-plane convergence. Terminology related to convergence benchmarking is aligned with <xref target="RFC4098"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>eBGP: As defined in <xref target="RFC4271"/>.</t>
        <t>Agent: A server deployed per AS that (1) receives router logs, (2) reads local routing state (e.g., RIB/Adj-RIB-In/Adj-RIB-Out), (3) communicates with a Repository using BGP-FP messages, and (4) configures local routers’ import/export policies to apply BGP-FP.</t>
        <t>Repository: A network service with a well-known reachability method (discovery is out of scope) that stores per-AS BGP-FP state and forwards updates on-demand to subscribed ASes.</t>
        <t>BGP Link: An eBGP adjacency between two different ASes (i.e., an inter-AS BGP session and its corresponding forwarding relationship).</t>
        <t>Invalid (Stale) BGP Route: A route whose AS_PATH includes an eBGP link that is no longer usable (explicitly or implicitly withdrawn), or whose propagation violates a policy/prefix condition expressed by the originating AS. For example, the eBGP relationship between AS X and AS Y is down, but a route’s AS_PATH still contains "... X Y ..."; such a route is considered stale and is expected to be withdrawn or replaced.</t>
        <t>Local AS: The AS in which a given Agent is deployed.</t>
        <t>Subscribed ASes: The set of ASNs that appear in AS_PATH attributes of routes in the Local AS routing state (e.g., Loc-RIB). The Local AS subscribes to BGP-FP updates originating from those ASes.</t>
        <t>NOTE: The terms "route", "BGP route", "AS_PATH", "BGP Neighbor", "BGP Peer", "MRAI", and "RIB" are used consistent with <xref target="RFC4098"/> where applicable.</t>
      </section>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="architecture-and-operational-overview">
      <name>Architecture and Operational Overview</name>
      <section anchor="components">
        <name>Components</name>
        <t>BGP-FP consists of:</t>
        <ul spacing="normal">
          <li>
            <t>Agent (per AS): detects local failures, maintains a per-AS freshness counter, reports state to the Repository, and configures routers to (a) attach freshness markers to outbound routes and (b) filter stale routes upon receiving Repository updates.</t>
          </li>
          <li>
            <t>Repository: stores per-AS reported state and forwards BGP-FP updates to ASes that have subscribed to the source AS.</t>
          </li>
        </ul>
        <figure>
          <name>The Architecture of BGP-FP</name>
          <artwork type="ascii-art"><![CDATA[
   +------------------------------+
   | Repository (logically one,   |
   | physically distributed)      |
   +---------------+--------------+
                   ^
                   |  BGP-FP over TCP
                   v
   +---------------+--------------+
   | Agent (per AS)               |
   | - receives router logs       |
   | - reads routing state        |
   | - configures import/export   |
   +---------------+--------------+
                   ^
                   |  logs / RIB / config channels
                   v
          +--------+--------+     
          | BGP Routers     |    
          | (border routers |
          |  in the AS)     |  
          +-----------------+   
]]></artwork>
        </figure>
      </section>
      <section anchor="information-model-link-state-entries">
        <name>Information Model: Link-State Entries</name>
        <t>An Agent reports "BGP Link State" information as a list of entries. Each entry is a UTF-8 string formatted as: "peer-asn ":" scope ":" status" where:</t>
        <ul spacing="normal">
          <li>
            <t>peer-asn: The 4-octet ASN of the eBGP neighbor (decimal).</t>
          </li>
          <li>
            <t>scope: Either "*" or a prefix/identifier that indicates the affected traffic scope. This document uses "prefix" in the broad sense and permits "*" to indicate all prefixes.</t>
          </li>
          <li>
            <t>status: "Established" or "Failure".</t>
          </li>
        </ul>
        <t>The following classes are distinguished (using the same textual form):</t>
        <ul spacing="normal">
          <li>
            <t>(1) Policy failure (prefix scoped to a peer): "PeerASN:Prefix:Failure" The Local AS indicates that it will not forward the indicated prefix toward PeerASN.</t>
          </li>
          <li>
            <t>(2) Link failure (all prefixes to a peer): "PeerASN:*:Failure" The Local AS indicates that its eBGP link/forwarding relationship with PeerASN is not usable for any prefixes.</t>
          </li>
          <li>
            <t>(3) Prefix withdrawal/denial (all peers for a prefix): "*:Prefix:Failure" The Local AS indicates that it will not accept or propagate the indicated prefix (or has withdrawn it).</t>
          </li>
        </ul>
        <t>The semantics above are used by downstream Agents to derive filtering rules for stale routes (Section 8).</t>
      </section>
      <section anchor="route-freshness-marking-with-bgp-large-communities">
        <name>Route Freshness Marking with BGP Large Communities</name>
        <t>BGP-FP uses the BGP Large Communities attribute <xref target="RFC8092"/>. Operational guidance for organizing Large Communities is discussed in <xref target="RFC8195"/>.</t>
        <t>Each AS maintains a monotonically increasing 32-bit Batch Counter. The Agent configures routers to attach a Large Community of the form.</t>
        <table>
          <name>Field Mapping</name>
          <thead>
            <tr>
              <th align="left">RFC8092</th>
              <th align="left">this document</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Global Administrator</td>
              <td align="left">Source ASN</td>
            </tr>
            <tr>
              <td align="left">Local Data Part 1</td>
              <td align="left">Function</td>
            </tr>
            <tr>
              <td align="left">Local Data Part 2</td>
              <td align="left">Batch Counter</td>
            </tr>
          </tbody>
        </table>
        <t>The table above shows a mapping table between the fields in BGP Large Communities <xref target="RFC8092"/> and this document.</t>
        <ul spacing="normal">
          <li>
            <t>Source ASN is the AS performing the marking (the Local AS).</t>
          </li>
          <li>
            <t>Function is an operator-chosen 32-bit value; this document uses 1234 as a default example.</t>
          </li>
          <li>
            <t>Batch Counter is the current freshness value for the Local AS.</t>
          </li>
        </ul>
        <t>A route <bcp14>MAY</bcp14> carry multiple Large Communities. BGP-FP requires that routers preserve existing Large Communities and that each AS that deploys BGP-FP adds (at least) its own freshness community.</t>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>BGP-FP defines a simple message protocol carried over TCP <xref target="RFC793"/> between Agents and the Repository. The protocol <bcp14>MUST</bcp14> support 4-octet ASNs as specified in <xref target="RFC6793"/>.
High-level operation:</t>
      <ul spacing="normal">
        <li>
          <t>Subscription: Each Agent computes its Subscribed ASes from local routing state and reports subscription deltas to the Repository.</t>
        </li>
        <li>
          <t>Failure reporting: Upon local events (eBGP down/up, policy change, prefix withdrawal/restore), an Agent increments its Batch Counter and reports updated Link-State Entries to the Repository.</t>
        </li>
        <li>
          <t>On-demand forwarding: The Repository forwards Source-AS updates only to Agents whose Local AS has subscribed to that Source ASN.</t>
        </li>
        <li>
          <t>Filtering: Receiving Agents validate updates and install import policy rules to reject stale routes that traverse failed links or violate reported policy/prefix constraints.</t>
        </li>
      </ul>
    </section>
    <section anchor="bgp-fp-message-encoding">
      <name>BGP-FP Message Encoding</name>
      <t>All multi-octet fields are in network byte order (big-endian).</t>
      <section anchor="common-header">
        <name>Common Header</name>
        <t>Each BGP-FP message begins with the following header:</t>
        <artwork type="ascii-art"><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Message Length                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |                    Reserved                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Source ASN                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   ~                     Attributes (TLVs)                         ~
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Message Length (32 bits): Number of octets following this field (i.e., header remainder and TLVs). Implementations <bcp14>MUST</bcp14> reject messages whose length exceeds the remaining TCP segment stream availability.</t>
          </li>
          <li>
            <t>Type (8 bits): Message type (Agent-to-Repository in Section 6; Repository-to-Agent in Section 7).</t>
          </li>
          <li>
            <t>Reserved (24 bits): Reserved for future use. The sender <bcp14>MUST</bcp14> set these bits to zero. The receiver <bcp14>MUST</bcp14> ignore them.</t>
          </li>
          <li>
            <t>Source ASN (32 bits): The originating AS for the state carried in the messag</t>
          </li>
        </ul>
      </section>
      <section anchor="attributes-tlv">
        <name>Attributes (TLV)</name>
        <t>Following the common header is a sequence of zero or more attributes, each encoded as a TLV:</t>
        <artwork type="ascii-art"><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Attr Type   |            Attr Length        |   (value...)  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Attr Value (variable)                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Attr Type (8 bits): Attribute identifier.</t>
          </li>
          <li>
            <t>Attr Length (16 bits): Length in octets of Attr Value.</t>
          </li>
          <li>
            <t>Attr Value (variable): Attribute content.
Unknown Attr Type values <bcp14>MUST</bcp14> be ignored (skipped using Attr Length).</t>
          </li>
        </ul>
      </section>
      <section anchor="defined-attributes">
        <name>Defined Attributes</name>
        <t>This document defines the following attribute types:</t>
        <ul spacing="normal">
          <li>
            <t>0x01  Batch Counter</t>
          </li>
          <li>
            <t>0x02  Function</t>
          </li>
          <li>
            <t>0x03  Merkle Root</t>
          </li>
          <li>
            <t>0x04  Signature</t>
          </li>
          <li>
            <t>0x05  BGP Link State List</t>
          </li>
          <li>
            <t>0x06  Subscribed ASes</t>
          </li>
          <li>
            <t>0x07  Merkle Proof</t>
          </li>
        </ul>
        <section anchor="batch-counter-0x01">
          <name>Batch Counter (0x01)</name>
          <t>A 32-bit unsigned integer. Each Agent maintains its own counter. When an Agent reports any failure-affecting change (including link and policy/prefix events), it <bcp14>MUST</bcp14> increment the counter by 1.</t>
        </section>
        <section anchor="function-0x02">
          <name>Function (0x02)</name>
          <t>A 32-bit unsigned integer chosen by operator policy. The default example value is 1234.</t>
        </section>
        <section anchor="merkle-root-0x03">
          <name>Merkle Root (0x03)</name>
          <t>A 32-octet value computed using SHA-256 over the current dataset of (a) BGP Link State List and (b) Subscribed ASes. The Merkle tree and inclusion proof model is aligned with the Merkle tree approach used in Certificate Transparency <xref target="RFC9162"/>. The exact leaf canonicalization is to be specified in a future revision.</t>
        </section>
        <section anchor="signature-0x04">
          <name>Signature (0x04)</name>
          <t>A digital signature computed by the Source ASN’s private key over the Merkle Root value. The signature algorithm and encoding follow the DigitallySigned conventions used in <xref target="RFC9162"/>, unless otherwise profiled by an implementation profile. The Signature attribute <bcp14>MUST NOT</bcp14> appear unless a Merkle Root attribute is present in the same message.</t>
        </section>
        <section anchor="bgp-link-state-list-0x05">
          <name>BGP Link State List (0x05)</name>
          <t>Encodes a list of link-state entries:</t>
          <ul spacing="normal">
            <li>
              <t>Entry Count (16 bits), followed by Entry Count entries: Entry Length (16 bits) + Entry (UTF-8 string)</t>
            </li>
            <li>
              <t>Each Entry string <bcp14>MUST</bcp14> follow this ABNF:</t>
            </li>
          </ul>
          <sourcecode type="abnf"><![CDATA[
link-state-entry = peer-asn ":" scope ":" status
peer-asn = 1*10DIGIT  ; decimal ASN, MUST fit in 32 bits
scope    = "*" / prefix
status   = "Established" / "Failure"

The "prefix" syntax is deployment-specific; implementations SHOULD use CIDR textual forms.
]]></sourcecode>
          <t>ABNF is specified per <xref target="RFC5234"/>.</t>
        </section>
        <section anchor="subscribed-ases-0x06">
          <name>Subscribed ASes (0x06)</name>
          <t>Carries two ASN lists:</t>
          <ul spacing="normal">
            <li>
              <t>Add List: ASNs newly subscribed</t>
            </li>
            <li>
              <t>Remove List: ASNs unsubscribed</t>
            </li>
          </ul>
          <t>Encoding:</t>
          <ul spacing="normal">
            <li>
              <t>Add Count (16 bits), followed by Add Count ASNs (each 32 bits)</t>
            </li>
            <li>
              <t>Remove Count (16 bits), followed by Remove Count ASNs (each 32 bits)</t>
            </li>
          </ul>
          <t>For an INIT message, Remove Count <bcp14>MUST</bcp14> be zero.
For INIT, Add List <bcp14>SHOULD</bcp14> be the set of all ASNs appearing in AS_PATH attributes of BGP routes in the Local AS routing state.</t>
        </section>
        <section anchor="merkle-proof-0x07">
          <name>Merkle Proof (0x07)</name>
          <t>Provides hashes necessary to verify inclusion of disseminated data, aligned with <xref target="RFC9162"/>. Encoding:</t>
          <ul spacing="normal">
            <li>
              <t>Proof Count (16 bits), followed by Proof Count tuples</t>
            </li>
            <li>
              <t>Each tuple: ASN (32 bits) + Hash (32 octets)</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="agent-to-repository-protocol">
      <name>Agent-to-Repository Protocol</name>
      <section anchor="message-types">
        <name>Message Types</name>
        <t>Agent messages use the Type field as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Type = 0  KEEPALIVE Message</t>
          </li>
          <li>
            <t>Type = 1  INIT Message</t>
          </li>
          <li>
            <t>Type = 2  UPDATE Message</t>
          </li>
        </ul>
        <t>INIT is sent when an Agent is first deployed and informs the Repository
that the Local AS participates in BGP-FP. INIT conveys a full snapshot.
UPDATE conveys incremental changes after a successful INIT.</t>
      </section>
      <section anchor="mandatoryoptional-attributes">
        <name>Mandatory/Optional Attributes</name>
        <t>For Agent messages:</t>
        <ul spacing="normal">
          <li>
            <t>KEEPALIVE (Type=0): no attributes.</t>
          </li>
          <li>
            <t>INIT (Type=1):
   <bcp14>MUST</bcp14> include:  Batch Counter (0x01), Function (0x02), Merkle Root (0x03), Signature (0x04)
   <bcp14>MAY</bcp14> include:   BGP Link State List (0x05), Subscribed ASes (0x06)</t>
          </li>
          <li>
            <t>UPDATE (Type=2):
   <bcp14>MUST</bcp14> include:  Batch Counter (0x01), Merkle Root (0x03), Signature (0x04)
   <bcp14>MAY</bcp14> include:   Function (0x02), BGP Link State List (0x05), Subscribed ASes (0x06)</t>
          </li>
        </ul>
      </section>
      <section anchor="agent-procedures">
        <name>Agent Procedures</name>
        <t>Initialization:</t>
        <ul spacing="normal">
          <li>
            <t>Set Batch Counter to 0.</t>
          </li>
          <li>
            <t>Choose Function (default example: 1234).</t>
          </li>
          <li>
            <t>Collect current BGP Link State from logs.</t>
          </li>
          <li>
            <t>Collect Subscribed ASes from routing state.</t>
          </li>
          <li>
            <t>Configure outbound marking (Section 8.2).</t>
          </li>
          <li>
            <t>Send INIT with required attributes.</t>
          </li>
        </ul>
        <t>Subscription change:</t>
        <ul spacing="normal">
          <li>
            <t>Compute Add/Remove deltas.</t>
          </li>
          <li>
            <t>Batch Counter <bcp14>SHOULD NOT</bcp14> change for subscription-only updates.</t>
          </li>
          <li>
            <t>Send UPDATE carrying Subscribed ASes.</t>
          </li>
        </ul>
        <t>Link/policy/prefix events:</t>
        <ul spacing="normal">
          <li>
            <t>Upon detecting a failure or restoration, Agent <bcp14>MUST</bcp14> increment the Batch Counter by 1 and <bcp14>MUST</bcp14> refresh outbound marking.</t>
          </li>
          <li>
            <t>Send UPDATE carrying affected Link State List entries.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="repository-to-agent-protocol">
      <name>Repository-to-Agent Protocol</name>
      <section anchor="message-types-1">
        <name>Message Types</name>
        <t>Repository messages use the Type field as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Type = 0  KEEPALIVE</t>
          </li>
          <li>
            <t>Type = 1  UPDATE</t>
          </li>
        </ul>
        <t>A Repository UPDATE broadcasts the BGP-FP state of a given Source ASN to ASes that have subscribed to that Source ASN.</t>
      </section>
      <section anchor="mandatoryoptional-attributes-1">
        <name>Mandatory/Optional Attributes</name>
        <t>For Repository messages:</t>
        <t>KEEPALIVE (Type=0): no attributes.</t>
        <t>UPDATE (Type=1):
     <bcp14>MUST</bcp14> include:  Batch Counter (0x01), Function (0x02), Merkle Root (0x03), Signature (0x04), Merkle Proof (0x07)
     <bcp14>MAY</bcp14> include:   BGP Link State List (0x05), Subscribed ASes (0x06)</t>
        <t>The Repository <bcp14>MUST</bcp14> forward the Source ASN’s Signature without modification.</t>
      </section>
      <section anchor="repository-procedures">
        <name>Repository Procedures</name>
        <t>Validation:
Repository <bcp14>SHOULD</bcp14> validate Agent messages by verifying the signature over the Merkle Root and by recomputing the Merkle Root from the carried dataset.</t>
        <t>Storage and maintenance:
Maintain per-Source-ASN state: R_BatchCounter, R_Function, R_MerkleRoot, R_Signature, R_BGP_Link_State, and subscription mappings.</t>
        <t>On-demand forwarding:
Forward Source-ASN updates only to Local ASes that have subscribed to that Source ASN. Repository UPDATE messages <bcp14>MUST</bcp14> include a Merkle Proof sufficient for the receiver to validate inclusion of the forwarded elements.</t>
      </section>
    </section>
    <section anchor="router-policy-behavior">
      <name>Router Policy Behavior</name>
      <section anchor="inbound-filtering-rule">
        <name>Inbound Filtering Rule</name>
        <t>Upon receiving a Repository UPDATE, an Agent <bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Obtain the Source ASN public key via the configured PKI mechanism (Section 9), verify Signature over Merkle Root, and verify the Merkle Proof.</t>
          </li>
          <li>
            <t>For each failure entry affecting (Source ASN, Peer ASN, scope), install an import policy rule on routers such that a route r is rejected if ALL of the following hold:</t>
          </li>
        </ol>
        <ul spacing="normal">
          <li>
            <t>r’s AS_PATH contains the adjacent pair "... SourceASN PeerASN ..." (i.e., r traverses the failed eBGP link), OR the failure scope indicates a prefix withdrawal that matches r.</t>
          </li>
          <li>
            <t>r contains a BGP Large Community whose Global Administrator is SourceASN and whose Local Data Part 1 matches Function.</t>
          </li>
          <li>
            <t>Let r_bc be Local Data Part 2 of that community. The route is considered stale if r_bc &lt; BatchCounter carried in the Repository UPDATE for that Source ASN.</t>
          </li>
        </ul>
        <t>Filtering <bcp14>MUST</bcp14> be applied to Adj-RIB-In (or equivalently as close as possible to route import) so that the BGP decision process does not select stale routes.</t>
      </section>
      <section anchor="outbound-marking-rule">
        <name>Outbound Marking Rule</name>
        <t>Routers in a BGP-FP-enabled AS <bcp14>MUST</bcp14> attach the Large Community (SourceASN, Function, BatchCounter) to all outbound eBGP announcements. The Large Communities attribute is an optional transitive attribute <xref target="RFC8092"/> ;implementations <bcp14>MUST NOT</bcp14> strip communities unrelated to the Local AS’s own marking.</t>
        <t>When BatchCounter changes, the Agent <bcp14>MUST</bcp14> refresh the export policy so subsequent updates carry the new freshness value.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Subscribed ASes may reveal portions of an AS’s observed AS_PATHs and thus aspects of routing visibility. Deployments <bcp14>SHOULD</bcp14> minimize unnecessary subscription disclosure (e.g., aggregate subscriptions, policy-based suppression) and secure transport and storage.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <ul spacing="normal">
        <li>
          <t>Repository discovery, redundancy, and anycast/distribution are out of scope, but are expected to be critical for availability.</t>
        </li>
        <li>
          <t>Operators should carefully stage deployment, starting with monitoring-only mode before enforcing route rejection.</t>
        </li>
        <li>
          <t>Interaction with existing route flap damping <xref target="RFC2439"/> should be evaluated; BGP-FP is intended to reduce the need for aggressive damping by removing stale routes earlier.</t>
        </li>
      </ul>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>Following the guidance of <xref target="RFC8126"/>, this document requests IANA actions to support interoperable deployment:</t>
      <section anchor="tcp-service-name-and-port">
        <name>TCP Service Name and Port</name>
        <t>IANA is requested to allocate a TCP port for the "bgpfp" service (BGP Failure Propagation). The port number is TBD.</t>
      </section>
      <section anchor="bgp-fp-message-types-registry">
        <name>"BGP-FP Message Types" Registry</name>
        <t>Create a new registry for the 8-bit Type field in the BGP-FP common header.</t>
        <t>Initial allocations:</t>
        <ul spacing="normal">
          <li>
            <t>0  KEEPALIVE</t>
          </li>
          <li>
            <t>1  INIT (Agent-to-Repository only)</t>
          </li>
          <li>
            <t>2  UPDATE (Agent-to-Repository only)</t>
          </li>
          <li>
            <t>3  UPDATE (Repository-to-Agent)</t>
          </li>
        </ul>
        <t>NOTE: If IANA prefers separate registries for Agent vs Repository message spaces, this can be revised.</t>
        <t>Registration policy: IETF Review.</t>
      </section>
      <section anchor="bgp-fp-attribute-types-registry">
        <name>"BGP-FP Attribute Types" Registry</name>
        <t>Create a new registry for the 8-bit Attr Type field.</t>
        <t>Initial allocations:</t>
        <ul spacing="normal">
          <li>
            <t>0x01  Batch Counter</t>
          </li>
          <li>
            <t>0x02  Function</t>
          </li>
          <li>
            <t>0x03  Merkle Root</t>
          </li>
          <li>
            <t>0x04  Signature</t>
          </li>
          <li>
            <t>0x05  BGP Link State List</t>
          </li>
          <li>
            <t>0x06  Subscribed ASes</t>
          </li>
          <li>
            <t>0x07  Merkle Proof</t>
          </li>
        </ul>
        <t>Registration policy: IETF Review.
Range 0x80-0xFF is RESERVED for Private Use.</t>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>BGP-FP can cause large-scale route rejection if updates are forged or mishandled. The protocol therefore requires authenticity and integrity of Repository updates and of Source-AS-originated state.</t>
      <t>Key requirements:</t>
      <ul spacing="normal">
        <li>
          <t>Agents <bcp14>MUST</bcp14> verify signatures on Repository UPDATE messages.</t>
        </li>
        <li>
          <t>The system <bcp14>MUST</bcp14> provide a trustworthy mapping from ASN to public key. RPKI <xref target="RFC6480"/> is one candidate infrastructure for distributing authenticated resource-linked keys/certificates; the detailed certificate profile and distribution procedure are out of scope.</t>
        </li>
        <li>
          <t>Merkle proofs help receivers detect tampering with forwarded subsets of state.</t>
        </li>
      </ul>
      <t>Additional threats include replay of old updates, Repository compromise, denial of service against Agents/Repository, and privacy leakage via subscription information. Implementations <bcp14>SHOULD</bcp14> provide replay protection (e.g., track per-Source-ASN BatchCounter monotonicity) and rate limiting.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC4271">
          <front>
            <title>A Border Gateway Protocol 4 (BGP-4)</title>
            <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
            <author fullname="T. Li" initials="T." role="editor" surname="Li"/>
            <author fullname="S. Hares" initials="S." role="editor" surname="Hares"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>This document discusses the Border Gateway Protocol (BGP), which is an inter-Autonomous System routing protocol.</t>
              <t>The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASes) that reachability information traverses. This information is sufficient for constructing a graph of AS connectivity for this reachability from which routing loops may be pruned, and, at the AS level, some policy decisions may be enforced.</t>
              <t>BGP-4 provides a set of mechanisms for supporting Classless Inter-Domain Routing (CIDR). These mechanisms include support for advertising a set of destinations as an IP prefix, and eliminating the concept of network "class" within BGP. BGP-4 also introduces mechanisms that allow aggregation of routes, including aggregation of AS paths.</t>
              <t>This document obsoletes RFC 1771. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4271"/>
          <seriesInfo name="DOI" value="10.17487/RFC4271"/>
        </reference>
        <reference anchor="RFC8092">
          <front>
            <title>BGP Large Communities Attribute</title>
            <author fullname="J. Heitz" initials="J." role="editor" surname="Heitz"/>
            <author fullname="J. Snijders" initials="J." role="editor" surname="Snijders"/>
            <author fullname="K. Patel" initials="K." surname="Patel"/>
            <author fullname="I. Bagdonas" initials="I." surname="Bagdonas"/>
            <author fullname="N. Hilliard" initials="N." surname="Hilliard"/>
            <date month="February" year="2017"/>
            <abstract>
              <t>This document describes the BGP Large Communities attribute, an extension to BGP-4. This attribute provides a mechanism to signal opaque information within separate namespaces to aid in routing management. The attribute is suitable for use with all Autonomous System Numbers (ASNs) including four-octet ASNs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8092"/>
          <seriesInfo name="DOI" value="10.17487/RFC8092"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC793">
          <front>
            <title>Transmission Control Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="RFC" value="793"/>
          <seriesInfo name="DOI" value="10.17487/RFC0793"/>
        </reference>
        <reference anchor="RFC6793">
          <front>
            <title>BGP Support for Four-Octet Autonomous System (AS) Number Space</title>
            <author fullname="Q. Vohra" initials="Q." surname="Vohra"/>
            <author fullname="E. Chen" initials="E." surname="Chen"/>
            <date month="December" year="2012"/>
            <abstract>
              <t>The Autonomous System number is encoded as a two-octet entity in the base BGP specification. This document describes extensions to BGP to carry the Autonomous System numbers as four-octet entities. This document obsoletes RFC 4893 and updates RFC 4271. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6793"/>
          <seriesInfo name="DOI" value="10.17487/RFC6793"/>
        </reference>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="RFC6480">
          <front>
            <title>An Infrastructure to Support Secure Internet Routing</title>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes an architecture for an infrastructure to support improved security of Internet routing. The foundation of this architecture is a Resource Public Key Infrastructure (RPKI) that represents the allocation hierarchy of IP address space and Autonomous System (AS) numbers; and a distributed repository system for storing and disseminating the data objects that comprise the RPKI, as well as other signed objects necessary for improved routing security. As an initial application of this architecture, the document describes how a legitimate holder of IP address space can explicitly and verifiably authorize one or more ASes to originate routes to that address space. Such verifiable authorizations could be used, for example, to more securely construct BGP route filters. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6480"/>
          <seriesInfo name="DOI" value="10.17487/RFC6480"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2439">
          <front>
            <title>BGP Route Flap Damping</title>
            <author fullname="C. Villamizar" initials="C." surname="Villamizar"/>
            <author fullname="R. Chandra" initials="R." surname="Chandra"/>
            <author fullname="R. Govindan" initials="R." surname="Govindan"/>
            <date month="November" year="1998"/>
            <abstract>
              <t>A usage of the BGP routing protocol is described which is capable of reducing the routing traffic passed on to routing peers and therefore the load on these peers without adversely affecting route convergence time for relatively stable routes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2439"/>
          <seriesInfo name="DOI" value="10.17487/RFC2439"/>
        </reference>
        <reference anchor="RFC8195">
          <front>
            <title>Use of BGP Large Communities</title>
            <author fullname="J. Snijders" initials="J." surname="Snijders"/>
            <author fullname="J. Heasley" initials="J." surname="Heasley"/>
            <author fullname="M. Schmidt" initials="M." surname="Schmidt"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>This document presents examples and inspiration for operator application of BGP Large Communities. Based on operational experience with BGP Communities, this document suggests logical categories of BGP Large Communities and demonstrates an orderly manner of organizing community values within them to achieve typical goals in routing policy. Any operator can consider using the concepts presented as the basis for their own BGP Large Communities repertoire.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8195"/>
          <seriesInfo name="DOI" value="10.17487/RFC8195"/>
        </reference>
        <reference anchor="RFC4098">
          <front>
            <title>Terminology for Benchmarking BGP Device Convergence in the Control Plane</title>
            <author fullname="H. Berkowitz" initials="H." surname="Berkowitz"/>
            <author fullname="E. Davies" initials="E." role="editor" surname="Davies"/>
            <author fullname="S. Hares" initials="S." surname="Hares"/>
            <author fullname="P. Krishnaswamy" initials="P." surname="Krishnaswamy"/>
            <author fullname="M. Lepp" initials="M." surname="Lepp"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>This document establishes terminology to standardize the description of benchmarking methodology for measuring eBGP convergence in the control plane of a single BGP device. Future documents will address iBGP convergence, the initiation of forwarding based on converged control plane information and multiple interacting BGP devices.This terminology is applicable to both IPv4 and IPv6. Illustrative examples of each version are included where relevant. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4098"/>
          <seriesInfo name="DOI" value="10.17487/RFC4098"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
    </references>
    <?line 503?>



  </back>
  <!-- ##markdown-source:
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
QeoEvAIn70EsNoyk9/fXxcgm89h/XiD0KbbsGwhJkZwUPG1ii/SfpFpoV22+
9kGXkC7e4Zbes4PXdZq2MdriHnrhWh04irRTeNmkeVMuJVo2kDRmbWjJQHZj
SbBuozQEi87sTbCoC3i7tUK3IGcOqdYFgy2Bj8Oo2EyscW/FpVs8rOuGrlpY
B81bGVdS8bBOhmXKCtBLKy9nWZQT3npTwMQawrK3Va8h16DqxPxsU1GmlqKZ
wSxZBBquRZhZg076AAz0AhGgLq1pbFcPIHkLspFs4quW87rktyYcobcCdHWw
I0o73HHvaMe9B3aGQzx9oI7VV+qheqQeqyd/yT0JSf/K//VcaLjjzxHjQmcL
IObev4+/MiQ3m0I7N2HH35W2Ndq/PSS7/lruyN8NJ7/8jyH5ceejaZOWH9xc
fGe6GZbm78dfDZK/HieUZICK63Dn4MGRgmNjEKy8Wq9m0ATwQ1lnGE+c2d9h
HeLqXiLg1KYCZRRb3c/IGKtzsuFkIyTeEoNrVaErPFr9nAoU+kOkdWxc5wum
pFXJzhu9kO4cCVTCW+hLWzBkjc1MP3js9uB2V/Ft1txBlQeeBYH6c6HLw6ee
aaFhzsTVIx4NbW7Tis7g6NitVN8jb22+5kQNHMGxre0wTsTTgPrFvrBZepOs
wve6zGWcTcHZkckioy4YDF51PVqPTDdb1bXaYRQHwvlKNmshGLd5ow7rDnu9
5x6RNXtseeaoy/keAy+SC+xgDIKcrNSKu3XquUbiJ2qyPpwKwmuY/f+/+id0
Or3bEnN+0DYA9HzADv54PB7+7VUdg/AdBxRYtkwo5NqpqX5F/RJ4GGmEsmY6
1aTmxm6s00OHD91wewfsa/UQVUnrzdQvdrfmr0PVYI4L32TSaNCAxRSwOonK
bixzkGzzPikoMSa5NQ806w6d2t6PRoK67Swuiml7Qk32gnSS4Yjh4MMBeL7l
O8vdoyYYlxsPyJ0o38N7vMrzSu4dw5gC7JBUjtz5Srqdm7wuLo0d/VB1Qw+5
/6ieGXFZPqc9ftFx5wcEJ1SEmrrwd50ZaaqhauWC0h1euNMkTVwkGLmkyD8v
ddbEEC5EoCyba+iWtCznPTkcoX5H6m+gO9zYwAnXli8sQQ2CEwAm+tPFJlaV
yS5mG3U4lu3VMT7t7GjYu3dfykb9eNclAuziorc7Ib6N2xPJAox7sppHOF7w
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
HMJK/OUgCNQM05A8/y/gcH645VEAAA==

-->

</rfc>
