Dear RSSAC Caucus Members,

I’ve been working on an implementation of RSSAC057: Requirements for Measurements of the Local Perspective on the Root Server System.

It can be found here:
<https://github.com/rssac-caucus/perf_root>

It’s a python script that relies heavily on dnspython. It has a bunch of CLI options, but if executed without any options it will perform according to RSSAC057 and output JSON when it finishes. Attaced is a JSON file from running it at an Amsterdam datacenter.

There are two discrepencies I note below. Otherwise I believe it conforms with RSSAC057.
- It only performs UDP traceroutes and RSSAC057 specifies UDP and TCP traceroutes. TCP traceroute requires root and I didn’t think it wise for this script to require root.
- RSSAC057 specifies a traceroute probe timeout of 5 seconds. I instead chose to use the variable default of the traceroute binary judging that it probably knows best.

And below are a couple gotchas I note for people interested in testing it.
- It requires dnspython 2.2.0, which is really new. I needed 2.2.0 because it adds the ability to set specific DNS flags in dns.message.make_query().
- I’ve developed this on Debian Linux, but it theoretically should work on anything that supports python3 and dnspython. The thing that will break is the python mulItprocessing.pool library which I use to perform all the testing asynchronously. I could not get this library to properly handle UNIX signals on OpenBSD, so I don’t recommend running this on OpenBSD. It did work on FreeBSD when I tested it. I’m definitely interested in the experiences of others on OSs other than Linux.

Thanks,
Andrew