<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-taylor-dtn-http-over-bp-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="HTTP over BP">HTTP over the Bundle Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-taylor-dtn-http-over-bp-00"/>
    <author fullname="Rick Taylor">
      <organization>Aalyria Technologies</organization>
      <address>
        <email>rtaylor@aalyria.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Internet</area>
    <workgroup>Delay/Disruption Tolerant Networking</workgroup>
    <keyword>DTN</keyword>
    <keyword>BPv7</keyword>
    <keyword>Bundle Protocol</keyword>
    <keyword>HTTP</keyword>
    <keyword>Binary HTTP</keyword>
    <keyword>Caching</keyword>
    <abstract>
      <?line 92?>

<t>This document specifies a mechanism for carrying HTTP over Bundle Protocol Version 7 (BPv7) networks. Each HTTP request and each HTTP response travels as a single bundle, encoded as a Binary HTTP message inside a small CBOR envelope that correlates responses with requests. Because every bundle carries a complete, self-contained message, the mechanism needs none of the reliable, ordered, connection-oriented transport services that HTTP otherwise relies on, and it tolerates the delay, disruption, reordering, and duplication of a Delay-Tolerant Network. HTTP semantics are unchanged; only the transport beneath them is replaced. The mechanism enables HTTP application-layer gateways at the edges of a bundle network, through which unmodified HTTP clients and origin servers communicate across it, and also lets BP-native applications act as HTTP clients or origin servers directly. The document describes how gateways use HTTP caching to remain useful when round trips are long or intermittent, and it requests a well-known ipn service number and a registry for envelope options.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ricktaylor.github.io/http-over-bp/draft-taylor-dtn-http-over-bp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-taylor-dtn-http-over-bp/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Delay/Disruption Tolerant Networking Working Group mailing list (<eref target="mailto:dtn@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dtn/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dtn/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ricktaylor/http-over-bp"/>.</t>
    </note>
  </front>
  <middle>
    <?line 96?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies a mechanism for carrying HTTP over networks that use Bundle Protocol Version 7 (BPv7) <xref target="RFC9171"/>: HTTP over BP. HTTP semantics <xref target="RFC9110"/> are unchanged; only the transport beneath them is replaced. Each HTTP request and each HTTP response is encoded as a Binary HTTP message <xref target="RFC9292"/> and carried as the application data unit (ADU) of a single bundle, inside a small CBOR <xref target="RFC8949"/> envelope that correlates each response with its request (<xref target="envelope"/>). No connection, stream, or sequence state spans the bundle network. Every bundle can be interpreted on its own, so reordering, duplication, and arbitrary delay need no recovery mechanism, and the loss of a bundle loses one exchange, never a connection.</t>
      <t>Any BP node can use HTTP over BP to send HTTP requests or to answer them, whether or not that node also speaks HTTP over IP. <xref target="applicability"/> describes the uses of the mechanism and how it compares with the alternatives.</t>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document specifies:</t>
        <ul spacing="normal">
          <li>
            <t>the format of the ADUs that carry HTTP messages (<xref target="format"/>);</t>
          </li>
          <li>
            <t>the procedures by which a requester and a responder exchange them (<xref target="procedures"/>), including responses that are produced incrementally and event streams (<xref target="extended"/>); and</t>
          </li>
          <li>
            <t>requirements and guidance for gateways that preserve HTTP semantics across a bundle network, chiefly caching (<xref target="gateways"/>).</t>
          </li>
        </ul>
        <t>This document builds on existing specifications wherever it can. The following functions are outside its scope; most are already covered by existing HTTP, DNS, or DTN specifications, which apply to gateways unchanged.</t>
        <dl>
          <dt>Directing clients to a gateway:</dt>
          <dd>
            <t>Clients reach a client-side gateway by the usual means of reaching an HTTP intermediary: by configuring it as a proxy, so that requests carry absolute-form targets (<xref section="3.2.2" sectionFormat="of" target="RFC9112"/>); or through DNS, by resolving the names of origins to the addresses of the gateway, for example with split-horizon DNS (<xref section="6" sectionFormat="of" target="RFC9499"/>).</t>
          </dd>
          <dt>Selecting a responder:</dt>
          <dd>
            <t>The mapping from an authority to the EID of a responder can be configured, or obtained from a resolution service, for example one built on DNS Service Binding records <xref target="RFC9460"/>. <xref target="discovery"/> gives the requirements that any such mechanism has to meet.</t>
          </dd>
        </dl>
        <t><cref>A companion document is expected to specify an SVCB-based mechanism.</cref></t>
        <dl>
          <dt>Admission and capacity policy:</dt>
          <dd>
            <t>Which requests a gateway admits, and how it rations the capacity of a bundle path, are matters for each deployment. Gateways convey their decisions with existing HTTP mechanisms: 413 (Content Too Large), and 503 (Service Unavailable) with Retry-After <xref target="RFC9110"/>; 429 (Too Many Requests) <xref target="RFC6585"/>; and Problem Details <xref target="RFC9457"/>. Quota policies can be advertised with the RateLimit fields <xref target="I-D.ietf-httpapi-ratelimit-headers"/>.</t>
          </dd>
          <dt>Asynchronous and repeatable requests:</dt>
          <dd>
            <t>Clients can ask for asynchronous processing with <tt>Prefer: respond-async</tt> <xref target="RFC7240"/>, resubmit unsafe requests without repeating their effect using the Idempotency-Key field <xref target="I-D.ietf-httpapi-idempotency-key-header"/>, and divide large uploads into independent steps with Resumable Uploads for HTTP <xref target="I-D.ietf-httpbis-resumable-upload"/>. <xref target="client-facing"/> describes how these apply at a gateway.</t>
          </dd>
          <dt>End-to-end security:</dt>
          <dd>
            <t>TLS terminates at the gateways (<xref target="trust"/>). Mechanisms that protect HTTP messages, rather than connections, pass through gateways unchanged: HTTP Message Signatures <xref target="RFC9421"/> authenticate messages, Encrypted Content-Encoding <xref target="RFC8188"/> protects content, and Digest Fields <xref target="RFC9530"/> protect its integrity.</t>
          </dd>
          <dt>Cache control for DTN gateways:</dt>
          <dd>
            <t>Origin servers control caching at gateways with ordinary Cache-Control directives <xref target="RFC9111"/>. Targeted Cache-Control fields <xref target="RFC9213"/> provide the means by which directives could be addressed to DTN gateways alone; defining such a field is left to a future document.</t>
          </dd>
          <dt>Streaming media:</dt>
          <dd>
            <t>Segmented media formats such as HTTP Live Streaming <xref target="RFC8216"/> were designed to traverse HTTP caches, and cross a gateway pair without adaptation.</t>
          </dd>
          <dt>Other application protocols:</dt>
          <dd>
            <t>CoAP, which already runs over a message-oriented transport, is carried over BP by <xref target="I-D.ietf-core-coap-bp"/>; existing mappings between HTTP and CoAP <xref target="RFC8075"/> apply between the two. Tunnelling (CONNECT), WebSocket, and other protocols that require an interactive end-to-end connection are not supported (<xref target="unsupported"/>).</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</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?>

<t>This document uses the terms "bundle", "application data unit (ADU)", "bundle protocol agent (BPA)", "endpoint ID (EID)", "lifetime", "creation timestamp", and "bundle age" from <xref target="RFC9171"/>; the terms "intermediary", "gateway", "origin server", "user agent", "target URI", "safe", and "idempotent" from <xref target="RFC9110"/>; and the terms "shared cache", "stored response", "fresh", and "stale" from <xref target="RFC9111"/>. Data structures are described using the Concise Data Definition Language (CDDL) <xref target="RFC8610"/>.</t>
      <t>In this document, the source EID of a bundle is the EID carried in the Source node ID field of its primary block, and its destination EID is the EID carried in its Destination EID field (<xref section="4.3.1" sectionFormat="of" target="RFC9171"/>).</t>
      <dl>
        <dt>Requester:</dt>
        <dd>
          <t>A BP node that sends HTTP requests over BP as specified in this document and receives the corresponding responses. A requester is either a client-side gateway or a BP-native HTTP client.</t>
        </dd>
        <dt>Responder:</dt>
        <dd>
          <t>A BP node that receives HTTP requests over BP as specified in this document and returns responses. A responder is either an origin-side gateway or a BP-native HTTP origin server.</t>
        </dd>
        <dt>Client-side gateway:</dt>
        <dd>
          <t>A requester that receives HTTP requests from clients over conventional HTTP connections and forwards them over BP.</t>
        </dd>
        <dt>Origin-side gateway:</dt>
        <dd>
          <t>A responder that forwards the HTTP requests it receives over BP to origin servers over conventional HTTP connections, and returns their responses over BP.</t>
        </dd>
        <dt>Request ADU:</dt>
        <dd>
          <t>An ADU, formatted as specified in <xref target="format"/>, that carries an HTTP request.</t>
        </dd>
        <dt>Response ADU:</dt>
        <dd>
          <t>An ADU, formatted as specified in <xref target="format"/>, that carries an HTTP response.</t>
        </dd>
        <dt>Exchange:</dt>
        <dd>
          <t>A request ADU together with the response ADU or ADUs that answer it, identified by a correlation identifier (<xref target="correlation"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>HTTP over BP has two principal uses: HTTP application-layer gateways (<xref target="use-gateways"/>) and BP-native HTTP applications (<xref target="use-native"/>). <xref target="alternatives"/> compares it with other ways of bringing HTTP to a bundle network.</t>
      <section anchor="use-gateways">
        <name>HTTP Gateways</name>
        <t>A pair of HTTP application-layer gateways, one at each edge of a bundle network, lets unmodified HTTP clients and origin servers communicate across it. Each gateway terminates the HTTP connections on its own side, and the gateways exchange requests and responses with each other using HTTP over BP. HTTP runs end to end, between client and origin server, while the transport beneath it changes from hop to hop:</t>
        <figure anchor="fig-overview">
          <name>HTTP Gateways at the Edges of a Bundle Network</name>
          <sourcecode type="artwork"><![CDATA[
+--------+                                                +--------+
|        |<==================== HTTP ====================>|        |
|        |                                                |        |
|        |      +-------------+      +-------------+      |        |
| client |<---->| client-side |<---->| origin-side |<---->| origin |
|        |  IP  |   gateway   |  BP  |   gateway   |  IP  | server |
+--------+      +-------------+      +-------------+      +--------+
]]></sourcecode>
        </figure>
        <t>The DTN architecture anticipated gateways of this kind. One of its stated aims is "to provide a common method for interconnecting application layer gateways and proxies", so that existing Internet applications that can be made to tolerate delay can "operate unmodified over a DTN-based network" (<xref section="3.11" sectionFormat="of" target="RFC4838"/>). HTTP over BP is that common method for HTTP: the protocol beneath the web, most application programming interfaces, and most streaming media. With it, the large body of existing HTTP clients, servers, tools, and libraries can be used across bundle networks without being rewritten.</t>
        <t>A gateway does more than translate between transports. HTTP's own means of coping with an expensive path work at the application layer, where only an intermediary can apply them: a client-side gateway answers what it can from its cache, collapses identical requests into one, and revalidates stored responses with conditional requests that cost little when nothing has changed (<xref target="caching"/>). Content can also be placed on the near side of a bundle network in advance, so that only cache fill crosses it. <xref target="RFC3135"/> describes such a device as an application layer performance enhancing proxy, with "the same functionality as the corresponding regular proxy for the same application (e.g., relay MTA or Web caching proxy) but extended with link-specific optimizations of the application protocol operation".</t>
        <t>The design assumes disruption, not necessarily delay. On a bundle path with low latency the mechanisms described here for tolerating delay never engage: responses arrive before any client notices, and a gateway pair behaves as an ordinary caching reverse proxy, with nothing configured differently.</t>
      </section>
      <section anchor="use-native">
        <name>BP-Native HTTP</name>
        <t>An application on a BP node, such as software on a spacecraft or a surface asset, can act as an HTTP client by sending requests over BP itself, with no IP stack and no client-side gateway. It can reach an origin server on the Internet through an origin-side gateway:</t>
        <figure anchor="fig-native-client">
          <name>A BP-Native HTTP Client</name>
          <sourcecode type="artwork"><![CDATA[
+------------------+                                      +--------+
|                  |<=============== HTTP ===============>|        |
|                  |                                      |        |
|                  |                 +-------------+      |        |
| BP-native client |<--------------->| origin-side |<---->| origin |
|                  |       BP        |   gateway   |  IP  | server |
+------------------+                 +-------------+      +--------+
]]></sourcecode>
        </figure>
        <t>An application can likewise act as an origin server directly over BP, publishing resources that clients on the Internet reach through a client-side gateway, and a BP-native client can reach a BP-native origin server with no gateway at all. Such applications use HTTP's methods, status codes, caching, and media types, and existing HTTP libraries for constructing and parsing messages, rather than defining an application protocol of their own. A node can choose for itself whether to reach a service over IP, through a gateway, or over BP directly, and the HTTP semantics are the same in each case.</t>
      </section>
      <section anchor="alternatives">
        <name>Alternatives</name>
        <t>There are other ways to bring HTTP to a bundle network, and each has a cost.</t>
        <dl>
          <dt>Application-specific protocols:</dt>
          <dd>
            <t>Applications can be rewritten to use BP directly, with an application protocol of their own. This suits purpose-built applications, such as spacecraft operations, but cannot be asked of HTTP software in general.</t>
          </dd>
          <dt>End-to-end transport:</dt>
          <dd>
            <t>TCP/IP or QUIC can be run end to end, either directly across the path or by carrying IP packets in bundles. These transports assume a contemporaneous end-to-end path: they spend round trips establishing and securing a connection, retransmit on short timers, and treat a path that stays silent for long as failed.</t>
          </dd>
          <dt>HTTP connections in bundles:</dt>
          <dd>
            <t>The bytes of an HTTP connection can be carried in bundles <xref target="I-D.blanchet-dtn-http-over-bp"/>. This avoids IP, but inherits the connection's need for reliable, in-order delivery, which BP does not provide.</t>
          </dd>
        </dl>
        <t>Carrying HTTP's messages, rather than its connections, avoids all of these costs.</t>
      </section>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>HTTP is well suited to being carried as individual messages. Its semantics are defined independently of the protocols that carry them, and have already been mapped onto more than one transport, most recently QUIC <xref target="RFC9114"/>. Each request and each response is a self-contained message. HTTP already defines the role of intermediaries (<xref section="3.7" sectionFormat="of" target="RFC9110"/>), which fields are end to end and which belong to a single connection (<xref section="7.6.1" sectionFormat="of" target="RFC9110"/>), and how intermediaries cache <xref target="RFC9111"/>. This document therefore needs to specify little beyond the bundle hop.</t>
      <section anchor="roles">
        <name>Roles</name>
        <t>The protocol in this document operates between a requester and a responder. A requester is either a client-side gateway or a BP-native client; a responder is either an origin-side gateway or a BP-native origin server. The protocol is the same whichever kind each is, so any requester can exchange requests and responses with any responder. <xref target="fig-overview"/> shows a client-side gateway as the requester and an origin-side gateway as the responder; <xref target="fig-native-client"/> shows a BP-native client as the requester. A BP-native origin server answers requests for its own authorities directly:</t>
        <figure anchor="fig-native-origin">
          <name>A BP-Native HTTP Origin Server</name>
          <sourcecode type="artwork"><![CDATA[
+--------+                                      +--------------------+
|        |<=============== HTTP ===============>|                    |
|        |                                      |                    |
|        |      +-------------+                 |                    |
| client |<---->| client-side |<--------------->| BP-native origin   |
|        |  IP  |   gateway   |       BP        |       server       |
+--------+      +-------------+                 +--------------------+
]]></sourcecode>
        </figure>
        <t>Requirements in this document that apply to every requester or every responder are stated in those terms; requirements specific to gateways are stated in terms of client-side or origin-side gateways.</t>
        <t>A single node can act in both roles, for example as a relay between two bundle networks, or as a gateway that serves clients in each direction (<xref target="chained"/>).</t>
        <t>Gateways are HTTP intermediaries (<xref section="3.7" sectionFormat="of" target="RFC9110"/>), and all of the requirements that <xref target="RFC9110"/> and <xref target="RFC9111"/> place on intermediaries apply to them. A client-side gateway commonly acts as a reverse proxy for the authorities it serves; it might also be configured as a forward proxy for "http" targets. In either case it terminates the client's HTTP connection, and TLS where used, and an origin-side gateway opens its own connection to the origin server. The bundle hop between them is protected with BPSec (<xref target="protecting-the-bundle-hop"/>).</t>
      </section>
      <section anchor="principles">
        <name>Principles</name>
        <t>The mapping rests on four principles.</t>
        <dl>
          <dt>One message per bundle:</dt>
          <dd>
            <t>Each ADU carries exactly one complete HTTP message. A receiver can interpret every ADU on its own, without reference to any other bundle.</t>
          </dd>
          <dt>Explicit correlation:</dt>
          <dd>
            <t>How a response is correlated with its request depends on the HTTP version; some versions rely on the ordering of messages on a connection, and others use an explicit identifier (<xref section="7.5" sectionFormat="of" target="RFC9110"/>). BP preserves no ordering, so this mapping uses an explicit correlation identifier carried in an envelope around the HTTP message (<xref target="envelope"/>).</t>
          </dd>
          <dt>No sequencing:</dt>
          <dd>
            <t>No sequence numbers, acknowledgements, or retransmission state exist at this layer. Reordering is harmless because exchanges are matched by identifier, not by arrival order; a duplicate response is discarded because it matches no outstanding exchange, and a duplicate request is recognised by the same identifier (<xref target="processing-request"/>). Nor is ordering provided between distinct exchanges, just as HTTP provides none between requests sent on different connections.</t>
          </dd>
          <dt>Connections end at the edges:</dt>
          <dd>
            <t>HTTP connections, and the TLS sessions that protect them, exist only between clients and client-side gateways and between origin-side gateways and origin servers. HTTP semantics are end to end; HTTP connections are not.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="addressing">
      <name>Endpoints and Addressing</name>
      <section anchor="service-endpoint">
        <name>Responder Endpoint</name>
        <t>A responder receives request ADUs at an endpoint registered for this service. The well-known endpoint is ipn-scheme service number TBD1 (<xref target="iana-service"/>) at the responder's node; for example, <tt>ipn:977000.100.TBD1</tt> is the responder endpoint of node 100 under allocator 977000 <xref target="RFC9758"/>.</t>
        <t>A responder <bcp14>SHOULD</bcp14> support the well-known endpoint, so that requesters can reach it without additional configuration. A responder <bcp14>MAY</bcp14> also receive requests at other endpoints, which requesters learn by other means.</t>
        <t>A requester <bcp14>MUST</bcp14> address each request bundle to a singleton endpoint, because it admits a response only from a bundle whose source EID is the EID to which it sent the request (<xref target="receiving-response"/>).</t>
      </section>
      <section anchor="requester-endpoint">
        <name>Requester Endpoint</name>
        <t>A requester sends each request bundle from a singleton endpoint at which it is registered, and receives the responses at that endpoint. A requester <bcp14>MUST NOT</bcp14> send a request bundle whose source EID is the null endpoint ID (<xref section="4.2.5.1.1" sectionFormat="of" target="RFC9171"/>), since there would be no endpoint to which to return the response.</t>
        <t>The requester's endpoint need not be the well-known service endpoint. A node that acts as both requester and responder <bcp14>MAY</bcp14> use one endpoint for both roles: the direction of each ADU is given by the Binary HTTP framing indicator (<xref target="message"/>).</t>
      </section>
      <section anchor="discovery">
        <name>Selecting a Responder</name>
        <t>To send a request, a requester maps the authority component of the target URI to the EID of a responder. The mapping can come from configuration, including a default responder for authorities with no specific entry, or from a resolution service, for example one built on DNS Service Binding records <xref target="RFC9460"/>. Specifying such a service is outside the scope of this document; whatever the mechanism:</t>
        <ul spacing="normal">
          <li>
            <t>A specific mapping for an authority <bcp14>MUST</bcp14> take precedence over a default.</t>
          </li>
          <li>
            <t>The integrity of the mapping <bcp14>MUST</bcp14> be protected, since an attacker who can alter it can direct requests, and the responses that populate a shared cache, to a responder of its choosing (<xref target="resolution"/>).</t>
          </li>
          <li>
            <t>A name with local scope, such as a single-label name or one under a special-use domain, <bcp14>MUST NOT</bcp14> be resolved using global resolution services.</t>
          </li>
        </ul>
        <t>A requester that finds no responder for an authority <bcp14>MUST NOT</bcp14> send a request ADU. A client-side gateway in that situation <bcp14>SHOULD</bcp14> respond with 502 (Bad Gateway) and a Proxy-Status field <xref target="RFC9209"/> with the error type "destination_not_found".</t>
      </section>
    </section>
    <section anchor="format">
      <name>ADU Format</name>
      <section anchor="envelope">
        <name>Structure</name>
        <t>Each ADU consists of exactly one CBOR <xref target="RFC8949"/> data item: an array whose first element is a version number (<xref target="version"/>). The rest of the array is defined by the version; this document defines version 1, an array of four elements.</t>
        <figure anchor="fig-cddl">
          <name>ADU Structure</name>
          <sourcecode type="cddl"><![CDATA[
http-over-bp-adu = [
  version: uint,
  * any                   ; defined by the version
]

http-over-bp-adu-v1 = [
  version: 1,
  correlation: correlation-id,
  options: options,
  message: bstr,          ; a Binary HTTP message (RFC 9292)
]

correlation-id = bstr .size (1..64)

options = {
  ? 1 => true,            ; incremental (requests)
  ? 2 => true,            ; final-segment (responses)
  ? -1 => uint,           ; segment (requests and responses)
  * int => any            ; options defined by future specifications
}
]]></sourcecode>
        </figure>
        <t>A sender <bcp14>MUST</bcp14> use definite-length encoding for every data item in the ADU and <bcp14>MUST NOT</bcp14> repeat a key within the options map; senders <bcp14>SHOULD</bcp14> use the core deterministic encoding of <xref section="4.2.1" sectionFormat="of" target="RFC8949"/>. The ADU <bcp14>MUST</bcp14> contain no data after the array.</t>
        <t>A receiver <bcp14>MUST</bcp14> discard, without responding, an ADU that is not well-formed CBOR, that does not match the http-over-bp-adu rule of <xref target="fig-cddl"/>, that contains a duplicate map key, or that has trailing data. It then checks the version (<xref target="version"/>); a version 1 ADU that does not match the http-over-bp-adu-v1 rule <bcp14>MUST</bcp14> likewise be discarded without responding.</t>
      </section>
      <section anchor="version">
        <name>Version</name>
        <t>The version element identifies the format of the remainder of the ADU. A receiver <bcp14>MUST</bcp14> discard, without responding, an ADU with a version it does not support. The version sits outside the structure it versions, so that a future version can change any other element.</t>
      </section>
      <section anchor="correlation">
        <name>Correlation Identifier</name>
        <t>The correlation identifier associates a response with its request. The requester generates it; the responder treats it as opaque and copies it unchanged into each response ADU it sends for that request.</t>
        <t>A requester <bcp14>MUST NOT</bcp14> use a correlation identifier that is already in use for another outstanding exchange from the same requester endpoint, except when retrying a request (<xref target="sending-request"/>). Identifiers <bcp14>SHOULD</bcp14> be at least 16 bytes long and generated by a cryptographically secure random number generator, so that an attacker cannot predict them (<xref target="correlation-security"/>). A requester <bcp14>MAY</bcp14> instead encode its own state in the identifier, for example an authenticated token that lets it process responses without retaining per-exchange state, provided the result is equally unpredictable.</t>
      </section>
      <section anchor="options">
        <name>Options</name>
        <t>The options element is a map of integer keys to values, carrying metadata about the exchange that is not part of the HTTP message. Keeping this metadata out of the HTTP header and trailer fields ensures that no client or origin server can inject it, and that it never leaks to them (<xref target="rationale"/>).</t>
        <t>The sign of a key indicates whether the option is critical:</t>
        <ul spacing="normal">
          <li>
            <t>An option with a non-negative key is elective. A receiver <bcp14>MUST</bcp14> ignore an elective option that it does not understand, or that is defined only for the other direction.</t>
          </li>
          <li>
            <t>An option with a negative key is critical. A responder that receives a request ADU containing a critical option that it does not understand <bcp14>MUST NOT</bcp14> process the request and <bcp14>SHOULD</bcp14> respond with 501 (Not Implemented) and a Proxy-Status field <xref target="RFC9209"/> whose "details" parameter identifies the option. A requester that receives a response ADU containing a critical option that it does not understand <bcp14>MUST NOT</bcp14> process the response: if the ADU passes the admission check of <xref target="receiving-response"/>, the requester fails the exchange (<xref target="failure"/>); otherwise it discards the ADU.</t>
          </li>
        </ul>
        <t>Key 0 is reserved. The options defined by this document are listed in <xref target="tab-options"/>; further options are registered as described in <xref target="iana-options"/>.</t>
        <table anchor="tab-options">
          <name>Options Defined by This Document</name>
          <thead>
            <tr>
              <th align="right">Key</th>
              <th align="left">Name</th>
              <th align="left">Used in</th>
              <th align="left">Value</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">1</td>
              <td align="left">incremental</td>
              <td align="left">Requests</td>
              <td align="left">true</td>
              <td align="left">
                <xref target="incremental"/></td>
            </tr>
            <tr>
              <td align="right">2</td>
              <td align="left">final-segment</td>
              <td align="left">Responses</td>
              <td align="left">true</td>
              <td align="left">
                <xref target="event-streams"/></td>
            </tr>
            <tr>
              <td align="right">-1</td>
              <td align="left">segment</td>
              <td align="left">Requests, responses</td>
              <td align="left">uint</td>
              <td align="left">
                <xref target="event-streams"/></td>
            </tr>
          </tbody>
        </table>
        <t>The timing of an exchange is not carried in options; it is taken from the bundles themselves (<xref target="bundle-times"/>).</t>
      </section>
      <section anchor="message">
        <name>HTTP Message</name>
        <t>The message element contains one Binary HTTP message <xref target="RFC9292"/>. A sender <bcp14>MUST</bcp14> use the known-length format: framing indicator 0 for a request and 1 for a response (<xref section="3.3" sectionFormat="of" target="RFC9292"/>). A receiver <bcp14>MAY</bcp14> treat a message in the indeterminate-length format as invalid; the entire message is present in the ADU, so that format offers no benefit here.</t>
        <t>The framing indicator determines the direction of the ADU: an ADU whose message is a request is a request ADU, and one whose message is a response is a response ADU.</t>
        <t>The request control data (<xref section="3.4" sectionFormat="of" target="RFC9292"/>) carries the method and the scheme, authority, and path of the target URI. The authority <bcp14>MUST NOT</bcp14> be empty. A request <bcp14>MAY</bcp14> include a Host header field, in which case it <bcp14>MUST</bcp14> identify the same authority as the control data; a responder <bcp14>MUST</bcp14> treat a request in which they differ as malformed (compare <xref section="8.3.1" sectionFormat="of" target="RFC9113"/>). A responder <bcp14>MUST</bcp14> use the authority in the control data, not the Host field, to identify the target.</t>
        <t>A response message carries exactly one final response. A responder <bcp14>SHOULD NOT</bcp14> include informational (1xx) responses (<xref section="3.5.1" sectionFormat="of" target="RFC9292"/>): they are hints about a connection that no longer exists by the time the response is delivered. A requester <bcp14>MUST</bcp14> ignore any that are present.</t>
        <t>Messages <bcp14>MAY</bcp14> carry trailer fields, and <bcp14>MAY</bcp14> be padded (<xref section="3.8" sectionFormat="of" target="RFC9292"/>). Padding obscures message length only when the ADU is also encrypted (<xref target="privacy"/>).</t>
      </section>
      <section anchor="fields">
        <name>Field Handling</name>
        <t>No HTTP connection spans the bundle hop, so fields that describe a connection have nothing to apply to. Before encoding a message, the sender <bcp14>MUST</bcp14> remove:</t>
        <ul spacing="normal">
          <li>
            <t>the connection-specific fields listed in <xref section="7.6.1" sectionFormat="of" target="RFC9110"/>: Connection and every field it names, Proxy-Connection, Keep-Alive, TE, Transfer-Encoding, and Upgrade. <xref section="3.6" sectionFormat="of" target="RFC9292"/> recommends removing these; this document requires it;</t>
          </li>
          <li>
            <t>the proxy authentication fields of <xref section="11.7" sectionFormat="of" target="RFC9110"/>, which apply only to the hop on which they were received; and</t>
          </li>
          <li>
            <t>fields consumed by the gateway itself, such as Client-Cert and Client-Cert-Chain <xref target="RFC9440"/>, which carry client credentials that are not to be forwarded beyond the gateway that verified them.</t>
          </li>
        </ul>
        <t>A client-side gateway has to receive the complete request content before it can encode the request, so it satisfies an <tt>Expect: 100-continue</tt> expectation itself, sending either 100 (Continue) or a final response as <xref section="10.1.1" sectionFormat="of" target="RFC9110"/> requires of a server, and removes the expectation from the request before encoding it.</t>
        <t>Each gateway <bcp14>MUST</bcp14> record itself in the Via header field as <xref section="7.6.3" sectionFormat="of" target="RFC9110"/> requires of an HTTP-to-HTTP gateway. A client-side gateway appends its entry to the request before encoding it; an origin-side gateway appends its entry before forwarding the request to the origin server. Each <bcp14>SHOULD</bcp14> likewise append its entry to the response. Gateways <bcp14>SHOULD</bcp14> use a pseudonym rather than a host name as the received-by value, as <xref section="7.6.3" sectionFormat="of" target="RFC9110"/> permits.</t>
        <t><cref>The received-protocol that an origin-side gateway records for a request received over BP is an open issue (<xref target="open-issues"/>).</cref></t>
        <t>An origin-side gateway with a clock that receives a response without a Date header field from the origin server <bcp14>MUST</bcp14> add one before encoding the response, as <xref section="6.6.1" sectionFormat="of" target="RFC9110"/> requires of any recipient that forwards such a response.</t>
      </section>
    </section>
    <section anchor="procedures">
      <name>Exchange Procedures</name>
      <section anchor="bundle-times">
        <name>Bundle Age and Expiry</name>
        <t>The procedures in this section use two properties of each bundle that the BPA delivers: its bundle age, the time that has elapsed since it was created, and its expiry, the time at which its age will exceed its lifetime. Under <xref section="5.5" sectionFormat="of" target="RFC9171"/>, bundle age is determined from the bundle's creation timestamp where that timestamp is not zero and the receiving node's clock is accurate, and otherwise from the Bundle Age block (<xref section="4.4.2" sectionFormat="of" target="RFC9171"/>), so both properties are available whether or not the nodes involved have accurate clocks.</t>
        <t>The timing of an exchange is carried by its bundles rather than in the ADU. The lifetime of the request bundle bounds the whole exchange (<xref target="sending-request"/>), the response bundle expires no later than the request bundle (<xref target="sending-response"/>), and the bundle age of a response measures the time it spent in transit (<xref target="age"/>).</t>
        <t><xref target="RFC9171"/> does not specify the interface between a BPA and the application agent. A requester or responder relies on its BPA to report the bundle age and expiry of each bundle it delivers.</t>
      </section>
      <section anchor="sending-request">
        <name>Sending a Request</name>
        <t>To send a request, a requester:</t>
        <ol spacing="normal" type="1"><li>
            <t>selects a responder for the target URI (<xref target="discovery"/>);</t>
          </li>
          <li>
            <t>constructs the request message as specified in <xref target="message"/> and <xref target="fields"/>;</t>
          </li>
          <li>
            <t>generates a correlation identifier (<xref target="correlation"/>) and constructs the request ADU;</t>
          </li>
          <li>
            <t>requests transmission of a bundle whose payload is the request ADU, whose destination EID identifies the responder endpoint, and whose source EID identifies the requester endpoint (<xref section="5.2" sectionFormat="of" target="RFC9171"/>); and</t>
          </li>
          <li>
            <t>records the exchange: its correlation identifier, the responder endpoint to which it was sent, and its deadline (<xref target="failure"/>).</t>
          </li>
        </ol>
        <t>Each request ADU is sent in a bundle of its own. A requester <bcp14>MUST NOT</bcp14> place more than one ADU in a bundle. The BPA can fragment the bundle in transit (<xref section="5.8" sectionFormat="of" target="RFC9171"/>); the responder's BPA reassembles it before delivery.</t>
        <t>The lifetime of the request bundle bounds the whole exchange, since no response can be sent after the request bundle expires (<xref target="sending-response"/>). It <bcp14>SHOULD</bcp14> be long enough for the request to reach the responder and for the response to return, for example as estimated from a contact plan, and no longer than the period during which the requester will use a response. A requester <bcp14>MAY</bcp14> request bundle deletion status reports (<xref section="6.1.1" sectionFormat="of" target="RFC9171"/>) so that it can detect failure early (<xref target="failure"/>); it <bcp14>SHOULD NOT</bcp14> request other status reports, except for diagnostics, because each report adds traffic to the bundle network.</t>
        <t>A requester <bcp14>MUST NOT</bcp14> automatically retry a request whose method is not idempotent (<xref section="9.2.2" sectionFormat="of" target="RFC9110"/>). It <bcp14>MAY</bcp14> retry a request whose method is safe or idempotent, for example after a deletion status report or once its deadline has passed. A retry <bcp14>SHOULD</bcp14> reuse the correlation identifier of the original request, so that a response to either attempt completes the exchange and a response to the other is discarded as a duplicate. The exchange's deadline then becomes the expiry of the retry's request bundle (<xref target="failure"/>).</t>
      </section>
      <section anchor="processing-request">
        <name>Processing a Request</name>
        <t>When an ADU is delivered to a responder (<xref section="5.7" sectionFormat="of" target="RFC9171"/>), the responder <bcp14>MUST</bcp14> discard it, without responding, if:</t>
        <ul spacing="normal">
          <li>
            <t>the ADU is not valid as specified in <xref target="envelope"/>, or has an unsupported version (<xref target="version"/>);</t>
          </li>
          <li>
            <t>its message is a response;</t>
          </li>
          <li>
            <t>the source EID of the bundle that carried it is the null endpoint ID; or</t>
          </li>
          <li>
            <t>the bundle's "ADU is an administrative record" flag is set.</t>
          </li>
        </ul>
        <t>If the message is not a valid Binary HTTP message (<xref section="4" sectionFormat="of" target="RFC9292"/>) or is malformed as described in <xref target="message"/>, the responder <bcp14>SHOULD</bcp14> respond with 400 (Bad Request). If the request contains a critical option the responder does not understand, it proceeds as specified in <xref target="options"/>.</t>
        <t>Otherwise the responder handles the request. A BP-native origin server handles it as an origin server would. An origin-side gateway forwards it to the origin server as an HTTP gateway (<xref section="3.7" sectionFormat="of" target="RFC9110"/>): it identifies the origin from the target URI, establishes a connection, verifying the server's certificate for an "https" target as <xref section="4.3.4" sectionFormat="of" target="RFC9110"/> requires, applies the field handling of <xref target="fields"/>, and sends the request. A responder that has a cache <bcp14>MAY</bcp14> answer from a stored response under the rules of <xref target="RFC9111"/>. An origin-side gateway <bcp14>SHOULD</bcp14> apply a policy that restricts the destinations it will contact (<xref target="ssrf"/>).</t>
        <t>A request bundle that expires before it is delivered is deleted by the BPA (<xref section="5.5" sectionFormat="of" target="RFC9171"/>), so a responder does not process a request after its requester has stopped waiting for the response. A responder <bcp14>MAY</bcp14> also discard, without processing, a request that it estimates cannot be answered before the request bundle expires, for example from a contact plan.</t>
        <t>A responder can receive the same request more than once. A requester can retry a request whose method is safe or idempotent (<xref target="sending-request"/>), and the responder can simply process it again, as in HTTP. A request whose method is not idempotent is never retried automatically, but BP can duplicate the bundle that carries it, and re-executing the request could repeat its effect. For such requests, a responder <bcp14>SHOULD</bcp14> recognise a duplicate by the source EID of the request bundle together with its correlation identifier and, rather than processing the request again, re-send the response it gave to the first copy, or send nothing if that response is not yet complete. A responder that does so <bcp14>SHOULD</bcp14> retain its record of each exchange at least until the request bundle expires (<xref target="bundle-times"/>). A re-sent response is subject to the same lifetime bound and Age requirement as any other (<xref target="sending-response"/>).</t>
      </section>
      <section anchor="sending-response">
        <name>Sending a Response</name>
        <t>To answer a request, the responder constructs a response ADU with:</t>
        <ul spacing="normal">
          <li>
            <t>version 1;</t>
          </li>
          <li>
            <t>the correlation identifier copied, unchanged, from the request ADU;</t>
          </li>
          <li>
            <t>any options that apply; and</t>
          </li>
          <li>
            <t>the final response, encoded as specified in <xref target="message"/> and <xref target="fields"/>.</t>
          </li>
        </ul>
        <t>It requests transmission of a bundle whose payload is the response ADU, whose destination EID is the source EID of the request bundle, and whose source EID is the destination EID of the request bundle. The responder <bcp14>MUST</bcp14> set the lifetime of the response bundle so that it expires no later than the request bundle (<xref target="bundle-times"/>), and <bcp14>SHOULD NOT</bcp14> send a response ADU after the request bundle has expired.</t>
        <t>A responder sends one response ADU for each request it processes, except as specified in <xref target="extended"/>.</t>
        <t>A requester measures the transit of a response from the creation of the bundle that carries it (<xref target="age"/>). A responder that sends a response some time after generating it, or after receiving it from the origin server, <bcp14>MUST</bcp14> therefore include an Age field that accounts for the delay. This is the case when it answers from a stored response, as <xref section="4" sectionFormat="of" target="RFC9111"/> already requires, and when it re-sends a response to a duplicate request (<xref target="processing-request"/>).</t>
        <t>When an origin-side gateway cannot complete the exchange with the origin server, it responds with an error response such as 502 (Bad Gateway) or 504 (Gateway Timeout), carrying a Proxy-Status field <xref target="RFC9209"/> that identifies the gateway and the error type, for example "dns_error", "connection_refused", "connection_timeout", "tls_certificate_error", or "http_response_timeout". Clients can then distinguish a failure beyond the origin-side gateway from a failure in the bundle network (<xref target="failure"/>).</t>
      </section>
      <section anchor="receiving-response">
        <name>Receiving a Response</name>
        <t>When an ADU whose message is a response is delivered to a requester, the requester <bcp14>MUST</bcp14> discard it unless both:</t>
        <ul spacing="normal">
          <li>
            <t>the requester has an outstanding exchange with the ADU's correlation identifier; and</t>
          </li>
          <li>
            <t>the source EID of the bundle that carried the ADU is the EID to which the request of that exchange was sent.</t>
          </li>
        </ul>
        <t>This check is the requester's defence against forged responses, which could otherwise poison a client-side gateway's shared cache for every client it serves; its strength depends on the authentication of the bundle's source (<xref target="admission"/>).</t>
        <t>A requester <bcp14>MUST</bcp14> discard a response ADU for an exchange that has already completed, except as specified in <xref target="extended"/>. Otherwise, the response completes the exchange. The requester processes the response as an HTTP intermediary or client would: a client-side gateway applies the field handling of <xref target="fields"/>, calculates the response's age (<xref target="age"/>), stores it if permitted (<xref target="caching"/>), and forwards it to the client, or retains it for the client to collect (<xref target="client-facing"/>).</t>
      </section>
      <section anchor="failure">
        <name>Deadlines and Failure</name>
        <t>A requester assigns each exchange a deadline, after which, if no response has been received, the exchange has failed. The deadline <bcp14>SHOULD</bcp14> be the expiry of the request bundle, or of the latest retry (<xref target="sending-request"/>): no response can arrive after it, since a response bundle expires no later than the request bundle (<xref target="sending-response"/>).</t>
        <t>When an exchange fails, a client-side gateway answers any client waiting for it with 504 (Gateway Timeout) and a Proxy-Status field with the error type "http_response_timeout".</t>
        <t>A requester that receives a bundle status report (<xref section="6.1.1" sectionFormat="of" target="RFC9171"/>) asserting that the request bundle was deleted <bcp14>MAY</bcp14> fail the exchange immediately. A client-side gateway that does so <bcp14>SHOULD</bcp14> answer with 504 (Gateway Timeout) and a Proxy-Status field with the error type "bp_bundle_deleted" (<xref target="iana-proxy-status"/>), whose "bp-reason" parameter carries the reason code from the status report.</t>
        <t>As with any 504 response, the failure of an exchange does not show that the request was not processed: the response could have been lost or delayed after the responder acted on it.</t>
        <t>After a safe request fails, a client-side gateway <bcp14>SHOULD NOT</bcp14> send the same request again until a configured interval has passed, so that repeated client requests do not send a stream of bundles toward an unreachable responder.</t>
      </section>
    </section>
    <section anchor="extended">
      <name>Extended Exchanges</name>
      <section anchor="incremental">
        <name>Incremental Responses</name>
        <t>Some responses are produced slowly: an origin server sends the header section promptly, then content over an extended period. No responder can send content that has not yet been produced, and holding the response until it is complete delays every byte of it. A requester that is able to assemble a response from parts indicates this by including the incremental option (key 1) in its request ADU.</t>
        <t>A responder that receives a request with the incremental option <bcp14>MAY</bcp14> return the response as a sequence of 206 (Partial Content) responses (<xref section="15.3.7" sectionFormat="of" target="RFC9110"/>), each in its own response ADU with the request's correlation identifier. Each of these responses:</t>
        <ul spacing="normal">
          <li>
            <t>is complete and self-contained, with the full header section of the response and a single Content-Range header field (<xref section="14.4" sectionFormat="of" target="RFC9110"/>) covering exactly the content it carries;</t>
          </li>
          <li>
            <t>carries the same strong validator (<xref section="8.8.1" sectionFormat="of" target="RFC9110"/>) as every other response in the sequence; and</t>
          </li>
          <li>
            <t>carries the complete length of the representation in its Content-Range field if that length is known when it is sent, and "*" otherwise.</t>
          </li>
        </ul>
        <t>The responder chooses when to send each part. A response that is complete before the responder would send its first part is sent as a single ordinary response.</t>
        <t>The requester combines the parts as <xref section="3.3" sectionFormat="of" target="RFC9111"/> and <xref section="3.4" sectionFormat="of" target="RFC9111"/> allow a cache to combine partial content; their order of arrival is immaterial. The exchange remains open until the requester holds the complete representation or its deadline passes; a requester that asks for an incremental response sets the lifetime of the request bundle to cover the time the response will take to complete. Once the complete length is known, the requester can recover any missing range with an ordinary range request in a new exchange. A requester <bcp14>MUST NOT</bcp14> serve the combined representation as complete until it is complete; it <bcp14>MAY</bcp14> answer a client's range request from content already received (<xref section="3.3" sectionFormat="of" target="RFC9111"/>).</t>
        <t>A responder <bcp14>SHOULD</bcp14> bound the resources it spends on any one incremental response, such as bytes, parts, and elapsed time. A responder that abandons a response before it is complete <bcp14>SHOULD</bcp14> send a final response ADU containing a 502 (Bad Gateway) response with a Proxy-Status field (for example with the error type "http_response_body_size"). On receiving it, the requester fails the exchange and <bcp14>MUST NOT</bcp14> treat the content received so far as a complete representation.</t>
        <t><cref>An origin-side gateway might need to supply a strong validator for a response that has none. Whether, and how, it should do so without creating a validator the origin server would not recognise is an open issue (<xref target="open-issues"/>).</cref></t>
      </section>
      <section anchor="event-streams">
        <name>Event Streams</name>
        <t>An event stream (the <tt>text/event-stream</tt> media type <xref target="HTML"/>) has no end, so it can be carried neither as a single response nor as a finite sequence of parts. Its contract is nevertheless tolerant of delay: events are delivered in order, in one direction, eventually, and a client can resume a stream from the identifier of the last event it received. This document carries an event stream as a sequence of finite segments.</t>
        <t><cref>This section is less mature than the rest of the document, and could move to a companion document.</cref></t>
        <t>To request segment K of an event stream, a requester sends a GET request for the stream's target URI with the segment option (key -1) set to K. The option is critical, so a responder that does not support segments refuses the request (<xref target="options"/>) instead of opening a response that never ends.</t>
        <t>An origin-side gateway that supports segments:</t>
        <ul spacing="normal">
          <li>
            <t>maintains one subscription to the origin server's event stream for each target URI and credential scope, shared by every requester that requests segments of it;</t>
          </li>
          <li>
            <t>divides the events it receives into numbered segments at boundaries of its choosing, such as a count of events, a size, or an interval, and never splits an event across segments;</t>
          </li>
          <li>
            <t>answers a request for segment K, once that segment is closed, with a 200 (OK) response of type <tt>text/event-stream</tt> whose content is the complete events of the segment, in a response ADU carrying the segment option set to K;</t>
          </li>
          <li>
            <t>holds a request for a segment that is still open until the segment closes, and closes a segment early, even if it holds no events, so that its response can be delivered before the request bundle expires; and</t>
          </li>
          <li>
            <t>marks the last segment, when the origin server ends the stream, with the final-segment option (key 2).</t>
          </li>
        </ul>
        <t>A closed segment never changes, so a requester can store it and serve it to any number of local clients. A client-side gateway serves each client a genuine <tt>text/event-stream</tt> response on a connection that it holds open, releasing events strictly in order; a missing segment holds back later ones until it is recovered. The gateway requests further segments while it has clients for the stream, and <bcp14>MAY</bcp14> request segment K+1 before segment K arrives, to hide the latency of the path. It maps a client's Last-Event-ID to a position within the segments it holds.</t>
        <t>Other unbounded response types, such as newline-delimited records, could be segmented in the same way, given a rule for event boundaries; such types do not identify themselves, so a gateway would need configuration to recognise them.</t>
      </section>
    </section>
    <section anchor="unsupported">
      <name>Unsupported HTTP Features</name>
      <t>The CONNECT method (<xref section="9.3.6" sectionFormat="of" target="RFC9110"/>) establishes a tunnel whose contents are interactive and opaque to HTTP. A requester <bcp14>MUST NOT</bcp14> send a CONNECT request in a request ADU. A client-side gateway that receives a CONNECT request asking it to establish a tunnel across the bundle network <bcp14>SHOULD</bcp14> respond with 501 (Not Implemented).</t>
      <t>Protocol upgrade (<xref section="7.8" sectionFormat="of" target="RFC9110"/>) replaces HTTP on a connection, and no connection spans the bundle hop. A client-side gateway that receives a request to upgrade to WebSocket <xref target="RFC6455"/>, whether through the Upgrade field or through extended CONNECT <xref target="RFC8441"/> <xref target="RFC9220"/>, <bcp14>SHOULD</bcp14> respond with 501 (Not Implemented) rather than forward it with the Upgrade field removed, which would return a response that the client did not ask for.</t>
      <t>Applications that need messages in both directions can use an event stream for one direction (<xref target="event-streams"/>) and individual requests for the other.</t>
    </section>
    <section anchor="gateways">
      <name>Gateway Considerations</name>
      <t>This section gives requirements and guidance for gateways. None of it affects the format of ADUs or the exchange procedures, and gateways that make different choices interoperate.</t>
      <section anchor="caching">
        <name>Caching</name>
        <t>Much of the value of a client-side gateway lies in its cache: every request it answers locally is one that does not cross the bundle network. A client-side gateway <bcp14>SHOULD</bcp14> act as a shared cache <xref target="RFC9111"/>. A BP-native client benefits from a private cache in the same way, and the guidance in this section applies to it as well, except where it concerns shared caches or requests from multiple clients.</t>
        <dl>
          <dt>Collapsing requests:</dt>
          <dd>
            <t>A client-side gateway <bcp14>SHOULD</bcp14> collapse requests (<xref section="4" sectionFormat="of" target="RFC9111"/>): when a request could be satisfied by the response to a safe request for which an exchange is already outstanding, the gateway awaits that response instead of starting another exchange. The key on which requests are collapsed <bcp14>MUST</bcp14> distinguish requests made with different credentials, whether carried in Authorization or Cookie fields or otherwise, and <bcp14>SHOULD</bcp14> include the request fields to which the response is expected to vary. A gateway <bcp14>MUST NOT</bcp14> collapse unsafe requests.</t>
          </dd>
          <dt>Validation:</dt>
          <dd>
            <t>When it revalidates a stored response, a gateway <bcp14>SHOULD</bcp14> send a conditional request carrying the stored validators, so that an unchanged resource costs only a small 304 (Not Modified) response ADU. A gateway <bcp14>SHOULD</bcp14> answer a client's conditional request from a stored response wherever <xref section="4.3.2" sectionFormat="of" target="RFC9111"/> allows, without starting an exchange.</t>
          </dd>
          <dt>Serving stale responses:</dt>
          <dd>
            <t><xref section="4.2.4" sectionFormat="of" target="RFC9111"/> permits a cache to serve a stale response where it is explicitly permitted "by configuration in accordance with an out-of-band contract". A gateway deployed in front of a constrained or intermittent path is such a configuration, and <bcp14>MAY</bcp14> serve stale responses within configured limits, for example while revalidating in the background or after an exchange has failed (compare <xref target="RFC5861"/>). Nothing in this document relaxes the response directives of <xref section="5.2.2" sectionFormat="of" target="RFC9111"/>: a gateway <bcp14>MUST NOT</bcp14> serve a stale response that a directive such as no-cache, must-revalidate, proxy-revalidate, or s-maxage prohibits, and <bcp14>MUST</bcp14> generate an accurate Age header field whenever it serves a stored response without validation.</t>
          </dd>
          <dt>Request directives:</dt>
          <dd>
            <t>Cache request directives are advisory (<xref section="5.2.1" sectionFormat="of" target="RFC9111"/>). A gateway <bcp14>MAY</bcp14> decline to honour directives, such as max-age, min-fresh, and no-cache, that would oblige it to start an exchange across the bundle network. It <bcp14>SHOULD</bcp14> honour only-if-cached, max-stale, and no-store, which cost nothing on the path.</t>
          </dd>
          <dt>Invalidation:</dt>
          <dd>
            <t>On receiving a non-error response to an unsafe request, a gateway invalidates stored responses as <xref section="4.4" sectionFormat="of" target="RFC9111"/> requires.</t>
          </dd>
          <dt>Pacing:</dt>
          <dd>
            <t>A gateway <bcp14>MAY</bcp14> enforce a minimum interval between exchanges for the same resource. When it does so, and no stored response can be served, it responds with 504 (Gateway Timeout), which it <bcp14>MAY</bcp14> accompany with a Retry-After field (<xref section="10.2.3" sectionFormat="of" target="RFC9110"/>) giving the time at which a new exchange will be allowed. Pacing never extends the circumstances in which a stored response may be served.</t>
          </dd>
        </dl>
      </section>
      <section anchor="age">
        <name>Calculating Age</name>
        <t>A requester that stores or forwards a response calculates its age as <xref section="4.2.3" sectionFormat="of" target="RFC9111"/> specifies. That calculation's corrected_age_value adds to the received Age value the response_delay: the time between sending the request and receiving the response, the full round trip. Over a bundle path that round trip can be long, and much of it elapses before the response exists: the request's transit, and any time it waited for a contact. Charging all of it against the response's freshness lifetime roughly halves the usable lifetime on a symmetric path, and on a long-delay path can make every response stale on arrival.</t>
        <t>The bundle age of the response bundle (<xref target="bundle-times"/>), as reported by the requester's BPA when the response is delivered, is the time that has elapsed since the responder requested its transmission: the time the response spent in transit. The requester <bcp14>MAY</bcp14> use it as transit_delay in place of response_delay:</t>
        <sourcecode type="pseudocode"><![CDATA[
corrected_age_value = age_value + transit_delay
]]></sourcecode>
        <t>The result is the response's age when the responder sent it, plus the time it has since spent in transit. Any delay at the responder before it sent the response is carried in the Age field (<xref target="sending-response"/>).</t>
        <t>The apparent_age calculation of <xref target="RFC9111"/> would also exclude the request's transit, but relies on the origin server's clock, in the Date field, being synchronised with the requester's. A gateway cannot know whether an origin server's clock is synchronised. Bundle age is instead determined by the BPAs on the path, from the creation timestamp where the clocks of the responder's and requester's nodes are accurate, or from the Bundle Age block, which needs no synchronised clocks (<xref target="timing"/>).</t>
        <t>A requester whose BPA does not report the bundle age of a response uses response_delay as <xref target="RFC9111"/> specifies. A requester <bcp14>MUST NOT</bcp14> treat a response as having an age of zero when it arrives; that would conceal the transit delay that the Age field exists to disclose.</t>
      </section>
      <section anchor="client-facing">
        <name>Responding to Clients During an Exchange</name>
        <t>A client expects a timely response, but over a long-delay path an exchange can outlast the client's patience. How a client-side gateway answers a client while an exchange is outstanding is local to the gateway. The following strategies are available, and gateways can combine them.</t>
        <dl>
          <dt>Holding:</dt>
          <dd>
            <t>The gateway holds the client's connection open until the response arrives, or the exchange fails, and then responds normally. Holding is transparent whenever the round trip is shorter than the client's timeout, and is the only safe choice for programmatic clients, which would misinterpret anything else.</t>
          </dd>
          <dt>Polling in place:</dt>
          <dd>
            <t>For a top-level navigation by a browser, the gateway can respond with 202 (Accepted), a Retry-After field, and a document that refreshes itself, so that the browser requests the same URI again later and receives the stored response once it has arrived. Because a programmatic client treats any 2xx response as success, and would consume the 202 response body as though it were the resource, a gateway <bcp14>SHOULD</bcp14> respond with 202 only when the request is known to be a navigation, for example from the Sec-Fetch-Dest request field <xref target="FETCH-METADATA"/>, and not on the strength of the Accept field.</t>
          </dd>
          <dt>Status resources:</dt>
          <dd>
            <t>For an unsafe request, the gateway can respond with 303 (See Other) referring to a status resource, under an unguessable URI, from which the client retrieves the eventual response. A client can ask for this behaviour with <tt>Prefer: respond-async</tt> <xref target="RFC7240"/>, a preference that a proxy may honour on its own (<xref section="2" sectionFormat="of" target="RFC7240"/>). The Idempotency-Key field <xref target="I-D.ietf-httpapi-idempotency-key-header"/> lets a client resubmit an unsafe request without repeating its effect.</t>
          </dd>
          <dt>Retry intervals:</dt>
          <dd>
            <t>Where a gateway can estimate when a response will arrive, for example from a contact plan, it <bcp14>SHOULD</bcp14> derive the intervals it gives clients in Retry-After fields from that estimate, rather than from a fixed value.</t>
          </dd>
        </dl>
        <t>Clients that send large or open-ended request content can divide it into finite steps with Resumable Uploads for HTTP <xref target="I-D.ietf-httpbis-resumable-upload"/>, each step being an ordinary exchange.</t>
      </section>
      <section anchor="ordering">
        <name>Ordering</name>
        <t>No ordering is provided between exchanges (<xref target="principles"/>). Two unsafe requests sent in succession can reach the origin server in either order. A client that needs one request to be processed after another has to wait for the response to the first before sending the second.</t>
      </section>
      <section anchor="chained">
        <name>Chained Gateways</name>
        <t>A node can act as both responder and requester, receiving requests over one bundle network and forwarding them over another. Each such node is an intermediary in its own right, and records itself in the Via field (<xref target="fields"/>). A misconfigured chain can form a loop; a gateway <bcp14>SHOULD</bcp14> detect loops, using its Via entries or the CDN-Loop field <xref target="RFC8586"/>, and respond with 502 (Bad Gateway) and a Proxy-Status field with the error type "proxy_loop_detected".</t>
      </section>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <dl>
        <dt>Lifetimes and deadlines:</dt>
        <dd>
          <t>Bundle lifetimes, and so exchange deadlines, need to match the latency of the path; contact plans, where available, give the best estimates. Because a response bundle expires no later than the request bundle it answers, a request that is delivered late in its lifetime leaves little time for the response to return, so the lifetime of the request bundle needs to cover both directions. Values that are too short fail exchanges that would have completed; values that are too long hold resources for responses that will never be used.</t>
        </dd>
        <dt>Clocks:</dt>
        <dd>
          <t>Exchange deadlines and age calculation (<xref target="age"/>) depend on the BPAs' determination of bundle age. BP nodes generally keep accurate time; a deployment with clockless nodes relies on the Bundle Age block, which every node on the path then needs to maintain.</t>
        </dd>
        <dt>Message size:</dt>
        <dd>
          <t>Each HTTP message is a single ADU, carried, and if necessary fragmented, by the BP layer. Deployments typically limit message sizes. A client-side gateway that refuses request content as too large responds with 413 (Content Too Large); a responder that refuses a response as too large responds with 502 (Bad Gateway) and a Proxy-Status field with the error type "http_response_body_size".</t>
        </dd>
        <dt>Round trips:</dt>
        <dd>
          <t>Some HTTP patterns cost a round trip each: redirects, authentication challenges, and preflight requests. Over a long-delay path each of these can cost hours. Origins that expect to be reached across a bundle network can be designed to avoid them, for example by accepting credentials sent preemptively rather than challenging for them.</t>
        </dd>
        <dt>Time-limited authorisations:</dt>
        <dd>
          <t>Signed URIs, tokens, and licence exchanges that expire within less than the latency of the path expire in transit. This is a property of the origin's security design, which no gateway can work around.</t>
        </dd>
      </dl>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="trust">
        <name>Trust Model</name>
        <t>TLS terminates at the gateways, so there is no end-to-end TLS between client and origin server. A client entrusts the client-side gateway with the content of its requests and responses, as it would any reverse proxy that terminates TLS, and a gateway presents certificates only for names it is authorised to serve. The origin-side gateway authenticates the origin server (<xref section="4.3.4" sectionFormat="of" target="RFC9110"/>). Intercepting TLS connections to arbitrary origins by means of a locally installed certification authority is outside the scope of this document; it exposes all traffic to the gateway, defeats certificate pinning, and is appropriate only where the operator controls the clients.</t>
        <t>Between BP-native endpoints, and between a BP-native endpoint and a gateway, there is no TLS at all: BPSec is the only protection on the bundle hop (<xref target="protecting-the-bundle-hop"/>), and the authenticated source of a bundle takes the place of the TLS server identity. A BP-native client trusts the responder it has selected for an authority (<xref target="discovery"/>) as it would trust an origin server whose certificate it had verified, and needs that selection to be equally well protected.</t>
      </section>
      <section anchor="protecting-the-bundle-hop">
        <name>Protecting the Bundle Hop</name>
        <t>Requesters and responders <bcp14>MUST</bcp14> support BPSec <xref target="RFC9172"/>. This document does not mandate a particular security context; the choice is left to the deployment, for example the COSE context <xref target="I-D.ietf-dtn-bpsec-cose"/>. Whatever the context, the protection of each ADU needs to provide three things:</t>
        <dl>
          <dt>Confidentiality and integrity of the ADU:</dt>
          <dd>
            <t>Every ADU <bcp14>SHOULD</bcp14> be protected by a Block Confidentiality Block (BCB) that targets the payload block. Every BCB security context provides authenticated encryption (<xref section="3.8" sectionFormat="of" target="RFC9172"/>), so the BCB both conceals the ADU and protects its integrity.</t>
          </dd>
          <dt>Integrity of the primary block:</dt>
          <dd>
            <t>The BCB's security context <bcp14>SHOULD</bcp14> include the primary block in its additional authenticated data, so that the primary block, which a BCB cannot conceal, is bound to the ADU. The primary block carries the source EID of the bundle, on which response admission depends, and its creation timestamp and lifetime, which bound the exchange.</t>
          </dd>
          <dt>Authentication of the source:</dt>
          <dd>
            <t>Integrity alone does not show who produced the bundle. Where a BCB is keyed so that only the two peers could have produced it, for example with a key shared between them or with key agreement between their static keys, the BCB also authenticates the source of the bundle. Where it is not, for example when the key is agreed using an ephemeral key of the sender's and the recipient's public key alone, anyone who knows the recipient's public key can produce a valid BCB, with any source EID in its primary block. A sender <bcp14>SHOULD</bcp14> then also protect the payload with a Block Integrity Block (BIB) that is signed with a key bound to the bundle's source EID, and that the BCB also encrypts (<xref section="3.9" sectionFormat="of" target="RFC9172"/>). A recipient <bcp14>MUST NOT</bcp14> treat the source of a bundle as authenticated unless one of these conditions holds.</t>
          </dd>
        </dl>
        <t>Without BPSec, an attacker on the path can read requests and responses, including credentials, and can forge responses. A deployment that relies on protection at another layer needs to document that dependency.</t>
      </section>
      <section anchor="admission">
        <name>Response Admission and Cache Poisoning</name>
        <t>A requester accepts a response only for an outstanding exchange, and only from the endpoint to which it sent the request (<xref target="receiving-response"/>). Where the source of the bundle is authenticated, no third party can inject a response. A forged response accepted by a client-side gateway could otherwise be stored in its shared cache and served to every client. For the same reason, the parts of an incremental response are required to share a strong validator (<xref target="incremental"/>).</t>
      </section>
      <section anchor="resolution">
        <name>Resolution Integrity</name>
        <t>Response admission is only as strong as the mapping from authority to responder (<xref target="discovery"/>). An attacker that can alter the mapping can direct requests, and the responses that populate a shared cache, to a responder of its choosing. Mappings obtained from DNS need to be validated with DNSSEC; where that is not possible, mappings need to be configured or pinned.</t>
      </section>
      <section anchor="correlation-security">
        <name>Correlation Identifiers</name>
        <t>Unpredictable correlation identifiers (<xref target="correlation"/>) make blind injection of responses harder where the bundle hop is not protected. They are not a substitute for BPSec.</t>
      </section>
      <section anchor="ssrf">
        <name>Server-Side Request Forgery</name>
        <t>An origin-side gateway fetches whatever a request names, which makes it a means of reaching hosts on its own network. An origin-side gateway <bcp14>SHOULD</bcp14> refuse, unless configured otherwise, to contact private, loopback, and link-local addresses, including cloud metadata services, and <bcp14>SHOULD</bcp14> support restricting the origins it will contact to a configured set. It needs to apply these checks to the addresses that names resolve to, not only to literal addresses in the target URI. A gateway that refuses a request because of the address it would contact responds with 502 (Bad Gateway) and a Proxy-Status field <xref target="RFC9209"/> with the error type "destination_ip_prohibited"; one that refuses it because the origin is not in its configured set responds with 403 (Forbidden) and the error type "http_request_denied".</t>
      </section>
      <section anchor="replay">
        <name>Replay</name>
        <t>BPSec does not itself prevent replay (<xref section="8.2.4" sectionFormat="of" target="RFC9172"/>). A replayed request bundle carrying a request whose method is not idempotent could cause the request to be acted on again. The responder's detection of duplicate requests (<xref target="processing-request"/>) suppresses replays while its records are retained, and a replayed bundle expires when the original does, since its creation timestamp and lifetime are in the primary block, which the BCB authenticates. Together, these bound the window in which a replay can have any effect. The bound does not hold for a bundle whose creation time is zero: its age is carried in the Bundle Age block, which each forwarding node updates and so cannot be protected end to end, and a replaying node can reset it. A requester <bcp14>SHOULD</bcp14> send each request whose method is not idempotent in a bundle with a non-zero creation timestamp, and with a lifetime no longer than the exchange needs.</t>
      </section>
      <section anchor="forged-status-reports">
        <name>Forged Status Reports</name>
        <t>A bundle status report is generated by whichever node deleted the bundle, not by the responder, so a requester cannot check its source against the exchange. A requester that fails an exchange on receiving a deletion status report (<xref target="failure"/>) can be made to fail it early by a forged report. Since the request can still be delivered and acted on, this denies the client its response rather than preventing the request. A requester <bcp14>SHOULD</bcp14> act on a deletion status report only if it is protected by BPSec, for example by a BIB whose source the requester trusts, or else treat it as a hint and wait for the exchange's deadline.</t>
      </section>
      <section anchor="timing">
        <name>Timing Integrity</name>
        <t>The bundle age of a response determines the age that a requester computes for it (<xref target="age"/>), and so how long the response is served. An attacker that could alter it could make a response appear fresher, or more stale, than it is. Where the response bundle has a non-zero creation timestamp, that timestamp is in the primary block, which the BCB authenticates. Where its creation time is zero, the age is taken from the Bundle Age block, which each forwarding node updates and so cannot be protected end to end; a deployment that relies on clockless nodes trusts the nodes on the path to maintain it honestly.</t>
      </section>
      <section anchor="resource-exhaustion">
        <name>Resource Exhaustion</name>
        <t>A small request can elicit a large response, and an incremental response or an event stream can elicit a long sequence of them. Responders need to bound the resources any one request can consume, and both roles need to bound the number of outstanding exchanges, held client connections, and event-stream subscriptions. Requests for bundle status reports add traffic to the bundle network and should be limited accordingly.</t>
      </section>
      <section anchor="privacy">
        <name>Credentials and Privacy</name>
        <t>Authorization and Cookie fields cross the bundle network inside ADUs and need the confidentiality that a BCB provides. Client certificates are verified at the client-side gateway and never forwarded (<xref target="fields"/>). A shared cache does not store responses to requests with Authorization fields unless the origin server permits it (<xref section="3.5" sectionFormat="of" target="RFC9111"/>), and gateways do not collapse requests made with different credentials (<xref target="caching"/>). Via pseudonyms (<xref target="fields"/>) avoid disclosing the topology of gateway deployments. Padding Binary HTTP messages (<xref target="message"/>) can obscure their lengths from an observer when the ADU is encrypted.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-service">
        <name>Well-Known Service Number</name>
        <t>This document requests that IANA register the following entry in the "'ipn' Scheme URI Well-Known Service Numbers for BPv7" registry established by <xref target="RFC9758"/>, assigning a value from the Standards Action range (128-255):</t>
        <table align="left" anchor="iana-service-tab">
          <name>Service Number Registration</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD1</td>
              <td align="left">HTTP over BP</td>
              <td align="left">(this document)</td>
            </tr>
          </tbody>
        </table>
        <aside>
          <t>RFC Editor: please replace TBD1 throughout this document with the value assigned by IANA, and remove this note.</t>
        </aside>
      </section>
      <section anchor="iana-options">
        <name>HTTP over BP Options Registry</name>
        <t>This document requests that IANA create a new registry titled "HTTP over BP Options". Each entry records:</t>
        <dl>
          <dt>Key:</dt>
          <dd>
            <t>An integer. Negative keys denote critical options and non-negative keys elective options (<xref target="options"/>).</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>A short descriptive name.</t>
          </dd>
          <dt>Used in:</dt>
          <dd>
            <t>Requests, responses, or both.</t>
          </dd>
          <dt>Value:</dt>
          <dd>
            <t>The type of the value, in CDDL.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>The specification that defines the option.</t>
          </dd>
        </dl>
        <t>The registration procedures (<xref target="RFC8126"/>) are:</t>
        <table align="left" anchor="iana-options-policy">
          <name>HTTP over BP Options Registration Procedures</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Registration Procedure</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-24 to 23</td>
              <td align="left">Standards Action</td>
            </tr>
            <tr>
              <td align="left">-65536 to -25, and 24 to 65535</td>
              <td align="left">Specification Required</td>
            </tr>
            <tr>
              <td align="left">Less than -65536, and greater than 65535</td>
              <td align="left">Private Use</td>
            </tr>
          </tbody>
        </table>
        <t>The initial contents of the registry are the options in <xref target="tab-options"/>, each with this document as the reference, together with key 0, marked "Reserved".</t>
      </section>
      <section anchor="iana-proxy-status">
        <name>HTTP Proxy Error Type</name>
        <t>This document requests that IANA register the following entry in the "HTTP Proxy Error Types" registry established by <xref target="RFC9209"/>:</t>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t>bp_bundle_deleted</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>The intermediary was notified by the Bundle Protocol that a bundle carrying the request was deleted before it was delivered, for example because its lifetime expired or no route to its destination was available.</t>
          </dd>
          <dt>Extra Parameters:</dt>
          <dd>
            <t>bp-reason: an Integer containing the reason code from the bundle status report (<xref section="6.1.1" sectionFormat="of" target="RFC9171"/>).</t>
          </dd>
          <dt>Recommended HTTP Status Code:</dt>
          <dd>
            <t>504</t>
          </dd>
          <dt>Response Only Generated by Intermediaries:</dt>
          <dd>
            <t>true</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>(this document)</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9111">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="RFC9171">
          <front>
            <title>Bundle Protocol Version 7</title>
            <author fullname="S. Burleigh" initials="S." surname="Burleigh"/>
            <author fullname="K. Fall" initials="K." surname="Fall"/>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document presents a specification for the Bundle Protocol, adapted from the experimental Bundle Protocol specification developed by the Delay-Tolerant Networking Research Group of the Internet Research Task Force and documented in RFC 5050.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9171"/>
          <seriesInfo name="DOI" value="10.17487/RFC9171"/>
        </reference>
        <reference anchor="RFC9172">
          <front>
            <title>Bundle Protocol Security (BPSec)</title>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <author fullname="K. McKeever" initials="K." surname="McKeever"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document defines a security protocol providing data integrity and confidentiality services for the Bundle Protocol (BP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9172"/>
          <seriesInfo name="DOI" value="10.17487/RFC9172"/>
        </reference>
        <reference anchor="RFC9209">
          <front>
            <title>The Proxy-Status HTTP Response Header Field</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P. Sikora" initials="P." surname="Sikora"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document defines the Proxy-Status HTTP response field to convey the details of an intermediary's response handling, including generated errors.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9209"/>
          <seriesInfo name="DOI" value="10.17487/RFC9209"/>
        </reference>
        <reference anchor="RFC9292">
          <front>
            <title>Binary Representation of HTTP Messages</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document defines a binary format for representing HTTP messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9292"/>
          <seriesInfo name="DOI" value="10.17487/RFC9292"/>
        </reference>
        <reference anchor="RFC9758">
          <front>
            <title>Updates to the 'ipn' URI Scheme</title>
            <author fullname="R. Taylor" initials="R." surname="Taylor"/>
            <author fullname="E. Birrane III" initials="E." surname="Birrane III"/>
            <date month="May" year="2025"/>
            <abstract>
              <t>This document updates the specification of the 'ipn' URI scheme previously defined in RFC 6260 and the IANA registries established in RFC 7116. It also updates the rules for the encoding and decoding of these URIs when used as an Endpoint Identifier (EID) in the Bundle Protocol version 7 (BPv7) as defined in RFC 9171. These updates clarify the structure and behavior of the 'ipn' URI scheme, define new encodings of 'ipn' scheme URIs, and establish the registries necessary to manage this scheme.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9758"/>
          <seriesInfo name="DOI" value="10.17487/RFC9758"/>
        </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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3135">
          <front>
            <title>Performance Enhancing Proxies Intended to Mitigate Link-Related Degradations</title>
            <author fullname="J. Border" initials="J." surname="Border"/>
            <author fullname="M. Kojo" initials="M." surname="Kojo"/>
            <author fullname="J. Griner" initials="J." surname="Griner"/>
            <author fullname="G. Montenegro" initials="G." surname="Montenegro"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="June" year="2001"/>
            <abstract>
              <t>This document is a survey of Performance Enhancing Proxies (PEPs) often employed to improve degraded TCP performance caused by characteristics of specific link environments, for example, in satellite, wireless WAN, and wireless LAN environments. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3135"/>
          <seriesInfo name="DOI" value="10.17487/RFC3135"/>
        </reference>
        <reference anchor="RFC4838">
          <front>
            <title>Delay-Tolerant Networking Architecture</title>
            <author fullname="V. Cerf" initials="V." surname="Cerf"/>
            <author fullname="S. Burleigh" initials="S." surname="Burleigh"/>
            <author fullname="A. Hooke" initials="A." surname="Hooke"/>
            <author fullname="L. Torgerson" initials="L." surname="Torgerson"/>
            <author fullname="R. Durst" initials="R." surname="Durst"/>
            <author fullname="K. Scott" initials="K." surname="Scott"/>
            <author fullname="K. Fall" initials="K." surname="Fall"/>
            <author fullname="H. Weiss" initials="H." surname="Weiss"/>
            <date month="April" year="2007"/>
            <abstract>
              <t>This document describes an architecture for delay-tolerant and disruption-tolerant networks, and is an evolution of the architecture originally designed for the Interplanetary Internet, a communication system envisioned to provide Internet-like services across interplanetary distances in support of deep space exploration. This document describes an architecture that addresses a variety of problems with internetworks having operational and performance characteristics that make conventional (Internet-like) networking approaches either unworkable or impractical. We define a message- oriented overlay that exists above the transport (or other) layers of the networks it interconnects. The document presents a motivation for the architecture, an architectural overview, review of state management required for its operation, and a discussion of application design issues. This document represents the consensus of the IRTF DTN research group and has been widely reviewed by that group. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4838"/>
          <seriesInfo name="DOI" value="10.17487/RFC4838"/>
        </reference>
        <reference anchor="RFC5861">
          <front>
            <title>HTTP Cache-Control Extensions for Stale Content</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document defines two independent HTTP Cache-Control extensions that allow control over the use of stale responses by caches. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5861"/>
          <seriesInfo name="DOI" value="10.17487/RFC5861"/>
        </reference>
        <reference anchor="RFC6455">
          <front>
            <title>The WebSocket Protocol</title>
            <author fullname="I. Fette" initials="I." surname="Fette"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model commonly used by web browsers. The protocol consists of an opening handshake followed by basic message framing, layered over TCP. The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or s and long polling). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6455"/>
          <seriesInfo name="DOI" value="10.17487/RFC6455"/>
        </reference>
        <reference anchor="RFC6585">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
        <reference anchor="RFC7240">
          <front>
            <title>Prefer Header for HTTP</title>
            <author fullname="J. Snell" initials="J." surname="Snell"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This specification defines an HTTP header field that can be used by a client to request that certain behaviors be employed by a server while processing a request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7240"/>
          <seriesInfo name="DOI" value="10.17487/RFC7240"/>
        </reference>
        <reference anchor="RFC8075">
          <front>
            <title>Guidelines for Mapping Implementations: HTTP to the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Castellani" initials="A." surname="Castellani"/>
            <author fullname="S. Loreto" initials="S." surname="Loreto"/>
            <author fullname="A. Rahman" initials="A." surname="Rahman"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="E. Dijk" initials="E." surname="Dijk"/>
            <date month="February" year="2017"/>
            <abstract>
              <t>This document provides reference information for implementing a cross-protocol network proxy that performs translation from the HTTP protocol to the Constrained Application Protocol (CoAP). This will enable an HTTP client to access resources on a CoAP server through the proxy. This document describes how an HTTP request is mapped to a CoAP request and how a CoAP response is mapped back to an HTTP response. This includes guidelines for status code, URI, and media type mappings, as well as additional interworking advice.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8075"/>
          <seriesInfo name="DOI" value="10.17487/RFC8075"/>
        </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>
        <reference anchor="RFC8188">
          <front>
            <title>Encrypted Content-Encoding for HTTP</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>This memo introduces a content coding for HTTP that allows message payloads to be encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8188"/>
          <seriesInfo name="DOI" value="10.17487/RFC8188"/>
        </reference>
        <reference anchor="RFC8216">
          <front>
            <title>HTTP Live Streaming</title>
            <author fullname="R. Pantos" initials="R." role="editor" surname="Pantos"/>
            <author fullname="W. May" initials="W." surname="May"/>
            <date month="August" year="2017"/>
            <abstract>
              <t>This document describes a protocol for transferring unbounded streams of multimedia data. It specifies the data format of the files and the actions to be taken by the server (sender) and the clients (receivers) of the streams. It describes version 7 of this protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8216"/>
          <seriesInfo name="DOI" value="10.17487/RFC8216"/>
        </reference>
        <reference anchor="RFC8441">
          <front>
            <title>Bootstrapping WebSockets with HTTP/2</title>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>This document defines a mechanism for running the WebSocket Protocol (RFC 6455) over a single stream of an HTTP/2 connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8441"/>
          <seriesInfo name="DOI" value="10.17487/RFC8441"/>
        </reference>
        <reference anchor="RFC8586">
          <front>
            <title>Loop Detection in Content Delivery Networks (CDNs)</title>
            <author fullname="S. Ludin" initials="S." surname="Ludin"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document defines the CDN-Loop request header field for HTTP. CDN-Loop addresses an operational need that occurs when an HTTP request is intentionally forwarded between Content Delivery Networks (CDNs), but is then accidentally or maliciously re-routed back into the original CDN causing a non-terminating loop. The new header field can be used to identify the error and terminate the loop.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8586"/>
          <seriesInfo name="DOI" value="10.17487/RFC8586"/>
        </reference>
        <reference anchor="RFC9112">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="RFC9113">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="RFC9114">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="RFC9213">
          <front>
            <title>Targeted HTTP Cache Control</title>
            <author fullname="S. Ludin" initials="S." surname="Ludin"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="Y. Wu" initials="Y." surname="Wu"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification defines a convention for HTTP response header fields that allow cache directives to be targeted at specific caches or classes of caches. It also defines one such header field, the CDN-Cache-Control response header field, which is targeted at content delivery network (CDN) caches.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9213"/>
          <seriesInfo name="DOI" value="10.17487/RFC9213"/>
        </reference>
        <reference anchor="RFC9220">
          <front>
            <title>Bootstrapping WebSockets with HTTP/3</title>
            <author fullname="R. Hamilton" initials="R." surname="Hamilton"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The mechanism for running the WebSocket Protocol over a single stream of an HTTP/2 connection is equally applicable to HTTP/3, but the HTTP-version-specific details need to be specified. This document describes how the mechanism is adapted for HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9220"/>
          <seriesInfo name="DOI" value="10.17487/RFC9220"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC9440">
          <front>
            <title>Client-Cert HTTP Header Field</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document describes HTTP extension header fields that allow a TLS terminating reverse proxy (TTRP) to convey the client certificate information of a mutually authenticated TLS connection to the origin server in a common and predictable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9440"/>
          <seriesInfo name="DOI" value="10.17487/RFC9440"/>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="RFC9499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document updates RFC 2308 by clarifying the definitions of "forwarder" and "QNAME". It obsoletes RFC 8499 by adding multiple terms and clarifications. Comprehensive lists of changed and new definitions can be found in Appendices A and B.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="9499"/>
          <seriesInfo name="DOI" value="10.17487/RFC9499"/>
        </reference>
        <reference anchor="RFC9530">
          <front>
            <title>Digest Fields</title>
            <author fullname="R. Polli" initials="R." surname="Polli"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document defines HTTP fields that support integrity digests. The Content-Digest field can be used for the integrity of HTTP message content. The Repr-Digest field can be used for the integrity of HTTP representations. Want-Content-Digest and Want-Repr-Digest can be used to indicate a sender's interest and preferences for receiving the respective Integrity fields.</t>
              <t>This document obsoletes RFC 3230 and the Digest and Want-Digest HTTP fields.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9530"/>
          <seriesInfo name="DOI" value="10.17487/RFC9530"/>
        </reference>
        <reference anchor="I-D.blanchet-dtn-http-over-bp">
          <front>
            <title>Encapsulation of HTTP over Delay-Tolerant Networks(DTN) using the Bundle Protocol</title>
            <author fullname="Marc Blanchet" initials="M." surname="Blanchet">
         </author>
            <date day="28" month="September" year="2025"/>
            <abstract>
              <t>   This document describes the encapsulation of HTTP requests and
   responses in the payload of bundles of the Bundle Protocol for the
   use case of Delay-Tolerant Networks(DTN) such as in space
   communications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-blanchet-dtn-http-over-bp-04"/>
        </reference>
        <reference anchor="I-D.ietf-dtn-bpsec-cose">
          <front>
            <title>Bundle Protocol Security (BPSec) COSE Context</title>
            <author fullname="Brian Sipos" initials="B." surname="Sipos">
              <organization>The Johns Hopkins University Applied Physics Laboratory</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   This document defines a security context suitable for using CBOR
   Object Signing and Encryption (COSE) algorithms within Bundle
   Protocol Security (BPSec) integrity and confidentiality blocks.  A
   profile for COSE, organized by algorithm families, and for public key
   certificates are included for BPSec interoperation.

   This document updates BPSec RFC 9172 by providing Concise Data
   Definition Language (CDDL) rules for extensible security block
   content.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dtn-bpsec-cose-18"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-bp">
          <front>
            <title>Constrained Application Protocol (CoAP) over Bundle Protocol (BP)</title>
            <author fullname="Carles Gomez" initials="C." surname="Gomez">
              <organization>UPC</organization>
            </author>
            <author fullname="Anna Calveras" initials="A." surname="Calveras">
              <organization>UPC</organization>
            </author>
            <date day="28" month="October" year="2026"/>
            <abstract>
              <t>   The Bundle Protocol (BP) was designed to enable end-to-end
   communication in challenged networks.  The Constrained Application
   Protocol (CoAP), which was designed for constrained-node networks,
   may be a suitable application-layer protocol for the scenarios where
   BP is used.  This document specifies how CoAP is carried over BP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-bp-05"/>
        </reference>
        <reference anchor="I-D.ietf-httpapi-idempotency-key-header">
          <front>
            <title>The Idempotency-Key HTTP Header Field</title>
            <author fullname="Jayadeba Jena" initials="J." surname="Jena">
         </author>
            <author fullname="Sanjay Dalal" initials="S." surname="Dalal">
         </author>
            <author fullname="Dmitrii Tishkin" initials="D." surname="Tishkin">
         </author>
            <date day="22" month="October" year="2026"/>
            <abstract>
              <t>   The HTTP Idempotency-Key request header field can be used to make
   non-idempotent HTTP methods such as POST or PATCH fault-tolerant.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-idempotency-key-header-08"/>
        </reference>
        <reference anchor="I-D.ietf-httpapi-ratelimit-headers">
          <front>
            <title>RateLimit header fields for HTTP</title>
            <author fullname="Roberto Polli" initials="R." surname="Polli">
              <organization>Team Digitale, Italian Government</organization>
            </author>
            <author fullname="Alex Martínez Ruiz" initials="A. M." surname="Ruiz">
              <organization>Red Hat</organization>
            </author>
            <author fullname="Darrel Miller" initials="D." surname="Miller">
              <organization>Microsoft</organization>
            </author>
            <date day="23" month="May" year="2026"/>
            <abstract>
              <t>   This document defines the RateLimit-Policy and RateLimit HTTP header
   fields for servers to advertise their quota policies and the current
   service limits, thereby allowing clients to avoid being throttled.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-ratelimit-headers-11"/>
        </reference>
        <reference anchor="I-D.ietf-httpbis-resumable-upload">
          <front>
            <title>Resumable Uploads for HTTP</title>
            <author fullname="Marius Kleidl" initials="M." surname="Kleidl">
              <organization>Transloadit</organization>
            </author>
            <author fullname="Guoye Zhang" initials="G." surname="Zhang">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
              <organization>Apple</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   HTTP data transfers can encounter interruption due to reasons such as
   canceled requests or dropped connections.  If the intended recipient
   can indicate how much of the data was processed prior to
   interruption, a sender can resume data transfer at that point instead
   of attempting to transfer all of the data again.  HTTP range requests
   support this concept of resumable downloads from server to client.
   This document describes a mechanism that supports resumable uploads
   from client to server using HTTP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-resumable-upload-15"/>
        </reference>
        <reference anchor="HTML" target="https://html.spec.whatwg.org/multipage/server-sent-events.html">
          <front>
            <title>HTML Living Standard: Server-sent events</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="FETCH-METADATA" target="https://www.w3.org/TR/fetch-metadata/">
          <front>
            <title>Fetch Metadata Request Headers</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC9173">
          <front>
            <title>Default Security Contexts for Bundle Protocol Security (BPSec)</title>
            <author fullname="E. Birrane, III" initials="E." surname="Birrane, III"/>
            <author fullname="A. White" initials="A." surname="White"/>
            <author fullname="S. Heiner" initials="S." surname="Heiner"/>
            <date month="January" year="2022"/>
            <abstract>
              <t>This document defines default integrity and confidentiality security contexts that can be used with Bundle Protocol Security (BPSec) implementations. These security contexts are intended to be used both for testing the interoperability of BPSec implementations and for providing basic security operations when no other security contexts are defined or otherwise required for a network.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9173"/>
          <seriesInfo name="DOI" value="10.17487/RFC9173"/>
        </reference>
      </references>
    </references>
    <?line 748?>

<section anchor="examples">
      <name>Examples</name>
      <t>This appendix shows one exchange in full. A client-side gateway, with Via pseudonym "gw-a" and endpoint <tt>ipn:977000.1.4096</tt>, forwards a client's request for <tt>https://example.com/status.json</tt> to an origin-side gateway, with pseudonym "gw-b" and endpoint <tt>ipn:977000.2.TBD1</tt>. The path takes 20 minutes in each direction.</t>
      <section anchor="request">
        <name>Request</name>
        <t>The client-side gateway sends the request at 11:40:00 UTC on 23 October 2026. It will wait for the response until 12:40:00, so it gives the request bundle a lifetime of 60 minutes. The request message is:</t>
        <sourcecode type="artwork"><![CDATA[
Method:    GET
Scheme:    https
Authority: example.com
Path:      /status.json
Fields:    accept: application/json
           via: 1.1 gw-a
Content:   (empty)
]]></sourcecode>
        <t>The request ADU, in CBOR extended diagnostic notation (<xref section="G" sectionFormat="of" target="RFC8610"/>), is:</t>
        <sourcecode type="cbor-diag"><![CDATA[
[
  1,                                    / version /
  h'00112233445566778899aabbccddeeff',  / correlation /
  {},                                   / options /
  h'00034745 54056874 7470730b 6578616d
    706c652e 636f6d0c 2f737461 7475732e
    6a736f6e 25066163 63657074 10617070
    6c696361 74696f6e 2f6a736f 6e037669
    6108312e 31206777 2d610000'         / message /
]
]]></sourcecode>
        <t>The 98 bytes of the encoded ADU are:</t>
        <sourcecode type="artwork"><![CDATA[
84015000 11223344 55667788 99aabbcc  ..P.."3DUfw.....
ddeeffa0 584c0003 47455405 68747470  ....XL..GET.http
730b6578 616d706c 652e636f 6d0c2f73  s.example.com./s
74617475 732e6a73 6f6e2506 61636365  tatus.json%.acce
70741061 70706c69 63617469 6f6e2f6a  pt.application/j
736f6e03 76696108 312e3120 67772d61  son.via.1.1 gw-a
0000                                 ..
]]></sourcecode>
      </section>
      <section anchor="response">
        <name>Response</name>
        <t>The request is delivered at 12:00:00. The origin-side gateway appends its own Via entry, forwards the request to the origin server, and receives the response at 12:00:00.250. It appends its Via entry to the response, and sends it at once, in a bundle whose lifetime of 2399.75 seconds makes it expire with the request bundle at 12:40:00. The response message is:</t>
        <sourcecode type="artwork"><![CDATA[
Status:  200
Fields:  date: Fri, 23 Oct 2026 12:00:00 GMT
         cache-control: max-age=3600
         content-type: application/json
         etag: "v42"
         via: 1.1 gw-b
Content: {"status":"ok"}
]]></sourcecode>
        <t>The response ADU is:</t>
        <sourcecode type="cbor-diag"><![CDATA[
[
  1,                                    / version /
  h'00112233445566778899aabbccddeeff',  / correlation /
  {},                                   / options /
  h'0140c840 74046461 74651d46 72692c20
    3233204f 63742032 30323620 31323a30
    303a3030 20474d54 0d636163 68652d63
    6f6e7472 6f6c0c6d 61782d61 67653d33
    3630300c 636f6e74 656e742d 74797065
    10617070 6c696361 74696f6e 2f6a736f
    6e046574 61670522 76343222 03766961
    08312e31 2067772d 620f7b22 73746174
    7573223a 226f6b22 7d00'             / message /
]
]]></sourcecode>
        <t>The 160 bytes of the encoded ADU are:</t>
        <sourcecode type="artwork"><![CDATA[
84015000 11223344 55667788 99aabbcc  ..P.."3DUfw.....
ddeeffa0 588a0140 c8407404 64617465  ....X..@.@t.date
1d467269 2c203233 204f6374 20323032  .Fri, 23 Oct 202
36203132 3a30303a 30302047 4d540d63  6 12:00:00 GMT.c
61636865 2d636f6e 74726f6c 0c6d6178  ache-control.max
2d616765 3d333630 300c636f 6e74656e  -age=3600.conten
742d7479 70651061 70706c69 63617469  t-type.applicati
6f6e2f6a 736f6e04 65746167 05227634  on/json.etag."v4
32220376 69610831 2e312067 772d620f  2".via.1.1 gw-b.
7b227374 61747573 223a226f 6b227d00  {"status":"ok"}.
]]></sourcecode>
      </section>
      <section anchor="example-age">
        <name>Age</name>
        <t>The response is delivered to the client-side gateway at 12:20:00.250. The response carries no Age field, so age_value is 0.</t>
        <t>The client-side gateway's BPA reports the response bundle's age as 1200 seconds. Using it as transit_delay (<xref target="age"/>), the response's age on arrival is 1200 seconds and it remains fresh for a further 2400 seconds.</t>
        <t>Using the response_delay of <xref target="RFC9111"/>, which here is the full round trip of about 2400 seconds, the response's age on arrival would be 2400 seconds, and it would remain fresh for only 1200 seconds. The difference is the 20 minutes the request spent in transit, before the response existed.</t>
      </section>
    </section>
    <section anchor="rationale">
      <name>Design Rationale</name>
      <dl>
        <dt>Why Binary HTTP:</dt>
        <dd>
          <t>Binary HTTP <xref target="RFC9292"/> represents a complete HTTP message independently of any HTTP version or connection, which is exactly what one message per bundle requires. It is compact, already deployed, and designed to be encapsulated.</t>
        </dd>
        <dt>Why an envelope rather than header fields:</dt>
        <dd>
          <t>The correlation identifier and options could have been carried as HTTP fields inside the Binary HTTP message. They are kept in a separate envelope so that no client or origin server can set them, and so that gateways need not strip them before forwarding messages. The envelope can also carry a version outside the structure it versions.</t>
        </dd>
        <dt>Why no timing options:</dt>
        <dd>
          <t>The lifetime of the request bundle bounds the exchange, and the bundle age of the response measures its transit (<xref target="bundle-times"/>). Both are carried by the bundle, determined by the BPA whether or not the nodes have accurate clocks, and, where they come from the primary block, protected with it (<xref target="timing"/>). Repeating them in the ADU would add fields that need clocks and that could disagree with the bundle's own.</t>
        </dd>
        <dt>Why not Oblivious HTTP:</dt>
        <dd>
          <t>Oblivious HTTP also encapsulates Binary HTTP, but adds encryption under a separate key infrastructure. BPSec already protects the bundle hop, using the keys the bundle network provisions.</t>
        </dd>
        <dt>Why no sequence numbers:</dt>
        <dd>
          <t>Every ADU is self-contained, exchanges are matched by identifier, and parts of incremental responses are placed by their Content-Range. Nothing depends on the order of arrival, so there is nothing for sequence numbers to repair.</t>
        </dd>
        <dt>Why gateways rather than tunnels:</dt>
        <dd>
          <t>A gateway can answer requests from its cache, collapse requests, and revalidate cheaply, which are the means by which HTTP copes with an expensive path. A tunnel can do none of these things, and needs the interactive end-to-end connection that a bundle network cannot provide.</t>
        </dd>
      </dl>
    </section>
    <section anchor="open-issues" removeInRFC="true">
      <name>Open Issues</name>
      <ul spacing="normal">
        <li>
          <t>Via received-protocol: which received-protocol an origin-side gateway should record for a request received over BP. Candidates include the client's HTTP version, which is not currently conveyed, or a new protocol name.</t>
        </li>
        <li>
          <t>dtn-scheme endpoints: whether to define a well-known dtn-scheme demux for this service, alongside the ipn service number.</t>
        </li>
        <li>
          <t>Validators for incremental responses: whether an origin-side gateway may supply a strong validator for a response that has none, or whether parts should instead be tied together by an envelope option.</t>
        </li>
        <li>
          <t>Event streams: how a requester joins a stream that is already in progress; how it learns that a responder's subscription has restarted and its segment numbering with it; how long responders retain closed segments, and how they answer requests for discarded ones; how streams answering unsafe requests are segmented; and whether this belongs in a companion document.</t>
        </li>
        <li>
          <t>Unknown critical options in requests: whether 501 (Not Implemented) is the right response.</t>
        </li>
        <li>
          <t>BPSec: whether its use should be required rather than recommended, and whether this document should name a security context that every implementation supports, given that the default security contexts <xref target="RFC9173"/> are expected to be superseded.</t>
        </li>
        <li>
          <t>Age calculation: substituting transit_delay for response_delay (<xref target="age"/>) relaxes a requirement of <xref section="4.2.3" sectionFormat="of" target="RFC9111"/>, which says a cache "<bcp14>MUST</bcp14> interpret this value relative to the time the request was initiated". Whether this document needs to update RFC 9111, or can justify the calculation in some other way, needs review by HTTP caching experts.</t>
        </li>
        <li>
          <t>BPA interface: this document relies on the BPA reporting the bundle age and expiry of each delivered bundle (<xref target="bundle-times"/>), which <xref target="RFC9171"/> does not require of it.</t>
        </li>
        <li>
          <t>Media type: whether ADUs need a media type for storage or for transport outside BP.</t>
        </li>
        <li>
          <t>Naming: the name "HTTP over BP" was used by <xref target="I-D.blanchet-dtn-http-over-bp"/>, which specified a different approach.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9W9+3LbSJY++D+fAivHhu0ZktZdtjzdM/Kluhzt29iqrp2Y
mKgCSUhCmwT4I0DJapfnWX7Psk+25zuXzJMgKLu6ZzdiHTNdFAkkEpknz/U7
54xGo8GgLdt5cZrt/Hh+/j6rr4tV1l4V2bN1NZsX2ftV3dbTer4zyCeTVXGd
XPfs/c5gmrfFZb26Pc2adjYol6vTrF2tm3Z/d/fJ7v5gMKunVb6g8Wer/KId
tfntvF6NZm01umrb5QjjjCbL0e7uoFlPFmXTlHXV3i7phlcvz3/IsntZPm9q
emxZzYplQf9TtTvDbKeYlW29KvM5/nh19oz+U6/o04fzH3YG1XoxKVangxlN
7nQwraumqJp1w1MrBvQSB4N8VeQ06quqLVZV0e4MburVp8tVvV7Sty+KeX77
6EXZrNbLliaUndfzYpVXbfa2aHFhWV3uDD4Vt/R5djoYjLIX52/pf5+9vz7B
f9K1o2+wZvihrPLVrf31PJ9e0UCD66Ja0zSz7Pc9PstknXZ+lm+yP+F2fL/I
yzl9T4v8b2XRXozrFV+er6ZX9DXWvTl99AhX4avyuhjbZY/wxaPJqr5pikd0
/yPcd1m2V+sJ3bkqp59kAx/5zcM1c1rppnWjx2vHcv+4rJO7Ht1JEOOrdkFE
N8jX7VW94iW+WM/nQkofaOzsnG+kR9O086r8W46VOs3O8vktkUV2Xkyvqnpe
X5ZFQxcVsiYredy/5XLVeFovBoOqXi3o7mvegw8/PH98vLdrH58cPtGPT/bC
t/RxL3w8cR/37eP+brht/0n49uToMb1JWV10Hniwd3CkHw8fHzzWj0c0D/14
fHhkFxwfPbaPJ/uHYZ67J/bt47394/DxsQ32eH8vfHt4aOM+pmfEd9qPHw/i
x8PwIvHb/f2wFIf74f0PD+O3Ryfh43H89klYlaMD/vbV6MV4Ms+r6VXRbtCA
XQDi5B8ny6aYjqZ1UyQ/TetVQf+TL7v3YLB8WY7KWbFY1m1RTW9HdGhHV0U+
A3vouXRFdDwvF2WrFzUbV03KZrQqmvUin8yL0Xo5r/MZLvrx/M1r/JeOZWCo
b15nr8trnM2PbV7NcmIW2cdihdcjjtRmBR39ttnhu4zSM/43AlmfZj//eHb+
85/4O+Zl2QVxw0Kekq8uCzpxduBwYMbNspiOb67y9uaSj/NiPW/LZX5ZPGri
Y0fyWD5iNNQPL8+f/zh68/L87MXZ+Vn6Cj8U7fQqe1O0OT0+zz4U/2tNxzz7
UdbmrokfPP+uWd/c3IxvDniu5x8eXeBxo4U+7hGd+tEoyydNu8qn7WBwflU2
GQmU9QKLh3ctL+h4Z3m2oNNOTKBZZHS2smm+Wt1i1Z2oSlly9heaPjjrSfYA
TPthVglnbcbZS2LLcudKX5e2Livct80SEoWESX5dzOnxmEFDz6MHTPg5w4xo
rZ4VM/nNsX2aadPQfmRl1RBZ4sZFPp9nz5+9+0A30Xj1kkamHcyIrFcF89Xw
yCa7IV5q86K5Pium+ZqmQjtKD5CH8+vLshB7W86LlubTFHMclKrNy4qmpbMY
sqiPi1cVxazJqroqsvqCf6MZlCB0SFfa8mI2pEGrqpiC245IANNO0Hi0FBVN
cUW7QnRWTunp/A6yATTQ6qZsZDT6qa6GvKZlm7Us2Vq+vshmEHzDbBYk35Bu
4QfT6so9Mzpx5ZSZPeaYZywsR10JOZZHN8T3q7ac0mKsimxd4UUvi9lTmsL8
lh8ZZz4pqiKn1aVvF1mJRV/O82kxG2fnySIVFRakkQfkyzCdEc2DKO2S3uYm
v6UntvyAYnaJV8ZUdX+U1LD4JLEvr7Kbq5KIa10t6hkIeiZDT+dY3Ibfmhb6
sqwyOcQN9nWxrvBcoqDpqm4aWktZH2hLGe15Q8rIqGIp4ydJw01bUGXyCDoz
nSfMyhXt8fxWXj6cuVnRTFflhF7oqr6JrwoSlAFFpaFtpeUjkVvhJxLc9IpF
ldHbVqCVcin7Ma/pUnp2CSWMeC5x6DZQhhE5rdtNMZ+PPlX1TZWVy8pILBMt
T96aLr8siU/cMgMIB6lmKmrGwkkW5YzWfzC4l5Hat6pna6bif4ivGNsQcsc6
fJPTfPmiesPXr6eeQ73foFm9cm/369d/iH6/m6PRXd9kXDIp0mowKRpGuA3f
gPk4WstYZhCdttmDsxc/PZRD0GGUfXyQHwHVix6xlSfy9MPMmS+WbRPe8MGX
L3br168Px9nb2jEu4oct6f8Lthka3FERPTUtzlOzpAXlV0mPKy1jymQrWnEh
3eWqABOkN8YMiExp/DrhXI5r6TFdTUraOhqPeR5zXmK8dNO05scEypPrMZ85
zrlnJPQFc1NiMp+FMoY0EIgpdy9LxH9W3RJ90fgzmXg4r0p5OK+kGcwSImG2
QD/QctyIUUhzoXMMbo6fqrqVTeFhme/Q0ck/NW7oV0TUX74oTUzKedne0p5G
LoLXWjfCH1NRhJcGjylblmJE/ir8mMjmsNqYueFs37uXfZyCRr7ca/Dfr1uP
NBsSGEFUcHssUaeeYD7iCcE3ICW5nAjpqd6/XNV0tNaY1eRWGXhuK+eYEsiT
iCBskJxOGjEOQKPiGEzn6xl4S5T1PCGc+yXzKiIQuorYKr0RHZVbOcTX/H5M
zTzT4nMLI3mGueIKmi9mVcp9Ik0u1+UsB8WDqQUmzo8jUmYRsCE+RcpsyjDi
98UFTcY4P03BRsS56+7EZF3OZ6BZWhHi17hDN8fkE1HYimkYO59XIoAu6vm8
vsHVF8QEVZDRytTrltkHzh1v/dNsUTeyavmcFmVGMwMl0uLRPoVn4u2G2Yu3
H5kDkPHemcXQtpQo9xaHIIo648H0ai9YSGI8E6Q4Lnbt6eA0e67fr5hb5Xrd
iOesl2FecgzW+ZyIDtyHyJLvwNB0XHkvREgWszKHs2WC96ouyss1GAzWihk2
UcrnW+Y+vJvhJAtZkyZdz9dtMQI5qyrORPNROEV2MN4f7+PpahAyEYELqKLC
C0aPJiKp52zXYOYwynnOokPwKvApnc3oQne69Y2HIqM/51BO5VA3xCDI5KIB
/kbToMf4WR3bjMh+FJr6WMx14d0Zw3qzpkabxpSyqsFG1D4hzmPzevnqhbDR
eDyVm9uSQs2FTjRRdVmGktde85xUB0lfBZwYBN5m+hIfVVMhOapnmwTYzAQ7
WcZfv4I/kr4rXJ944yV4mqre7tgKLyA23qyJkCKbvMp5uRdF0dK6/DE7E25Z
sfi1Qwex/pnomzX1Wkkd/CP7+Jfnz0aTvGGTQMccD76cEpu5IC56NlOPnEr6
ZT7FOi5rYudM3z/zKXGqmhF1Tne2zdCz8ZUecLxbGMqLsyVpL0M+usRrW2ih
vLg4OTPSZepbvMw4+5MdRdqt64IPT7miK6ZlIwwEBJWc9PhuzWl2uHeQPXhO
lhBW5ryus9c4Bw9lqke79KPt2k9Vfg0fGWn7D2XUDwVpmKOzC3B4p5w9zQ73
n2QPMNgb7JGayY3qenDZ4CI8gNRCGm5BVguR1jxQwtEJKOHf1zUpTLy6UD+V
KPMZkUZbYo+CAPxAa/AaboqMpNqcKerbrgx6BG1pc0scbFVX9VqEAamJpDbi
JcM+es6FSeTNJ96K3N/LAqyBNifT+vU90QydQjtVI776V3lDuKq+foU1x15e
0pSrJr+IT+QhiJnrbJSz0LYWFxdEt8Qcjdm8cr6cP9Pu8/v3vX6/0weTYDOy
vAYPnmPvM3HiNGCxdeb8zCRXi2VjW68un+wnvRorwtTVeXifg0jOuXL/CyL9
6jLRg3BE6O2aQiUODrudJdq0l7ScbT2ChtYU0zWYGXO71x8ztpwq1ojV4Ayi
ilgou+JZ/30TjoAJelqbaZuqOkMc0itW9mjbowpJPyzzpglyYFMaqiXzRo2E
j+UlzYnVI6Xw/T3YC8SKCygUULTjQ1+SWnO7BHfSczl6CSsEWy6mwN7jx3S3
TpkPfjQVX5SX0Pd/sHOg3sV4PSsHkJ6XWDdaTfjdmdeTDTjnbYQCYO+EhX3X
NbflUtNxaPnCCjBxEFMXS4mHHj3X68WIZoZu3GIPlHDOkhevm1x+4V9hf+9A
XoHpVHRjqAZB23SDT+s1nYFJlLjM5v1LkTJEwukpUdxFWbHStWZ9RE4PyYd5
cdGK9nKxxr4F4QFpy9ol7mL1Awv0sbhciOeHv1J1utFh1QJ4Dd9DvFm2cn/v
mN6LDAp4exoiE5ks+9JW3o1QqPQwxdMkyzIntmDsIp/lyzZXK+cdk643QJdq
hAtHq8/eB71OdcPVGtqWWExKjz1OrSFWyOxcM5loI9zB9z5o8Pogf1QboY0j
jbkoVJnDi2E+uii7J0c4HXz07To27m9qopY1HcP5nJXr5+/evn35/Jyk1c/F
5GM9/VToKWAfW3zfqP6V0IQr0R5zphcyqQM3iUec5S5Muma9xDvTmxL/oOWx
P0XzuocjCptDVHAa4pwZECItt1D2i4yYbXbDas7Om58+niM+h/9mb9/x5w8v
//2nVx9evsDnjz+evX4dPgz0io8/vvvp9Yv4Kd75/N2bNy/fvpCb6dss+Wqw
8+bsP3ZkPXbevT9/9e7t2esdenVaDW+D4E2J5DrWe94MjB/D0MqePX//f//v
vUPaof+Dtmh/bw/eCPnj8d7JIYiYeJmuPrwx8iftw+2AdrLI4dfK4NMgZack
iw30TCfkCm4s2Di0mv/0n1iZ/zrN/mUyXe4d/lG/wAsnX9qaJV/ymm1+s3Gz
LGLPVz2PCauZfN9Z6XS+Z/+R/G3r7r78l38l4i2y0d7jf/3joGsQrhtVdyHI
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
BZ2sVYGEW8qoC1mLKNHekghRridzmbCsPzb9Vju6c9SjueuWaR4qQWWhe8jz
Z5YHS+qbr/oshyOhVkg97d2sh4stXl4xPcMJe9EtElYUScdY0ytjTQgFijHg
NjU5Pd36mDRDk+vWv9K2TllTp734k5QxSbDcmnb2FJvo0Q7yLhPUyqqaEaNm
mwG5m5BX+LNGC1jwDVn4t20+/cQ+z2iuqGN4tlXXjmWyErw/46HFFXkZXUxs
3ztnh1re5txwkouh7uIwZh9CFF9pXFL4DKwsH80Hxj2wIu4CzaDZ91xJVXJ1
YiHTTvVKtjQTP0DQ+7eUpDVw1/w2Ru96G9E5zE5I+O8pwAtC+Dkov31H3AyP
sOtDaKskylcz1krkVJUVV9FPu5B1qs7q+5rU7rO+uvVoJyFoq6cxSRwKOcp8
SnwtWmnIECLDUrlQVRau1SQ1HXrrE+WrUOpf7KwrxiP0VuLyZfFi9eOmnq+Z
suKJR/Vj+5o1xQ0pVlpSRWNP0lbHC7JW2K/AAaigNbe+Cl5HheZWL+GMae1h
sCmrg2hjSiQKjpxw6LptO4KLc1kvGVfaSd8adnthdUogjLM38jB6v4kUYZNX
efH2Y3CFTwpbV2OB9OvHl8+f+h612laCTMCmZA/4wgZ2w7ggBcARZPgFfK0r
JvcqFDLhUE78ZeS8FT9VS7i5pi1H4fpr0TU9TTUZYUkyh5Xav0b1OK7nVc7V
u6LV6Yy5MtS6VJMEOtNtaAyfc+0MssDW2rCImar1moBxNPqIE2WA/h9wBrlx
Mnfn2Vq64wLhfy64prp+dPuzC8KUpgVbiIgPRGOf/W8l+8klNygEnGJa4J2t
h8QhOjR54vewDWlZ7PvXkIhkAA45sIQ0EnObVZ9GgjUilXalDQic1JjXa+So
tjkUW2YdyLNMMr7MSENBGdQTMCPQnBzdtkdaUyZMGA3LkFYQZIi0VVLZiHrd
ATgd5qjBTfb0MJvgWjVDRVjM+ayTScOKUrxJQ3axIIqHKW74mTWYoqEh5fA6
WDS37a3+bg+0L5ff6412TTR+KZe/WK5LMdt5GvNMbeJlnLFzYFkTIM1jTda+
65MHYoSOwKSc0ZF9GFhbj3+cF+gXuqrUWCA4+RK+afBufKDDI6Z70Pk1eLpc
SUKzXJZWaPSJY07xWkpl2k6Qy7Ui+M72RyIw4xKlcfFQ5JZhUZ3WJPcbDc8q
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
ZvD/APW/V9u7JQEA

-->

</rfc>
