LDplayer is a configurable, general-purpose DNS trace replay and modification system that enables DNS experiments at scale in several dimensions: many zones, numerous levels of DNS hierarchy, large query rates, and diverse query sources.
It can emulate DNS hierarchy efficiently using minimal commodity hardware in a lab environment.
We describe and evaluate LDplayer in the following paper: [1]
LDplayer consists of a number of components.
dns-replay-client replays DNS queries against a real DNS server with correct timing. Optionally it can log the latency for each query, or the timing for each query and response. Multiple instances of dns-replay-client can work coordinately to replay large query stream with dns-replay-controller.
Distribute DNS query stream and to queriers (dns-replay-client).
Change DNS queries in a network trace file and generate binary input for dns-replay-{controller,client}.
dns-replay-proxy manipulates packet addresses to emulate DNS hierarchy in LDplayer. Specifically, dns-replay-proxy reads packets from the given tunnel interface, rewrites the source and destination addresses, recomputes the check-sum and sends out the modified packets.
A set of scripts that set up port-based routing and dns-replay-proxy for replaying queries against a recursive server in LDplayer.
A set of scripts that generate zone files in order to replay queries against a recursive server in LDplayer.
use dns-zone-constructor to build zones when needed
There are two types of trace replay:
For replaying queries to a recursive server, you need dns-zone-constructor to build zone files and generate DNS server configurations in order to emulate DNS hierarchy in LDplayer.
For replaying queries to an authoritative server, you need to get the zone files of the authoritative server from the operators.
setup and run experimental DNS servers
For replaying queries to a recursive server:
For replaying queries to an authoritative server,
convert input trace to binary format (optional but recommended)
It is recommended to use binary input files when the input query rate is high, in order to achieve the actual query rate.
For more details about converting input format, see dns-query-mutator.
run dns-replay-controller (optional but recommended)
It is recommended to run multiple query clients (dns-replay-client) in parallel to achieve large query rate. dns-replay-controller is required to distribute input data to dns-replay-client.
A sample script for setup 4 and 5 is here.