<?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.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wish-whep-05" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="whep">WebRTC-HTTP Egress Protocol (WHEP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wish-whep-05"/>
    <author initials="S." surname="Murillo" fullname="Sergio Garcia Murillo">
      <organization>Millicast</organization>
      <address>
        <email>sergio.garcia.murillo@cosmosoftware.io</email>
      </address>
    </author>
    <author initials="C." surname="Chen" fullname="Cheng Chen">
      <organization/>
      <address>
        <email>parallelc@foxmail.com</email>
      </address>
    </author>
    <author initials="D." surname="Jenkins" fullname="Dan Jenkins" role="editor">
      <organization>Everycast Labs Ltd</organization>
      <address>
        <email>dan@everycastlabs.uk</email>
      </address>
    </author>
    <date year="2026" month="October" day="11"/>
    <area>ART</area>
    <workgroup>wish</workgroup>
    <keyword>WebRTC</keyword>
    <abstract>
      <?line 42?>

<t>This document describes a simple HTTP-based protocol that will allow WebRTC-based viewers to watch content from streaming services, Content Delivery Networks (CDNs), or WebRTC Transmission Networks (WTNs).</t>
    </abstract>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The IETF RTCWEB Working Group standardized the JavaScript Session Establishment Protocol (JSEP) <xref target="RFC9429"/>, a mechanism used to control the setup, management, and teardown of a multimedia session. It also describes how to negotiate media flows using the offer/answer model with the Session Description Protocol (SDP) <xref target="RFC3264"/> including the formats for data sent over the wire (e.g., media types, codec parameters, and encryption). WebRTC intentionally does not specify a signaling transport protocol at the application level.</t>
      <t>While WebRTC can be integrated with standard signaling protocols like SIP <xref target="RFC3261"/> or XMPP <xref target="RFC6120"/>, they are not designed to be used in broadcasting and streaming services, and there also is no sign of adoption in that industry. RTSP <xref target="RFC7826"/>, which is based on RTP, does not support the SDP offer/answer model <xref target="RFC3264"/> for negotiating the characteristics of the media session.</t>
      <t>There are many situations in which the lack of a standard protocol for consuming media from streaming service using WebRTC has become a problem:</t>
      <ul spacing="normal">
        <li>
          <t>Interoperability between WebRTC services and products.</t>
        </li>
        <li>
          <t>Reusing player software which can be integrated easily.</t>
        </li>
        <li>
          <t>Integration with Dynamic Adaptive Streaming over HTTP (DASH) for offering live streams via WebRTC while offering a time-shifted version via DASH.</t>
        </li>
        <li>
          <t>Playing WebRTC streams on devices that don't support custom javascript to be run (like TVs).</t>
        </li>
      </ul>
      <t>This document mimics what has been done in the WebRTC HTTP Ingest Protocol (WHIP) <xref target="RFC9725"/> for ingestion and specifies a simple HTTP-based protocol that can be used for consuming media from a streaming service using WebRTC.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</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="overview">
      <name>Overview</name>
      <t>The WebRTC-HTTP Egress Protocol (WHEP) is designed to facilitate an exchange of Session Description Protocol (SDP) offers and answers using HTTP POST requests. This exchange is a fundamental step in establishing an Interactive Connectivity Establishment (ICE) and Datagram Transport Layer Security (DTLS) session between the WHEP player and the media server of the streaming service.</t>
      <t>Upon successful establishment of the ICE/DTLS session, unidirectional media data transmission commences from the media server to the WHEP player. It is important to note that SDP renegotiations are not supported in WHEP, meaning that no modifications to the "m=" sections can be made after the initial SDP offer/answer exchange via HTTP POST is completed and only ICE related information can be updated via HTTP PATCH requests as defined in <xref target="ice-support"/>.</t>
      <t>The WHEP player always initiates the streaming session by sending an SDP offer to the WHEP endpoint. The WHEP endpoint can then choose to either accept the client's offer by responding with an SDP answer, or reject the client's offer and counter with its own SDP offer. If the WHEP endpoint sends a counter-offer, the client must then respond with an SDP answer. A WHEP player must support processing both SDP answers (when the WHEP endpoint accepts the client's offer) and SDP offers (when the WHEP endpoint sends a counter-offer) in response to the initial request.</t>
      <section anchor="protocol-operation-flow">
        <name>Protocol Operation Flow</name>
        <t>The following diagram illustrates the core operation of WHEP for initiating and terminating a viewing session:</t>
        <figure anchor="whep-protocol-operation">
          <name>WHEP Session Setup and Teardown</name>
          <artwork><![CDATA[
 +-------------+    +---------------+ +--------------+ +---------------+
 | WHEP player |    | WHEP endpoint | | Media Server | | WHEP session |
 +--+----------+    +---------+-----+ +------+-------+ +--------|------+
    |                         |              |                  |       
    |                         |              |                  |       
    |HTTP POST (SDP Offer)    |              |                  |       
    +------------------------>+              |                  |       
    |201 Created (SDP answer) |              |                  |       
    |   OR                    |              |                  |
    |406 Not Acceptable       |              |                  |       
    |   (SDP offer)           |              |                  |
    +<------------------------+              |                  |
    |                         |              |                  |
    |  [IF 406 Not Acceptable]|              |                  |
    |HTTP PATCH [session]     |              |                  |
    |   (SDP answer)          |              |                  |
    +---------------------------------------------------------->+
    |204 No Content           |              |                  |
    +<----------------------------------------------------------+ 
    |          ICE/STUN REQUEST              |                  |
    +--------------------------------------->+                  |
    |          ICE/STUN RESPONSE             |                  |
    |<---------------------------------------+                  |       
    |          DTLS SETUP                    |                  |       
    |<======================================>|                  |       
    |          RTP/RTCP FLOW                 |                  |       
    +<-------------------------------------->+                  |       
    | HTTP DELETE                                               |       
    +---------------------------------------------------------->+       
    | 200 OK                                                    |       
    <-----------------------------------------------------------x       
                                                                               
]]></artwork>
        </figure>
        <t>The elements in <xref target="whep-protocol-operation"/> are described as follows:</t>
        <ul spacing="normal">
          <li>
            <t>WHEP player: This represents the WebRTC media player, which functions as a client of WHEP by receiving and decoding the media from a remote media server.</t>
          </li>
          <li>
            <t>WHEP endpoint: This denotes the egress server that receives the initial WHEP request. In this document, the term "WHEP endpoint" always refers to this server-side HTTP resource, never to the WHEP player, even though both are endpoints of the resulting WebRTC session. This terminology is consistent with the use of "WHIP endpoint" in <xref target="RFC9725"/>.</t>
          </li>
          <li>
            <t>WHEP endpoint URL: This refers to the URL of the WHEP endpoint responsible for creating the WHEP session.</t>
          </li>
          <li>
            <t>Media server: This is the WebRTC Media Server that establishes the media session with the WHEP player and delivers the media to it.</t>
          </li>
          <li>
            <t>WHEP session: Indicates the allocated HTTP resource by the WHEP endpoint for an ongoing egress session.</t>
          </li>
          <li>
            <t>WHEP session URL: This refers to the URL of the WHEP resource allocated by the WHEP endpoint for a specific media session. The WHEP player can send requests to the WHEP session using this URL to modify the session, such as ICE operations or termination.</t>
          </li>
        </ul>
        <t><xref target="whep-protocol-operation"/> illustrates the communication flow between a WHEP player, WHEP endpoint, media server, and WHEP session. This flow outlines the process of setting up and tearing down a playback session using WHEP, involving negotiation, ICE for Network Address Translation (NAT) traversal, DTLS and Secure Real-time Transport Protocol (SRTP) for security, and RTP/RTCP for media transport:</t>
      </section>
      <section anchor="protocol-operation-steps">
        <name>Protocol Operation Steps</name>
        <ul spacing="normal">
          <li>
            <t>The WHEP player initiates the communication by sending an HTTP POST with an SDP offer to the WHEP endpoint.</t>
          </li>
          <li>
            <t>The WHEP endpoint responds with either a "201 Created" message containing an SDP answer (accepting the client's offer) or a "406 Not Acceptable" message containing an SDP counter-offer (rejecting the client's offer).</t>
          </li>
          <li>
            <t>If the WHEP endpoint responded with "406 Not Acceptable", the WHEP player sends an HTTP PATCH containing an SDP answer to the WHEP session URL.</t>
          </li>
          <li>
            <t>If applicable, the WHEP session responds with a "204 No Content" message to the PATCH request.</t>
          </li>
          <li>
            <t>The WHEP player and media server establish ICE and DTLS sessions for NAT traversal and secure communication.</t>
          </li>
          <li>
            <t>RTP and RTCP flows are established for media transmission from the media server to the WHEP player, secured by the SRTP profile.</t>
          </li>
          <li>
            <t>The WHEP player sends an HTTP DELETE to terminate the WHEP session.</t>
          </li>
          <li>
            <t>The WHEP session responds with a "200 OK" to confirm the session termination.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="protocol-operation">
      <name>Protocol Operation</name>
      <section anchor="http-usage">
        <name>HTTP Usage</name>
        <t>Following the guidelines in <xref target="BCP56"/>, WHEP players <bcp14>MUST NOT</bcp14> match error codes returned by the WHEP endpoints and resources to a specific error cause indicated in this specification. WHEP players <bcp14>MUST</bcp14> be able to handle all applicable status codes gracefully falling back to the generic n00 semantics of a given status code on unknown error codes. WHEP endpoints and resources could convey finer-grained error information by a problem dtails json object in the response message body of the failed request as per <xref target="RFC9457"/>.</t>
        <t>The WHEP endpoints and sessions are origin servers as defined in <xref section="3.6" sectionFormat="of" target="RFC9110"/>; they handle the requests and provide responses for the underlying HTTP resources. Those HTTP resources do not have any representation defined in this specification, so the WHEP endpoints and sessions <bcp14>MUST</bcp14> return a 2xx successful response with no content when a GET request is received.</t>
      </section>
      <section anchor="whep-url-discoverability">
        <name>WHEP Endpoint URL Discoverability</name>
        <t>Many video player SDKs and generic video players need a mechanism to automatically detect whether a given URL corresponds to a WHEP endpoint, similar to how URLs ending in <tt>.m3u8</tt> are recognized as HLS streams or how <tt>.mpd</tt> indicates DASH manifests.</t>
        <t>To enable discoverability of WHEP endpoints, WHEP players and generic video player SDKs <bcp14>MAY</bcp14> use HTTP HEAD requests to determine if a URL is a WHEP endpoint. WHEP endpoints <bcp14>SHOULD</bcp14> support HTTP HEAD requests as defined in <xref section="9.3.2" sectionFormat="of" target="RFC9110"/>.</t>
        <t>When a WHEP endpoint receives a HEAD request, it <bcp14>SHOULD</bcp14> respond with a "200 OK" status code and include a <tt>Content-Type</tt> header field with the value <tt>application/sdp</tt>, indicating that the endpoint accepts POST requests with SDP offers in the request body as defined in <xref target="playback-session-setup"/>.</t>
        <t>As the <tt>application/sdp</tt> media type is not specific to WHEP and could be used by other protocols, the <tt>Content-Type</tt> header field alone is not sufficient to identify a WHEP endpoint. Therefore, a WHEP endpoint responding to a HEAD request with a "200 OK" status code <bcp14>MUST</bcp14> also include a <tt>Link</tt> header field <xref target="RFC8288"/> with a "rel" attribute value of "profile" as defined in <xref target="RFC6906"/> and a target URI of <tt>urn:ietf:params:whep</tt>, the URN sub-namespace registered for WHEP in <xref target="urn-whep-subspace"/>.</t>
        <t>The HEAD response <bcp14>MUST</bcp14> include the same headers that would be returned in response to a GET request, including the <tt>Content-Type</tt> and <tt>Link</tt> header fields, but <bcp14>MUST NOT</bcp14> include a message body as per <xref section="9.3.2" sectionFormat="of" target="RFC9110"/>.</t>
        <t>Example:
~~~~~
HEAD /whep/endpoint HTTP/1.1
Host: whep.example.com</t>
        <t>HTTP/1.1 200 OK
Content-Type: application/sdp
Link: &lt;urn:ietf:params:whep&gt;; rel="profile"
Content-Length: 0
~~~~~</t>
        <t>When a player recognizes a URL as a WHEP endpoint by receiving both <tt>Content-Type: application/sdp</tt> and a <tt>Link</tt> header field with a "profile" relation to <tt>urn:ietf:params:whep</tt> in response to a HEAD request, it <bcp14>SHOULD</bcp14> automatically configure itself to use WHEP protocol handling without requiring additional user configuration. Players <bcp14>MUST NOT</bcp14> identify a URL as a WHEP endpoint based on the <tt>Content-Type</tt> header field alone.</t>
      </section>
      <section anchor="playback-session-setup">
        <name>Playback Session Set Up</name>
        <t>In order to set up a streaming session, the WHEP player <bcp14>MUST</bcp14> generate an SDP offer according to the JSEP rules for an initial offer as in <xref section="5.2.1" sectionFormat="of" target="RFC9429"/> and perform an HTTP POST request as per <xref section="9.3.3" sectionFormat="of" target="RFC9110"/> to the configured WHEP endpoint URL.</t>
        <t>The HTTP POST request <bcp14>MUST</bcp14> have a content type of "application/sdp" and contain the SDP offer as the body. Upon receiving the HTTP POST request, the WHEP endpoint can choose to either accept the client's offer or reject it in favor of sending its own offer.</t>
        <section anchor="server-accepts-client-offer">
          <name>Server Accepts Client Offer</name>
          <t>If the WHEP endpoint chooses to accept the client's SDP offer, it <bcp14>MUST</bcp14> generate an SDP answer according to the JSEP rules for an initial answer as in <xref section="5.3.1" sectionFormat="of" target="RFC9429"/> and return a "201 Created" response with a content type of "application/sdp", the SDP answer as the body, and a Location header field pointing to the newly created WHEP session.</t>
          <t>The WHEP endpoint <bcp14>MAY</bcp14> partially accept the client's offer by accepting some m-lines while rejecting others, as specified in <xref target="partial-media-acceptance"/>. This allows the WHEP endpoint to accept audio and video m-lines while rejecting data channel m-lines, for example.</t>
        </section>
        <section anchor="server-sends-counter-offer">
          <name>Server Sends Counter-offer</name>
          <t>If the WHEP endpoint chooses to reject the client's SDP offer, it <bcp14>MUST</bcp14> generate its own SDP offer according to the JSEP rules for an initial offer as in <xref section="5.2.1" sectionFormat="of" target="RFC9429"/> and return a "406 Not Acceptable" response with a content type of "application/sdp", the SDP counter-offer as the body, and a Location header field pointing to the WHEP session resource that will be created upon completion of the offer/answer exchange.</t>
          <t>The WHEP endpoint <bcp14>MAY</bcp14> include a "valid-until" parameter in the Content-Type header to indicate how long the counter-offer remains valid. If no "valid-until" parameter is provided, the counter-offer remains valid for 30 seconds from the time the response was sent. The "valid-until" parameter value <bcp14>MUST</bcp14> be an HTTP-date as defined in <xref section="5.6.7" sectionFormat="of" target="RFC9110"/>.</t>
          <t>When the WHEP player receives a counter-offer from the WHEP endpoint, it <bcp14>MUST</bcp14> generate an SDP answer according to the JSEP rules for an initial answer as in <xref section="5.3.1" sectionFormat="of" target="RFC9429"/>. The WHEP player <bcp14>MAY</bcp14> partially accept the server's counter-offer by accepting some m-lines while rejecting others, as specified in <xref target="partial-media-acceptance"/>. To send the SDP answer, the WHEP player <bcp14>MUST</bcp14> perform an HTTP PATCH request as per <xref target="RFC5789"/> to the WHEP session URL with content type of "application/sdp" and the SDP answer as the body. The WHEP endpoint <bcp14>MUST</bcp14> return a "204 No Content" response. If the SDP is malformed or does not conform to the JSEP rules for an initial answer, the WHEP endpoint <bcp14>MUST</bcp14> reject the HTTP PATCH request with an appropriate 4XX error response.</t>
        </section>
        <section anchor="determining-server-response-type">
          <name>Determining Server Response Type</name>
          <t>WHEP players can determine the WHEP endpoint's response type by examining the HTTP status code:</t>
          <ul spacing="normal">
            <li>
              <t><strong>"201 Created"</strong>: The WHEP endpoint has accepted the client's offer and responded with an SDP answer. The WHEP session has been created and is ready for media transmission.</t>
            </li>
            <li>
              <t><strong>"406 Not Acceptable"</strong>: The WHEP endpoint has rejected the client's offer and responded with an SDP counter-offer. The client <bcp14>MUST</bcp14> send an HTTP PATCH request to the WHEP session URL with an SDP answer to complete the session establishment.</t>
            </li>
          </ul>
          <t>WHEP players <bcp14>MUST</bcp14> interpret a "406 Not Acceptable" response as a server-sent counter-offer only if the response includes a "Content-Type" of "application/sdp" and a syntactically valid SDP offer. Any "406 Not Acceptable" response that does not meet these conditions <bcp14>MUST</bcp14> be handled according to generic HTTP semantics and <bcp14>MUST NOT</bcp14> be interpreted as a counter-offer.</t>
        </section>
        <section anchor="partial-media-acceptance">
          <name>Partial Media Acceptance</name>
          <t>WHEP allows for partial acceptance of media streams, where some m-lines in an SDP offer may be accepted while others are rejected. This enables scenarios where, for example, audio and video m-lines are accepted but data channel m-lines are rejected.</t>
          <t>Partial acceptance also enables accepting only audio or only video, allowing WHEP players to optimize for their specific requirements. For instance, an audio-only WHEP player can reject video m-lines to avoid receiving unnecessary video data, or a video-only player can reject audio m-lines when audio is not needed. This optimization reduces bandwidth consumption and resource utilization when full media reception is not required.</t>
          <t>When generating an SDP answer, either the WHEP endpoint (when accepting a client offer) or the WHEP player (when answering a server counter-offer) <bcp14>MAY</bcp14> reject individual m-lines by setting the port number to 0 in the corresponding m-line of the SDP answer, as specified in <xref section="5.3.1" sectionFormat="of" target="RFC9429"/>. Rejected m-lines <bcp14>MUST</bcp14> have their port set to 0 and <bcp14>SHALL NOT</bcp14> include any codec or format information.</t>
          <t>Partial acceptance applies to both directions of the offer/answer exchange:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Server accepting client offer</strong>: When the WHEP endpoint returns a "201 Created" response with an SDP answer, it <bcp14>MAY</bcp14> reject individual m-lines from the client's offer by setting their port to 0.</t>
            </li>
            <li>
              <t><strong>Client answering server counter-offer</strong>: When the WHEP player sends an SDP answer via HTTP PATCH in response to a server counter-offer, it <bcp14>MAY</bcp14> reject individual m-lines from the server's counter-offer by setting their port to 0.</t>
            </li>
          </ul>
          <t>The MediaStream constraint in <xref target="single-mediastream"/> requires that at least one MediaStreamTrack of any media kind is accepted. Therefore, at least one audio or video m-line <bcp14>MUST</bcp14> be accepted in the final negotiated session. Data channel m-lines (application m-lines) <bcp14>MAY</bcp14> be rejected without affecting the session establishment.</t>
        </section>
        <section anchor="error-conditions">
          <name>Error Conditions</name>
          <t>If the HTTP POST to the WHEP endpoint has a "Content-Type" different than "application/sdp", the WHEP endpoint <bcp14>MUST</bcp14> reject the request with "415 Unsupported Media Type" and <bcp14>MUST NOT</bcp14> include an SDP in the response. If the "Content-Type" is "application/sdp" but the body is syntactically invalid or does not conform to the JSEP rules for an initial offer, the WHEP endpoint <bcp14>MUST</bcp14> reject the request with an appropriate 4XX error response. A "406 Not Acceptable" response is reserved for the server-sent counter-offer mechanism and therefore <bcp14>MUST</bcp14> include a "Content-Type" of "application/sdp" and a syntactically valid SDP offer. A "406 Not Acceptable" response that does not meet these conditions <bcp14>MUST</bcp14> be treated as an error and <bcp14>MUST NOT</bcp14> be interpreted as a counter-offer.</t>
        </section>
        <section anchor="media-direction-attributes">
          <name>Media Direction Attributes</name>
          <t>As WHEP only supports the playback use case with unidirectional media:</t>
          <ul spacing="normal">
            <li>
              <t>When a WHEP player sends an SDP offer, it <bcp14>SHOULD</bcp14> use "recvonly" attribute but <bcp14>MAY</bcp14> use the "sendrecv" attribute instead. The "inactive" and "sendonly" attributes <bcp14>MUST NOT</bcp14> be used.</t>
            </li>
            <li>
              <t>When a WHEP endpoint sends an SDP answer (accepting client offer), it <bcp14>MUST</bcp14> use "sendonly" attribute in the SDP answer.</t>
            </li>
            <li>
              <t>When a WHEP endpoint sends an SDP counter-offer, it <bcp14>SHOULD</bcp14> use "sendonly" attribute but <bcp14>MAY</bcp14> use the "sendrecv" attribute instead. The "inactive" and "recvonly" attributes <bcp14>MUST NOT</bcp14> be used.</t>
            </li>
            <li>
              <t>When a WHEP player sends an SDP answer (responding to server counter-offer), it <bcp14>MUST</bcp14> use "recvonly" attribute in the SDP answer.</t>
            </li>
          </ul>
        </section>
        <section anchor="codec-recommendations">
          <name>Codec Recommendations</name>
          <t>WHEP players <bcp14>SHOULD</bcp14> include as many supported codecs as possible in their SDP offers and answers to maximize compatibility and enable dynamic streaming scenarios. This applies whether the WHEP player is sending the initial offer or responding to a server counter-offer with an answer.</t>
          <t>Including a comprehensive list of supported codecs enables several important use cases:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Dynamic source switching</strong>: A WHEP endpoint may need to change which camera or media source a stream is connected to, potentially requiring different codecs for optimal quality or performance.</t>
            </li>
            <li>
              <t><strong>Adaptive streaming</strong>: The WHEP endpoint may switch between different codec configurations based on network conditions, viewer capabilities, or content characteristics.</t>
            </li>
            <li>
              <t><strong>Failover scenarios</strong>: If the primary codec encounters issues, having alternative codecs available allows seamless fallback without requiring renegotiation.</t>
            </li>
            <li>
              <t><strong>Multi-resolution support</strong>: Different codecs may be optimal for different resolutions or bitrates that the WHEP endpoint may need to provide.</t>
            </li>
          </ul>
          <t>WHEP players that restrict their codec offerings may prevent these advanced streaming scenarios and limit the WHEP endpoint's ability to provide optimal streaming experiences.</t>
        </section>
        <section anchor="examples">
          <name>Examples</name>
          <t>Following <xref target="sdp-exchange-example-server-accepts"/> is an example where the WHEP endpoint accepts the client's offer.</t>
          <figure anchor="sdp-exchange-example-server-accepts">
            <name>Example where the WHEP Endpoint accepts client offer</name>
            <artwork><![CDATA[
POST /whep/endpoint HTTP/1.1
Host: whep.example.com
Content-Type: application/sdp
Content-Length: 1326

v=0
o=- 5228595038118931041 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=ice-options:trickle ice2
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:zjkk
a=ice-pwd:bP+XJMM09aR8AiX1jdukzR6Y
a=fingerprint:sha-256 DA:7B:57:DC:28:CE:04:4F:31:79:85:C4:31:67:EB:27:58:29:ED:77:2A:0D:24:AE:ED:AD:30:BC:BD:F1:9C:02
a=setup:actpass
a=mid:0
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=recvonly
a=rtcp-mux
a=rtcp-mux-only
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
m=video 0 UDP/TLS/RTP/SAVPF 96 97
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:zjkk
a=ice-pwd:bP+XJMM09aR8AiX1jdukzR6Y
a=fingerprint:sha-256 DA:7B:57:DC:28:CE:04:4F:31:79:85:C4:31:67:EB:27:58:29:ED:77:2A:0D:24:AE:ED:AD:30:BC:BD:F1:9C:02
a=setup:actpass
a=mid:1
a=bundle-only
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
a=rtcp-mux
a=rtcp-mux-only
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96

HTTP/1.1 201 Created
ETag: "xyzzy"
Content-Type: application/sdp
Content-Length: 1400
Location: https://whep.example.org/sessions/id

v=0
o=- 1657793490019 1 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=ice-lite
a=ice-options:trickle ice2
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:526be20a538ee422
a=ice-pwd:2e13dde17c1cb009202f627fab90cbec358d766d049c9697
a=fingerprint:sha-256 F7:EB:F3:3E:AC:D2:EA:A7:C1:EC:79:D9:B3:8A:35:DA:70:86:4F:46:D9:2D:CC:D0:BC:81:9F:67:EF:34:2E:BD
a=candidate:1 1 UDP 2130706431 198.51.100.1 39132 typ host
a=setup:passive
a=mid:0
a=bundle-only
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=sendonly
a=rtcp-mux
a=rtcp-mux-only
a=rtcp-rsize
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
a=msid:- d46fb922-d52a-4e9c-aa87-444eadc1521b
m=video 0 UDP/TLS/RTP/SAVPF 96 97
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:526be20a538ee422
a=ice-pwd:2e13dde17c1cb009202f627fab90cbec358d766d049c9697
a=fingerprint:sha-256 F7:EB:F3:3E:AC:D2:EA:A7:C1:EC:79:D9:B3:8A:35:DA:70:86:4F:46:D9:2D:CC:D0:BC:81:9F:67:EF:34:2E:BD
a=candidate:1 1 UDP 2130706431 198.51.100.1 39132 typ host
a=setup:passive
a=mid:1
a=bundle-only
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=rtcp-mux
a=rtcp-mux-only
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=msid:- d46fb922-d52a-4e9c-aa87-444eadc1521b
]]></artwork>
          </figure>
          <t>Following <xref target="sdp-exchange-example-server-counter-offer"/> is an example where the WHEP endpoint sends a counter-offer.</t>
          <figure anchor="sdp-exchange-example-server-counter-offer">
            <name>Example where the WHEP Endpoint sends counter-offer</name>
            <artwork><![CDATA[
POST /channel/teeny-tasty-crayon HTTP/1.1
Host: whep.example.com
Content-Type: application/sdp
Content-Length: 1326

v=0
o=- 5228595038118931041 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=ice-options:trickle ice2
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:zjkk
a=ice-pwd:bP+XJMM09aR8AiX1jdukzR6Y
a=fingerprint:sha-256 DA:7B:57:DC:28:CE:04:4F:31:79:85:C4:31:67:EB:27:58:29:ED:77:2A:0D:24:AE:ED:AD:30:BC:BD:F1:9C:02
a=setup:actpass
a=mid:0
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=recvonly
a=rtcp-mux
a=rtcp-mux-only
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
m=video 0 UDP/TLS/RTP/SAVPF 96 97
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:zjkk
a=ice-pwd:bP+XJMM09aR8AiX1jdukzR6Y
a=fingerprint:sha-256 DA:7B:57:DC:28:CE:04:4F:31:79:85:C4:31:67:EB:27:58:29:ED:77:2A:0D:24:AE:ED:AD:30:BC:BD:F1:9C:02
a=setup:actpass
a=mid:1
a=bundle-only
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
a=rtcp-mux
a=rtcp-mux-only
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96

HTTP/1.1 406 Not Acceptable
Content-Type: application/sdp; valid-until="Wed, 09 Oct 2024 10:00:00 GMT"
Content-Length: 3552
Location: https://whep.example.com/channel/teeny-tasty-crayon/3de3c94a-fc0f-4659-bcaf-8bdebf718457

v=0
o=- 2438602337097565327 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS feedbackvideomslabel e6ddf4a9-b5ed-4e87-9ae3-ef126a9164d6
a=group:BUNDLE 0 1 2 3
m=video 9 RTP/SAVPF 100 96
c=IN IP4 0.0.0.0
a=rtpmap:100 VP8/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
a=rtcp:9 IN IP4 0.0.0.0
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=setup:active
a=mid:0
a=sendonly
a=ice-ufrag:CiYfXaM3jHrmpF
a=ice-pwd:VQFGPhTQj/BnaJ/tkec9m1Hi
a=fingerprint:sha-256 4C:C3:25:E0:29:75:AF:01:53:94:CD:C4:6F:5F:15:5E:E3:1A:10:AE:8C:96:07:5A:18:AC:49:5F:55:68:6C:C5
a=candidate:676201573392 1 udp 142541055 172.234.108.130 10000 typ host generation 0 network-id 1
a=ssrc:3592962548 cname:feedbackvideocname
a=ssrc:3592962548 label:feedbackvideolabel
a=ssrc:3592962548 mslabel:feedbackvideomslabel
a=ssrc:3592962548 msid:feedbackvideomslabel feedbackvideolabel
a=rtcp-mux
m=application 9 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=setup:active
a=mid:1
a=sendonly
a=ice-ufrag:CiYfXaM3jHrmpF
a=ice-pwd:VQFGPhTQj/BnaJ/tkec9m1Hi
a=fingerprint:sha-256 4C:C3:25:E0:29:75:AF:01:53:94:CD:C4:6F:5F:15:5E:E3:1A:10:AE:8C:96:07:5A:18:AC:49:5F:55:68:6C:C5
a=candidate:676201573392 1 udp 142541055 172.234.108.130 10000 typ host generation 0 network-id 1
a=rtcp-mux
a=sctpmap:5000 webrtc-datachannel 262144
m=audio 9 RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
a=rtcp:9 IN IP4 0.0.0.0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:8 c9:params:rtp-hdrext:info
a=setup:active
a=mid:2
a=sendonly
a=ice-ufrag:CiYfXaM3jHrmpF
a=ice-pwd:VQFGPhTQj/BnaJ/tkec9m1Hi
a=fingerprint:sha-256 4C:C3:25:E0:29:75:AF:01:53:94:CD:C4:6F:5F:15:5E:E3:1A:10:AE:8C:96:07:5A:18:AC:49:5F:55:68:6C:C5
a=candidate:676201573392 1 udp 142541055 172.234.108.130 10000 typ host generation 0 network-id 1
a=ssrc:2338673210 cname:0p6mZhWJw+/818iW
a=ssrc:2338673210 label:2fcad988-9bc2-4705-b408-9aee41bc3d71
a=ssrc:2338673210 mslabel:e6ddf4a9-b5ed-4e87-9ae3-ef126a9164d6
a=ssrc:2338673210 msid:e6ddf4a9-b5ed-4e87-9ae3-ef126a9164d6 2fcad988-9bc2-4705-b408-9aee41bc3d71
a=rtcp-mux
m=video 9 RTP/SAVPF 100 96
c=IN IP4 0.0.0.0
a=rtpmap:100 VP8/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
a=rtcp:9 IN IP4 0.0.0.0
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=setup:active
a=mid:3
a=sendonly
a=ice-ufrag:CiYfXaM3jHrmpF
a=ice-pwd:VQFGPhTQj/BnaJ/tkec9m1Hi
a=fingerprint:sha-256 4C:C3:25:E0:29:75:AF:01:53:94:CD:C4:6F:5F:15:5E:E3:1A:10:AE:8C:96:07:5A:18:AC:49:5F:55:68:6C:C5
a=candidate:676201573392 1 udp 142541055 172.234.108.130 10000 typ host generation 0 network-id 1
a=ssrc:755359452 cname:0p6mZhWJw+/818iW
a=ssrc:755359452 label:d6bca5d1-b69d-4d9d-8b5d-9117707cdb81
a=ssrc:755359452 mslabel:e6ddf4a9-b5ed-4e87-9ae3-ef126a9164d6
a=ssrc:755359452 msid:e6ddf4a9-b5ed-4e87-9ae3-ef126a9164d6 d6bca5d1-b69d-4d9d-8b5d-9117707cdb81
a=ssrc:280880788 cname:0p6mZhWJw+/818iW
a=ssrc:280880788 label:d6bca5d1-b69d-4d9d-8b5d-9117707cdb81
a=ssrc:280880788 mslabel:e6ddf4a9-b5ed-4e87-9ae3-ef126a9164d6
a=ssrc:280880788 msid:e6ddf4a9-b5ed-4e87-9ae3-ef126a9164d6 d6bca5d1-b69d-4d9d-8b5d-9117707cdb81
a=ssrc-group:FID 755359452 280880788
a=rtcp-mux

PATCH /channel/teeny-tasty-crayon/3de3c94a-fc0f-4659-bcaf-8bdebf718457 HTTP/1.1
Host: whep.example.com
Content-Type: application/sdp
Content-Length: 2410

v=0
o=- 4541478638207698795 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1 2 3
a=msid-semantic: WMS
m=video 56464 RTP/SAVPF 100 96
c=IN IP4 192.168.167.137
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:170904481 1 udp 2122129151 192.168.167.137 56464 typ host generation 0 network-id 1 network-cost 10
a=candidate:3499970512 1 udp 2122265343 fd2e:9c8b:abe4:2:838:1bbe:9d48:3ec 53930 typ host generation 0 network-id 3 network-cost 10
a=candidate:3061500384 1 udp 2122197247 2001:9b1:28fe:9400:88fb:57a4:5888:153b 62309 typ host generation 0 network-id 2 network-cost 10
a=ice-ufrag:37nK
a=ice-pwd:NZH/oQX6FHAl+EmWvpgoPZzC
a=ice-options:trickle
a=fingerprint:sha-256 00:91:87:75:0D:C7:F6:D4:65:4D:9F:1D:EF:52:A1:60:02:8D:E7:67:73:68:B9:78:12:D9:FD:3E:09:F8:BF:3D
a=setup:passive
a=mid:0
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=recvonly
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
m=application 9 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 0.0.0.0
a=ice-ufrag:37nK
a=ice-pwd:NZH/oQX6FHAl+EmWvpgoPZzC
a=ice-options:trickle
a=fingerprint:sha-256 00:91:87:75:0D:C7:F6:D4:65:4D:9F:1D:EF:52:A1:60:02:8D:E7:67:73:68:B9:78:12:D9:FD:3E:09:F8:BF:3D
a=setup:passive
a=mid:1
a=sctp-port:5000
m=audio 9 RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:37nK
a=ice-pwd:NZH/oQX6FHAl+EmWvpgoPZzC
a=ice-options:trickle
a=fingerprint:sha-256 00:91:87:75:0D:C7:F6:D4:65:4D:9F:1D:EF:52:A1:60:02:8D:E7:67:73:68:B9:78:12:D9:FD:3E:09:F8:BF:3D
a=setup:passive
a=mid:2
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=recvonly
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
m=video 9 RTP/SAVPF 100 96
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:37nK
a=ice-pwd:NZH/oQX6FHAl+EmWvpgoPZzC
a=ice-options:trickle
a=fingerprint:sha-256 00:91:87:75:0D:C7:F6:D4:65:4D:9F:1D:EF:52:A1:60:02:8D:E7:67:73:68:B9:78:12:D9:FD:3E:09:F8:BF:3D
a=setup:passive
a=mid:3
a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=recvonly
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100

HTTP/1.1 204 No Content
]]></artwork>
          </figure>
        </section>
        <section anchor="session-management">
          <name>Session Management</name>
          <t>The WHEP endpoint could require a live publishing event to be happening in order to allow WHEP players to start viewing a stream.
In that case, the WHEP endpoint <bcp14>SHALL</bcp14> return a "409 Conflict" response to the POST request issued by the WHEP player with a "Retry-After" header field indicating the number of seconds before sending a new request.
WHEP players <bcp14>MAY</bcp14> periodically retry the POST request to the WHEP endpoint. When doing so, the WHEP player <bcp14>MUST NOT</bcp14> send a new request before the time indicated by the "Retry-After" header field of the most recent "409 Conflict" response has elapsed.
The WHEP endpoint is responsible for determining the retry interval; if a backoff strategy (e.g., exponential backoff) is desired, the WHEP endpoint can implement it by increasing the "Retry-After" value in subsequent "409 Conflict" responses.</t>
          <t>Once a session is setup, consent freshness as per <xref target="RFC7675"/> <bcp14>SHALL</bcp14> be used to detect non-graceful disconnection by full ICE implementations and DTLS teardown for session termination by either side.
As described in <xref target="playback-session-termination"/>, the detection of a non-graceful disconnection is the mechanism by which the WHEP session and media server release the resources associated with the session when no HTTP DELETE request is received.</t>
        </section>
      </section>
      <section anchor="playback-session-termination">
        <name>Playback Session Termination</name>
        <t>To explicitly terminate a WHEP session, the WHEP player <bcp14>MUST</bcp14> perform an HTTP DELETE request to the WHEP session URL returned in the Location header field of the initial HTTP POST. Upon receiving the HTTP DELETE request, the WHEP session will be removed and the resources freed on the media server, terminating the ICE and DTLS sessions.</t>
        <t>The WHEP session and media server <bcp14>MUST NOT</bcp14> rely on receiving an HTTP DELETE request in order to release the resources associated with a WHEP session or to update any internal state related to it, as the WHEP player could terminate abruptly, lose network connectivity, or otherwise fail to send the HTTP DELETE request, or the request could fail to reach the WHEP session. The WHEP session and media server <bcp14>MUST</bcp14> consider the WHEP session terminated, and release its associated resources, when the ICE consent expires as per <xref section="5.1" sectionFormat="of" target="RFC7675"/>, when the DTLS session is closed, or when ICE connectivity is otherwise lost and not re-established.</t>
        <t>A media server terminating a session <bcp14>MUST</bcp14> follow the procedures in <xref section="5.2" sectionFormat="of" target="RFC7675"/>  for immediate revocation of consent.</t>
        <t>The WHEP endpoints <bcp14>MUST</bcp14> support OPTIONS requests for Cross-Origin Resource Sharing (CORS) as defined in <xref target="FETCH"/>. The "200 OK" response to any OPTIONS request <bcp14>SHOULD</bcp14> include an "Accept-Post" header with a media type value of "application/sdp" as per <xref target="W3C.REC-ldp-20150226"/>.</t>
      </section>
      <section anchor="ice-support">
        <name>ICE Support</name>
        <t>ICE <xref target="RFC8445"/> is a protocol that addresses the complexities of NAT traversal commonly encountered in Internet communication. NATs hinder direct communication between devices on different local networks, posing challenges for real-time applications. ICE facilitates seamless connectivity by employing techniques to discover and negotiate efficient communication paths.</t>
        <t>Trickle ICE <xref target="RFC8838"/> optimizes the connectivity process by incrementally sharing potential communication paths, reducing latency, and facilitating quicker establishment.</t>
        <t>ICE Restarts are crucial for maintaining connectivity in dynamic network conditions or disruptions, allowing devices to re-establish communication paths without complete renegotiation. This ensures minimal latency and reliable real-time communication.</t>
        <t>Trickle ICE and ICE restart support are <bcp14>RECOMMENDED</bcp14> for both WHEP sessions and clients.</t>
        <section anchor="http-patch-usage">
          <name>HTTP PATCH Request Usage</name>
          <t>The WHEP player <bcp14>MAY</bcp14> perform trickle ICE or ICE restarts by sending an HTTP PATCH request as per <xref target="RFC5789"/> to the WHEP session URL, with a body containing an SDP fragment with media type "application/trickle-ice-sdpfrag" as specified in <xref target="RFC8840"/> carrying the relevant ICE information. If the HTTP PATCH to the WHEP session has a "Content-Type" different than "application/trickle-ice-sdpfrag" (for ICE operations defined in this section) or "application/sdp" (for the SDP answer to a server counter-offer as defined in <xref target="playback-session-setup"/>), the WHEP session <bcp14>MUST</bcp14> reject the request with "415 Unsupported Media Type". If the payload is syntactically invalid or does not conform to the respective format, the WHEP session <bcp14>MUST</bcp14> reject the request with an appropriate 4XX error response.</t>
          <t>Use of "application/sdp" in an HTTP PATCH request is only valid when replying with an SDP answer to a server-sent SDP counter-offer as specified in <xref target="playback-session-setup"/> and only until the offer/answer exchange completes. If a WHEP session has already completed the SDP offer/answer exchange, or is otherwise not expecting an SDP via PATCH, the WHEP session <bcp14>MUST</bcp14> reject an "application/sdp" PATCH with "422 Unprocessable Content".</t>
          <t>If the WHEP session supports either Trickle ICE or ICE restarts, but not both, it <bcp14>MUST</bcp14> return a "422 Unprocessable Content" error response for the HTTP PATCH requests that are not supported as per <xref section="15.5.21" sectionFormat="of" target="RFC9110"/>. For avoidance of doubt, "422 Unprocessable Content" <bcp14>MAY</bcp14> also be used when the "Content-Type" is acceptable but the semantics are not supported in the current state (e.g., an SDP received via PATCH outside the server-sent counter-offer flow).</t>
          <t>The WHEP player <bcp14>MAY</bcp14> send overlapping HTTP PATCH requests to one WHEP session. Consequently, as those HTTP PATCH requests may be received out-of-order by the WHEP session, if WHEP session supports ICE restart, it <bcp14>MUST</bcp14> generate a unique strong entity-tag identifying the ICE session as per <xref section="8.8.3" sectionFormat="of" target="RFC9110"/>, being <bcp14>OPTIONAL</bcp14> otherwise. The initial value of the entity-tag identifying the initial ICE session <bcp14>MUST</bcp14> be returned in an ETag header field in the "201 Created" response to the initial POST request to the WHEP endpoint.</t>
          <t>WHEP players <bcp14>SHOULD NOT</bcp14> use entity-tag validation when matching a specific ICE session is not required, such as for example when initiating a DELETE request to terminate a session. WHEP sessions <bcp14>MUST</bcp14> ignore any entity-tag value sent by the WHEP player when ICE session matching is not required, as in the HTTP DELETE request.</t>
          <t>Missing or outdated ETags in the PATCH requests from WHEP players  will be answered by WHEP sessions as per <xref section="13.1.1" sectionFormat="of" target="RFC9110"/> and <xref section="3" sectionFormat="of" target="RFC6585"/>, with a "428 Precondition Required" response for a missing entity-tag, and a "412 Precondition Failed" response for a non-matching entity-tag.</t>
        </section>
        <section anchor="trickle-ice">
          <name>Trickle ICE</name>
          <t>Depending on the Trickle ICE support on the WHEP player, the initial offer by the WHEP player <bcp14>MAY</bcp14> be sent after the full ICE gathering is complete with the full list of ICE candidates, it <bcp14>MAY</bcp14> only contain local candidates as per <xref target="RFC8445"/> or even an empty list of candidates as per <xref target="RFC8863"/>. For the purpose of reducing setup times, when using Trickle ICE the WHEP player <bcp14>SHOULD</bcp14> send the SDP offer (containing either locally gathered ICE candidates or an empty list of candidates) as soon as possible.</t>
          <t>In order to simplify the protocol, the WHEP session cannot signal additional ICE candidates to the WHEP player after the SDP answer has been sent. The WHEP endpoint <bcp14>SHALL</bcp14> gather all the ICE candidates for the media server before responding to the client request and the SDP answer <bcp14>SHALL</bcp14> contain the full list of ICE candidates of the media server.</t>
          <t>As the WHEP player needs to know the WHEP session URL associated with the ICE session in order to send a PATCH request containing new ICE candidates, it <bcp14>MUST</bcp14> wait and buffer any gathered candidates until the "201 Created" HTTP response to the initial POST request is received.
In order to lower the HTTP traffic and processing time required the WHEP player <bcp14>SHOULD</bcp14> send a single aggregated HTTP PATCH request with all the buffered ICE candidates once the response is received.
Additionally, if ICE restarts are supported by the WHEP session, the WHEP player needs to know the entity-tag associated with the ICE session in order to send a PATCH request containing new ICE candidates, so it <bcp14>MUST</bcp14> also wait and buffer any gathered candidates until it receives the HTTP response with the new entity-tag value to the last PATCH request performing an ICE restart.</t>
          <t>WHEP players generating the HTTP PATCH body with the SDP fragment and its subsequent processing by WHEP sessions <bcp14>MUST</bcp14> follow to the guidelines defined in <xref section="4.4" sectionFormat="of" target="RFC8840"/> with the following considerations:</t>
          <ul spacing="normal">
            <li>
              <t>As per <xref target="RFC9429"/>, only m-sections not marked as bundle-only can gather ICE candidates, so given that the "max-bundle" policy is being used, the SDP fragment will contain only the offerer-tagged m-line of the bundle group.</t>
            </li>
            <li>
              <t>The WHEP player <bcp14>MAY</bcp14> exclude ICE candidates from the HTTP PATCH body if they have already been confirmed by the WHEP session with a successful HTTP response to a previous HTTP PATCH request.</t>
            </li>
          </ul>
          <t>WHEP sessions and players that support Trickle ICE <bcp14>MUST</bcp14> make use of entity-tags and conditional requests as explained in <xref target="http-patch-usage"/>.</t>
          <t>When a WHEP session receives a PATCH request that adds new ICE candidates without performing an ICE restart, it <bcp14>MUST</bcp14> return a "204 No Content" response without a body and <bcp14>MUST NOT</bcp14> include an ETag header in the response. If the WHEP session does not support a candidate transport or is not able to resolve the connection address, it <bcp14>MUST</bcp14> silently discard the candidate and continue processing the rest of the request normally.</t>
          <figure anchor="trickle-ice-example">
            <name>Example of a Trickle ICE request and response</name>
            <artwork><![CDATA[
PATCH /session/id HTTP/1.1
Host: whep.example.com
If-Match: "xyzzy"
Content-Type: application/trickle-ice-sdpfrag
Content-Length: 576

a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVPF 111
a=mid:0
a=ice-ufrag:EsAw
a=ice-pwd:P2uYro0UCOQ4zxjKXaWCBui1
a=candidate:1387637174 1 udp 2122260223 192.0.2.1 61764 typ host generation 0 ufrag EsAw network-id 1
a=candidate:3471623853 1 udp 2122194687 198.51.100.2 61765 typ host generation 0 ufrag EsAw network-id 2
a=candidate:473322822 1 tcp 1518280447 192.0.2.1 9 typ host tcptype active generation 0 ufrag EsAw network-id 1
a=candidate:2154773085 1 tcp 1518214911 198.51.100.2 9 typ host tcptype active generation 0 ufrag EsAw network-id 2
a=end-of-candidates

HTTP/1.1 204 No Content
]]></artwork>
          </figure>
          <t><xref target="trickle-ice-example"/> shows an example of the Trickle ICE procedure where the WHEP player sends a PATCH request with updated ICE candidate information and receives a successful response from the WHEP session.</t>
        </section>
        <section anchor="ice-restarts">
          <name>ICE Restarts</name>
          <t>As defined in <xref target="RFC8839"/>, when an ICE restart occurs, a new SDP offer/answer exchange is triggered. However, as WHEP does not support renegotiation of non-ICE related SDP information, a WHEP player will not send a new offer when an ICE restart occurs. Instead, the WHEP player and WHEP session will only exchange the relevant ICE information via an HTTP PATCH request as defined in <xref target="http-patch-usage"/> and <bcp14>MUST</bcp14> assume that the previously negotiated non-ICE related SDP information still apply after the ICE restart.</t>
          <t>When performing an ICE restart, the WHEP player <bcp14>MUST</bcp14> include the updated "ice-pwd" and "ice-ufrag" in the SDP fragment of the HTTP PATCH request body as well as the new set of gathered ICE candidates as defined in <xref target="RFC8840"/>.
Similar what is defined in <xref target="trickle-ice"/>, as per <xref target="RFC9429"/> only m-sections not marked as bundle-only can gather ICE candidates, so given that the "max-bundle" policy is being used, the SDP fragment will contain only the offerer-tagged m-line of the bundle group.
A WHEP player sending a PATCH request for performing ICE restart <bcp14>MUST</bcp14> contain an "If-Match" header field with a field-value "*" as per <xref section="13.1.1" sectionFormat="of" target="RFC9110"/>.</t>
          <t><xref target="RFC8840"/> states that an agent <bcp14>MUST</bcp14> discard any received requests containing "ice-pwd" and "ice-ufrag" attributes that do not match those of the current ICE Negotiation Session, however, any WHEP session receiving an updated "ice-pwd" and "ice-ufrag" attributes <bcp14>MUST</bcp14> consider the request as performing an ICE restart instead and, if supported, <bcp14>SHALL</bcp14> return a "200 OK" with an "application/trickle-ice-sdpfrag" body containing the new ICE username fragment and password and a new set of ICE candidates for the WHEP session. Also, the "200 OK" response for a successful ICE restart <bcp14>MUST</bcp14> contain the new entity-tag corresponding to the new ICE session in an ETag response header field and <bcp14>MAY</bcp14> contain a new set of ICE candidates for the media server.</t>
          <t>As defined in <xref section="4.4.1.1.1" sectionFormat="of" target="RFC8839"/> the set of candidates after an ICE restart may include some, none, or all of the previous candidates for that data stream and may include a totally new set of candidates. So after performing a successful ICE restart, both the WHEP player and the WHEP session <bcp14>MUST</bcp14> replace the previous set of remote candidates with the new set exchanged in the HTTP PATCH request and response, discarding any remote ICE candidate not present on the new set. Both the WHEP player and the WHEP session <bcp14>MUST</bcp14> ensure that the HTTP PATCH request and response bodies include the same "ice-options", "ice-pacing", and "ice-lite" attributes as those used in the SDP offer or answer.</t>
          <t>If the ICE restart request cannot be satisfied by the WHEP session, the WHEP session <bcp14>MUST</bcp14> return an appropriate HTTP error code, <bcp14>MUST NOT</bcp14> terminate the session immediately, and <bcp14>MUST</bcp14> keep the existing ICE session. The WHEP player <bcp14>MAY</bcp14> retry performing a new ICE restart or terminate the session by issuing an HTTP DELETE request instead. In any case, the session <bcp14>MUST</bcp14> be terminated if the ICE consent expires as a consequence of the failed ICE restart as per <xref section="5.1" sectionFormat="of" target="RFC7675"/>.</t>
          <t>In case of unstable network conditions, the ICE restart HTTP PATCH requests and responses might be received out of order. In order to mitigate this scenario, when the client performs an ICE restart, it <bcp14>MUST</bcp14> discard any previous ICE username and passwords fragments and ignore any further HTTP PATCH response received from a pending HTTP PATCH request. WHEP players <bcp14>MUST</bcp14> apply only the ICE information received in the response to the last sent request. If there is a mismatch between the ICE information at the WHEP player and at the WHEP session (because of an out-of-order request), the STUN requests will contain invalid ICE information and will be dropped by the receiving side. If this situation is detected by the WHEP player, it <bcp14>MUST</bcp14> send a new ICE restart request to the WHEP session.</t>
          <figure anchor="trickle-restart-example">
            <name>Example of an ICE Restart Request and Response</name>
            <artwork><![CDATA[
PATCH /session/id HTTP/1.1
Host: whep.example.com
If-Match: "*"
Content-Type: application/trickle-ice-sdpfrag
Content-Length: 82

a=ice-options:trickle ice2
a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVPF 111
a=mid:0
a=ice-ufrag:ysXw
a=ice-pwd:vw5LmwG4y/e6dPP/zAP9Gp5k
a=candidate:1387637174 1 udp 2122260223 192.0.2.1 61764 typ host generation 0 ufrag EsAw network-id 1
a=candidate:3471623853 1 udp 2122194687 198.51.100.2 61765 typ host generation 0 ufrag EsAw network-id 2
a=candidate:473322822 1 tcp 1518280447 192.0.2.1 9 typ host tcptype active generation 0 ufrag EsAw network-id 1
a=candidate:2154773085 1 tcp 1518214911 198.51.100.2 9 typ host tcptype active generation 0 ufrag EsAw network-id 2

HTTP/1.1 200 OK
ETag: "abccd"
Content-Type: application/trickle-ice-sdpfrag
Content-Length: 252

a=ice-lite
a=ice-options:trickle ice2
a=group:BUNDLE 0 1
m=audio 9 UDP/TLS/RTP/SAVPF 111
a=mid:0
a=ice-ufrag:289b31b754eaa438
a=ice-pwd:0b66f472495ef0ccac7bda653ab6be49ea13114472a5d10a
a=candidate:1 1 udp 2130706431 198.51.100.1 39132 typ host
a=end-of-candidates
]]></artwork>
          </figure>
          <t><xref target="trickle-restart-example"/> demonstrates a Trickle ICE restart procedure example. The WHEP player sends a PATCH request containing updated ICE information, including a new ufrag and password, along with newly gathered ICE candidates. In response, the WHEP session provides ICE information for the session after the ICE restart, including the updated ufrag and password, as well as the previous ICE candidate.</t>
        </section>
      </section>
      <section anchor="webrtc-constraints">
        <name>WebRTC Constraints</name>
        <t>To simplify the implementation of WHEP in both players and media servers, WHEP introduces specific restrictions on WebRTC usage. The following subsections will explain these restrictions in detail:</t>
        <section anchor="sdp-bundle">
          <name>SDP Bundle</name>
          <t>Both the WHEP player and the WHEP endpoint <bcp14>SHALL</bcp14> support <xref target="RFC9143"/> and use the "max-bundle" policy as defined in <xref target="RFC9429"/>. The WHEP player and the media server <bcp14>MUST</bcp14> support multiplexed media associated with the BUNDLE group as per <xref section="9" sectionFormat="of" target="RFC9143"/>. In addition, per <xref target="RFC9143"/> the WHEP player and media server <bcp14>SHALL</bcp14> use RTP/RTCP multiplexing <xref target="RFC8858"/> for all bundled media. In order to reduce the network resources required at the media server, both the WHEP player and WHEP endpoints <bcp14>MUST</bcp14> include the "rtcp-mux-only" attribute in each bundled "m=" sections as per <xref section="3" sectionFormat="of" target="RFC8858"/>.</t>
        </section>
        <section anchor="single-mediastream">
          <name>Single MediaStream</name>
          <t>WHEP only supports a single MediaStream as defined in <xref target="RFC8830"/> and therefore all "m=" sections <bcp14>MUST</bcp14> contain an "msid" attribute with the same value. The MediaStream <bcp14>MUST</bcp14> contain at least one MediaStreamTrack of any media kind and it <bcp14>MUST NOT</bcp14> have two or more than MediaStreamTracks for the same media (audio or video).</t>
        </section>
        <section anchor="trickle-ice-and-ice-restarts">
          <name>Trickle ICE and ICE Restarts</name>
          <t>The media server <bcp14>SHOULD</bcp14> support full ICE, unless it is connected to the Internet with an IP address that is accessible by each WHEP player that is authorized to use it, in which case it <bcp14>MAY</bcp14> support only ICE lite. The WHEP player <bcp14>MUST</bcp14> implement and use full ICE.</t>
          <t>Trickle ICE and ICE restart support is <bcp14>OPTIONAL</bcp14> for both the WHEP players and media servers as explained in <xref target="ice-support"/>.</t>
        </section>
      </section>
      <section anchor="load-balancing-and-redirections">
        <name>Load Balancing and Redirections</name>
        <t>WHEP endpoints and media servers might not be colocated on the same server, so it is possible to load balance incoming requests to different media servers.</t>
        <t>WHEP players <bcp14>SHALL</bcp14> support HTTP redirections as per <xref section="15.4" sectionFormat="of" target="RFC9110"/>. In order to avoid POST requests to be redirected as GET requests, status codes "301 Moved Permanently" and "302 Found" <bcp14>MUST NOT</bcp14> be used and the preferred method for performing load balancing is via the "307 Temporary Redirect" response status code as described in <xref section="15.4.8" sectionFormat="of" target="RFC9110"/>. Redirections are not required to be supported for the PATCH and DELETE requests.</t>
        <t>In case of high load, the WHEP endpoints <bcp14>MAY</bcp14> return a "503 Service Unavailable" response indicating that the server is currently unable to handle the request due to a temporary overload or scheduled maintenance as described in <xref section="15.6.4" sectionFormat="of" target="RFC9110"/>, which will likely be alleviated after some delay. The WHEP endpoint might send a Retry-After header field indicating the minimum time that the user agent ought to wait before making a follow-up request as described in <xref section="10.2.3" sectionFormat="of" target="RFC9110"/>.</t>
      </section>
      <section anchor="stunturn-server-configuration">
        <name>STUN/TURN Server Configuration</name>
        <t>The WHEP Endpoint <bcp14>MAY</bcp14> return STUN/TURN server configuration URLs and credentials usable by the client in the "201 Created" response to the HTTP POST request to the WHEP Endpoint URL.</t>
        <t>Each STUN/TURN server will be returned using the Link header field <xref target="RFC8288"/> with a "rel" attribute value of "ice-server" as specified in <xref target="RFC9725"/></t>
        <t>It might be also possible to configure the STUN/TURN server URLs with long-term credentials provided by either the broadcasting service or an external TURN provider on the WHEP player, overriding the values provided by the WHEP Endpoint.</t>
      </section>
      <section anchor="authentication-and-authorization">
        <name>Authentication and Authorization</name>
        <t>All WHEP endpoints, sessions and clients <bcp14>MUST</bcp14> support HTTP Authentication as per <xref section="11" sectionFormat="of" target="RFC9110"/> and in order to ensure interoperability, bearer token authentication as defined in the next section <bcp14>MUST</bcp14> be supported by all WHEP entities. However this does not preclude the support of additional HTTP authentication schemes as defined in <xref section="11.6" sectionFormat="of" target="RFC9110"/>.</t>
        <section anchor="bearer-token-authentication">
          <name>Bearer Token Authentication</name>
          <t>WHEP endpoints and sessions <bcp14>MAY</bcp14> require the HTTP request to be authenticated using an HTTP Authorization header field with a Bearer token as specified in <xref section="2.1" sectionFormat="of" target="RFC6750"/>. WHEP players <bcp14>MUST</bcp14> implement this authentication and authorization mechanism and send the HTTP Authorization header field in all HTTP requests sent to either the WHEP endpoint or session (except the preflight OPTIONS requests for CORS).</t>
          <t>The nature, syntax, and semantics of the bearer token, as well as how to distribute it to the client, is outside the scope of this document. Some examples of the kind of tokens that could be used are, but are not limited to, JSON Web Tokens (JWTs) as per <xref target="RFC6750"/> and <xref target="RFC8725"/> or a shared secret stored on a database. The tokens are typically made available to the end user alongside the WHEP endpoint URL and configured on the WHEP players.</t>
          <t>WHEP endpoints and sessions could perform the authentication and authorization by encoding an authentication token within the URLs for the WHEP endpoints or sessions instead. In case the WHEP player is not configured to use a bearer token, the HTTP Authorization header field <bcp14>MUST NOT</bcp14> be sent in any request.</t>
        </section>
      </section>
      <section anchor="protocol-extensions">
        <name>Protocol Extensions</name>
        <t>In order to support future extensions to be defined for WHEP, a common procedure for registering and announcing the new extensions is defined.</t>
        <t>Protocol extensions supported by the WHEP server <bcp14>MUST</bcp14> be advertised to the WHEP player in the "201 Created" response to the initial HTTP POST request sent to the WHEP Endpoint.
The WHEP Endpoint <bcp14>MUST</bcp14> return one "Link" header field for each extension that it supports, with the extension "rel" attribute value containing the extension URN and the URL for the HTTP resource that will be available for receiving requests related to that extension.</t>
        <t>Protocol extensions are optional for both WHEP players and WHEP Endpoints and sessions. WHEP players <bcp14>MUST</bcp14> ignore any Link attribute with an unknown "rel" attribute value and WHEP Endpoints and sessions <bcp14>MUST NOT</bcp14> require the usage of any of the extensions.</t>
        <t>Each protocol extension <bcp14>MUST</bcp14> register a unique "rel" attribute value at IANA starting with the prefix: "urn:ietf:params:whep:ext" as specified in <xref target="urn-whep-subspace"/>.</t>
        <t>For example, considering a potential extension of server-to-client communication using server-sent events as specified in https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events, the URL for connecting to the server-sent event resource for the ingested stream could be returned in the initial HTTP "201 Created" response with a "Link" header field and a "rel" attribute of "urn:ietf:params:whep:ext:example:server-sent-events" (this document does not specify such an extension, and uses it only as an example).</t>
        <t>In this theoretical case, the "201 Created" response to the HTTP POST request would look like:</t>
        <figure anchor="protocol-extension-example">
          <name>Example of a WHEP protocol extension</name>
          <artwork><![CDATA[
HTTP/1.1 201 Created
Content-Type: application/sdp
Location: https://whep.example.com/session/id
Link: <https://whep.example.com/session/id/sse>;
      rel="urn:ietf:params:whep:ext:example:server-sent-events"
]]></artwork>
        </figure>
        <t><xref target="protocol-extension-example"/> shows an example of a WHEP protocol extension supported by the WHEP session, as indicated in the Link header of the 201 Created response.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document specifies a new protocol on top of HTTP and WebRTC, thus, security protocols and considerations from related specifications apply to the WHEP specification. These include:</t>
      <ul spacing="normal">
        <li>
          <t>WebRTC security considerations: <xref target="RFC8826"/>. HTTPS <bcp14>SHALL</bcp14> be used in order to preserve the WebRTC security model.</t>
        </li>
        <li>
          <t>Transport Layer Security (TLS): <xref target="RFC9446"/> and <xref target="RFC9147"/>.</t>
        </li>
        <li>
          <t>HTTP security: <xref section="11" sectionFormat="of" target="RFC9112"/> and <xref section="17" sectionFormat="of" target="RFC9110"/>.</t>
        </li>
        <li>
          <t>URI security: <xref section="7" sectionFormat="of" target="RFC3986"/>.</t>
        </li>
      </ul>
      <t>On top of that, WHEP exposes a thin new attack surface specific of the REST API methods used within it:</t>
      <ul spacing="normal">
        <li>
          <t>HTTP POST flooding and resource exhaustion:
It would be possible for an attacker in possession of authentication credentials valid for watching a WHEP stream to make multiple HTTP POST to the WHEP endpoint.
This will force the WHEP endpoint to process the incoming SDP and allocate resources for being able to setup the DTLS/ICE connection.
While the malicious client does not need to initiate the DTLS/ICE connection at all, the WHEP session will have to wait for the DTLS/ICE connection timeout in order to release the associated resources.
If the connection rate is high enough, this could lead to resource exhaustion on the servers handling the requests and it will not be able to process legitimate incoming ingests.
In order to prevent this scenario, WHEP endpoints <bcp14>SHOULD</bcp14> implement a rate limit and avalanche control mechanism for incoming initial HTTP POST requests.</t>
        </li>
        <li>
          <t>Insecure direct object references (IDOR) on the WHEP session locations:
If the URLs returned by the WHEP endpoint for the WHEP sessions location are easy to guess, it would be possible for an attacker to send multiple HTTP DELETE requests and terminate all the WHEP sessions currently running.
In order to prevent this scenario, WHEP endpoints <bcp14>SHOULD</bcp14> generate URLs with enough randomness, using a cryptographically secure pseudorandom number generator following the best practices in Randomness Requirements for Security <xref target="RFC4086"/>, and implement a rate limit and avalanche control mechanism for HTTP DELETE requests.
The security considerations for Universally Unique IDentifier (UUID) <xref section="6" sectionFormat="comma" target="RFC9562"/> are applicable for generating the WHEP sessions location URL.</t>
        </li>
        <li>
          <t>HTTP PATCH flooding: 
Similar to the HTTP POST flooding, a malicious client could also create a resource exhaustion by sending multiple HTTP PATCH request to the WHEP session, although the WHEP sessions can limit the impact by not allocating new ICE candidates and reusing the existing ICE candidates when doing ICE restarts.
In order to prevent this scenario, WHEP endpoints <bcp14>SHOULD</bcp14> implement a rate limit and avalanche control mechanism for incoming HTTP PATCH requests.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This specification adds a registry for URN sub-namespaces for WHEP protocol extensions.</t>
      <section anchor="registration-of-whep-urn-sub-namespace-and-whep-registries">
        <name>Registration of WHEP URN Sub-Namespace and WHEP Registries</name>
        <t>IANA is asked to add an entry to the "IETF URN Sub-namespace for Registered Protocol Parameter Identifiers" registry and create a sub-namespace for the Registered Parameter Identifier as per <xref target="RFC3553"/>: "urn:ietf:params:whep".</t>
        <t>To manage this sub-namespace, IANA is asked to create the "WebRTC-HTTP egress protocol (WHEP) URNs" and "WebRTC-HTTP egress protocol (WHEP) extension URNs".</t>
        <section anchor="urn-whep-registry">
          <name>WebRTC-HTTP Egress Protocol (WHEP) URNs Registry</name>
          <t>The "WebRTC-HTTP egress protocol (WHEP) URNs" registry is used to manage entries within the "urn:ietf:params:whep" namespace. The registry descriptions is as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Registry group: WebRTC-HTTP egress protocol (WHEP)</t>
            </li>
            <li>
              <t>Registry name: WebRTC-HTTP egress protocol (WHEP) URNs</t>
            </li>
            <li>
              <t>Specification: this document (RFC TBD)</t>
            </li>
            <li>
              <t>Registration procedure: Specification Required</t>
            </li>
            <li>
              <t>Field names: URI, description, change controller, reference and IANA registry reference</t>
            </li>
          </ul>
          <t>The registry contains a single initial value:</t>
          <ul spacing="normal">
            <li>
              <t>URI: urn:ietf:params:whep:ext</t>
            </li>
            <li>
              <t>Description: WebRTC-HTTP egress protocol (WHEP) extension URNs</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Reference: this document (RFC TBD) Section <xref target="urn-whep-ext-registry"/></t>
            </li>
            <li>
              <t>IANA registry reference: WebRTC-HTTP egress protocol (WHEP) extension URNs registry.</t>
            </li>
          </ul>
        </section>
        <section anchor="urn-whep-ext-registry">
          <name>WebRTC-HTTP Egress Protocol (WHEP) Extension URNs Registry</name>
          <t>The "WebRTC-HTTP egress protocol (WHEP) Extension URNs" is used to manage entries within the "urn:ietf:params:whep:ext" namespace. The registry descriptions is as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Registry group: WebRTC-HTTP egress protocol (WHEP)</t>
            </li>
            <li>
              <t>Registry name: WebRTC-HTTP egress protocol (WHEP) Extension URNs</t>
            </li>
            <li>
              <t>Specification: this document (RFC TBD)</t>
            </li>
            <li>
              <t>Registration procedure: Specification Required</t>
            </li>
            <li>
              <t>Field names: URI, description, change controller, reference and IANA registry reference</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="urn-whep-subspace">
        <name>URN Sub-Namespace for WHEP</name>
        <t>WHEP endpoint utilizes URNs to identify the supported WHEP protocol extensions on the "rel" attribute of the Link header as defined in <xref target="protocol-extensions"/>.</t>
        <t>This section creates and registers an IETF URN Sub-namespace for use in the WHEP specifications and future extensions.</t>
        <section anchor="specification-template">
          <name>Specification Template</name>
          <t>Namespace ID:</t>
          <ul spacing="normal">
            <li>
              <t>The Namespace ID "whep" has been assigned.</t>
            </li>
          </ul>
          <t>Registration Information:</t>
          <ul spacing="normal">
            <li>
              <t>Version: 1</t>
            </li>
            <li>
              <t>Date: TBD</t>
            </li>
          </ul>
          <t>Declared registrant of the namespace:</t>
          <ul spacing="normal">
            <li>
              <t>Registering organization: The Internet Engineering Task Force.</t>
            </li>
            <li>
              <t>Designated contact: A designated expert will monitor the WHEP public mailing list, "wish@ietf.org".</t>
            </li>
          </ul>
          <t>Declaration of Syntactic Structure:</t>
          <ul spacing="normal">
            <li>
              <t>The Namespace Specific String (NSS) of all URNs that use the "whep" Namespace ID shall have the following structure: urn:ietf:params:whep:{type}:{name}:{other}.</t>
            </li>
            <li>
              <t>The keywords have the following meaning:  </t>
              <ul spacing="normal">
                <li>
                  <t>type: The entity type. This specification only defines the "ext" type.</t>
                </li>
                <li>
                  <t>name: A required ASCII string that conforms to the URN syntax requirements (see <xref target="RFC8141"/>) and defines a major namespace of a WHEP protocol extension. The value <bcp14>MAY</bcp14> also be an industry name or organization name.</t>
                </li>
                <li>
                  <t>other: Any ASCII string that conforms to the URN syntax requirements (see <xref target="RFC8141"/>) and defines the sub-namespace (which <bcp14>MAY</bcp14> be further broken down in namespaces delimited by colons) as needed to uniquely identify an WHEP protocol extension.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>Relevant Ancillary Documentation:</t>
          <ul spacing="normal">
            <li>
              <t>None</t>
            </li>
          </ul>
          <t>Identifier Uniqueness Considerations:</t>
          <ul spacing="normal">
            <li>
              <t>The designated contact shall be responsible for reviewing and enforcing uniqueness.</t>
            </li>
          </ul>
          <t>Identifier Persistence Considerations:</t>
          <ul spacing="normal">
            <li>
              <t>Once a name has been allocated, it <bcp14>MUST NOT</bcp14> be reallocated for a different purpose.</t>
            </li>
            <li>
              <t>The rules provided for assignments of values within a sub-namespace <bcp14>MUST</bcp14> be constructed so that the meanings of values cannot change.</t>
            </li>
            <li>
              <t>This registration mechanism is not appropriate for naming values whose meanings may change over time.</t>
            </li>
          </ul>
          <t>Process of Identifier Assignment:</t>
          <ul spacing="normal">
            <li>
              <t>Namespace with type "ext" (e.g., "urn:ietf:params:whep:ext") is reserved for IETF-approved WHEP specifications.</t>
            </li>
          </ul>
          <t>Process of Identifier Resolution:</t>
          <ul spacing="normal">
            <li>
              <t>None specified.</t>
            </li>
          </ul>
          <t>Rules for Lexical Equivalence:</t>
          <ul spacing="normal">
            <li>
              <t>No special considerations; the rules for lexical equivalence specified in <xref target="RFC8141"/> apply.</t>
            </li>
          </ul>
          <t>Conformance with URN Syntax:</t>
          <ul spacing="normal">
            <li>
              <t>No special considerations.</t>
            </li>
          </ul>
          <t>Validation Mechanism:</t>
          <ul spacing="normal">
            <li>
              <t>None specified.</t>
            </li>
          </ul>
          <t>Scope:</t>
          <ul spacing="normal">
            <li>
              <t>Global.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="registering-whep-protocol-extensions-urns">
        <name>Registering WHEP Protocol Extensions URNs</name>
        <t>This section defines the process for registering new WHEP protocol extensions URNs with IANA in the "WebRTC-HTTP egress protocol (WHEP) extension URNs" registry (see <xref target="urn-whep-subspace"/>).</t>
        <t>A WHEP Protocol Extension URNs is used as a value in the "rel" attribute of the Link header as defined in <xref target="protocol-extensions"/> for the purpose of signaling WHEP extensions supported by the WHEP endpoints.</t>
        <t>WHEP Protocol Extensions URNs have an "ext" type as defined in <xref target="urn-whep-subspace"/>.</t>
        <section anchor="registration-procedure">
          <name>Registration Procedure</name>
          <t>The IETF has created a mailing list, "wish@ietf.org", which can be used
   for public discussion of WHEP protocol extensions proposals prior to registration.
   Use of the mailing list is strongly encouraged. The IESG has
   appointed a designated expert as per <xref target="RFC8126"/> who will monitor the
   wish@ietf.org mailing list and review registrations.</t>
          <t>Registration of new "ext" type URNs (in the namespace "urn:ietf:params:whep:ext") belonging to a WHEP Protocol Extension <bcp14>MUST</bcp14> be documented in a permanent and readily available public specification, in sufficient detail so that interoperability between independent implementations is possible and reviewed by the designated expert as per Section 4.6 of <xref target="RFC8126"/>.
   An Standards Track RFC is <bcp14>REQUIRED</bcp14> for the registration of new value data types that modify existing properties.
   An Standards Track RFC is also <bcp14>REQUIRED</bcp14> for registration of WHEP Protocol Extensions URNs that modify WHEP Protocol Extensions previously documented in an existing RFC.</t>
          <t>The registration procedure begins when a completed registration template, defined in the sections below, is sent to iana@iana.org.
   Decisions made by the designated expert can be appealed to an Applications and Real Time (ART) Area Director, then to the IESG.
   The normal appeals procedure described in <xref target="BCP9"/> is to be followed.</t>
          <t>Once the registration procedure concludes successfully, IANA creates
   or modifies the corresponding record in the WHEP Protocol Extension registry.</t>
          <t>An RFC specifying one or more new WHEP Protocol Extension URNs <bcp14>MUST</bcp14> include the
   completed registration templates, which <bcp14>MAY</bcp14> be expanded with
   additional information. These completed templates are intended to go
   in the body of the document, not in the IANA Considerations section.
   The RFC <bcp14>MUST</bcp14> include the syntax and semantics of any extension-specific attributes that may be provided in a Link header
   field advertising the extension.</t>
        </section>
        <section anchor="guidance-for-designated-experts">
          <name>Guidance for Designated Experts</name>
          <t>The Designated Expert (DE) is expected to ascertain the existence of suitable documentation (a specification) as described in <xref target="RFC8126"/> and to verify that the document is permanently and publicly available.</t>
          <t>The DE is also expected to check the clarity of purpose and use of the requested registration.</t>
          <t>Additionally, the DE must verify that any request for one of these registrations has been made available for review and comment by posting the request to the WebRTC Ingest Signaling over HTTPS (wish) Working Group mailing list.</t>
          <t>Specifications should be documented in an Internet-Draft. Lastly, the DE must ensure that any other request for a code point does not conflict with work that is active in or already published by the IETF.</t>
        </section>
        <section anchor="whep-protocol-extension-registration-template">
          <name>WHEP Protocol Extension Registration Template</name>
          <t>A WHEP Protocol Extension URNs is defined by completing the following template:</t>
          <ul spacing="normal">
            <li>
              <t>URN: A unique URN for the WHEP Protocol Extension.</t>
            </li>
            <li>
              <t>Reference: A formal reference to the publicly available specification</t>
            </li>
            <li>
              <t>Description: A brief description of the function of the extension, in a short paragraph or two</t>
            </li>
            <li>
              <t>Contact information: Contact information for the organization or person making the registration</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FETCH" target="https://fetch.spec.whatwg.org">
          <front>
            <title>Fetch - Living Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC9429">
          <front>
            <title>JavaScript Session Establishment Protocol (JSEP)</title>
            <author fullname="J. Uberti" initials="J." surname="Uberti"/>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla"/>
            <date month="April" year="2024"/>
            <abstract>
              <t>This document describes the mechanisms for allowing a JavaScript application to control the signaling plane of a multimedia session via the interface specified in the W3C RTCPeerConnection API and discusses how this relates to existing signaling protocols.</t>
              <t>This specification obsoletes RFC 8829.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9429"/>
          <seriesInfo name="DOI" value="10.17487/RFC9429"/>
        </reference>
        <reference anchor="RFC3264">
          <front>
            <title>An Offer/Answer Model with Session Description Protocol (SDP)</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a mechanism by which two entities can make use of the Session Description Protocol (SDP) to arrive at a common view of a multimedia session between them. In the model, one participant offers the other a description of the desired session from their perspective, and the other participant answers with the desired session from their perspective. This offer/answer model is most useful in unicast sessions where information from both participants is needed for the complete view of the session. The offer/answer model is used by protocols like the Session Initiation Protocol (SIP). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3264"/>
          <seriesInfo name="DOI" value="10.17487/RFC3264"/>
        </reference>
        <reference anchor="RFC9725">
          <front>
            <title>WebRTC-HTTP Ingestion Protocol (WHIP)</title>
            <author fullname="S. Garcia Murillo" initials="S." surname="Garcia Murillo"/>
            <author fullname="A. Gouaillard" initials="A." surname="Gouaillard"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>This document describes a simple HTTP-based protocol that will allow WebRTC-based ingestion of content into streaming services and/or Content Delivery Networks (CDNs).</t>
              <t>This document updates RFCs 8840 and 8842.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9725"/>
          <seriesInfo name="DOI" value="10.17487/RFC9725"/>
        </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>
        <reference anchor="RFC9110">
          <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="RFC8288">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <reference anchor="RFC6906">
          <front>
            <title>The 'profile' Link Relation Type</title>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="March" year="2013"/>
            <abstract>
              <t>This specification defines the 'profile' link relation type that allows resource representations to indicate that they are following one or more profiles. A profile is defined not to alter the semantics of the resource representation itself, but to allow clients to learn about additional semantics (constraints, conventions, extensions) that are associated with the resource representation, in addition to those defined by the media type and possibly other mechanisms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6906"/>
          <seriesInfo name="DOI" value="10.17487/RFC6906"/>
        </reference>
        <reference anchor="RFC5789">
          <front>
            <title>PATCH Method for HTTP</title>
            <author fullname="L. Dusseault" initials="L." surname="Dusseault"/>
            <author fullname="J. Snell" initials="J." surname="Snell"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>Several applications extending the Hypertext Transfer Protocol (HTTP) require a feature to do partial resource modification. The existing HTTP PUT method only allows a complete replacement of a document. This proposal adds a new HTTP method, PATCH, to modify an existing HTTP resource. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5789"/>
          <seriesInfo name="DOI" value="10.17487/RFC5789"/>
        </reference>
        <reference anchor="RFC7675">
          <front>
            <title>Session Traversal Utilities for NAT (STUN) Usage for Consent Freshness</title>
            <author fullname="M. Perumal" initials="M." surname="Perumal"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="R. Ravindranath" initials="R." surname="Ravindranath"/>
            <author fullname="T. Reddy" initials="T." surname="Reddy"/>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>To prevent WebRTC applications, such as browsers, from launching attacks by sending traffic to unwilling victims, periodic consent to send needs to be obtained from remote endpoints.</t>
              <t>This document describes a consent mechanism using a new Session Traversal Utilities for NAT (STUN) usage.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7675"/>
          <seriesInfo name="DOI" value="10.17487/RFC7675"/>
        </reference>
        <reference anchor="W3C.REC-ldp-20150226" target="https://www.w3.org/TR/2015/REC-ldp-20150226/">
          <front>
            <title>Linked Data Platform 1.0</title>
            <author fullname="Ashok Malhotra" role="editor"/>
            <author fullname="John Arwe" role="editor"/>
            <author fullname="Steve Speicher" role="editor"/>
            <date day="26" month="February" year="2015"/>
          </front>
          <seriesInfo name="W3C REC" value="REC-ldp-20150226"/>
          <seriesInfo name="W3C" value="REC-ldp-20150226"/>
        </reference>
        <reference anchor="RFC8445">
          <front>
            <title>Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal</title>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This document describes a protocol for Network Address Translator (NAT) traversal for UDP-based communication. This protocol is called Interactive Connectivity Establishment (ICE). ICE makes use of the Session Traversal Utilities for NAT (STUN) protocol and its extension, Traversal Using Relay NAT (TURN).</t>
              <t>This document obsoletes RFC 5245.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8445"/>
          <seriesInfo name="DOI" value="10.17487/RFC8445"/>
        </reference>
        <reference anchor="RFC8838">
          <front>
            <title>Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol</title>
            <author fullname="E. Ivov" initials="E." surname="Ivov"/>
            <author fullname="J. Uberti" initials="J." surname="Uberti"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document describes "Trickle ICE", an extension to the Interactive Connectivity Establishment (ICE) protocol that enables ICE agents to begin connectivity checks while they are still gathering candidates, by incrementally exchanging candidates over time instead of all at once. This method can considerably accelerate the process of establishing a communication session.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8838"/>
          <seriesInfo name="DOI" value="10.17487/RFC8838"/>
        </reference>
        <reference anchor="RFC8840">
          <front>
            <title>A Session Initiation Protocol (SIP) Usage for Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (Trickle ICE)</title>
            <author fullname="E. Ivov" initials="E." surname="Ivov"/>
            <author fullname="T. Stach" initials="T." surname="Stach"/>
            <author fullname="E. Marocco" initials="E." surname="Marocco"/>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>The Interactive Connectivity Establishment (ICE) protocol describes a Network Address Translator (NAT) traversal mechanism for UDP-based multimedia sessions established with the Offer/Answer model. The ICE extension for Incremental Provisioning of Candidates (Trickle ICE) defines a mechanism that allows ICE Agents to shorten session establishment delays by making the candidate gathering and connectivity checking phases of ICE non-blocking and by executing them in parallel.</t>
              <t>This document defines usage semantics for Trickle ICE with the Session Initiation Protocol (SIP). The document also defines a new SIP Info Package to support this usage together with the corresponding media type. Additionally, a new Session Description Protocol (SDP) "end-of-candidates" attribute and a new SIP option tag "trickle-ice" are defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8840"/>
          <seriesInfo name="DOI" value="10.17487/RFC8840"/>
        </reference>
        <reference anchor="RFC6585">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
        <reference anchor="RFC8863">
          <front>
            <title>Interactive Connectivity Establishment Patiently Awaiting Connectivity (ICE PAC)</title>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <author fullname="J. Uberti" initials="J." surname="Uberti"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>During the process of establishing peer-to-peer connectivity, Interactive Connectivity Establishment (ICE) agents can encounter situations where they have no candidate pairs to check, and, as a result, conclude that ICE processing has failed. However, because additional candidate pairs can be discovered during ICE processing, declaring failure at this point may be premature. This document discusses when these situations can occur.</t>
              <t>This document updates RFCs 8445 and 8838 by requiring that an ICE agent wait a minimum amount of time before declaring ICE failure, even if there are no candidate pairs left to check.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8863"/>
          <seriesInfo name="DOI" value="10.17487/RFC8863"/>
        </reference>
        <reference anchor="RFC8839">
          <front>
            <title>Session Description Protocol (SDP) Offer/Answer Procedures for Interactive Connectivity Establishment (ICE)</title>
            <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Huguenin"/>
            <author fullname="S. Nandakumar" initials="S." surname="Nandakumar"/>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <author fullname="A. Keränen" initials="A." surname="Keränen"/>
            <author fullname="R. Shpount" initials="R." surname="Shpount"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document describes Session Description Protocol (SDP) Offer/Answer procedures for carrying out Interactive Connectivity Establishment (ICE) between the agents.</t>
              <t>This document obsoletes RFCs 5245 and 6336.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8839"/>
          <seriesInfo name="DOI" value="10.17487/RFC8839"/>
        </reference>
        <reference anchor="RFC9143">
          <front>
            <title>Negotiating Media Multiplexing Using the Session Description Protocol (SDP)</title>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <author fullname="C. Jennings" initials="C." surname="Jennings"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This specification defines a new Session Description Protocol (SDP) Grouping Framework extension called 'BUNDLE'. The extension can be used with the SDP offer/answer mechanism to negotiate the usage of a single transport (5-tuple) for sending and receiving media described by multiple SDP media descriptions ("m=" sections). Such transport is referred to as a "BUNDLE transport", and the media is referred to as "bundled media". The "m=" sections that use the BUNDLE transport form a BUNDLE group.</t>
              <t>This specification defines a new RTP Control Protocol (RTCP) Source Description (SDES) item and a new RTP header extension.</t>
              <t>This specification updates RFCs 3264, 5888, and 7941.</t>
              <t>This specification obsoletes RFC 8843.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9143"/>
          <seriesInfo name="DOI" value="10.17487/RFC9143"/>
        </reference>
        <reference anchor="RFC8858">
          <front>
            <title>Indicating Exclusive Support of RTP and RTP Control Protocol (RTCP) Multiplexing Using the Session Description Protocol (SDP)</title>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document defines a new Session Description Protocol (SDP) media-level attribute, 'rtcp-mux-only', that can be used by an endpoint to indicate exclusive support of RTP and RTP Control Protocol (RTCP) multiplexing. The document also updates RFC 5761 by clarifying that an offerer can use a mechanism to indicate that it is not able to send and receive RTCP on separate ports.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8858"/>
          <seriesInfo name="DOI" value="10.17487/RFC8858"/>
        </reference>
        <reference anchor="RFC8830">
          <front>
            <title>WebRTC MediaStream Identification in the Session Description Protocol</title>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document specifies a Session Description Protocol (SDP) grouping mechanism for RTP media streams that can be used to specify relations between media streams.</t>
              <t>This mechanism is used to signal the association between the SDP concept of "media description" and the Web Real-Time Communication (WebRTC) concept of MediaStream/MediaStreamTrack using SDP signaling.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8830"/>
          <seriesInfo name="DOI" value="10.17487/RFC8830"/>
        </reference>
        <reference anchor="RFC6750">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC8826">
          <front>
            <title>Security Considerations for WebRTC</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>WebRTC is a protocol suite for use with real-time applications that can be deployed in browsers -- "real-time communication on the Web". This document defines the WebRTC threat model and analyzes the security threats of WebRTC in that model.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8826"/>
          <seriesInfo name="DOI" value="10.17487/RFC8826"/>
        </reference>
        <reference anchor="RFC9446">
          <front>
            <title>Reflections on Ten Years Past the Snowden Revelations</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="F. Badii" initials="F." surname="Badii"/>
            <author fullname="B. Schneier" initials="B." surname="Schneier"/>
            <author fullname="S. M. Bellovin" initials="S. M." surname="Bellovin"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This memo contains the thoughts and recountings of events that transpired during and after the release of information about the United States National Security Agency (NSA) by Edward Snowden in 2013. There are four perspectives: that of someone who was involved with sifting through the information to responsibly inform the public, that of a security area director of the IETF, that of a human rights expert, and that of a computer science and affiliate law professor. The purpose of this memo is to provide some historical perspective, while at the same time offering a view as to what security and privacy challenges the technical community should consider. These essays do not represent a consensus view, but that of the individual authors.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9446"/>
          <seriesInfo name="DOI" value="10.17487/RFC9446"/>
        </reference>
        <reference anchor="RFC9147">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9112">
          <front>
            <title>HTTP/1.1</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 specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC9562">
          <front>
            <title>Universally Unique IDentifiers (UUIDs)</title>
            <author fullname="K. Davis" initials="K." surname="Davis"/>
            <author fullname="B. Peabody" initials="B." surname="Peabody"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9562"/>
          <seriesInfo name="DOI" value="10.17487/RFC9562"/>
        </reference>
        <reference anchor="RFC3553">
          <front>
            <title>An IETF URN Sub-namespace for Registered Protocol Parameters</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <date month="June" year="2003"/>
            <abstract>
              <t>This document describes a new sub-delegation for the 'ietf' URN namespace for registered protocol items. The 'ietf' URN namespace is defined in RFC 2648 as a root for persistent URIs that refer to IETF- defined resources. 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="73"/>
          <seriesInfo name="RFC" value="3553"/>
          <seriesInfo name="DOI" value="10.17487/RFC3553"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3261">
          <front>
            <title>SIP: Session Initiation Protocol</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="G. Camarillo" initials="G." surname="Camarillo"/>
            <author fullname="A. Johnston" initials="A." surname="Johnston"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="R. Sparks" initials="R." surname="Sparks"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="E. Schooler" initials="E." surname="Schooler"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3261"/>
          <seriesInfo name="DOI" value="10.17487/RFC3261"/>
        </reference>
        <reference anchor="RFC6120">
          <front>
            <title>Extensible Messaging and Presence Protocol (XMPP): Core</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="March" year="2011"/>
            <abstract>
              <t>The Extensible Messaging and Presence Protocol (XMPP) is an application profile of the Extensible Markup Language (XML) that enables the near-real-time exchange of structured yet extensible data between any two or more network entities. This document defines XMPP's core protocol methods: setup and teardown of XML streams, channel encryption, authentication, error handling, and communication primitives for messaging, network availability ("presence"), and request-response interactions. This document obsoletes RFC 3920. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6120"/>
          <seriesInfo name="DOI" value="10.17487/RFC6120"/>
        </reference>
        <reference anchor="RFC7826">
          <front>
            <title>Real-Time Streaming Protocol Version 2.0</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="A. Rao" initials="A." surname="Rao"/>
            <author fullname="R. Lanphier" initials="R." surname="Lanphier"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="M. Stiemerling" initials="M." role="editor" surname="Stiemerling"/>
            <date month="December" year="2016"/>
            <abstract>
              <t>This memorandum defines the Real-Time Streaming Protocol (RTSP) version 2.0, which obsoletes RTSP version 1.0 defined in RFC 2326.</t>
              <t>RTSP is an application-layer protocol for the setup and control of the delivery of data with real-time properties. RTSP provides an extensible framework to enable controlled, on-demand delivery of real-time data, such as audio and video. Sources of data can include both live data feeds and stored clips. This protocol is intended to control multiple data delivery sessions; provide a means for choosing delivery channels such as UDP, multicast UDP, and TCP; and provide a means for choosing delivery mechanisms based upon RTP (RFC 3550).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7826"/>
          <seriesInfo name="DOI" value="10.17487/RFC7826"/>
        </reference>
        <referencegroup anchor="BCP56" target="https://www.rfc-editor.org/info/bcp56">
          <reference anchor="RFC9205" target="https://www.rfc-editor.org/info/rfc9205">
            <front>
              <title>Building Protocols with HTTP</title>
              <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
              <date month="June" year="2022"/>
              <abstract>
                <t>Applications often use HTTP as a substrate to create HTTP-based APIs. This document specifies best practices for writing specifications that use HTTP to define new application protocols. It is written primarily to guide IETF efforts to define application protocols using HTTP for deployment on the Internet but might be applicable in other situations.</t>
                <t>This document obsoletes RFC 3205.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="56"/>
            <seriesInfo name="RFC" value="9205"/>
            <seriesInfo name="DOI" value="10.17487/RFC9205"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
        <reference anchor="RFC8141">
          <front>
            <title>Uniform Resource Names (URNs)</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8141"/>
          <seriesInfo name="DOI" value="10.17487/RFC8141"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <referencegroup anchor="BCP9" target="https://www.rfc-editor.org/info/bcp9">
          <reference anchor="RFC2026" target="https://www.rfc-editor.org/info/rfc2026">
            <front>
              <title>The Internet Standards Process -- Revision 3</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="October" year="1996"/>
              <abstract>
                <t>This memo documents the process used by the Internet community for the standardization of protocols and procedures. It defines the stages in the standardization process, the requirements for moving a document between stages and the types of documents used during this process. 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="9"/>
            <seriesInfo name="RFC" value="2026"/>
            <seriesInfo name="DOI" value="10.17487/RFC2026"/>
          </reference>
          <reference anchor="RFC5657" target="https://www.rfc-editor.org/info/rfc5657">
            <front>
              <title>Guidance on Interoperation and Implementation Reports for Advancement to Draft Standard</title>
              <author fullname="L. Dusseault" initials="L." surname="Dusseault"/>
              <author fullname="R. Sparks" initials="R." surname="Sparks"/>
              <date month="September" year="2009"/>
              <abstract>
                <t>Advancing a protocol to Draft Standard requires documentation of the interoperation and implementation of the protocol. Historic reports have varied widely in form and level of content and there is little guidance available to new report preparers. This document updates the existing processes and provides more detail on what is appropriate in an interoperability and implementation report. 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="9"/>
            <seriesInfo name="RFC" value="5657"/>
            <seriesInfo name="DOI" value="10.17487/RFC5657"/>
          </reference>
          <reference anchor="RFC6410" target="https://www.rfc-editor.org/info/rfc6410">
            <front>
              <title>Reducing the Standards Track to Two Maturity Levels</title>
              <author fullname="R. Housley" initials="R." surname="Housley"/>
              <author fullname="D. Crocker" initials="D." surname="Crocker"/>
              <author fullname="E. Burger" initials="E." surname="Burger"/>
              <date month="October" year="2011"/>
              <abstract>
                <t>This document updates the Internet Engineering Task Force (IETF) Standards Process defined in RFC 2026. Primarily, it reduces the Standards Process from three Standards Track maturity levels to two. This memo documents an Internet Best Current Practice.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="6410"/>
            <seriesInfo name="DOI" value="10.17487/RFC6410"/>
          </reference>
          <reference anchor="RFC7100" target="https://www.rfc-editor.org/info/rfc7100">
            <front>
              <title>Retirement of the "Internet Official Protocol Standards" Summary Document</title>
              <author fullname="P. Resnick" initials="P." surname="Resnick"/>
              <date month="December" year="2013"/>
              <abstract>
                <t>This document updates RFC 2026 to no longer use STD 1 as a summary of "Internet Official Protocol Standards". It obsoletes RFC 5000 and requests the IESG to move RFC 5000 (and therefore STD 1) to Historic status.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="7100"/>
            <seriesInfo name="DOI" value="10.17487/RFC7100"/>
          </reference>
          <reference anchor="RFC7127" target="https://www.rfc-editor.org/info/rfc7127">
            <front>
              <title>Characterization of Proposed Standards</title>
              <author fullname="O. Kolkman" initials="O." surname="Kolkman"/>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <author fullname="S. Turner" initials="S." surname="Turner"/>
              <date month="January" year="2014"/>
              <abstract>
                <t>RFC 2026 describes the review performed by the Internet Engineering Steering Group (IESG) on IETF Proposed Standard RFCs and characterizes the maturity level of those documents. This document updates RFC 2026 by providing a current and more accurate characterization of Proposed Standards.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="7127"/>
            <seriesInfo name="DOI" value="10.17487/RFC7127"/>
          </reference>
          <reference anchor="RFC7475" target="https://www.rfc-editor.org/info/rfc7475">
            <front>
              <title>Increasing the Number of Area Directors in an IETF Area</title>
              <author fullname="S. Dawkins" initials="S." surname="Dawkins"/>
              <date month="March" year="2015"/>
              <abstract>
                <t>This document removes a limit on the number of Area Directors who manage an Area in the definition of "IETF Area". This document updates RFC 2026 (BCP 9) and RFC 2418 (BCP 25).</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="7475"/>
            <seriesInfo name="DOI" value="10.17487/RFC7475"/>
          </reference>
          <reference anchor="RFC8789" target="https://www.rfc-editor.org/info/rfc8789">
            <front>
              <title>IETF Stream Documents Require IETF Rough Consensus</title>
              <author fullname="J. Halpern" initials="J." role="editor" surname="Halpern"/>
              <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla"/>
              <date month="June" year="2020"/>
              <abstract>
                <t>This document requires that the IETF never publish any IETF Stream RFCs without IETF rough consensus. This updates RFC 2026.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="8789"/>
            <seriesInfo name="DOI" value="10.17487/RFC8789"/>
          </reference>
          <reference anchor="RFC9282" target="https://www.rfc-editor.org/info/rfc9282">
            <front>
              <title>Responsibility Change for the RFC Series</title>
              <author fullname="B. Rosen" initials="B." surname="Rosen"/>
              <date month="June" year="2022"/>
              <abstract>
                <t>In RFC 9280, responsibility for the RFC Series moved to the RFC Series Working Group and the RFC Series Approval Board. It is no longer the responsibility of the RFC Editor, and the role of the IAB in the RFC Series is altered. Accordingly, in Section 2.1 of RFC 2026, the sentence "RFC publication is the direct responsibility of the RFC Editor, under the general direction of the IAB" is deleted.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="9"/>
            <seriesInfo name="RFC" value="9282"/>
            <seriesInfo name="DOI" value="10.17487/RFC9282"/>
          </reference>
        </referencegroup>
      </references>
    </references>
    <?line 1013?>

<section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <artwork><![CDATA[
  Jonas Birmé
  Eyevinn Technology
  jonas.birme@eyevinn.se

  Dapeng Liu
  Alibaba Inc.
  max.ldp@alibaba-inc.com
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors wish to thank Lorenzo Miniero, Juliusz Chroboczek, Adam Roach, Nils Ohlmeier, Christer Holmberg, Cameron Elliott, Gustavo Garcia, Sandro Gauci, and everyone else in the WebRTC community that have provided comments, feedback, text and improvement proposals on the document and contributed early implementations of the spec.</t>
      <t>Cheng Chen's contribution was supported by ByteDance during his employment there.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
xCpB7kKMo17Z1OhcckDhrNqN/w+mMjIbHgcBAA==

-->

</rfc>
