<?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.6.25 (Ruby 3.1.3) -->
<?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-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title>HTTP Availability Hints</title>
    <seriesInfo name="Internet-Draft" value="draft-nottingham-http-availability-hints-00"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization/>
      <address>
        <postal>
          <postalLine>Prahran</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>
    <date/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <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>
    <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. However, 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 have three availabilty hints added to it:</t>
      <sourcecode type="http-message-new"><![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.</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 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>
      </section>
    </section>
    <section anchor="define">
      <name>Defining Availability Hints</name>
      <t>The specification for 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>An availability hint specification needs to convey the following information:</t>
      <ol spacing="normal" type="1"><li>The definition of a response header field that describes the available responses along that axis of content negotiation.</li>
        <li>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"/>).</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="publish">
      <name>Publishing Availability Hints</name>
      <t>TBD - advice to sites about how to publish / use availability hints</t>
    </section>
    <section anchor="process">
      <name>Calculating Cache Keys with Availability Hints</name>
      <t>When 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 the model there is defined in terms of whether the header fields from two requests match, availability hints invoke a different processing model; the set of stored responses that can be used to satisfy a presented request is found by:</t>
      <ol spacing="normal" type="1"><li>Determine the Vary header field and availability hints present for the presented URL. They <bcp14>SHOULD</bcp14> be obtained from the most recently obtained response for that URL, although they <bcp14>MAY</bcp14> be obtained from any fresh response for that URL (per <xref section="4.2" sectionFormat="of" target="HTTP-CACHING"/>).</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 availability hint.
          </t>
          <ol spacing="normal" type="1"><li>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"/>.</li>
          </ol>
        </li>
        <li>Return the intersection of the results of (2).</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>
    </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="content-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-new"><![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="content-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-new"><![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="content-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-new"><![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">
        <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-new"><![CDATA[
Vary: Cookie
Cookie-Indices: id, sid
]]></sourcecode>
        <t>Cookie-Indicies 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 cookie name whose value is to be considered when selecting responses.</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>Let available_responses be an empty set.</li>
          <li>For each stored_response in stored_responses:</li>
          <li>
            <t>For each cookie_index in Cookie-Indicies:
            </t>
            <ol spacing="normal" type="1"><li>Let presented_value be the value of the cookie with the name cookie_index in presented_request. If a cookie with the name cookie_index is not present in presented_request, let presented_value be a null value.</li>
              <li>Let stored_value be the value of the cookie with the name cookie_index in stored_response. If a cookie with the name cookie_index is not present in stored_response, let stored_value be a null value.</li>
              <li>If presented_value does not equal stored_value, continue to the next stored_response.</li>
            </ol>
          </li>
          <li>Add stored_response to available_responses.</li>
          <li>Return available_responses.</li>
        </ol>
        <t>Note that this algorithm requires storing the cookies from the associated request with each response.</t>
      </section>
      <section anchor="device-pixel-ratio">
        <name>Device Pixel Ratio</name>
        <t>TBD</t>
        <ul empty="true">
          <li>
            <t>Avail-DPR:</t>
          </li>
        </ul>
      </section>
      <section anchor="downlink">
        <name>Downlink</name>
        <t>TBD</t>
        <ul empty="true">
          <li>
            <t>Avail-Downlink: (0 1), (1 50);d, (50 max)</t>
          </li>
        </ul>
      </section>
      <section anchor="width">
        <name>Width</name>
        <t>TBD</t>
        <ul empty="true">
          <li>
            <t>Avail-Width: (0 640), (641 1024);d, (1025 max)</t>
          </li>
        </ul>
      </section>
      <section anchor="rtt">
        <name>RTT</name>
        <t>TBD</t>
      </section>
      <section anchor="ect">
        <name>ECT</name>
        <ul empty="true">
          <li>
            <t>Avail-ECT: (slow-2g 2g 3g), (4g);d</t>
          </li>
        </ul>
        <t>TBD</t>
      </section>
      <section anchor="save-data">
        <name>Save-Data</name>
        <t>TBD</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
              <organization/>
            </author>
            <date month="February" year="2021"/>
            <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 that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <reference anchor="RFC6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth">
              <organization/>
            </author>
            <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>
