This is a demo program used in a DevConf.US 2021 talk Understanding QUIC by examples.
- Install Meson, GLib, GnuTLS 3.7.2, and the dependencies
$ dnf install cmake gcc glib2-devel gnutls-devel g++ meson ninja-build
-
meson _build
-
meson compile -C _build
$ _build/serv localhost 5556 credentials/server-key.pem credentials/server.pem
$ _build/cli localhost 5556 credentials/ca.pem
To enable logging for the application itself, set the
G_MESSAGES_DEBUG
envvar to echo
. To enable ngtcp2 logging
facility, set the same variable to ngtcp2
.
- Run either
cli
orserv
with theSSLKEYLOGFILE
envvar set:
$ SSLKEYLOGFILE=$PWD/keylog.txt _build/cli localhost 5556 credentials/ca.pem
- Use wireshark or tshark to capture the traffic:
$ tshark -o "tls.keylog_file: $PWD/keylog.txt" \
-i lo -Px -O quic -Y "udp.port == 5556"
- ECN marking
- UDP GSO
The MIT License