Skip to content

Releases: DNS-OARC/dnsperf

Release 2.14.0

18 Jan 12:45
Compare
Choose a tag to compare

This release rewords connection statistics, adds names to threads and fixes a bug with using TSIG in more than one thread.

Packages are available at: https://dev.dns-oarc.net/packages/

In "Connection Statistics", reconnections has been renamed to connection attempts and now includes both the initial connection attempt and following reconnections.

If supported, threads will now be named after what they do, such as "perf-send-" and "perf-recv-".

The TSIG context was shared between all threads and would case a crash if more than one sending thread was used. This has been fixed and TSIG contexts are now per thread.

81dc36b TSIG context per thread
55011c6 Thread names
8bdd480 thread names
17c680d Set thread names for dnsperf
54e641d Add library function to set thread names
fb19440 Dockerfile
a80de21 Reword connection statistics
688a4fd Reword connection statistics

Release 2.13.1

23 Aug 13:09
Compare
Choose a tag to compare

This release fixes a few issues with in-progress queries and the TCP transport module.

Packages are available at: https://dev.dns-oarc.net/packages/

When using stateful connections, such as TCP, if the full query couldn't be sent in one go then the query and connection could get stuck as "in-progress". This could easily happen if you limited the in-flight queries to 1 and sent very large DNS messages using the stream binary format. Additional socket ready checks has been added to flush in-progress queries as quickly as possible.

The TCP module's handling of errors when continuing in-progress queries has been fixed. Previously it would interpret EAGAIN as an unrecoverable error and trigger a reconnect, dropping the quer-y/ies in-progress for that connection.

Other changes:

  • Fix input data buffer to allow for maximum binary blob wire format, 2 byte size + max DNS message
  • Mention PowerTools repository for building on CentOS etc

56e180c In-progress, bitmaps, clang-format
bbc48db In-progress
059619d In-progress
752575a TCP EAGAIN
d51a453 Max input
76764d7 64k TCP/DoT payload support
8201f50 Doc

Release 2.13.0

15 Jun 11:44
Compare
Choose a tag to compare

This release adds a new option -O tls-sni=... to set the Server Name Indication when using TLS transport, currently for DNS-over-TLS and DNS-over-HTTPS.

Packages are available at: https://dev.dns-oarc.net/packages/

dbe84f6 TLS SNI
5fb2282 Add TLS Server Name Indication extension support

Release 2.12.0

21 May 08:55
Compare
Choose a tag to compare

This release fixes a segfault when doing DNS-over-HTTPS and changes the way maximum queries per second are handled.

The DNS-over-HTTPS module handled reconnecting incorrectly and destroyed the nghttp2 context during callbacks. Thanks to the help from @kgillis2000 it was quickly found and fixed.

The way maximum QPS is handled has been changed by Petr Špaček @pspacek (ISC). The new way solves an over-shoot problem that happened due to max QPS being counted for the whole runtime and based on completed queries, not just sent.

A new option qps_threshold_wait has also been added. This controls the threshold for using nanosleep() between sending packet and the default is measured on start-up. If the time between packets, based on max QPS -Q, is smaller then no sleep will be performed. This improves performance when doing high max QPS limiting.

Other changes:

  • dnsperf: Statistics output
    • Fixed missing connection statistics if only reconnections happened
    • Flush output to allow pipe/grep processing
    • Add percentage on reconnections based on total connections
  • Support OpenSSL 3.0+

Packages are available at: https://dev.dns-oarc.net/packages/

9aca046 OpenSSL 3.0
6d3d6b4 Stats, DoH
316f901 qps_threshold_wait
ed52770 WIP: use busy wait only if necessary
32229b6 WIP: import nanosleep benchmark
1842b88 Fix dnsperf -Q to not overshot target value

Release 2.11.2

16 Mar 08:17
Compare
Choose a tag to compare

Fixed long option argument handling (again), wasn't completely fixed in v2.11.1.

Packages are available at: https://dev.dns-oarc.net/packages/

e6dbd78 Long opt

Release 2.11.1

10 Mar 09:10
Compare
Choose a tag to compare

Fixed long option argument handling that broke in v2.11.0 and enhanced long option help text, now includes argument type.

Packages are available at: https://dev.dns-oarc.net/packages/

034e893 Long opt

Release 2.11.0

08 Feb 15:01
Compare
Choose a tag to compare

A couple of new features this release courtesy of Petr Špaček @pspacek (ISC) and a bunch of bugfixes.

Packages are available at: https://dev.dns-oarc.net/packages/

First off dnsperf can now do verbose statistics during each interval when using -S, see long option verbose-interval-stats.

Next is a new latency histogram output using data structures (hg64) created by Tony Finch @fanf2 (ISC), see long option latency-histogram. These will also be shown during -S when used together with verbose-interval-stats.

Lastly a small change to boolean long options, they no longer require a value (=yes) to be enabled.

Bugfixes:

  • Make sure the number of outstanding queries don't go negative, happens if queries are timed out before being sent
  • Fixed #208:
    • recv_one(): Fix handling errno, only store EAGAIN if no other error has been received
    • do_recv(): Don't break on error as it will count it as a received message
    • Treat EBADF as EAGAIN for stateful connections, receive thread might read from a closed socket if send thread is reconnecting
  • dnsperf: warn if -c, -T, -q, -Q values are auto-adjusted
  • Fixed #222: don't process unexpected message if the message is suppressed

14db835 Opt arg
fb81481 Suppress unexpected
64b8c6d stats_t initialization
8290775 Fix first call to diff_stats
4f8bd24 Compile support histograms
a9b4f04 External code, latency histograms
d1f4b65 add detailed latency histograms
044e3a2 data structures for detailed latency histograms
ad3fb03 Opt, verbose statistics
38bc936 Command usage warnings
9f31595 Bad file descriptor
d3650eb Receive socket error handling
84c8e72 Negative outstanding
e7df5e1 Clarify meaning of dnsperf -S output in the man page
830eb43 verbose interval stats for dnsperf

Release 2.10.0

11 Nov 14:24
Compare
Choose a tag to compare

This release adds a binary datafile (DNS wire) format to dnsperf thanks to a contribution from Petr Špaček @pspacek (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!

See man-page for -B for more information and examples how to use.

Packages are available at: https://dev.dns-oarc.net/packages/

5971cb9 Doc
a241068 CodeQL
2a7d10a Fix CodeQL workflow
0ce15f6 Fix COPR
0ae4a54 CodeQL
f52e4b1 wire format input
c423aa9 wire format input
2b0693d Input binary format

Release 2.9.0

08 Dec 10:49
Compare
Choose a tag to compare

This release brings a new message suppression option and a way to control how many queries are sent over a connection.

Packages are available at: https://dev.dns-oarc.net/packages/

You can now suppress the message about receiving unexpected DNS message IDs by using -O suppress=unexpected.

With -O num-queries-per-conn=<num> you can now limit the number of queries sent over a connection before triggering a re-connection, see the dnsperf(3) man-page for more information how this works.

cd9df40 Tests
864a968 Queries per connection
7c5d6ab Suppress unexpected
8e9f4a2 Suppress

Release 2.8.0

02 Nov 10:43
Compare
Choose a tag to compare

This release fixes response handling for DNS-over-HTTPS when multiple responses are received within the same receive cycle, and adds a new option to suppress some of the normal and verbose output.

Packages are available at: https://dev.dns-oarc.net/packages/

The network model within dnsperf and resperf can not process more then one response at a time from a protocol module, so a buffer has been added to the DNS-over-HTTPS module to handle this situation (this already exists in all other modules).

The new option -O suppress=<message,...> can selectively suppress parts of the normal and verbose output. Some of these messages might be excessively displayed due to the network model and depending on what protocol you use which makes usage harder then necessary. For example during TCP connection stage, if you end-point is slow to establish connection you will get a lot of output saying that the socket isn't ready yet.

6a452b0 DoH response handling
e2828e7 Suppress