@@ -1228,7 +1228,7 @@ <h2 id="name-copyright-notice">
12281228 < p id ="section-toc.1-1.7.2.1.1 "> < a href ="#section-7.1 " class ="auto internal xref "> 7.1</ a > . < a href ="#name-timestamps " class ="internal xref "> Timestamps</ a > </ p >
12291229</ li >
12301230 < li class ="compact toc ulBare ulEmpty " id ="section-toc.1-1.7.2.2 ">
1231- < p id ="section-toc.1-1.7.2.2.1 "> < a href ="#section-7.2 " class ="auto internal xref "> 7.2</ a > . < a href ="#name-path " class ="internal xref "> Path </ a > </ p >
1231+ < p id ="section-toc.1-1.7.2.2.1 "> < a href ="#section-7.2 " class ="auto internal xref "> 7.2</ a > . < a href ="#name-tuple " class ="internal xref "> Tuple </ a > </ p >
12321232</ li >
12331233 < li class ="compact toc ulBare ulEmpty " id ="section-toc.1-1.7.2.3 ">
12341234 < p id ="section-toc.1-1.7.2.3.1 "> < a href ="#section-7.3 " class ="auto internal xref "> 7.3</ a > . < a href ="#name-grouping " class ="internal xref "> Grouping</ a > </ p >
@@ -2086,7 +2086,7 @@ <h2 id="name-abstract-event-class">
20862086 time: float64
20872087 name: text
20882088 data: $ProtocolEventData
2089- ? path: PathID
2089+ ? tuple: TupleID
20902090 ? time_format: TimeFormat
20912091 ? group_id: GroupID
20922092 ? system_info: SystemInformation
@@ -2108,7 +2108,7 @@ <h2 id="name-abstract-event-class">
21082108the specific values and semantics of common fields, in particular the < code > name</ code > and
21092109< code > data</ code > fields. Furthermore, they can optionally add custom fields.< a href ="#section-7-4 " class ="pilcrow "> ¶</ a > </ p >
21102110< p id ="section-7-5 "> Each qlog event < span class ="bcp14 "> MAY</ span > contain the optional fields: "time_format"
2111- (< a href ="#time-based-fields " class ="auto internal xref "> Section 7.1</ a > ), path (< a href ="#path -field " class ="auto internal xref "> Section 7.2</ a > ) "trigger" (< a href ="#trigger-field " class ="auto internal xref "> Section 8.2.1</ a > ),
2111+ (< a href ="#time-based-fields " class ="auto internal xref "> Section 7.1</ a > ), tuple (< a href ="#tuple -field " class ="auto internal xref "> Section 7.2</ a > ) "trigger" (< a href ="#trigger-field " class ="auto internal xref "> Section 8.2.1</ a > ),
21122112and "group_id" (< a href ="#group-ids " class ="auto internal xref "> Section 7.3</ a > ).< a href ="#section-7-5 " class ="pilcrow "> ¶</ a > </ p >
21132113< p id ="section-7-6 "> Multiple events can appear in a Trace or TraceSeq and they might contain fields
21142114with identical values. It is possible to optimize out this duplication using
@@ -2347,40 +2347,40 @@ <h3 id="name-timestamps">
23472347</ div >
23482348</ section >
23492349</ div >
2350- < div id ="path -field ">
2350+ < div id ="tuple -field ">
23512351< section id ="section-7.2 ">
2352- < h3 id ="name-path ">
2353- < a href ="#section-7.2 " class ="section-number selfRef "> 7.2. </ a > < a href ="#name-path " class ="section-name selfRef "> Path </ a >
2352+ < h3 id ="name-tuple ">
2353+ < a href ="#section-7.2 " class ="section-number selfRef "> 7.2. </ a > < a href ="#name-tuple " class ="section-name selfRef "> Tuple </ a >
23542354 </ h3 >
2355- < p id ="section-7.2-1 "> A qlog event can be associated with a single " network path" (usually, but not
2356- always, identified by a 4 -tuple of IP addresses and ports) . In many cases, the
2357- path will be the same for all events in a given trace, and does not need to be
2358- logged explicitly with each event. In this case, the "path " field can be omitted
2359- (in which case the default value of "" is assumed) or reflected in
2355+ < p id ="section-7.2-1 "> A qlog event is typically associated with a single network " path", which is
2356+ usually aligned with a four -tuple of IP addresses and ports. In many cases, this
2357+ tuple will be the same for all events in a given trace, and does not need to be
2358+ logged explicitly with each event. In this case, the "tuple " field can be
2359+ omitted (in which case the default value of "" is assumed) or reflected in
23602360"common_fields" instead (see < a href ="#common-fields " class ="auto internal xref "> Section 7.5</ a > ).< a href ="#section-7.2-1 " class ="pilcrow "> ¶</ a > </ p >
23612361< p id ="section-7.2-2 "> However, in some situations, such as during QUIC's Connection Migration or when
23622362using Multipath features, it is useful to be able to split events across
2363- multiple (concurrent) paths.< a href ="#section-7.2-2 " class ="pilcrow "> ¶</ a > </ p >
2363+ multiple (concurrent) tuples and/or paths.< a href ="#section-7.2-2 " class ="pilcrow "> ¶</ a > </ p >
23642364< p id ="section-7.2-3 "> Definition:< a href ="#section-7.2-3 " class ="pilcrow "> ¶</ a > </ p >
2365- < span id ="name-pathid -definition "> </ span > < div id ="path -def ">
2365+ < span id ="name-tupleid -definition "> </ span > < div id ="tuple -def ">
23662366< figure id ="figure-21 ">
23672367 < div class ="lang-cddl sourcecode " id ="section-7.2-4.1 ">
23682368< pre >
2369- PathID = text .default ""
2369+ TupleID = text .default ""
23702370</ pre >
23712371</ div >
23722372< figcaption > < a href ="#figure-21 " class ="selfRef "> Figure 21</ a > :
2373- < a href ="#name-pathid -definition " class ="selfRef "> PathID definition</ a >
2373+ < a href ="#name-tupleid -definition " class ="selfRef "> TupleID definition</ a >
23742374 </ figcaption > </ figure >
23752375</ div >
2376- < p id ="section-7.2-5 "> The "path " field is an identifier that is associated with a single network path.
2377- This document intentionally does not define further how to choose this
2378- identifier's value per-path or how to potentially log other parameters that can
2379- be associated with such a path . This is left for other documents. Implementers
2380- are free to encode path information directly into the PathID or to log
2381- associated info in a separate event. For example, QUIC has the "path_assigned"
2382- event to couple the PathID value to a specific path configuration, see
2383- < span > [< a href ="#QLOG-QUIC " class ="cite xref "> QLOG-QUIC</ a > ]</ span > .< a href ="#section-7.2-5 " class ="pilcrow "> ¶</ a > </ p >
2376+ < p id ="section-7.2-5 "> The "tuple " field is an identifier that is associated with a single network
2377+ four-tuple. This document intentionally does not define further how to choose
2378+ this identifier's value per-tuple or how to potentially log other parameters
2379+ that can be associated with such a tuple . This is left for other documents.
2380+ Implementers are free to encode tuple information directly into the TupleID or
2381+ to log associated info in a separate event. For example, QUIC has the
2382+ "tuple_assigned" event to couple the TupleID value to a specific tuple
2383+ configuration, see < span > [< a href ="#QLOG-QUIC " class ="cite xref "> QLOG-QUIC</ a > ]</ span > .< a href ="#section-7.2-5 " class ="pilcrow "> ¶</ a > </ p >
23842384</ section >
23852385</ div >
23862386< div id ="group-ids ">
@@ -2394,14 +2394,15 @@ <h3 id="name-grouping">
23942394might choose to log events for all incoming connections in a single large
23952395(streamed) qlog file. As such, a method for splitting up events belonging
23962396to separate logical entities is required.< a href ="#section-7.3-1 " class ="pilcrow "> ¶</ a > </ p >
2397- < p id ="section-7.3-2 "> The simplest way to perform this splitting is by associating a "group id"
2398- to each event that indicates to which conceptual "group" each event belongs. A
2397+ < p id ="section-7.3-2 "> The simplest way to perform this splitting is by associating a "group id" to
2398+ each event that indicates to which conceptual "group" each event belongs. A
23992399post-processing step can then extract events per group. However, this group
24002400identifier can be highly protocol and context-specific. In the example above,
2401- the QUIC "Original Destination Connection ID" could be used to uniquely identify a
2402- connection. As such, they might add a "ODCID" field to each event. However, a
2403- middlebox logging IP or TCP traffic might rather use four-tuples to identify
2404- connections, and add a "four_tuple" field.< a href ="#section-7.3-2 " class ="pilcrow "> ¶</ a > </ p >
2401+ the QUIC "Original Destination Connection ID" could be used to uniquely identify
2402+ a connection. As such, they might add a "ODCID" field to each event.
2403+ Additionally, a service providing different levels of Quality of Service (QoS)
2404+ to their users might wish to group connections per QoS level applied. They might
2405+ instead prefer a "qos" field.< a href ="#section-7.3-2 " class ="pilcrow "> ¶</ a > </ p >
24052406< p id ="section-7.3-3 "> As such, to provide consistency and ease of tooling in cross-protocol and
24062407cross-context setups, qlog instead defines the common "group_id" field, which
24072408contains a string value. Implementations are free to use their preferred string
@@ -2418,17 +2419,17 @@ <h3 id="name-grouping">
24182419< a href ="#name-groupid-definition " class ="selfRef "> GroupID definition</ a >
24192420 </ figcaption > </ figure >
24202421</ div >
2421- < p id ="section-7.3-5 "> JSON serialization example for events grouped by four tuples
2422- and QUIC connection IDs:< a href ="#section-7.3-5 " class ="pilcrow "> ¶</ a > </ p >
2422+ < p id ="section-7.3-5 "> JSON serialization example for events grouped either by QUIC Connection IDs, or
2423+ according to an endpoint-specific Quality of Service (QoS) logic that includes
2424+ the service level:< a href ="#section-7.3-5 " class ="pilcrow "> ¶</ a > </ p >
24232425< span id ="name-groupid-example "> </ span > < div id ="group-id-ex ">
24242426< figure id ="figure-23 ">
24252427 < div class ="alignLeft art-text artwork " id ="section-7.3-6.1 ">
24262428< pre >
24272429"events": [
24282430 {
24292431 "time": 1553986553579,
2430- "group_id": "ip1=2001:67c:1232:144:9498:6df6:f450:110b,
2431- ip2=2001:67c:2b0:1c1::198,port1=59105,port2=80",
2432+ "group_id": "qos=premium",
24322433 "name": "quic:packet_received",
24332434 "data": { ... }
24342435 },
@@ -2446,8 +2447,8 @@ <h3 id="name-grouping">
24462447 </ figcaption > </ figure >
24472448</ div >
24482449< p id ="section-7.3-7 "> Note that in some contexts (for example a Multipath transport protocol) it might
2449- make sense to add additional contextual per-event fields (for example PathID ,
2450- see < a href ="#path -field " class ="auto internal xref "> Section 7.2</ a > ), rather than use the group_id field for that purpose.< a href ="#section-7.3-7 " class ="pilcrow "> ¶</ a > </ p >
2450+ make sense to add additional contextual per-event fields (for example TupleID ,
2451+ see < a href ="#tuple -field " class ="auto internal xref "> Section 7.2</ a > ), rather than use the group_id field for that purpose.< a href ="#section-7.3-7 " class ="pilcrow "> ¶</ a > </ p >
24512452< p id ="section-7.3-8 "> Note also that, typically, a single trace only contains events belonging to a
24522453single logical group (for example, an individual QUIC connection). As such,
24532454instead of logging the "group_id" field with an identical value for each event
@@ -2569,7 +2570,7 @@ <h3 id="name-commonfields">
25692570 < div class ="lang-cddl sourcecode " id ="section-7.5-6.1 ">
25702571< pre >
25712572CommonFields = {
2572- ? path: PathID
2573+ ? tuple: TupleID
25732574 ? time_format: TimeFormat
25742575 ? reference_time: ReferenceTime
25752576 ? group_id: GroupID
@@ -3553,11 +3554,11 @@ <h3 id="name-set-file-output-destination">
35533554< a href ="#section-12.1 " class ="section-number selfRef "> 12.1. </ a > < a href ="#name-set-file-output-destination " class ="section-name selfRef "> Set file output destination via an environment variable</ a >
35543555 </ h3 >
35553556< p id ="section-12.1-1 "> To provide users control over where and how qlog files are created, two
3556- environment variables are defined. The first, QLOGFILE, indicates a full path to where an
3557- individual qlog file should be stored. This path < span class ="bcp14 "> MUST</ span > include the full file
3558- extension. The second, QLOGDIR, sets a general directory path in which qlog files
3559- should be placed. This path < span class ="bcp14 "> MUST</ span > include the directory separator character at the
3560- end.< a href ="#section-12.1-1 " class ="pilcrow "> ¶</ a > </ p >
3557+ environment variables are defined. The first, QLOGFILE, indicates a full path to
3558+ where an individual qlog file should be stored. This path < span class ="bcp14 "> MUST</ span > include the full
3559+ file extension. The second, QLOGDIR, sets a general directory path in which qlog
3560+ files should be placed. This path < span class ="bcp14 "> MUST</ span > include the directory separator character
3561+ at the end.< a href ="#section-12.1-1 " class ="pilcrow "> ¶</ a > </ p >
35613562< p id ="section-12.1-2 "> In general, QLOGDIR should be preferred over QLOGFILE if an endpoint is prone to
35623563generate multiple qlog files. This can for example be the case for a QUIC server
35633564implementation that logs each QUIC connection in a separate qlog file. An
0 commit comments