Browse Source

[2307] makefile generate manual and add start of perfdhcp man page

Jeremy C. Reed 11 years ago
parent
commit
b2622caaab
2 changed files with 271 additions and 1 deletions
  1. 18 1
      tests/tools/perfdhcp/Makefile.am
  2. 253 0
      tests/tools/perfdhcp/perfdhcp.xml

+ 18 - 1
tests/tools/perfdhcp/Makefile.am

@@ -41,4 +41,21 @@ perfdhcp_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
 
 
 # ... and the documentation
-EXTRA_DIST = perfdhcp_internals.dox
+EXTRA_DIST = perfdhcp_internals.dox
+
+man_MANS = perfdhcp.1
+DISTCLEANFILES = $(man_MANS)
+EXTRA_DIST += $(man_MANS) perfdhcp.xml
+
+if GENERATE_DOCS
+
+perfdhcp.1: perfdhcp.xml
+	@XSLTPROC@ --novalid --xinclude --nonet -o $@ http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $(builddir)/perfdhcp.xml
+
+else
+
+$(man_MANS):
+	@echo Man generation disabled.  Creating dummy $@.  Configure with --enable-generate-docs to enable it.
+	@echo Man generation disabled.  Remove this file, configure with --enable-generate-docs, and rebuild BIND 10 > $@
+
+endif

+ 253 - 0
tests/tools/perfdhcp/perfdhcp.xml

@@ -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 "&#8212;">]>
+<!--
+ - 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"
+-->