<?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.0.2) -->
<?rfc docindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-quic-qlog-h3-events-12" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.2 -->
  <front>
    <title>HTTP/3 qlog event definitions</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-h3-events-12"/>
    <author initials="R." surname="Marx" fullname="Robin Marx" role="editor">
      <organization>Akamai</organization>
      <address>
        <email>rmarx@akamai.com</email>
      </address>
    </author>
    <author initials="L." surname="Niccolini" fullname="Luca Niccolini" role="editor">
      <organization>Meta</organization>
      <address>
        <email>lniccolini@meta.com</email>
      </address>
    </author>
    <author initials="M." surname="Seemann" fullname="Marten Seemann" role="editor">
      <organization/>
      <address>
        <email>martenseemann@gmail.com</email>
      </address>
    </author>
    <author initials="L." surname="Pardue" fullname="Lucas Pardue" role="editor">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document defines a qlog event schema containing concrete events for the
core HTTP/3 protocol and selected extensions.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <ul empty="true">
        <li>
          <t>Note to RFC editor: Please remove this section before publication.</t>
        </li>
      </ul>
      <t>Feedback and discussion are welcome at
<eref target="https://github.com/quicwg/qlog">https://github.com/quicwg/qlog</eref>. Readers are
advised to refer to the "editor's draft" at that URL for an up-to-date version
of this document.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines a qlog event schema (<xref section="8" sectionFormat="of" target="QLOG-MAIN"/>)
containing concrete events for the core HTTP/3 protocol <xref target="RFC9114"/> and selected
extensions (<xref target="EXTENDED-CONNECT"/>, <xref target="H3_PRIORITIZATION"/>, and
<xref target="H3-DATAGRAM"/>).</t>
      <t>The event namespace with identifier <tt>http3</tt> is defined; see <xref target="schema-def"/>. In
this namespace multiple events derive from the qlog abstract Event class
(<xref section="7" sectionFormat="of" target="QLOG-MAIN"/>), each extending the "data" field and defining
their "name" field values and semantics.</t>
      <t><xref target="h3-events"/> summarizes the name value of each event type that is defined in
this specification. Some event data fields use complex data types. These are
represented as enums or re-usable definitions, which are grouped together on the
bottom of this document for clarity.</t>
      <table anchor="h3-events">
        <name>HTTP/3 Events</name>
        <thead>
          <tr>
            <th align="left">Name value</th>
            <th align="left">Importance</th>
            <th align="left">Definition</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">http3:parameters_set</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-parametersset"/></td>
          </tr>
          <tr>
            <td align="left">http3:parameters_restored</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-parametersrestored"/></td>
          </tr>
          <tr>
            <td align="left">http3:stream_type_set</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-streamtypeset"/></td>
          </tr>
          <tr>
            <td align="left">http3:priority_updated</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-priorityupdated"/></td>
          </tr>
          <tr>
            <td align="left">http3:frame_created</td>
            <td align="left">Core</td>
            <td align="left">
              <xref target="h3-framecreated"/></td>
          </tr>
          <tr>
            <td align="left">http3:frame_parsed</td>
            <td align="left">Core</td>
            <td align="left">
              <xref target="h3-frameparsed"/></td>
          </tr>
          <tr>
            <td align="left">http3:datagram_created</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-datagramcreated"/></td>
          </tr>
          <tr>
            <td align="left">http3:datagram_parsed</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-datagramparsed"/></td>
          </tr>
          <tr>
            <td align="left">http3:push_resolved</td>
            <td align="left">Extra</td>
            <td align="left">
              <xref target="h3-pushresolved"/></td>
          </tr>
        </tbody>
      </table>
      <section anchor="usage-with-quic">
        <name>Usage with QUIC</name>
        <t>The events described in this document can be used with or without logging the
related QUIC events defined in <xref target="QLOG-QUIC"/>. If used with QUIC events, the QUIC
document takes precedence in terms of recommended filenames and trace separation
setups.</t>
        <t>If used without QUIC events, it is recommended that the implementation assign a
globally unique identifier to each HTTP/3 connection. This ID can then be used as
the value of the qlog "group_id" field, as well as the qlog filename or file
identifier, potentially suffixed by the vantagepoint type (For example,
abcd1234_server.qlog would contain the server-side trace of the connection with
GUID abcd1234).</t>
      </section>
      <section anchor="notational-conventions">
        <name>Notational 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>The event and data structure definitions in ths document are expressed
in the Concise Data Definition Language <xref target="CDDL"/> and its
extensions described in <xref target="QLOG-MAIN"/>.</t>
        <t>The following fields from <xref target="QLOG-MAIN"/> are imported and used: name, namespace,
type, data, group_id, RawInfo, and time-related
fields.</t>
        <t>Events are defined with an importance level as described in <xref section="8.3" sectionFormat="of" target="QLOG-MAIN"/>.</t>
        <t>As is the case for <xref target="QLOG-MAIN"/>, the qlog schema definitions in this document
are intentionally agnostic to serialization formats. The choice of format is an
implementation decision.</t>
      </section>
    </section>
    <section anchor="schema-def">
      <name>Event Schema Definition</name>
      <t>This document describes how the core HTTP/3 protocol and selected extensions can
be expressed in qlog using a newly defined event schema. Per the requirements in
<xref section="8" sectionFormat="of" target="QLOG-MAIN"/>, this document registers the <tt>http3</tt> namespace. The
event schema URI is <tt>urn:ietf:params:qlog:events:http3</tt>.</t>
      <section removeInRFC="true" anchor="draft-event-schema-identification">
        <name>Draft Event Schema Identification</name>
        <t>Only implementations of the final, published RFC can use the events belonging to
the event schema with the URI <tt>urn:ietf:params:qlog:events:http3</tt>. Until such an
RFC exists, implementations <bcp14>MUST NOT</bcp14> identify themselves using this URI.</t>
        <t>Implementations of draft versions of the event schema <bcp14>MUST</bcp14> append the string
"-" and the corresponding draft number to the URI. For example, draft 07 of this
document is identified using the URI <tt>urn:ietf:params:qlog:events:http3-07</tt>.</t>
        <t>The namespace identifier itself is not affected by this requirement.</t>
      </section>
    </section>
    <section anchor="h3-ev">
      <name>HTTP/3 Events</name>
      <t>HTTP/3 events extend the <tt>$ProtocolEventData</tt> extension point defined in
<xref target="QLOG-MAIN"/>. Additionally, they allow for direct extensibility by their use of
per-event extension points via the <tt>$$</tt> CDDL "group socket" syntax, as also
described in <xref target="QLOG-MAIN"/>.</t>
      <figure anchor="h3-events-def">
        <name>HTTP3EventData definition and ProtocolEventData extension</name>
        <sourcecode type="cddl"><![CDATA[
HTTP3EventData = HTTP3ParametersSet /
              HTTP3ParametersRestored /
              HTTP3StreamTypeSet /
              HTTP3PriorityUpdated /
              HTTP3FrameCreated /
              HTTP3FrameParsed /
              HTTP3DatagramCreated /
              HTTP3DatagramParsed /
              HTTP3PushResolved

$ProtocolEventData /= HTTP3EventData
]]></sourcecode>
      </figure>
      <t>HTTP events are logged when a certain condition happens at the application
layer, and there isn't always a one to one mapping between HTTP and QUIC events.
The exchange of data between the HTTP and QUIC layer is logged via the
"stream_data_moved" and "datagram_data_moved" events in <xref target="QLOG-QUIC"/>.</t>
      <t>HTTP/3 frames are transmitted on QUIC streams, which allows them to span
multiple QUIC packets. Some implementations might send a single large frame,
rather than a sequence of smaller frames, in order to amortize frame header
overhead. HTTP/3 frame headers are represented by the frame_created
(<xref target="h3-framecreated"/>) and frame_parsed (<xref target="h3-frameparsed"/>) events. Subsequent
frame payload data transfer is indicated by stream_data_moved events.
Furthermore, stream_data_moved events can appear before frame_parsed events
because implementations need to read data from a stream in order to parse the
frame header.</t>
      <t>The concrete HTTP/3 event types are further defined below, their type identifier
is the heading name.</t>
      <section anchor="h3-parametersset">
        <name>parameters_set</name>
        <t>The <tt>parameters_set</tt> event contains HTTP/3 and QPACK-level settings, mostly
those received from the HTTP/3 SETTINGS frame. It has Base importance level.</t>
        <t>All these parameters are typically set once and never change. However, they
might be set at different times during the connection, therefore a qlog can have
multiple instances of <tt>parameters_set</tt> with different fields set.</t>
        <t>The "initiator" field reflects how Settings are exchanged on a connection. Sent
settings have the value "local" and received settings have the value
"received".</t>
        <figure anchor="h3-parametersset-def">
          <name>HTTP3ParametersSet definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3ParametersSet = {
    ? initiator: Initiator

    ; RFC9114
    ? max_field_section_size: uint64

    ; RFC9204
    ? max_table_capacity: uint64
    ? blocked_streams_count: uint64

    ; RFC9220 (SETTINGS_ENABLE_CONNECT_PROTOCOL)
    ? extended_connect: uint16

    ; RFC9297 (SETTINGS_H3_DATAGRAM)
    ? h3_datagram: uint16

    ; qlog-specific
    ; indicates whether this implementation waits for a SETTINGS
    ; frame before processing requests
    ? waits_for_settings: bool

    * $$http3-parametersset-extension
}
]]></sourcecode>
        </figure>
        <t>The <tt>parameters_set</tt> event can contain any number of unspecified fields. This
allows for representation of reserved settings (aka GREASE) or ad-hoc support
for extension settings that do not have a related qlog schema definition.</t>
      </section>
      <section anchor="h3-parametersrestored">
        <name>parameters_restored</name>
        <t>When using QUIC 0-RTT, HTTP/3 clients are expected to remember and reuse the
server's SETTINGs from the previous connection. The <tt>parameters_restored</tt> event
is used to indicate which HTTP/3 settings were restored and to which values when
utilizing 0-RTT. It has Base importance level.</t>
        <figure anchor="h3-parametersrestored-def">
          <name>HTTP3ParametersRestored definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3ParametersRestored = {
    ; RFC9114
    ? max_field_section_size: uint64

    ; RFC9204
    ? max_table_capacity: uint64
    ? blocked_streams_count: uint64

    ; RFC9220 (SETTINGS_ENABLE_CONNECT_PROTOCOL)
    ? extended_connect: uint16

    ; RFC9297 (SETTINGS_H3_DATAGRAM)
    ? h3_datagram: uint16

    * $$http3-parametersrestored-extension
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3-streamtypeset">
        <name>stream_type_set</name>
        <t>The <tt>stream_type_set</tt> event conveys when a HTTP/3 stream type becomes known; see
Sections <xref target="RFC9114" section="6.1" sectionFormat="bare"/> and <xref target="RFC9114" section="6.2" sectionFormat="bare"/> of <xref target="RFC9114"/>. It has Base importance level.</t>
        <t>Client bidirectional streams always have a stream_type value of "request".
Server bidirectional streams have no defined use, although extensions could
change that.</t>
        <t>Unidirectional streams in either direction begin with with a variable-length
integer type. Where the type is not known, the stream_type value of "unknown"
type can be used and the value captured in the stream_type_bytes field; a
numerical value without variable-length integer encoding.</t>
        <t>The generic <tt>$HTTP3StreamType</tt> is defined here as a CDDL "type socket" extension
point. It can be extended to support additional HTTP/3 stream types.</t>
        <figure anchor="h3-streamtypeset-def">
          <name>HTTP3StreamTypeSet definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3StreamTypeSet = {
    ? initiator: Initiator
    stream_id: uint64
    stream_type: $HTTP3StreamType

    ; only when stream_type === "unknown"
    ? stream_type_bytes: uint64

    ; only when stream_type === "push"
    ? associated_push_id: uint64

    * $$http3-streamtypeset-extension
}

$HTTP3StreamType /=   "request" /
                      "control" /
                      "push" /
                      "reserved" /
                      "unknown" /
                      "qpack_encode" /
                      "qpack_decode"
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3-priorityupdated">
        <name>priority_updated</name>
        <t>The <tt>priority_updated</tt> event is emitted when the priority of a request stream or
push stream is initialized or updated through mechanisms defined in
<xref target="RFC9218"/>. It has Base importance level.</t>
        <t>There can be several reasons why a <tt>priority_updated</tt> occurs, and why a
particular value was chosen. For example, the priority can be updated through
signals received from client and/or server (e.g., in HTTP/3 HEADERS or
PRIORITY_UPDATE frames) or it can be changed or overridden due to local
policies. The <tt>trigger</tt> and <tt>reason</tt> fields can be used to optionally
capture such details.</t>
        <figure anchor="h3-priorityupdated-def">
          <name>HTTP3PriorityUpdated definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3PriorityUpdated = {
    ; if the prioritized element is a request stream
    ? stream_id: uint64

    ; if the prioritized element is a push stream
    ? push_id: uint64

    ? old: HTTP3Priority
    new: HTTP3Priority

    ? trigger: "client_signal_received" /
                "local" /
                "other"

    ? reason: "client_signal_only" /
               "client_server_merged" /
               "local_policy" /
               "other"

    * $$http3-priorityupdated-extension
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3-framecreated">
        <name>frame_created</name>
        <t>The <tt>frame_created</tt> event is emitted when the HTTP/3 framing actually happens.
It has Core importance level.</t>
        <t>This event does not necessarily coincide with HTTP/3 data getting passed to the
QUIC layer. For that, see the <tt>stream_data_moved</tt> event in <xref target="QLOG-QUIC"/>.</t>
        <figure anchor="h3-framecreated-def">
          <name>HTTP3FrameCreated definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3FrameCreated = {
    stream_id: uint64
    frame: $HTTP3Frame

    * $$http3-framecreated-extension
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3-frameparsed">
        <name>frame_parsed</name>
        <t>The <tt>frame_parsed</tt> event is emitted when the HTTP/3 frame is parsed. It has Core
importance level.</t>
        <t>This event is not necessarily the same as when the HTTP/3 data is actually
received on the QUIC layer. For that, see the <tt>stream_data_moved</tt> event in
<xref target="QLOG-QUIC"/>.</t>
        <figure anchor="h3-frameparsed-def">
          <name>HTTP3FrameParsed definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3FrameParsed = {
    stream_id: uint64
    frame: $HTTP3Frame

    * $$h3-frameparsed-extension
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3-datagramcreated">
        <name>datagram_created</name>
        <t>The <tt>datagram_created</tt> event is emitted when an HTTP/3 Datagram is created (see
<xref target="RFC9297"/>). It has Base importance level.</t>
        <t>This event does not necessarily coincide with the HTTP/3 Datagram getting passed
to the QUIC layer. For that, see the <tt>datagram_data_moved</tt> event in
<xref target="QLOG-QUIC"/>.</t>
        <figure anchor="h3-datagramcreated-def">
          <name>HTTP3DatagramCreated definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3DatagramCreated = {
    quarter_stream_id: uint64
    ? datagram: $HTTP3Datagram
    ? raw: RawInfo

    * $$http3-datagramcreated-extension
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3-datagramparsed">
        <name>datagram_parsed</name>
        <t>The <tt>datagram_parsed</tt> event is emitted when the HTTP/3 Datagram is parsed (see
<xref target="RFC9297"/>). It has Base importance level.</t>
        <t>This event is not necessarily the same as when the HTTP/3 Datagram is actually
received on the QUIC layer. For that, see the <tt>datagram_data_moved</tt> event in
<xref target="QLOG-QUIC"/>.</t>
        <figure anchor="h3-datagramparsed-def">
          <name>HTTP3DatagramParsed definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3DatagramParsed = {
    quarter_stream_id: uint64
    ? datagram: $HTTP3Datagram
    ? raw: RawInfo

    * $$http3-datagramparsed-extension
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3-pushresolved">
        <name>push_resolved</name>
        <t>The <tt>push_resolved</tt> event is emitted when a pushed resource (<xref section="4.6" sectionFormat="of" target="RFC9114"/>) is successfully claimed (used) or, conversely, abandoned (rejected)
by the application on top of HTTP/3 (e.g., the web browser). This event provides
additional context that can is aid debugging issues related to server push. It
has Extra importance level.</t>
        <figure anchor="h3-pushresolved-def">
          <name>HTTP3PushResolved definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3PushResolved = {
    ? push_id: uint64

    ; in case this is logged from a place that does not have access
    ; to the push_id
    ? stream_id: uint64
    decision: HTTP3PushDecision

    * $$http3-pushresolved-extension
}

HTTP3PushDecision = "claimed" /
                 "abandoned"
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="http3-data-type-definitions">
      <name>HTTP/3 Data Type Definitions</name>
      <t>The following data type definitions can be used in HTTP/3 events.</t>
      <section anchor="initiator">
        <name>Initiator</name>
        <figure anchor="initiator-def">
          <name>Initiator definition</name>
          <sourcecode type="cddl"><![CDATA[
Initiator = "local" /
            "remote"
]]></sourcecode>
        </figure>
      </section>
      <section anchor="http3frame">
        <name>HTTP3Frame</name>
        <t>The generic <tt>$HTTP3Frame</tt> is defined here as a CDDL "type socket" extension point.
It can be extended to support additional HTTP/3 frame types.</t>
        <figure anchor="h3-frame-def">
          <name>HTTP3Frame type socket definition</name>
          <artwork><![CDATA[
; The HTTP3Frame is any key-value map (e.g., JSON object)
$HTTP3Frame /= {
    * text => any
}
]]></artwork>
        </figure>
        <t>The HTTP/3 frame types defined in this document are as follows:</t>
        <figure anchor="h3baseframe-def">
          <name>HTTP3BaseFrames definition</name>
          <sourcecode type="cddl"><![CDATA[
HTTP3BaseFrames = HTTP3DataFrame /
                  HTTP3HeadersFrame /
                  HTTP3CancelPushFrame /
                  HTTP3SettingsFrame /
                  HTTP3PushPromiseFrame /
                  HTTP3GoawayFrame /
                  HTTP3MaxPushIDFrame /
                  HTTP3ReservedFrame /
                  HTTP3UnknownFrame

$HTTP3Frame /= HTTP3BaseFrames
]]></sourcecode>
        </figure>
      </section>
      <section anchor="http3datagram">
        <name>HTTP3Datagram</name>
        <t>The generic <tt>$HTTP3Datagram</tt> is defined here as a CDDL "type socket" extension
point. It can be extended to support additional HTTP/3 datagram types. This
document intentionally does not define any specific qlog schemas for specific
HTTP/3 Datagram types.</t>
        <figure anchor="h3-datagram-def">
          <name>HTTP3Datagram type socket definition</name>
          <artwork><![CDATA[
; The HTTP3Datagram is any key-value map (e.g., JSON object)
$HTTP3Datagram /= {
    * text => any
}
]]></artwork>
        </figure>
        <section anchor="http3dataframe">
          <name>HTTP3DataFrame</name>
          <figure anchor="h3dataframe-def">
            <name>HTTP3DataFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3DataFrame = {
    frame_type: "data"
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3headersframe">
          <name>HTTP3HeadersFrame</name>
          <t>The payload of an HTTP/3 HEADERS frame is the QPACK-encoding of an HTTP field
section; see <xref section="7.2.2" sectionFormat="of" target="RFC9114"/>. <tt>HTTP3HeaderFrame</tt>, in contrast,
contains the HTTP field section without QPACK encoding.</t>
          <figure anchor="h3field-def">
            <name>HTTP3HTTPField definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3HTTPField = {
    ? name: text
    ? name_bytes: hexstring
    ? value: text
    ? value_bytes: hexstring
}
]]></sourcecode>
          </figure>
          <figure anchor="h3-headersframe-def">
            <name>HTTP3HeadersFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3HeadersFrame = {
    frame_type: "headers"
    headers: [* HTTP3HTTPField]
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
          <t>For example, the HTTP field section</t>
          <artwork><![CDATA[
:path: /index.html
:method: GET
:authority: example.org
:scheme: https
]]></artwork>
          <t>would be represented in a JSON serialization as:</t>
          <figure anchor="h3-headersframe-ex">
            <name>HTTP3HeadersFrame example</name>
            <artwork><![CDATA[
headers: [
  {
    "name": ":path",
    "value": "/"
  },
  {
    "name": ":method",
    "value": "GET"
  },
  {
    "name": ":authority",
    "value": "example.org"
  },
  {
    "name": ":scheme",
    "value": "https"
  }
]
]]></artwork>
          </figure>
          <t><xref section="4.2" sectionFormat="of" target="RFC9114"/> and <xref section="5.1" sectionFormat="of" target="RFC9110"/> define rules for the
characters used in HTTP field sections names and values. Characters outside the
range are invalid and result in the message being treated as malformed. It can
however be useful to also log these invalid HTTP fields. Characters in the
allowed range can be safely logged by the text type used in the <tt>name</tt> and
<tt>value</tt> fields of <tt>HTTP3HTTPField</tt>. Characters outside the range are unsafe for the
text type and need to be logged using the <tt>name_bytes</tt> and <tt>value_bytes</tt> field.
An instance of <tt>HTTP3HTTPField</tt> <bcp14>MUST</bcp14> include either the <tt>name</tt> or <tt>name_bytes</tt>
field and <bcp14>MAY</bcp14> include both. An <tt>HTTP3HTTPField</tt> <bcp14>MAY</bcp14> include a <tt>value</tt> or
<tt>value_bytes</tt> field or neither.</t>
        </section>
        <section anchor="http3cancelpushframe">
          <name>HTTP3CancelPushFrame</name>
          <figure anchor="h3-cancelpushframe-def">
            <name>HTTP3CancelPushFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3CancelPushFrame = {
    frame_type: "cancel_push"
    push_id: uint64
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3settingsframe">
          <name>HTTP3SettingsFrame</name>
          <t>The settings field can contain zero or more entries. Each setting has a name
field, which corresponds to Setting Name as defined (or as would be defined if
registered) in the "HTTP/3 Settings" registry maintained at
<eref target="https://www.iana.org/assignments/http3-parameters">https://www.iana.org/assignments/http3-parameters</eref>.</t>
          <t>An endpoint that receives unknown settings is not able to log a specific name.
Instead, the name value of "unknown" can be used and the value captured in the
<tt>name_bytes</tt> field; a numerical value without variable-length integer encoding.</t>
          <figure anchor="h3settingsframe-def">
            <name>HTTP3SettingsFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3SettingsFrame = {
    frame_type: "settings"
    settings: [* HTTP3Setting]
    ? raw: RawInfo
}

HTTP3Setting = {
    ? name: $HTTP3SettingsName
    ; only when name === "unknown"
    ? name_bytes: uint64

    value: uint64
}

$HTTP3SettingsName /= "settings_qpack_max_table_capacity" /
                   "settings_max_field_section_size" /
                   "settings_qpack_blocked_streams" /
                   "settings_enable_connect_protocol" /
                   "settings_h3_datagram" /
                   "reserved" /
                   "unknown"
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3pushpromiseframe">
          <name>HTTP3PushPromiseFrame</name>
          <figure anchor="h3pushpromiseframe-def">
            <name>HTTP3PushPromiseFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3PushPromiseFrame = {
    frame_type: "push_promise"
    push_id: uint64
    headers: [* HTTP3HTTPField]
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3goawayframe">
          <name>HTTP3GoAwayFrame</name>
          <figure anchor="h3goawayframe-def">
            <name>HTTP3GoawayFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3GoawayFrame = {
    frame_type: "goaway"

    ; Either stream_id or push_id.
    ; This is implicit from the sender of the frame
    id: uint64
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3maxpushidframe">
          <name>HTTP3MaxPushIDFrame</name>
          <figure anchor="h3maxpushidframe-def">
            <name>HTTP3MaxPushIDFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3MaxPushIDFrame = {
    frame_type: "max_push_id"
    push_id: uint64
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3priorityupdateframe">
          <name>HTTP3PriorityUpdateFrame</name>
          <t>The PRIORITY_UPDATE frame is defined in <xref target="RFC9218"/>.</t>
          <figure anchor="h3priorityupdateframe-def">
            <name>HTTP3PriorityUpdateFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3PriorityUpdateFrame = {
    frame_type: "priority_update"

    ; if the prioritized element is a request stream
    ? stream_id: uint64

    ; if the prioritized element is a push stream
    ? push_id: uint64

    priority_field_value: HTTP3Priority
    ? raw: RawInfo
}

; The priority value in ASCII text, encoded using Structured Fields
; Example: u=5, i
HTTP3Priority = text
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3reservedframe">
          <name>HTTP3ReservedFrame</name>
          <t>The frame_type_bytes field is the numerical value without variable-length
integer encoding.</t>
          <figure anchor="h3reservedframe-def">
            <name>HTTP3ReservedFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3ReservedFrame = {
    frame_type: "reserved"
    frame_type_bytes: uint64
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3unknownframe">
          <name>HTTP3UnknownFrame</name>
          <t>The frame_type_bytes field is the numerical value without variable-length
integer encoding.</t>
          <figure anchor="h3unknownframe-def">
            <name>HTTP3UnknownFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3UnknownFrame = {
    frame_type: "unknown"
    frame_type_bytes: uint64
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="http3applicationerror">
          <name>HTTP3ApplicationError</name>
          <figure anchor="h3-applicationerror-def">
            <name>HTTP3ApplicationError definition</name>
            <sourcecode type="cddl"><![CDATA[
HTTP3ApplicationError = "http_no_error" /
                       "http_general_protocol_error" /
                       "http_internal_error" /
                       "http_stream_creation_error" /
                       "http_closed_critical_stream" /
                       "http_frame_unexpected" /
                       "http_frame_error" /
                       "http_excessive_load" /
                       "http_id_error" /
                       "http_settings_error" /
                       "http_missing_settings" /
                       "http_request_rejected" /
                       "http_request_cancelled" /
                       "http_request_incomplete" /
                       "http_early_response" /
                       "http_connect_error" /
                       "http_version_fallback"
]]></sourcecode>
          </figure>
          <t>The HTTP3ApplicationError extends the general $ApplicationError
definition in the qlog QUIC document, see <xref target="QLOG-QUIC"/>.</t>
          <sourcecode type="cddl"><![CDATA[
; ensure HTTP errors are properly validated in QUIC events as well
; e.g., QUIC's ConnectionClose Frame
$ApplicationError /= HTTP3ApplicationError
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="security-and-privacy-considerations">
      <name>Security and Privacy Considerations</name>
      <t>The security and privacy considerations discussed in <xref target="QLOG-MAIN"/> apply to this
document as well.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers a new entry in the "qlog event schema URIs" registry (created in <xref section="15" sectionFormat="of" target="QLOG-MAIN"/>).</t>
      <dl>
        <dt>Event schema URI:</dt>
        <dd>
          <t>urn:ietf:params:qlog:events:http3</t>
        </dd>
        <dt>Namespace</dt>
        <dd>
          <t>http3</t>
        </dd>
        <dt>Event Types</dt>
        <dd>
          <t>parameters_set,
parameters_restored,
stream_type_set,
priority_updated,
frame_created,
frame_parsed,
datagram_created,
datagram_parsed,
push_resolved</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>Event definitions related to the HTTP/3 application protocol.</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This Document</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <displayreference target="RFC9110" to="HTTP"/>
    <displayreference target="RFC9114" to="HTTP/3"/>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC9110">
        <front>
          <title>HTTP Semantics</title>
          <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
          <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
          <date month="June" year="2022"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
            <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="97"/>
        <seriesInfo name="RFC" value="9110"/>
        <seriesInfo name="DOI" value="10.17487/RFC9110"/>
      </reference>
      <reference anchor="RFC9114">
        <front>
          <title>HTTP/3</title>
          <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
          <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="QLOG-MAIN">
        <front>
          <title>qlog: Structured Logging for Network Protocols</title>
          <author fullname="Robin Marx" initials="R." surname="Marx">
            <organization>Akamai</organization>
          </author>
          <author fullname="Luca Niccolini" initials="L." surname="Niccolini">
            <organization>Meta</organization>
          </author>
          <author fullname="Marten Seemann" initials="M." surname="Seemann">
         </author>
          <author fullname="Lucas Pardue" initials="L." surname="Pardue">
            <organization>Cloudflare</organization>
          </author>
          <date day="7" month="July" year="2025"/>
          <abstract>
            <t>   qlog provides extensible structured logging for network protocols,
   allowing for easy sharing of data that benefits common debug and
   analysis methods and tooling.  This document describes key concepts
   of qlog: formats, files, traces, events, and extension points.  This
   definition includes the high-level log file schemas, and generic
   event schemas.  Requirements and guidelines for creating protocol-
   specific event schemas are also presented.  All schemas are defined
   independent of serialization format, allowing logs to be represented
   in various ways such as JSON, CSV, or protobuf.

Note to Readers

      Note to RFC editor: Please remove this section before publication.

   Feedback and discussion are welcome at https://github.com/quicwg/qlog
   (https://github.com/quicwg/qlog).  Readers are advised to refer to
   the "editor's draft" at that URL for an up-to-date version of this
   document.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-main-schema-12"/>
      </reference>
      <reference anchor="QLOG-QUIC">
        <front>
          <title>QUIC event definitions for qlog</title>
          <author fullname="Robin Marx" initials="R." surname="Marx">
            <organization>Akamai</organization>
          </author>
          <author fullname="Luca Niccolini" initials="L." surname="Niccolini">
            <organization>Meta</organization>
          </author>
          <author fullname="Marten Seemann" initials="M." surname="Seemann">
         </author>
          <author fullname="Lucas Pardue" initials="L." surname="Pardue">
            <organization>Cloudflare</organization>
          </author>
          <date day="7" month="July" year="2025"/>
          <abstract>
            <t>   This document describes a qlog event schema containing concrete qlog
   event definitions and their metadata for the core QUIC protocol and
   selected extensions.

Note to Readers

      Note to RFC editor: Please remove this section before publication.

   Feedback and discussion are welcome at https://github.com/quicwg/qlog
   (https://github.com/quicwg/qlog).  Readers are advised to refer to
   the "editor's draft" at that URL for an up-to-date version of this
   document.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-quic-events-11"/>
      </reference>
      <reference anchor="EXTENDED-CONNECT">
        <front>
          <title>Bootstrapping WebSockets with HTTP/3</title>
          <author fullname="R. Hamilton" initials="R." surname="Hamilton"/>
          <date month="June" year="2022"/>
          <abstract>
            <t>The mechanism for running the WebSocket Protocol over a single stream of an HTTP/2 connection is equally applicable to HTTP/3, but the HTTP-version-specific details need to be specified. This document describes how the mechanism is adapted for HTTP/3.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9220"/>
        <seriesInfo name="DOI" value="10.17487/RFC9220"/>
      </reference>
      <reference anchor="H3_PRIORITIZATION">
        <front>
          <title>Extensible Prioritization Scheme for HTTP</title>
          <author fullname="K. Oku" initials="K." surname="Oku"/>
          <author fullname="L. Pardue" initials="L." surname="Pardue"/>
          <date month="June" year="2022"/>
          <abstract>
            <t>This document describes a scheme that allows an HTTP client to communicate its preferences for how the upstream server prioritizes responses to its requests, and also allows a server to hint to a downstream intermediary how its responses should be prioritized when they are forwarded. This document defines the Priority header field for communicating the initial priority in an HTTP version-independent manner, as well as HTTP/2 and HTTP/3 frames for reprioritizing responses. These share a common format structure that is designed to provide future extensibility.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9218"/>
        <seriesInfo name="DOI" value="10.17487/RFC9218"/>
      </reference>
      <reference anchor="H3-DATAGRAM">
        <front>
          <title>HTTP Datagrams and the Capsule Protocol</title>
          <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
          <author fullname="L. Pardue" initials="L." surname="Pardue"/>
          <date month="August" year="2022"/>
          <abstract>
            <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
            <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
            <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9297"/>
        <seriesInfo name="DOI" value="10.17487/RFC9297"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
      <reference anchor="CDDL">
        <front>
          <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
          <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
          <author fullname="C. Vigano" initials="C." surname="Vigano"/>
          <author fullname="C. Bormann" initials="C." surname="Bormann"/>
          <date month="June" year="2019"/>
          <abstract>
            <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8610"/>
        <seriesInfo name="DOI" value="10.17487/RFC8610"/>
      </reference>
      <reference anchor="RFC9218">
        <front>
          <title>Extensible Prioritization Scheme for HTTP</title>
          <author fullname="K. Oku" initials="K." surname="Oku"/>
          <author fullname="L. Pardue" initials="L." surname="Pardue"/>
          <date month="June" year="2022"/>
          <abstract>
            <t>This document describes a scheme that allows an HTTP client to communicate its preferences for how the upstream server prioritizes responses to its requests, and also allows a server to hint to a downstream intermediary how its responses should be prioritized when they are forwarded. This document defines the Priority header field for communicating the initial priority in an HTTP version-independent manner, as well as HTTP/2 and HTTP/3 frames for reprioritizing responses. These share a common format structure that is designed to provide future extensibility.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9218"/>
        <seriesInfo name="DOI" value="10.17487/RFC9218"/>
      </reference>
      <reference anchor="RFC9297">
        <front>
          <title>HTTP Datagrams and the Capsule Protocol</title>
          <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
          <author fullname="L. Pardue" initials="L." surname="Pardue"/>
          <date month="August" year="2022"/>
          <abstract>
            <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
            <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
            <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9297"/>
        <seriesInfo name="DOI" value="10.17487/RFC9297"/>
      </reference>
    </references>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Much of the initial work by Robin Marx was done at the Hasselt and KU Leuven
Universities.</t>
      <t>Thanks to Jana Iyengar, Brian Trammell, Dmitri Tikhonov, Stephen Petrides, Jari
Arkko, Marcus Ihlar, Victor Vasiliev, Mirja Kuehlewind, Jeremy Laine, Kazu
Yamamoto, Christian Huitema, Hugo Landau, Kazuho Oku, and Jonathan Lennox for
their feedback and suggestions.</t>
    </section>
    <section numbered="false" removeInRFC="true" anchor="change-log">
      <name>Change Log</name>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-11">
        <name>Since draft-ietf-quic-qlog-h3-events-11:</name>
        <ul spacing="normal">
          <li>Replaced all length fields with raw.length (#495)</li>
          <li>Renamed owner to initiator (#498)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-09">
        <name>Since draft-ietf-quic-qlog-h3-events-09:</name>
        <ul spacing="normal">
          <li>Several editorial changes</li>
          <li>Consistent use of RawInfo and _bytes fields to log raw data (#450)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-08">
        <name>Since draft-ietf-quic-qlog-h3-events-08:</name>
        <ul spacing="normal">
          <li>Removed individual categories and put every event in the single <tt>http3</tt> event
schema namespace. Major change (#439)</li>
          <li>Changed protocol id from <tt>HTTP3</tt> to <tt>HTTP/3</tt> (#428)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-07">
        <name>Since draft-ietf-quic-qlog-h3-events-07:</name>
        <ul spacing="normal">
          <li>TODO (we forgot...)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-06">
        <name>Since draft-ietf-quic-qlog-h3-events-06:</name>
        <ul spacing="normal">
          <li>ProtocolEventBody is now called ProtocolEventData (#352)</li>
          <li>Editorial changes (#402)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-05">
        <name>Since draft-ietf-quic-qlog-h3-events-05:</name>
        <ul spacing="normal">
          <li>Removed all qpack event definitions (#335)</li>
          <li>Various editorial changes</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-04">
        <name>Since draft-ietf-quic-qlog-h3-events-04:</name>
        <ul spacing="normal">
          <li>Renamed 'http' category to 'h3' (#300)</li>
          <li>H3HTTPField.value is now optional (#296)</li>
          <li>Added definitions for RFC9297 (HTTP/3 Datagram extension) (#310)</li>
          <li>Added definitions for RFC9218 (HTTP Extensible Prioritizations extension) (#312)</li>
          <li>Added definitions for RFC9220 (Extended Connect extension) (#325)</li>
          <li>Editorial and formatting changes (#298, #258, #299, #304, #327)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-03">
        <name>Since draft-ietf-quic-qlog-h3-events-03:</name>
        <ul spacing="normal">
          <li>Ensured consistent use of RawInfo to indicate raw wire bytes (#243)</li>
          <li>Changed HTTPStreamTypeSet:raw_stream_type to stream_type_value (#54)</li>
          <li>Changed HTTPUnknownFrame:raw_frame_type to frame_type_value (#54)</li>
          <li>Renamed max_header_list_size to max_field_section_size (#282)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-02">
        <name>Since draft-ietf-quic-qlog-h3-events-02:</name>
        <ul spacing="normal">
          <li>Renamed HTTPStreamType data to request (#222)</li>
          <li>Added HTTPStreamType value unknown (#227)</li>
          <li>Added HTTPUnknownFrame (#224)</li>
          <li>Replaced old and new fields with stream_type in HTTPStreamTypeSet (#240)</li>
          <li>Changed HTTPFrame to a CDDL plug type (#257)</li>
          <li>Moved data definitions out of the appendix into separate sections</li>
          <li>Added overview Table of Contents</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-01">
        <name>Since draft-ietf-quic-qlog-h3-events-01:</name>
        <ul spacing="normal">
          <li>No changes - new draft to prevent expiration</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-quic-qlog-h3-events-00">
        <name>Since draft-ietf-quic-qlog-h3-events-00:</name>
        <ul spacing="normal">
          <li>Change the data definition language from TypeScript to CDDL (#143)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-marx-qlog-event-definitions-quic-h3-02">
        <name>Since draft-marx-qlog-event-definitions-quic-h3-02:</name>
        <ul spacing="normal">
          <li>These changes were done in preparation of the adoption of the drafts by the QUIC
working group (#137)</li>
          <li>Split QUIC and HTTP/3 events into two separate documents</li>
          <li>Moved RawInfo, Importance, Generic events and Simulation events to the main
schema document.</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-marx-qlog-event-definitions-quic-h3-01">
        <name>Since draft-marx-qlog-event-definitions-quic-h3-01:</name>
        <t>Major changes:</t>
        <ul spacing="normal">
          <li>Moved data_moved from http to transport. Also made the "from" and "to" fields
flexible strings instead of an enum (#111,#65)</li>
          <li>Moved packet_type fields to PacketHeader. Moved packet_size field out of
PacketHeader to RawInfo:length (#40)</li>
          <li>Made events that need to log packet_type and packet_number use a header field
instead of logging these fields individually</li>
          <li>Added support for logging retry, stateless reset and initial tokens (#94,#86,#117)</li>
          <li>Moved separate general event categories into a single category "generic" (#47)</li>
          <li>Added "transport:connection_closed" event (#43,#85,#78,#49)</li>
          <li>Added version_information and alpn_information events (#85,#75,#28)</li>
          <li>Added parameters_restored events to help clarify 0-RTT behaviour (#88)</li>
        </ul>
        <t>Smaller changes:</t>
        <ul spacing="normal">
          <li>Merged loss_timer events into one loss_timer_updated event</li>
          <li>Field data types are now strongly defined (#10,#39,#36,#115)</li>
          <li>Renamed qpack instruction_received and instruction_sent to instruction_created
and instruction_parsed (#114)</li>
          <li>Updated qpack:dynamic_table_updated.update_type. It now has the value "inserted"
instead of "added" (#113)</li>
          <li>Updated qpack:dynamic_table_updated. It now has an "owner" field to
differentiate encoder vs decoder state (#112)</li>
          <li>Removed push_allowed from http:parameters_set (#110)</li>
          <li>Removed explicit trigger field indications from events, since this was moved to
be a generic property of the "data" field (#80)</li>
          <li>Updated transport:connection_id_updated to be more in line with other similar
events. Also dropped importance from Core to Base (#45)</li>
          <li>Added length property to PaddingFrame (#34)</li>
          <li>Added packet_number field to transport:frames_processed (#74)</li>
          <li>Added a way to generically log packet header flags (first 8 bits) to
PacketHeader</li>
          <li>Added additional guidance on which events to log in which situations (#53)</li>
          <li>Added "simulation:scenario" event to help indicate simulation details</li>
          <li>Added "packets_acked" event (#107)</li>
          <li>Added "datagram_ids" to the datagram_X and packet_X events to allow tracking of
coalesced QUIC packets (#91)</li>
          <li>Extended connection_state_updated with more fine-grained states (#49)</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-marx-qlog-event-definitions-quic-h3-00">
        <name>Since draft-marx-qlog-event-definitions-quic-h3-00:</name>
        <ul spacing="normal">
          <li>Event and category names are now all lowercase</li>
          <li>Added many new events and their definitions</li>
          <li>"type" fields have been made more specific (especially important for PacketType
fields, which are now called packet_type instead of type)</li>
          <li>Events are given an importance indicator (issue #22)</li>
          <li>Event names are more consistent and use past tense (issue #21)</li>
          <li>Triggers have been redefined as properties of the "data" field and updated for most events (issue #23)</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
kMZJFpJzAAA=

-->

</rfc>
