<?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.18 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wish-whip-15" category="std" consensus="true" updates="8842, 8840" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="whip">WebRTC-HTTP ingestion protocol (WHIP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wish-whip-15"/>
    <author initials="S." surname="Murillo" fullname="Sergio Garcia Murillo">
      <organization>Millicast</organization>
      <address>
        <email>sergio.garcia.murillo@cosmosoftware.io</email>
      </address>
    </author>
    <author initials="A." surname="Gouaillard" fullname="Alexandre Gouaillard">
      <organization>CoSMo Software</organization>
      <address>
        <email>alex.gouaillard@cosmosoftware.io</email>
      </address>
    </author>
    <date year="2024" month="July" day="22"/>
    <area>ART</area>
    <workgroup>wish</workgroup>
    <keyword>WebRTC</keyword>
    <abstract>
      <?line 35?>

<t>This document describes a simple HTTP-based protocol that will allow WebRTC-based ingestion of content into streaming services and/or CDNs.</t>
      <t>This document updates RFC 8842 and RFC 8840.</t>
    </abstract>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The IETF RTCWEB working group standardized 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 application level.</t>
      <t>Unfortunately, the lack of a standardized signaling mechanism in WebRTC has been an obstacle to adoption as an ingestion protocol within the broadcast/streaming industry, where a streamlined production pipeline is taken for granted: plug in cables carrying raw media to hardware encoders, then push the encoded media to any streaming service or Content Delivery Network (CDN) ingest using an ingestion protocol.</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/streaming services, and there is also 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>This document proposes a simple protocol based on HTTP for supporting WebRTC as media ingestion method which:</t>
      <ul spacing="normal">
        <li>
          <t>Is easy to implement,</t>
        </li>
        <li>
          <t>Is as easy to use as popular IP-based broadcast protocols</t>
        </li>
        <li>
          <t>Is fully compliant with WebRTC and RTCWEB specs</t>
        </li>
        <li>
          <t>Enables ingestion on both classical media platforms and WebRTC end-to-end platforms, achieving the lowest possible latency.</t>
        </li>
        <li>
          <t>Lowers the requirements on both hardware encoders and broadcasting services to support WebRTC.</t>
        </li>
        <li>
          <t>Is usable both in web browsers and in standalone encoders.</t>
        </li>
      </ul>
    </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 Ingest Protocol (WHIP) is designed to facilitate a one-time 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 WHIP client, which represents the encoder or media producer, and the media server, the broadcasting ingestion endpoint.</t>
      <t>Upon successful establishment of the ICE/DTLS session, unidirectional media data transmission commences from the WHIP client to the media server. It is important to note that SDP renegotiations are not supported in WHIP, 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 following diagram illustrates the core operation of the WHIP protocol for initiating and terminating an ingest session:</t>
      <figure anchor="whip-protocol-operation">
        <name>WHIP session setup and teardown</name>
        <artwork><![CDATA[
                                                                               
 +-------------+    +---------------+ +--------------+ +---------------+
 | WHIP client |    | WHIP endpoint | | Media Server | | WHIP session  |
 +--+----------+    +---------+-----+ +------+-------+ +--------|------+
    |                         |              |                  |       
    |                         |              |                  |       
    |HTTP POST (SDP Offer)    |              |                  |       
    +------------------------>+              |                  |       
    |201 Created (SDP answer) |              |                  |       
    +<------------------------+              |                  |       
    |          ICE REQUEST                   |                  |       
    +--------------------------------------->+                  |       
    |          ICE RESPONSE                  |                  |       
    |<---------------------------------------+                  |       
    |          DTLS SETUP                    |                  |       
    |<======================================>|                  |       
    |          RTP/RTCP FLOW                 |                  |       
    +<-------------------------------------->+                  |       
    | HTTP DELETE                                               |       
    +---------------------------------------------------------->+       
    | 200 OK                                                    |       
    <-----------------------------------------------------------x       
                                                                               
]]></artwork>
      </figure>
      <t>The elements in <xref target="whip-protocol-operation"/> are described as follows:</t>
      <ul spacing="normal">
        <li>
          <t>WHIP client: This represents the WebRTC media encoder or producer, which functions as a client of the WHIP protocol by encoding and delivering media to a remote media server.</t>
        </li>
        <li>
          <t>WHIP endpoint: This denotes the ingest server that receives the initial WHIP request.</t>
        </li>
        <li>
          <t>WHIP endpoint URL: Refers to the URL of the WHIP endpoint responsible for creating the WHIP session.</t>
        </li>
        <li>
          <t>Media server: This is the WebRTC media server or consumer responsible for establishing the media session with the WHIP client and receiving the media content it produces.</t>
        </li>
        <li>
          <t>WHIP session: This indicates the server handling the allocated HTTP resource by the WHIP endpoint for an ongoing ingest session.</t>
        </li>
        <li>
          <t>WHIP session URL: Refers to the URL of the WHIP resource allocated by the WHIP endpoint for a specific media session. The WHIP client can send requests to the WHIP session using this URL to modify the session, such as ICE operations or termination.</t>
        </li>
      </ul>
      <t>The <xref target="whip-protocol-operation"/> illustrates the communication flow between a WHIP client, WHIP endpoint, media server, and WHIP session. This flow outlines the process of setting up and tearing down an ingestion session using the WHIP protocol, 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>
      <ul spacing="normal">
        <li>
          <t>WHIP client: Initiates the communication by sending an HTTP POST with an SDP Offer to the WHIP endpoint.</t>
        </li>
        <li>
          <t>WHIP endpoint: Responds with a "201 Created" message containing an SDP answer.</t>
        </li>
        <li>
          <t>WHIP client and media server: Establish an ICE and DTLS sessions for NAT traversal and secure communication.</t>
        </li>
        <li>
          <t>RTP/RTCP Flow: Real-time Transport Protocol and Real-time Transport Control Protocol flows are established for media transmission from the WHIP client to the media server, secured by the SRTP profile.</t>
        </li>
        <li>
          <t>WHIP client: Sends an HTTP DELETE to terminate the WHIP session.</t>
        </li>
        <li>
          <t>WHIP session: Responds with a "200 OK" to confirm the session termination.</t>
        </li>
      </ul>
    </section>
    <section anchor="protocol-operation">
      <name>Protocol Operation</name>
      <section anchor="http-usage">
        <name>HTTP usage</name>
        <t>Following <xref target="BCP56"/> guidelines, WHIP clients <bcp14>MUST NOT</bcp14> match error codes returned by the WHIP endpoints and resources to a specific error cause indicated in this specification. WHIP clients <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. WHIP endpoints and resources COULD convey finer-grained error information by a problem statement json object in the response message body of the failed request as per <xref target="RFC9457"/>.</t>
        <t>The WHIP endpoints and sessions are origin servers as defined in <xref section="3.6." sectionFormat="of" target="RFC9110"/> handling the requests and providing responses for the underlying HTTP resources. Those HTTP resources do not have any representation defined in this specification, so the WHIP endpoints and sessions <bcp14>MUST</bcp14> return a 2XX sucessfull response with no content when a GET request is received.</t>
      </section>
      <section anchor="ingest-session-set-up">
        <name>Ingest session set up</name>
        <t>In order to set up an ingestion session, the WHIP client <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 WHIP 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. The WHIP endpoint <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 WHIP session. If the HTTP POST to the WHIP endpoint has a content type different than "application/sdp" or the SDP is malformed, the WHIP endpoint <bcp14>MUST</bcp14> reject the HTTP POST request with an appropiate 4XX error response.</t>
        <t>As the WHIP protocol only supports the ingestion use case with unidirectional media, the WHIP client <bcp14>SHOULD</bcp14> use "sendonly" attribute in the SDP offer but <bcp14>MAY</bcp14> use the "sendrecv" attribute instead, "inactive" and "recvonly" attributes <bcp14>MUST NOT</bcp14> be used. The WHIP endpoint <bcp14>MUST</bcp14> use "recvonly" attribute in the SDP answer.</t>
        <t>Following <xref target="sdp-exchange-example"/> is an example of an HTTP POST sent from a WHIP client to a WHIP endpoint and the "201 Created" response from the WHIP endpoint containing the Location header pointing to the newly created WHIP session:</t>
        <figure anchor="sdp-exchange-example">
          <name>Example of SDP offer/answer exchange done via an HTTP POST</name>
          <artwork><![CDATA[
POST /whip/endpoint HTTP/1.1
Host: whip.example.com
Content-Type: application/sdp
Content-Length: 1101

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:EsAw
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=sendonly
a=msid:d46fb922-d52a-4e9c-aa87-444eadc1521b ce326ecf-a081-453a-8f9f-0605d5ef4128
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
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=msid:d46fb922-d52a-4e9c-aa87-444eadc1521b 3956b460-40f4-4d05-acef-03abcdd8c6fd
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: 1053
Location: https://whip.example.com/session/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:38sdf4fdsf54
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=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=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=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
]]></artwork>
        </figure>
        <t>Once a session is set up, 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.</t>
        <t>To explicitly terminate a WHIP session, the WHIP client <bcp14>MUST</bcp14> perform an HTTP DELETE request to the WHIP session URL returned in the Location header field of the initial HTTP POST. Upon receiving the HTTP DELETE request, the WHIP session will be removed and the resources freed on the media server, terminating the ICE and DTLS sessions.</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 WHIP 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="RFC8845"/> is a protocol addressing 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 WHIP sessions and clients.</t>
        <section anchor="http-patch-usage">
          <name>HTTP PATCH request usage</name>
          <t>The WHIP client <bcp14>MAY</bcp14> perform trickle ICE or ICE restarts by sending an HTTP PATCH request as per <xref target="RFC5789"/> to the WHIP 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 WHIP session has a content type different than "application/trickle-ice-sdpfrag" or the SDP fragment is malformed, the WHIP session <bcp14>MUST</bcp14> reject the HTTP PATCH with an appropiate 4XX error response.</t>
          <t>If the WHIP 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"/>.</t>
          <t>The WHIP client <bcp14>MAY</bcp14> send overlapping HTTP PATCH requests to one WHIP session. Consequently, as those HTTP PATCH requests may be received out-of-order by the WHIP session, if WHIP session supports ICE restarts, 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 WHIP endpoint.</t>
          <t>WHIP clients <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. WHIP sessions <bcp14>MUST</bcp14> ignore any entity-tag value sent by the WHIP client when ICE session matching is not required, as in the HTTP DELETE request.</t>
        </section>
        <section anchor="trickle-ice">
          <name>Trickle ICE</name>
          <t>Depending on the Trickle ICE support on the WHIP client, the initial offer by the WHIP client <bcp14>MAY</bcp14> be sent after the full ICE gathering is complete with the full list of ICE candidates, or it <bcp14>MAY</bcp14> only contain local candidates (or even an empty list of candidates) as per <xref target="RFC8845"/>. For the purpose of reducing setup times, when using Trickle ICE the WHIP client <bcp14>SHOULD</bcp14> send the SDP offer as soon as possible, containing either locally gathered ICE candidates or an empty list of candidates.</t>
          <t>In order to simplify the protocol, the WHIP session cannot signal additional ICE candidates to the WHIP client after the SDP answer has been sent. The WHIP 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 WHIP client needs to know the WHIP 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 WHIP client <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 WHIP session, the WHIP client 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>WHIP clients generating the HTTP PATCH body with the SDP fragment and its subsequent processing by WHIP 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 WHIP client <bcp14>MAY</bcp14> exclude ICE candidates from the HTTP PATCH body if they have already been confirmed by the WHIP session with a successful HTTP response to a previous HTTP PATCH request.</t>
            </li>
          </ul>
          <t>If the WHIP session is using entity-tags for identifying the ICE sessions in explained in <xref target="http-patch-usage"/>, a WHIP client sending a PATCH request for performing trickle ICE <bcp14>MUST</bcp14> include an "If-Match" header field with the latest known entity-tag as per <xref section="13.1.1" sectionFormat="of" target="RFC9110"/>.
When the PATCH request is received by the WHIP session, it <bcp14>MUST</bcp14> compare the indicated entity-tag value with the current entity-tag of the resource as per <xref section="13.1.1" sectionFormat="of" target="RFC9110"/> and return a "412 Precondition Failed" response if they do not match. If the HTTP PATCH request does not contain an "If-Match" header the WHIP session <bcp14>MUST</bcp14> return an "428 Precondition Required" response as per <xref section="3" sectionFormat="of" target="RFC6585"/>.</t>
          <t>When a WHIP 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 WHIP 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: whip.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 WHIP client sends a PATCH request with updated ICE candidate information and receives a successful response from the WHIP 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 WHIP does not support renegotiation of non-ICE related SDP information, a WHIP client will not send a new offer when an ICE restart occurs. Instead, the WHIP client and WHIP 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 WHIP client <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 WHIP client 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 WHIP 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 WHIP 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 WHIP client and the WHIP 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 WHIP client and the WHIP session <bcp14>MUST</bcp14> ensure that the HTTP PATCH requests 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 WHIP session, the resource <bcp14>MUST</bcp14> return an appropriate HTTP error code and <bcp14>MUST NOT</bcp14> terminate the session immediately and keep the existing ICE session. The WHIP client <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. WHIP clients <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 WHIP client and at the WHIP 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 WHIP client, it <bcp14>MUST</bcp14> send a new ICE restart request to the server.</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: whip.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-ice-example"/> demonstrates a Trickle ICE restart procedure example. The WHIP client sends a PATCH request containing updated ICE information, including a new ufrag and password, along with newly gathered ICE candidates. In response, the WHIP 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 WHIP in both clients and media servers, WHIP 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 WHIP client and the WHIP endpoint <bcp14>SHALL</bcp14> support <xref target="RFC9143"/> and use "max-bundle" policy as defined in <xref target="RFC9429"/>. The WHIP client 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 WHIP client and media server <bcp14>SHALL</bcp14> use RTP/RTCP multiplexing for all bundled media. In order to reduce the network resources required at the media server, both The WHIP client and WHIP 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>WHIP only supports a single MediaStream as defined in <xref target="RFC8830"/> and therefore all "m=" sections <bcp14>MUST</bcp14> contain a "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). However, it would be possible for future revisions of this spec to allow more than a single MediaStream or MediaStreamTrack of each media kind, so in order to ensure forward compatibility, if the number of audio and or video MediaStreamTracks or number of MediaStreams are not supported by the WHIP endpoint, it <bcp14>MUST</bcp14> reject the HTTP POST request with an "422 Unprocessable Content" or "400 Bad Request" error response. The WHIP endpoint <bcp14>MAY</bcp14> also return a problem statement as recommended in <xref target="http-usage"/> proving further error details about the failed request.</t>
        </section>
        <section anchor="no-partially-successful-answers">
          <name>No partially successful answers</name>
          <t>The WHIP endpoint <bcp14>SHOULD NOT</bcp14> reject individual "m=" sections as per <xref section="5.3.1" sectionFormat="of" target="RFC9429"/> in case there is any error processing the "m=" section, but reject the HTTP POST request with an "422 Unprocessable Content" or "400 Bad Request" error response to prevent having partially successful ingest sessions which can be misleading to end users. The WHIP endpoint <bcp14>MAY</bcp14> also return a problem statement as recommended in <xref target="http-usage"/> proving further error details about the failed request.</t>
        </section>
        <section anchor="dtls-setup-role-and-sdp-setup-attribute">
          <name>DTLS setup role and SDP "setup" attribute</name>
          <t>When a WHIP client sends an SDP offer, it <bcp14>SHOULD</bcp14> insert an SDP "setup" attribute with an "actpass" attribute value, as defined in <xref target="RFC8842"/>. However, if the WHIP client only implements the DTLS client role, it <bcp14>MAY</bcp14> use an SDP "setup" attribute with an "active" attribute value. If the WHIP endpoint does not support an SDP offer with an SDP "setup" attribute with an "active" attribute value, it <bcp14>SHOULD</bcp14> reject the request with an "422 Unprocessable Content" or "400 Bad Request" error response.</t>
          <t>NOTE: <xref target="RFC8842"/> defines that the offerer must insert an SDP "setup" attribute with an "actpass" attribute value. However, the WHIP client will always communicate with a media server that is expected to support the DTLS server role, in which case the client might choose to only implement support for the DTLS client role.</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 WHIP client that is authorized to use it, in which case it <bcp14>MAY</bcp14> support only ICE lite. The WHIP client <bcp14>MUST</bcp14> implement and use full ICE.</t>
          <t>Trickle ICE and ICE restarts support is <bcp14>OPTIONAL</bcp14> for both the WHIP clients 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>WHIP 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>WHIP clients <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 and 302 <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 WHIP 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 WHIP 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 WHIP 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 WHIP endpoint URL.</t>
        <t>A reference to each STUN/TURN server will be returned using the "Link" header field <xref target="RFC8288"/> with a "rel" attribute value of "ice-server". The Link target URI is the server URI as defined in <xref target="RFC7064"/> and <xref target="RFC7065"/>. The credentials are encoded in the Link target attributes as follows:</t>
        <ul spacing="normal">
          <li>
            <t>username: If the Link header field represents a TURN server, and credential-type is "password", then this attribute specifies the username to use with that TURN server.</t>
          </li>
          <li>
            <t>credential: If the "credential-type" attribute is missing or has a "password" value, the credential attribute represents a long-term authentication password, as described in <xref section="9.2" sectionFormat="of" target="RFC8489"/>.</t>
          </li>
          <li>
            <t>credential-type: If the Link header field represents a TURN server, then this attribute specifies how the credential attribute value should be used when that TURN server requests authorization. The default value if the attribute is not present is "password".</t>
          </li>
        </ul>
        <figure anchor="stun-server-example">
          <name>Example of a STUN/TURN servers configuration</name>
          <artwork><![CDATA[
     Link: <stun:stun.example.net>; rel="ice-server"
     Link: <turn:turn.example.net?transport=udp>; rel="ice-server";
           username="user"; credential="myPassword"; credential-type="password"
     Link: <turn:turn.example.net?transport=tcp>; rel="ice-server";
           username="user"; credential="myPassword"; credential-type="password"
     Link: <turns:turn.example.net?transport=tcp>; rel="ice-server";
           username="user"; credential="myPassword"; credential-type="password"
]]></artwork>
        </figure>
        <t><xref target="stun-server-example"/> illustrates the Link headers included in a 201 Created response, providing the ICE server URLs and associated credentials.</t>
        <t>NOTE: The naming of both the "rel" attribute value of "ice-server" and the target attributes follows the one used on the W3C WebRTC recommendation <xref target="W3C.REC-webrtc-20210126"/> RTCConfiguration dictionary in section 4.2.1. "rel" attribute value of "ice-server" is not prepended with the "urn:ietf:params:whip:" so it can be reused by other specifications which may use this mechanism to configure the usage of STUN/TURN servers.</t>
        <t>NOTE: Depending on the ICE Agent implementation, the WHIP client may need to call the setConfiguration method before calling the setLocalDescription method with the local SDP offer in order to avoid having to perform an ICE restart for applying the updated STUN/TURN server configuration on the next ICE gathering phase.</t>
        <t>There are some WebRTC implementations that do not support updating the STUN/TURN server configuration after the local offer has been created as specified in <xref section="4.1.18" sectionFormat="of" target="RFC9429"/>. In order to support these clients, the WHIP endpoint <bcp14>MAY</bcp14> also include the STUN/TURN server configuration on the responses to OPTIONS request sent to the WHIP endpoint URL before the POST request is sent. However, this method is <bcp14>NOT RECOMMENDED</bcp14> to be used by the WHIP clients and, if supported by the underlying WHIP client's webrtc implementation, the WHIP client <bcp14>SHOULD</bcp14> wait for the information to be returned by the WHIP endpoint on the response of the HTTP POST request instead.</t>
        <t>The generation of the TURN server credentials may require performing a request to an external provider, which can both add latency to the OPTIONS request processing and increase the processing required to handle that request. In order to prevent this, the WHIP endpoint <bcp14>SHOULD NOT</bcp14> return the STUN/TURN server configuration if the OPTIONS request is a preflight request for CORS as defined in <xref target="FETCH"/>, that is, if The OPTIONS request does not contain an Access-Control-Request-Method with "POST" value and the Access-Control-Request-Headers HTTP header does not contain the "Link" value.</t>
        <t>The WHIP clients <bcp14>MAY</bcp14> also support configuring the STUN/TURN server URIs with long term credentials provided by either the broadcasting service or an external TURN provider, overriding the values provided by the WHIP endpoint.</t>
        <section anchor="congestion-control">
          <name>Congestion control</name>
          <t><xref target="RFC8836"/> defines the congestion control requirements for interactive Real-Time media to be used in WebRTC. These requirements are based on the assumption of the need to provide the data continuously, within a very limited time window (no more delay than hundreds of milliseconds end-to-end). If the latency target is higher, some of the requirements present in RFC8836 could be relaxed to allow more flexible implementations.</t>
        </section>
      </section>
      <section anchor="authentication-and-authorization">
        <name>Authentication and authorization</name>
        <t>All WHIP 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 WHIP 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>WHIP 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"/>. WHIP clients <bcp14>MUST</bcp14> implement this authentication and authorization mechanism and send the HTTP Authorization header field in all HTTP requests sent to either the WHIP 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, JWT tokens 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 WHIP endpoint URL and configured on the WHIP clients (similar to the way RTMP URLs and Stream Keys are distributed).</t>
          <t>WHIP endpoints and sessions could perform the authentication and authorization by encoding an authentication token within the URLs for the WHIP endpoints or sessions instead. In case the WHIP client 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="simulcast-and-scalable-video-coding">
        <name>Simulcast and scalable video coding</name>
        <t>Simulcast as per <xref target="RFC8853"/> <bcp14>MAY</bcp14> be supported by both the media servers and WHIP clients through negotiation in the SDP offer/answer.</t>
        <t>If the client supports simulcast and wants to enable it for ingesting, it <bcp14>MUST</bcp14> negotiate the support in the SDP offer according to the procedures in <xref section="5.3" sectionFormat="of" target="RFC8853"/>. A server accepting a simulcast offer <bcp14>MUST</bcp14> create an answer according to the procedures in <xref section="5.3.2" sectionFormat="of" target="RFC8853"/>.</t>
        <t>It is possible for both media servers and WHIP clients to support Scalable Video Coding (SVC). However, as there is no universal negotiation mechanism in SDP for SVC, the encoder must consider the negotiated codec(s), intended usage, and SVC support in available decoders when configuring SVC.</t>
      </section>
      <section anchor="protocol-extensions">
        <name>Protocol extensions</name>
        <t>In order to support future extensions to be defined for the WHIP protocol, a common procedure for registering and announcing the new extensions is defined.</t>
        <t>Protocol extensions supported by the WHIP sessions <bcp14>MUST</bcp14> be advertised to the WHIP client in the "201 Created" response to the initial HTTP POST request sent to the WHIP endpoint.
The WHIP 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 WHIP clients and servers. WHIP clients <bcp14>MUST</bcp14> ignore any Link attribute with an unknown "rel" attribute value and WHIP sessions <bcp14>MUST NOT</bcp14> require the usage of any extension.</t>
        <t>Each protocol extension <bcp14>MUST</bcp14> register a unique "rel" attribute value at IANA starting with the prefix: "urn:ietf:params:whip:ext" as defined in <xref target="urn-whip-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:whip: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 WHIP protocol extension</name>
          <artwork><![CDATA[
HTTP/1.1 201 Created
Content-Type: application/sdp
Location: https://whip.example.com/session/id
Link: <https://whip.example.com/session/id/sse>;
      rel="urn:ietf:params:whip:ext:example:server-sent-events"
]]></artwork>
        </figure>
        <t><xref target="protocol-extension-example"/> shows an example of a WHIP protocol extension supported by the WHIP 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 WHIP 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="RFC8446"/> 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, the WHIP protocol 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 ingesting a WHIP stream to make multiple HTTP POST to the WHIP endpoint.
This will force the WHIP endpoint to process the incoming SDP and allocate resources for being able to set up the DTLS/ICE connection.
While the malicious client does not need to initiate the DTLS/ICE connection at all, the WHIP 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, WHIP 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 WHIP session locations:
If the URLs returned by the WHIP endpoint for the WHIP sessions location are easy to guess, it would be possible for an attacker to send multiple HTTP DELETE requests and terminate all the WHIP sessions currently running.
In order to prevent this scenario, WHIP 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="8" sectionFormat="comma" target="RFC9562"/> are applicable for generating the WHIP 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 WHIP session, although the WHIP 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, WHIP 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 new link relation type and a registry for URN sub-namespaces for WHIP protocol extensions.</t>
      <section anchor="link-relation-type-ice-server">
        <name>Link Relation Type: ice-server</name>
        <t>The link relation type below has been registered by IANA per <xref section="4.2" sectionFormat="of" target="RFC8288"/>.</t>
        <t>Relation Name: ice-server</t>
        <t>Description: Conveys the STUN and TURN servers that can be used by an ICE Agent to establish a connection with a peer.</t>
        <t>Reference: TBD</t>
      </section>
      <section anchor="webrtc-http-ingestion-protocol-whip-registry-group">
        <name>WebRTC-HTTP Ingestion Protocol (WHIP) registry group</name>
        <t>IANA  is asked to create a new registry group called "WebRTC-HTTP Ingestion Protocol (WHIP)". This group includes the "WebRTC-HTTP ingestion protocol (WHIP) URNs" and "WebRTC-HTTP ingestion protocol (WHIP) extension URNs" registries described below.</t>
      </section>
      <section anchor="registration-of-whip-urn-sub-namespace-and-whip-registries">
        <name>Registration of WHIP URN Sub-namespace and WHIP 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:whip".</t>
        <t>To manage this sub-namespace, IANA is asked to create the "WebRTC-HTTP ingestion protocol (WHIP) URNs" and "WebRTC-HTTP ingestion protocol (WHIP) extension URNs".</t>
        <section anchor="urn-whip-registry">
          <name>WebRTC-HTTP ingestion protocol (WHIP) URNs registry</name>
          <t>The "WebRTC-HTTP ingestion protocol (WHIP) URNs" registry is used to manage entries within the "urn:ietf:params:whip" namespace. The registry descriptions is as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Registry group: WebRTC-HTTP ingestion protocol (WHIP)</t>
            </li>
            <li>
              <t>Registry name: WebRTC-HTTP ingestion protocol (WHIP) 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:whip:ext</t>
            </li>
            <li>
              <t>Description: WebRTC-HTTP ingestion protocol (WHIP) extension URNs</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Reference: this document (RFC TBD) Section <xref target="urn-whip-ext-registry"/></t>
            </li>
            <li>
              <t>IANA registry reference: WebRTC-HTTP ingestion protocol (WHIP) extension URNs registry.</t>
            </li>
          </ul>
        </section>
        <section anchor="urn-whip-ext-registry">
          <name>WebRTC-HTTP ingestion protocol (WHIP) extension URNs registry</name>
          <t>The "WebRTC-HTTP ingestion protocol (WHIP) Extension URNs" is used to manage entries within the "urn:ietf:params:whip:ext" namespace. The registry descriptions is as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Registry group: WebRTC-HTTP ingestion protocol (WHIP)</t>
            </li>
            <li>
              <t>Registry name: WebRTC-HTTP ingestion protocol (WHIP) 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-whip-subspace">
        <name>URN Sub-namespace for WHIP</name>
        <t>WHIP endpoint utilizes URNs to identify the supported WHIP 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 WHIP 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 "whip" 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 WHIP 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 "whip" Namespace ID shall have the following structure: urn:ietf:params:whip:{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 WHIP 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 WHIP 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:whip:ext") is reserved for IETF-approved WHIP 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-whip-protocol-extensions-urns">
        <name>Registering WHIP Protocol Extensions URNs</name>
        <t>This section defines the process for registering new WHIP protocol extensions URNs with IANA in the "WebRTC-HTTP ingestion protocol (WHIP) extension URNs" registry (see <xref target="urn-whip-subspace"/>).</t>
        <t>A WHIP 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 the WHIP protocol extensions supported by the WHIP endpoints.</t>
        <t>WHIP Protocol Extensions URNs have an "ext" type as defined in <xref target="urn-whip-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 WHIP 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:whip:ext") belonging to a WHIP 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 WHIP Protocol Extensions URNs that modify WHIP 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 WHIP Protocol Extension registry.</t>
          <t>An RFC specifying one or more new WHIP 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="whip-protocol-extension-registration-template">
          <name>WHIP Protocol Extension Registration Template</name>
          <t>A WHIP Protocol Extension URNs is defined by completing the following template:</t>
          <ul spacing="normal">
            <li>
              <t>URN: A unique URN for the WHIP Protocol Extension (e.g., "urn:ietf:params:whip:ext:example:server-sent-events").</t>
            </li>
            <li>
              <t>Reference: A formal reference to the publicly available specification</t>
            </li>
            <li>
              <t>Name: A descriptive name of the WHIP Protocol Extension (e.g., "Sender Side events").</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>
    <section 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, Jonas Birme, Sandro Gauci, Christer Holmberg 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>
    </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="June" 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="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="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="RFC8845">
          <front>
            <title>Framework for Telepresence Multi-Streams</title>
            <author fullname="M. Duckworth" initials="M." role="editor" surname="Duckworth"/>
            <author fullname="A. Pepperell" initials="A." surname="Pepperell"/>
            <author fullname="S. Wenger" initials="S." surname="Wenger"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document defines a framework for a protocol to enable devices in a telepresence conference to interoperate. The protocol enables communication of information about multiple media streams so a sending system and receiving system can make reasonable decisions about transmitting, selecting, and rendering the media streams. This protocol is used in addition to SIP signaling and Session Description Protocol (SDP) negotiation for setting up a telepresence session.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8845"/>
          <seriesInfo name="DOI" value="10.17487/RFC8845"/>
        </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="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="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="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="RFC8842">
          <front>
            <title>Session Description Protocol (SDP) Offer/Answer Considerations for Datagram Transport Layer Security (DTLS) and Transport Layer Security (TLS)</title>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <author fullname="R. Shpount" initials="R." surname="Shpount"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document defines the Session Description Protocol (SDP) offer/answer procedures for negotiating and establishing a Datagram Transport Layer Security (DTLS) association. The document also defines the criteria for when a new DTLS association must be established. The document updates RFCs 5763 and 7345 by replacing common SDP offer/answer procedures with a reference to this specification.</t>
              <t>This document defines a new SDP media-level attribute, "tls-id".</t>
              <t>This document also defines how the "tls-id" attribute can be used for negotiating and establishing a Transport Layer Security (TLS) connection, in conjunction with the procedures in RFCs 4145 and 8122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8842"/>
          <seriesInfo name="DOI" value="10.17487/RFC8842"/>
        </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="RFC7064">
          <front>
            <title>URI Scheme for the Session Traversal Utilities for NAT (STUN) Protocol</title>
            <author fullname="S. Nandakumar" initials="S." surname="Nandakumar"/>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
            <author fullname="P. Jones" initials="P." surname="Jones"/>
            <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Huguenin"/>
            <date month="November" year="2013"/>
            <abstract>
              <t>This document specifies the syntax and semantics of the Uniform Resource Identifier (URI) scheme for the Session Traversal Utilities for NAT (STUN) protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7064"/>
          <seriesInfo name="DOI" value="10.17487/RFC7064"/>
        </reference>
        <reference anchor="RFC7065">
          <front>
            <title>Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers</title>
            <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Huguenin"/>
            <author fullname="S. Nandakumar" initials="S." surname="Nandakumar"/>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
            <author fullname="P. Jones" initials="P." surname="Jones"/>
            <date month="November" year="2013"/>
            <abstract>
              <t>This document specifies the syntax of Uniform Resource Identifier (URI) schemes for the Traversal Using Relays around NAT (TURN) protocol. It defines two URI schemes to provision the TURN Resolution Mechanism (RFC 5928).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7065"/>
          <seriesInfo name="DOI" value="10.17487/RFC7065"/>
        </reference>
        <reference anchor="RFC8489">
          <front>
            <title>Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Huguenin"/>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="R. Mahy" initials="R." surname="Mahy"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>Session Traversal Utilities for NAT (STUN) is a protocol that serves as a tool for other protocols in dealing with NAT traversal. It can be used by an endpoint to determine the IP address and port allocated to it by a NAT. It can also be used to check connectivity between two endpoints and as a keep-alive protocol to maintain NAT bindings. STUN works with many existing NATs and does not require any special behavior from them.</t>
              <t>STUN is not a NAT traversal solution by itself. Rather, it is a tool to be used in the context of a NAT traversal solution.</t>
              <t>This document obsoletes RFC 5389.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8489"/>
          <seriesInfo name="DOI" value="10.17487/RFC8489"/>
        </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="RFC8853">
          <front>
            <title>Using Simulcast in Session Description Protocol (SDP) and RTP Sessions</title>
            <author fullname="B. Burman" initials="B." surname="Burman"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="S. Nandakumar" initials="S." surname="Nandakumar"/>
            <author fullname="M. Zanaty" initials="M." surname="Zanaty"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>In some application scenarios, it may be desirable to send multiple differently encoded versions of the same media source in different RTP streams. This is called simulcast. This document describes how to accomplish simulcast in RTP and how to signal it in the Session Description Protocol (SDP). The described solution uses an RTP/RTCP identification method to identify RTP streams belonging to the same media source and makes an extension to SDP to indicate that those RTP streams are different simulcast formats of that media source. The SDP extension consists of a new media-level SDP attribute that expresses capability to send and/or receive simulcast RTP streams.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8853"/>
          <seriesInfo name="DOI" value="10.17487/RFC8853"/>
        </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="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </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="June" 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="W3C.REC-webrtc-20210126" target="https://www.w3.org/TR/2021/REC-webrtc-20210126/">
          <front>
            <title>WebRTC 1.0: Real-Time Communication Between Browsers</title>
            <author fullname="Cullen Jennings" role="editor"/>
            <author fullname="Henrik Boström" role="editor"/>
            <author fullname="Jan-Ivar Bruaroey" role="editor"/>
            <date day="26" month="January" year="2021"/>
          </front>
          <seriesInfo name="W3C REC" value="REC-webrtc-20210126"/>
          <seriesInfo name="W3C" value="REC-webrtc-20210126"/>
        </reference>
        <reference anchor="RFC8836">
          <front>
            <title>Congestion Control Requirements for Interactive Real-Time Media</title>
            <author fullname="R. Jesup" initials="R." surname="Jesup"/>
            <author fullname="Z. Sarker" initials="Z." role="editor" surname="Sarker"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>Congestion control is needed for all data transported across the Internet, in order to promote fair usage and prevent congestion collapse. The requirements for interactive, point-to-point real-time multimedia, which needs low-delay, semi-reliable data delivery, are different from the requirements for bulk transfer like FTP or bursty transfers like web pages. Due to an increasing amount of RTP-based real-time media traffic on the Internet (e.g., with the introduction of the Web Real-Time Communication (WebRTC)), it is especially important to ensure that this kind of traffic is congestion controlled.</t>
              <t>This document describes a set of requirements that can be used to evaluate other congestion control mechanisms in order to figure out their fitness for this purpose, and in particular to provide a set of possible requirements for a real-time media congestion avoidance technique.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8836"/>
          <seriesInfo name="DOI" value="10.17487/RFC8836"/>
        </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>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
