rootperf.py performs DNS queries and traceroutes to the DNS root servers. Results of these tests are then output in JSON.
By default rootperf.py performs the tests specified in RSSAC057.
rootperf.py [-h] [-d DELAY] [-n NUM_TESTS] [-o OUT_FILE] [-q QUERY_TIMEOUT] [-t TLDS] [-v] [--threads {1,2,3,4,5,6}] [--no-tcp] [--no-udp] [--no-ipv4] [--no-ipv6] [--no-traceroute]
-h, --help
show this help message and exit
-d DELAY, --delay DELAY
Delay between tests in seconds (default: 0.05)
-n NUM_TESTS, --num-tests NUM_TESTS
Number of test cycles per-TLD (default: 10)
-o OUT_FILE, --out-file OUT_FILE
Filename for output (default: )
By default rootperf.py outputs to the user's tty.
-q QUERY_TIMEOUT, --query-timeout QUERY_TIMEOUT
DNS query timeout in seconds (default: 1)
-t TLDS, --tlds TLDS
Comma separated list of TLDs to query, or number between 1 and 100 for
random TLDs (default: com)
If passed a comma separated list of TLDs rootperf.py will use them. If passed a number between 1-100 rootperf.py will choose a random place in the root zone then crawl it until enough TLDs are discovered for testing.
-v, --verbose
Verbose output, repeat for increased verbosity (max: 3)
--threads {1,2,3,4,5,6}
Number of threads to run concurrently (default: 6)
By default each test is run asynchronously using a pool of threads. Decreasing the number of threads could provide more accurate results at the expense of test duration.
--no-tcp
Disable TCP testing
--no-udp
Disable UDP testing
--no-ipv4
Disable IPv4 testing
--no-ipv6
Disable IPv6 testing
--no-traceroute
Disable traceroute for both IPv4 and IPv6
UDP port 53 is used for traceroute probes.
rootperf.py requires Python3 and dnspython 2.0.0 or higher.