<?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.19 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ihlar-scone-masque-mediabitrate-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="MASQUE media bitrate capsule">MASQUE extension for signaling media bitrate</title>
    <seriesInfo name="Internet-Draft" value="draft-ihlar-scone-masque-mediabitrate-00"/>
    <author fullname="Marcus Ihlar">
      <organization>Ericsson</organization>
      <address>
        <email>marcus.ihlar@ericsson.com</email>
      </address>
    </author>
    <author fullname="Mirja Kühlewind">
      <organization>Ericsson</organization>
      <address>
        <email>mirja.kuehlewind@ericsson.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="16"/>
    <area>Web and Internet Transport</area>
    <workgroup>Multiplexed Application Substrate over QUIC Encryption</workgroup>
    <keyword>media bitrate</keyword>
    <abstract>
      <?line 37?>

<t>This document specifies a new Capsule (RFC9297) that can be used with CONNECT-UDP (RFC9298), CONNECT-IP (RFC9484), or other future CONNECT extensions to signal the available
bitrate for media traffic that is proxied through an HTTP server.
This information can be used by a media application to regulate its media bitrate in accordance with a network policy, as an alternative to in-network traffic shaping.</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-ihlar-scone-masque-mediabitrate/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Multiplexed Application Substrate over QUIC Encryption Working Group mailing list (<eref target="mailto:masque@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/masque/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/masque/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mirjak/draft-masque-mediabitrate"/>.</t>
    </note>
  </front>
  <middle>
    <?line 44?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies a new Capsule (RFC9297) that can be used with CONNECT-UDP (RFC9298), CONNECT-IP (RFC9484), or other future CONNECT extensions to signal the available
bitrate for media traffic that is proxied through an HTTP server.
This information can be used by a media application to regulate its media bitrate in accordance with a network policy, as an alternative to in-network traffic shaping.</t>
      <t>The extension can be used with the HTTP CONNECT method when the :protocol pseudo header is equal to "connect-udp" or "connect-ip" and with future CONNECT protocols that use the Capsule Protocol.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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 anchor="indicating-support-for-media-bitrate-signaling">
      <name>Indicating Support for Media Bitrate Signaling</name>
      <t>A client who wishes to receive media bitrate capsules can indicate support by sending a request header with
the boolean-valued Item Structured Field "Media-Bitrate: ?1".
The HTTP proxy indicates support by sending a response header with the boolean-valued Item Structured Field "Media-Bitrate: ?1"
See <xref section="3.3.6" sectionFormat="of" target="RFC8941"/> for information about the boolean format.</t>
      <t>Once support has been established, a proxy <bcp14>MAY</bcp14> send MEDIA_BITRATE capsules at any time during the lifetime of the stream that originated the request.</t>
    </section>
    <section anchor="mediabitrate-capsule-type-format">
      <name>MEDIA_BITRATE Capsule Type Format</name>
      <t>The MEDIA_BITRATE Capsule has the following format:</t>
      <artwork><![CDATA[
MEDIA_BITRATE Capsule {
  Type (i) = MEDIA_BITRATE,
  Length (i)
  Media Bitrate (i)
  [Average Window (i)]
}
]]></artwork>
      <t>The capsule has the following fields:</t>
      <t>Media Bitrate: Indicates the average bitrate that is supported by the network without traffic shaping.</t>
      <t>Average Window: Indicates the duration over which the bitrate is enforced. The largest allowed burst is given by Media Bitrate * Average window. This field is optional.</t>
    </section>
    <section anchor="client-behaviour">
      <name>Client Behaviour</name>
      <t>A client that receives media bitrate capsules needs to make the information available to a media application, this is implementation specific and out of scope for this document.
A media application can use the information to select a media track that conforms with the specified bitrate. How this is done and whether an application client needs to explicitly
coordinate with an application server is out of scope for this document.</t>
    </section>
    <section anchor="proxy-behaviour">
      <name>Proxy Behaviour</name>
      <t>A proxy that sends media bitrate capsules needs to be tightly integrated with the access network infrastructure and policy framework. A proxy that sends media bitrate capsules does
so as an alternative to traffic shaping, the policies that govern shaping behaviour can be used to determine the values sent with media bitrate capsules.</t>
      <t>A proxy might still apply shaping or policing to traffic that is breaching the policy in order to ensure that the bitrate policy is respected. In this case, it is <bcp14>RECOMMENDED</bcp14> that the proxy uses an
averaging window that is sufficiently long to allow data transmission bursts that make full use of the available network capacity. A proxy can <bcp14>SHOULD</bcp14> the Average Window field in the
media bitrate capsule to inform the client about how it enforces bitrates.</t>
    </section>
    <section anchor="performance-considerations">
      <name>Performance Considerations</name>
      <t>This protocol is intended to provide policy indications to applications traversing a network. Using HTTP proxying for this purpose does add overhead in terms of CPU, memory and MTU.
It is <bcp14>RECOMMENDED</bcp14> that this solution is used together with QUIC-Aware proxying <xref target="I-D.ietf-masque-quic-proxy"/> whenever possible.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="capsule-types">
        <name>Capsule types</name>
        <t>This document adds following entries to the "HTTP Capsule Types" registry:</t>
        <table anchor="iana-capsule-type">
          <name>New Capsule Type to register</name>
          <thead>
            <tr>
              <th align="left">Capsule Type</th>
              <th align="left">Value</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">MEDIA-BITRATE</td>
              <td align="left">TBD</td>
              <td align="left">(This document)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="http-headers">
        <name>HTTP headers</name>
        <t>This document adds following entry to the "Hypertext Transfer Protocol (HTTP) Field Name Registry":</t>
        <table anchor="iana-http-field">
          <name>HTTP Field Name to register</name>
          <thead>
            <tr>
              <th align="left">Field Name</th>
              <th align="left">Template</th>
              <th align="left">Status</th>
              <th align="left">Reference</th>
              <th align="left">Comments</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Media-Bitrate</td>
              <td align="left"> </td>
              <td align="left">permanent</td>
              <td align="left">(This document)</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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>
      <reference anchor="RFC8941">
        <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="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="I-D.ietf-masque-quic-proxy">
        <front>
          <title>QUIC-Aware Proxying Using HTTP</title>
          <author fullname="Tommy Pauly" initials="T." surname="Pauly">
            <organization>Apple Inc.</organization>
          </author>
          <author fullname="Eric Rosenberg" initials="E." surname="Rosenberg">
            <organization>Apple Inc.</organization>
          </author>
          <author fullname="David Schinazi" initials="D." surname="Schinazi">
            <organization>Google LLC</organization>
          </author>
          <date day="7" month="July" year="2024"/>
          <abstract>
            <t>   This document extends UDP Proxying over HTTP to add optimizations for
   proxied QUIC connections.  Specifically, it allows a proxy to reuse
   UDP 4-tuples for multiple proxied connections, and adds a mode of
   proxying in which QUIC short header packets can be forwarded and
   transformed through a HTTP/3 proxy rather than being fully re-
   encapsulated and re-encrypted.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-masque-quic-proxy-03"/>
      </reference>
    </references>
    <?line 149?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
