Here are some DNS-OARC development highlights from the past months. Last update was in June, and it’s been a busy few months with both OARC 38 in Philadelphia, OARC AGM (online) and OARC 39 in Belgrade so I haven’t had time to write one until now. Previous blog posts are available on our Medium blog.
Check My DNS
I wish I had more updates around Check My DNS to talk about, but sadly I haven’t found the time to work on it. The plan was to work on it now in November but there’s been a lot of interest lately around using Grafana for DSC data, so my focus has changed towards that.
DSC, InfluxDB 2 and Grafana
At OARC 39 I became aware of the change in InfluxDB 2 thanks to discussions with a few OARC members.
Want to become an OARC member and participate in the largest DNS community of DNS experts while also helping me maintain and develop our open source projects?
See “Introduction to DNS-OARC” and “Joining and Participating in DNS-OARC” on https://www.dns-oarc.net/
InfluxDB 2 has introduced a new query language called Flux, but support for that in Grafana isn’t as exploration friendly as the old one. They also changed how databases are set-up and to use version 1 of the query language (InfluxQL) you need to add a specific mapping.
So right after OARC 39 I updated the wiki “Setting up a test Grafana” along with the example dashboards and they now work with the latest and greatest versions of dsc-datatool, InfluxDB and Grafana.
But work hasn’t stopped there! I’m also creating new dashboards with examples on how to display DSC data. Some examples are query failure rate, DO/RD bit ratio, stats grouped by server and top 20 RCODEs per IP/net. Once they are done, I will add them to “dsc-datatool’s wikis” and I still need to update the “Response Time” and “Geomap of queries per country” panels.
Sounds interesting? Wanna talk more? Find me in “OARC Software” on our Mattermost.
GitHub/LGTM CodeQL
I heard about CodeQL somewhere a few months ago, totally blanking on where from but I had noted it down as a TODO. Happily surprised to see that LGTM (now part of GitHub I believe) started doing pull-requests last week to add CodeQL scanning to our projects!
It’s only enabled on some projects so far, but I will enable it on all and deal with the alerts. Happy to add another free code analysis tool to our arsenal!
Releases
dnsperf v2.10.0
This release adds a binary datafile (DNS wire) format to dnsperf thanks to a contribution from Petr Špaček (ISC). The new binary format greatly improves performance in some cases, for Petr’s case it was testing dynamic updates. Switching to this pre-compiled DNS wire format increased QPS from 4k to 600k, an increase of 150 times throughput from dnsperf for that use-case! See man-page for -B
for more information and examples how to use.
cmdns-cli v1.0.0, v1.1.0
This is the CLI for Check My DNS written in Go and I’ve started tagging its releases so it’s easier to install via go get
.
Release v1.1.0 added the option -dump-dns
to…, yeah…, dump the DNS when using a specific resolver (-res
). It’s only possible to do with -res
because the tool is resolving the addresses itself instead of letting the OS do it.
dsc-datatool v1.3.0
This release adds option nonstrict
to client_subnet_authority
generator which makes it skip bad data in datasets instead of exiting with error. Useful if you’re generating the DSC XML and maybe not doing it 100% correctly all the time.
Also, for this release the Grafana test site dashboards have been moved to their own repository. Feel free to contribute your own creations!
golang-dns-server-doq v0.3.0
This release updates dependencies and Go version to 1.19.
ripeatlas v0.1.0 (+ v0.1.1)
First tagged release of RIPE Atlas Go bindings. Most notable recent change is a fix for version 4610 traceroute reply and v0.1.1 which fixes the fix.
Changes since 2017 (oldest first):
example/streamer
: Fix parameter checksstream
: Close #22: Protect channel with a mutex to prevent sending on and/or closing of a closed channel, and deadlocks- Remove Travis CI
measurement/traceroute/reply
: Version 4610 adds “Unrecognized error codes are represented as integers” forErr
, add support by converting error codes back to string (ref #25)- Add Go mod files
- Fix a bit of code formatting
measurement/traceroute/reply
: Fix parsing of numericErr
- Relicensed to MIT
- Add funding link
- Add build action
- Add
go.mod
to each example withreplace
to use local checked out code
Changes for release v0.1.1:
traceroute/reply
: Fix #28:Err()
: return empty string ifErr
is not astring
dnscap v2.1.0
This release adds a new option (-o pid_file=<file>
) to specify a PID file when running as daemon, corrects handling of LDNS include files for some plugins and updates the Root Server Scaling Measurement (RSSM) plugin w.r.t. the upcoming version 5 of RSSAC002 specifications.
The RSSM plugin can now optionally generate “label-count” metric. This is enabled with -L
and is tagged as “rssac002v5-draft” until v5 is finalized. The merge tool dnscap-rssm-rssac002
has also been updated because of this, there is now --skip-unsupported
to skip all unsupported RSSAC002 version metrics instead of die()
’ing.
UPDATE: After this release (Sept 9) the working group for RSSAC002v5 decided to remove “label-count” metric but I’ve decided to wait until the new specification document is done before updating the RSSM plugin further.
OARC 40 — Atlanta Feb 2023
Soon time (again) for our next conference! This time in Atlanta (Georgia, USA) on Thursday 16th & Friday 17th February — co-located with NANOG 87!
See you there!? :D
Cheers,
Jerry