summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man7/openssl-qlog.7ssl
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man7/openssl-qlog.7ssl')
-rw-r--r--upstream/archlinux/man7/openssl-qlog.7ssl274
1 files changed, 274 insertions, 0 deletions
diff --git a/upstream/archlinux/man7/openssl-qlog.7ssl b/upstream/archlinux/man7/openssl-qlog.7ssl
new file mode 100644
index 00000000..c83686aa
--- /dev/null
+++ b/upstream/archlinux/man7/openssl-qlog.7ssl
@@ -0,0 +1,274 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "OPENSSL-QLOG 7ssl"
+.TH OPENSSL-QLOG 7ssl 2024-04-28 3.3.0 OpenSSL
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+openssl\-qlog \- OpenSSL qlog tracing functionality
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+OpenSSL has unstable support for generating logs in the qlog logging format,
+which can be used to obtain diagnostic data for QUIC connections. The data
+generated includes information on packets sent and received and the frames
+contained within them, as well as loss detection and other events.
+.PP
+The qlog output generated by OpenSSL can be used to obtain diagnostic
+visualisations of a given QUIC connection using tools such as \fBqvis\fR.
+.PP
+\&\fBWARNING:\fR The output of OpenSSL's qlog functionality uses an unstable format
+based on a draft specification. qlog output is not subject to any format
+stability or compatibility guarantees at this time, and \fBwill\fR change in
+incompatible ways in future versions of OpenSSL. See \fBFORMAT STABILITY\fR below
+for details.
+.SH USAGE
+.IX Header "USAGE"
+When OpenSSL is built with qlog support, qlog is enabled at run time by setting
+the standard \fBQLOGDIR\fR environment variable to point to a directory where qlog
+files should be written. Once set, any QUIC connection established by OpenSSL
+will have a qlog file written automatically to the specified directory.
+.PP
+Log files are generated in the \fI.sqlog\fR format based on JSON-SEQ (RFC 7464).
+.PP
+The filenames of generated log files under the specified \fBQLOGDIR\fR use the
+following structure:
+.PP
+.Vb 1
+\& {connection_odcid}_{vantage_point_type}.sqlog
+.Ve
+.PP
+where \fB{connection_odcid}\fR is the lowercase hexadecimal encoding of a QUIC
+connection's Original Destination Connection ID, which is the Destination
+Connection ID used in the header of the first Initial packet sent as part of the
+connection process, and \fB{vantage_point_type}\fR is either \f(CW\*(C`client\*(C'\fR or
+\&\f(CW\*(C`server\*(C'\fR, reflecting the perspective of the endpoint producing the qlog output.
+.PP
+The qlog functionality can be disabled at OpenSSL build time using the
+\&\fIno-unstable-qlog\fR configure flag.
+.SH "SUPPORTED EVENT TYPES"
+.IX Header "SUPPORTED EVENT TYPES"
+The following event types are currently supported:
+.IP \fBconnectivity:connection_started\fR 4
+.IX Item "connectivity:connection_started"
+.PD 0
+.IP \fBconnectivity:connection_state_updated\fR 4
+.IX Item "connectivity:connection_state_updated"
+.IP \fBconnectivity:connection_closed\fR 4
+.IX Item "connectivity:connection_closed"
+.IP \fBtransport:parameters_set\fR 4
+.IX Item "transport:parameters_set"
+.IP \fBtransport:packet_sent\fR 4
+.IX Item "transport:packet_sent"
+.IP \fBtransport:packet_received\fR 4
+.IX Item "transport:packet_received"
+.IP \fBrecovery:packet_lost\fR 4
+.IX Item "recovery:packet_lost"
+.PD
+.SH FILTERS
+.IX Header "FILTERS"
+By default, all supported event types are logged. The \fBOSSL_QFILTER\fR
+environment variable can be used to configure a filter specification which
+determines which event types are to be logged. Each event type can be turned on
+and off individually. The filter specification is a space-separated list of
+terms listing event types to enable or disable. The terms are applied in order,
+thus the effects of later terms override the effects of earlier terms.
+.SS Examples
+.IX Subsection "Examples"
+Here are some example filter specifications:
+.ie n .IP """*"" (or ""+*"")" 4
+.el .IP "\f(CW*\fR (or \f(CW+*\fR)" 4
+.IX Item "* (or +*)"
+Enable all supported qlog event types.
+.ie n .IP """\-*""" 4
+.el .IP \f(CW\-*\fR 4
+.IX Item "-*"
+Disable all qlog event types.
+.ie n .IP """* \-transport:packet_received""" 4
+.el .IP "\f(CW* \-transport:packet_received\fR" 4
+.IX Item "* -transport:packet_received"
+Enable all qlog event types, but disable the \fBtransport:packet_received\fR event
+type.
+.ie n .IP """\-* transport:packet_sent""" 4
+.el .IP "\f(CW\-* transport:packet_sent\fR" 4
+.IX Item "-* transport:packet_sent"
+Disable all qlog event types, except for the \fBtransport:packet_sent\fR event type.
+.ie n .IP """\-* connectivity:* transport:parameters_set""" 4
+.el .IP "\f(CW\-* connectivity:* transport:parameters_set\fR" 4
+.IX Item "-* connectivity:* transport:parameters_set"
+Disable all qlog event types, except for \fBtransport:parameters_set\fR and all
+supported event types in the \fBconnectivity\fR category.
+.SS "Filter Syntax Specification"
+.IX Subsection "Filter Syntax Specification"
+Formally, the format of the filter specification in ABNF is as follows:
+.PP
+.Vb 1
+\& filter = *filter\-term
+\&
+\& filter\-term = add\-sub\-term
+\&
+\& add\-sub\-term = ["\-" / "+"] specifier
+\&
+\& specifier = global\-specifier / qualified\-specifier
+\&
+\& global\-specifier = wildcard
+\&
+\& qualified\-specifier = component\-specifier ":" component\-specifier
+\&
+\& component\-specifier = name / wildcard
+\&
+\& wildcard = "*"
+\&
+\& name = 1*(ALPHA / DIGIT / "_" / "\-")
+.Ve
+.PP
+Filter terms are interpreted as follows:
+.ie n .IP """+*"" (or ""*"")" 4
+.el .IP "\f(CW+*\fR (or \f(CW*\fR)" 4
+.IX Item "+* (or *)"
+Enables all event types.
+.ie n .IP """\-*""" 4
+.el .IP \f(CW\-*\fR 4
+.IX Item "-*"
+Disables all event types.
+.ie n .IP """+foo:*"" (or ""foo:*"")" 4
+.el .IP "\f(CW+foo:*\fR (or \f(CWfoo:*\fR)" 4
+.IX Item "+foo:* (or foo:*)"
+Enables all event types in the \fBfoo\fR category.
+.ie n .IP """\-foo:*""" 4
+.el .IP \f(CW\-foo:*\fR 4
+.IX Item "-foo:*"
+Disables all event types in the \fBfoo\fR category.
+.ie n .IP """+foo:bar"" (or ""foo:bar"")" 4
+.el .IP "\f(CW+foo:bar\fR (or \f(CWfoo:bar\fR)" 4
+.IX Item "+foo:bar (or foo:bar)"
+Enables a specific event type \fBfoo:bar\fR.
+.ie n .IP """\-foo:bar""" 4
+.el .IP \f(CW\-foo:bar\fR 4
+.IX Item "-foo:bar"
+Disables a specific event type \fBfoo:bar\fR.
+.PP
+Partial wildcard matches are not supported at this time.
+.SS "Default Configuration"
+.IX Subsection "Default Configuration"
+If the \fBOSSL_QFILTER\fR environment variable is not set or set to the empty
+string, this is equivalent to enabling all event types (i.e., it is equivalent
+to a filter of \f(CW\*(C`*\*(C'\fR). Note that the \fBQLOGDIR\fR environment variable must also be
+set to enable qlog.
+.SH "FORMAT STABILITY"
+.IX Header "FORMAT STABILITY"
+The OpenSSL qlog functionality currently implements a draft version of the qlog
+specification. Future revisions to the qlog specification in advance of formal
+standardisation are expected to introduce incompatible and breaking changes to
+the qlog format. The OpenSSL qlog functionality will transition to producing
+output in this format in the future once standardisation is complete.
+.PP
+Because of this, the qlog output of OpenSSL \fBwill\fR change in incompatible and
+breaking ways in the future, including in non-major releases of OpenSSL. The
+qlog output of OpenSSL is considered unstable and not subject to any format
+stability or compatibility guarantees at this time.
+.PP
+Users of the OpenSSL qlog functionality must be aware that the output may change
+arbitrarily between releases and that the preservation of compatibility with any
+given tool between releases is not guaranteed.
+.SS Aims
+.IX Subsection "Aims"
+The OpenSSL draft qlog functionality is primarily intended for use in
+conjunction with the qvis tool <https://qvis.quictools.info/>. In terms of
+format compatibility, the output format of the OpenSSL qlog functionality is
+expected to track what is supported by qvis. As such, future changes to the
+output of the OpenSSL qlog functionality are expected to track changes in qvis
+as they occur, and reflect the versions of qlog currently supported by qvis.
+.PP
+This means that prior to the finalisation of the qlog standard, in the event of
+a disparity between the current draft and what qvis supports, the OpenSSL qlog
+functionality will generally aim for qvis compatibility over compliance with the
+latest draft.
+.PP
+As such, OpenSSL's qlog functionality currently implements qlog version 0.3 as
+defined in \fBdraft\-ietf\-quic\-qlog\-main\-schema\-05\fR and
+\&\fBdraft\-ietf\-quic\-qlog\-quic\-events\-04\fR. These revisions are intentionally used
+instead of more recent revisions due to their qvis compatibility.
+.SH LIMITATIONS
+.IX Header "LIMITATIONS"
+The OpenSSL implementation of qlog currently has the following limitations:
+.IP \(bu 4
+Not all event types defined by the draft specification are implemented.
+.IP \(bu 4
+Only the JSON-SEQ (\fB.sqlog\fR) output format is supported.
+.IP \(bu 4
+Only the \fBQLOGDIR\fR environment variable is supported for configuring the qlog
+output directory. The standard \fBQLOGFILE\fR environment variable is not
+supported.
+.IP \(bu 4
+There is no API for programmatically enabling or controlling the qlog
+functionality.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBopenssl\-quic\fR\|(7), \fBopenssl\-env\fR\|(7)
+.SH HISTORY
+.IX Header "HISTORY"
+This functionality was added in OpenSSL 3.3.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+Copyright 2024 The OpenSSL Project Authors. All Rights Reserved.
+.PP
+Licensed under the Apache License 2.0 (the "License"). You may not use
+this file except in compliance with the License. You can obtain a copy
+in the file LICENSE in the source distribution or at
+<https://www.openssl.org/source/license.html>.