|
The Domain Name System is now over 25 years old. Since the publication of RFCs 1034 and 1035 in 1987, there have been over 100 RFC documents published that extend and clarify the original DNS specs. Although the basic design of the DNS hasn’t changed, its definition is now extremely complex, enough so that it’s a challenging task to tell whether a DNS package correctly implements the specs.
Over the past year, Paul Hoffman and I have been working on a conformance test suite for the DNS. We built sofware tools that let us take all of those RFCs and identify the parts of each DNS that define requirements for DNS software. For each requirement, we created tests for anything that was reasonably testable, as opposed to an operational policy.
Different enterprises and vendors will have different views of what should or should not be tested, so the conformance test system allows easy selection of subsets of requirements to be tested. The entire system is made available under Creative Commons licenses so that anyone can use it and adapt it for local requirements. In addition, the overall test system is able to serve as the basis for creating conformance tests for other protocols.
The heart of the project is a database of all the RFCs and other documents that specify the current DNS. That database has an interactive web front-end and associated tools for marking up the requirements in the RFCs, and specifying tests for each requirement. The database can be turned into an HTML-formatted test plan that can be used to test conformance to the DNS specifications.
We assumed that people might disagree on some of the requirements in the RFCs, and might have different ideas about what tests to run for some requirements. Anyone can modify their own copy of the database and create their own test plans from their database. Because the test plans are valid structured HTML, comparing test plans is easy with any file comparison tool, particularly ones that are optimized for comparing HTML files.
The entire package is available for download on our web site. It’s written in python and mysql. We’ve run it on Ubuntu and FreeBSD, and it should be straightforward to get working on any system with reasonably recent python, mysql, and Apache software.
We thank the sponsors that made this project possible: Akamai, Dyn, Google, ICANN, Microsoft, and Verisign.
Sponsored byIPv4.Global
Sponsored byCSC
Sponsored byWhoisXML API
Sponsored byDNIB.com
Sponsored byVerisign
Sponsored byVerisign
Sponsored byRadix