[dnstap] dnstap.proto updates: "extra" field and STUB_* Message types
Robert Edmonds
edmonds at isc.org
Tue Jun 25 18:13:40 UTC 2013
I've just pushed two changes to the dnstap protobuf schema. The first
is an "extra" field:
message Dnstap {
[...]
// Extra data for this payload.
// This field can be used for adding an arbitrary byte-string annotation to
// the payload. No encoding or interpretation is applied or enforced.
optional bytes extra = 3;
[...]
}
This lets cooperating dnstap-using software add extra data to the
payload for which it would be inappropriate to extend the dnstap schema
to support. General-purpose dnstap-enabled nameservers would ignore
this field.
The second change is the addition of STUB_QUERY and STUB_RESPONSE values
to the Message::Type enum. This fills out the complete RFC 1035 section
2 diagram:
message Message {
// There are eight types of "Message" defined that correspond to the
// four arrows in the following diagram, slightly modified from RFC 1035
// section 2:
// +---------+ +----------+ +--------+
// | | query | | query | |
// | Stub |-SQ--------CQ->| Recursive|-RQ----AQ->| Auth. |
// | Resolver| | Server | | Name |
// | |<-SR--------CR-| |<-RR----AR-| Server |
// +---------+ response | | response | |
// +----------+ +--------+
// Each arrow has two Type values each, one for each "end" of each arrow,
// because these are considered to be distinct events. Each end of each
// arrow on the diagram above has been marked with a two-letter Type
// mnemonic. Clockwise from upper left, these mnemonic values are:
//
// SQ: STUB_QUERY
// CQ: CLIENT_QUERY
// RQ: RESOLVER_QUERY
// AQ: AUTH_QUERY
// AR: AUTH_RESPONSE
// RR: RESOLVER_RESPONSE
// CR: CLIENT_RESPONSE
// SR: STUB_RESPONSE
[...]
enum Type {
[...]
// STUB_QUERY is a DNS query message sent from a stub resolver to a DNS
// server, from the perspective of the stub resolver.
STUB_QUERY = 9;
// STUB_RESPONSE is a DNS response message sent from a DNS server to a
// stub resolver, from the perspective of the stub resolver.
STUB_RESPONSE = 10;
}
[...]
}
Since this allows dnstap to support client-side query-initiating
software (dig, kdig, drill, dnsperf, etc.), I've updated references to
"DNS servers" and "nameservers" in the documentation to "DNS software".
The current version of the schema is here:
https://github.com/dnstap/dnstap.pb/blob/master/dnstap.proto
--
Robert Edmonds
edmonds at isc.org
More information about the dnstap
mailing list