Provided by: knot-dnsutils_3.1.6-1ubuntu1_amd64 

NAME
kxdpgun - XDP-powered DNS benchmarking tool
SYNOPSIS
kxdpgun [options] -i filename targetIP
DESCRIPTION
Powerful generator of DNS traffic, sending and receiving packets through XDP.
Queries are generated according to a textual file which is read sequentially in a loop until a configured
duration elapses. The order of queries is not guaranteed. Responses are received (unless disabled) and
counted, but not checked against queries.
The number of parallel threads is autodetected according to the number of queues configured for the
network interface.
Options
-t, --duration seconds
Duration of traffic generation, specified as a decimal number in seconds (default is 5.0).
-T, --tcp
Send queries over TCP.
-Q, --qps queries
Number of queries-per-second (approximately) to be sent (default is 1000). The program is not
optimized for low speeds at which it may lose communication packets. The recommended minimum speed
is 2 packets per thread (Rx/Tx queue).
-b, --batch size
Send more queries in a batch. Improves QPS but may affect the counterpart's packet loss (default
is 10 for UDP and 1 for TCP).
-r, --drop
Drop incoming responses. Improves QPS, but disables response statistics.
-p, --port number
Remote destination port (default is 53).
-F, --affinity cpu_spec
CPU affinity for all threads specified in the format [<cpu_start>][s<cpu_step>], where <cpu_start>
is the CPU ID for the first thread and <cpu_step> is the CPU ID increment for next thread (default
is 0s1).
-i, --infile filename
Path to a file with query templates.
-I, --interface interface
Network interface for outgoing communication. This can be useful in situations when the interfaces
are in a bond for example.
-l, --local localIP[/prefix]
Override the auto-detected source IP address. If an address range is specified instead, various
IPs from the range will be used for different queries uniformly.
targetIP
The IPv4 or IPv6 address of remote destination.
-h, --help
Print the program help.
-V, --version
Print the program version.
Queries file format
Each line describes a query in the form:
query_name query_type [flags]
Where query_name is a domain name to be queried, query_type is a record type name, and flags is a single
character:
E Send query with EDNS.
D Request DNSSEC (EDNS + DO flag).
Signals
Sending USR1 signal to a running process triggers current statistics dump to the standard output.
NOTES
Linux kernel 4.18+ is required.
The utility has to be executed under root or with these capabilities: CAP_NET_RAW, CAP_NET_ADMIN,
CAP_SYS_ADMIN, and CAP_SYS_RESOURCE if maximum locked memory limit is too low on Linux < 5.11.
The utility allocates source UDP/TCP ports from the range 2000-65535.
EXIT VALUES
Exit status of 0 means successful operation. Any other exit status indicates an error.
EXAMPLES
Manually created queries file:
abc6.example.com. AAAA
nxdomain.example.com. A
notzone. A
a.example.com. NS E
ab.example.com. A D
abcd.example.com. DS D
Queries file generated from a zone file (Knot DNS format):
cat ZONE_FILE | awk "{print \$1,\$3}" | grep -E "(NS|DS|A|AAAA|PTR|MX|SOA)$" | sort -u -R > queries.txt
Basic usage:
# kxdpgun -i ~/queries.txt 2001:DB8::1
Using UDP with increased batch size:
# kxdpgun -t 20 -Q 1000000 -i ~/queries.txt -b 20 -p 8853 192.0.2.1
Using TCP:
# kxdpgun -t 20 -Q 100000 -i ~/queries.txt -T -p 8853 192.0.2.1
SEE ALSO
kdig(1).
AUTHOR
CZ.NIC Labs <https://www.knot-dns.cz>
COPYRIGHT
Copyright 2010–2022, CZ.NIC, z.s.p.o.
3.1.6 2022-02-08 KXDPGUN(8)