<?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.29 (Ruby 3.4.4) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nottingham-http-availability-hints-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title>HTTP Availability Hints</title>
    <seriesInfo name="Internet-Draft" value="draft-nottingham-http-availability-hints-02"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization/>
      <address>
        <postal>
          <postalLine>Melbourne</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>
    <date/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 38?>

<t>This specification defines availability hints, a new class of HTTP responses headers that augment the information in the Vary header field.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-nottingham-http-availability-hints/"/>.
      </t>
      <t>
         information can be found at <eref target="https://mnot.github.io/I-D/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mnot/I-D/labels/availability-hints"/>.</t>
    </note>
  </front>
  <middle>
    <?line 42?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The HTTP Vary header field (<xref section="12.5.5" sectionFormat="of" target="HTTP"/>) allows an origin server to describe what aspects of requests affect the content of its responses. This information is useful in many ways: most prominently, downstream caches can use it to select the correct stored response for a given request (<xref section="4.1" sectionFormat="of" target="HTTP-CACHING"/>).</t>
      <t>However, the information conveyed by Vary is limited. If the request headers enumerated in it are considered as a n-dimensional space with each field representing an axis, this response header:</t>
      <sourcecode type="http-message"><![CDATA[
Vary: Accept-Encoding, Accept-Language, ECT
]]></sourcecode>
      <t>indicates that there is a three-dimensional space of potential responses that could be sent, but nothing more is conveyed. The number and nature of the entries on each axis are not available, leaving caches and other downstream consumers none the wiser as to how broad this space is, or how to navigate it.</t>
      <t>This design makes using Vary difficult. A cache doesn't have enough information available to decide whether one of its stored responses is the best to satisfy a given request in all but the most simple circumstances.</t>
      <t>For example, if a request indicates that the client prefers responses in the French language, but will also accept English, and the cache has a stored English response, what is the appropriate action? Should it serve the English response, or should it make a request to the server for a French response and hope that one might be available -- adding significant latency if it is not?</t>
      <t>This specification defines a new type of HTTP header field -- an <em>availability hint</em> -- that augments the information on a single axis of content negotiation, by describing the selection of responses that a server has available along that axis. So, our example above could have three availability hints added to it:</t>
      <sourcecode type="http-message"><![CDATA[
Vary: Accept-Encoding, Accept-Language, ECT
Avail-Encoding: gzip, br
Avail-Language: fr, en;d
Avail-ECT: ("slow-2g" "2g" "3g"), ("4g");d
]]></sourcecode>
      <t>This says that there are two encodings available -- gzip and brotli -- beyond the mandatory "identity" encoding; that both French and English are available, but English is the default; and that there are two different representations available depending on the Effective Connection Type that the client advertises, with "4g" being the default. (note that because it it not yet standardised, this specification does not define the Avail-ECT header field; it is only used as an example above).</t>
      <t>Caches and other clients can use this information to determine when a request can be satisfied by a stored response, and what other options might be available. Using the example above, we can know that the response to a request an ECT of "2g" can also be used for a request with "3g".</t>
      <t>Availability hints have some limitations. While a server's preferences along a single axis of negotiation can be conveyed by the corresponding availability hint, its relative preferences between multiple axes are not. In the example above, it isn't possible to know whether the server prefers that downstream caches and clients use the brotli-encoded French version over the gzip-encoded English version.</t>
      <t>Likewise, it is't possible to convey "holes" in the dimensional space described by Vary. For example, a gzip-encoded French response may not be available from the server. This specification does not attempt to address this shortcoming.</t>
      <t>Availability hints do not specify exactly how caches should behave in all circumstances. Because they operate as an optimisation, they often have different behaviours based upon the specific requirements of their deployment. Availability hints are designed to better inform their operation, not constrain it.</t>
      <t>Finally, availability hints need to be defined for each axis of content negotiation in use, and the recipient (such as a cache) needs to understand that type of availability hint. If either condition is not true, that axis of negotiation will fall back to the behaviour specified by Vary.</t>
      <t><xref target="define"/> describes how availability hints are defined. <xref target="process"/> specifies how availability hints are processed, with respect to the Vary header field. <xref target="definitions"/> defines a number of availability hints for existing HTTP content negotiation mechanisms.</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="define">
      <name>Defining Availability Hints</name>
      <t>An availability hint applies to a single axis of HTTP proactive content negotiation; for example, that enabled by the <tt>Accept-Encoding</tt> request header field.</t>
      <t>A specification for an availability hint needs to convey the following information:</t>
      <ol spacing="normal" type="1"><li>
          <t>The definition of a response header field that describes the available responses along that axis of content negotiation. By convention, these header fields typically begin with "Avail-".</t>
        </li>
        <li>
          <t>An algorithm or guidelines for using that information to determine whether a stored response can be selected for a presented request (per <xref section="4.1" sectionFormat="of" target="HTTP-CACHING"/>).</t>
        </li>
      </ol>
      <t>The response header field should be defined as a Structured Field <xref target="STRUCTURED-FIELDS"/>.</t>
      <t>It is recommended that the selection algorithm operate solely using information in the stored responses and presented request, if possible. If the selection algorithm can return multiple available responses, they should indicate an order of preference.</t>
      <t>Either the response header field or the algorithm should indicate which of the available responses is the default -- i.e., which is used if none match.</t>
    </section>
    <section anchor="process">
      <name>Calculating Cache Keys with Availability Hints</name>
      <t>When a cache is presented with a response that has both a Vary header field and one or more availability hints, this specification augments the process defined in <xref section="4.1" sectionFormat="of" target="HTTP-CACHING"/>.</t>
      <t>While Vary processing is defined in terms of whether the header fields from two requests match, availability hints invoke a different processing model. When they are present, the set of stored responses that can be used to satisfy a presented request is found by following these steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>Determine the Vary header field and availability hints present for the requested URL. They <bcp14>SHOULD</bcp14> be obtained from the most recently obtained response for that URL (per <xref section="4" sectionFormat="of" target="HTTP-CACHING"/>, but without applying the Vary header field per <xref section="4.1" sectionFormat="of" target="HTTP-CACHING"/>), although they <bcp14>MAY</bcp14> be obtained from any response allowed to be used for that URL.</t>
        </li>
        <li>
          <t>For each content negotiation axis in the Vary header field, determine which stored responses can be selected by running the corresponding selection algorithm, as defined by the associated availability hint.
          </t>
          <ol spacing="normal" type="1"><li>
              <t>If an axis of content negotiation is not recognised or implemented by the cache, fall back to selecting available responses for that axis using the rules described in <xref section="4.1" sectionFormat="of" target="HTTP-CACHING"/>.</t>
            </li>
          </ol>
        </li>
        <li>
          <t>Return the intersection of the results of (2).</t>
        </li>
      </ol>
      <t>This specification does not define how to select the most appropriate response when more than one is returned, but it is <bcp14>RECOMMENDED</bcp14> that client preferences be observed when expressed.</t>
      <t>If a received availability hint does not conform to the data structure defined in its specification (for example, a Structured Fields List of Strings is anticipated, but one item in the List is an Integer), that field <bcp14>SHOULD</bcp14> be ignored (with the implication that processing for that axis of content negotiation will fall back to Vary behavior). Note that unrecognised Parameters on Structured Fields are ignored and therefore do not trigger this fallback, unless explicitly specified otherwise.</t>
    </section>
    <section anchor="definitions">
      <name>Availability Hint Definitions</name>
      <t>The following subsections define availability hints for a selection of existing content negotiation mechanisms.</t>
      <section anchor="avail-encoding">
        <name>Content Encoding</name>
        <t>The Avail-Encoding response header field is the availability hint for content negotiation using the Accept-Encoding request header field defined in <xref section="12.5.3" sectionFormat="of" target="HTTP"/>. For example:</t>
        <sourcecode type="http-message"><![CDATA[
Vary: Accept-Encoding
Avail-Encoding: gzip, br
]]></sourcecode>
        <t>Avail-Encoding is a Structured Field, whose value is a List (<xref section="3.1" sectionFormat="of" target="STRUCTURED-FIELDS"/>) of Tokens (<xref section="3.3.4" sectionFormat="of" target="STRUCTURED-FIELDS"/>). Each list item indicates a content-coding that is available for the resource. Additionally, the "identity" encoding is always considered to be available, and is the default encoding.</t>
        <t>The selection algorithm for this axis of content negotiation is described in <xref section="12.5.3" sectionFormat="of" target="HTTP"/>.</t>
      </section>
      <section anchor="avail-format">
        <name>Content Format</name>
        <t>The Avail-Format response header field is the availability hint for content negotiation using the Accept request header field defined in <xref section="12.5.1" sectionFormat="of" target="HTTP"/>. For example:</t>
        <sourcecode type="http-message"><![CDATA[
Vary: Accept
Avail-Format: image/png, image/gif;d
]]></sourcecode>
        <t>Avail-Format is a Structured Field, whose value is a List (<xref section="3.1" sectionFormat="of" target="STRUCTURED-FIELDS"/>) of Tokens (<xref section="3.3.4" sectionFormat="of" target="STRUCTURED-FIELDS"/>). Each list item indicates a media type ("type/subtype") that is available for the resource.</t>
        <t>A single member of the List <bcp14>MAY</bcp14> have the "d" parameter, which indicates that member is the default format.</t>
        <t>The selection algorithm for this axis of content negotiation is described in <xref section="12.5.1" sectionFormat="of" target="HTTP"/>.</t>
      </section>
      <section anchor="avail-language">
        <name>Content Language</name>
        <t>The Avail-Language response header field is the availability hint for content negotiation using the Accept-Language request header field defined in <xref section="12.5.4" sectionFormat="of" target="HTTP"/>. For example:</t>
        <sourcecode type="http-message"><![CDATA[
Vary: Accept-Language
Avail-Language: en-uk, en-us;d, fr, de
]]></sourcecode>
        <t>Avail-Format is a Structured Field, whose value is a List (<xref section="3.1" sectionFormat="of" target="STRUCTURED-FIELDS"/>) of Tokens (<xref section="3.3.4" sectionFormat="of" target="STRUCTURED-FIELDS"/>). Each list item indicates a language tag that is available for the resource.</t>
        <t>A single member of the List <bcp14>MAY</bcp14> have the "d" parameter, which indicates that member is the default language.</t>
        <t>The selection algorithm for this axis of content negotiation is described in <xref section="12.5.4" sectionFormat="of" target="HTTP"/>.</t>
      </section>
      <section anchor="cookie-indices">
        <name>Cookie</name>
        <t>The Cookie-Indices response header field is the availability hint for content negotiation using the Cookie request header field defined in <xref target="RFC6265"/>. For example:</t>
        <sourcecode type="http-message"><![CDATA[
Vary: Cookie
Cookie-Indices: "id", "sid"
]]></sourcecode>
        <t>Cookie-Indices is a Structured Field, whose value is a List (<xref section="3.1" sectionFormat="of" target="STRUCTURED-FIELDS"/>) of Strings (<xref section="3.3.3" sectionFormat="of" target="STRUCTURED-FIELDS"/>). Each list item indicates a cookie name whose value is to be considered when selecting responses. Unlisted cookies are, by implication, ignored for that purpose.</t>
        <t>The selection algorithm for Cookie-Indices, given a set of stored_responses a presented_request, and the value of Cookie-Indices:</t>
        <ol spacing="normal" type="1"><li>
            <t>Let available_responses be an empty set.</t>
          </li>
          <li>
            <t>For each stored_response in stored_responses:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>For each cookie_index in Cookie-Indices:
                </t>
                <ol spacing="normal" type="1"><li>
                    <t>Let presented_values be a list of the values of the cookies with the name cookie_index in presented_request, lexicographically sorted. If no cookie with the name cookie_index is present in presented_request, let presented_values be an empty list.</t>
                  </li>
                  <li>
                    <t>Let stored_values be a list of the values of the cookies with the name cookie_index in stored_response, lexicographically sorted. If no cookie with the name cookie_index is present in stored_response, let stored_values be an empty list.</t>
                  </li>
                  <li>
                    <t>If presented_values does not equal stored_values, continue to the next stored_response.</t>
                  </li>
                </ol>
              </li>
              <li>
                <t>Add stored_response to available_responses.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Return available_responses.</t>
          </li>
        </ol>
        <t>Note that this algorithm requires storing the cookies from the associated request with each response.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is asked to update the "Hypertext Transfer Protocol (HTTP) Field Name Registry" registry
according as follows:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Field Name</th>
            <th align="left">Status</th>
            <th align="left">Structured Type</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Avail-Encoding</td>
            <td align="left">permanent</td>
            <td align="left">List</td>
            <td align="left">
              <xref target="avail-encoding"/></td>
          </tr>
          <tr>
            <td align="left">Avail-Format</td>
            <td align="left">permanent</td>
            <td align="left">List</td>
            <td align="left">
              <xref target="avail-format"/></td>
          </tr>
          <tr>
            <td align="left">Avail-Language</td>
            <td align="left">permanent</td>
            <td align="left">List</td>
            <td align="left">
              <xref target="avail-language"/></td>
          </tr>
          <tr>
            <td align="left">Cookie-Indices</td>
            <td align="left">permanent</td>
            <td align="left">List</td>
            <td align="left">
              <xref target="cookie-indices"/></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Availability hints reveal information about the state of the server, and therefore could help an attacker understand better how to bypass defenses. For example, Cookie-Indices reveals information about what cookies might affect the content of responses.</t>
      <t>Recipients of availability hints should not assume that the information within them are complete or correct.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP">
          <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="HTTP-CACHING">
          <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="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
              <t>This document obsoletes RFC 8941.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </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="RFC6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol. Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet. This document obsoletes RFC 2965. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
