Monday, April 27, 2009

New Deadwood snapshot

In the 20090427-1 snapshot of Deadwood, I have polished up the code that takes a DNS-over-TCP connection and converts it in to a DNS-over-UDP connection to send upstream.
  • TCP idle timeout works again
  • TCP DNS queries will use cached entries before trying to make a UDP connection
  • All compile-time warnings removed
  • Marco Njezic pointed out Windows service won't run if there was a space in a path to Deadwood.exe; fixed.
It can be downloaded at maradns.org/deadwood/snap

The next thing to do is to have it so, if we get a DNS-over-TCP query, and sending a UDP query upstream results in a truncated packet, we try to get the query upstream over TCP and send the full packet back over TCP. (UDP queries that get truncated packets will get a truncated reply)

If we cache these replies, it's important to note they're too big to fit in a UDP packet and must be sent over TCP.

As an aside, these kinds of packets are very rare. The upstream DNS servers I have been using for a while have recently started dropping DNS-over-UDP packets, and I didn't even notice until I did TCP testing with Deadwood.