1.. highlight:: none 2.. _Requirements: 3 4************ 5Requirements 6************ 7 8Hardware 9======== 10 11Knot DNS requirements are not very demanding for typical 12installations, and a commodity server or a virtual solution will be 13sufficient in most cases. 14 15However, please note that there are some scenarios that will require 16administrator's attention and some testing of exact requirements before 17deploying Knot DNS to a production environment. These cases include 18deployment for a large number of zones (DNS hosting), large number 19of records in one or more zones (TLD), or large number of requests. 20 21CPU requirements 22---------------- 23 24The server scales with processing power and also with the number of 25available cores/CPUs. Enabling Hyper-threading is convenient if supported. 26 27There is no lower bound on the CPU requirements, but it should support 28memory barriers and atomic instructions (i586 and newer). 29 30Network card 31------------ 32 33The best results have been achieved with multi-queue network cards. The 34number of multi-queues should equal the total number of CPU cores (with 35Hyper-threading enabled). 36 37Memory requirements 38------------------- 39 40The server implementation focuses on performance and thus can be quite 41memory demanding. The rough estimate for memory requirements is 423 times the size of the zone in the plain-text format. Again this is only 43an estimate and you are advised to do your own measurements before 44deploying Knot DNS to production. 45 46.. NOTE:: 47 To ensure uninterrupted serving of the zone, Knot DNS 48 employs the Read-Copy-Update mechanism instead of locking and thus 49 requires twice the amount of memory for the duration of incoming 50 transfers. 51 52Operating system 53================ 54 55Knot DNS itself is written in a portable way and can be compiled 56and run on most UNIX-like systems, such as Linux, \*BSD, and macOS. 57 58Required libraries 59================== 60 61Knot DNS requires a few libraries to be available: 62 63* libedit 64* gnutls >= 3.3 65* liburcu >= 0.5.4 66* lmdb >= 0.9.15 67 68.. NOTE:: 69 The LMDB library is included with Knot DNS source code. However, linking 70 with the system library is preferred. 71 72Optional libraries 73================== 74 75International Domain Names support (IDNA2008 or IDNA2003) in :doc:`kdig<man_kdig>`: 76 77* libidn2 (or libidn) 78 79Systemd's startup notification mechanism and journald logging: 80 81* libsystemd 82 83Dnstap support in :doc:`kdig<man_kdig>` or module :ref:`dnstap<mod-dnstap>`: 84 85* fstrm (and protobuf-c if building from source code) 86 87Linux :manpage:`capabilities(7)` support, which allows the server to be started 88as a non-root user/group, binding to privileged ports (53), and giving up all 89its capabilities, resulting in a completely unprivileged process: 90 91* libcap-ng >= 0.6.4 92 93MaxMind database for **geodb** support in module :ref:`geoip<mod-geoip>`: 94 95* libmaxminddb0 96 97DNS-over-HTTPS (DoH) support in :doc:`kdig<man_kdig>`: 98 99* libnghttp2 100 101The :ref:`XDP functionality <Mode XDP>` and :doc:`kxdpgun <man_kxdpgun>` 102tool. These are only supported on Linux operating systems. See the chapter 103:ref:`Mode XDP <Mode XDP_pre-requisites>` for software and hardware 104recommendations. 105 106* libbpf >= 0.0.6 107* libmnl (for kxdpgun) 108