[dns-operations] DNS Traffic Archive Protocol

Robert Edmonds edmonds at isc.org
Thu Dec 2 21:55:39 UTC 2010

you wouldn't want to use dnsqr for this use case since dnsqr is designed
to be losslessly convertible to pcap format.  dnsqr is also somewhat
biased towards passive DNS replication on recursive servers where the
response is quite important.  it's less important to keep responses when
monitoring authoritative nameservers, of course.

nmsg (which is distinct from dnsqr, which is simply an nmsg plugin),
however, might be more useful, as it's basically an encapsulation format
for payloads encoded in google protobuf format:


a protobuf representation of your data would be somewhat less efficient
than packing the bits by hand, but i suspect with compression the sizes
might be competitive.  protobuf is still quite efficient, though, see:


you might also consider an "aggregated" format for older data.  that is,
given a stream of multiple data tuples that differ only by timestamp,

    time: T_1
    data: foo

    time: T_2
    data: foo

    time: T_3
    data: bar

    time: T_4
    data: foo

    time: T_5
    data: bar

you aggregate this into:

    time_first: T_1
    time_last: T_4
    count: 3
    data: foo

    time_first: T_3
    time_last: T_5
    count: 2
    data: bar

nmsg / protobufs make this easy since you can use the exact same schema
for the pre- and post- aggregated data sets.  hand-packed structs are
less flexible in this regard.

i've used this approach for aggregating both ZFA TLD data as well as
passive DNS data.  when aggregated on monthly boundaries i get about a
20X reduction in size for ZFA TLD data and about a 10X reduction in size
for passive DNS data.  i'd be interested if this strategy works for
authoritative nameserver traces as well.

if you're interested in developing custom code based on nmsg, the
mailing list is here:


Bedrich Kosata wrote:
> Dear Paul,
> I must admit that I checked it only very briefly. My impression was
> that it was too low level for our use - for example TCP traffic is
> stored as raw packets - and that it would also take to much space.
> One of the important features of what we do is that we (optionally)
> throw some of the things out, which I am not sure is possible with
> dnsqr.
> However, after the responses on this mailing list, I will certainly
> give it a try to see how it works for us and probably report back
> what I find.
> Best regards
> Beda
> On 12/02/2010 01:52 PM, Paul Vixie wrote:
> >bedrich, did you look at nmsg's dnsqr schema and tool set before you set
> >out? --paul

Robert Edmonds
edmonds at isc.org

More information about the dns-operations mailing list