Here are some DNS-OARC development highlights from the past couple of months. These updates are usually bi-monthly and previous ones are available on our Medium blog.
dnsperf — TCP/TLS transport and bug fixes
With the release of v2.3.0 we added TCP and TLS support to dnsperf and resperf. The transport mode can now be selected at runtime using `-m <mode>` for dnsperf and `-M <mode>` for resperf, and the default server port is determined by the transport mode, UDP/TCP port 53 and TLS port 853.
During the development of these new modes I mostly use docker containers and I noticed a huge performance increase if I added a `poll()` for the stream sockets, so it was added to v2.3.0 release.
Quite soon after the release I got an issue from Brian Wellington (Akamai/Nominum) that TCP performance was 1/12th of what was expected. With his help and help from Jan Hák (CZ.NIC) we tracked it down to this `poll()` and with the removal of it the performance was back up at expected levels. This fix was released with v2.3.1.
Thanks Brian Wellington (Akamai/Nominum) for the initial report and testing, and Jan Hák (CZ.NIC) for testing and confirming the results.
Just prior of this development update, release v2.3.2 was made which fixes a buffer overflow when using TSIG and algorithms with digests larger then SHA256 (reported by Mukund Sivaraman).
Automated package building
As announced at OARC30, package building is now triggered automatically when building develop and master branches of all our projects!
For Debian, Ubuntu and SLE/openSUSE, this is triggered by buildbot after a successful build of the main branches. For EPEL/Fedora we use COPR’s own webhooks to trigger this directly from GitHub.
All platforms use my personal `dist-tools` scripts to create tarballs, deb-files etc.
All packages built from develop branch will have an additional version added to them, v<major>.<minor>.<patch>.<seconds since 1970–01–01 00:00:00 UTC>, which makes it simple for all package managers to update to the latest development version once built.
For Debian we build and publish packages ourselves, using `cowdancer-dist` and `reprepro`. For Ubuntu we build on LaunchPad. For SLE/openSUSE we build on SUSE’s Open Build System. And for CentOS/EPEL/Fedora we build on COPR.
You can find more information, instructions and links at: https://dev.dns-oarc.net/packages