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.