“You can't optimize it until you can measure it”
Command Line Syntax Quick Reference
The Benchmark's (entirely optional) command-line syntax is a series of commands, each beginning with a forward slash '/' character, immediately followed by one of eight possible command verbs, possibly followed by a filename, an IP address, or a special token, as follows: /add <ini-file> | <dotted IP> | system | public | all /remove <ini-file> | <dotted IP> | system | public | dead | all /auto ( <log-file> ) /domains <ini-file> /dnssec /nosend /run /help -or- /? example: dnsbench /auto /remove public /add myownlist.ini • <angle brackets> are replaced with a filename. • (parentheses) enclose optional items. • A vertical bar | indicates a choice of one item. • Only space characters can be used to separate command line items. • Filenames containing embedded spaces must be enclosed within quotes. • The default file location is the current directory (which is not necessarily the program's directory) unless it is overridden with an absolute or relative file path. ________________________________________________________________________________ Program Termination Errorlevels: Upon termination, the DNS Benchmark will return with one of a number of errorlevels that can be sensed and used to direct automated scripts, as desired: 0 - No error, normal return. 1 - File not found. 2 - No IPs found in file. 3 - Too many (>200) nameserver IPs while reading file. 4 - No nameservers to test. 5 - No Internet connectivity at time of test. 6 - Lost connectivity during testing. 7 - Log file creation failure. 8 - Log file writing failure.
When multiple commands are present on the command-line, they are processed in the order of their occurrence, from left to right. This sequence matters in the case of the /add and /remove commands since if the lists of nameserver IPs they are adding and removing happen to overlap, the effects will be cumulative.
The /add command requires exactly one of the following parameters:
This would first remove all of the regularly-loaded nameservers (due to the “/remove all” command), then would add the list of nameserver IPs contained within the user-created file “mylist.ini.” Note that in this example, “/remove all” needs to appear first, otherwise the user's supplied list would simply be added to all of the Benchmark's system and built-in public nameservers.
The /remove command requires exactly one parameter from the set shown above for the “/add” command.
The /remove command also accepts the token “dead” to instruct the Benchmark to automatically remove any unresponsive (dead) DNS resolvers from the list of IPs to be benchmarked.
The /remove command does the reverse of the “/add” command: It removes the indicated IP, or list of IPs, from the benchmark's list of nameservers to test. If, for example, you did not wish to test your system's currently configured (system) nameservers, you might use a command of this form:
This would simply remove all of the local system's currently configured nameservers from the Benchmark's list of nameservers to test.
The /auto command causes the DNS Benchmark to run entirely in the background — without any user interaction or user-interface — and, upon completion, to dump a comprehensive report of the benchmarking results to a “comma separated values” (CSV) log file. If the /auto command is given without a filename, the Benchmark will automatically create and name a logfile based upon the completion time of the benchmark. The filename will have this form:
Since the date and time is given in UTC time, a benchmark that completed on March 23rd, 2010 at 22:39:03 (UTC), would create a logfile named:
If anything other than another command '/', or the end of the command line, follows the /auto command, it will be taken as the logfile's filename and will be used instead of the internally generated timestamp filename.
The program's termination “errorlevel” return code (see green box above) can be tested upon termination to verify the proper operation of the benchmark and to detect and diagnose any trouble that may have occurred.
If you employ any sort of scheduled or timed DNS benchmarking — for example, Windows' Task Scheduler can be used to automatically run the Benchmark at specified times — please remember that any significant activity on the local network will have a significant impact upon the measured speed and apparent reliability of the Benchmarked nameservers.
The /domains command causes the Benchmark to replace its standard list of fifty (50) domain names with whatever list the user supplies in the specified file. This can be useful for “localizing” the Benchmark so that the domains it is testing against are more relevant to the location where the Benchmark is being used.
By default, DNS lookups of the following set of fifty (50) domains are used with every nameserver in the Benchmark's testing list:
The default domain name list is contained in this simple text file: domains.txt.
You may freely edit the file, adding or subtracting domains as you choose, or completely replacing it with a list of your own. The domain names used by the Benchmark were chosen for their worldwide popularity with any potentially offensive or controversial domains removed.
Note: Although using fewer than fifty (50) domain names will shorten the Benchmark's total running time, fewer test samples will reduce the accuracy and reproducibility of the benchmark's results. Conversely, increasing the length of the list would increase the total running time while producing somewhat more consistent results. After extensive testing and statistical analysis, a list of fifty (50) domains was chosen as the best compromise between speed and reliable results.
The /dnssec command instructs the Benchmark to employ the DNSSEC security extensions in the queries it generates. Including this command on the command-line is equivalent to enabling the DNSSEC option through the Benchmark's user-interface, so this command allows DNSSEC to be used during automated testing (where no user-interface is present). Furthermore, if you wished to always have DNSSEC enabled, you could create a Windows shortcut that specifies this option in the shortcut so that it would always be enabled by default whenever the Benchmark was started by using the shortcut.
Note: At the time of this benchmark's initial release (June, 2010) DNSSEC support is so poor that enabling this option will cause many of the resolvers on the Benchmark's default list to fail catastrophically. You should, therefore, test the use of this option carefully and perhaps use it only with resolvers that are capable of resolving DNSSEC-enabled queries. At some point in the future, when DNSSEC is more widely supported, this feature will likely be enabled by default, with an option to disable when needed.
The /nosend command instructs the Benchmark not to send the list of the 200 fastest resolvers, resulting from the user's building or re-building of a custom nameserver list, back to GRC. In order to assemble a database of the world's most useful DNS resolvers, at the same time as the “top 50 fastest resolvers” are determined and built into a final list, by default the Benchmark also sends a list of the top 200 fastest resolvers found by the scanning process back to GRC. Over time this will allow GRC to eliminate those resolvers that have never made it into anyone's top 50 list from its master list so that the custom list building will be faster for everyone.
If a user objects to this information being returned to GRC, they may start the Benchmark with the '/nosend' option to suppress this transmission. Also, some WINE emulations hosted on Linux/Unix/Mac lack the ability to communicate over SSL (Secure Sockets Layer) from within their emulated Windows environment. Since the results of the resolver scan are sent over an encrypted SSL connection, some WINE installations will crash when attempting to make this SSL connection. In such cases the '/nosend' option can be used to suppress the sending and prevent the application crash in WINE.
The /run command automatically starts the benchmark running without needing to select tabs and press the usual “Run Benchmark” button on the user interface. Unlike with the /auto command, the user-interface is still presented. The /run command is just a handy way for loading and starting the benchmark running in an absolutely minimum of time. As with the /dnssec command described above, if you always wanted the Benchmark to start right up upon loading, you could create a Windows shortcut to always include the /run command on the start-up command-line.
The /help command (also abbreviated as a question mark) displays the Command-Line Help screen within the user-interface. Like the chart in the green box at the top of this page, the help screen is an easily accessible quick reference to the commands and other information shown on this web page.
This command-line reference will also be displayed in the event of any command line construction that violates the syntax rules shown on this page. If the Benchmark isn't sure what you mean, it'll remind you how to form its command-line commands and parameters.
Gibson Research Corporation is owned and operated by Steve Gibson. The contents
of this page are Copyright (c) 2016 Gibson Research Corporation. SpinRite, ShieldsUP,
NanoProbe, and any other indicated trademarks are registered trademarks of Gibson
|Last Edit: Oct 02, 2010 at 13:09 (2,398.30 days ago)||Viewed 8 times per day|