<?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-11" 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-11"/>
    <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="July" day="07"/>
    <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 "owner" 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 = {
    ? owner: Owner

    ; 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 = {
    ? owner: Owner
    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
    ? length: uint64
    frame: $HTTP3Frame
    ? raw: RawInfo

    * $$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
    ? length: uint64
    frame: $HTTP3Frame
    ? raw: RawInfo

    * $$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="owner">
        <name>Owner</name>
        <figure anchor="owner-def">
          <name>Owner definition</name>
          <sourcecode type="cddl"><![CDATA[
Owner = "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="17" month="March" 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.

   Concrete examples of integrations of this schema in various
   programming languages can be found at https://github.com/quiclog/
   qlog/ (https://github.com/quiclog/qlog/).

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-main-schema-11"/>
      </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="17" month="March" 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.

   Concrete examples of integrations of this schema in various
   programming languages can be found at https://github.com/quiclog/
   qlog/ (https://github.com/quiclog/qlog/).

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-quic-events-10"/>
      </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 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-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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
H7SQFVz7cgAA

-->

</rfc>
