|
@@ -0,0 +1,253 @@
|
|
|
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
|
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
|
|
+ [<!ENTITY mdash "—">]>
|
|
|
+<!--
|
|
|
+ - Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC")
|
|
|
+ -
|
|
|
+ - Permission to use, copy, modify, and/or distribute this software for any
|
|
|
+ - purpose with or without fee is hereby granted, provided that the above
|
|
|
+ - copyright notice and this permission notice appear in all copies.
|
|
|
+ -
|
|
|
+ - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
|
|
|
+ - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
|
+ - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
|
+ - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
+ - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
|
+ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
+ - PERFORMANCE OF THIS SOFTWARE.
|
|
|
+-->
|
|
|
+
|
|
|
+<refentry>
|
|
|
+
|
|
|
+ <refentryinfo>
|
|
|
+ <date>September 25, 2013</date>
|
|
|
+ </refentryinfo>
|
|
|
+
|
|
|
+ <refmeta>
|
|
|
+ <refentrytitle>perfdhcp</refentrytitle>
|
|
|
+ <manvolnum>1</manvolnum>
|
|
|
+ <refmiscinfo>BIND10</refmiscinfo>
|
|
|
+ </refmeta>
|
|
|
+
|
|
|
+ <refnamediv>
|
|
|
+ <refname>perfdhcp</refname>
|
|
|
+ <refpurpose>DHCP benchmarking tool</refpurpose>
|
|
|
+ </refnamediv>
|
|
|
+
|
|
|
+ <docinfo>
|
|
|
+ <copyright>
|
|
|
+ <year>2013</year>
|
|
|
+ <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
|
|
|
+ </copyright>
|
|
|
+ </docinfo>
|
|
|
+
|
|
|
+ <refsynopsisdiv>
|
|
|
+ <cmdsynopsis>
|
|
|
+ <command>perfdhcp</command>
|
|
|
+ <arg><option>-v</option></arg>
|
|
|
+ </cmdsynopsis>
|
|
|
+ </refsynopsisdiv>
|
|
|
+
|
|
|
+ <refsect1>
|
|
|
+ <title>DESCRIPTION</title>
|
|
|
+ <para><command>perfdhcp</command> is a DHCP benchmarking tool.
|
|
|
+ It provides a way of measuring the performance of DHCP servers
|
|
|
+ by generating large amounts of traffic.
|
|
|
+ It is able to test both IPv4 and IPv6 servers.
|
|
|
+ It can time the initial two-packet exchange (DO and SA) and
|
|
|
+ the four-packet exchange (DORA and SARR).
|
|
|
+ </para>
|
|
|
+
|
|
|
+ </refsect1>
|
|
|
+
|
|
|
+ <refsect1>
|
|
|
+ <title>OPTIONS</title>
|
|
|
+
|
|
|
+ <para>The arguments are as follows:</para>
|
|
|
+
|
|
|
+ <variablelist>
|
|
|
+ <varlistentry>
|
|
|
+ <term><option>-v</option></term>
|
|
|
+ <listitem><para>
|
|
|
+ Enable verbose logging mode. This enables logging of
|
|
|
+ diagnostic messages at the maximum debug level.
|
|
|
+ </para></listitem>
|
|
|
+ </varlistentry>
|
|
|
+
|
|
|
+ </variablelist>
|
|
|
+
|
|
|
+ </refsect1>
|
|
|
+
|
|
|
+ <refsect1>
|
|
|
+ <title>EXIT STATUS</title>
|
|
|
+ <para>
|
|
|
+ The <command>perfdhcp</command> utility exits with one of
|
|
|
+ the following values:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <variablelist>
|
|
|
+ <varlistentry>
|
|
|
+ <term>0</term>
|
|
|
+ <listitem><simpara>Complete success.</simpara></listitem>
|
|
|
+ </varlistentry>
|
|
|
+ <varlistentry>
|
|
|
+ <term>1</term>
|
|
|
+ <listitem><simpara>General error.</simpara></listitem>
|
|
|
+ </varlistentry>
|
|
|
+ <varlistentry>
|
|
|
+ <term>2</term>
|
|
|
+ <listitem><simpara>An error in the command line
|
|
|
+ arguments.</simpara></listitem>
|
|
|
+ </varlistentry>
|
|
|
+ <varlistentry>
|
|
|
+ <term>3</term>
|
|
|
+ <listitem><simpara>One or more exchanges were not successfully
|
|
|
+ completed (and no general failures in operation).</simpara></listitem>
|
|
|
+ </varlistentry>
|
|
|
+ </variablelist>
|
|
|
+ </refsect1>
|
|
|
+
|
|
|
+ <refsect1>
|
|
|
+ <title>SEE ALSO</title>
|
|
|
+ <para>
|
|
|
+ <citerefentry>
|
|
|
+ <refentrytitle>b10-dhcp4</refentrytitle><manvolnum>8</manvolnum>
|
|
|
+ </citerefentry>,
|
|
|
+ <citerefentry>
|
|
|
+ <refentrytitle>b10-dhcp6</refentrytitle><manvolnum>8</manvolnum>
|
|
|
+ </citerefentry>,
|
|
|
+ <citetitle>BIND 10 Guide</citetitle>.
|
|
|
+ </para>
|
|
|
+ </refsect1>
|
|
|
+
|
|
|
+<!--
|
|
|
+ <refsect1>
|
|
|
+ <title>HISTORY</title>
|
|
|
+ <para>
|
|
|
+ The <command>perfdhcp</command> tool was first implemented
|
|
|
+ by John Dubois in November 2011.
|
|
|
+ </para>
|
|
|
+ </refsect1>
|
|
|
+-->
|
|
|
+
|
|
|
+</refentry><!--
|
|
|
+ - Local variables:
|
|
|
+ - mode: sgml
|
|
|
+ - End:
|
|
|
+-->
|
|
|
+
|
|
|
+<!--
|
|
|
+
|
|
|
+ "perfdhcp [-hv] [-4|-6] [-r<rate>] [-t<report>] [-R<range>] [-b<base>]\n"
|
|
|
+ " [-n<num-request>] [-p<test-period>] [-d<drop-time>] [-D<max-drop>]\n"
|
|
|
+ " [-l<local-addr|interface>] [-P<preload>] [-a<aggressivity>]\n"
|
|
|
+ " [-L<local-port>] [-s<seed>] [-i] [-B] [-c] [-1]\n"
|
|
|
+ " [-T<template-file>] [-X<xid-offset>] [-O<random-offset]\n"
|
|
|
+ " [-E<time-offset>] [-S<srvid-offset>] [-I<ip-offset>]\n"
|
|
|
+ " [-x<diagnostic-selector>] [-w<wrapped>] [server]\n"
|
|
|
+ "\n"
|
|
|
+ "The [server] argument is the name/address of the DHCP server to\n"
|
|
|
+ "contact. For DHCPv4 operation, exchanges are initiated by\n"
|
|
|
+ "transmitting a DHCP DISCOVER to this address.\n"
|
|
|
+ "\n"
|
|
|
+ "For DHCPv6 operation, exchanges are initiated by transmitting a DHCP\n"
|
|
|
+ "SOLICIT to this address. In the DHCPv6 case, the special name 'all'\n"
|
|
|
+ "can be used to refer to All_DHCP_Relay_Agents_and_Servers (the\n"
|
|
|
+ "multicast address FF02::1:2), or the special name 'servers' to refer\n"
|
|
|
+ "to All_DHCP_Servers (the multicast address FF05::1:3). The [server]\n"
|
|
|
+ "argument is optional only in the case that -l is used to specify an\n"
|
|
|
+ "interface, in which case [server] defaults to 'all'.\n"
|
|
|
+ "\n"
|
|
|
+ "The default is to perform a single 4-way exchange, effectively pinging\n"
|
|
|
+ "the server.\n"
|
|
|
+ "The -r option is used to set up a performance test, without\n"
|
|
|
+ "it exchanges are initiated as fast as possible.\n"
|
|
|
+ "\n"
|
|
|
+ "Options:\n"
|
|
|
+ "-1: Take the server-ID option from the first received message.\n"
|
|
|
+ "-4: DHCPv4 operation (default). This is incompatible with the -6 option.\n"
|
|
|
+ "-6: DHCPv6 operation. This is incompatible with the -4 option.\n"
|
|
|
+ "-a<aggressivity>: When the target sending rate is not yet reached,\n"
|
|
|
+ " control how many exchanges are initiated before the next pause.\n"
|
|
|
+ "-b<base>: The base mac, duid, IP, etc, used to simulate different\n"
|
|
|
+ " clients. This can be specified multiple times, each instance is\n"
|
|
|
+ " in the <type>=<value> form, for instance:\n"
|
|
|
+ " (and default) mac=00:0c:01:02:03:04.\n"
|
|
|
+ "-d<drop-time>: Specify the time after which a requeqst is treated as\n"
|
|
|
+ " having been lost. The value is given in seconds and may contain a\n"
|
|
|
+ " fractional component. The default is 1 second.\n"
|
|
|
+ "-E<time-offset>: Offset of the (DHCPv4) secs field / (DHCPv6)\n"
|
|
|
+ " elapsed-time option in the (second/request) template.\n"
|
|
|
+ " The value 0 disables it.\n"
|
|
|
+ "-h: Print this help.\n"
|
|
|
+ "-i: Do only the initial part of an exchange: DO or SA, depending on\n"
|
|
|
+ " whether -6 is given.\n"
|
|
|
+ "-I<ip-offset>: Offset of the (DHCPv4) IP address in the requested-IP\n"
|
|
|
+ " option / (DHCPv6) IA_NA option in the (second/request) template.\n"
|
|
|
+ "-l<local-addr|interface>: For DHCPv4 operation, specify the local\n"
|
|
|
+ " hostname/address to use when communicating with the server. By\n"
|
|
|
+ " default, the interface address through which traffic would\n"
|
|
|
+ " normally be routed to the server is used.\n"
|
|
|
+ " For DHCPv6 operation, specify the name of the network interface\n"
|
|
|
+ " via which exchanges are initiated.\n"
|
|
|
+ "-L<local-port>: Specify the local port to use\n"
|
|
|
+ " (the value 0 means to use the default).\n"
|
|
|
+ "-O<random-offset>: Offset of the last octet to randomize in the template.\n"
|
|
|
+ "-P<preload>: Initiate first <preload> exchanges back to back at startup.\n"
|
|
|
+ "-r<rate>: Initiate <rate> DORA/SARR (or if -i is given, DO/SA)\n"
|
|
|
+ " exchanges per second. A periodic report is generated showing the\n"
|
|
|
+ " number of exchanges which were not completed, as well as the\n"
|
|
|
+ " average response latency. The program continues until\n"
|
|
|
+ " interrupted, at which point a final report is generated.\n"
|
|
|
+ "-R<range>: Specify how many different clients are used. With 1\n"
|
|
|
+ " (the default), all requests seem to come from the same client.\n"
|
|
|
+ "-s<seed>: Specify the seed for randomization, making it repeatable.\n"
|
|
|
+ "-S<srvid-offset>: Offset of the server-ID option in the\n"
|
|
|
+ " (second/request) template.\n"
|
|
|
+ "-T<template-file>: The name of a file containing the template to use\n"
|
|
|
+ " as a stream of hexadecimal digits.\n"
|
|
|
+ "-v: Report the version number of this program.\n"
|
|
|
+ "-w<wrapped>: Command to call with start/stop at the beginning/end of\n"
|
|
|
+ " the program.\n"
|
|
|
+ "-x<diagnostic-selector>: Include extended diagnostics in the output.\n"
|
|
|
+ " <diagnostic-selector> is a string of single-keywords specifying\n"
|
|
|
+ " the operations for which verbose output is desired. The selector\n"
|
|
|
+ " keyletters are:\n"
|
|
|
+ " * 'a': print the decoded command line arguments\n"
|
|
|
+ " * 'e': print the exit reason\n"
|
|
|
+ " * 'i': print rate processing details\n"
|
|
|
+ " * 's': print first server-id\n"
|
|
|
+ " * 't': when finished, print timers of all successful exchanges\n"
|
|
|
+ " * 'T': when finished, print templates\n"
|
|
|
+ "-X<xid-offset>: Transaction ID (aka. xid) offset in the template.\n"
|
|
|
+ "\n"
|
|
|
+ "DHCPv4 only options:\n"
|
|
|
+ "-B: Force broadcast handling.\n"
|
|
|
+ "\n"
|
|
|
+ "DHCPv6 only options:\n"
|
|
|
+ "-c: Add a rapid commit option (exchanges will be SA).\n"
|
|
|
+ "\n"
|
|
|
+ "The remaining options are used only in conjunction with -r:\n"
|
|
|
+ "\n"
|
|
|
+ "-D<max-drop>: Abort the test if more than <max-drop> requests have\n"
|
|
|
+ " been dropped. Use -D0 to abort if even a single request has been\n"
|
|
|
+ " dropped. If <max-drop> includes the suffix '%', it specifies a\n"
|
|
|
+ " maximum percentage of requests that may be dropped before abort.\n"
|
|
|
+ " In this case, testing of the threshold begins after 10 requests\n"
|
|
|
+ " have been expected to be received.\n"
|
|
|
+ "-n<num-request>: Initiate <num-request> transactions. No report is\n"
|
|
|
+ " generated until all transactions have been initiated/waited-for,\n"
|
|
|
+ " after which a report is generated and the program terminates.\n"
|
|
|
+ "-p<test-period>: Send requests for the given test period, which is\n"
|
|
|
+ " specified in the same manner as -d. This can be used as an\n"
|
|
|
+ " alternative to -n, or both options can be given, in which case the\n"
|
|
|
+ " testing is completed when either limit is reached.\n"
|
|
|
+ "-t<report>: Delay in seconds between two periodic reports.\n"
|
|
|
+ "\n"
|
|
|
+ "Errors:\n"
|
|
|
+ "- tooshort: received a too short message\n"
|
|
|
+ "- orphans: received a message which doesn't match an exchange\n"
|
|
|
+ " (duplicate, late or not related)\n"
|
|
|
+ "- locallimit: reached to local system limits when sending a message.\n"
|
|
|
+ "\n"
|
|
|
+-->
|