DNS-over-QUIC support

It'd be useful to have the benchmark tool support the DoQ protocol:

Implementation proposal

  • Core of the QUIC implementation should be added as another function of the shotgun.output.dnssim custom module for dnsjit.
    • 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