<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.8 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-hurst-quic-http-data-offset-frame-01" category="exp">

  <front>
    <title abbrev="HTTP/3 DATA_WITH_OFFSET frame">An Offset Extension Frame For HTTP/3 Data</title>

    <author initials="S." surname="Hurst" fullname="Sam Hurst">
      <organization>BBC Research &amp; Development</organization>
      <address>
        <email>sam.hurst@bbc.co.uk</email>
      </address>
    </author>

    <date />

    <area>General</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document specifies an optional extension frame type for HTTP/3 that extends the functionality
of the <spanx style="verb">DATA</spanx> frame type to include an offset for the HTTP message payload. This is useful in
situations where the HTTP/3 exchange is taking place over an unreliable transport mechanism.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>HTTP/3 <xref target="QUIC-HTTP"/> supports the transfer of HTTP semantics over the QUIC transport protocol
<xref target="RFC9000"/>. In a conventional HTTP/3 message exchange, messages consist of a header field
section sent as a single <spanx style="verb">HEADERS</spanx> frame, an optional HTTP message payload sent as a series of
<spanx style="verb">DATA</spanx> frames, followed optionally by a trailer field section sent as a single <spanx style="verb">HEADERS</spanx> frame. Each
<spanx style="verb">DATA</spanx> frame does not describe its position within the HTTP message payload; rather this is
calculated from the position within the QUIC stream minus the overhead from HTTP/3 frame headers
and the contents of the header field section.</t>

<t>In the case where the message exchange is taking place across a partially reliable or unreliable
profile of <xref target="RFC9000"/>, packet loss could result in a lack of synchronisation in the receiver
between the perceived HTTP/3 <spanx style="verb">DATA</spanx> frame offset and the QUIC <spanx style="verb">STREAM</spanx> frame offset, potentially
resulting in a corrupt HTTP representation at the receiver.</t>

<t>In addition, there are other use cases, such as HTTP multipart range requests, where the HTTP/3
payload offset has no direct mapping to the value calculated by the method described above.</t>

<t>This document introduces an extension frame type <spanx style="verb">DATA_WITH_OFFSET</spanx> which can be used to explicitly
signal the offset in the original representation of the data being conveyed within the frame.</t>

</section>
<section anchor="conventions-and-terminology" title="Conventions and Terminology">

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

<t>This document uses the variable-length integer encoding from <xref target="RFC9000"/>. The packet and
frame diagrams in this document use the bespoke format specified in <xref target="RFC9000"/>.</t>

</section>
<section anchor="http3-data-offset-frame" title="DATA_WITH_OFFSET Extension Frame">

<t>Based on the <spanx style="verb">DATA</spanx> frame defined in <xref target="QUIC-HTTP"/>, the <spanx style="verb">DATA_WITH_OFFSET</spanx> frame conveys
arbitrary, variable-length sequences of bytes at a defined offset of an HTTP representation. By
carrying an explicit payload offset in the HTTP/3 frame header, the HTTP message payload offset
is decoupled from the QUIC <spanx style="verb">STREAM</spanx> frame header offset value. The additional payload offset
field takes the form of a variable-length integer, as shown in <xref target="fig-data-with-offset"/> below.</t>

<figure title="DATA_WITH_OFFSET Frame" anchor="fig-data-with-offset"><artwork type="drawing"><![CDATA[
DATA_WITH_OFFSET Frame {
  Type (i) = 0xd00,
  Length (i),
  Offset (i),
  Data (..),
}
]]></artwork></figure>

<t>If its peer has indicated support for the <spanx style="verb">DATA_WITH_OFFSET</spanx> extension frame type (as described in
<xref target="data-with-offset-settings"/> below) a sender MAY choose to use either <spanx style="verb">DATA</spanx> frames or
<spanx style="verb">DATA_WITH_OFFSET</spanx> frames to transmit an HTTP representation. Senders MUST NOT mix the use of
<spanx style="verb">DATA</spanx> and <spanx style="verb">DATA_WITH_OFFSET</spanx> frames on the same QUIC stream (i.e. in the same HTTP message).</t>

<t><list style='empty'>
  <t><spanx style="strong">Author’s Note:</spanx> The author welcomes comments about relaxation of the requirement to not mix the
usage of <spanx style="verb">DATA</spanx> and <spanx style="verb">DATA_WITH_OFFSET</spanx> frames in the same HTTP message.</t>
</list></t>

<t><xref target="QUIC-HTTP"/> defines three stream types: control stream, request stream and push stream. The
<spanx style="verb">DATA_WITH_OFFSET</spanx> frame is only permitted to appear on request streams and push streams. A
<spanx style="verb">DATA_WITH_OFFSET</spanx> frame MUST NOT appear on control streams. If a <spanx style="verb">DATA_WITH_OFFSET</spanx> frame is
received on a control stream, the recipient MUST respond with a connection error of type
<spanx style="verb">H3_FRAME_UNEXPECTED</spanx>, as described in <xref target="QUIC-HTTP"/>.</t>

<t>The purpose of the <spanx style="verb">DATA_WITH_OFFSET</spanx> frame is only to assist in locating a particular slice of data
carried as part of an HTTP message payload, and not as a means to send data out of order. Senders
MUST send data in order, i.e. with increasing values in the Offset field. In cases where the
underlying transport does not guarantee in-order delivery of HTTP/3 frames, the receiver MUST be
prepared to deal with out-of-order reception of <spanx style="verb">DATA_WITH_OFFSET</spanx> frames.</t>

</section>
<section anchor="realising-http-multipart-range-responses-with-http3-binary-framing" title="Realising HTTP Multipart Range Responses With HTTP/3 Binary Framing">

<t>HTTP Range Requests, described in <xref target="HTTP-SEMANTICS"/>, is an optional feature of HTTP that allows a
client to request transfer of one or more subranges of a given representation. Despite the move to
binary framing for HTTP in <xref target="RFC7540"/> and subsequently <xref target="QUIC-HTTP"/>, multiple part HTTP Range
Requests still rely on textual encoding – including boundary strings – which is inefficient. These
boundary strings then preface additional HTTP headers for each body part, which always carry a
<spanx style="verb">Content-Range</spanx> field, and may additionally carry a <spanx style="verb">Content-Type</spanx> field which is likely to be
repeated across every body part. It is not possible to compress these headers using <xref target="QUIC-QPACK"></xref>.</t>

<t>By using the <spanx style="verb">DATA_WITH_OFFSET</spanx> frame described in <xref target="http3-data-offset-frame"/>, the network
efficiency of multiple part range requests is improved by no longer needing to encode a boundary
string into the representation response. Instead, the offset of each part of a representation is
simply encoded in the header of a fresh HTTP <spanx style="verb">DATA_WITH_OFFSET</spanx> frame.</t>

<section anchor="response-headers" title="Response Headers">

<t><xref target="HTTP-SEMANTICS"/> specifies how a server may respond to an HTTP multipart range request using the
206 (Partial Content) status code. The response message carries a <spanx style="verb">Content-Type</spanx> response header
indicating the <spanx style="verb">multipart/byteranges</spanx> media type with its required boundary parameter. This boundary
parameter allows each body part to carry its own header area containing a <spanx style="verb">Content-Range</spanx> header to
describe what range of the selected representation this body part conveys, as well as a
<spanx style="verb">Content-Type</spanx> header (if applicable) which describes the actual media type of the selected
representation.</t>

<t>(Note that section 14.2 of <xref target="HTTP-SEMANTICS"/> describes several reasons why a server may choose to
deliver a different selection of parts than what the client originally requested.)</t>

<t>Because a selected representation may only contain a single <spanx style="verb">Content-Type</spanx> header field with a
single value, repeating this header field in every body part is highly inefficient. Moreover,
the unbounded length of the boundary parameter further reduces transmission efficiency.</t>

<t>This specification modifies the syntax of the <spanx style="verb">Content-Range</spanx> header and explicitly defines it as a
list-based field as per section 5.6.1 of <xref target="HTTP-SEMANTICS"/> that is carried in the first <spanx style="verb">HEADERS</spanx>
block sent as part of an HTTP/3 response. In addition, when used on the same QUIC stream as
<spanx style="verb">DATA_WITH_OFFSET</spanx> frames, this specification permits the <spanx style="verb">Content-Range</spanx> and <spanx style="verb">Content-Type</spanx>
HTTP headers to appear in the <spanx style="verb">HEADERS</spanx> frame of a 206 (Partial Content) response, enabling it to
indicate the MIME media type of the whole representation without needing to duplicate it for each
body part.</t>

<figure title="ABNF for extended Content-Range" anchor="fig-content-range-ext-abnf"><artwork type="ABNF"><![CDATA[
Content-Range       = 1#range-item
range-item          = range-unit SP
                      ( range-resp / unsatisfied-range )

range-resp          = incl-range "/" ( complete-length / "*" )
incl-range          = first-pos "-" last-pos
unsatisfied-range   = "*/" complete-length

complete-length     = 1*DIGIT
]]></artwork></figure>

<figure title="Range-Response header example" anchor="fig-range-response-example"><artwork><![CDATA[
:status = 206
content-type = video/mp4
content-range = bytes 10000-17999/18879543, bytes 24000-41999/18879543
]]></artwork></figure>

<t>Implementations advertising support for the <spanx style="verb">DATA_WITH_OFFSET</spanx> frame as described in
<xref target="data-with-offset-settings"/> MUST be able to consume this overloaded form of the <spanx style="verb">Content-Range</spanx>
HTTP response header.</t>

<t>A server MAY continue to use the method described in <xref target="HTTP-SEMANTICS"/> even if a client has
expressed support for the <spanx style="verb">DATA_WITH_OFFSET</spanx> frame.</t>

<t><list style='empty'>
  <t><spanx style="strong">Author’s Note:</spanx> Is it possibly worth splitting this out into its own HTTP setting value?</t>
</list></t>

</section>
<section anchor="usage-of-datawithoffset-frame-with-http-range-responses" title="Usage of DATA_WITH_OFFSET frame with HTTP Range Responses">

<t>The <spanx style="verb">DATA_WITH_OFFSET</spanx> frame may be used in conjunction with HTTP Range Requests, as described in
<xref target="HTTP-SEMANTICS"/>. When carrying data for a byte range response, the Offset field in the frame
header MUST reflect the starting byte position of the frame’s payload in the HTTP representation and
not the offset within the HTTP/3 exchange. For example, for an HTTP/3 range request made with a
request header of <spanx style="verb">range: bytes=1000-1999</spanx>, the first <spanx style="verb">DATA_WITH_OFFSET</spanx> frame in the response
MUST carry the value 1000 in the Offset field of the frame header.</t>

<t>For HTTP response messages carrying a set of byte ranges, a <spanx style="verb">DATA_WITH_OFFSET</spanx> frame MUST NOT carry
data for more than one contiguous byte range within that set. An individual byte range MAY be
carried over multiple instances of the <spanx style="verb">DATA_WITH_OFFSET</spanx> frame.</t>

</section>
</section>
<section anchor="data-with-offset-settings" title="Negotiating Support For The DATA_WITH_OFFSET Frame">

<t>The <spanx style="verb">DATA_WITH_OFFSET</spanx> frame described in <xref target="http3-data-offset-frame"/> is an optional extension to
the regular HTTP/3 protocol specification and, as such, usage of the frame type must be negotiated
as described in section 9 of <xref target="QUIC-HTTP"/>. For a conventional HTTP/3 connection, this is done using
HTTP/3 <spanx style="verb">SETTINGS</spanx> frames carried on the control streams.</t>

<t>This specification defines the following setting:</t>

<t><list style="hanging">
  <t hangText='SETTINGS_ENABLE_DATA_WITH_OFFSET_FRAME (0xd00):'>
  A boolean value with a default value of 0 (false). Any non-zero value is true.</t>
</list></t>

<t><list style='empty'>
  <t><spanx style="strong">Author’s Note:</spanx> It is intended that the value of the H3 <spanx style="verb">SETTINGS</spanx> frame should mirror the
value of the frame to indicate which version of the <spanx style="verb">DATA_WITH_OFFSET</spanx> frame it understands, should
subsequent revisions of this draft change the frame type.</t>
</list></t>

<t>An endpoint that implements this specification SHOULD send a
<spanx style="verb">SETTINGS_ENABLE_DATA_WITH_OFFSET_FRAME</spanx> setting at the beginning of the connection to indicate that
it is able to process <spanx style="verb">DATA_WITH_OFFSET</spanx> frames from its peer.</t>

<t>An endpoint MUST NOT send a <spanx style="verb">DATA_WITH_OFFSET</spanx> frame unless it has received a positive (i.e.
non-zero) <spanx style="verb">SETTINGS_ENABLE_DATA_WITH_OFFSET_FRAME</spanx> setting from its peer.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>This document introduces no new security considerations beyond those discussed in <xref target="QUIC-HTTP"/>.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This specification registers a new frame type in the “HTTP/3 Frame Type” registry (<xref target="QUIC-HTTP"/>).</t>

<texttable title="Registered HTTP/3 Frame Type" anchor="http-3-frame-type-registry-table">
      <ttcol align='left'>Frame Type</ttcol>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Specification</ttcol>
      <c>DATA_WITH_OFFSET</c>
      <c>0xd00</c>
      <c><xref target="http3-data-offset-frame"/></c>
</texttable>

<t><list style='empty'>
  <t><spanx style="strong">Author’s Note:</spanx> The final, intended value of the frame type is 0xd0f, but in order to allow for
this extension to naturally evolve and allow for the frame format to change, it starts at 0xd00 and
subsequent revisions of this extension can take incrementally higher frame type values between 0xd00
and 0xd0e.</t>
</list></t>

<t>This specification registers a new setting in the “HTTP/3 Settings” registry (<xref target="QUIC-HTTP"/>).</t>

<texttable title="Registered HTTP/3 Settings" anchor="http-3-settings-registry-table">
      <ttcol align='left'>Setting</ttcol>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Specification</ttcol>
      <ttcol align='left'>Default</ttcol>
      <c>SETTINGS_ENABLE_DATA_WITH_OFFSET_FRAME</c>
      <c>0xd00</c>
      <c><xref target="data-with-offset-settings"/></c>
      <c>0</c>
</texttable>

</section>


  </middle>

  <back>

    <references title='Normative References'>

<reference anchor="QUIC-HTTP" >
  <front>
    <title>Hypertext Transfer Protocol Version 3 (HTTP/3)</title>
    <author initials="M." surname="Bishop" fullname="Mike Bishop" role="editor">
      <organization>Akamai</organization>
    </author>
    <date />
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-quic-http-34"/>
</reference>
<reference anchor="HTTP-SEMANTICS" >
  <front>
    <title>HTTP Semantics</title>
    <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
      <organization>Adobe</organization>
    </author>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham" role="editor">
      <organization>Fastly</organization>
    </author>
    <author initials="J." surname="Reschke" fullname="Julian F. Reschke" role="editor">
      <organization>greenbytes GmbH</organization>
    </author>
    <date />
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-17"/>
</reference>




<reference  anchor="RFC9000" target='https://www.rfc-editor.org/info/rfc9000'>
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
<author initials='J.' surname='Iyengar' fullname='J. Iyengar' role='editor'><organization /></author>
<author initials='M.' surname='Thomson' fullname='M. Thomson' role='editor'><organization /></author>
<date year='2021' month='May' />
<abstract><t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t></abstract>
</front>
<seriesInfo name='RFC' value='9000'/>
<seriesInfo name='DOI' value='10.17487/RFC9000'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<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>



<reference  anchor="RFC7540" target='https://www.rfc-editor.org/info/rfc7540'>
<front>
<title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
<author initials='M.' surname='Belshe' fullname='M. Belshe'><organization /></author>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='M.' surname='Thomson' fullname='M. Thomson' role='editor'><organization /></author>
<date year='2015' month='May' />
<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 perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t><t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t></abstract>
</front>
<seriesInfo name='RFC' value='7540'/>
<seriesInfo name='DOI' value='10.17487/RFC7540'/>
</reference>




    </references>

    <references title='Informative References'>

<reference anchor="QUIC-QPACK" >
  <front>
    <title>QPACK: Header Compression for HTTP/3</title>
    <author initials="C." surname="Crasic" fullname="Charles 'Buck' Krasic" role="editor">
      <organization>Netflix</organization>
    </author>
    <author initials="M." surname="Bishop" fullname="Mike Bishop" role="editor">
      <organization>Akamai Technologies</organization>
    </author>
    <author initials="A." surname="Frindell" fullname="Alan Frindell" role="editor">
      <organization>Facebook</organization>
    </author>
    <date />
  </front>
  <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qpack-21"/>
</reference>


    </references>


<section anchor="acknowledgements" title="Acknowledgements">

<t>The author would like to thank the following for their contributions to the design described in the
present document: Lucas Pardue, Richard Bradbury and David Waring.</t>

<t>I am also grateful for Chris Poole’s helpful review comments.</t>

</section>
<section anchor="changelog" title="Changelog">

<t><list style='empty'>
  <t><spanx style="strong">RFC Editor’s Note:</spanx> Please remove this section prior to publication of a
final version of this document.</t>
</list></t>

<section anchor="changes-since-draft-hurst-quic-http-data-offset-frame-00" title="Changes since draft-hurst-quic-http-data-offset-frame-00">

<t><list style="symbols">
  <t>Update reference to QUIC transport I-D to <xref target="RFC9000"/>.</t>
  <t>Update reference to <xref target="HTTP-SEMANTICS"/> I-D.</t>
</list></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
ofh/uD4RkgU2AAA=

-->

</rfc>

