[dns-operations] good async DNS library

Viktor Dukhovni ietf-dane at dukhovni.org
Thu Apr 25 22:02:28 UTC 2019

I am an informal co-maintainer of the Haskell DNS library:


Quite likely not the language you were thinking of, but the
library does support all the features you requested, and Haskell
makes concurrency a breeze without having to think about thread
safety much or at all.

DNSSEC validation other than trusting the AD bit from your
resolver would however be up to you, you can set the DO bit and
get all the records, but the library does not currently implement

It is used in the DANE survey code and easily generates and
sinks 2500 qps, while also doing some SMTP connections, and
a non-trivial mix of dead domains adding to the latency.

It can go faster at higher concurrency, but then the authoritative
servers might mistake me for a DoS and filter the queries...

> On Apr 25, 2019, at 5:08 PM, Klaus Darilion <klaus.mailinglists at pernau.at> wrote:
> For various monitoring scripts we use Perl's NET::DNS and Net::DNS::Async. Unfortunately they have various problems, ie Net::DNS::Async does not support DNSSEC and sending to other ports than 54, with Net::DNS's timeout/retries settings I never get the expected results ....
> Can someon recommend a DNS library (Perl, Python or PHP preferred) that supports:
> - async resolving


> - setting DO bit


> - EDNS0 options


> - proper timeout handling

Not sure what you mean by proper, but timeouts and retries are handled.

> - sending queries to non-standard ports
> - (optional: TCP fallback)



More information about the dns-operations mailing list