Hi Everyone,

with the 1.5.0 mostly feature-complete, us jolly folks at the CZ.NIC Labs thought
that the time has come to share it with you in form of a first release candidate.
I'd like to tell you a story first - I was browsing through the NEWS file, looking back
at the things we've done since the 1.0.0 two years ago. Oddly enough, one of the new
features was an "optimized memory consumption", and I've seen this repeat a few times.
I would have thought that the Knot DNS consumes zero memory by now, but it appears it doesn't
work that way. The law of diminishing return still applies, and the changes in between the versions
seem almost insignificant. Sometimes at least (recently, I've added a benchmark of 1M small zones to our benchmark [1], which showed how much memory did we need per each zone).
We addressed that. And despite the new preallocated packet buffers and other features, we still managed to cut down the resource requirements for TLD use cases for about 20%.
My point is, while the 20% does not seem that impressive alone, but the steep release-over-release tendency of smaller memory footprint and faster startup/answer performance just shows the unrelenting attention to the seemingly insignificant stuff, like structure alignment or packet distribution. That's what we're commited to.

Now, what's actually new in the 1.5.0? I've touted the major changes under the bonnet earlier this
year and boy, we've been busy. One of the major changes is the new query processing, which allowed us to do several cool things. The query processing is broken down to the set of step,
that are built like a LEGO, and each of the steps can be altered by the modules.
We have two modules now - a module capable of synthesizing forward/reverse records according to the configuration template. This for example solves the IPv6 reverse records problem (SLAAC as well), as we don't have to generate massive zones, but rather create the records on the fly.
The second module is a dnstap query/response log. Heard about the dnstap [2]? It's a pretty ingenious solution to the fine-grained capture of the DNS traffic without compromising the performance.

By the way, the utilities (kdig) support it too and you can either capture or replay queries now.
The good thing about modules is that it allows us to streamline (about 12K LOC less) the core functionality and extend the server at the some time. Think RRL, load balancing, geo-aware answers.

What about other things? As for the visible changes, for instance a multi-master failover, improved logs, asynchronously loaded zones, much more accurate "knotc memstats" and "zonestatus" tools, new user manual ...
I could probably bore you to death with the nitty gritty stuff, so check out the changelog to know more. That being said, I'd like to ask your help. The new stuff, like the asynchronous zone loading or logging, change the usability a little. Did we break your scripts or use case? Compliment, cheeky remark or angry rant? Please let us know, we'd like to get most of the kinks ironed out till the final release. Thank you.

Changelog:
https://gitlab.labs.nic.cz/labs/knot/blob/v1.5.0-rc1/NEWS

Sources:
https://secure.nic.cz/files/knot-dns/knot-1.5.0-rc1.tar.gz
https://secure.nic.cz/files/knot-dns/knot-1.5.0-rc1.tar.xz

GPG signatures:
https://secure.nic.cz/files/knot-dns/knot-1.5.0-rc1.tar.gz.asc
https://secure.nic.cz/files/knot-dns/knot-1.5.0-rc1.tar.xz.asc

[1] http://knot-dns.labs.nic.cz/pages/benchmark.html#tab-resource-usage
[2] http://dnstap.info/

Kind Regards,

Marek

--
 Marek Vavrusa, Knot DNS
 CZ.NIC Labs http://www.knot-dns.cz
 -------------------------------------------
 Americká 23, 120 00 Praha 2, Czech Republic
 WWW: http://labs.nic.cz http://www.nic.cz