DNS-over-QUIC support
It'd be useful to have the benchmark tool support the DoQ protocol:
- RFC9000 - QUIC: A UDP-Based Multiplexed and Secure Transport
- RFC9250 - DNS over Dedicated QUIC Connections
Implementation proposal
-
Core of the QUIC implementation should be added as another function of the shotgun.output.dnssim
custom module fordnsjit
.- This is the most challenging part of the implementation, as it is very low level and requires knowledge of libuv, QUIC, dnsjit, C and Lua.
- Since there are some similarities in protocol implementations in
shotgun.output.dnssim
and QUIC will probably be most similar to HTTP/2 implementation, I suggest checking out http2s.c for inspiration. - One possible library for adding QUIC support is ngtcp2.
-
Update any python scripts that are used for replay / plotting data with necessary support for new options for QUIC. - This should be mostly straightforward task, modifying and testing the various Python scripts in the repo.
-
Update configurations and/or create new presets for testing QUIC. -
Test the updated tool against an existing DoQ resolver (or possibly auth) such as AdGuard. - Add DNS server with DoQ support to resolver-benchmarking automation.
- Modify existing DNS Shotgun role to support DoQ benchmarks.
- Run benchmarks using DoQ and compare it to Do53, DoT and DoH performance - sanity check that the implementation is reasonable.
-
Update the documentation with information about DoQ testing. -
Release a new DNS Shotgun version with QUIC support.
Edited by Oto Šťáva