<?xml version="1.0"?>

<?rfc sortrefs="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc
   xmlns:xi="http://www.w3.org/2001/XInclude"
   category="bcp"
   consensus="true"
   submissionType="IETF"
   docName="draft-ietf-sidrops-avoid-rpki-state-in-bgp-06"
   ipr="trust200902">
<!-- For consideration: updates="7115" -->
  
<front>

<!-- sources:
https://mailarchive.ietf.org/arch/msg/sidrops/YV1WfoxQNiwfOjtKIY1d6YJjRxM/
-->
    
  <title abbrev="Avoid RPKI State in BGP">Guidance to Avoid Carrying RPKI Validation States in Transitive BGP Path Attributes</title>

  <author fullname="Job Snijders" initials="J." surname="Snijders">
    <organization abbrev="BSD">BSD Software Development</organization>
    <address>
      <postal>
        <city>Amsterdam</city>
        <code />
        <country>Netherlands</country>
      </postal>
      <email>job@bsd.nl</email>
      <uri>https://www.bsd.nl/</uri>
    </address>
  </author>

  <author fullname="Tobias Fiebig" initials="T." surname="Fiebig">
    <organization abbrev="MPI-INF">Max-Planck-Institut fuer Informatik</organization>
    <address>
      <postal>
        <street>Campus E14</street>
        <city>Saarbruecken</city>
        <code>66123</code>
        <country>Germany</country>
      </postal>
      <phone>+49 681 9325 3527</phone>
      <email>tfiebig@mpi-inf.mpg.de</email>
    </address>
  </author>
  
  <author fullname="Massimiliano Stucchi" initials="M. A." surname="Stucchi">
    <organization>Glevia GmbH</organization>
    <address>
      <postal>
        <city>Bruettisellen</city>
        <country>Switzerland</country>
      </postal>
      <email>stucchi@glevia.ch</email>
    </address>
  </author>
  <date />

  <abstract>
    <t>
      This document provides guidance to avoid carrying Resource Public Key Infrastructure (RPKI) derived validation states in transitive Border Gateway Protocol (BGP) Path Attributes.
      Annotating routes with transitive attributes signaling validation states may cause needless flooding of BGP UPDATE messages through the global Internet routing system, for example when Route Origin Authorizations (ROAs) are issued, or are revoked, or when RPKI-To-Router sessions are terminated.
    </t>
    <t>
      Operators should ensure RPKI-derived validation states are not signaled in transitive BGP Path Attributes.
      Specifically, Operators should not associate Prefix Origin Validation state with BGP routes using transitive BGP Communities.
    </t>
  </abstract>
  
</front>

<middle>
  
  <section title="Introduction">

    <t>
      The Resource Public Key Infrastructure (RPKI) <xref target="RFC6480"/> allows for validation of received Border Gateway Protocol (BGP) <xref target="RFC4271"/> routes.  
      By means of a validation process, e.g., BGP Prefix Origin Validation (<xref target="RFC6811"/>), routers attain locally significant validation states.
    </t>
    <t>
      In the past, some operators and vendors suggested to use BGP Communities (<xref target="RFC1997"/> and <xref target="RFC8092"/>) to annotate received routes with validation states local to a router.
      Some claim that the practice of signaling validation states could be useful, for example to Internal BGP (IBGP) speakers, in order to avoid each IBGP speaker having to perform their own route origin validation.
      However, such a practice does not only conflict with core concepts of RPKI, but also threatens the stability of networks.
    </t>
    <t>
      Annotating a route with a transitive attribute (based on validation states) means that BGP UPDATE messages have to be sent to every neighbor when the aforementioned validation states changes.
      This means that when, for example, Route Origin Authorizations (ROAs) <xref target="RFC9582"/> are issued, or are revoked, or RPKI-To-Router (RTR) <xref target="RFC8210"/> sessions are terminated, new BGP UPDATE messages will have to be send for all routes that were previously annotated with a BGP Community associated with a different validation state.
      Furthermore, given that BGP Communities are a transitive attribute, such a BGP UPDATE might end up propagating through large portions of the Default-Free Zone (DFZ).
    </t>
    <t>
      Hence, this document provides guidance to avoid carrying RPKI-derived validation states in transitive Border Gateway Protocol (BGP) Path Attributes (<xref target="RFC4271" section="5"/>).
      Specifically, Operators <bcp14>SHOULD NOT</bcp14> associate BGP Prefix Origin Validation results <xref target="RFC6811"/> with BGP routes using transitive BGP Communities (<xref target="RFC1997"/>, <xref target="RFC4360"/>, <xref target="RFC8092"/>).
      Furthermore, this document contains data on the measured current impact of BGP Communities used to signal validation states.
    </t>
    <t>
      Avoiding the use of BGP Communities to signal RPKI-derived validation states prevents BGP UPDATE messages from being flooded into the global Internet routing system.
    </t>

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

  <section title="Scope" anchor="scope">
    <t>
      This document discusses signaling locally significant RPKI validation states to EBGP neighbors through transitive BGP attributes.
      This includes operator-specific BGP Communities to signal validation states, as well as any current or future standardized well-known BGP Communities denoting validation states.
      As BGP message churn is associated with internal signaling changes, it is <bcp14>RECOMMENDED</bcp14> that operators also consider the guidance (<xref target="guidance"/>) within their network, i.e., between their IBGP speakers.
    </t>
    <t>
      The guidance in this document applies to all current and future transitive BGP attributes that may be implicitly or explicitly used to signal validation states to neighbors.
      Similarly, this guidance also applies to non-ROA validation mechanics based on RPKI, e.g., Autonomous System Provider Authorization (ASPA) <xref target="I-D.ietf-sidrops-aspa-profile"/>, BGPsec <xref target="RFC8205"/>, and any other future validation mechanic built upon the RPKI.
    </t>
  </section>

  <section title="Risks of Signaling Validation State With Transitive Attributes" anchor="signaling-risks">
    <t>
      This section outlines the risks of signaling RPKI-derived validation states using BGP Communities.
      While the current description is specific to BGP communities, the observations hold similar for all transitive attributes that may be added to BGP routes.
    </t>
    <section title="Triggers for Large-Scale Validation Changes" anchor="outage">
      <t>
        This section describes examples on how a large amount of RPKI ROA changes may occur in a short time, leading to generation of a large amounts of BGP UPDATE messages.
      </t>
      <section title="ROA Issuance" anchor="outage-roa-issuance">
        <t>
          Large-Scale ROA issuance events should be a comparatively rare event for individual networks.
          However, several cases exist where issuance by individual operators or (malicious) coordinated issuance of ROAs by multiple operators may lead to a high route churn, triggering a continuous flow of BGP UPDATE messages caused by operators using transitive BGP attributes to signal validation states.
        </t>
        <t>
          Specifically:
        </t>
        <ul spacing="normal">
          <li>
            When an operator issues new ROAs for their netblocks, possibly by issuing one ROA with a non-minimal maxLength (<xref target="RFC9582" section="4.3.2.2"/>) covering a large number of prefixes.
            This may also occur when incorrectly migrating to minimally covering ROAs (<xref target="RFC9319"/>), i.e., when the previous ROA is first revoked (see <xref target="outage-roa-revocation"/>) and the new ROAs are only issued after this revocation has been propagated, e.g., due to an operational error or a bug in the issuance pipeline used by the operator.
          </li>
          <li>
            When multiple Certification Authorities (CAs) coordinate to issue new ROAs at the same time.
          </li>
          <li>
            When a CA has been unavailable or unable to publish for some time, but then publishes all updates at once, or - as unlikely as it is - if a key-rollover encounters issues.
          </li>
        </ul>
      </section>
      <section title="ROA Revocation" anchor="outage-roa-revocation">
        <t>
          Large-Scale ROA revocation should be a comparatively rare event for individual networks.
          However, several cases exist where revocations by individual operators or (malicious) coordinated revocation of ROAs by multiple operators may lead to a high route churn triggering a continuous flow of BGP Update messages caused by operators using transitive BGP attributes to signal validation states.
        </t>
        <t>
          Specifically:
        </t>
        <ul spacing="normal">
          <li>
            When one large operator revokes all ROAs for their netblocks at once, for example, when migrating to minimally covering ROAs <xref target="RFC9319"/>, or when revoking one ROA with a long maxLength covering a large number of prefixes.
          </li>
          <li>
            When multiple CAs coordinate to revoke ROAs at the same time.
          </li>
          <li>
            When a CA becomes unavailable or unable to publish for some time, e.g., due to the CA expiring (<xref target="CA-Outage1"/>, <xref target="CA-Outage2"/>, <xref target="CA-Outage3"/>, <xref target="CA-Outage4"/>).
          </li>
        </ul>
      </section>
      <section title="Loss of Cached Validated Payload Information" anchor="outage-validation-loss">
        <t>
          Similar to the issuance and revocation of ROAs, the validation pipeline of a Relying Party (RP) may encounter issues.
          Issues may occur on the cache side (<xref target="cache-side"/>) or on the router side (<xref target="router-side"/>) with network connectivity issues having specific impact on either of the two.
        </t>
        <t>
          While, in general, implementations should not have bugs, operators should not make mistakes, and the network should be reliable, this is usually not the case in practice.
          Instead, the worst-case of sudden and unexpected, yet unintentional, loss of cached validated payloads is an event that, however unlikely in a specific system, may and will happen.
          Hence, systems should be resilient in case of unexpected issues, and should not exacerbate issues by inadvertently contributing to BGP UPDATE floods.
        </t>
        <t>
          Below, examples are provided of events for both categories that may lead to the validation state of routes in one or multiple routers of an operator changing from <tt>Valid</tt> to <tt>NotFound</tt> (<xref target="RFC6811" section="2"/>).
          These lists are provided for illustrative purposes and not exhaustive.
        </t>
        <section title="Potential Issues with a Cache" anchor="cache-side">
          <t>
            The following events may impact a cache's ability to provide validated payload information to routers:
          </t>
          <ul spacing="normal">
            <li>
              The RPKI-To-Router (RTR) service may have to temporarily be taken offline by the RP operator for maintenance.
              While operators should, in general, take care to provision sufficient redundancy, critical vulnerabilities may necessitate the immediate simultaneous shutdown of all RTR instances.
            </li>
            <li>
              A cache may crash due to bugs when ingesting unexpected data from the RPKI, or run into performance issues due to insufficient available memory or limited I/O performance on the host.
              In the worst case, especially memory issues, can lead to a flapping cache, e.g., when the system runs out of memory after a few minutes of transmitting validated payloads to routers.
            </li>
            <li>
              Validation state may seemingly lapse due to issues with time synchronization if, e.g., the clock of the cache diverts significantly, starting to consider CA's certificates invalid.
            </li>
            <li>
              The cache may lose its network connectivity in general, or to specific CAs.
              While, in general, the cache should be able to serve from cache, an operator may have to shutdown the cache in such a case, to prevent dropping prefixes as invalid due to stale data.
            </li>
          </ul>
        </section>
        <section title="Potential Ingestion Issues with a Router" anchor="router-side">
          <t>
            Examples of encountered issues are:
          </t>
          <ul spacing="normal">
            <li>
              An RTR client, especially when implemented as a dedicated daemon, may fail to start, or terminate when receiving unexpected data.
              Especially when this leads to a flapping client, e.g., due to a bug in the handling of incremental updates leading to a crash, while the initial retrieval is successful, this will lead to flapping between routes being <tt>Valid</tt> and <tt>NotFound</tt>.
            </li>
            <li>
              A misconfiguration may impact a router's ability to communicate with the RTR service.
              For example, an RTR client may lose its credentials or may not receive updated credentials in time when these are changed, or the address of the RTR service changes and is not updated on the router in time.
            </li>
            <li>
              An RTR client may lose network connectivity to the RTR service.
              While, in general, caches should prevent this from having immediate impact, an RTR client's behavior in case of a flapping network connection with frequent interruptions may lead to unexpected behavior and cache invalidation.
              Similarly, after cache expiry, routes will change from <tt>Valid</tt> to <tt>NotFound</tt>.
            </li>
            <li>
              As an extension of the previous point, multiple operators might be using one central RTR service hosted by an external party, or depend on a similar cache, which becomes unavailable, e.g., due to maintenance or an outage.
              If local instances are not able to handle loss of this external service without changing validation states, i.e., do not serve from cache or the outage extends beyond the expiry of cached information, routes will change local validation states from <tt>Valid</tt> to <tt>NotFound</tt>.
              Naturally, the negative impact in such a case is significantly larger in comparison to each operator running their own cache.
            </li>
          </ul>
        </section>
      </section>
      <section title="Outage Scenario Summary" anchor="outage-summary">
        <t>
          The above non-exhaustive listing suggests that issues in general operations, CA operations, and RPKI cache implementations simply are unavoidable.
          Hence, Operators have to plan and design accordingly.
        </t>
      </section>
    </section>

    <section title="Scaling issues">
      <t>
        For each change in the validation state of a route, an Autonomous System (AS) in which the local routing policy sets a BGP Community based on the BGP Prefix Origin Validation result, routers would need to send BGP UPDATE messages for more than half of the global Internet routing table if the validation state changes to <tt>NotFound</tt>.
        The same, reversed case, would be true for every new ROA created by the address space holders, whereas a new BGP UPDATE would be generated, as the validation state would change to <tt>Valid</tt>.
      </t>
      <t>
        Furthermore, adding additional attributes to routes increases their size and memory consumption in the Routing Information Base of BGP routers.
        Given the continuous growth of the global routing table, in general, operators should be conservative regarding the additional information they add to routes.
      </t>
    </section>

    <section title="Flooding and Cascading of BGP UPDATE Messages" anchor="cascadeandflood">
      <t>
        The aforementioned scaling issues are not confined to singular UPDATE events.
        Instead, changes in validation state may lead to floods and/or cascades of BGP UPDATE messages throughout the Internet.
      </t>

      <section title="Flooding of BGP UPDATE Messages" anchor="flooding">
        <t>
          Flooding events are caused by an individual operator losing validation states.
          If that operator annotates validation states using BGP communities, the AS will send updates for all routes that changed from <tt>Valid</tt> to <tt>NotFound</tt> to its customers, as well as updates for routes received from customers to its providers.
        </t>
        <t>
          Following an RPKI service affecting <xref target="outage">outage</xref>, given that, at the time of writing, more than half the global Internet routing table <xref target="CIDR Report"/> nowadays is covered by RPKI ROAs <xref target="NIST"/>, such convergence events represent a significant burden.
          See <xref target="How-to-break"/> for an elaboration on this phenomenon.
        </t>
      </section>

      <section title="Cascading of BGP UPDATE Messages" anchor="cascade">
        <t>
          For events that are not specific to one operator, e.g., a malicious withdrawal of a ROA, loss of a major CA, or an unexpected downtime of a major centralized RTR service, events can also cascade for ASes annotating validation states using BGP communities.
          Given that routers' view of the RPKI with RTR are only loosely consistent, BGP UPDATE messages may cascade, i.e., one event affecting validation states may actually trigger multiple subsequent BGP UPDATE floods.
        </t>
        <t>
          Assume, for example, that AS65536 is a customer of AS65537 (both annotating validation states with BGP Communities and using a 300 second RTR cycle), and a centralized RTR service fails.
          In the example, AS65536 has their routers updated from that cache a second before the service went down, while AS65537 was due for a refresh a second thereafter.
        </t>
        <t>
          This means that a second after the RTR service went down, AS65537 will trigger a BGP UPDATE flood down its cone.
          AS65536 will ingest and propagate these BGP UPDATE messages down its own cone as well.
        </t>
        <t>
          When, roughly 300 seconds later, AS65536 fails to disseminate validated payload information as well, the community set by AS65536 will again change for ROA covered routes, and it will again trigger a BGP UPDATE flood and propagate further on.
        </t>
        <t>
          Even if either or both of AS65536 and AS65537 use a cache after RTR expiry, the underlying issue would not change, assuming the RTR service downtime spans beyond the cache TTL.
          Assuming a 30 minute cache TTL, both ASes using a cache would only move the cascading event 30 minutes later.
          If only one of the two uses a cache, the two flood events get moved further apart.
          However, the overall issue of two independent floods due to one event remains.
        </t>
      </section>
    </section>

    <section title="Observed data">
      <t>
        In February 2024, a data-gathering initiative <xref target="Side-Effect"/> reported that between 8% and 10% of BGP UPDATE messages seen on the Routing Information Service (RIS), contained publicly-known communities from large ISPs signaling either <tt>NotFound</tt> or <tt>Valid</tt> BGP Origin Validation results.
        The study also demonstrated that the creation or removal of a ROA object triggered a chain of updates in a period of circa 1 hour following the change.
      </t>
      <t>
        Such a high percentage of unnecessary BGP UPDATE messages constitutes a considerable level of noise, impacting the capacity of the global routing system while generating load on router CPUs and occupying more RAM than necessary.
        Containing this information within the administrative boundaries of a single AS helps reduce the burden on the rest of the global routing platform, reducing workload and noise.
      </t>
    </section>
    <section title="Lacking Benefit of Signaling Validation State">
      <t>
        RTR has been developed to communicate validated payload information to routers.
        BGP Attributes are not signed, and provide no assurance against third parties adding them, apart from BGP Communities--ideally--being filtered at a network edge.
        So, even in IBGP scenarios, their benefit in comparison to using RTR on all BGP speakers is limited.
      </t>
      <t>
        For EBGP, given they are not signed, they provide even less information to other parties except introspection into an ASes internal validation mechanics.
        Crucially, they provide no actionable information for BGP neighbors.
        If an AS validates and enforces based on RPKI, Invalid routes should never be imported and, hence, never be sent to neighbors.
        Hence, the argument that exposing validation states through communities enables, for example, customers to filter RPKI Invalid routes is moot, as the only routes a customer should see are <tt>NotFound</tt> and <tt>Valid</tt>.
      </t>
    </section>

  </section>

  <section title="Advantages of Dissociating Validation States and BGP Path Attributes">
    <t>
      As outlined in <xref target="signaling-risks"/>, signaling validation states through transitive attributes represents risks for the stability of the global routing ecosystem.
      Not signaling validation states, hence, has tangible benefits, specifically:
    </t>
    <ul spacing="normal">
      <li>
        Reduction of memory consumption on customer/peer facing PE routers (less BGP communities == less memory pressure).
      </li>
      <li>
        No effect on the age of a BGP route when a ROA or ASPA <xref target="I-D.ietf-sidrops-aspa-profile"/> is issued or revoked.
      </li>
      <li>
        Avoids having to resend, e.g., more than 500,000 BGP routes towards BGP neighbors (for the own cone to peers and providers, for the full table towards customers) if the RPKI cache crashes and RTR sessions are terminated, or if flaps in validation are caused by other events.
      </li>
    </ul>
  </section>

  <section anchor="guidance">
    <name>Guidance</name>
    <t>
      Operators <bcp14>SHOULD NOT</bcp14> signal RPKI-derived validation states using transitive BGP attributes.
    </t>
    <t>
      The document acknowledges that specific operational requirements, such as a BGP implementation used by an operator still being dependent on annotating RPKI-derived validation states using BGP attributes, may necessitate the use of BGP path attributes to signal validation states between BGP speakers.
      If this is the case, the dependent operator <bcp14>SHOULD</bcp14> ensure that these attributes are removed before announcing NLRI to EBGP neighbors.
      Depending on the supported functionality of the BGP implementations in use in a given AS, removal of the aforementioned attributes may not be consistently possible across the AS, leading to the conditions this document is intended to discuss.
    </t>
  </section>

  <section title="Operational Considerations">
    <t>
      This document provides guidance to prevent using BGP UPDATE messages to carry RPKI Validate State.
      Following this guidance allows operators to enhance the stability of local routing tables and the global Internet routing system, in particular. 
    </t>
  </section> 

  <section title="Security Considerations">
    <t>
      BGP is not guaranteed to converge, and the view on the RPKI within an individual administrative domain is only loosely consistent.
      External validation states annotated in a received NLRI may either depend on a different view on the RPKI than the one in the local administrative domain, or the NLRI may be several hours old itself.
      Hence, any validation states contained in a received route announcement only have significance in the sender's own local scope.
    </t>
    <t>
      Additionally, the use of transitive attributes to signal RPKI-derived validation states may enable attackers to cause notable route churn.
      This can be accomplished by an attacker issuing and withdrawing, e.g., ROAs for their prefixes, or by the attacker continuously altering transitive attributes used to signal RPKI-derived validation states for NLRI they re-advertise.
      The latter is possible as NLRI carry no information allowing an ingesting party to validate the integrity of transitive BGP attributes.
    </t>
    <t>
      DFZ routers may not be equipped to handle BGP message churn in all directions at global scale, especially if aforementioned routing churn cascades, persists, or repeats periodically.
      Adhering to the <xref target="guidance"/> helps prevent such churn.
    </t>
  </section>

  <section title="IANA Considerations">
    <t>
      This document does not make any request to IANA.
    </t>
  </section>

  <section title="Acknowledgements">

    <t>
      The authors would like to thank
      <contact fullname="Aaron Groom"/>,
      <contact fullname="Wouter Prins"/>,
      <contact fullname="Gunnar Guðvarðarson"/>,
      <contact fullname="Nick Hilliard"/>,
      <contact fullname="William McCall"/>,
      <contact fullname="Theo Buehler"/>,
      <contact fullname="Jeffrey Haas"/>,
      <contact fullname="Luigi Iannone"/>,
      and
      <contact fullname="Mohamed Bboucadair"/>
      for their helpful review of this document.
    </t>

  </section>

</middle>

<back>
  <references title="Normative References">
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1997.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4271.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4360.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6480.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6811.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8092.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8210.xml"/>
  </references>

  <references title="Informative References">
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8205.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9319.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9582.xml"/>
    <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-sidrops-aspa-profile.xml"/>

    <reference anchor="How-to-break" target="https://cds.cern.ch/record/2805326">
      <front>
        <title>How to break the Internet: a talk about outages that never happened</title>
        <author fullname="Job Snijders"/>
        <date month="March" year="2022"/>
      </front>
      <refcontent>CERN Academic Training Lecture Regular Programme; 2021-2022</refcontent>
    </reference>

    <reference anchor="CA-Outage1" target="https://www.arin.net/announcements/20200813/">
      <front>
        <title>RPKI Service Notice Update</title>
        <author>
          <organization>ARIN</organization>
        </author>
        <date month="August" year="2020"/>
      </front>
    </reference>

    <reference anchor="CA-Outage2" target="https://www.ripe.net/ripe/mail/archives/routing-wg/2021-April/004314.html">
      <front>
        <title>Issue affecting rsync RPKI repository fetching</title>
        <author>
          <organization>RIPE NCC</organization>
        </author>
        <date month="April" year="2021"/>
      </front>
    </reference>

    <reference anchor="CA-Outage3" target="https://mail.lacnic.net/pipermail/lacnog/2023-April/009471.html">
      <front>
        <title>problemas con el TA de RPKI de LACNIC</title>
        <author fullname="Job Snijders"/>
        <date month="April" year="2023"/>
      </front>
    </reference>

    <reference anchor="CA-Outage4" target="https://lists.afrinic.net/pipermail/dbwg/2023-November/000493.html">
      <front>
        <title>AFRINIC RPKI VRP graph for November 2023 - heavy fluctuations affecting 2 members</title>
        <author fullname="Job Snijders"/>
        <date month="November" year="2023"/>
      </front>
    </reference>

    <reference anchor="NIST" target="https://rpki-monitor.antd.nist.gov/">
      <front>
        <title>NIST RPKI Monitor</title>
        <author>
          <organization>NIST</organization>
        </author>
        <date month="January" year="2024"/>
      </front>
    </reference>

    <reference anchor="Side-Effect" target="https://labs.ripe.net/author/stucchimax/a-bgp-side-effect-of-rpki/">
      <front>
        <title>A BGP Side Effect of RPKI</title>
        <author fullname="Massimiliano Stucchi"/>
        <date month="February" year="2024"/>
      </front>
    </reference>

    <reference anchor="CIDR Report" target="https://www.cidr-report.org/as2.0/">
      <front>
        <title>CIDR REPORT</title>
        <author fullname="Geoff Huston"/>
        <date month="May" year="2026"/>
      </front>
    </reference>

  </references>

</back>

</rfc>
