Self sign-up has been disabled due to increased spam activity. If you want to get access, please send an email to a project owner (preferred) or at gitlab(at)nic(dot)cz. We apologize for the inconvenience.
aarch64 ("arm64") does not work at the moment because of #216 (closed) - if you have time to fix it we would be happy to accept patches!
BTW we did some benchmarks on multi-core aarch64 platforms and as far as we can tell it sucks performance-wise so we will most likely not invest in this platform ourselves for now - so do not be surprised by its performance. (Of course we will reevaluate when a better HW is available.)
@pspacek Thanks for the quick response. Will take a look and try to get it working.
FWIW, most of my edge servers are actually tiny Odroid machines with 4+4 cores ARMv7. A few times faster than a Raspberry Pi but probably slower than the cheapest Intel/AMD CPUs today.
There are also companies like Cloudflare investing into more powerful modern ARMv8-based servers and optimised software.
Rest assured that we are in touch with Cloudflare ;-)
For experimentation you can try e.g. Fedora packages which are built for 32-bit ARM as well but we never touch that by hand so we are not sure if the packages shipped by distro actually work. (In contrast we test 64 bit Intel packages ourselves.)
@sebdeckers Packages for armv7l are now available from our repositories for Debian and Fedora. They have built successfully, but I don't have any hardware to test their functionality.
If you try any of them, please let us know whether they actually work, or if there is some issue. Thanks!
root@odroid:~# apt-cache show knot-resolver=3*
Package: knot-resolver
Version: 3.0.0-1
Architecture: armhf
Maintainer: Knot Resolver
Installed-Size: 444
Depends: adduser, dns-root-data, libkres8 (= 3.0.0-1), lua-sec, lua-socket, libbsd0 (>= 0.0), libc6 (>= 2.8), libdnssec6 (>= 2.3.0), libedit2 (>= 2.11-20080614), libgcc1 (>= 1:3.5), libgnutls30 (>= 3.5.6), libknot8 (>= 2.7.0), liblmdb0 (>= 0.9.6), libluajit-5.1-2, libncurses5 (>= 6), libstdc++6 (>= 5), libsystemd0 (>= 227), libtinfo5 (>= 6), libuv1 (>= 1.7.0), libzscanner2 (>= 2.3.0)
Recommends: knot-resolver-module-http
Filename: ./armhf/knot-resolver_3.0.0-1_armhf.deb
Size: 142100
MD5sum: 69376df83c6a96807863d8dc404f6a3a
SHA1: c69da70dc0f63753a938b2ef07dafb5a6a129b96
SHA256: e026f4643ed072077bd6ca1a7d9cc43fe44f93bf0fb694422e3a04108ff8b7f3
Section: net
Priority: optional
Homepage: https://www.knot-resolver.cz/
Description: caching, DNSSEC-validating DNS resolver
The Knot Resolver is a caching full resolver implementation
written in C and LuaJIT, including both a resolver library and a
daemon. Modular architecture of the library keeps the core tiny and
efficient, and provides a state-machine like API for
extensions. There are three built-in modules - iterator, cache,
validator, and many external.
.
The Lua modules, switchable and shareable cache, and fast FFI
bindings makes it great to tap into resolution process, or be used
for your recursive DNS service. It's the OpenResty of DNS.
.
The server adopts a different scaling strategy than the rest of the
DNS recursors - no threading, shared-nothing architecture (except
MVCC cache that may be shared). You can start and stop additional
nodes depending on the contention without downtime.
Description-md5: bf37c31effb987d90b9c0c9623e2590b
root@odroid:# apt-get install knot-resolver=3*
Reading package lists... Done
Building dependency tree
Reading state information... Done
Selected version '3.0.0-1' (home:CZ-NIC:knot-resolver-latest:download.opensuse.org [armhf]) for 'knot-resolver'
The following package was automatically installed and is no longer required:
kernel-common
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
javascript-common knot-resolver-module-http libdnssec6 libjs-bootstrap libjs-d3 libjs-jquery libknot8 libkres8 liblmdb0 libluajit-5.1-2 libluajit-5.1-common libuv1 libzscanner2 lua-basexx lua-bit32 lua-compat53 lua-cqueues lua-fifo lua-http lua-lpeg
lua-lpeg-patterns lua-luaossl lua-mmdb lua-sec lua-socket
Suggested packages:
apache2 | lighttpd | httpd
The following NEW packages will be installed:
javascript-common knot-resolver knot-resolver-module-http libdnssec6 libjs-bootstrap libjs-d3 libjs-jquery libknot8 libkres8 liblmdb0 libluajit-5.1-2 libluajit-5.1-common libuv1 libzscanner2 lua-basexx lua-bit32 lua-compat53 lua-cqueues lua-fifo lua-http lua-lpeg
lua-lpeg-patterns lua-luaossl lua-mmdb lua-sec lua-socket
0 upgraded, 26 newly installed, 0 to remove and 75 not upgraded.
Need to get 1883 kB of archives.
After this operation, 7244 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://download.opensuse.org/repositories/home:/CZ-NIC:/knot-resolver-latest/Debian_9.0 libdnssec6 2.7.2-1 [34.9 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports bionic/main armhf javascript-common all 11 [6066 B]
Get:3 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf liblmdb0 armhf 0.9.21-1 [37.4 kB]
Get:4 http://ports.ubuntu.com/ubuntu-ports bionic/main armhf libuv1 armhf 1.18.0-3 [53.5 kB]
Get:5 http://download.opensuse.org/repositories/home:/CZ-NIC:/knot-resolver-latest/Debian_9.0 libknot8 2.7.2-1 [72.6 kB]
Get:6 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-socket armhf 3.0rc1+git+ac3201d-4 [57.3 kB]
Get:7 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-sec armhf 0.6-4 [24.0 kB]
Get:8 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf libluajit-5.1-common all 2.1.0beta3+dfsg-5.1 [44.3 kB]
Get:9 http://download.opensuse.org/repositories/home:/CZ-NIC:/knot-resolver-latest/Debian_9.0 libkres8 3.0.0-1 [88.0 kB]
Get:10 http://download.opensuse.org/repositories/home:/CZ-NIC:/knot-resolver-latest/Debian_9.0 libzscanner2 2.7.2-1 [124 kB]
Get:11 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf libluajit-5.1-2 armhf 2.1.0beta3+dfsg-5.1 [189 kB]
Get:12 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf libjs-bootstrap all 3.3.7+dfsg-2 [228 kB]
Get:13 http://download.opensuse.org/repositories/home:/CZ-NIC:/knot-resolver-latest/Debian_9.0 knot-resolver 3.0.0-1 [142 kB]
Get:14 http://download.opensuse.org/repositories/home:/CZ-NIC:/knot-resolver-latest/Debian_9.0 knot-resolver-module-http 3.0.0-1 [139 kB]
Get:15 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf libjs-d3 all 3.5.17-2 [131 kB]
Get:16 http://ports.ubuntu.com/ubuntu-ports bionic/main armhf libjs-jquery all 3.2.1-1 [152 kB]
Get:17 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-basexx all 0.3-2 [3916 B]
Get:18 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-bit32 armhf 5.3.0-3 [8408 B]
Get:19 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-compat53 armhf 0.3-3 [34.7 kB]
Get:20 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-cqueues armhf 20161214-2build1 [145 kB]
Get:21 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-fifo all 0.2-3 [4544 B]
Get:22 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-lpeg armhf 1.0.0-2 [24.6 kB]
Get:23 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-lpeg-patterns all 0.4-1 [16.6 kB]
Get:24 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-luaossl armhf 20161214-1build1 [60.6 kB]
Get:25 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-http all 0.1-3 [54.9 kB]
Get:26 http://ports.ubuntu.com/ubuntu-ports bionic/universe armhf lua-mmdb all 0.1-1 [6634 B]
Fetched 1883 kB in 2s (804 kB/s)
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Selecting previously unselected package javascript-common.
(Reading database ... 55293 files and directories currently installed.)
Preparing to unpack .../00-javascript-common_11_all.deb ...
Unpacking javascript-common (11) ...
Selecting previously unselected package libdnssec6:armhf.
Preparing to unpack .../01-libdnssec6_2.7.2-1_armhf.deb ...
Unpacking libdnssec6:armhf (2.7.2-1) ...
Selecting previously unselected package liblmdb0:armhf.
Preparing to unpack .../02-liblmdb0_0.9.21-1_armhf.deb ...
Unpacking liblmdb0:armhf (0.9.21-1) ...
Selecting previously unselected package libknot8:armhf.
Preparing to unpack .../03-libknot8_2.7.2-1_armhf.deb ...
Unpacking libknot8:armhf (2.7.2-1) ...
Selecting previously unselected package libuv1:armhf.
Preparing to unpack .../04-libuv1_1.18.0-3_armhf.deb ...
Unpacking libuv1:armhf (1.18.0-3) ...
Selecting previously unselected package libkres8.
Preparing to unpack .../05-libkres8_3.0.0-1_armhf.deb ...
Unpacking libkres8 (3.0.0-1) ...
Selecting previously unselected package lua-socket:armhf.
Preparing to unpack .../06-lua-socket_3.0rc1+git+ac3201d-4_armhf.deb ...
Unpacking lua-socket:armhf (3.0rc1+git+ac3201d-4) ...
Selecting previously unselected package lua-sec:armhf.
Preparing to unpack .../07-lua-sec_0.6-4_armhf.deb ...
Unpacking lua-sec:armhf (0.6-4) ...
Selecting previously unselected package libluajit-5.1-common.
Preparing to unpack .../08-libluajit-5.1-common_2.1.0beta3+dfsg-5.1_all.deb ...
Unpacking libluajit-5.1-common (2.1.0beta3+dfsg-5.1) ...
Selecting previously unselected package libluajit-5.1-2:armhf.
Preparing to unpack .../09-libluajit-5.1-2_2.1.0beta3+dfsg-5.1_armhf.deb ...
Unpacking libluajit-5.1-2:armhf (2.1.0beta3+dfsg-5.1) ...
Selecting previously unselected package libzscanner2:armhf.
Preparing to unpack .../10-libzscanner2_2.7.2-1_armhf.deb ...
Unpacking libzscanner2:armhf (2.7.2-1) ...
Selecting previously unselected package knot-resolver.
Preparing to unpack .../11-knot-resolver_3.0.0-1_armhf.deb ...
Unpacking knot-resolver (3.0.0-1) ...
Selecting previously unselected package libjs-bootstrap.
Preparing to unpack .../12-libjs-bootstrap_3.3.7+dfsg-2_all.deb ...
Unpacking libjs-bootstrap (3.3.7+dfsg-2) ...
Selecting previously unselected package libjs-d3.
Preparing to unpack .../13-libjs-d3_3.5.17-2_all.deb ...
Unpacking libjs-d3 (3.5.17-2) ...
Selecting previously unselected package libjs-jquery.
Preparing to unpack .../14-libjs-jquery_3.2.1-1_all.deb ...
Unpacking libjs-jquery (3.2.1-1) ...
Selecting previously unselected package lua-basexx.
Preparing to unpack .../15-lua-basexx_0.3-2_all.deb ...
Unpacking lua-basexx (0.3-2) ...
Selecting previously unselected package lua-bit32:armhf.
Preparing to unpack .../16-lua-bit32_5.3.0-3_armhf.deb ...
Unpacking lua-bit32:armhf (5.3.0-3) ...
Selecting previously unselected package lua-compat53:armhf.
Preparing to unpack .../17-lua-compat53_0.3-3_armhf.deb ...
Unpacking lua-compat53:armhf (0.3-3) ...
Selecting previously unselected package lua-cqueues:armhf.
Preparing to unpack .../18-lua-cqueues_20161214-2build1_armhf.deb ...
Unpacking lua-cqueues:armhf (20161214-2build1) ...
Selecting previously unselected package lua-fifo.
Preparing to unpack .../19-lua-fifo_0.2-3_all.deb ...
Unpacking lua-fifo (0.2-3) ...
Selecting previously unselected package lua-lpeg:armhf.
Preparing to unpack .../20-lua-lpeg_1.0.0-2_armhf.deb ...
Unpacking lua-lpeg:armhf (1.0.0-2) ...
Selecting previously unselected package lua-lpeg-patterns.
Preparing to unpack .../21-lua-lpeg-patterns_0.4-1_all.deb ...
Unpacking lua-lpeg-patterns (0.4-1) ...
Selecting previously unselected package lua-luaossl:armhf.
Preparing to unpack .../22-lua-luaossl_20161214-1build1_armhf.deb ...
Unpacking lua-luaossl:armhf (20161214-1build1) ...
Selecting previously unselected package lua-http.
Preparing to unpack .../23-lua-http_0.1-3_all.deb ...
Unpacking lua-http (0.1-3) ...
Selecting previously unselected package lua-mmdb.
Preparing to unpack .../24-lua-mmdb_0.1-1_all.deb ...
Unpacking lua-mmdb (0.1-1) ...
Selecting previously unselected package knot-resolver-module-http.
Preparing to unpack .../25-knot-resolver-module-http_3.0.0-1_all.deb ...
Unpacking knot-resolver-module-http (3.0.0-1) ...
Setting up libjs-jquery (3.2.1-1) ...
Setting up lua-socket:armhf (3.0rc1+git+ac3201d-4) ...
Setting up lua-luaossl:armhf (20161214-1build1) ...
Setting up libluajit-5.1-common (2.1.0beta3+dfsg-5.1) ...
Setting up liblmdb0:armhf (0.9.21-1) ...
Setting up libuv1:armhf (1.18.0-3) ...
Setting up lua-sec:armhf (0.6-4) ...
Setting up lua-cqueues:armhf (20161214-2build1) ...
Setting up lua-bit32:armhf (5.3.0-3) ...
Setting up libjs-d3 (3.5.17-2) ...
Setting up lua-basexx (0.3-2) ...
Setting up libzscanner2:armhf (2.7.2-1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Setting up lua-fifo (0.2-3) ...
Setting up lua-compat53:armhf (0.3-3) ...
Setting up libdnssec6:armhf (2.7.2-1) ...
Setting up lua-mmdb (0.1-1) ...
Processing triggers for systemd (237-3ubuntu10) ...
Setting up libluajit-5.1-2:armhf (2.1.0~beta3+dfsg-5.1) ...
Setting up libknot8:armhf (2.7.2-1) ...
Processing triggers for man-db (2.8.3-2) ...
Setting up libjs-bootstrap (3.3.7+dfsg-2) ...
Setting up javascript-common (11) ...
Setting up lua-lpeg:armhf (1.0.0-2) ...
Setting up libkres8 (3.0.0-1) ...
Setting up lua-lpeg-patterns (0.4-1) ...
Setting up lua-http (0.1-3) ...
Setting up knot-resolver-module-http (3.0.0-1) ...
Setting up knot-resolver (3.0.0-1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for systemd (237-3ubuntu10) ...
We went with kresd v2.1.1 from the Ubuntu 18.04 official repo for our Odroid HC1 (armv7l) and Linode VPS (x86_64) network. It works great! Would love to be able to upgrade to the official v3+ packages. Little to no traffic, of course, since we are just getting started. ️
I've turned on the armv7l package builds for Ubuntu as well.
The testing procedure for distribution packages is basically the following:
install package from our repo
start kresd@1.service
attempt to resolve a domain name
make a couple queries to verify DNSSEC validation is working and turned on
It is automated using Ansible, and to test all distros, we use virtualization (vagrant + libvirt). Some description and related code can be found in distro/tests.
With this workflow, I can test x86_64 packages for all supported distros in about 5-10 minutes on my laptop before release. If I could use the same workflow for ARM, I could test these as well.
However, I'm not sure whether virtualization and vagrant boxes would work on ARM the same way. It would also require hardware that's powerful enough to run VMs, ideally in parallel.
I don't think docker can be used to test the package functionality, because there is no systemd in containers. Systemd integration is one of the key features of the package and we want to test it in the same way users are going to use it, hence the need to use VMs.
@sebdeckers Beware that 2.y versions are not supported anymore and contain known security bugs. You really should not be using them in anything, especially if it is public facing.