<?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-08" 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-08"/>
    <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="2024" month="July" day="08"/>
    <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>
      <t>Concrete examples of integrations of this schema in
various programming languages can be found at
<eref target="https://github.com/quiclog/qlog/">https://github.com/quiclog/qlog/</eref>.</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 schema namespace <tt>http</tt> is defined, containing the category <tt>h3</tt>; see
<xref target="schema-def"/>. In this category 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 datastructures. 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">h3:parameters_set</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-parametersset"/></td>
          </tr>
          <tr>
            <td align="left">h3:parameters_restored</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-parametersrestored"/></td>
          </tr>
          <tr>
            <td align="left">h3:stream_type_set</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-streamtypeset"/></td>
          </tr>
          <tr>
            <td align="left">h3:priority_updated</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-priorityupdated"/></td>
          </tr>
          <tr>
            <td align="left">h3:frame_created</td>
            <td align="left">Core</td>
            <td align="left">
              <xref target="h3-framecreated"/></td>
          </tr>
          <tr>
            <td align="left">h3:frame_parsed</td>
            <td align="left">Core</td>
            <td align="left">
              <xref target="h3-frameparsed"/></td>
          </tr>
          <tr>
            <td align="left">h3:datagram_created</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-datagramcreated"/></td>
          </tr>
          <tr>
            <td align="left">h3:datagram_parsed</td>
            <td align="left">Base</td>
            <td align="left">
              <xref target="h3-datagramparsed"/></td>
          </tr>
          <tr>
            <td align="left">h3:push_resolved</td>
            <td align="left">Extra</td>
            <td align="left">
              <xref target="h3-pushresolved"/></td>
          </tr>
        </tbody>
      </table>
      <t>When any event from this document is included in a qlog trace, the
"protocol_type" qlog array field <bcp14>MUST</bcp14> contain an entry with the value "HTTP3":</t>
      <figure anchor="protocoltype-extension-h3">
        <name>ProtocolType extension for HTTP/3</name>
        <sourcecode type="cddl"><![CDATA[
$ProtocolType /= "HTTP3"
]]></sourcecode>
      </figure>
      <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, category,
type, data, group_id, protocol_type, importance, RawInfo, and time-related
fields.</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>http</tt> namespace and
<tt>h3</tt> category identifiers. The URI is <tt>urn:ietf:params:qlog:events:http#h3</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 category with the URI <tt>urn:ietf:params:qlog:events:http#h3</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:http#h3-07</tt>.</t>
        <t>The category 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>H3EventData definition and ProtocolEventData extension</name>
        <sourcecode type="cddl"><![CDATA[
H3EventData = H3ParametersSet /
              H3ParametersRestored /
              H3StreamTypeSet /
              H3PriorityUpdated /
              H3FrameCreated /
              H3FrameParsed /
              H3DatagramCreated /
              H3DatagramParsed /
              H3PushResolved

$ProtocolEventData /= H3EventData
]]></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>
      <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; see
<xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</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>H3ParametersSet definition</name>
          <sourcecode type="cddl"><![CDATA[
H3ParametersSet = {
    ? 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

    * $$h3-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; see <xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</t>
        <figure anchor="h3-parametersrestored-def">
          <name>H3ParametersRestored definition</name>
          <sourcecode type="cddl"><![CDATA[
H3ParametersRestored = {
    ; 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

    * $$h3-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; see <xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</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>$H3StreamType</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>H3StreamTypeSet definition</name>
          <sourcecode type="cddl"><![CDATA[
H3StreamTypeSet = {
    ? owner: Owner
    stream_id: uint64
    stream_type: $H3StreamType

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

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

    * $$h3-streamtypeset-extension
}

$H3StreamType /=  "request" /
                  "control" /
                  "push" /
                  "reserved" /
                  "unknown" /
                  "qpack_encode" /
                  "qpack_decode"
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3-priorityupdated">
        <name>priority_updated</name>
        <t>Emitted when the priority of a request stream or push stream is initialized or
updated through mechanisms defined in <xref target="RFC9218"/>. 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 event has Base importance level; see <xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</t>
        <figure anchor="h3-priorityupdated-def">
          <name>H3PriorityUpdated definition</name>
          <sourcecode type="cddl"><![CDATA[
H3PriorityUpdated = {
    ; if the prioritized element is a request stream
    ? stream_id: uint64

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

    ? old: H3Priority
    new: H3Priority

    * $$h3-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; see <xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</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>H3FrameCreated definition</name>
          <sourcecode type="cddl"><![CDATA[
H3FrameCreated = {
    stream_id: uint64
    ? length: uint64
    frame: $H3Frame
    ? raw: RawInfo

    * $$h3-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; see <xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</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>H3FrameParsed definition</name>
          <sourcecode type="cddl"><![CDATA[
H3FrameParsed = {
    stream_id: uint64
    ? length: uint64
    frame: $H3Frame
    ? 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; see <xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</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>H3DatagramCreated definition</name>
          <sourcecode type="cddl"><![CDATA[
H3DatagramCreated = {
    quarter_stream_id: uint64
    ? datagram: $H3Datagram
    ? raw: RawInfo

    * $$h3-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; see <xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</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>H3DatagramParsed definition</name>
          <sourcecode type="cddl"><![CDATA[
H3DatagramParsed = {
    quarter_stream_id: uint64
    ? datagram: $H3Datagram
    ? raw: RawInfo

    * $$h3-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; see <xref section="9.2" sectionFormat="of" target="QLOG-MAIN"/>.</t>
        <figure anchor="h3-pushresolved-def">
          <name>H3PushResolved definition</name>
          <sourcecode type="cddl"><![CDATA[
H3PushResolved = {
    ? push_id: uint64

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

    * $$h3-pushresolved-extension
}

H3PushDecision = "claimed" /
                 "abandoned"
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="http3-data-field-definitions">
      <name>HTTP/3 Data Field Definitions</name>
      <t>The following data field 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="h3frame">
        <name>H3Frame</name>
        <t>The generic <tt>$H3Frame</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>H3Frame type socket definition</name>
          <artwork><![CDATA[
; The H3Frame is any key-value map (e.g., JSON object)
$H3Frame /= {
    * text => any
}
]]></artwork>
        </figure>
        <t>The HTTP/3 frame types defined in this document are as follows:</t>
        <figure anchor="h3baseframe-def">
          <name>H3BaseFrames definition</name>
          <sourcecode type="cddl"><![CDATA[
H3BaseFrames = H3DataFrame /
               H3HeadersFrame /
               H3CancelPushFrame /
               H3SettingsFrame /
               H3PushPromiseFrame /
               H3GoawayFrame /
               H3MaxPushIDFrame /
               H3ReservedFrame /
               H3UnknownFrame

$H3Frame /= H3BaseFrames
]]></sourcecode>
        </figure>
      </section>
      <section anchor="h3datagram">
        <name>H3Datagram</name>
        <t>The generic <tt>$H3Datagram</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>H3Datagram type socket definition</name>
          <artwork><![CDATA[
; The H3Datagram is any key-value map (e.g., JSON object)
$H3Datagram /= {
    * text => any
}
]]></artwork>
        </figure>
        <section anchor="h3dataframe">
          <name>H3DataFrame</name>
          <figure anchor="h3dataframe-def">
            <name>H3DataFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3DataFrame = {
    frame_type: "data"
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="h3headersframe">
          <name>H3HeadersFrame</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>H3HeaderFrame</tt>, in contrast,
contains the HTTP field section without QPACK encoding.</t>
          <figure anchor="h3field-def">
            <name>H3HTTPField definition</name>
            <sourcecode type="cddl"><![CDATA[
H3HTTPField = {
    ? name: text
    ? name_bytes: hexstring
    ? value: text
    ? value_bytes: hexstring
}
]]></sourcecode>
          </figure>
          <figure anchor="h3-headersframe-def">
            <name>H3HeadersFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3HeadersFrame = {
    frame_type: "headers"
    headers: [* H3HTTPField]
}
]]></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>H3HeadersFrame 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>H3HTTPField</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>H3HTTPField</tt> <bcp14>MUST</bcp14> include either the <tt>name</tt> or <tt>name_bytes</tt>
field and <bcp14>MAY</bcp14> include both. An <tt>H3HTTPField</tt> <bcp14>MAY</bcp14> include a <tt>value</tt> or
<tt>value_bytes</tt> field or neither.</t>
        </section>
        <section anchor="h3cancelpushframe">
          <name>H3CancelPushFrame</name>
          <figure anchor="h3-cancelpushframe-def">
            <name>H3CancelPushFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3CancelPushFrame = {
    frame_type: "cancel_push"
    push_id: uint64
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="h3settingsframe">
          <name>H3SettingsFrame</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>H3SettingsFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3SettingsFrame = {
    frame_type: "settings"
    settings: [* H3Setting]
}

H3Setting = {
    ? name: $H3SettingsName
    ; only when name === "unknown"
    ? name_bytes: uint64

    value: uint64
}

$H3SettingsName /= "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="h3pushpromiseframe">
          <name>H3PushPromiseFrame</name>
          <figure anchor="h3pushpromiseframe-def">
            <name>H3PushPromiseFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3PushPromiseFrame = {
    frame_type: "push_promise"
    push_id: uint64
    headers: [* H3HTTPField]
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="h3goawayframe">
          <name>H3GoAwayFrame</name>
          <figure anchor="h3goawayframe-def">
            <name>H3GoawayFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3GoawayFrame = {
    frame_type: "goaway"

    ; Either stream_id or push_id.
    ; This is implicit from the sender of the frame
    id: uint64
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="h3maxpushidframe">
          <name>H3MaxPushIDFrame</name>
          <figure anchor="h3maxpushidframe-def">
            <name>H3MaxPushIDFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3MaxPushIDFrame = {
    frame_type: "max_push_id"
    push_id: uint64
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="h3priorityupdateframe">
          <name>H3PriorityUpdateFrame</name>
          <t>The PRIORITY_UPDATE frame is defined in <xref target="RFC9218"/>.</t>
          <figure anchor="h3priorityupdateframe-def">
            <name>h3priorityupdateframe definition</name>
            <sourcecode type="cddl"><![CDATA[
H3PriorityUpdateFrame = {
    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: H3Priority
}

; The priority value in ASCII text, encoded using Structured Fields
; Example: u=5, i
H3Priority = text
]]></sourcecode>
          </figure>
        </section>
        <section anchor="h3reservedframe">
          <name>H3ReservedFrame</name>
          <figure anchor="h3reservedframe-def">
            <name>H3ReservedFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3ReservedFrame = {
    frame_type: "reserved"
    ? length: uint64
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="h3unknownframe">
          <name>H3UnknownFrame</name>
          <t>The frame_type_bytes field is the numerical value without variable-length
integer encoding.</t>
          <figure anchor="h3unknownframe-def">
            <name>UnknownFrame definition</name>
            <sourcecode type="cddl"><![CDATA[
H3UnknownFrame = {
    frame_type: "unknown"
    frame_type_bytes: uint64
    ? raw: RawInfo
}
]]></sourcecode>
          </figure>
        </section>
        <section anchor="h3applicationerror">
          <name>H3ApplicationError</name>
          <figure anchor="h3-applicationerror-def">
            <name>H3ApplicationError definition</name>
            <sourcecode type="cddl"><![CDATA[
H3ApplicationError = "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 H3ApplicationError 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 /= H3ApplicationError
]]></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 category URIs" registry.</t>
      <dl>
        <dt>Event Category URI:</dt>
        <dd>
          <t>urn:ietf:params:qlog:events:http#h3</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>Main logging schema 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="4" month="March" year="2024"/>
          <abstract>
            <t>   This document defines qlog, an extensible high-level schema for a
   standardized logging format.  It allows easy sharing of data,
   benefitting common debug and analysis methods and tooling.  The high-
   level schema is independent of protocol; separate documents extend
   qlog for protocol-specific data.  The schema is also independent of
   serialization format, allowing logs to be represented in many 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-08"/>
      </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="4" month="March" year="2024"/>
          <abstract>
            <t>   This document describes concrete qlog event definitions and their
   metadata for QUIC events.  These events can then be embedded in the
   higher level schema defined in [QLOG-MAIN].

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-07"/>
      </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-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:
H4sIAAAAAAAAA+0923LbRpbv+IoO5SpLKZLWxVdmnB1FUmwlsq2R5JnJZlN0
k2iSGIMAA4C6xPF8y77uP+zTzo/tuXWjGwQtOamZfVlXWSKBvpw+fe7ndKvX
60VVUqVmoF5eXJw+2FM/p/lUmUuTVSo2kyRLqiTPyijOx5meQ7O40JOql5hq
0vt5mYx72L432+tRl7K3/TQa68pM8+JmoMoqjqJkUQxUVSzLand7+9n2bqQL
owfqotBZuciLKrrKi/fTIl8uBupPb48PovfmBh7FA3WcVabITNU7xDmjqKx0
Fg91mmcAx40po0UyUD9W+birALwkiwGCriphzMJMSvh0M5cPVZGM4dU4ny+0
fJgjuF2VZGmSmZ+iSC+rWV4MIqV68F/Bi3KgzvrqlS6u6QEv/ywfJVn9MC+m
A7X/Xs91Qt8NfEgHqphDgz9qet6HyehdkSOaTZxUeRFOc9JXr5PxOAdQEm+u
k+VYN17QfK9Mpf3Z0sy2+eMcXt1hwld9dW6gd5Z508GiKpMFL2SCOb0p+cUf
p/hw7SRuRae6iJemsZzSf0yLOUjzZTxJgSiCJWHbP9LPBXVony/KckB1lVwa
3Lizbw+e7exsD6hdnJSLVN8wXUfu7cOWtw/28P2fTt686L3aP37NLY57h/0G
lQNoWa8czwBG1wEpdm0H+sSMAXyQTWpgo16vp/QICBPoMYouZkmJNLycO74z
pdI+M/K8QLlZBWAk2RQ/jgtTGW5QKhheVTMTjfPCWG5eFDnwR54q4BxVmtSM
KxMrc43biXzdZ0iyvDLD1/ijyodnRsemAIi/VvhIVTniTlA+UKep0aVRhZnn
l/ASIS9hWBhNjcwE514sR2kCUgAewfjfGhOP9Pg9gQB4Hy9LnFrBjqsrk8K+
GqWr6MdZVS3KwYMH06SaLUe43w8Qf1fTB4iFnzY//X6rrwRuHDjS8WVSwkoB
dhABpsAPgBvV4VXcL1mOdWBmeA4/3p6dEAJ1ppaLXpX3YpBi6hLGA1ijfMIL
tVsEyzpw2L/W80UK2wWNEpBY04JWTt8ZO7xzSRZd6iLJlyXuCrSaz3EXU51N
l3oK/ccaMQhQLAFRn8AIrJaW/GAtTlyLLdnfeRLHqYmiDZSpRR4vab8+h+42
P3w4l11+iitz3PLx41Z0O1GqVqL88EGY8uPHgECjmkBx4i+O/npx9Prw6LB3
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
mMgqcjcT8ND/AmQmgc8rbgAA

-->

</rfc>
