DNS is designed to store a number of record types; each type has its own format for storing data. However, DNS does not have a mechanism for parsing resource record types which are not hard-coded in the DNS server attempting to parse the data in question.
The purpose of this document is to start to alleviate this issue. The most important reason for this is so that new DNS record types can be potentially decompressed without needing to recode legacy DNS servers which do not have knowledge of a new resource record.
DNS compression is designed so that, if a DNS server does not know where compressible DNS labels are in the RDDATA for a given record, the server will not be able to decompress the label in question. Since it is desirable to have new record types be decompressed, there needs to be a way to easily inform DNS servers of the format for resource records.
This document only describes a way of describing resource records in a machine-parsable format; it will not discuss possible ways of having DNS servers receive this data over a network connection from remote DNS servers which the local DNS server can not necessarily trust.
What the format describes
The format will describe the data format a given DNS RR type will contain, the symbolic name for the record in question, whether domain labels in the RR should be compressed, and a text description of the purpose of the data in the resource record.
The data format is as follows:
Description of data in the RR
The description of RR is one or more atoms delimited by semicolons; semicolon delimiters are only used when there is more than one data atom. The data atom describes are the data is formatted; the atom does not attempt to place significance on the data.
The following atoms are supported:
Example Description file
A description file is a string of one or more RR descriptions. Here is one which covers all of the RRs which MaraDNS currently can decompress or parse:
:1|A|4|N|en;IPv4 Addresses [RFC 1035]; :2|NS|D|C|en;NS (name server) records [RFC 1035]; :3|MD|D|N|en;[RFC 1035]; :4|MF|D|N|en;[RFC 1035]; :5|CNAME|D|C|en;CNAME records [RFC 1035]; :6|SOA|D;D;4;4;4;4;4|C|en;SOA records [RFC 1035]; :7|MB|D|N|en;[RFC 1035]; :8|MG|D|N|en;[RFC 1035]; :9|MR|D|N|en;[RFC 1035]; :12|PTR|D|C|en;Reverse DNS lookup records [RFC 1035]; :14|MINFO|D|N|en;[RFC 1035]; :15|MX|2;D|C|en;Mail exchanger records [RFC 1035]; :16|TXT|T;V|N|en;Text data [RFC 1035]; :17|RP|D|N|en;[RFC 1183]; :18|AFSDB|2;D|N|en;[RFC 1183]; :21|RT|2;D|N|en;[RFC 1183]; :33|SRV|2;2;2;D|N|en;Service [RFC 2052];