<?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.31 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liu-sidrops-rrdp-delta-retention-policy-02" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="RRDPDR">RPKI Repository Delta Protocol (RRDP) Delta File Retention Policy</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-sidrops-rrdp-delta-retention-policy-02"/>
    <author initials="L." surname="Liu" fullname="Libin Liu">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>liulb@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="Z." surname="Yan" fullname="Zhiwei Yan">
      <organization>CNNIC</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>yanzhiwei@cnnic.cn</email>
      </address>
    </author>
    <author initials="L." surname="Chen" fullname="Li Chen">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>lichen@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="D." surname="Li" fullname="Dan Li">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>tolidan@tsinghua.edu.cn</email>
      </address>
    </author>
    <date year="2026" month="March" day="18"/>
    <area>Operations and Management [REPLACE]</area>
    <workgroup>SIDROPS</workgroup>
    <abstract>
      <?line 50?>

<t>This document updates RFC 8182 (The RPKI Repository Delta Protocol) by specifying an optimized delta file retention policy based on client access patterns. The proposed mechanism allows RRDP servers to maintain only the delta files required by active clients, reducing storage requirements while maintaining compatibility with existing clients. By tracking which serial numbers are being requested by active clients, the repository can determine the minimum serial number needed by any client and safely prune delta files that update from earlier serial numbers.</t>
      <t>The proposed mechanism provides several benefits, including reduced storage requirements, smaller notification files, and more efficient use of bandwidth and processing resources. It also maintains backward compatibility with existing RRDP clients, requiring no changes to client implementations.</t>
    </abstract>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The RPKI Repository Delta Protocol (RRDP) <xref target="RFC8182"/> defines a mechanism for publishers to make available a set of current repository objects, and for relying parties to maintain a local copy of this repository that is periodically updated to match the published repository.</t>
      <t>RFC 8182 specifies that repository must maintain a set of delta files that allow relying parties to update from any recent state to the current state. It proposes a size-based delta file retention strategy, stating that "Any older Delta Files that, when combined with all more recent Delta Files, will result in the total size of deltas exceeding the size of the snapshot <bcp14>MUST</bcp14> be excluded to avoid that Relying Parties download more data than necessary.". However, as the number of existing RPKI objects grows and more are proposed, the snapshot file size increases significantly, requiring more delta files to be stored. This leads to higher storage costs and potential performance issues.
Consequently, practical implementations have adopted various strategies to mitigate these issues, such as count-based limits (maintaining a fixed number of delta files) and time-based limits (retaining delta files only for a specified duration).</t>
      <t>This document updates RFC 8182 by defining an adaptive delta file retention policy based on client access patterns. The key insight is that repositories need only maintain delta files that might be used by active relying parties. By tracking the minimum serial number accessed by active clients, repositories can safely prune older delta files that are no longer needed, while ensuring that all active clients can still perform incremental updates. This adaptive approach can be integrated with existing size-based delta file retention strategy <xref target="RFC8182"/> to provide a more comprehensive solution.</t>
      <t>This approach provides several benefits:</t>
      <ol spacing="normal" type="1"><li>
          <t>Reduced storage requirements for RRDP servers;</t>
        </li>
        <li>
          <t>Maintained backward compatibility with existing RRDP clients;</t>
        </li>
        <li>
          <t>Potential performance improvements for notification file processing by limiting the size of notification file as suggested in Section 7.5 of <xref target="I-D.draft-ietf-sidrops-publication-server-bcp"/>;</t>
        </li>
        <li>
          <t>Better adaptation to actual client update patterns.</t>
        </li>
      </ol>
      <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="background">
      <name>Background</name>
      <t>This section reviews existing delta file retention strategies and illustrates their potential limitations.</t>
      <section anchor="existing-delta-file-retention-strategies">
        <name>Existing Delta File Retention Strategies</name>
        <t>Section 3.3.2 of RFC 8182 mandates that servers limit the number of deltas in the notification file such that the combined size of the underlying delta files does not exceed that of the snapshot file.  Servers are free to further limit the number of deltas included in the notification file, though.  Two common strategies are:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Count-based retention</strong>: Maintaining a fixed number of most recent delta files (e.g., the last 500 delta files). This approach is simple to implement but does not account for varying delta file sizes or client access patterns, and may lead to frequently downloading the full snapshot for clients.</t>
          </li>
          <li>
            <t><strong>Time-based retention</strong>: Keeping delta files for a specified time period (e.g., 2 hours). This approach ensures clients that update regularly can use delta files, but may not be optimal for clients with irregular update schedules and may also lead to frequently downloading the full snapshot for clients.</t>
          </li>
        </ol>
        <t>These strategies are typically implemented as configuration options in RRDP server software, allowing repository operators to choose the approach that best fits their needs.</t>
      </section>
      <section anchor="challenges-with-current-strategies">
        <name>Challenges with Current Strategies</name>
        <t>While the existing retention strategies provide some guidance, they have several limitations:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Size-based retention</strong>:
            </t>
            <ul spacing="normal">
              <li>
                <t>Does not consider client access patterns;</t>
              </li>
              <li>
                <t>Can lead to inefficient storage use if many small delta files are retained when they are no longer needed. This issue may be exacerbated when the snapshot size grows along with the number increasement of existing objects and the addition of more new objects.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Count-based retention</strong>:
            </t>
            <ul spacing="normal">
              <li>
                <t>Arbitrary fixed limits may not match actual client needs;</t>
              </li>
              <li>
                <t>Does not adapt to changing repository update frequencies;</t>
              </li>
              <li>
                <t>May discard delta files that are still needed by active clients.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Time-based retention</strong>:
            </t>
            <ul spacing="normal">
              <li>
                <t>Does not account for varying client update frequencies and may retain too many files during periods of frequent updates or too few during periods of infrequent updates;</t>
              </li>
              <li>
                <t>May retain files longer than necessary if no clients need them;</t>
              </li>
              <li>
                <t>May discard delta files that are still needed by active clients.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>These challenges highlight the need for a more adaptive approach to delta file retention that considers actual client behavior while maintaining compatibility with existing client implementations.</t>
      </section>
    </section>
    <section anchor="adaptive-delta-file-retention-policy">
      <name>Adaptive Delta File Retention Policy</name>
      <t>This document defines an adaptive delta file retention policy based on client access patterns. The key principle is that repositories need only maintain delta files that might be used by active relying parties. This approach would not like to replace the existing size-based retention strategy proposed in RFC 8182 and can be integrated with it to make RRDP work in a more efficient and adaptive manner.</t>
      <t>The policy consists of three main components:</t>
      <ol spacing="normal" type="1"><li>
          <t>A client tracking mechanism that records the serial numbers accessed by clients;</t>
        </li>
        <li>
          <t>A method for determining the minimum serial number needed by active clients;</t>
        </li>
        <li>
          <t>An algorithm for pruning delta files that are no longer needed.</t>
        </li>
      </ol>
      <t>By implementing this policy, RRDP repositories can reduce storage requirements while ensuring that all active clients can perform incremental updates.</t>
      <section anchor="client_tracking">
        <name>Client Tracking Mechanism</name>
        <t>To implement the adaptive delta file retention policy, RRDP repositories <bcp14>MUST</bcp14> track the serial numbers accessed by clients. This can be accomplished by monitoring client requests for delta files.</t>
        <t>When a client requests a delta file, it typically does so by first retrieving the notification file, identifying the appropriate delta file based on its current local serial number, and then requesting that specific delta file.</t>
        <t>Repositories <bcp14>SHOULD</bcp14> maintain a data structure that records:</t>
        <ol spacing="normal" type="1"><li>
            <t>Client identifiers (e.g., IP addresses or anonymized identifiers);</t>
          </li>
          <li>
            <t>The serial numbers requested by each client;</t>
          </li>
          <li>
            <t>Timestamps of the most recent requests.</t>
          </li>
        </ol>
        <t><xref target="data_structure"/> shows an example for the data structure to record RRDP clients.</t>
        <figure anchor="data_structure">
          <name>An example for the data structure to record RRDP clients.</name>
          <artwork><![CDATA[
| Client ID | Serial Number |        Last Access Time       |
|-----------|---------------|-------------------------------|
| Client A  |       42      | March 17, 2026, at 12:00PM UTC|
| Client B  |       37      | March 17, 2026, at 08:30AM UTC|
| Client C  |       45      | March 17, 2026, at 14:15PM UTC|
]]></artwork>
        </figure>
        <t>Repositories <bcp14>MAY</bcp14> implement more sophisticated tracking mechanisms, such as:</t>
        <ul spacing="normal">
          <li>
            <t>Using probabilistic data structures (e.g., Bloom filters) to efficiently track large numbers of clients;</t>
          </li>
          <li>
            <t>Implementing privacy-preserving techniques to avoid storing identifiable client information.</t>
          </li>
        </ul>
        <t>Repositories <bcp14>SHOULD</bcp14> periodically clean this data structure to remove entries for clients that have not been seen for a configurable period (e.g., 7 days). This helps ensure that the minimum serial number calculation is based only on active clients.</t>
      </section>
      <section anchor="min_serial">
        <name>Minimum Serial Number Determination</name>
        <t>Based on the client tracking data, repositories can determine the minimum serial number needed by active clients. This is the smallest serial number that any active client might need to update from.</t>
        <t>The algorithm for determining the minimum serial number is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Initialize min_serial to the current repository serial number;</t>
          </li>
          <li>
            <t>For each active client in the tracking data: 
a. If the client's serial number is less than min_serial, update min_serial to the client's serial number;</t>
          </li>
          <li>
            <t>Return min_serial.</t>
          </li>
        </ol>
        <t>For example, using the client tracking data from the previous section:</t>
        <ul spacing="normal">
          <li>
            <t>Current repository serial number: 50;</t>
          </li>
          <li>
            <t>Client A's serial number: 42;</t>
          </li>
          <li>
            <t>Client B's serial number: 37;</t>
          </li>
          <li>
            <t>Client C's serial number: 45;</t>
          </li>
          <li>
            <t>Minimum serial number: 37.</t>
          </li>
        </ul>
        <t>Repositories <bcp14>SHOULD</bcp14> recalculate the minimum serial number:</t>
        <ul spacing="normal">
          <li>
            <t>Whenever a new delta file is created;</t>
          </li>
          <li>
            <t>Periodically (e.g., daily) to account for client tracking data cleanup;</t>
          </li>
          <li>
            <t>Before any delta file pruning operation.</t>
          </li>
        </ul>
        <t>Repositories <bcp14>MAY</bcp14> implement a safety margin by subtracting a small value from the calculated minimum serial number. This helps ensure that clients that have recently become active but have not yet requested a delta file can still perform incremental updates.</t>
      </section>
      <section anchor="delta_pruning">
        <name>Delta File Pruning Algorithm</name>
        <t>Once the minimum serial number has been determined, repositories can safely prune delta files that are no longer needed. A delta file is no longer needed if it allows updating from a serial number that is less than the minimum serial number.</t>
        <t>The algorithm for delta file pruning is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Determine the minimum serial number (min_serial) as described in <xref target="min_serial"/>;</t>
          </li>
          <li>
            <t>For each delta file: 
a. Extract the "from" serial number (from_serial) from the delta file metadata; 
b. If from_serial &lt; min_serial, mark the delta file for deletion;</t>
          </li>
          <li>
            <t>Delete all marked delta files;</t>
          </li>
          <li>
            <t>Update the notification file to remove references to the deleted delta files.</t>
          </li>
        </ol>
        <t>For example, if the minimum serial number is 37, delta files that update from serial numbers 1-36 can be safely deleted.</t>
        <t>Repositories <bcp14>MAY</bcp14> implement the following safeguards:</t>
        <ul spacing="normal">
          <li>
            <t>Never delete the most recent N (e.g., 5) delta files, regardless of the minimum serial number calculation;</t>
          </li>
          <li>
            <t>Maintain delta files for a minimum time period before considering them for deletion;</t>
          </li>
          <li>
            <t>Implement a gradual pruning strategy to avoid sudden changes in available delta files.</t>
          </li>
        </ul>
        <t>Publishers <bcp14>MUST</bcp14> ensure that after pruning, the notification file still contains at least one delta element, unless the current serial number is 1.</t>
      </section>
      <section anchor="integration-with-existing-size-based-retention-policy">
        <name>Integration with Existing Size-based Retention Policy</name>
        <t>The adaptive delta file retention policy described in this document <bcp14>MUST</bcp14> be integrated with the size-based retention policy specified in <xref target="RFC8182"/>.</t>
        <t>The integration <bcp14>SHOULD</bcp14> be implemented as follows:</t>
        <ul spacing="normal">
          <li>
            <t>First, determine the minimum set of delta files required by active clients using the adaptive policy;</t>
          </li>
          <li>
            <t>Then, if the total size of these delta files exceeds the snapshot file size, remove older delta files to ensure the total size of retained delta files doe not exceed the size of the snapshot file, as required by <xref target="RFC8182"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="server-implementation">
        <name>Server Implementation</name>
        <t>Repositories implementing the adaptive delta file retention policy <bcp14>SHOULD</bcp14> follow these guidelines:</t>
        <ol spacing="normal" type="1"><li>
            <t>Client Tracking:
            </t>
            <ul spacing="normal">
              <li>
                <t>Use efficient data structures for client tracking as described in <xref target="client_tracking"/>;</t>
              </li>
              <li>
                <t>Regularly clean up tracking data for inactive clients.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Configuration Options:
            </t>
            <ul spacing="normal">
              <li>
                <t>Allow configuration of the client inactivity threshold (default: 7 days);</t>
              </li>
              <li>
                <t>Allow configuration of the safety margin for minimum serial number calculation (default: 5).</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Operational Features:
            </t>
            <ul spacing="normal">
              <li>
                <t>Provide monitoring and alerting for delta file management;</t>
              </li>
              <li>
                <t>Log delta file pruning operations;</t>
              </li>
              <li>
                <t>Expose metrics on storage savings and client serial number distribution.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Fallback Mechanisms:
            </t>
            <ul spacing="normal">
              <li>
                <t>Implement mechanisms to recover if delta files are accidentally pruned too aggressively;</t>
              </li>
              <li>
                <t>Consider maintaining an archive of pruned delta files that can be restored if needed.</t>
              </li>
            </ul>
          </li>
        </ol>
        <t>Repositories <bcp14>MAY</bcp14> implement the following optimizations:</t>
        <ul spacing="normal">
          <li>
            <t>Batch delta file pruning operations to reduce the frequency of notification file updates;</t>
          </li>
          <li>
            <t>Implement predictive algorithms to anticipate client behavior and adjust the safety margin accordingly.</t>
          </li>
        </ul>
      </section>
      <section anchor="client-behavior">
        <name>Client Behavior</name>
        <t>No changes to client behavior are required to benefit from the adaptive delta file retention policy. Existing RRDP clients will continue to function as specified in RFC 8182.</t>
      </section>
    </section>
    <section anchor="priv">
      <name>Privacy Considerations</name>
      <t>The client tracking mechanism described in <xref target="client_tracking"/> involves collecting information about client behavior, which raises privacy concerns. Repositories implementing this mechanism <bcp14>SHOULD</bcp14> take steps to protect client privacy:</t>
      <ol spacing="normal" type="1"><li>
          <t>Anonymization:
          </t>
          <ul spacing="normal">
            <li>
              <t>Use anonymized identifiers instead of storing actual IP addresses;</t>
            </li>
            <li>
              <t>Consider using techniques such as IP address hashing with a rotating salt;</t>
            </li>
            <li>
              <t>Ensure that the anonymization method still allows tracking the same client across multiple requests.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Data Minimization:
          </t>
          <ul spacing="normal">
            <li>
              <t>Store only the minimum information needed (client identifier, serial number, timestamp);</t>
            </li>
            <li>
              <t>Do not store additional information such as User-Agent strings or other HTTP headers unless necessary for debugging.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Data Retention:
          </t>
          <ul spacing="normal">
            <li>
              <t>Implement strict data retention policies;</t>
            </li>
            <li>
              <t>Delete tracking data for clients that have not been seen for a configurable period (e.g., 7 days).</t>
            </li>
          </ul>
        </li>
      </ol>
      <t>Repositories <bcp14>MAY</bcp14> implement more sophisticated privacy-preserving techniques, such as differential privacy or secure multi-party computation, to further protect client privacy while still benefiting from the adaptive delta file retention policy.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The adaptive delta file retention policy introduces several security considerations:</t>
      <ol spacing="normal" type="1"><li>
          <t>Denial of Service:
          </t>
          <ul spacing="normal">
            <li>
              <t>An attacker could potentially manipulate the minimum serial number calculation described in <xref target="min_serial"/> by repeatedly requesting delta files with very old serial numbers</t>
            </li>
            <li>
              <t>To mitigate this, repositories <bcp14>SHOULD</bcp14>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Implement rate limiting for delta file requests;</t>
                </li>
                <li>
                  <t>Use anomaly detection to identify suspicious patterns;</t>
                </li>
                <li>
                  <t>Consider weighting client importance based on factors such as reputation or update frequency;</t>
                </li>
                <li>
                  <t>Implement the safeguards described in <xref target="delta_pruning"/> to provide additional protection.</t>
                </li>
              </ul>
            </li>
          </ul>
        </li>
        <li>
          <t>Information Leakage:
          </t>
          <ul spacing="normal">
            <li>
              <t>The client tracking mechanism could potentially leak information about client update patterns;</t>
            </li>
            <li>
              <t>Repositories <bcp14>SHOULD</bcp14> implement the privacy considerations described in <xref target="priv"/> to mitigate this risk.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Consistency:
          </t>
          <ul spacing="normal">
            <li>
              <t>Inconsistent delta file availability across multiple servers could lead to confusion or errors;</t>
            </li>
            <li>
              <t>Repositories <bcp14>SHOULD</bcp14> ensure consistent implementation across all servers.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Fallback Reliability:
          </t>
          <ul spacing="normal">
            <li>
              <t>Clients falling back to snapshot updates more frequently could increase load on servers and networks;</t>
            </li>
            <li>
              <t>Repositories <bcp14>SHOULD</bcp14> monitor fallback frequency and adjust retention policy parameters accordingly.</t>
            </li>
          </ul>
        </li>
      </ol>
      <t>These security considerations do not introduce new vulnerabilities beyond those already present in the RRDP protocol, but they should be carefully addressed in any implementation of the adaptive delta file retention policy.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>Tom Harrison<br/>
  APNIC<br/>
  Email: tomh@apnic.net<br/>
Thank you very much for the constructive revision suggestions and sharing practical operation experience.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC8182">
        <front>
          <title>The RPKI Repository Delta Protocol (RRDP)</title>
          <author fullname="T. Bruijnzeels" initials="T." surname="Bruijnzeels"/>
          <author fullname="O. Muravskiy" initials="O." surname="Muravskiy"/>
          <author fullname="B. Weber" initials="B." surname="Weber"/>
          <author fullname="R. Austein" initials="R." surname="Austein"/>
          <date month="July" year="2017"/>
          <abstract>
            <t>In the Resource Public Key Infrastructure (RPKI), Certificate Authorities (CAs) publish certificates, including end-entity certificates, Certificate Revocation Lists (CRLs), and RPKI signed objects to repositories. Relying Parties retrieve the published information from those repositories. This document specifies a new RPKI Repository Delta Protocol (RRDP) for this purpose. RRDP was specifically designed for scaling. It relies on an Update Notification File which lists the current Snapshot and Delta Files that can be retrieved using HTTPS (HTTP over Transport Layer Security (TLS)), and it enables the use of Content Distribution Networks (CDNs) or other caching infrastructures for the retrieval of these files.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8182"/>
        <seriesInfo name="DOI" value="10.17487/RFC8182"/>
      </reference>
      <reference anchor="I-D.draft-ietf-sidrops-publication-server-bcp">
        <front>
          <title>Best Practises for Operating Resource Public Key Infrastructure (RPKI) Publication Services</title>
          <author fullname="Tim Bruijnzeels" initials="T." surname="Bruijnzeels">
            <organization>RIPE NCC</organization>
          </author>
          <author fullname="Ties de Kock" initials="T." surname="de Kock">
            <organization>RIPE NCC</organization>
          </author>
          <author fullname="Frank Hill" initials="F." surname="Hill">
            <organization>ARIN</organization>
          </author>
          <author fullname="Tom Harrison" initials="T." surname="Harrison">
            <organization>APNIC</organization>
          </author>
          <author fullname="Job Snijders" initials="J." surname="Snijders">
            <organization>BSD Software Development</organization>
          </author>
          <date day="2" month="March" year="2026"/>
          <abstract>
            <t>   This document describes best current practices for operating an RFC
   8181 RPKI publication engine and its associated publicly accessible
   rsync (RFC 5781) and RRDP (RFC 8182) repositories.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-sidrops-publication-server-bcp-06"/>
      </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="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>
    </references>
  </back>
  <!-- ##markdown-source:
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
1qGMpf9Kaaw7DS7i38v1raYEuhx/Nfvad7Lo2WrvRO8Vex6EHXURTjRUdHze
uGAUZi6d9PqUQ/oJuLmBstdc25Ws8UgJvoy/IquRevuKwcEhf3evI3iA8IXj
9RdevwtfGPfM8JZfuOi7fxq+ET0AxNYOt+i6RVIiWpRaAiJQBiSgPcTlCkOI
zNu4CiHJAkWsk3T1QgpRTWagV+QMYvWSpzo2Uw53s1W4niPuuesSXT9f23Vo
Ls5WFOQVMygodbnVE26ck5y0JKfudFqb5sq9aOJ+uWxEvXVYFbKTUt4qoryd
NRlKr3rYXZkqYFIhf31i5dfCZBB3X1lBHXnYeHjG0/5kRcgQ+SmLtiHdHOjB
LsHDYvy16vfTIiqwoLYSdd+gxEtSuSZBPiadRnp8+iC1hR8bT7QRTdcUrBc6
T57gHZ43mPOCpmhVIB8eAh/12AHTZhcNaJ7+wqrK6+3R6fe6y9FDv55X4OBE
iKU1Wdd7mXTCSByMUt+38BZ2ctudwsrIkMFZgD2hX430NGFEq3WglGL0F0Hu
/upYw0oKMzXA0UiokV2Z67fdeK+F3sl0u+N7DTq7tTGyE8kcDF7/wcWlVqPt
Pr4GMVy6yF0BgcbOau2ir4G6ZOSUudZioEuHkm9ftMsvhZlhDlbpfNtJAzIl
jqAvl2XTh3aCsH40EZR1WULrEBftG28RXEw0K3RMqURnKz5l1VDbOo6p/822
VlKc6tsXu7d61fQ6cjohhFM9pXYGu87+pkIrwyOOIP2gGAY3AhHnHo6MbB0u
P7MgEXQEdhXnwKHpmU2w0UKcYfMV5qCU0p/ffFpGpY0N7Y4G18TXzfK5rpK1
vKGdsikTMtz4fh2PfElwKksFJqZbPQtxjxPdHyhbsr+RHq91bG5u1A5ol5eR
7N0l1W+468Lad7sJUtrowoWkRF5u6CncdyDT05SVN5rWXcaXpjpV+XZRfkP7
paSNdFsG3Zt41hiUXMXYWqAk1K0GSnG/8+oaGnXykk/UPXv3ctNWsFRTNNTZ
0c0cucyiK/Z8KcOEcjeo7uN3656wm5h8dPd/3RSmOaitl11mnlMNrydShDcd
t+q+n5auCCqlOD5rpzQchiVuWip8UN4bF5oi4o3NVNdpNXJB7/uvz9dmnbTj
rwfDzTpvX7iym/86FIZ8ANEmAbvjXNl6cJA25dx+agphS21qs/BfpXL7P89n
W8m1r5ad/kKlCKISRRJRL6nPapea8htSx7MybB8wBmbi1pteQDCDD6AN1KXX
JKr9mRo/0yR2XN6IbCFp4wyxS4QVnELhoINZaMwlQT2bUWITSpJ6bHFm1ip4
UeWpiOakTbg9O8Mad7DcAFNytzGXBpv6wJP5gf1WTVCdR6zDNeCtNyEy4IIC
z2dLqKv+7sKm2BlKFIEsYjMpHjr+K/koIEOULIkadcuDUiz6mXr019WaArqC
2jfSVacUcWzH09PLvu9YNAsUpkFK7uHjXtCGyj4FzYaNbw4zi9JVT8wgyWrb
GpVJ5xf17YWu0lXYLDpfSQqvA8uIoSi39+h86eba19ewDo/v8vSOIihohpFg
NEj6KT3J66orrH37HaRCJyX3g8gmccBISp/b/ALYRbM/i/4VVQsRdC5L289b
YStuVTu9L/XZ0gDvL3QE/TUD6uiuqEEECuoynbYEHRYd1gzT0oMmX+qa5ZtR
FJfOE9fYoRW2LeFhqVOPbaedXKQOt+8KjEIdbZTZ6gov9cLfr46KHKsuAM1c
Tm4VLuBzTsgpcQamI53PhBTNN9mcBwjv2Ya7z53/8QLc79aNKldMedF0hjAh
YTzyvSr0RYVgfic9XFQxOJpJi07BkA3jy7lP8OPNzZWa467o2ixFblogxItM
6hm1nDi3xEf23HcdvGmNyDKDjrEGrSk2iFz37r9bdvrbCwtbk/fNVzfiZMph
qzSMW0PM6Wt2Eakd68qA2gNWXDWvhbvth+2Z/eZmS8OimRYMferjyXgoKPaZ
NkNcZp1dPjlGSewX3YJ2/dJNG7WmbbIkGQkFdk/8NYmMp1+AtarCXRPv4RYJ
39DLXRhZsvxKPrJFl7ZkVohyF2bJicl0FVZaQ7fO8IEj8be4OvkAF4u0vsOT
dL/8ITAq51PqZWAAFLI13wXoMDEHIO/9QIujC81ph8q2J1NvnS0/Q/HKJYyH
8tDtXjwa7tHz3lAhod2pkxcVf5XBl6inwGFqa3S6jCNZ/SQN7jRprd73nM5R
AUl0dG+inWdsf1WkQSmr/o4WHlJlosGtc6NvwS9HTUy4xduuKxMCh9vN/rTz
HYgm8FhPk7dpXOBxQ1rQOT9zhMfO97/oq5VJeesAdCwdNiRgj55Z5B6G7dAu
dSLtWF1f5DrURQSuI5OQsS7thZqiyIuth7SBcLB8u8HLrUrZPrvgGpW/RuBo
N+kONLYoPsU7/O0Y7hPJm1DZ9fAxDAeNwXIY16ap+NuJ5Mtcrzs4aWYqanDa
eiwbF/H6vHbDmgNau4Z4QG04/8p2sLQIru1B7sc/FYs/9ojJxZK7Os3wBkuG
9jYxq5w7QCig0ilOGFPUgnmbChpz2KX93rC0YnN/LIRGgplQWaAw1C698kyK
dY+qJZ2rs/HoN3iNs6PLo16PEeanqDSQ5fKujsIuQIyUgC8vZBz81kddQPmx
EOegj64uz8by46n7lxQW8x/0kv7lCFwsfXQD075Vq7wWgF4QVLmuAhI7Zxuk
Fe8uKYXp8Nep/L8cUs61tIP6L3D6aEqZX4guUNLZf7mbFGTn/wDYhNtu1kQA
AA==

-->

</rfc>
