<?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.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-hurst-sip-quic-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title abbrev="SIP-over-QUIC">SIP-over-QUIC: Session Initiation Protocol over QUIC Transport</title>
    <seriesInfo name="Internet-Draft" value="draft-hurst-sip-quic-00"/>
    <author fullname="Sam Hurst">
      <organization>BBC Research &amp; Development</organization>
      <address>
        <email>sam.hurst@bbc.co.uk</email>
      </address>
    </author>
    <date year="2022" month="November" day="06"/>
    <area>ART</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes a mapping of Session Initiation Protocol (SIP) semantics over QUIC Transport. It allows the
creation, modification and termination of media sessions with one or more participants, possibly carried over the same
QUIC transport connection, using RTP/AVP directly, or some mixture of both.</t>
      <t>SIP-over-QUIC enables a more efficient use of network resources by introducing field compression to the header
fields carried in SIP transactions.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://bbc.github.io/draft-hurst-sip-quic/draft-hurst-sip-quic.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-hurst-sip-quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/bbc/draft-hurst-sip-quic"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Session Initiation Protocol (SIP) <xref target="RFC3261"/> is widely used for managing media sessions over the Internet.
Examples of these media sessions include Internet telephony services, video conferencing and live streaming of media.</t>
      <t><xref target="SIP2.0"/> uses whitespace-delimited text fields to convey SIP messages in a similar format to HTTP/1.1 <xref target="HTTP1.1"/>,
and may optionally be transported over TLS (so-called "SIPS"). SIP-over-QUIC, as defined by this document, uses a binary
framing layer carried over QUIC streams and is protected by the mandatory TLS encryption afforded by the QUIC
transport connection.</t>
      <ul empty="true">
        <li>
          <t><strong>Author's Note:</strong> A future optional extension may introduce the ability to carry SIP messages in QUIC Datagrams
<xref target="QUIC-DATAGRAMS"/>.</t>
        </li>
      </ul>
      <section anchor="conventions">
        <name>Conventions</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>
        <t>This document uses the variable-length integer encoding from <xref section="16" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
        <t>Packet and frame diagrams in this document use the format described in <xref section="1.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
      <section anchor="definitions">
        <name>Definitions</name>
        <t>The following terms are used:</t>
        <dl>
          <dt>abort:</dt>
          <dd>
            <t>An abrupt termination of a connection or stream, possibly due to an error
condition.</t>
          </dd>
          <dt>endpoint:</dt>
          <dd>
            <t>Either the client or server of the connection.</t>
          </dd>
          <dt>connection:</dt>
          <dd>
            <t>A transport-layer connection between two endpoints using QUIC as the transport protocol.</t>
          </dd>
          <dt><xref target="error-handling" format="none">connection error</xref><iref item="connection error"/>:</dt>
          <dd>
            <t>An error that affects the entire SIP-over-QUIC connection.</t>
          </dd>
          <dt>frame:</dt>
          <dd>
            <t>The smallest unit of communication on a stream in SIP-over-QUIC, consisting of a header and a variable-length sequence
of bytes structured according to the frame type.
</t>
            <t>Protocol elements called "frames" exist in both this document and <xref target="QUIC-TRANSPORT"/>. Where frames from
<xref target="QUIC-TRANSPORT"/> are referenced, the frame name will be prefaced with "QUIC".  For example, "QUIC CONNECTION_CLOSE
frames".  References without this preface refer to frames defined in <xref target="frame-definitions"/>.</t>
          </dd>
          <dt>peer:</dt>
          <dd>
            <t>An endpoint.  When discussing a particular endpoint, "peer" refers to the endpoint that is remote to the primary
subject of discussion.</t>
          </dd>
          <dt>receiver:</dt>
          <dd>
            <t>An endpoint that is receiving frames.</t>
          </dd>
          <dt>sender:</dt>
          <dd>
            <t>An endpoint that is transmitting frames.</t>
          </dd>
          <dt>SIP/2.0:</dt>
          <dd>
            <t>The SIP/2.0 specification as described in RFC3261 <xref target="SIP2.0"/>.</t>
          </dd>
          <dt>SIP-over-QUIC connection:</dt>
          <dd>
            <t>A QUIC connection where the negotiated application protocol is SIP-over-QUIC.</t>
          </dd>
          <dt>stream:</dt>
          <dd>
            <t>A bidirectional or unidirectional bytestream provided by the QUIC transport. All streams within an SIP-over-QUIC
connection can be considered "SIP-over-QUIC streams", but multiple stream types are defined within SIP-over-QUIC.</t>
          </dd>
          <dt><xref target="error-handling" format="none">stream error</xref><iref item="stream error"/>:</dt>
          <dd>
            <t>An application-level error on the individual stream.</t>
          </dd>
          <dt>transport client:</dt>
          <dd>
            <t>The endpoint that initiates a SIP-over-QUIC connection.</t>
          </dd>
          <dt>transport server:</dt>
          <dd>
            <t>The endpoint that accepts a SIP-over-QUIC connection.</t>
          </dd>
        </dl>
        <t>The terms "call", "dialog", "header", "header field", "header field value", "initiator", "invitee", "message",
"method", "proxy server", "request", "(SIP) transaction", "user agent client" and "user agent server" are defined in
<xref section="6" sectionFormat="of" target="SIP2.0"/>.</t>
      </section>
    </section>
    <section anchor="sip3-overview">
      <name>SIP-over-QUIC Protocol Overview</name>
      <t>SIP-over-QUIC provides a transport for SIP semantics using the QUIC transport protocol and an internal framing layer
inspired by <xref target="HTTP3"/>.</t>
      <t>Once a user agent client knows that a user agent server supports SIP-over-QUIC, it opens a QUIC connection. QUIC
provides protocol negotiation, stream-based multiplexing, and flow control services to the SIP-over-QUIC transaction
layer above. SIP transactions are multiplexed across QUIC streams as described in <xref section="2" sectionFormat="of" target="QUIC-TRANSPORT"/>. Each
request and response message pair in a SIP-over-QUIC transaction consumes a single QUIC stream.</t>
      <t>Within each QUIC stream, the basic unit of SIP-over-QUIC communication is a frame as described in <xref target="framing-layer"/>.
Each frame type serves a different purpose. The <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> and <xref target="data-frame" format="none">DATA</xref><iref item="DATA"/> frames form the basis of the offer/answer transaction
model described in <xref target="RFC3264"/> and are described in <xref target="sip-transaction-framing"/>.</t>
      <t>In <xref target="SIP2.0"/>, some header fields may be compressed by using abbreviated versions. In SIP-over-QUIC, all request and
response header fields are compressed for transmission using <xref target="QPACK"/>, in which header fields may be mapped to indexed
values, or literal values may be encoded using a codepoint in a Huffman table. <xref target="QPACK"/> uses two tables for its indexed
values: the static table is predefined with common SIP header fields and values, and the dynamic table can be used to
encode frequently used header fields in a SIP-over-QUIC connection to reduce repetition. Because <xref target="QPACK"/>'s static
table is designed to work with <xref target="HTTP3"/>, this specification replaces the default static table defined in
<xref section="A" sectionFormat="of" target="QPACK"/> with the one in <xref target="static-table"/>.</t>
      <section anchor="quic-transport">
        <name>QUIC Transport</name>
        <t>SIP-over-QUIC relies on QUIC version 1 as the underlying transport. The use of other QUIC transport versions with
SIP-over-QUIC <bcp14>MAY</bcp14> be defined by future specifications.</t>
        <t>QUIC connections are established as described in <xref target="RFC9000"/>. During connection establishment, SIP-over-QUIC support is
indicated by selecting the ALPN token "sips/quic" in the TLS handshake. Support for other application-layer protocols
<bcp14>MAY</bcp14> be offered in the same handshake.</t>
        <ul empty="true">
          <li>
            <t><strong>Author's Note:</strong> The original intention of this document was to define the next major version of SIP, i.e. SIPv3.
Therefore, the future ALPN token could be <tt>sips/3</tt> or <tt>s3</tt> (similarly to <tt>h2</tt>/<tt>h3</tt>).</t>
          </li>
        </ul>
        <t>QUIC version 1 uses TLS version 1.3 or greater as its handshake protocol. SIP-over-QUIC user agents <bcp14>MUST</bcp14> support a
mechanism to indicate the target host to the server during the TLS handshake. If the target destination user agent
server is identified by a domain name <xref target="RFC8499"/>, clients <bcp14>MUST</bcp14> send the Server Name Indication (<xref target="SNI"/>) TLS
extension unless an alternative mechanism to indicate the target host is used.</t>
        <t>SIP-over-QUIC messages are carried in reliable QUIC streams; therefore, the SIP-over-QUIC protocol defined by this
document is a reliable SIP transport. Thus, client and server transactions using SIP-over-QUIC for transport <bcp14>MUST</bcp14> follow
the procedures and timer values for reliable transports as defined in <xref target="SIP2.0"/>.</t>
        <section anchor="draft-version-indication">
          <name>Draft Version Identification</name>
          <ul empty="true">
            <li>
              <t><strong>RFC Editor's Note:</strong> Please remove this section prior to publication of a final version of this document.</t>
            </li>
          </ul>
          <t>Only implementations of the final, published RFC can identify themselves as "sips/quic". Until such an RFC exists,
implementations <bcp14>MUST NOT</bcp14> identify themselves using this string. Implementations of draft versions of the protocol <bcp14>MUST</bcp14>
add the string "-h" and the corresponding draft number to the identifier. For example, draft-hurst-sip-quic-00 is
identified using the string "sips/quic-h00".</t>
          <t>Non-compatible experiments that are based on these draft versions <bcp14>MUST</bcp14> append the string "-" and an experiment name to
the identifier. For example, an experimental implementation based on draft-hurst-sip-quic-00 which uses QUIC datagrams
instead of QUIC streams to carry SIP messages might identify itself as "sips/quic-h00-datagrams". Note that any label
<bcp14>MUST</bcp14> conform to the "token" syntax defined in <xref section="5.6.2" sectionFormat="of" target="HTTP-SEMANTICS"/>. Experimenters are encouraged to
coordinate their experiments.</t>
        </section>
      </section>
      <section anchor="connection-reuse">
        <name>Connection Reuse</name>
        <t>SIP-over-QUIC connections are persistent across multiple request-response transactions. A SIP-over-QUIC connection <bcp14>MAY</bcp14>
also be shared by multiple concurrent dialogs, with each dialog individually identified by the <tt>Call-ID</tt> header and
<tt>tag=</tt> parameters on the <tt>To</tt> and <tt>From</tt> headers.</t>
      </section>
    </section>
    <section anchor="sip3-semantics">
      <name>Expressing SIP Semantics Over QUIC Transport</name>
      <section anchor="quic-clients-servers">
        <name>QUIC Clients and Servers</name>
        <t>This specification introduces two new terms: "transport client" to denote the host that initiates the QUIC transport
connection for exchanging SIP-over-QUIC messages, and "transport server" as its peer. These terms are orthogonal to
SIP's concepts of user agent client (UAC) and user agent server (UAS): transport clients and servers may take on either
role in the SIP-over-QUIC connection.</t>
      </section>
      <section anchor="sip-transaction-framing">
        <name>SIP Transaction Framing</name>
        <t>SIP-over-QUIC transactions begin with a request message sent by a UAC on a request stream, which is a bidirectional QUIC
stream; see <xref target="stream-mapping"/>. If the user agent client making the request is accessing the transport connection from
the transport client endpoint, then the request stream is carried on a client-initiated bidirectional QUIC stream. If
the user agent client making the request is accessing the transport connection from the transport server endpoint,
then the request stream is carried on a server-initiated bidirectional QUIC stream.</t>
        <t>Each SIP-over-QUIC transaction has exclusive use of a request stream. Only one request is made per request stream. The
UAS sends zero or more provisional responses on the same stream as the request, followed by one or more final responses.
See <xref section="7.2" sectionFormat="of" target="SIP2.0"/> for a description of provisional and final responses.</t>
        <t>On a given request stream, receipt of multiple requests <bcp14>MUST</bcp14> be treated as <xref target="malformed" format="none">malformed</xref><iref item="malformed"/>.</t>
        <t>A SIP message (request or response) consists of:</t>
        <ol spacing="normal" type="1"><li>the header section, including message control data, sent in SIP-over-QUIC as a single <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame,</li>
          <li>optionally, the message body, if present, sent in SIP-over-QUIC as a series of <xref target="data-frame" format="none">DATA</xref><iref item="DATA"/> frames.</li>
        </ol>
        <t>Headers are described in <xref section="7.3" sectionFormat="of" target="SIP2.0"/>. Message bodies are described in <xref section="7.4" sectionFormat="of" target="SIP2.0"/>.</t>
        <t>Receipt of an invalid sequence of frames <bcp14>MUST</bcp14> be treated as a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type <xref target="SIP_FRAME_UNEXPECTED" format="none">SIP_FRAME_UNEXPECTED</xref><iref item="SIP_FRAME_UNEXPECTED"/>. In
particular, a <xref target="data-frame" format="none">DATA</xref><iref item="DATA"/> frame received before any <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame is considered invalid. Other frame types, especially unknown
frame types, <bcp14>MAY</bcp14> be permitted, subject to their own rules, see <xref target="extensions"/>.</t>
        <t>The <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame might reference updates to the QPACK dynamic table. While these updates are not directly part of the
message exchange, they <bcp14>MUST</bcp14> be received and processed before the message can be consumed.</t>
        <t>After sending a request, the UAC <bcp14>MUST</bcp14> close the stream for sending (see <xref section="3.4" sectionFormat="of" target="QUIC-TRANSPORT"/>). After
sending the last final response, the UAS <bcp14>MUST</bcp14> close the stream for sending. At this point, the QUIC stream is fully
closed.</t>
        <t>When a stream is closed, this indicates the completion of the SIP-over-QUIC transaction. If a stream terminates without
enough of the request to provide a complete response, the UAS <bcp14>SHOULD</bcp14> abort the stream with the error code
<xref target="SIP_REQUEST_INCOMPLETE" format="none">SIP_REQUEST_INCOMPLETE</xref><iref item="SIP_REQUEST_INCOMPLETE"/>.</t>
        <section anchor="cancel-request">
          <name>Request Cancellation and Rejection</name>
          <t>Once a request stream has been opened, the request <bcp14>MAY</bcp14> be cancelled by either endpoint for the reasons given in
<xref section="9" sectionFormat="of" target="SIP2.0"/>. Cancellations are categorised as either graceful or abrupt. An endpoint <bcp14>MAY</bcp14> abruptly cancel
any request by resetting the stream using a <tt>RESET_STREAM</tt> frame and aborting the reception of further data on that
stream using a <tt>STOP_SENDING</tt> frame as described in <xref section="2.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
          <t>The UAC <bcp14>SHOULD</bcp14> gracefully cancel requests if the response is no longer of interest by using the <tt>CANCEL</tt> frame. For
example, where a UAC is attempting to reach a user at multiple endpoints, and has already received a final response
from one endpoint that it is satisfied with.</t>
          <t>UACs <bcp14>MAY</bcp14> use the error code <xref target="SIP_REQUEST_CANCELLED" format="none">SIP_REQUEST_CANCELLED</xref><iref item="SIP_REQUEST_CANCELLED"/> to abruptly cancel requests. Upon receipt of this error code, a
UAS <bcp14>MAY</bcp14> abruptly terminate the response using the error code <xref target="SIP_REQUEST_REJECTED" format="none">SIP_REQUEST_REJECTED</xref><iref item="SIP_REQUEST_REJECTED"/> if no processing was performed.
A UAC <bcp14>MUST NOT</bcp14> use the <xref target="SIP_REQUEST_REJECTED" format="none">SIP_REQUEST_REJECTED</xref><iref item="SIP_REQUEST_REJECTED"/> error code, except when the corresponding UAS has requested closure of the
request stream with this error code.</t>
          <t>A UAS receiving a <tt>CANCEL</tt> request (not frame) <bcp14>MUST</bcp14> respond to the request immediately with a 405 Method Not Allowed
error as described in Section 21.4.6 of <xref target="SIP2.0"/>. A user agent server receiving a <tt>CANCEL</tt> frame for a stream that has
not been opened <bcp14>MUST</bcp14> be treated as a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type <xref target="SIP_CANCEL_FRAME_CLOSED" format="none">SIP_CANCEL_FRAME_CLOSED</xref><iref item="SIP_CANCEL_FRAME_CLOSED"/>.</t>
          <ul empty="true">
            <li>
              <t><strong>Author's Note:</strong> This is because the <tt>CSeq</tt> header has been removed, so the <tt>CANCEL</tt> request method cannot be used.</t>
            </li>
          </ul>
          <t>The UAS cancels requests if they are unable or choose not to respond. UAS cancellations are always abrupt cancellations.
When a UAS abruptly cancels a request without performing any application processing, the request is considered
"rejected". In this case, the UAS <bcp14>SHOULD</bcp14> abort its response stream with the error code <xref target="SIP_REQUEST_REJECTED" format="none">SIP_REQUEST_REJECTED</xref><iref item="SIP_REQUEST_REJECTED"/>. (In this
context, "processed" means that some data from the request stream was passed to some higher layer of software that might
have taken some action as a result.) The UAC <bcp14>MAY</bcp14> treat a request rejected by the UAS as though it had never been sent at
all, and may retry the request later.</t>
          <t>A UAS <bcp14>MUST NOT</bcp14> use the <xref target="SIP_REQUEST_REJECTED" format="none">SIP_REQUEST_REJECTED</xref><iref item="SIP_REQUEST_REJECTED"/> error code for requests that were partially or fully processed. When a UAS
abandons a response after partial processing, it <bcp14>SHOULD</bcp14> abort its response stream with the error code
<xref target="SIP_REQUEST_CANCELLED" format="none">SIP_REQUEST_CANCELLED</xref><iref item="SIP_REQUEST_CANCELLED"/>.</t>
        </section>
        <section anchor="malformed">
          <name>Malformed Requests And Responses</name>
          <t>A <xref target="malformed" format="none">malformed</xref><iref item="malformed"/> request or response is one that is a sequence of syntactically valid <tt>SIP-over-QUIC</tt> frames but that is
invalid due to:</t>
          <ul spacing="normal">
            <li>an invalid sequence of SIP-over-QUIC frames, such as a <xref target="data-frame" format="none">DATA</xref><iref item="DATA"/> frame preceding a <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame,</li>
            <li>the presence of prohibited header fields or pseudo-header fields in a <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame,</li>
            <li>the absence of mandatory pseudo-header fields in a <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame,</li>
            <li>invalid values for pseudo-header fields in a <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame,</li>
            <li>pseudo-header fields after header fields in a <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame,</li>
            <li>the inclusion of uppercase header field names in a <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame,</li>
            <li>the inclusion of invalid characters in field names or values in a <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/> frame.</li>
          </ul>
          <t>A request or response that is defined as having content when it contains a <tt>Content-Length</tt> header field (see
<xref section="18.3" sectionFormat="of" target="SIP2.0"/>) is <xref target="malformed" format="none">malformed</xref><iref item="malformed"/> if the value of the <tt>Content-Length</tt> header field does not equal the sum of
the received <tt>DATA</tt> frame lengths.</t>
          <t>Intermediaries that process SIP-over-QUIC request or response messages (such as a proxy server) <bcp14>MUST NOT</bcp14> forward a
<xref target="malformed" format="none">malformed</xref><iref item="malformed"/> request or response. Malformed requests or responses that are detected <bcp14>MUST</bcp14> be treated as a <xref target="error-handling" format="none">stream error</xref><iref item="stream error"/> of
type <xref target="SIP_MESSAGE_ERROR" format="none">SIP_MESSAGE_ERROR</xref><iref item="SIP_MESSAGE_ERROR"/>.</t>
          <t>A UAS <bcp14>MAY</bcp14> respond to a <xref target="malformed" format="none">malformed</xref><iref item="malformed"/> request, indicating the error prior to closing or resetting the stream.</t>
          <t>A UAC <bcp14>MUST NOT</bcp14> accept a <xref target="malformed" format="none">malformed</xref><iref item="malformed"/> response.</t>
        </section>
      </section>
      <section anchor="header-fields">
        <name>SIP Header Fields</name>
        <t>SIP messages carry metadata as a series of key-value pairs called "SIP header fields"; see <xref section="7.3" sectionFormat="of" target="SIP2.0"/>.
For a listing of registered SIP header fields, see the "Session Initiation Protocol (SIP) Parameters - Header Fields
Registry" maintained at <eref target="https://www.iana.org/assignments/sip-parameters/sip-parameters.xhtml#sip-parameters-2">https://www.iana.org/assignments/sip-parameters/sip-parameters.xhtml#sip-parameters-2</eref>.</t>
        <section anchor="sip-over-quic-header-compression">
          <name>SIP-over-QUIC Header Compression</name>
          <t>The abbreviated forms of SIP header fields described in <xref section="7.3.3" sectionFormat="of" target="SIP2.0"/> <bcp14>MUST NOT</bcp14> be used with SIP-over-QUIC.
Instead, header fields (including the control data present in the header section) are compressed an decompressed
using the <xref target="QPACK"/> codec.</t>
          <t>A SIP-over-QUIC implementation <bcp14>MAY</bcp14> impose a limit on the maximum size of the encoded field section it will accept for an
individual SIP message using the <xref target="SETTINGS_MAX_FIELD_SECTION_SIZE" format="none">SETTINGS_MAX_FIELD_SECTION_SIZE</xref><iref item="SETTINGS_MAX_FIELD_SECTION_SIZE"/> parameter. Unlike HTTP, there is no response code in
SIP for the size of a header block being too large. If a user agent receives an encoded field section larger than it
has promised to accept, it <bcp14>MUST</bcp14> treat this as <xref target="error-handling" format="none">stream error</xref><iref item="stream error"/> of type <xref target="SIP_HEADER_TOO_LARGE" format="none">SIP_HEADER_TOO_LARGE</xref><iref item="SIP_HEADER_TOO_LARGE"/>, and discard the response.</t>
          <t><xref section="4.2" sectionFormat="of" target="QPACK"/> describes the definition of two <xref target="unidirectional-streams" format="none">unidirectional stream</xref><iref item="unidirectional stream"/> types for the encoder and decoder
streams. The values of these stream types are identical when used with SIP-over-QUIC, see <xref target="unidirectional-streams"/>.</t>
          <t>The static table defined in <xref section="A" sectionFormat="of" target="QPACK"/> is designed for use with HTTP and, as such, contains header
fields that are of little interest to SIP endpoints. <xref target="static-table"/> in this document defines a replacement
static table that <bcp14>MUST</bcp14> be used by SIP-over-QUIC transport clients and servers.</t>
          <t>To bound the memory requirements of the decoder for the QPACK dynamic table, the decoder limits the maximum value the
encoder is permitted to set for the dynamic table capacity, as specified in <xref section="3.2.3" sectionFormat="of" target="QPACK"/>. The dynamic
table capacity is determined by the value of the <xref target="SETTINGS_QPACK_MAX_TABLE_CAPACITY" format="none">SETTINGS_QPACK_MAX_TABLE_CAPACITY</xref><iref item="SETTINGS_QPACK_MAX_TABLE_CAPACITY"/> parameter sent by the decoder. Use
of the dynamic table can be disabled by setting this value to zero. If both endpoints disable use of the dynamic table,
then the endpoints <bcp14>SHOULD NOT</bcp14> open the encoder and decoder streams.</t>
          <t>When the dynamic table is in use, a QPACK decoder may encounter an encoded field section that references a dynamic
table entry that it has not yet received, because QUIC does not guarantee order between data on different streams. In
this case, the stream is considered "blocked" as described in <xref section="2.1.2" sectionFormat="of" target="QPACK"/>. The HTTP/3 setting
<xref target="SETTINGS_QPACK_BLOCKED_STREAMS" format="none">SETTINGS_QPACK_BLOCKED_STREAMS</xref><iref item="SETTINGS_QPACK_BLOCKED_STREAMS"/> is replicated as a SIP-over-QUIC parameter, set by the recipient, determines the maximum
number of streams that are allowed to be "blocked" by pending dynamic table updates. If a decoder encounters more
blocked streams than it promised to support, it <bcp14>MUST</bcp14> treat this as a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type
SIP_HEADER_DECOMPRESSION_FAILED.</t>
          <t>Stream blocking can be avoided by sending Huffman-encoded literals instead of updating the QPACK dynamic table.</t>
        </section>
        <section anchor="sip-control-data">
          <name>SIP Control Data</name>
          <t>SIP-over-QUIC employs a series of pseudo-header fields where the field name begins with the <tt>:</tt> character (ASCII 0x3a).
These pseudo-header fields convey message control data, which replaces the <tt>Request-Line</tt> described in
<xref section="7.1" sectionFormat="of" target="SIP2.0"/>.</t>
          <t>Pseudo-header fields are not SIP header fields. Endpoints <bcp14>MUST NOT</bcp14> generate pseudo-header fields other than those
defined in this document. However, an extension could negotiate a modification of this restriction; see <xref target="extensions"/>.</t>
          <t>Pseudo-header fields are only valid in the context in which they are defined. Pseudo-header fields defined for requests
<bcp14>MUST NOT</bcp14> appear in responses; pseudo-header fields defined for responses <bcp14>MUST NOT</bcp14> appear in requests. Pseudo-header
fields <bcp14>MUST NOT</bcp14> appear in trailer sections. Endpoints <bcp14>MUST</bcp14> treat a request or response that contains undefined or
invalid pseudo-header fields as <xref target="malformed" format="none">malformed</xref><iref item="malformed"/>.</t>
          <t>All pseudo-header fields <bcp14>MUST</bcp14> appear in the header section before regular header fields. Any request or response that
contains a pseudo-header field that appears in a header section after a regular header field <bcp14>MUST</bcp14> be treated as
<xref target="malformed" format="none">malformed</xref><iref item="malformed"/>.</t>
          <section anchor="request-pseudo-header-fields">
            <name>Request Pseudo-header fields</name>
            <t>The following pseudo-header fields are defined for requests:</t>
            <ul spacing="normal">
              <li>":method": Contains the SIP method. See <xref target="methods"/> to understand SIP-over-QUIC-specific usages of SIP methods.</li>
              <li>":request-uri": Contains the SIPS URI as described in <xref section="19.1" sectionFormat="of" target="SIP2.0"/>.</li>
            </ul>
            <t>All SIP-over-QUIC requests <bcp14>MUST</bcp14> include exactly one value for the <tt>:method</tt> and <tt>:request-uri</tt> pseudo-header fields. The
<tt>SIP-Version</tt> element of the <tt>Request-Line</tt> structure in <xref section="7.1" sectionFormat="of" target="SIP2.0"/> is omitted, and all SIP-over-QUIC
requests implicitly have a protocol version of "2.0".</t>
            <t>A SIP request that omits any mandatory pseudo-header fields or contains invalid values for those pseudo-header fields
is <xref target="malformed" format="none">malformed</xref><iref item="malformed"/>.</t>
          </section>
          <section anchor="response-pseudo-header-fields">
            <name>Response Pseudo-header fields</name>
            <t>For responses, a single ":status" pseudo-header field is defined that carries the SIP status code, see
<xref section="7.2" sectionFormat="of" target="SIP2.0"/>.</t>
            <t>All SIP-over-QUIC responses <bcp14>MUST</bcp14> include exactly one value for the ":status" pseudo-header field. The <tt>SIP-Version</tt> and
<tt>Reason-Phrase</tt> elements of the <tt>Status-Line</tt> structure in <xref section="7.2" sectionFormat="of" target="SIP2.0"/> are omitted, and all SIP-over-QUIC
responses implicitly have a protocol version of "2.0". If it is required, for example to provide a human readable string
of a received status code, the <tt>Reason-Phrase</tt> can be inferred from the list of reason phrases accompanying the status
codes listed in <xref section="21" sectionFormat="of" target="SIP2.0"/>.</t>
          </section>
        </section>
        <section anchor="via-transport-parameter">
          <name>Via Transport Parameter</name>
          <t>The Via header field in SIP messages carry a transport protocol identifier. This document defines the value "QUIC" to
be used for SIP-over-QUIC requests over QUIC transport.</t>
          <t>The updated ABNF (Augmented Backus-Naur Form) <xref target="RFC5234"/> for this parameter is the following:</t>
          <artwork><![CDATA[
transport  =/  "QUIC"
]]></artwork>
          <t>A full example <tt>Via:</tt> header is as follows:</t>
          <artwork><![CDATA[
Via: SIP/2.0/QUIC wxp6O3dffes2.example.com;branch=z9hG4bKXG1gNkhgOiNR
]]></artwork>
        </section>
        <section anchor="sip-uri-transport">
          <name>SIP URI Transport Parameter</name>
          <t>This document defines the value "quic" as the transport parameter value for a SIP-over-QUIC URI <xref target="RFC3986"/> where the
transport mechanism used for sending SIP messages will be QUIC transport, extending the parameter names defined in
<xref section="19.1.1" sectionFormat="of" target="SIP2.0"/>.</t>
          <t>The updated ABNF for this parameter is the following:</t>
          <artwork><![CDATA[
transport-param  =/  "transport=" "quic"
]]></artwork>
        </section>
        <section anchor="cseq">
          <name>Transaction Sequence Number</name>
          <t>SIP-over-QUIC endpoints <bcp14>MUST NOT</bcp14> use the <tt>CSeq</tt> header field (see <xref section="20.16" sectionFormat="of" target="SIP2.0"/>). The correct order of
SIP-over-QUIC transactions is instead inferred from the QUIC stream identifier as described in <xref target="stream-mapping"/>.
Intermediaries that forward SIP-over-QUIC messages to SIP sessions running over other transports are responsible for
defining the value carried in the <tt>CSeq</tt> header field for those messages, and for mapping those values back to the
correct SIP-over-QUIC request stream in the opposite direction.</t>
        </section>
      </section>
      <section anchor="keep-alive">
        <name>Connection Keep-Alive</name>
        <t>SIP-over-QUIC endpoints may keep their QUIC connection active and open by sending periodic <tt>PING</tt> frames to defer the
QUIC idle timeout as described in <xref section="10.1.2" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      </section>
    </section>
    <section anchor="compatibility">
      <name>Compatibility With Earlier SIP Versions</name>
      <figure anchor="fig-mixed-sip-transports">
        <name>Example showing mixed SIP transports</name>
        <artwork><![CDATA[
+-----------+          +-------+         +-------+         +---------+
|           |          |       |         |       |         |         |
|           <=SIP-QUIC=> Proxy <-SIP/2.0-> Proxy <-SIP/2.0->         |
|           |          |   A   |(TCP/UDP)|   B   |(TCP/UDP)|         |
| Initiator |          +-------+         +-------+         | Invitee |
|   (UAC)   |                                              |  (UAS)  |
|           <==================SIP-QUIC====================>         |
|           |                                              |         |
+-----------+                                              +---------+
]]></artwork>
      </figure>
      <t>In the above example, the Initiator, Invitee and the proxy server identified as "Proxy A" all support SIP-over-QUIC, but
the proxy server identified as "Proxy B" only supports SIP/2.0 over TCP/TLS and UDP. When Proxy A attempts to connect to
Proxy B, it may have previous knowledge of the lack of support for SIP-over-QUIC on Proxy B, or either of the DNS SRV
record <xref target="RFC2782"/> or DNS service binding record <xref target="DNS-SVCB"/> may have indicated that the server only supports SIPS
services over TCP, thereby implying SIP/2.0.</t>
      <t>If Proxy B only supports unencrypted SIP over UDP, then Proxy A <bcp14>MUST NOT</bcp14> forward messages from the secure SIP-over-QUIC
over an unencrypted protocol because this could constitute a downgrade attack. Instead, if the designated Invitee cannot
be contacted by means other than via Proxy B, then Proxy A <bcp14>MUST</bcp14> return a response of <tt>502 Bad Gateway</tt> to the initiator
for that transaction.</t>
      <t>When initiating direct communication with an invitee after the conclusion of the initial <tt>INVITE</tt> transaction,
SIP-over-QUIC <bcp14>SHOULD</bcp14> be used if:</t>
      <ul spacing="normal">
        <li>The DNS SRV record for the SIPS URI indicates that the invitee supports SIPS over UDP, or</li>
        <li>The DNS service binding record for the SIPS URI indicates the <tt>sips/quic</tt> ALPN token as described in
<xref target="quic-transport"/>, or</li>
        <li>The <tt>Contact:</tt> header field indicates a SIPS URI carrying the "quic" transport parameter as described in
<xref target="sip-uri-transport"/>.</li>
      </ul>
      <section anchor="transactions">
        <name>Transactions</name>
        <t>In <xref target="SIP2.0"/>, messages pertaining to a given SIP transaction are identified as such using the branch parameter on the
<tt>Via:</tt> header fields carried in requests and responses. In SIP-over-QUIC, individual transactions are tracked using the
QUIC streams that are used to carry them. SIP-over-QUIC endpoints <bcp14>MAY</bcp14> omit this parameter. For intermediaries converting
between SIP-over-QUIC and SIP sessions running over other transport protocols, these endpoints <bcp14>SHOULD</bcp14> insert missing
branch parameters. To avoid leaking details of the QUIC transport connection, these converted branch parameters <bcp14>MUST NOT</bcp14>
be textual representations of the stream IDs used to carry a given transactions, or any other representation that could
be used to infer stream IDs that have been used in a given QUIC transport connection.</t>
      </section>
      <section anchor="dialogs">
        <name>Dialogs</name>
        <t>In <xref target="SIP2.0"/>, dialogs are tracked by use of the <tt>Call-ID:</tt> header field and the <tt>tag=</tt> parameter on the <tt>To:</tt> and
<tt>From:</tt> header fields. The current document does not introduce any additional means for tracking dialogs, and as such
the <tt>Call-ID:</tt> and <tt>tag=</tt> values <bcp14>MUST</bcp14> continue to be used in SIP-over-QUIC.</t>
      </section>
    </section>
    <section anchor="stream-mapping">
      <name>Stream Mapping and Usage</name>
      <t>A QUIC stream provides reliable and in-order delivery of bytes on that stream, but makes no guarantees about order of
delivery with regard to bytes on other streams. The semantics of the QUIC stream layer is opaque to the SIP framing
layer. The transport layer buffers and orders received stream data, exposing a reliable byte stream to the application.
Although QUIC permits out-of-order delivery within a stream, SIP-over-QUIC does not make use of this feature.</t>
      <t>QUIC streams can be either unidirectional, carrying data only from initiator to receiver, or bidirectional, carrying
data in both directions. In the context of this specification, <xref target="bidirectional-streams" format="none">bidirectional streams</xref><iref item="bidirectional stream"/> are used to convey SIP-over-QUIC
request and response messages; <xref target="unidirectional-streams" format="none">unidirectional streams</xref><iref item="unidirectional stream"/> are used only for controlling the SIP-over-QUIC session itself. A
<xref target="bidirectional-streams" format="none">bidirectional stream</xref><iref item="bidirectional stream"/> ensures that the response can be readily correlated with the request. These streams are referred to
as request streams.</t>
      <t><xref target="SIP2.0"/> is designed to run over unreliable transports such as UDP. Since QUIC guarantees reliability, some of the
features of SIP/2.0 are not required. User agents <bcp14>MUST NOT</bcp14> send the <tt>CSeq</tt> header field in requests or responses
because the messages are already associated with a QUIC stream. Intermediaries that convert SIP-over-QUIC to other
transport protocols when forwarding messages are responsible for handing the mapping of the <tt>CSeq</tt> header field to
individual transactions.</t>
      <ul empty="true">
        <li>
          <t><strong>Author's note:</strong> The author invites feedback as to whether the <bcp14>MUST NOT</bcp14> in relation to the <tt>CSeq</tt> header could be
relaxed to a <bcp14>SHOULD NOT</bcp14>, or whether there is a valid use case that I have not identified that means this restriction
should be relaxed even further.</t>
        </li>
      </ul>
      <t>If the <xref target="QPACK"/> dynamic table is used, then the unidirectional encoder and decoder streams described in
<xref section="4.2" sectionFormat="of" target="QPACK"/> will be in operation in a SIP-over-QUIC connection.</t>
      <section anchor="bidirectional-streams">
        <name>Bidirectional Streams</name>
        <t>Bidirectional QUIC streams are used for SIP requests and responses. These streams are referred to as request streams.</t>
      </section>
      <section anchor="unidirectional-streams">
        <name>Unidirectional Streams</name>
        <t>SIP-over-QUIC makes use of unidirectional QUIC streams. The purpose of a given <xref target="unidirectional-streams" format="none">unidirectional stream</xref><iref item="unidirectional stream"/> is indicated by a
stream type, which is sent as a variable-length integer at the start of the stream. The format and structure of data
that follows this integer is determined by the stream type.</t>
        <figure anchor="fig-unidirectional-stream-header">
          <name>Unidirectional Stream Header</name>
          <artwork><![CDATA[
Unidirectional Stream Header {
  Stream Type (i),
}
]]></artwork>
        </figure>
        <t>One stream type is defined in this document: the <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/>. In addition, the HTTP/3 stream
types defined by <xref section="4.2" sectionFormat="of" target="QPACK"/> are mapped to the same values in SIP-over-QUIC (<tt>0x2</tt> for the encoder stream
and <tt>0x3</tt> for the decoder stream).</t>
        <t>In addition, the stream type value of <tt>0x4</tt> is reserved by this document for future use as the media stream.</t>
        <t>Each SIP-over-QUIC user agent <bcp14>MUST</bcp14> create at least one <xref target="unidirectional-streams" format="none">unidirectional stream</xref><iref item="unidirectional stream"/> for the SIP-over-QUIC <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/>. If
the QPACK dynamic table is used, then each endpoint will open two additional <xref target="unidirectional-streams" format="none">unidirectional streams</xref><iref item="unidirectional stream"/> each. Other
extensions might require further <xref target="unidirectional-streams" format="none">unidirectional streams</xref><iref item="unidirectional stream"/>. Therefore, the transport parameters sent by both endpoints <bcp14>MUST</bcp14>
allow the peer to create at least three <xref target="unidirectional-streams" format="none">unidirectional streams</xref><iref item="unidirectional stream"/>. These transport parameters <bcp14>SHOULD</bcp14> also provide at least
1,024 bytes of flow-control credit to each <xref target="unidirectional-streams" format="none">unidirectional stream</xref><iref item="unidirectional stream"/>.</t>
        <t>If the stream header indicates a stream type that is not supported by the recipient, the receiver <bcp14>MUST</bcp14> abort reading
the stream, discard incoming data without further processing, and reset the stream with the <xref target="SIP_STREAM_CREATION_ERROR" format="none">SIP_STREAM_CREATION_ERROR</xref><iref item="SIP_STREAM_CREATION_ERROR"/>
error code. The recipient <bcp14>MUST NOT</bcp14> consider unknown stream types to be a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of any kind.</t>
        <t>Since certain stream types can affect connection state, a recipient user agent <bcp14>SHOULD NOT</bcp14> discard data from incoming
<xref target="unidirectional-streams" format="none">unidirectional streams</xref><iref item="unidirectional stream"/> prior to reading the stream type.</t>
        <t>Implementations <bcp14>SHOULD</bcp14> wait for the reception of a <xref target="settings-frame" format="none">SETTINGS</xref><iref item="SETTINGS"/> frame describing what stream types their peer user agent
supports before sending streams of that type. Implementations <bcp14>MAY</bcp14> send stream types that do not modify the state or
semantics of existing protocol components before it is known whether the peer user agent supports them, but <bcp14>MUST NOT</bcp14>
send stream types that do (such as QPACK).</t>
        <t>A sender can close or reset a <xref target="unidirectional-streams" format="none">unidirectional stream</xref><iref item="unidirectional stream"/> unless otherwise specified. A receiver <bcp14>MUST</bcp14> tolerate <xref target="unidirectional-streams" format="none">unidirectional
streams</xref><iref item="unidirectional stream"/> being closed or reset prior to the reception of the <xref target="unidirectional-streams" format="none">unidirectional stream</xref><iref item="unidirectional stream"/> header.</t>
        <section anchor="control-streams">
          <name>Control Streams</name>
          <t>A <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> is indicated by a stream type of <tt>0x00</tt>. Data on this stream consists of SIP-over-QUIC frames, as
defined in <xref target="framing-layer"/>.</t>
          <t>Each SIP-over-QUIC user agent <bcp14>MUST</bcp14> initiate a single <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> at the beginning of the connection and send its
<tt>SETTINGS</tt> frame as the first frame on this stream. If the first frame of the <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> is any other frame type,
this <bcp14>MUST</bcp14> be treated as a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type <xref target="SIP_MISSING_SETTINGS" format="none">SIP_MISSING_SETTINGS</xref><iref item="SIP_MISSING_SETTINGS"/>. Only one <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> is permitted per user
agent; receipt of a second stream claiming to be a <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> <bcp14>MUST</bcp14> be treated as a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type
<xref target="SIP_STREAM_CREATION_ERROR" format="none">SIP_STREAM_CREATION_ERROR</xref><iref item="SIP_STREAM_CREATION_ERROR"/>.</t>
          <t>The <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> <bcp14>MUST NOT</bcp14> be closed by the sender, and the receiver <bcp14>MUST NOT</bcp14> request that the sender close the
<xref target="control-streams" format="none">control stream</xref><iref item="control stream"/>. If either <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> is closed at any point, this <bcp14>MUST</bcp14> be treated as a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type
<xref target="SIP_CLOSED_CRITICAL_STREAM" format="none">SIP_CLOSED_CRITICAL_STREAM</xref><iref item="SIP_CLOSED_CRITICAL_STREAM"/>.</t>
          <t>Connection errors are described in <xref target="error-handling"/>.</t>
          <t>Because the contents of the <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> are used to manage the behaviour of other streams, user agents <bcp14>SHOULD</bcp14> provide
enough flow-control credit to keep the peer's <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> from becoming blocked.</t>
        </section>
      </section>
    </section>
    <section anchor="methods">
      <name>SIP Methods</name>
      <t>The <tt>REGISTER</tt>, <tt>INVITE</tt>, <tt>ACK</tt> and <tt>BYE</tt> methods as described in <xref target="SIP2.0"/> continue to operate in SIP-over-QUIC as
they do in SIP running over other transport protocols.</t>
      <t>The <tt>CANCEL</tt> method <bcp14>MUST NOT</bcp14> be used in SIP-over-QUIC. If a SIP-over-QUIC request needs to be cancelled, the <tt>CANCEL</tt>
frame <bcp14>SHOULD</bcp14> be used instead, or the stream for that request reset using the QUIC <tt>RESET_STREAM</tt> frame
(<xref section="19.4" sectionFormat="of" target="QUIC-TRANSPORT"/>). Note that SIP-over-QUIC messages in flight at the time may still arrive on a
stream before the cancellation is received and processed by the peer.</t>
      <ul empty="true">
        <li>
          <t><strong>Author's note:</strong> I have not done a comprehensive review of all SIP/2.0 extensions and their applicability to this
document, so I invite feedback on any other methods that may be problematic.</t>
        </li>
      </ul>
    </section>
    <section anchor="framing-layer">
      <name>SIP Framing Layer</name>
      <t>SIP-over-QUIC frames are carried on QUIC streams, as described in <xref target="stream-mapping"/>. SIP-over-QUIC defines a single
stream type: the Request Stream. This section describes SIP-over-QUIC frame formats; see <xref target="frame-types"/> for an
overview.</t>
      <table anchor="frame-types">
        <thead>
          <tr>
            <th align="left">Frame</th>
            <th align="left">Request Stream</th>
            <th align="left">Control Stream</th>
            <th align="left">Section</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <xref target="data-frame" format="none">DATA</xref><iref item="DATA"/></td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="data-frame"/></td>
          </tr>
          <tr>
            <td align="left">
              <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/></td>
            <td align="left">Yes</td>
            <td align="left">No</td>
            <td align="left">
              <xref target="headers-frame"/></td>
          </tr>
          <tr>
            <td align="left">
              <xref target="cancel-frame" format="none">CANCEL</xref><iref item="CANCEL"/></td>
            <td align="left">No</td>
            <td align="left">Yes</td>
            <td align="left">
              <xref target="cancel-frame"/></td>
          </tr>
          <tr>
            <td align="left">
              <xref target="settings-frame" format="none">SETTINGS</xref><iref item="SETTINGS"/></td>
            <td align="left">No</td>
            <td align="left">Yes</td>
            <td align="left">
              <xref target="settings-frame"/></td>
          </tr>
        </tbody>
      </table>
      <t>Note that, unlike QUIC frames, SIP-over-QUIC frames can span multiple QUIC or UDP packets.</t>
      <section anchor="frame-layout">
        <name>Frame Layout</name>
        <t>All frames have the following format:</t>
        <figure anchor="fig-sip-frame-format">
          <name>SIP-over-QUIC Frame Format</name>
          <artwork><![CDATA[
SIP-over-QUIC Frame Format {
  Type (i),
  Length (i),
  Frame Payload (...)
}
]]></artwork>
        </figure>
        <t>A frame includes the following fields:</t>
        <ul spacing="normal">
          <li>Type: A variable-length integer that identifies the frame type.</li>
          <li>Length: A variable-length integer that describes the length in bytes of the Frame Payload.</li>
          <li>Frame Payload: A payload, the semantics of which are determined by the Type field.</li>
        </ul>
        <t>Each frame's payload <bcp14>MUST</bcp14> contain exactly the fields identified in its description. A frame payload that contains
additional bytes after the identified fields of a frame payload that terminates before the end of the identified
fields <bcp14>MUST</bcp14> be treated as a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type <xref target="SIP_FRAME_ERROR" format="none">SIP_FRAME_ERROR</xref><iref item="SIP_FRAME_ERROR"/>.</t>
        <t>When a stream terminates cleanly, if the last frame on the stream was truncated, this <bcp14>MUST</bcp14> be treated as a <xref target="error-handling" format="none">connection
error</xref><iref item="connection error"/> of type <xref target="SIP_FRAME_ERROR" format="none">SIP_FRAME_ERROR</xref><iref item="SIP_FRAME_ERROR"/>. Streams that terminate abruptly may be reset at any point in a frame.</t>
      </section>
      <section anchor="frame-definitions">
        <name>Frame Definitions</name>
        <section anchor="data-frame">
          <name>DATA</name>
          <t><tt>DATA</tt> frames (type=<tt>0x00</tt>) are only sent on Request Streams. The frame payload carried in the Data field conveys
an arbitrary, variable-length sequences of bytes associated with a SIP-over-QUIC request or response message.</t>
          <t><tt>DATA</tt> frames <bcp14>MUST</bcp14> be associated with a SIP request or response.</t>
          <figure anchor="fig-sip-data-frame-format">
            <name>DATA Frame</name>
            <artwork><![CDATA[
DATA Frame {
  Type (i) = 0x00,
  Length (i),
  Data (..)
}
]]></artwork>
          </figure>
        </section>
        <section anchor="headers-frame">
          <name>HEADERS</name>
          <t><tt>HEADERS</tt> frames (type=<tt>0x01</tt>) are only sent on Request Streams. They are used to carry the collection of SIP
header fields associated with a SIP request or response message, as described in <xref target="header-fields"/>. The payload,
carried in Encoded Field Section, is encoded using <xref target="QPACK"/>.</t>
          <figure anchor="fig-sip-headers-frame-format">
            <name>HEADERS Frame</name>
            <artwork><![CDATA[
HEADERS Frame {
  Type (i) = 0x01,
  Length (i),
  Encoded Field Section (..)
}
]]></artwork>
          </figure>
        </section>
        <section anchor="cancel-frame">
          <name>CANCEL</name>
          <t>The <tt>CANCEL</tt> frame (type=<tt>0x02</tt>) is only sent on a Control Stream and informs the receiver that its peer user agent
does not intend to do any further processing on the message carried by the associated <xref target="bidirectional-streams" format="none">bidirectional stream</xref><iref item="bidirectional stream"/> ID. If
the receiver has already completed the processing for the message, sent the response and closed the sending end of
the stream, it <bcp14>MUST</bcp14> disregard this frame.</t>
          <ul empty="true">
            <li>
              <t><strong>Author's Note:</strong> Remove the length from this frame type as the stream ID field is self-describing.</t>
            </li>
          </ul>
          <figure>
            <name>CANCEL Frame</name>
            <artwork><![CDATA[
CANCEL Frame {
  Type (i) = 0x02,
  Length (i),
  Stream ID (i)
}
]]></artwork>
          </figure>
          <t>Senders <bcp14>MUST NOT</bcp14> send this frame with a stream ID that has not been acknowledged by its peer. A user agent that
receives a <tt>CANCEL</tt> frame with a stream ID that has not yet been opened <bcp14>MUST</bcp14> respond with a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type
SIP_CANCEL_STREAM_CLOSED error.</t>
        </section>
        <section anchor="settings-frame">
          <name>SETTINGS</name>
          <t>The <tt>SETTINGS</tt> frame (type=<tt>0x04</tt>) is only sent on a Control Stream. It conveys configuration parameters that affect
how SIP-over-QUIC user agents communicate, such as preferences and constraints on peer behaviour. The parameters always
apply to an entire SIP-over-QUIC connection, never to a single transaction. A <tt>SETTINGS</tt> frame <bcp14>MUST</bcp14> be sent as the first
frame of each Control Stream by each peer user agent, and it <bcp14>MUST NOT</bcp14> be sent subsequently. If a SIP-over-QUIC user
agent receives a second <tt>SETTINGS</tt> frame on the <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/>, or any other stream, the user agent <bcp14>MUST</bcp14> respond with a
<xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type <xref target="SIP_FRAME_UNEXPECTED" format="none">SIP_FRAME_UNEXPECTED</xref><iref item="SIP_FRAME_UNEXPECTED"/>.</t>
          <t><tt>SETTINGS</tt> parameters are not negotiated; they describe characteristics of the sending user agent that can be used by
the receiving user agent. However, a negotiation can be implied by the use of <tt>SETTINGS</tt>: each user agent uses
<tt>SETTINGS</tt> to advertise a set of supported values. Each user agent combines the two sets to conclude which choice will
be used. <tt>SETTINGS</tt> does not provide a mechanism to identify when the choice takes effect.</t>
          <t>Different values for the same parameter can be advertised by the two user agents.</t>
          <t>The same parameter <bcp14>MUST NOT</bcp14> occur more than once in the <tt>SETTINGS</tt> frame. A receiver <bcp14>MAY</bcp14> treat the presence of
duplicate setting identifiers as a <xref target="error-handling" format="none">connection error</xref><iref item="connection error"/> of type <xref target="SIP_SETTINGS_ERROR" format="none">SIP_SETTINGS_ERROR</xref><iref item="SIP_SETTINGS_ERROR"/>.</t>
          <t>The payload of a <tt>SETTINGS</tt> frame consists of zero or more parameters. Each parameter consists of a parameter
identifier and a value, both encoded as QUIC variable-length integers.</t>
          <figure anchor="fig-sip-settings-frame-format">
            <name>SETTINGS Frame</name>
            <artwork><![CDATA[
Parameter {
  Identifier (i),
  Value (i)
}

SETTINGS Frame {
  Type (i) = 0x04,
  Length (i),
  Parameter (..) ...
}
]]></artwork>
          </figure>
          <t>An implementation <bcp14>MUST</bcp14> ignore any parameter with an identifier it does not understand.</t>
          <section anchor="defined-settings">
            <name>Defined SETTINGS Parameters</name>
            <t>The following parameters are defined in SIP-over-QUIC:</t>
            <dl>
              <dt><xref target="SETTINGS_QPACK_MAX_TABLE_CAPACITY" format="none">SETTINGS_QPACK_MAX_TABLE_CAPACITY</xref><iref item="SETTINGS_QPACK_MAX_TABLE_CAPACITY"/> (<tt>0x01</tt>):</dt>
              <dd>
                <t anchor="SETTINGS_QPACK_MAX_TABLE_CAPACITY">The default value is zero. See <xref target="header-fields"/> for usage.
</t>
              </dd>
              <dt><xref target="SETTINGS_MAX_FIELD_SECTION_SIZE" format="none">SETTINGS_MAX_FIELD_SECTION_SIZE</xref><iref item="SETTINGS_MAX_FIELD_SECTION_SIZE"/> (<tt>0x06</tt>):</dt>
              <dd>
                <t anchor="SETTINGS_MAX_FIELD_SECTION_SIZE">The default value is unlimited. See <xref target="header-fields"/> for usage.
</t>
              </dd>
              <dt><xref target="SETTINGS_QPACK_BLOCKED_STREAMS" format="none">SETTINGS_QPACK_BLOCKED_STREAMS</xref><iref item="SETTINGS_QPACK_BLOCKED_STREAMS"/> (<tt>0x07</tt>):</dt>
              <dd>
                <t anchor="SETTINGS_QPACK_BLOCKED_STREAMS">The default value is zero. See <xref target="header-fields"/> for usage.
</t>
              </dd>
            </dl>
          </section>
        </section>
      </section>
    </section>
    <section anchor="error-handling">
      <name>Error Handling</name>
      <t>When a request cannot be completed successfully, or if there is an issue with the underlying QUIC stream, QUIC allows
the application protocol to abruptly reset that stream and communicate a reason (see <xref section="2.4" sectionFormat="of" target="QUIC-TRANSPORT"/>.
This is referred to as a "<xref target="error-handling" format="none">stream error</xref><iref item="stream error"/>". A SIP-over-QUIC implementation can decide to close a QUIC stream and
communicate the type of error. The wire encoding of error codes is defined in <xref target="error-codes"/>. Stream errors are
distinct from SIP status codes that indicate error conditions. Stream errors indicate that the sender did not transfer
or consume the full request or response message, while SIP status codes indicate the result of a request that was
successfully received and processed by the recipient.</t>
      <t>If an entire connection needs to be terminated, QUIC similarly provides mechanisms to communicate a reason (see
<xref section="5.3" sectionFormat="of" target="QUIC-TRANSPORT"/>). This is referred to as a "<xref target="error-handling" format="none">connection error</xref><iref item="connection error"/>". Similar to <xref target="error-handling" format="none">stream errors</xref><iref item="stream error"/>, a
SIP-over-QUIC implementation can terminate a QUIC connection and communicate the reason using an error code from
<xref target="error-codes"/>.</t>
      <t>Although called a "<xref target="error-handling" format="none">stream error</xref><iref item="stream error"/>", this does not necessarily indicate a problem with either the implementation or the
connection as a whole. Streams <bcp14>MAY</bcp14> also be reset if the result of a SIP response is no longer of interest to the user
agent client, see <xref target="cancel-request"/>.</t>
      <t><xref target="extensions"/> specifies that extensions may define new error codes without negotiation. Use of an unknown error code
or a known error code in an unexpected context <bcp14>MUST</bcp14> be treated as equivalent to <xref target="SIP_NO_ERROR" format="none">SIP_NO_ERROR</xref><iref item="SIP_NO_ERROR"/>.</t>
      <section anchor="error-codes">
        <name>SIP-over-QUIC Error Codes</name>
        <t>The following error codes are defined for use when abruptly terminating streams, aborting reading of streams, or
immediately closing SIP-over-QUIC connections.</t>
        <dl>
          <dt><xref target="SIP_NO_ERROR" format="none">SIP_NO_ERROR</xref><iref item="SIP_NO_ERROR"/> (0x0300):</dt>
          <dd>
            <t anchor="SIP_NO_ERROR">No error. This is used when the connection or stream needs to be closed, but there is no error to signal.
</t>
          </dd>
          <dt><xref target="SIP_GENERAL_PROTOCOL_ERROR" format="none">SIP_GENERAL_PROTOCOL_ERROR</xref><iref item="SIP_GENERAL_PROTOCOL_ERROR"/> (0x0301):</dt>
          <dd>
            <t anchor="SIP_GENERAL_PROTOCOL_ERROR">Peer violated protocol requirements in a way that does not match a more specific error code or endpoint declines to
use a more specific error code.
</t>
          </dd>
          <dt><xref target="SIP_INTERNAL_ERROR" format="none">SIP_INTERNAL_ERROR</xref><iref item="SIP_INTERNAL_ERROR"/> (0x0302):</dt>
          <dd>
            <t anchor="SIP_INTERNAL_ERROR">An internal error has occurred in the SIP-over-QUIC stack.
</t>
          </dd>
          <dt><xref target="SIP_STREAM_CREATION_ERROR" format="none">SIP_STREAM_CREATION_ERROR</xref><iref item="SIP_STREAM_CREATION_ERROR"/> (0x0303):</dt>
          <dd>
            <t anchor="SIP_STREAM_CREATION_ERROR">The endpoint detected that its peer created a stream that it will not accept.
</t>
          </dd>
          <dt><xref target="SIP_CLOSED_CRITICAL_STREAM" format="none">SIP_CLOSED_CRITICAL_STREAM</xref><iref item="SIP_CLOSED_CRITICAL_STREAM"/> (0x0304):</dt>
          <dd>
            <t anchor="SIP_CLOSED_CRITICAL_STREAM">A stream required by the SIP-over-QUIC connection was closed or reset.
</t>
          </dd>
          <dt><xref target="SIP_FRAME_ERROR" format="none">SIP_FRAME_ERROR</xref><iref item="SIP_FRAME_ERROR"/> (0x0305):</dt>
          <dd>
            <t anchor="SIP_FRAME_ERROR">A frame that fails to satisfy layout requirements or with an invalid size was received.
</t>
          </dd>
          <dt><xref target="SIP_FRAME_UNEXPECTED" format="none">SIP_FRAME_UNEXPECTED</xref><iref item="SIP_FRAME_UNEXPECTED"/> (0x0306):</dt>
          <dd>
            <t anchor="SIP_FRAME_UNEXPECTED">A frame was received that was not permitted in the current state or on the current stream.
</t>
          </dd>
          <dt><xref target="SIP_CANCEL_FRAME_CLOSED" format="none">SIP_CANCEL_FRAME_CLOSED</xref><iref item="SIP_CANCEL_FRAME_CLOSED"/> (0x0307):</dt>
          <dd>
            <t anchor="SIP_CANCEL_FRAME_CLOSED">A <xref target="cancel-frame" format="none">CANCEL</xref><iref item="CANCEL"/> frame was received that referenced an unknown stream ID.
</t>
          </dd>
          <dt><xref target="SIP_SETTINGS_ERROR" format="none">SIP_SETTINGS_ERROR</xref><iref item="SIP_SETTINGS_ERROR"/> (0x0309):</dt>
          <dd>
            <t anchor="SIP_SETTINGS_ERROR">An endpoint detected an error in the payload of a <xref target="settings-frame" format="none">SETTINGS</xref><iref item="SETTINGS"/> frame.
</t>
          </dd>
          <dt><xref target="SIP_MISSING_SETTINGS" format="none">SIP_MISSING_SETTINGS</xref><iref item="SIP_MISSING_SETTINGS"/> (0x030a):</dt>
          <dd>
            <t anchor="SIP_MISSING_SETTINGS">No <xref target="settings-frame" format="none">SETTINGS</xref><iref item="SETTINGS"/> frame was received at the beginning of the <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/>.
</t>
          </dd>
          <dt><xref target="SIP_REQUEST_INCOMPLETE" format="none">SIP_REQUEST_INCOMPLETE</xref><iref item="SIP_REQUEST_INCOMPLETE"/> (0x030d):</dt>
          <dd>
            <t anchor="SIP_REQUEST_INCOMPLETE">An endpoint's stream terminated without containing a fully formed request.
</t>
          </dd>
          <dt><xref target="SIP_REQUEST_REJECTED" format="none">SIP_REQUEST_REJECTED</xref><iref item="SIP_REQUEST_REJECTED"/> (0x030b):</dt>
          <dd>
            <t anchor="SIP_REQUEST_REJECTED">A server rejected a request without performing any application processing.
</t>
          </dd>
          <dt><xref target="SIP_REQUEST_CANCELLED" format="none">SIP_REQUEST_CANCELLED</xref><iref item="SIP_REQUEST_CANCELLED"/> (0x030c):</dt>
          <dd>
            <t anchor="SIP_REQUEST_CANCELLED">The request or its response is cancelled.
</t>
          </dd>
          <dt><xref target="SIP_MESSAGE_ERROR" format="none">SIP_MESSAGE_ERROR</xref><iref item="SIP_MESSAGE_ERROR"/> (0x030e):</dt>
          <dd>
            <t anchor="SIP_MESSAGE_ERROR">A SIP message was <xref target="malformed" format="none">malformed</xref><iref item="malformed"/> and cannot be processed.
</t>
          </dd>
          <dt><xref target="SIP_HEADER_COMPRESSION_FAILED" format="none">SIP_HEADER_COMPRESSION_FAILED</xref><iref item="SIP_HEADER_COMPRESSION_FAILED"/> (0x0310):</dt>
          <dd>
            <t anchor="SIP_HEADER_COMPRESSION_FAILED">The QPACK decoder failed to interpret an encoded field section and is not able to continue decoding that field.
section
</t>
          </dd>
          <dt><xref target="SIP_HEADER_TOO_LARGE" format="none">SIP_HEADER_TOO_LARGE</xref><iref item="SIP_HEADER_TOO_LARGE"/> (0x0311):</dt>
          <dd>
            <t anchor="SIP_HEADER_TOO_LARGE">The received encoded field section was larger than the receiver has previously promised to accept. See
<xref target="header-fields"/>.
</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="extensions">
      <name>Extensions to SIP-over-QUIC</name>
      <t>SIP-over-QUIC permits extension of the protocol. Within the limitations described in this section, protocol extensions
can be used to provide additional services or alter any aspect of the protocol. Extensions are effective only within the
scope of a single SIP-over-QUIC connection.</t>
      <t>This applies only to the protocol elements defined in this document. This does not affect the existing options for
extending SIP, such as defining new methods, status codes or header fields.</t>
      <t>Extensions are permitted to use new frame types (<xref target="frame-definitions"/>), new settings (<xref target="defined-settings"/>), new error
codes (<xref target="error-codes"/>), or new stream types (<xref target="stream-mapping"/>).</t>
      <ul empty="true">
        <li>
          <t><strong>RFC Editor's Note:</strong> Establish registries for frame types, settings, error codes and stream types.</t>
        </li>
      </ul>
      <t>Implementations <bcp14>MUST</bcp14> ignore unknown or unsupported values in all extensible protocol elements. This means that any of
these extension points can be safely used by extensions without prior arrangement or negotiation. However, where a
known frame type is required to be in a specific location, such as the <xref target="settings-frame" format="none">SETTINGS</xref><iref item="SETTINGS"/> frame (see <xref target="control-streams"/>), an
unknown frame type does not satisfy that requirement and <bcp14>SHOULD</bcp14> be treated as an error.</t>
      <t>Extensions that could change the semantics of existing protocol components <bcp14>MUST</bcp14> be negotiated before being used. For
example, an extension that allows the multiplexing of other protocols such as media transport protocols over
bidirectional QUIC streams <bcp14>MUST NOT</bcp14> be used until the peer user agent has given a positive signal that this is
acceptable.</t>
      <t>This document does not mandate a specific method for negotiating the use of any extension, but it notes that a
parameter (<xref target="defined-settings"/>) could be used for that purpose. If both peer user agents set a value that indicates
willingness to use the extension, then the extension can be used. If a parameter is used in this way, the default
value <bcp14>MUST</bcp14> be defined in such a way that the extension is disabled if the setting is omitted.</t>
    </section>
    <section anchor="media-sessions">
      <name>Future Carriage of Media Sessions</name>
      <ul empty="true">
        <li>
          <t><strong>Author's Note:</strong> This section is intended to foster discussion around how the QUIC transport connection established
and used by SIP-over-QUIC could be also used for carriage of media.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t><strong>RFC Editor's Note:</strong> Please remove this section prior to publication of a final version of this document.</t>
        </li>
      </ul>
      <t>Future versions of this specification may include support for carrying media sessions within the same QUIC transport
connection as SIP-over-QUIC, with the intention being that they will be negotiated using the SDP offer/answer mechanism.</t>
      <t>There already exists several attempts to define carriage of media over QUIC transport, such as <xref target="QRT"/>,
<xref target="RTP-over-QUIC"/>, <xref target="QuicR-Arch"/>, <xref target="RUSH"/> and <xref target="Warp"/>.</t>
      <t>In the case of media carried in QUIC datagrams, a user agent cannot propose sending media using this mechanism unless
its peer has indicated its support for receiving datagrams by means of the <tt>max_datagram_frame_size</tt> parameter as
described in <xref section="3" sectionFormat="of" target="QUIC-DATAGRAMS"/>.</t>
      <t>In the case of media carried in QUIC streams, if the media streams are transmitted using <xref target="unidirectional-streams" format="none">unidirectional streams</xref><iref item="unidirectional stream"/>, then
new stream types will need to be defined. This document reserves the stream type value 0x04 for this, see
<xref target="unidirectional-streams"/>. In the unlikely case where media streams are to be transmitted using <xref target="bidirectional-streams" format="none">bidirectional streams</xref><iref item="bidirectional stream"/>,
the stream type mechanism will need to be extended to cover <xref target="bidirectional-streams" format="none">bidirectional streams</xref><iref item="bidirectional stream"/>, because this specification currently
assumes that SIP-over-QUIC messages have exclusive use of the <xref target="bidirectional-streams" format="none">bidirectional streams</xref><iref item="bidirectional stream"/>.</t>
      <section anchor="carriage-of-rtp-in-a-quic-transport-session">
        <name>Carriage Of RTP In A QUIC Transport Session</name>
        <t>Both <xref target="QRT"/> and <xref target="RTP-over-QUIC"/> define ways to carry RTP and RTCP messages over QUIC <tt>DATAGRAM</tt> frames. With SIP
and SDP already closely aligned with RTP media sessions, adapting SIP-over-QUIC to coexist within the same QUIC
transport connection as RTP/RTCP would save at least one network round trip.</t>
        <ul spacing="normal">
          <li>QRT only defines a way to carry RTP and RTCP in QUIC <tt>DATAGRAM</tt> frames.</li>
          <li>RTP-over-QUIC defines a way to carry RTP and RTCP over unidirectional QUIC <tt>STREAM</tt> frames as well as QUIC <tt>DATAGRAM</tt>
frames.</li>
        </ul>
        <t>In addition, QRT attempts to define SDP attributes to allow the negotiation of QRT sessions in SIP. <xref target="SDP-QUIC"/>
also describes a different set of SDP attributes to perform a similar task.</t>
        <t>Future versions of this document or the above documents may specify a mechanism for signalling that a given media
session will be carried in the same QUIC connection as the SIP-over-QUIC session.</t>
      </section>
      <section anchor="carriage-of-non-rtp-media-streaming-protocols-in-a-quic-transport-session">
        <name>Carriage Of Non-RTP Media Streaming Protocols In A QUIC Transport Session</name>
        <t><xref target="RUSH"/> does not specify a means to discover the presence of a RUSH streaming session, nor a mechanism for negotiating
the encoding parameters of media that is being exchanged. RUSH has two modes of operation: Normal and Multi Stream
modes. Normal mode, as described in <xref section="4.3.1" sectionFormat="of" target="RUSH"/>, uses a single bidirectional QUIC stream to send and
receive media streams. Multi Stream mode, as described in <xref section="4.3.2" sectionFormat="of" target="RUSH"/>, uses a bidirectional QUIC
stream for each individual media frame. Bidirectional streams appear to be used in order to give error feedback, as
opposed to having a separate <xref target="control-streams" format="none">control stream</xref><iref item="control stream"/> for handling errors or using the QUIC transport error mechanism. If the
stream type mechanism described in <xref target="unidirectional-streams"/> is expanded to cover <xref target="bidirectional-streams" format="none">bidirectional streams</xref><iref item="bidirectional stream"/> as well, then
SIP-over-QUIC could be used with RUSH.</t>
        <t><xref target="Warp"/> specifies that sessions are established using HTTP/3 WebTransport (<xref target="WebTransH3"/>). However, to the author's
best knowledge WebTransport does not yet contain any signalling or media negotiation similar to how WebRTC would use
SDP offer/answer exchanges, so some form of session establishment mechanism like SIP-over-QUIC could be useful in
filling this gap. Warp uses QUIC <xref target="unidirectional-streams" format="none">unidirectional streams</xref><iref item="unidirectional stream"/> for sending media. Similar to MPEG-DASH, media is sent in
ISO-BMFF "segments", with each stream carrying a single segment. This can easily be accommodated by the media stream
type reserved in <xref target="unidirectional-streams"/>.</t>
        <t><xref target="QuicR-Arch"/> describes SDP as overly complicated, and <xref target="QuicR-Proto"/> defines the QuicR Manifest for advertising
media sessions and endpoint capabilities and, as such, SIP-over-QUIC probably isn't required. However, it is possible
that trying to design this manifest mechanism from scratch is likely to require extra time and effort to develop, while
SDP is a perfectly usable solution.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of SIP-over-QUIC should be comparable to those of <xref target="SIP2.0"/> and <xref target="HTTP3"/>.</t>
      <t>SIP-over-QUIC relies on QUIC, which itself relies on TLS 1.3 and thus supports by default the protections against
downgrade attacks described in <xref target="BCP195"/>. QUIC-specific issues and their mitigations are described in
<xref section="21" sectionFormat="of" target="QUIC-TRANSPORT"/>.</t>
      <t><xref target="transactions"/> gives specific guidance on the conversion of transactions between SIP-over-QUIC and carriage of SIP
over other transport protocols which make use of the branch parameter, in order to avoid leaking details of the
underlying QUIC transport connection.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <ul empty="true">
        <li>
          <t><strong>Author's Note</strong>: This section of the document reflects future IANA registrations, and not current ones. The
intention is for these registrations to occur once this Internet-Draft becomes an RFC.</t>
        </li>
      </ul>
      <t>This document registers a new ALPN protocol IDs (<xref target="iana-alpn"/>) and creates new registries that manage the assignment
of code points in SIP-over-QUIC (<xref target="iana-registries"/>).</t>
      <section anchor="iana-alpn">
        <name>Registration Of SIP Identification Strings</name>
        <t>This document creates a new registration of SIP-over-QUIC in the "TLS Application-Layer Protocol Negotiation (ALPN)
Protocol IDs" registry established in <xref target="RFC7301"/>.</t>
        <t>The "sips/quic" string identifies SIP-over-QUIC:</t>
        <dl>
          <dt>Protocol:</dt>
          <dd>
            <t>SIP-over-QUIC</t>
          </dd>
          <dt>Identification Sequence:</dt>
          <dd>
            <t>0x73 0x69 0x70 0x73 0x2F 0x71 0x75 0x69 0x63 ("sips/quic")</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t>This document creates a new registration of SIP/2.0 over TLS in the "TLS Application-Layer Protocol Negotiation (ALPN)
Protocol IDs" registry established in <xref target="RFC7301"/>.</t>
        <t>The "sips/2.0" string identifies SIP/2.0 over TLS:</t>
        <dl>
          <dt>Protocol:</dt>
          <dd>
            <t>SIP/2.0 over TLS</t>
          </dd>
          <dt>Identification Sequence:</dt>
          <dd>
            <t>0x73 0x69 0x70 0x73 0x2F 0x32 0x2E 0x30 ("sips/2.0")</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t><xref target="SIP2.0"/></t>
          </dd>
        </dl>
        <t>This document creates a new registration of SIP/2.0 over UDP in the "TLS Application-Layer Protocol Negotiation (ALPN)
Protocol IDs" registry established in <xref target="RFC7301"/>.</t>
        <t>The "sip/2.0" string identifies SIP/2.0 over UDP:</t>
        <dl>
          <dt>Protocol:</dt>
          <dd>
            <t>SIP/2.0 over UDP</t>
          </dd>
          <dt>Identification Sequence:</dt>
          <dd>
            <t>0x73 0x69 0x70 0x2F 0x32 0x2E 0x30 ("sip/2.0")</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t><xref target="SIP2.0"/></t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-registries">
        <name>New Registries</name>
        <t>New registries created in this document operate under the QUIC registration policy documented in
<xref section="22.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. These registries all include the common set of fields listed in
<xref section="22.1.1" sectionFormat="of" target="QUIC-TRANSPORT"/>. These registries are collected under the "Session Initiation Protocol over QUIC
Transport (SIP-over-QUIC)" heading.</t>
        <t>The initial allocations in these registries are all assigned permanent status and list a change controller of the IETF
and a contact of the <em>[TBC]</em> working group.</t>
        <section anchor="iana-frames">
          <name>Frame Types</name>
          <t>This document establishes a registry for SIP-over-QUIC frame type codes. The "SIP-over-QUIC Frame Types" registry
governs a 62-bit space. This registry follows the QUIC registry policy; see <xref target="iana-registries"/>. Permanent registrations
in this registry are assigned using the Specification Required policy <xref target="RFC8126"/>), except for values between <tt>0x00</tt>
and <tt>0x3f</tt> (in hexadecimal; inclusive), which are assigned using Standards Action or IESG Approval as defined in
Sections <xref target="RFC8126" section="4.9" sectionFormat="bare"/> and <xref target="RFC8126" section="4.10" sectionFormat="bare"/> of <xref target="RFC8126"/>.</t>
          <t>In addition to common fields as described in <xref target="iana-registries"/>, permanent registrations in this registry <bcp14>MUST</bcp14>
include the following fields:</t>
          <dl>
            <dt>Frame type:</dt>
            <dd>
              <t>A name or label for the frame type.</t>
            </dd>
          </dl>
          <t>Specifications of frame types <bcp14>MUST</bcp14> include a description of the frame layout and its semantics, including any parts of
the frame that are conditionally present.</t>
          <t>The entries in <xref target="fig-iana-frame-table"/> are registered by this document.</t>
          <table anchor="fig-iana-frame-table">
            <name>Initial SIP-over-QUIC Frame Types</name>
            <thead>
              <tr>
                <th align="left">Frame Type</th>
                <th align="left">Value</th>
                <th align="left">Specification</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <xref target="data-frame" format="none">DATA</xref><iref item="DATA"/></td>
                <td align="left">
                  <tt>0x00</tt></td>
                <td align="left">
                  <xref target="data-frame"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="headers-frame" format="none">HEADERS</xref><iref item="HEADERS"/></td>
                <td align="left">
                  <tt>0x01</tt></td>
                <td align="left">
                  <xref target="headers-frame"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="cancel-frame" format="none">CANCEL</xref><iref item="CANCEL"/></td>
                <td align="left">
                  <tt>0x02</tt></td>
                <td align="left">
                  <xref target="cancel-frame"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="settings-frame" format="none">SETTINGS</xref><iref item="SETTINGS"/></td>
                <td align="left">
                  <tt>0x04</tt></td>
                <td align="left">
                  <xref target="settings-frame"/></td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="iana-parameters">
          <name>Settings Parameters</name>
          <t>This document establishes a registry for SIP-over-QUIC parameters. The "SIP-over-QUIC Parameters" registry governs a
62-bit space. This registry follows the QUIC registry policy; see <xref target="iana-registries"/>. Permanent registrations in this
registry are assigned using the Specification Required policy <xref target="RFC8126"/>), except for values between <tt>0x00</tt> and <tt>0x3f</tt>
(in hexadecimal; inclusive), which are assigned using Standards Action or IESG Approval as defined in
Sections <xref target="RFC8126" section="4.9" sectionFormat="bare"/> and <xref target="RFC8126" section="4.10" sectionFormat="bare"/> of <xref target="RFC8126"/>.</t>
          <t>In addition to common fields as described in <xref target="iana-registries"/>, permanent registrations in this registry <bcp14>MUST</bcp14> include
the following fields:</t>
          <dl>
            <dt>Parameter Name:</dt>
            <dd>
              <t>A symbolic name for the parameter. Specifying a parameter name is optional.</t>
            </dd>
            <dt>Default:</dt>
            <dd>
              <t>The value of the parameter unless otherwise indicated. A default <bcp14>SHOULD</bcp14> be the most restrictive possible value.</t>
            </dd>
          </dl>
          <t>The entries in <xref target="fig-iana-parameter-table"/> are registered by this document.</t>
          <table anchor="fig-iana-parameter-table">
            <name>Initial SIP-over-QUIC Parameters</name>
            <thead>
              <tr>
                <th align="left">Parameter Name</th>
                <th align="left">Value</th>
                <th align="left">Specification</th>
                <th align="left">Default</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <xref target="SETTINGS_QPACK_MAX_TABLE_CAPACITY" format="none">SETTINGS_QPACK_MAX_TABLE_CAPACITY</xref><iref item="SETTINGS_QPACK_MAX_TABLE_CAPACITY"/></td>
                <td align="left">
                  <tt>0x01</tt></td>
                <td align="left">
                  <xref target="defined-settings"/></td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SETTINGS_MAX_FIELD_SECTION_SIZE" format="none">SETTINGS_MAX_FIELD_SECTION_SIZE</xref><iref item="SETTINGS_MAX_FIELD_SECTION_SIZE"/></td>
                <td align="left">
                  <tt>0x06</tt></td>
                <td align="left">
                  <xref target="defined-settings"/></td>
                <td align="left">Unlimited</td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SETTINGS_QPACK_BLOCKED_STREAMS" format="none">SETTINGS_QPACK_BLOCKED_STREAMS</xref><iref item="SETTINGS_QPACK_BLOCKED_STREAMS"/></td>
                <td align="left">
                  <tt>0x07</tt></td>
                <td align="left">
                  <xref target="defined-settings"/></td>
                <td align="left">0</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="iana-error-codes">
          <name>Error Codes</name>
          <t>This document establishes a registry for SIP-over-QUIC error codes. The "SIP-over-QUIC Error Codes" registry governs a
62-bit space. This registry follows the QUIC registry policy; see <xref target="iana-registries"/>. Permanent registrations in this
registry are assigned using the Specification Required policy <xref target="RFC8126"/>), except for values between <tt>0x0300</tt> and
<tt>0x033f</tt> (in hexadecimal; inclusive), which are assigned using Standards Action or IESG Approval as defined in
Sections <xref target="RFC8126" section="4.9" sectionFormat="bare"/> and <xref target="RFC8126" section="4.10" sectionFormat="bare"/> of <xref target="RFC8126"/>.</t>
          <t>In addition to common fields as described in <xref target="iana-registries"/>, permanent registrations in this registry <bcp14>MUST</bcp14> include
the following fields:</t>
          <dl>
            <dt>Name:</dt>
            <dd>
              <t>A name for the error code.</t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A brief description of the error code semantics.</t>
            </dd>
          </dl>
          <t>The entries in <xref target="fig-iana-error-table"/> are registered by this document. These error codes were selected from the range
that operates on a Specification Required policy to avoid collisions with HTTP/2 and HTTP/3 error codes.</t>
          <table anchor="fig-iana-error-table">
            <name>Initial SIP-over-QUIC Error Codes</name>
            <thead>
              <tr>
                <th align="left">Name</th>
                <th align="left">Value</th>
                <th align="left">Description</th>
                <th align="left">Specification</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <xref target="SIP_NO_ERROR" format="none">SIP_NO_ERROR</xref><iref item="SIP_NO_ERROR"/></td>
                <td align="left">
                  <tt>0x0300</tt></td>
                <td align="left">No error.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_GENERAL_PROTOCOL_ERROR" format="none">SIP_GENERAL_PROTOCOL_ERROR</xref><iref item="SIP_GENERAL_PROTOCOL_ERROR"/></td>
                <td align="left">
                  <tt>0x0301</tt></td>
                <td align="left">Non-specific error code.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_INTERNAL_ERROR" format="none">SIP_INTERNAL_ERROR</xref><iref item="SIP_INTERNAL_ERROR"/></td>
                <td align="left">
                  <tt>0x0302</tt></td>
                <td align="left">An internal error occurred.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_STREAM_CREATION_ERROR" format="none">SIP_STREAM_CREATION_ERROR</xref><iref item="SIP_STREAM_CREATION_ERROR"/></td>
                <td align="left">
                  <tt>0x0303</tt></td>
                <td align="left">Peer created an unacceptable stream.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_CLOSED_CRITICAL_STREAM" format="none">SIP_CLOSED_CRITICAL_STREAM</xref><iref item="SIP_CLOSED_CRITICAL_STREAM"/></td>
                <td align="left">
                  <tt>0x0304</tt></td>
                <td align="left">A required stream was closed.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_FRAME_ERROR" format="none">SIP_FRAME_ERROR</xref><iref item="SIP_FRAME_ERROR"/></td>
                <td align="left">
                  <tt>0x0305</tt></td>
                <td align="left">An invalid frame was received.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_FRAME_UNEXPECTED" format="none">SIP_FRAME_UNEXPECTED</xref><iref item="SIP_FRAME_UNEXPECTED"/></td>
                <td align="left">
                  <tt>0x0306</tt></td>
                <td align="left">A not permitted frame was received.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_CANCEL_FRAME_CLOSED" format="none">SIP_CANCEL_FRAME_CLOSED</xref><iref item="SIP_CANCEL_FRAME_CLOSED"/></td>
                <td align="left">
                  <tt>0x0307</tt></td>
                <td align="left">A <xref target="cancel-frame" format="none">CANCEL</xref><iref item="CANCEL"/> frame referenced an unopened stream ID.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_SETTINGS_ERROR" format="none">SIP_SETTINGS_ERROR</xref><iref item="SIP_SETTINGS_ERROR"/></td>
                <td align="left">
                  <tt>0x0309</tt></td>
                <td align="left">An error was detected in a <xref target="settings-frame" format="none">SETTINGS</xref><iref item="SETTINGS"/> frame.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_MISSING_SETTINGS" format="none">SIP_MISSING_SETTINGS</xref><iref item="SIP_MISSING_SETTINGS"/></td>
                <td align="left">
                  <tt>0x030a</tt></td>
                <td align="left">No <xref target="settings-frame" format="none">SETTINGS</xref><iref item="SETTINGS"/> frame was received.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_REQUEST_REJECTED" format="none">SIP_REQUEST_REJECTED</xref><iref item="SIP_REQUEST_REJECTED"/></td>
                <td align="left">
                  <tt>0x030b</tt></td>
                <td align="left">User agent server rejected a request.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_REQUEST_CANCELLED" format="none">SIP_REQUEST_CANCELLED</xref><iref item="SIP_REQUEST_CANCELLED"/></td>
                <td align="left">
                  <tt>0x030c</tt></td>
                <td align="left">The request or its response is cancelled.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_REQUEST_INCOMPLETE" format="none">SIP_REQUEST_INCOMPLETE</xref><iref item="SIP_REQUEST_INCOMPLETE"/></td>
                <td align="left">
                  <tt>0x030d</tt></td>
                <td align="left">Stream terminated without a full request.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_MESSAGE_ERROR" format="none">SIP_MESSAGE_ERROR</xref><iref item="SIP_MESSAGE_ERROR"/></td>
                <td align="left">
                  <tt>0x030e</tt></td>
                <td align="left">A SIP message was <xref target="malformed" format="none">malformed</xref><iref item="malformed"/>.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_HEADER_COMPRESSION_FAILED" format="none">SIP_HEADER_COMPRESSION_FAILED</xref><iref item="SIP_HEADER_COMPRESSION_FAILED"/></td>
                <td align="left">
                  <tt>0x0310</tt></td>
                <td align="left">Failed to interpret an encoded field section.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
              <tr>
                <td align="left">
                  <xref target="SIP_HEADER_TOO_LARGE" format="none">SIP_HEADER_TOO_LARGE</xref><iref item="SIP_HEADER_TOO_LARGE"/></td>
                <td align="left">
                  <tt>0x0311</tt></td>
                <td align="left">Received encoded field section is too large.</td>
                <td align="left">
                  <xref target="error-codes"/></td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="iana-stream-types">
          <name>Stream Types</name>
          <t>This document establishes a registry for SIP-over-QUIC stream types. The "SIP-over-QUIC Stream Types" registry governs a
62-bit space. This registry follows the QUIC registry policy; see <xref target="iana-registries"/>. Permanent registrations in this
registry are assigned using the Specification Required policy <xref target="RFC8126"/>), except for values between <tt>0x00</tt> and <tt>0x3f</tt>
(in hexadecimal; inclusive), which are assigned using Standards Action or IESG Approval as defined in
Sections <xref target="RFC8126" section="4.9" sectionFormat="bare"/> and <xref target="RFC8126" section="4.10" sectionFormat="bare"/> of <xref target="RFC8126"/>.</t>
          <t>In addition to common fields as described in <xref target="iana-registries"/>, permanent registrations in this registry <bcp14>MUST</bcp14> include
the following fields:</t>
          <dl>
            <dt>Stream Type:</dt>
            <dd>
              <t>A name or label for the stream type.</t>
            </dd>
            <dt>Sender:</dt>
            <dd>
              <t>Which endpoint on a SIP-over-QUIC connection may initiate a stream of this type. Values are "Client", "Server", or
"Both".</t>
            </dd>
          </dl>
          <t>The entries is <xref target="fig-iana-stream-type-table"/> are registered by this document.</t>
          <table anchor="fig-iana-stream-type-table">
            <name>Initial SIP-over-QUIC Stream Types</name>
            <thead>
              <tr>
                <th align="left">Stream Type</th>
                <th align="left">Value</th>
                <th align="left">Specification</th>
                <th align="left">Sender</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Control Stream</td>
                <td align="left">
                  <tt>0x00</tt></td>
                <td align="left">
                  <xref target="control-streams"/></td>
                <td align="left">Both</td>
              </tr>
              <tr>
                <td align="left">QPACK Encoder Stream</td>
                <td align="left">
                  <tt>0x02</tt></td>
                <td align="left">
                  <xref target="unidirectional-streams"/></td>
                <td align="left">Both</td>
              </tr>
              <tr>
                <td align="left">QPACK Decoder Stream</td>
                <td align="left">
                  <tt>0x03</tt></td>
                <td align="left">
                  <xref target="unidirectional-streams"/></td>
                <td align="left">Both</td>
              </tr>
              <tr>
                <td align="left">Reserved</td>
                <td align="left">
                  <tt>0x04</tt></td>
                <td align="left">
                  <xref target="unidirectional-streams"/></td>
                <td align="left">Both</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="SIP2.0">
          <front>
            <title>SIP: Session Initiation Protocol</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
              <organization/>
            </author>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne">
              <organization/>
            </author>
            <author fullname="G. Camarillo" initials="G." surname="Camarillo">
              <organization/>
            </author>
            <author fullname="A. Johnston" initials="A." surname="Johnston">
              <organization/>
            </author>
            <author fullname="J. Peterson" initials="J." surname="Peterson">
              <organization/>
            </author>
            <author fullname="R. Sparks" initials="R." surname="Sparks">
              <organization/>
            </author>
            <author fullname="M. Handley" initials="M." surname="Handley">
              <organization/>
            </author>
            <author fullname="E. Schooler" initials="E." surname="Schooler">
              <organization/>
            </author>
            <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="RFC3264">
          <front>
            <title>An Offer/Answer Model with Session Description Protocol (SDP)</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
              <organization/>
            </author>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne">
              <organization/>
            </author>
            <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="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="HTTP-SEMANTICS">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment.  This document describes a mapping of HTTP semantics over QUIC.  This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="QPACK">
          <front>
            <title>QPACK: Field Compression for HTTP/3</title>
            <author fullname="C. Krasic" initials="C." surname="Krasic">
              <organization/>
            </author>
            <author fullname="M. Bishop" initials="M." surname="Bishop">
              <organization/>
            </author>
            <author fullname="A. Frindell" initials="A." role="editor" surname="Frindell">
              <organization/>
            </author>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification defines QPACK: a compression format for efficiently representing HTTP fields that is to be used in HTTP/3. This is a variation of HPACK compression that seeks to reduce head-of-line blocking.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9204"/>
          <seriesInfo name="DOI" value="10.17487/RFC9204"/>
        </reference>
        <reference anchor="RFC3261">
          <front>
            <title>SIP: Session Initiation Protocol</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
              <organization/>
            </author>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne">
              <organization/>
            </author>
            <author fullname="G. Camarillo" initials="G." surname="Camarillo">
              <organization/>
            </author>
            <author fullname="A. Johnston" initials="A." surname="Johnston">
              <organization/>
            </author>
            <author fullname="J. Peterson" initials="J." surname="Peterson">
              <organization/>
            </author>
            <author fullname="R. Sparks" initials="R." surname="Sparks">
              <organization/>
            </author>
            <author fullname="M. Handley" initials="M." surname="Handley">
              <organization/>
            </author>
            <author fullname="E. Schooler" initials="E." surname="Schooler">
              <organization/>
            </author>
            <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="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
              <organization/>
            </author>
            <author fullname="R. Fielding" initials="R." surname="Fielding">
              <organization/>
            </author>
            <author fullname="L. Masinter" initials="L." surname="Masinter">
              <organization/>
            </author>
            <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>
        <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195">
          <reference anchor="RFC7525" target="https://www.rfc-editor.org/info/rfc7525">
            <front>
              <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
              <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
              <author fullname="R. Holz" initials="R." surname="Holz"/>
              <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
              <date month="May" year="2015"/>
              <abstract>
                <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP.  Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation.  This document provides recommendations for improving the security of deployed services that use TLS and DTLS.  The recommendations are applicable to the majority of use cases.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="7525"/>
            <seriesInfo name="DOI" value="10.17487/RFC7525"/>
          </reference>
          <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996">
            <front>
              <title>Deprecating TLS 1.0 and TLS 1.1</title>
              <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
              <author fullname="S. Farrell" initials="S." surname="Farrell"/>
              <date month="March" year="2021"/>
              <abstract>
                <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
                <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
                <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="8996"/>
            <seriesInfo name="DOI" value="10.17487/RFC8996"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8499">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan">
              <organization/>
            </author>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara">
              <organization/>
            </author>
            <date month="January" year="2019"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs.  The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has sometimes changed in the decades since the DNS was first defined.  This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document obsoletes RFC 7719 and updates RFC 2308.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="8499"/>
          <seriesInfo name="DOI" value="10.17487/RFC8499"/>
        </reference>
        <reference anchor="HTTP1.1">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <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="QUIC-DATAGRAMS">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly">
              <organization/>
            </author>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear">
              <organization/>
            </author>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </reference>
        <reference anchor="QRT">
          <front>
            <title>QRT: QUIC RTP Tunnelling</title>
            <author initials="S." surname="Hurst" fullname="Sam Hurst">
              <organization>BBC Research &amp; Development</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hurst-quic-rtp-tunnelling-01"/>
        </reference>
        <reference anchor="RTP-over-QUIC">
          <front>
            <title>RTP over QUIC</title>
            <author initials="J." surname="Ott" fullname="Jörg Ott">
              <organization>Technical University Munich</organization>
            </author>
            <author initials="M." surname="Engelbart" fullname="Mathis Engelbart">
              <organization>Technical University Munich</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-avtcore-rtp-over-quic-01"/>
        </reference>
        <reference anchor="QuicR-Arch">
          <front>
            <title>QuicR - Media Delivery Protocol over QUIC</title>
            <author initials="C." surname="Jennings" fullname="Cullen Jennings">
              <organization>Cisco</organization>
            </author>
            <author initials="S." surname="Nandakumar" fullname="Suhas Nandakumar">
              <organization>Cisco</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jennings-moq-quicr-arch-01"/>
        </reference>
        <reference anchor="QuicR-Proto">
          <front>
            <title>QuicR - Media Delivery Protocol over QUIC</title>
            <author initials="C." surname="Jennings" fullname="Cullen Jennings">
              <organization>Cisco</organization>
            </author>
            <author initials="S." surname="Nandakumar" fullname="Suhas Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author initials="C." surname="Huitema" fullname="Christian Huitema">
              <organization>Private Octopus Inc.</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jennings-moq-quicr-proto-01"/>
        </reference>
        <reference anchor="RUSH">
          <front>
            <title>RUSH - Reliable (unreliable) streaming protocol</title>
            <author initials="K." surname="Pugin" fullname="Kirill Pugin">
              <organization>Facebook</organization>
            </author>
            <author initials="A." surname="Frindell" fullname="Alan Frindell">
              <organization>Facebook</organization>
            </author>
            <author initials="J." surname="Cenzano" fullname="Jordi Cenzano">
              <organization>Facebook</organization>
            </author>
            <author initials="J." surname="Weissman" fullname="Jake Weissman">
              <organization>Facebook</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kpugin-rush-01"/>
        </reference>
        <reference anchor="Warp">
          <front>
            <title>Warp - Segmented Live Media Transport</title>
            <author initials="L." surname="Curley" fullname="Luke Curley">
              <organization>Twitch</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-lcurley-warp-02"/>
        </reference>
        <reference anchor="SDP-QUIC">
          <front>
            <title>SDP Offer/Answer for RTP using QUIC as Transport</title>
            <author initials="S." surname="Dawkins" fullname="Spencer Dawkins">
              <organization>Tencent America LLC</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dawkins-avtcore-sdp-rtp-quic-00"/>
        </reference>
        <reference anchor="WebTransH3">
          <front>
            <title>WebTransport over HTTP/3</title>
            <author initials="A." surname="Frindell" fullname="Alan Frindell">
              <organization>Facebook</organization>
            </author>
            <author initials="E." surname="Kinnear" fullname="Eric Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author initials="V." surname="Vasiliev" fullname="Victor Vasiliev">
              <organization>Google</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-03"/>
        </reference>
        <reference anchor="DNS-SVCB">
          <front>
            <title>Service binding and parameter specification via the DNS (DNS SVCB and HTTPS RRs)</title>
            <author initials="B." surname="Schwartz" fullname="Ben Schwartz">
              <organization>Google</organization>
            </author>
            <author initials="M." surname="Bishop" fullname="Mike Bishop">
              <organization>Akamai Technologies</organization>
            </author>
            <author initials="E." surname="Nygren" fullname="Erik Nygren">
              <organization>Akamai Technologies</organization>
            </author>
            <date/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-svcb-https-11"/>
        </reference>
        <reference anchor="SNI">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2".  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
              <organization/>
            </author>
            <author fullname="P. Overell" initials="P." surname="Overell">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC2782">
          <front>
            <title>A DNS RR for specifying the location of services (DNS SRV)</title>
            <author fullname="A. Gulbrandsen" initials="A." surname="Gulbrandsen">
              <organization/>
            </author>
            <author fullname="P. Vixie" initials="P." surname="Vixie">
              <organization/>
            </author>
            <author fullname="L. Esibov" initials="L." surname="Esibov">
              <organization/>
            </author>
            <date month="February" year="2000"/>
            <abstract>
              <t>This document describes a DNS RR which specifies the location of the server(s) for a specific protocol and domain.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2782"/>
          <seriesInfo name="DOI" value="10.17487/RFC2782"/>
        </reference>
        <reference anchor="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl">
              <organization/>
            </author>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Stephan" initials="E." surname="Stephan">
              <organization/>
            </author>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to acknowledge Richard Bradbury as the inspiration for the idea behind this document, and to
Piers O'Hanlon for his review comments.</t>
    </section>
    <section anchor="static-table">
      <name>QPACK Static Table</name>
      <ul empty="true">
        <li>
          <t><strong>Author's Note:</strong> This is only a preliminary table. The original HPACK static table was created after analysing the
frequency of common HTTP header fields and their values. QPACK repeated that effort at a later date, which resulted in
a different static table. The author welcomes any data that would permit a similar level of analysis for the frequency
of common SIP header fields and their values.</t>
        </li>
      </ul>
      <table anchor="fig-static-table">
        <name>Static Table</name>
        <thead>
          <tr>
            <th align="left">Index</th>
            <th align="left">Name</th>
            <th align="left">Value</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">0</td>
            <td align="left">:request-uri</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">1</td>
            <td align="left">from</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">2</td>
            <td align="left">to</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">call-id</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">4</td>
            <td align="left">via</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">:method</td>
            <td align="left">REGISTER</td>
          </tr>
          <tr>
            <td align="left">6</td>
            <td align="left">:method</td>
            <td align="left">INVITE</td>
          </tr>
          <tr>
            <td align="left">7</td>
            <td align="left">:method</td>
            <td align="left">ACK</td>
          </tr>
          <tr>
            <td align="left">8</td>
            <td align="left">:method</td>
            <td align="left">BYE</td>
          </tr>
          <tr>
            <td align="left">9</td>
            <td align="left">:method</td>
            <td align="left">
              <xref target="cancel-frame" format="none">CANCEL</xref><iref item="CANCEL"/></td>
          </tr>
          <tr>
            <td align="left">10</td>
            <td align="left">:method</td>
            <td align="left">UPDATE</td>
          </tr>
          <tr>
            <td align="left">11</td>
            <td align="left">:method</td>
            <td align="left">REFER</td>
          </tr>
          <tr>
            <td align="left">12</td>
            <td align="left">:method</td>
            <td align="left">OPTIONS</td>
          </tr>
          <tr>
            <td align="left">13</td>
            <td align="left">:method</td>
            <td align="left">MESSAGE</td>
          </tr>
          <tr>
            <td align="left">14</td>
            <td align="left">:status</td>
            <td align="left">100</td>
          </tr>
          <tr>
            <td align="left">15</td>
            <td align="left">:status</td>
            <td align="left">180</td>
          </tr>
          <tr>
            <td align="left">16</td>
            <td align="left">:status</td>
            <td align="left">200</td>
          </tr>
          <tr>
            <td align="left">17</td>
            <td align="left">:status</td>
            <td align="left">301</td>
          </tr>
          <tr>
            <td align="left">18</td>
            <td align="left">:status</td>
            <td align="left">302</td>
          </tr>
          <tr>
            <td align="left">19</td>
            <td align="left">:status</td>
            <td align="left">400</td>
          </tr>
          <tr>
            <td align="left">20</td>
            <td align="left">:status</td>
            <td align="left">401</td>
          </tr>
          <tr>
            <td align="left">21</td>
            <td align="left">:status</td>
            <td align="left">404</td>
          </tr>
          <tr>
            <td align="left">22</td>
            <td align="left">:status</td>
            <td align="left">407</td>
          </tr>
          <tr>
            <td align="left">23</td>
            <td align="left">:status</td>
            <td align="left">408</td>
          </tr>
          <tr>
            <td align="left">24</td>
            <td align="left">contact</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">25</td>
            <td align="left">content-type</td>
            <td align="left">application/sdp</td>
          </tr>
          <tr>
            <td align="left">26</td>
            <td align="left">content-type</td>
            <td align="left">text/html</td>
          </tr>
          <tr>
            <td align="left">27</td>
            <td align="left">content-disposition</td>
            <td align="left">session</td>
          </tr>
          <tr>
            <td align="left">28</td>
            <td align="left">content-disposition</td>
            <td align="left">render</td>
          </tr>
          <tr>
            <td align="left">29</td>
            <td align="left">content-length</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">30</td>
            <td align="left">accept</td>
            <td align="left">application/sdp</td>
          </tr>
          <tr>
            <td align="left">31</td>
            <td align="left">accept-encoding</td>
            <td align="left">gzip</td>
          </tr>
          <tr>
            <td align="left">32</td>
            <td align="left">accept-language</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">33</td>
            <td align="left">alert-info</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">34</td>
            <td align="left">allow</td>
            <td align="left">REGISTER</td>
          </tr>
          <tr>
            <td align="left">35</td>
            <td align="left">allow</td>
            <td align="left">INVITE</td>
          </tr>
          <tr>
            <td align="left">36</td>
            <td align="left">allow</td>
            <td align="left">ACK</td>
          </tr>
          <tr>
            <td align="left">37</td>
            <td align="left">allow</td>
            <td align="left">BYE</td>
          </tr>
          <tr>
            <td align="left">38</td>
            <td align="left">allow</td>
            <td align="left">
              <xref target="cancel-frame" format="none">CANCEL</xref><iref item="CANCEL"/></td>
          </tr>
          <tr>
            <td align="left">39</td>
            <td align="left">allow</td>
            <td align="left">UPDATE</td>
          </tr>
          <tr>
            <td align="left">40</td>
            <td align="left">allow</td>
            <td align="left">REFER</td>
          </tr>
          <tr>
            <td align="left">41</td>
            <td align="left">allow</td>
            <td align="left">OPTIONS</td>
          </tr>
          <tr>
            <td align="left">42</td>
            <td align="left">allow</td>
            <td align="left">MESSAGE</td>
          </tr>
          <tr>
            <td align="left">43</td>
            <td align="left">authentication-info</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">44</td>
            <td align="left">authorization</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">45</td>
            <td align="left">call-info</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">46</td>
            <td align="left">content-encoding</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">47</td>
            <td align="left">content-language</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">48</td>
            <td align="left">date</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">49</td>
            <td align="left">error-info</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">50</td>
            <td align="left">expires</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">51</td>
            <td align="left">in-reply-to</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">52</td>
            <td align="left">max-forwards</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">53</td>
            <td align="left">min-expires</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">54</td>
            <td align="left">mime-version</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">55</td>
            <td align="left">organization</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">56</td>
            <td align="left">priority</td>
            <td align="left">Non-urgent</td>
          </tr>
          <tr>
            <td align="left">57</td>
            <td align="left">priority</td>
            <td align="left">Normal</td>
          </tr>
          <tr>
            <td align="left">58</td>
            <td align="left">priority</td>
            <td align="left">Urgent</td>
          </tr>
          <tr>
            <td align="left">59</td>
            <td align="left">priority</td>
            <td align="left">Emergency</td>
          </tr>
          <tr>
            <td align="left">60</td>
            <td align="left">proxy-authenticate</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">61</td>
            <td align="left">proxy-authorization</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">62</td>
            <td align="left">proxy-require</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">63</td>
            <td align="left">record-route</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">64</td>
            <td align="left">reply-to</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">65</td>
            <td align="left">require</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">66</td>
            <td align="left">retry-after</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">67</td>
            <td align="left">route</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">68</td>
            <td align="left">server</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">69</td>
            <td align="left">subject</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">70</td>
            <td align="left">supported</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">71</td>
            <td align="left">timestamp</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">72</td>
            <td align="left">unsupported</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">73</td>
            <td align="left">user-agent</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">74</td>
            <td align="left">warning</td>
            <td align="left">300</td>
          </tr>
          <tr>
            <td align="left">75</td>
            <td align="left">warning</td>
            <td align="left">301</td>
          </tr>
          <tr>
            <td align="left">76</td>
            <td align="left">warning</td>
            <td align="left">302</td>
          </tr>
          <tr>
            <td align="left">77</td>
            <td align="left">warning</td>
            <td align="left">303</td>
          </tr>
          <tr>
            <td align="left">78</td>
            <td align="left">warning</td>
            <td align="left">304</td>
          </tr>
          <tr>
            <td align="left">79</td>
            <td align="left">warning</td>
            <td align="left">305</td>
          </tr>
          <tr>
            <td align="left">80</td>
            <td align="left">warning</td>
            <td align="left">306</td>
          </tr>
          <tr>
            <td align="left">81</td>
            <td align="left">warning</td>
            <td align="left">307</td>
          </tr>
          <tr>
            <td align="left">82</td>
            <td align="left">warning</td>
            <td align="left">330</td>
          </tr>
          <tr>
            <td align="left">83</td>
            <td align="left">warning</td>
            <td align="left">331</td>
          </tr>
          <tr>
            <td align="left">84</td>
            <td align="left">warning</td>
            <td align="left">370</td>
          </tr>
          <tr>
            <td align="left">85</td>
            <td align="left">warning</td>
            <td align="left">399</td>
          </tr>
          <tr>
            <td align="left">86</td>
            <td align="left">www-authenticate</td>
            <td align="left"> </td>
          </tr>
        </tbody>
      </table>
    </section>
  </back>
  <!-- ##markdown-source:
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
HxDwhKx9BLl8BSr0OJ1FBCH0jJLawjvbI77Wi6sVLOsuONVywJ4Nng9ISfTD
pUlJNPBB4yNJLiC2LkuYNwmxk4LMxkJxs9LdWOOAU8HlLCWx9ImVZfolPmqI
c6G0tEAcqGqii6z6GluXKC59o7R4HnGQPTuFZxBUomRWkWsN+KCYHkzH8OVk
WZKuyOYioM0kvJIqy48cOxjSGY8tIvAvjuBF//jNhWObjy5gE7+7sKEylRrV
Ls6LC0Lli7dlMdc2BEbcBwoLYNoPHFTNLh+bwRZq0TG2ma9Wpj4ShozDMBuu
VLoWXt1nrsPuoYYOYJy0rFDl6S3b1g4A0QL7X49FtLwQbswSiW8DbJqLXH/L
JR1W5O5XTaanp0c8qKHBsKdiFlrPSdSvUsfDBR9eF1dkwQUshp6BFeGOkzkR
TkLT3LTx6fBok8Zq2prg3WjzIA4hUDlcnJXYGsU9FOHJ2RWVxSxVCXmNBfMJ
GfF4g8Xs8lZsZ7TVreaD8Ex5UsQ4vULtHNE5Mbq/mn0qXBkJdrBk9kHpJ2q8
YcqXcdyBaw4nCxp/9S10lJJ+RwYzCSZCoiLiZhPG8+SLMhIdEceYTAT1fSed
iynoOwrecpfWj1Kju8XtWh1rNqiG1soN+4qk05YVqnkLVhL9A1YSvBUkMyuJ
HrsSbviolURsM+u282G0N5zFGbD6G6M1h4gxiEngQtXeWfUcyBiS8MbHcCgj
ODmkGFTxj2lZ2LAuNMJWPE8l7YZQkjIpaxYFX7reEsGXSbAbJ8aioulqEI0I
OZUFvmAGaCKFkPQkopYvVOB0J0W23rBPkDeh1RVAKG8cGXKoLcjQGTIvkW0o
QChlTxVCbYZ8nFSWQ1deiDe0axLeefBN9QYj9TqIop2BEzumkvSWRFhxuBZ3
pqZqlC22+OiHHiKcjbHuqqmULKRb0e7ACXFinUh7HhdTeJIh2NKKLBXreqco
TwSOY3+Flb9jHthmN7Vbt+f5POIPdgJZ+kDT/cBdcmZ3iVwVoCdlU+M8x8di
Gm7ZMS8YQtxll2yAhhE+vz07/DD8/Olk+C+nw6Pz4Rs0xUbW4wt8zFm7+F8R
j0ndJCnPgz2ddusZlKliFhNaaKzxGxhkSjycZJRljm6TPPLei8lmgbEddY0e
dvUasxAJYh2GAZXLGX7NVN1o5ezhdq3o3DcLtcZtHy8XU2b5LJeSPdA3kGI8
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
ljnGMHNHmWMv632N/g9+qom+SRYBAA==

-->

</rfc>
