1*00b67f09SDavid van Moolenbroek 2*00b67f09SDavid van MoolenbroekId: README,v 1.1 2001/07/12 02:02:09 gson Exp 3*00b67f09SDavid van Moolenbroek 4*00b67f09SDavid van MoolenbroekThis is queryperf, a DNS server query performance testing tool. 5*00b67f09SDavid van Moolenbroek 6*00b67f09SDavid van MoolenbroekIt is primarily intended for measuring the performance of 7*00b67f09SDavid van Moolenbroekauthoritative DNS servers, but it has also been used for measuring 8*00b67f09SDavid van Moolenbroekcaching server performance. This document describes the use of 9*00b67f09SDavid van Moolenbroekqueryperf for authoritative server performance testing. 10*00b67f09SDavid van Moolenbroek 11*00b67f09SDavid van Moolenbroek 12*00b67f09SDavid van MoolenbroekBuilding 13*00b67f09SDavid van Moolenbroek 14*00b67f09SDavid van MoolenbroekTo build queryperf, just do 15*00b67f09SDavid van Moolenbroek 16*00b67f09SDavid van Moolenbroek sh configure 17*00b67f09SDavid van Moolenbroek make 18*00b67f09SDavid van Moolenbroek 19*00b67f09SDavid van Moolenbroek 20*00b67f09SDavid van MoolenbroekThe test environment 21*00b67f09SDavid van Moolenbroek 22*00b67f09SDavid van MoolenbroekIt is recommended that you run queryperf and the name server under 23*00b67f09SDavid van Moolenbroektest on separate machines, so that the CPU usage of queryperf itself 24*00b67f09SDavid van Moolenbroekdoes not slow down the name server. The two machines should be 25*00b67f09SDavid van Moolenbroekconnected with a fast network, preferably a dedicated 100baseT 26*00b67f09SDavid van Moolenbroeksegment. Testing through a router or firewall is not advisable. 27*00b67f09SDavid van Moolenbroek 28*00b67f09SDavid van Moolenbroek 29*00b67f09SDavid van MoolenbroekConfiguring the server 30*00b67f09SDavid van Moolenbroek 31*00b67f09SDavid van MoolenbroekThe name server under test should be set up as an authoritative 32*00b67f09SDavid van Moolenbroekserver, serving one or more zones similar in size and number to 33*00b67f09SDavid van Moolenbroekwhat the server is expected to serve in production. 34*00b67f09SDavid van Moolenbroek 35*00b67f09SDavid van MoolenbroekBe sure to turn off recursion in the server's configuration 36*00b67f09SDavid van Moolenbroek(in BIND 8/9, specify "recursion no;" in the options block). 37*00b67f09SDavid van MoolenbroekIn BIND 8, you should also specify "fetch-glue no;"; otherwise 38*00b67f09SDavid van Moolenbroekthe server may attempt to retrieve glue information from the 39*00b67f09SDavid van MoolenbroekInternet during the test, slowing it down by an unpredictable 40*00b67f09SDavid van Moolenbroekfactor. 41*00b67f09SDavid van Moolenbroek 42*00b67f09SDavid van Moolenbroek 43*00b67f09SDavid van MoolenbroekConstructing the input file 44*00b67f09SDavid van Moolenbroek 45*00b67f09SDavid van MoolenbroekYou need to construct a queryperf input file containing a large and 46*00b67f09SDavid van Moolenbroekrealistic set of queries, on the order of ten thousand to a million. 47*00b67f09SDavid van MoolenbroekThe input file contains one line per query, consisting of a domain 48*00b67f09SDavid van Moolenbroekname and an RR type name separated by a space. The class of the 49*00b67f09SDavid van Moolenbroekquery is implicitly IN. 50*00b67f09SDavid van Moolenbroek 51*00b67f09SDavid van MoolenbroekWhen measuring the performance serving non-terminal zones such as the 52*00b67f09SDavid van Moolenbroekroot zone or TLDs, note that such servers spend most of their time 53*00b67f09SDavid van Moolenbroekproviding referral responses, not authoritative answers. Therefore, a 54*00b67f09SDavid van Moolenbroekrealistic input file might consist mostly of queries for type A for 55*00b67f09SDavid van Moolenbroeknames *below*, not at, the delegations present in the zone. For 56*00b67f09SDavid van Moolenbroekexample, when testing the performance of a server configured to be 57*00b67f09SDavid van Moolenbroekauthoritative for the top-level domain "fi.", which contains 58*00b67f09SDavid van Moolenbroekdelegations for domains like "helsinki.fi" and "turku.fi", the input 59*00b67f09SDavid van Moolenbroekfile could contain lines like 60*00b67f09SDavid van Moolenbroek 61*00b67f09SDavid van Moolenbroek www.turku.fi A 62*00b67f09SDavid van Moolenbroek www.helsinki.fi A 63*00b67f09SDavid van Moolenbroek 64*00b67f09SDavid van Moolenbroekwhere the "www" prefix ensures that the server will respond with a 65*00b67f09SDavid van Moolenbroekreferral. Ideally, a realistic proportion of queries for nonexistent 66*00b67f09SDavid van Moolenbroekdomains should be mixed in with those for existing ones, and the lines 67*00b67f09SDavid van Moolenbroekof the input file should be in a random order. 68*00b67f09SDavid van Moolenbroek 69*00b67f09SDavid van Moolenbroek 70*00b67f09SDavid van MoolenbroekRunning the tests 71*00b67f09SDavid van Moolenbroek 72*00b67f09SDavid van MoolenbroekQueryperf is run specifying the input file using the "-d" option, as 73*00b67f09SDavid van Moolenbroekin 74*00b67f09SDavid van Moolenbroek 75*00b67f09SDavid van Moolenbroek queryperf -d input_file -s server 76*00b67f09SDavid van Moolenbroek 77*00b67f09SDavid van MoolenbroekThe output of queryperf is mostly self-explanatory. Pay attention to 78*00b67f09SDavid van Moolenbroekthe number of dropped packets reported - when running the test over a 79*00b67f09SDavid van Moolenbroeklocal Ethernet connection, it should be zero. If one or more packets 80*00b67f09SDavid van Moolenbroekhas been dropped, there may be a problem with the network connection. 81*00b67f09SDavid van MoolenbroekIn that case, the results should be considered suspect and the test 82*00b67f09SDavid van Moolenbroekrepeated. 83