Discussion:
gdnsd testing
Brandon Black
2010-05-17 22:57:20 UTC
Permalink
Hi all,

I've been slowly working on a new authoritative-only DNS server
implementation over the past few years, named "gdnsd". It started out
as an official project at Logitech back in 2007 which they allowed me
to GPL, but these days I work on it on my own time, not theirs
(although I still work there, doing other things).

The original impetus for the project was that we were looking for a
free software solution for dynamic GSLB functionality (akin to what
F5, etc do in very expensive products: use DNS to send clients to
different addresses at different datacenters based on DNS client IP
combined with local service availability), and didn't find a suitable
one. It still retains this unique feature through what is now a DSO
plugin mechanism for dynamic A/AAAA-record resolution based on
"whatever the plugin author wants", but the project has grown beyond
that into a general-purpose authoritative server now, and people who
don't care about GSLB can easily ignore that feature.

I haven't made any gdnsd announcements in the past because I wanted
to keep it quiet while I knew I still had some major issues to address
and refactorings to work through before it was decent enough for
general use and abuse. It's only picked up a few users that have
stumbled into it during that time, which was fine. Logitech's been
using it for public, commercial DNS services for a select subset of
its domains since 2007, and a few of those other users have been since
circa 2008 as well. Now the code is reaching a point of maturity
where I'd really like to start drawing in a wider audience of
users/testers/contributors to shake things out.

The project has a (brand new, empty) Google Group for mailing list /
discussion purposes, and an Issue Tracker courtesy of Google's project
hosting. Please direct gdnsd-related bugs, questions, comments, etc
to one of those destinations, or to my personal email. I don't want
to clutter up djb's DNS list any more than necessary with mostly-OT
traffic. I'm a djb and djbdns fan myself of course. djb's writings
on the DNS were important guides during a lot of gdnsd's design
process, and the code uses his text hashing function (and may
eventually switch from hash tables to crit-bit trees, which I also
first heard of through cr.yp.to). Perhaps most relevantly to this
list, the next major feature I plan to work on is adding native
DNSCurve support using djb's NaCl library.

The current version that needs testing is 1.1.1. This is a
beta-quality release, which will eventually become the stable 1.2.x
series. I'm already using 1.1.1 in production and it has been stable
for me. If you could grab a copy of that and at least run through the
configure + make + make check process and let me know how it goes on
your platform of choice, it would be greatly appreciated. The
regression test suite is quite thorough, at least as far as the core
DNS code goes (not so much on things like configfile errors yet). The
testsuite requires Perl and a couple of key Perl modules (LWP and
Net::DNS).

As far as portability goes I've given 1.1.1 some limited testing on
modern Linux, MacOS, OpenSolaris, and a few *BSDs, but there will
undoubtedly be more minor portability bugs on other, untested
*nix/POSIX-ish systems. There are no plans to support Windows, or
anything insufficiently *nix-y really. And while I've tried to make
the code endian-neutral, it has never been tested on processors other
than x86/x86_64, so testing on a big-endian platform would be nice.

This project has been a great learning experience for me so far, and
I hope your complaints and bug reports will give me more to learn from
:)

The project home is at: http://code.google.com/p/gdnsd/
You can follow links from there, but the important ones are:
Basic rundown / featurelist for the stable series (1.0.x):
http://code.google.com/p/gdnsd/wiki/Features
New stuff that's in 1.1.1: http://code.google.com/p/gdnsd/wiki/Planning
Downloads area: http://code.google.com/p/gdnsd/downloads/list

As noted in http://code.google.com/p/gdnsd/wiki/Requirements (which
haven't been updated for the portability improvements in 1.1.1 yet)
you will also need to download, build, and install my
http://code.google.com/p/libvscf/ package as a gdnsd pre-requisite.

The source is currently in an svn repo on Googlecode, with branching
managed by SVK. I expect to switch this project to git (probably
github) in the near future, probably shortly after 1.2.0 goes out the
door.

Thanks for your time,
-- Brandon

Loading...