4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafsson$Id: README,v 1.1 2001/07/12 02:02:09 gson Exp $
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonThis is queryperf, a DNS server query performance testing tool.
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonIt is primarily intended for measuring the performance of
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonauthoritative DNS servers, but it has also been used for measuring
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssoncaching server performance. This document describes the use of
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonqueryperf for authoritative server performance testing.
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonTo build queryperf, just do
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonThe test environment
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonIt is recommended that you run queryperf and the name server under
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssontest on separate machines, so that the CPU usage of queryperf itself
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssondoes not slow down the name server. The two machines should be
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonconnected with a fast network, preferably a dedicated 100baseT
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonsegment. Testing through a router or firewall is not advisable.
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonConfiguring the server
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonThe name server under test should be set up as an authoritative
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonserver, serving one or more zones similar in size and number to
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonwhat the server is expected to serve in production.
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonBe sure to turn off recursion in the server's configuration
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafsson(in BIND 8/9, specify "recursion no;" in the options block).
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonIn BIND 8, you should also specify "fetch-glue no;"; otherwise
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonthe server may attempt to retrieve glue information from the
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonInternet during the test, slowing it down by an unpredictable
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonConstructing the input file
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonYou need to construct a queryperf input file containing a large and
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonrealistic set of queries, on the order of ten thousand to a million.
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonThe input file contains one line per query, consisting of a domain
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonname and an RR type name separated by a space. The class of the
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonquery is implicitly IN.
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonWhen measuring the performance serving non-terminal zones such as the
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonroot zone or TLDs, note that such servers spend most of their time
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonproviding referral responses, not authoritative answers. Therefore, a
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonrealistic input file might consist mostly of queries for type A for
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonnames *below*, not at, the delegations present in the zone. For
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonexample, when testing the performance of a server configured to be
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonauthoritative for the top-level domain "fi.", which contains
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssondelegations for domains like "helsinki.fi" and "turku.fi", the input
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonfile could contain lines like
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonwhere the "www" prefix ensures that the server will respond with a
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonreferral. Ideally, a realistic proportion of queries for nonexistent
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssondomains should be mixed in with those for existing ones, and the lines
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonof the input file should be in a random order.
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonRunning the tests
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonQueryperf is run specifying the input file using the "-d" option, as
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafsson queryperf -d input_file -s server
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonThe output of queryperf is mostly self-explanatory. Pay attention to
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonthe number of dropped packets reported - when running the test over a
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonlocal Ethernet connection, it should be zero. If one or more packets
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas Gustafssonhas been dropped, there may be a problem with the network connection.
4848fe4ad2c0ba6e2e69e4a2617727f8556d79a0Andreas GustafssonIn that case, the results should be considered suspect and the test