<?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.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ihlar-masque-sconepro-mediabitrate-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="MASQUE media bitrate capsule">MASQUE extension for signaling media bitrate</title>
    <seriesInfo name="Internet-Draft" value="draft-ihlar-masque-sconepro-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="February" day="09"/>
    <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-masque-sconepro-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="17" month="August" year="2023"/>
          <abstract>
            <t>   This document defines an extension to UDP Proxying over HTTP that
   adds specific optimizations for proxied QUIC connections.  This
   extension allows a proxy to reuse UDP 4-tuples for multiple
   connections.  It also defines a mode of proxying in which QUIC short
   header packets can be forwarded using an HTTP/3 proxy rather than
   being re-encapsulated and re-encrypted.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-masque-quic-proxy-00"/>
      </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>
