Re: creating new RRtypes

Hadmut Danisch <[email protected]> Fri, 17 Oct 2003 21:20:04 +0200
Newsgroups gmane.ietf.asrg.rmx
Message-ID <[email protected]>
Meng, 

On Fri, Oct 17, 2003 at 12:08:13PM -0400, Meng Weng Wong wrote:
> Hadmut, in researching the creation of a new RRtype, what have you discovered?
> 
> How long will it take to get a new type approved and created?
> 
> I know TinyDNS lets people definie arbitrary RRtypes using the ":" line.
> 
> Does BIND have a similar facility?

No, bind (i.e. I used bind9) does not have such a facility, as far as
I know. But it allows easy plugin of a new record type, you just have
to copy a new file in the tree. There's an automated code generator
which automatically recognizes the code file and generates the glue
code needed.

A huge problem is that bind9 is poorly documented but complicated. 
It took me much time to find the required procedures for preparing
the encoding, but once they are found it is not too difficult to 
generate whatever you want. 

One particular problem is a bug in bind9: The code generator
works only with RR Types 0..255, but not which larger numbers.
That's the problem: experimental record numbers are somewhere 
>32768, which does not work with bind9. Using a code number <255
works well, but is not allowed without having a STD RFC. I reported
this bug to the maintainers, but they refused to fix it, since the
maintainer for this code did not like RMX and RMX-like proposals, 
because he wants to be able to send mail with any address from
anywhere when on the road with his notebook. Not fixing the bug
was his kind of protest against RMX and similar proposal. Maybe it's 
fixed meanwhile.

I also had to learn that I've made a mistake: DNS has a mechanism
for compression of domain names to keep DNS packages small. 
E.g. if you query  host.domain.com at dns.domain.com, the reply
might contain "domain" several times. The second and subsequent
occurences of "domain" will be replaced with a reference to the
first occurence. While this works well with my test implementation,
it does not work if a Non-RMX-aware DNS Server is in the query queue, 
because since two years ago or so DNS server learned to forward 
unknown RR types unmodified. If such a server forwards a record
containing compressed domain names without de- and recompressing, 
the will produce rubbish. That's why I had to change my draft to 
not use domain name compression anymore. 

The good thing is that the plugin into bind9 is also used for the
resolver library. So it takes a single file to have both the server
and any client compiled. "dig" works well with that. 

I have no idea how long it takes to get a new type approved and 
created. There are three classes, the official ones, which will have
to go through some IETF procedure, half-official ones (forget how they
are called), and experimental. Experimental don't need an RFC, you can
use them immediately (if the bind9 bug is fixed).


regards
Hadmut