From d77904adeb5366abdabb84bf93b12b440ad29ca7 Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Thu, 18 Apr 2024 17:23:30 +0200 Subject: [PATCH] dnsdist: Update tuning/design documentation for DoQ and DoH3 --- .../docs/advanced/internal-design.rst | 40 ++++++++++++++++-- pdns/dnsdistdist/docs/advanced/tuning.rst | 17 ++++++-- pdns/dnsdistdist/docs/imgs/DNSDistDoH19.png | Bin 0 -> 47638 bytes pdns/dnsdistdist/docs/imgs/DNSDistDoH3.png | Bin 0 -> 30820 bytes pdns/dnsdistdist/docs/imgs/DNSDistDoQ.png | Bin 0 -> 30785 bytes pdns/dnsdistdist/docs/reference/config.rst | 8 ++-- pdns/dnsdistdist/docs/running.rst | 4 ++ 7 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 pdns/dnsdistdist/docs/imgs/DNSDistDoH19.png create mode 100644 pdns/dnsdistdist/docs/imgs/DNSDistDoH3.png create mode 100644 pdns/dnsdistdist/docs/imgs/DNSDistDoQ.png diff --git a/pdns/dnsdistdist/docs/advanced/internal-design.rst b/pdns/dnsdistdist/docs/advanced/internal-design.rst index 505be769c8..7263f07336 100644 --- a/pdns/dnsdistdist/docs/advanced/internal-design.rst +++ b/pdns/dnsdistdist/docs/advanced/internal-design.rst @@ -34,19 +34,53 @@ TCP / DoT design For TCP and DoT, a single thread is created for each :func:`addLocal` and :func:`addTLSLocal` directive, listening to the incoming TCP sockets, accepting new connections and distributing them over a pipe to the TCP worker threads. These threads handle both the TCP connection with the client and the one with the backend. -DoH design ----------- +DNS over HTTP/2 design +---------------------- + +h2o (up to 1.7) +^^^^^^^^^^^^^^^ .. figure:: ../imgs/DNSDistDoH.png :align: center :alt: DNSDist DoH design before 1.7 -For DoH, two threads are created for each :func:`addDOHLocal` directive, one handling the TLS and HTTP layers, then passing the queries to the second one over a pipe. The second thread does DNS processing, applying rules and forwarding the query to the backend if needed, over UDP. +For DNS over HTTP/2, two threads are created for each :func:`addDOHLocal` directive, one handling the TLS and HTTP layers, then passing the queries to the second one over a pipe. The second thread does DNS processing, applying rules and forwarding the query to the backend if needed, over UDP. Note that even if the query does not need to be passed to a backend (cache-hit, self-generated answer), the response will be passed back to the first thread via a pipe, since only that thread deals with the client. If the response comes from a backend, it will be picked up by the regular UDP listener for that backend, the corresponding *IDState* object located, and the response sent to the first thread over a pipe. +h2o (1.7 - 1.9) +^^^^^^^^^^^^^^^ + Since 1.7, if the UDP response coming from the backend has been truncated (TC bit is set), dnsdist will retry over TCP by passing the query to a TCP worker over a pipe, as was already done for incoming TCP queries. The response will then be passed back to the DoH worker thread over the same pipe that for UDP queries. That also happens if the backend is marked TCP-only, or configured for DNS over TLS, in which case the query is obviously not sent over UDP first but immediately sent to a TCP worker thread. .. figure:: ../imgs/DNSDistDoH17.png :align: center :alt: DNSDist DoH design since 1.7 + +nghttp2 (since 1.9) +^^^^^^^^^^^^^^^^^^^ + +Since 1.9 incoming DNS over HTTP/2 is no longer implemented via the ``h2o`` library but by ``nghttp2`` instead. The design is roughly the same but has been simplified a bit. +As before, if the UDP response coming from the backend has been truncated (TC bit is set), dnsdist will retry over TCP by passing the query to a TCP worker over a pipe, as was already done for incoming TCP queries. The response will then be passed back to the DoH worker thread over the same pipe that for UDP queries. That also happens if the backend is marked TCP-only, or configured for DNS over TLS, in which case the query is obviously not sent over UDP first but immediately sent to a TCP worker thread. + +.. figure:: ../imgs/DNSDistDoH19.png + :align: center + :alt: DNSDist DoH design since 1.9 + +DNS over HTTP/3 design +---------------------- + +DNS over HTTP/3 is implemented since 1.9.0 via the ``Quiche`` library. In 1.9.x, queries received over DNS over HTTP/3 are forwarded to the backend over TCP (Do53 TCP, DoT or DoH2). + +.. figure:: ../imgs/DNSDistDoH3.png + :align: center + :alt: DNSDist DoH3 design since 1.9 + +DoQ design +---------- + +DNS over QUIC is implemented since 1.9.0 via the ``Quiche`` library. In 1.9.x, queries received over DNS over QUIC are forwarded to the backend over TCP (Do53 TCP, DoT or DoH2). + +.. figure:: ../imgs/DNSDistDoQ.png + :align: center + :alt: DNSDist DoH3 design since 1.9 diff --git a/pdns/dnsdistdist/docs/advanced/tuning.rst b/pdns/dnsdistdist/docs/advanced/tuning.rst index ab5f59e12f..6fdef8cd22 100644 --- a/pdns/dnsdistdist/docs/advanced/tuning.rst +++ b/pdns/dnsdistdist/docs/advanced/tuning.rst @@ -62,9 +62,9 @@ Note that, since 1.7, dnsdist supports marking a backend as "TCP only", as well :align: center :alt: DNSDist UDP design for TCP-only, DoT backends -For DNS over HTTPS, every :func:`addDOHLocal` directive adds a new thread dealing with incoming connections, so it might be useful to add more than one directive, as indicated above. +For DNS over HTTPS, every :func:`addDOHLocal`/:func:`addDOH3Local` directive adds a new thread dealing with incoming connections, so it might be useful to add more than one directive, as indicated above. -.. figure:: ../imgs/DNSDistDoH17.png +.. figure:: ../imgs/DNSDistDoH19.png :align: center :alt: DNSDist DoH design @@ -119,9 +119,9 @@ A different possibility is that there is not enough threads accepting new connec For incoming and outgoing DNS over TLS support, the choice of the TLS provider (OpenSSL and GnuTLS are both supported) might yield very different results depending on the exact architecture. -Since 1.8.0, incoming DNS over TLS might also benefit from experimental support for TLS acceleration engines, like Intel QAT. See :func:`loadTLSEngine`, and the `tlsAsyncMode` parameter of :func:`addTLSLocal` for more information. +Incoming DNS over TLS (since 1.8.0) and incoming DNS over HTTPS (since 1.9.0) might also benefit from experimental support for TLS acceleration engines, like Intel QAT. See :func:`loadTLSEngine`, and the `tlsAsyncMode` parameter of :func:`addTLSLocal` and :func:`addDOHLocal` for more information. -Incoming and outgoing DNS over TLS, as well as outgoing DNS over HTTPS, might benefit from experimental support kernel-accelerated TLS on Linux, when supported by the kernel and OpenSSL. See the `ktls` options on :func:`addTLSLocal` and :func:`newServer` for more information. Kernel support for kTLS might be verified by looking at the counters in ``/proc/net/tls_stat``. Note that: +Incoming and outgoing DNS over TLS, outgoing DNS over HTTPS, as well as incoming DNS over HTTPS with the ``nghttp2`` library (since 1.9.0), might benefit from experimental support kernel-accelerated TLS on Linux, when supported by the kernel and OpenSSL. See the `ktls` options on :func:`addTLSLocal`, :func:`addDOHLocal` and :func:`newServer` for more information. Kernel support for kTLS might be verified by looking at the counters in ``/proc/net/tls_stat``. Note that: * supported ciphers depend on the exact kernel version used. ``TLS_AES_128_GCM_SHA256`` might be a good option for testing purpose since it was supported pretty early * as of OpenSSL 3.0.7, kTLS can only be used for sending TLS 1.3 packets, not receiving them. Both sending and receiving packets should be working for TLS 1.2. @@ -131,6 +131,15 @@ TLS performance For DNS over HTTPS and DNS over TLS, in addition to the advice above we suggest reading the :doc:`tls-sessions-management` page to learn how to improve TLS session resumption ratio, which has a huge impact on CPU usage and latency. +DNS over QUIC +------------- + +For DNS over QUIC, every :func:`addDOQLocal` directive adds a new thread dealing with incoming datagrams, so it might be useful to add more than one directive. + +.. figure:: ../imgs/DNSDistDoQ.png + :align: center + :alt: DNSDist QUIC design + Rules and Lua ------------- diff --git a/pdns/dnsdistdist/docs/imgs/DNSDistDoH19.png b/pdns/dnsdistdist/docs/imgs/DNSDistDoH19.png new file mode 100644 index 0000000000000000000000000000000000000000..e085276a534b7e53a57347107e0036f8b12df2f7 GIT binary patch literal 47638 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 z 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 3.0 and with the `--enable-tls-provider` configure flag on. In other cases, :func:`loadTLSEngine` should be used instead. - Some providers might actually degrade performance unless the TLS asynchronous mode of OpenSSL is enabled. To enable it see the ``tlsAsyncMode`` parameter on :func:`addTLSLocal`. + Some providers might actually degrade performance unless the TLS asynchronous mode of OpenSSL is enabled. To enable it see the ``tlsAsyncMode`` parameter on :func:`addTLSLocal` and :func:`addDOHLocal`. :param string providerName: The name of the provider to load. diff --git a/pdns/dnsdistdist/docs/running.rst b/pdns/dnsdistdist/docs/running.rst index 6d753dd6e2..23d7ba123a 100644 --- a/pdns/dnsdistdist/docs/running.rst +++ b/pdns/dnsdistdist/docs/running.rst @@ -61,3 +61,7 @@ To sum it up: +--------------+--------------------+---------------------------+----------------------+----------------------+ | DoH | **UDP** | TCP | TLS | DoH | +--------------+--------------------+---------------------------+----------------------+----------------------+ +| DoQ | TCP | TCP | TLS | DoH | ++--------------+--------------------+---------------------------+----------------------+----------------------+ +| DoH3 | TCP | TCP | TLS | DoH | ++--------------+--------------------+---------------------------+----------------------+----------------------+ -- 2.47.2