<?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.11 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wish-whip-14" category="std" consensus="true" updates="8842, 8840" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="whip">WebRTC-HTTP ingestion protocol (WHIP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wish-whip-14"/>
    <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="May" day="03"/>
    <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 traditional 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: Indicates the allocated HTTP resource by the WHIP endpoint for handling 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 a ingestion session using the WHIP protocol, involving negotiation, ICE for Network Address Translation (NAT) traversal, DTLS 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</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>
      <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.</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>If the HTTP POST to the WHIP endpoint has a content type different than "application/sdp", the WHIP endpoint <bcp14>MUST</bcp14> reject the HTTP POST request with a "415 Unsupported Media Type" error response. If the SDP body is malformed, the WHIP session <bcp14>MUST</bcp14> reject the HTTP POST with a "400 Bad Request" error response.</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 setup, consent freshness as per <xref target="RFC7675"/> <bcp14>SHALL</bcp14> be used to detect non-graceful disconnection by full ICE implementations and DTLS teardown for session termination by either side.</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> return an "405 Method Not Allowed" response for any HTTP request method different than OPTIONS and POST on the endpoint URL in order to reserve their usage for future versions of this protocol specification.</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>
      <t>The WHIP sessions <bcp14>MUST</bcp14> return an "405 Method Not Allowed" response for any HTTP request method different than PATCH and DELETE on the session URLs in order to reserve their usage for future versions of this protocol specification.</t>
      <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 a SDP fragment with media type "application/trickle-ice-sdpfrag" as specified in <xref target="RFC8840"/> carrying the relevant ICE information.</t>
          <t>If the HTTP PATCH to the WHIP session has a content type different than "application/trickle-ice-sdpfrag", the WHIP session <bcp14>MUST</bcp14> reject the HTTP PATCH request with a "415 Unsupported Media Type" error response. If the SDP fragment is malformed, the WHIP session <bcp14>MUST</bcp14> reject the HTTP PATCH with a "400 Bad Request" 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" 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 an "msid" attribute with the same value. The MediaStream <bcp14>MUST</bcp14> contain at least one MediaStreamTrack of any media kind and it <bcp14>MUST NOT</bcp14> have two or more than MediaStreamTracks for the same media (audio or video). 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 a "406 Not Acceptable" error response.</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 a "406 Not Acceptable" error response to prevent having partially successful ingest sessions which can be misleading to end users.</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 a "422 Unprocessable Entity" 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 not <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 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>
      <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 must not 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 session <bcp14>MUST NOT</bcp14> require the usage of any of the extensions.</t>
        <t>Each protocol extension <bcp14>MUST</bcp14> register a unique "rel" attribute value at IANA starting with the prefix: "urn:ietf:params: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.ietf.org/publications/213786HF/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 setup 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="6" sectionFormat="comma" target="RFC4122"/> 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="registration-of-whip-urn-sub-namespace-and-whip-registry">
        <name>Registration of WHIP URN Sub-namespace and WHIP Registry</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" registry, which is used to manage entries within the "urn:ietf:params:whip" namespace. The registry description is as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Registry name: WebRTC-HTTP ingestion protocol (WHIP) URNs</t>
          </li>
          <li>
            <t>Specification: this document (RFC TBD)</t>
          </li>
          <li>
            <t>Registration policy: Specification Required</t>
          </li>
          <li>
            <t>Repository: See Section <xref target="urn-whip-subspace"/></t>
          </li>
          <li>
            <t>Index value: See Section <xref target="urn-whip-subspace"/></t>
          </li>
        </ul>
      </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 US-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 US-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) 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 a "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 <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="BCP26"/> .
   An RFC is <bcp14>REQUIRED</bcp14> for the registration of new value data types that modify existing properties.
   An 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 within the IETF: the DE will post the request to the WebRTC Ingest Signaling over HTTPS (wish) Working Group mailing list (or a successor mailing list designated by the IESG).</t>
          <t>If the request comes from within the IETF, it 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 or already published within 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 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>
      <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="RFC4122">
          <front>
            <title>A Universally Unique IDentifier (UUID) URN Namespace</title>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="July" year="2005"/>
            <abstract>
              <t>This specification defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and can guarantee uniqueness across space and time. UUIDs were originally used in the Apollo Network Computing System and later in the Open Software Foundation\'s (OSF) Distributed Computing Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the DCE specification with the kind permission of the OSF (now known as The Open Group). Information from earlier versions of the DCE specification have been incorporated into this document. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4122"/>
          <seriesInfo name="DOI" value="10.17487/RFC4122"/>
        </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>
        <referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/bcp26">
          <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/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>
        <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 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>
        <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="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>
      </references>
    </references>
    <?line 673?>



  </back>
  <!-- ##markdown-source:
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
zq6zUaobm9DYW8mbWwJfirYsSCRlsfnoaYPLKc2ssTL0tsX3SbYpGvjHDkss
0aWylsZZLD2i1pOuhqGMwNJPzc3wpV3J6DGug8qJwcmcU+M6IFjzdNy5V7PO
W5xjz9faDYmiTwaGRGaU+pyoassddfvdqinX+n4h5bc+hA4L3WFVCRdC3Y8q
0kmmcHZ+VOceBtxwk5OrwHlDSM+m0T8H8krC4rA/UNcAsfaSqddBsvQMGU2E
USZHEvsCqbrTQ2PAtKjQB6hxM3b5D6wffDDyAbsR+eiAVluwMRdPjkfH5HCn
bfKjZpaVV8mLrfsIpFRdhBjH306u3eRvGPSG6l3W4GTQo4lTCzfFZCs6VOxa
naKl1bw03tpqDUICuwanMQ4eWn6PnCDs+s+W7PpXTnxTXPF2bQWQB7obyBON
nVfoAzOFztxN0k3sqTgMeWmJllFO/axAw+iajDnaESdf5Ml8OU1bz0lhaXCr
1VJajk9PWk0JJ09ljdi8h51pbNeDzQ951vtw/v6vwx8//eMvfw++P3+1Sfp+
+sXR6PTk6LR/OlR9tYnWatAfDAYnvcHgSPXPBt0eJXif9E9PhiYJw6gIsGU9
RXMrnFu7wTuAR3+Wo+Fp/2RwNDo+cmbpnw1PRqdutseAJjr+qokG3kTD06Oj
wWA0GMA8ZbhW/eP+aDDqDYenzmrO7ATwDnlHpX/CVy9s0D8enp4e9UbH7oT9
IbA/f2G/aE5cIzZ4yWYdyyO8/Cr34D+W/BB4BrRrsOmTvqdcD4aT7vD5c9Pz
L9RspJpJW3V0mNC2dJaqausFF100GRa62YDHIL2uBLZWjRsFWUVkRwquTU5/
IaFDE/zh2KE2PL6Q0empoxLMOuO2Sez2cCMmWQiyE8M9xNV355pgLV+egG6X
Y6b4d2C5cY1VwSDWOKsX+EEUY5qI26cBp3KwUlVySMukAdmeQejYN7J7FcD0
dQZ8zfNQqQXj8Tkwqpf4WCTDT7Opxmo8jNcVOCvAwJDbrGKrf2s1E8Aw4cro
KVSpoqTOgMC5t45LpWIiUW+y3dK4MTdGy1b8o6bjPWHPUkpguPeem/5vjINs
p+bDkhw0hRhhL4xJiKVB8NUuF1YVu9ae6rZuk1WC3a0eqGFY5UXXrfml7Tv0
pDrl/yWjavJzTAT3CIne/YhW6pgIAf/SYTV877d7zzQMFLJlxyQuSqlIRNUS
pp0bUtQKFLoejM1g4jWOP2M3fTq1LjSBq6NLLEhQqc0HxMc7h23dartkYfhd
um1Sl+WEPX1mqvU32gHgqX2My+aTq4t8cGRyPBk/U1uclq5+zek+uozz6ZBv
NYasDykCAJSbYydX34mCea3Y2EwKsJwTvcND68foJssia2vvYiU5SSqbrXjc
Sa4N7qUwy+t+X70Ux2+mzQgzq0fsxLgnP9hz8YwF+k2X6hLZcRDhCbFnhMW0
5CBVfPXC5yu0gGFLzbOLbBW3UXTEFAtB/6ZQt/Fl1IDFQ0H9SCkZlutsnSGx
XwHntDirduIH6jYTuFxy3bFjbWkP2CCYd5m762UgTlizBAFCWihUDFBPpmix
HnnxsIrodvTItmY5fOa2eg5fj0MGIl0kdBRMJuyqV1+3Pk6DsWKjsTOVAyAe
zoRyLa2QLvA8/sZJ5W//hn9dBxiVgt9whN/otP/fuPzHBMR1B08/BEWxI67G
1v4ul/SMZ5mjQRjUA75SUK7IToe3ccZU/BnAl/JsnVOyFqGBcx+wJYdv/PtF
zeYY68zSJfsKPsbxml3onxLu0OYc+npPBDzgAEu+9clYMwujY+Y7pscMMNDr
3GyeSnhYeDbqp0RaWC7a9sbQcXUzQySuJaY/SdCOP62TPNaNSHR6Q2jk2Izc
Ux7UNbl8bBkOZ+dyGJAqWOH5JqUEr7ghRaxdI4KnSBZzvOaLsppagfNQvIIQ
YiIXK5hmzsjF3PQwToM8ycRsccJ2skvFTg+TqzsYzuGJMFdyFUagSVtPG6Cf
bXLS+bx1ymk0C5KaSx02b3AYKy9ewYYAKe9G0ataG2bwilvLi5cUTgxT+7uk
uy7gsmA9x+2FWJ1FGE+VXbmPNX3uT+Mw2BS67NTLjxEQDkStvfvwzlKDp9cm
KWVn1OFII5PmHgEjWFseYtUryv3nVSJ1JOWGPya9HwsRKoxH5yUY15y1I5v4
mCDWBG9/BX/bb3+pr200aD1WqPUreeG2xd9dL9z9w/Gb1cO3w+1hfBJdXx/+
OLk++3Z9/PH/e+H++3nhXI8bKte6mDGYhmH0S6lzcGzI86mSwl+JUgejs+lR
f3p6PIyDYHg0cqi2Nz05mQ1PB8Oz43jWC8MgPJ1GwcnxUTA9mcbDszjoH/X7
sKGD4Djq94JaSR+T1zNL+uq+zcdcmGkjw9nhw5TXnuHHjEA/TXXbpKqflOey
bkzNomrKT7Mn0zEBXX+m56+zdxwwV2UidCUrJpFjjiPp5twPYIebhxQBq4nX
xA8sBCsTi5ro0EaXyZNscoe5sLqurUaIfQ+Vpz4YeLmGQzff513AKh4qTfPy
qPyqNyQHWlcibcq1TlDtcFS09XuldC2z2Yu4KNhrydo3tyyQr5H31+YXUHqD
vEoSVoLNCFsR+0NheUBc4k0r7GdGU+AV+ZharadNm0q2lqltYX9bf3gkblBq
JtLgIGvy87Gbrk6zTW2Z/QIquhgEy2LMfQxNKTTCjvjKknqTH+u7QuhZeZe0
n7brTOTFNWHHA5ARg+s3zaYMmLhXM7HaGTHysa8hU7ZhLFYnq+e2DNCkSIn+
5lcCErk1IbKpDs01Mfe8EuNK+5c4QBVTAPb7Pe8OP49GxyMyO4jKOGOL8u1v
yQ0h6T1+yx2T2uW8uMM3fKTj+MRpKAMQ0epDV/N2YhcDd3GGSMjEJj8nE6IL
gD9KqZYx6uWYie68dZfrS1PAouBN+ZikkaQgWduW8lhgU6kRecaegbQ2kPUz
EWA83j7LUvgD1W8fOAEamOEh2ywj1K3NRQpO1RryN79sDRkNJcFQtpOFpHEL
YKCmpRJd2LVyhplDyOL7ADge0FCjdI8ymWLpE6fTEYlvVlN0RADmaHnU7luW
2IAXvMPDfOH8uamReVMnRTdD4TkNhXonXINIhZFoMjeUbCCFv8vwCh9MiySC
Nr4xabDfUA3qprcLLJgEAwvfBFVCbrDv6224ErHvrYGI2ecEbCULwR2cC0Z+
JWTgrqMwjan5E1l0jVjxG2cW0oNVN49PCjhi2qMbszjJde2WFDVjHnaeLdnI
RyG2R8+cw+0nvviKkNNtjgjClMLCRKX+c21Ex8XOTW/cvxHzaO+KZA1QtNjj
OqsJEmKERo9gtYSWqrOYM0wOT2x/sGcByc3BfBj9pBlDjfWsGbcln9sj8uun
dHHsUFqNvmqVSZfk6t9zDxscl8uxh1hBeGGdrBJRA8nLbrlftqnOxlV3TS5v
ewi2hVPBaLrd+eX2Er8E5Yz9GM6NNGa35V3Z7dQcDGkIJ9Oyvy1cZBkfOZ94
zKhahlTpqKFApFJiKfyqotlwDrYeXMo58DILKt9NSq7noLwpXh5p6LoEWeMZ
sCcZVQYlATEGElpY94tixWtupl+jC/7oLjK5/Cgpq1iSE2JrWOTiCDReG5zC
pAcZxGnVVa/t8TrUwswCsJlyLFOEWqGVBvWfrnLy80Krl1LANr3JAhBlwTJI
Q91xGvQ/3X2wEEXK6nb1aZhcxIEfZrrRsK6ERw1DK5CcI57YghTO4DcQoD4I
hE73pjllebaM05sZA2OVii7XbJCMXLuWxiLCYTW67OrKwX2WRP6VNXLBkR6X
w/zfXtoX2hSQxkhZhsbmUa9PODvqDWrdEo0RAkINFpiTwk5tBiox9qW/SYBA
TCUhWXvUO1V3Md7HEuRbdSNgORFQBxoWH85VTD4muqMqLm487IkGZMsoCBNW
IdIModYUwVz340UJFkA3tLKGpoyFDqhIFPq4d0T3fuDldx/S4B4sTFYQbBIt
Z/iaC2WsI5b4Bgfn4bRuUp2PSS23Y09URBtJ3S4NRqlqFNGPjWXCBRhPZFcF
dFsikeyjSD2pEpjuCE+8He/PW1LVKPY2uGfTkt0PGIrF3u9BYxdWPnPijr7B
uFNnQp9V6icdnMRcK79ZcTGMQRJqP5I0kW1w1FJqN6TyaRV8ZP8MewQ6qBm5
WUvNK0d3Z6W0lPkNuvYP7z7cvNO7o5vdSsff+lodSnj8Y+62QfmxQJ7cN8He
wLZ1RdyzKkvrqmpjG1JuyjtRdIYpkoZ6JUqZGri2D49UvtrW33tvkvRjJU1G
1JDBaKQrPwJsorqs6RDULYWYO82zxySDI8qtswDklW6lL7DgkyZ1Ep2XYvya
B8fag+Ii1t6MZxsaOTP6UWL3VgUdQRtrVZE+81buXLMQKAeD7cr2dsidDQvb
0963PblSk8xQiybdhKAwNE8xPBH0YqjDiXDmwhbXdiYD7F5lds+bgdKQDaEs
l4YEFjKtrZYeIp3PvVWj17ODoVxSTPBd0yXD8TPuOH9ntn3SaIidH/zFEOA/
C/2P43YhZWeNq5Py5IX2JJAElLisj3knECw6mWn9gTxxFmyWpQwnto63BW5+
hUcaXe8mLFz2WP2+KDfpGP9jQnCgTv7hd5g4+dI9U95HeHzH+B/3oz+a7P+X
m2jdMMTv3FtTNA2+3MOf9n7nIO3l3mp7rYH+XXXfXtoFfRVMZfivgan4vwGo
R9PDq3y68OXKnlIvkEAEOi+s0vS8fhmFc8JM7g23PXDbhDrBC45V+NVewrVF
xDm+aIcpGwsWT0rKt+fCEo3F8CzpYdTSOicXNs5mcCpnWFfyH53rOAJWFeHd
gtJE4fPnP+p+XQ/xNC/DzqA36Pf62LILL4U996R4xMEEVL7wdlST6Tbo9rvP
XIBlAphR4brr96oNHjH4Pt4Ty0RcRHlM6wKVgbpf+L23tDsJk9y4kzpyfXNl
tb7tYL6RlH9u/YM9GKtUZjar1i8BN3xCKpkf+6m7CBAKLPuleXU9chGXPkrF
qhCNDt/TpAWvYhfCpXufp74u2NTxUfsD661JahaSOOPQPWc7I7pBRIpLYLpK
NXz2hEZn0uM+lZXmDmuQrjH3e0PnfM7Ji+Yu80qjSDd3V9uHBIKG5wk4bEiQ
kcGIMF0HdIfyercjm6jZ7/ZHvkvVtzUdZ02h9dSisV896MNUYe1GWJ6HR5tT
BRNWG/aRvNyl4WraIfuuUpjPPRccLxYdCKIhOYiVe27dW7/r6TZFPS1Zv7XB
lnJMRM4Hv8FwK7KVJ0+LOJnIvNHWqhsJ1ra9aOeNdyVVUOlXK3iYkYQ9tmmc
XAtdK+TulqNX45EWG9tPJnSsEKo8Qs8X0KLEtc1dY8TEkOEHUWT6osm+Vvfc
8dxTKAmb0GlvoPM31+Q3ZnPgJo45hKw99EgHTfTrBSbIrHsGAYueV4VfuhrG
syUZxG6JAvay3NXKsq2dfkRmdw0DN9XYTsiP2JErejrSZKvz1mGXe9w9l6WS
EaPw/zu+/U50AqIeUcFrUzvmoXiMa12uCssVNB/R+NvJ4cAAlJRnSrAgU8Ol
Q6GryOmdi+M03X+um8RokqRpLF2iDyW36gwtwh+/RiXsLJj4lg/pPa5FAGb3
clnxHLUbW/P5oX1Cd3XwmnOwqa67IQBJd53TVWQ69jiNg5xe+YgRoto0DkUa
4abVHJ3D67G+wC6ypB6dhtsquYA9NgqPk9etndQzt8EOLb0CE/q1Vg11UhYT
3ZMGX84L9Wr3Qhsdx7YXBvl0mMcZ7unwN/SI2eGMo0SnRk9cImgsLfIh2ymW
nYucTk6PyedZz7O1Hnw2fJ8gSkcZ5DULG3gKcrnU3kVFYYSycwAr4sj2u44/
YeDUOJSZJTa3AQbeKHIpDTCED4dmC8zmU1tAXgW4QNOUyCVoL71pwb1MoqQw
9rfRIUzybIGpvph6y2QZZuvYJApEWbjhjqS32cqkmJmJKckBf8aZRY0LPQdC
gMBjjFm7p5fJKuEAUVv9+fs7/alXu8d77fi4RqcDbJLLxUKLAEUdnEgQT6oo
s5xtHL5CfRroVnh6YCTh7TrhLlp8Nbn2T2tU6Cgz57IZVNS1LCnu17d/1Xuk
FWq/kIpFGfsB1IWbu7fX1jSUtIq/xFuGzu5OdNB9/Fwybk370UX8NLX795VW
3+cDiIdSuB1B6dVxWVAsLRdeuYMJULq6XGKEpMaWOPOCCrk+5+xRKFfXoIiD
mOt3bM87dZusNkuUfIwz2HDaY84lYQy0Ws5Lfvu3Y0zw0r3rXO5ujPNK9E7n
VemNLxc5OujduyBrFTeH1XIbnZigc6AKbw0PQcoRrZijIqIWy71k6dyms9hG
yK5oqV8eV70Bbnd/dzeVi1LjJloxCSgBROrADLw8AWdLkblF1Lbj4rlHpnU8
ozwx4MqPSZoY61MbYpWtW00MfyNiOOfjsH/7t/MDv9C91NkzaYZNPOVWSXdL
rfRIOKcAwYGB2sJJ+I5hIliv8NOp/cZXwv3ioE26CTlAyAvB3B3GcjfQMiv4
KCNtlJyyrv4In/ARMHc0oqqX8kn9/MJcyGqffqn0BTRh/ZIzic3XLOy12uEx
Bts/MJAW5E4yMvcAnwNrY38AMaY0zTYcImWMPLgz2eJuWEvTQh7ttlYY1SyI
YNfKpLBJCB5b+pqepXWjcacR3m2KjDkVcOiNa4ohUQtSDEaZhYrtY5lC27p6
7EvNjrZKWa99HRV+be+gIPNa/JqSPZpZB8Es4fFe6iIdo6no1gWEjqC0s+3Y
P5R1XDogXcxtt243ScJkDzRoerZsi1y29TSeTcrtrJrRU+sQYSL+rrJrPII4
j26ha5YBi7vE/VrXVqj3m4nedgHeAUupribvJooccInOoNfKYfJpvMMXCtPt
1SwBeLNDdy9jMvg6wHYIXbxv0LS3bRtmxHzbNq634NPVyOQpL7OOvkvaawDP
Wr68xNWK97xvFQ1e34K1KFfLLv6li/0bHubdLJ8fckY04PjQGanDI3Xxixf1
522PcnV7JitQajBZoraOJJSaqDmy/mX01Oq1L97pf/xC06YTzUXy1U1HF/iu
/RzLJo3r695T+54e7iTqEb630ss4tfvY1olMlJRFKVCB2wvngNM8aFhYLhwo
1AaXTsHq14bdOfl4mWUfKWPC3P3YeNfa47erfd1FahLF8l5FBBOZrTdTc+/E
4aB/dDo6+e71YVHEf9DhKwpr/ZxNeTxc5QlHuy97qkEQe8GqR/7c3NJo51xP
dSalDtK65Z6bHCCULFyvKfiFioa6lUvKqf+6bW6JJqtLrDbyzOVDzl27QE1r
nIb9HciXKTKABLghH5FMoD8ptO3lTMdluVoMVaJAXH3rXUTgXdGCNiLlJZFH
hu9S5+CEmbvSudOYCnSVDUF+W7kxK/H9rOYumdrQK9Dklhj0t1eLvwm2mGep
39i/e3N7YOYcDk88g/isPzzlrAFCoB53vMs/NjBfmz+fVl1GHco5aRrKvHp0
NuJrfN6bDUTR364rhZjamBW082Rb4vYDN8TagWKTz7Dpg6l2Emq7uQSeMrm+
kuBEIRkIbJsmfN29ZT4z4DeRTYkUZh9/WgQburN5DIf8aldhBJomBAyHy/Bv
ohFQJYJnIrs+V65t9mww01uRpQrWuAcfY1P288QlyV2Aks4MaV0wcNjkeiBq
4qtoWEBJEiY3s46ojCPkW7fMhWGoX1E3Iu3okO7lC84IPpSeA9LmEOH4fpFI
vt0qwIvXqJ0IqwFG6uhYpjTKj3eNh+oNQLXrrjOug8n8SE/TMJgLh90E/Dua
liYI4oTZzdpxLdq8tiPRzQxJwWmNcYqmusTCWBHAogPdBrJCSvbWKLY0KcRi
ezo6TRESp6kZqtCCer15S9ANYUXcLE72kAmJgd4RpXH6JFQ8MrpyweYw8zrJ
ycakcU9pqYwLjG04BizTsYFjh82DGm8Hu64hY4j1hVHZlBL5TVJdofavLt7f
HHg+Mb3nS5HqxdhuDTmaHg/lNbUTKsxgnOAWFMTk5xvdo/PpA68baPtHtJIL
y9aSve9BQvc+KDZtNd+kaHX9ol0094cQakjDZDqFPU2jbJXSEsXTDmxpuy6z
eR6sF+LblA1aF/EmyvgTXS0lQ2NJmKkbZccxBRmxcCNkX8yNmUr3m+WKFPJy
aNnEMmjYQ2HA6uYvoMAm7DNbjHeJYvrug3bPwNI/sKV1dYGMGhSOXO1/+HB1
caAh7Q8GbaWlGUnS3FxMpkmk0mN8B9FxNmnHbQGiJdFYmW51NVVZv4O+khp3
ZQZE0UHtOmtkQ86VUhXx4jfxrV++hFXa2G53vmiiYjgcvF0kXFZgP9INJdQc
lyVLc1N5Eb02SdbrxeM2bkKHVZRV2tEV/k0B/+Ucr6GzDSm3ZJY3KraeBsl9
klmxXaLuTIooCS3q4UBmIHsD8i1TLAZ3N9MOZsuRlc6EvEOHL6QABIe+0UOz
1WRzqThI1DD9NMbKTpMBo70SzGpphX40dej4XSmhGWY3s76jbGB3VicfaYy4
usdghg5j09q9fD0ODHH2lk4rkRQkzqNCH7e5dS5w5bZY2uuY3OY3Wt6M1d2r
C0LQDaPYL77HyW9dVFvfj7y/BSsY0YARw+IjazWYkRFQL/TcmA57V5d3rxvG
w527sVg1Dq9rNCNjdABdRZobFXuWECRBWi4Rqg1JirAzbMNofuTi6Bi95Du8
RXt8k+4qSIO57rnkTtlWNRwIbLR0tlo6dFBE4WUnLy91H/F5gLhxFqjTXJLC
XCIs0yNaE2njpt2wjUArAx9H8gzuIicLLqnkrYM93zF7qzh//fnwy/e37gEf
+yFQtQ/YRqo78CeTrG9qcTD2RzAt280XeFkmiGF8MY6NRGp04Mk3V2kUf2Kf
4XM+IscGnYtmkqUj8PlF/dNK4FFtymRJt2IiekjllzsO3AhTHO3kXloRbHCE
Vb0NVW9mU7yC746lbLZQm2WODOIDw+3Cdp9XKhp09dOKywAv56xGQHQPA29f
saILvQ6t1jszwdUFWahIsO5Dtcc0bVgxXhI/5yiHR0FXNtGNBvob3zU7Vn38
7QKb2DDPu4jDJYXA5VwEtievWS6NcOPEX7J8DiLwRyFsBNKUZl6mc8A9v3YH
fADvwApj0nKAzeMVUBy0SkF/LsdqgsdQP8Vy1lyMnlWWIm07vgDywGExFllL
eLFSG9ABLP5P2kuHDIrXY/j37ZYmgg9vy3wT4nY0IFbvB75Esbx3t7cHZL0D
JEyyKHM2YifKJngbU+CNtWKKLryOKmbe2n3z5B38jBL2y/gzYhv+h5KQkT7l
0pOP8ZZ7zjUMvYoDtBOYX+Hx5kqPu4W+C4geyCWqvrpBnlxb7AxrolAAvW+G
Y743sRmBH247k9vzqytclCm+w9ghddcTGUeimhJM9IcryWUAfvP58x9RKegP
+1++HNAZ0UCgKvsPbMlgsPqYT5J5OQc/TDbclMLESRptDNvGNAOXWumhXSFh
G5aYbv+pa2Mm5zKQfZZrkiKg2wZOc8qgoMvtk1Q5qh3eHMSpLtMt1d2mfOcc
ulAkG4KsFize1qwVcLELe6SOcd/ySRrCecME/AuRTZprAH7eZSmwJUdbYNuI
LDpfqTWnKqqdcjkbU5NHm9g44H0SP2i/W4y4poDuxszS9Wa/Ri5WlFR3V5se
wH1PJZq88ZZFij8ranvdU6Z8ZbCuYObewbb4WK7sM5cP5Zulm8ZIrxPvZQIA
WpVMR1FIquqYDihz86cNFRMXEuvkfBA6y+5I0imVu9IKIHQhjsPnnQQCuYDE
6Yw64+OEGNXAUf9WMxdmH0sve7oFGx1kHG8lDxO2LLbIn5jl0l5b7sexRroi
mJjIftydd9uPRBwP+F4f0ucZlShmOwT6vdYCfHG6Eyq813658SnWhg+R0Gnj
cJI3YFFibOoSDi7ggxR/+Ya/oJu3Xar6HTvlzAhLGSG2I1STDS0L4KABQHDO
TITqhwlXpE8QF3lifvj4b/Z60rd6r3es9BaT7fhv3y6zabDsOiYNS2TCrLEu
Lq1+xWqrpxO5zEv7HKuJGGiu7tTZSHDSgtkuSH++HaAZbIOSetBVyM11P/v6
4hgObUFQmaaUE/66OqWxuJzbPvnOS88L1ISpx/sMkQNLtR7dO7nUzBHjzwzr
ozrqGx/XOu2GpCQpd6gEIz81pS+Pq2FtvwkP4h2Hoj4HrMVhw92NiZHsxAuy
sqzg/PQkE3+9BZXw8sGWZbhAUa0K3Zi85JzFTQ5mY9SVBd1+iwvC7+GUIpJp
VXVd9PNnOs9UvAbMs6ab4gje4n0g2J5AIecBXrAGUnU24GlyNpD2dV8njht2
+xhfRUcNKuBz7myw60RoYaStUV2fCEsGNqXbl+AFeQkG/E3ujuyex5qpa0qx
wYs4ObpDLQGNbKsmzJv+wqCmccFerfCt8BL0LArt8ajvk3gxrAOKctg/f/63
V+fXtHlEKxMwosHshuFvLv/64erm8sIc2rxhL5hNUMN73BCxAlZZhNqVcU+u
aXmUqe/PQTqpN1F1ksePtDvbzjedC2Equ5laEAGgrjnNHhA2x24Kj1Pxrgbm
LuXIf70UU7VdrWsw7cXIVdjWlWJk6gdp8Cf8Dx4PQhHYaNJCjjKod26q8A84
oaCoiVMtVROb5cFW9k2MVSjY52J/cnN3oCZAuOqCIkuZqWKXDkJw8LsaEXxZ
mgxfOKio1NkjDVFTNJ3AyBYYMhNizPD/7+3lr43IBbFOmQGF07kM74ElwSjO
BxyHOvlFtneBfykFVtrmked0aDjcWmbyjgs5SoIPl53GpmOgkd+7xGa1uyMO
+QRtFJr9i3EDmxmYulziuLZAxanH0zkUdnQzIAVYTHYrBugyHEfwQFeQiATQ
R6BNurC80OCC1/RqaAFxVOtkKZZerUqCmuGZrBqTeVC9Pga162lsbQZisY5a
QTKRs7wky7SWaikC+tsN6ICp+J0cN8olnRPpsFV7rvYvLg+qbcKCIoQ/6Uoz
4hD6QoBik3An/8g1BNV+4DP8g4ZWFFZIUqQzU7Ae9u6JeWP8nklhpYzcvsBS
xRU0uujt4tLwUXcN4SIOP/L5AMMVhQpAr7Uu3XjLvxmxQqzYw8W7kLnk2SjT
2oXdqQsg5GfmOqXCP+yFNTgrZSHW0JWso5Vc4GQc16hfjTUIpGGsqYG3Bd+E
4Tjz54p7Ht4a7ZKsN84h2kd15EB9n+XUyudb6lXrKSX77jU5yAncPzpcWPgy
8kxUsnWVgW35vNK37VbWQoa27f1Rk0vaWdi5yINZ2VVvgqKsboJ72QmlzpKD
xN2KgNtcVVoOoscGqEl6xFHHW9sajhqhU9dcvvyXKK9Y2MQgvQKtGO/ijZ7m
Zv23T9sgWmySF4cYnT7zTixdxmNTTuG36IWTBGA0Hr1chobZnrLAH0tHPOjy
rE5wbKJmLCq9rkds6lSPrs8reKh34kc0EZf7WJxzs0eXEdcWdIsiANQ8LKqq
wOsFESdqmifxzIvx6CtPNmno/u6kurLbZoH5c4gwSoegW1weMp7jXBxajtga
Nz00G+S5HrnNW4FeG26zVVUYMF48CTHnHLSdObsWmRFyFVZBpoakyIMYeQMi
PP0xU2+TNAElu63+vFkmm+JHdb7Is2kW/hh/bKtJFKzUTRaEi7Z6l4Ce836x
XMUJlqjAa5xd/l22xMyOOTyCbQGjSV0ul0lWghz9Fg5jcJ+pb4M8TAKYAjhm
oV7hbdltdQsMLce/bcKkYTj26gGBbZFtxksnYKI7oVNCeCnMlmxYIy6FUYI6
MYvjaBqEsJgSy2clRQR9RcRJrZUoUSIjbCTLUxfEqTjI3e6WwriFECizHNhc
p9NROFur1fo/9UkkvyDEAAA=

-->

</rfc>
