Provided by: bwctl-client_1.4.1~rc2-1_amd64 bug

NAME

       bwctl - Client application to request throughput tests.

SYNOPSIS

       bwctl [options] -c recvhost -s sendhost
       bwctl [options] -c recvhost
       bwctl [options] -s sendhost

DESCRIPTION

       bwctl is a command line client application that is used to initiate throughput tests.

       This version of bwctl is capable of initiating Iperf, Nuttcp, and Thrulay tests.

       bwctl works by contacting a bwctld daemon on both the receiving host and the sending host. bwctld manages
       and schedules the resources of the host it runs on.  In the case where only one of the receiving host  or
       sending  host  is  specified,  bwctl  assumes the local host is the other endpoint. bwctl will attempt to
       contact a local bwctld if it can. If there is no local bwctld running, bwctl assumes the local host  does
       not require policy controls and will execute the bwctld functionality required to run the test directly.

       If cases where bwctl is directly running the throughput test on the host, there are several configuration
       options that are shared with bwctld.  Those  configuration  options  can  be  set  using  the  bwctlrc(5)
       configuration file in a way very similar to the way they are specified in the bwctld.conf(5) file.

       The  bwctl  client  is used to request the desired type of throughput test. Furthermore, it requests when
       the test is wanted.  bwctld on each endpoint either responds with  a  tentative  reservation  or  a  test
       denied message. Once bwctl is able to get a matching reservation from both bwctld processes (one for each
       host involved in the test), it confirms the reservation. Then, the bwctld  processes  run  the  test  and
       return  the  results.  The  results  are  returned  to  the  client  from both sides of the test from the
       respective bwctld processes. Additionally, the bwctld processes share the results from  their  respective
       side of the test with each other.

       BWCTL  (bwctl and bwctld) is used to enable non-specific throughput tests to hosts without having to give
       full user accounts on the given systems.  Users want the ability to run throughput tests to determine the
       achievable  or available bandwidth between a pair of hosts. It is often useful to test to multiple points
       along a network path to determine the network characteristics along that path. Typically, users who  want
       to  do this path decomposition have to directly contact the network/system administrators who control the
       hosts along the path. The administrator needs to either run half of the test for the user or give them  a
       user  account  on  the  host.   Also,  network  paths  of  interest  are typically controlled by multiple
       administrators. These hurdles have made this kind of testing difficult in practice.

       BWCTL was designed to help with this problem. It allows an administrator to configure a given host as  an
       Iperf,  Thrulay, or Nuttcp endpoint.  The endpoint can be a packet sender (e.g. Iperf client) or a packet
       receiver (e.g. Iperf server). It can be shared by multiple users without concern that  those  users  will
       interfere with each other.  Specific policy limits can be applied to specific users, and individual tests
       are scheduled so they will not interfere with each  other.  Additionally,  full  user  accounts  are  not
       required for the users running the tests.

       BWCTL  allows  the  administrator  to  classify  incoming  connections based upon a user name and AES key
       combination or, alternatively, based upon an IP/netmask.  Once the connection is classified,  the  bwctld
       can  determine  the exact type and intensities of througput tests that will be allowed.  More information
       on the policy controls can be found in the bwctld(8) man page.

       BWCTL makes use of a distributed scheduling algorithm. Each host maintains a schedule independently. As a
       client  requests  a  test, the two endpoints are contacted and each bwctld server responds with the first
       available open schedule slot. This enables on-demand tests to co-exist  with  regularly  scheduled  tests
       since  regularly scheduled tests are implemented by having the client request tests on regular intervals.
       Different priorities can be implemented using the event_horizon configuration directive  to  bwctld.  (By
       allowing  clients  that  implement regularly scheduled tests to reserve their time slots further into the
       future.)

ARGUMENTS

   Connection/Authentication Arguments:
       -4     Forces bwctl to use IPv4 addresses only.

              Default:
                     Unspecified (IPv6 is preferred).

       -6     Forces bwctl to use IPv6 addresses only.

              Default:
                     Unspecified (IPv6 is preferred).

       -A authmethod
              authmethod is used to specify the authentication method the bwctl client is  willing  to  use  for
              communication  with  the bwctld on the sendhost and recvhost.  The authentication options of bwctl
              are intended to be extensible. The communication from the bwctl client to each bwctld  server  may
              take  different  options  for  different  types  of  authentication.   If the authmethod option is
              specified for either the -s, or the -c argument, it overrides the authmethod specified with the -A
              option  for  communication  with that particular host.  (Therefore, the -A argument is really only
              useful if the same authentication can be used with both hosts.)

              Allowing different authentication methods for  each  connection  should  allow  a  client  to  use
              different  authentication  methods  with different servers which should in turn allow cross-domain
              tests to occur more easily.

              The format for authmethod is:

              authmode [authscheme schemeopts]

              authmode
                     Specifies the authentication mode the client is willing to speak with a server. It must  be
                     set as a character string with any or all of the characters "AEO". The modes are:

                     A      [A]uthenticated. This mode encrypts the control connection.

                     E      [E]ncrypted.  This  mode  encrypts  the  control  connection.  If  the test supports
                            encryption, this mode will additionally encrypt the test stream. (Encryption of  the
                            test  stream  is  not  currently  supported,  so this mode is currently identical to
                            authenticated.)

                     O      [O]pen. No encryption of any kind is done.

                     The client can specify all the modes with which it is willing  to  communicate.   The  most
                     strict mode that both the server and the client are willing to use will be selected.

                     Default:
                            "AEO"

              authscheme schemeopts
                     authscheme  indicates  the  authentication  scheme  that  should  be  used  to  achieve the
                     authenticated or encrypted modes.  schemeopts are a list  of  arguments  specific  to  each
                     particular  authentication  scheme.  Supported  authscheme  values  follow (listed with the
                     schemeopts each scheme requires):

                     AESKEY userid [keyfile]
                            This is the initial "simple" shared secret (AES key) model. userid  is  required  to
                            identify  which  shared  secret the server and client should use. keyfile optionally
                            specifies a file to retrieve the AES key from. If keyfile is not specified, the user
                            will  be  prompted for a passphrase. keyfile can be generated using the aespasswd(1)
                            application.

                     Default:
                            Unauthenticated

              authscheme and schemeopts are only  needed  if  authenticated  communication  (A  or  E  modes  of
              authmode) is wanted with sendhost and recvhost.

       -B srcaddr
              Bind  the local address of the client socket to srcaddr. srcaddr can be specified using a DNS name
              or using standard textual notations for the IP addresses.

              Default:
                     Unspecified (wild-card address selection).

       -c recvhost[:port] [authmethod]
              Specifies the host that will run the Iperf,  Thrulay  or  Nuttcp  server.   The  :port  suffix  is
              optional  and  is  only  needed  if  bwctld  is being run on a non-default port number. If an IPv6
              address is being specified, note that the accepted format contains the  recvhost  portion  of  the
              specification  in  square  brackets  as:  [fe80::fe9f:62d8]:4823.  This ensures the port number is
              distinct from the address specification, and is not needed if the :port suffix is not being used.

              At least one of the -c or -s options must be specified. If one of them is  not  specified,  it  is
              assumed to be the local host.

              authmethod  is  a  specifically  ordered  list  of  keywords  that is only needed if authenticated
              communication is wanted  with  recvhost.   These  keywords  are  used  to  describe  the  type  of
              communication  and  authentication  that  should be used to contact the recvhost.  If recvhost and
              sendhost share the same authentication methods and identities,  it  is  possible  to  specify  the
              authmethod for both recvhost and sendhost using the -A argument.  An authmethod specified with the
              -c option will override an authmethod specified with the -A argument for  communication  with  the
              recvhost.

              The  format for authmethod and a description of the currently available authentication methods are
              described with the -A argument.

       -k
              This  option  has  been  deprecated.  Originally,  it  was  used  to  specify  the   keyfile   for
              authentication.   All  authentication options can now be specified using the -A argument.  For the
              next several versions this option will report an  error.  Eventually,  it  may  be  reclaimed  for
              another purpose.

       -s sendhost[:port] [authmethod]
              Specifies  the  host  that  will  run  the  Iperf,  Thrulay or Nuttcp client.  The :port suffix is
              optional and is only needed if bwctld is being run on  a  non-default  port  number.  If  an  IPv6
              address  is  being  specified,  note that the accepted format contains the sendhost portion of the
              specification in square brackets as: [fe80::fe9f:62d8]:4823.  This  ensures  the  port  number  is
              distinct from the address specification, and is not needed if the :port suffix is not being used.

              At  least  one  of  the -c or -s options must be specified. If one of them is not specified, it is
              assumed to be the local.

              authmethod is a specifically ordered list  of  keywords  that  is  only  needed  if  authenticated
              communication  is  wanted  with  sendhost.   These  keywords  are  used  to  describe  the type of
              communication and authentication that should be used to contact the  sendhost.   If  recvhost  and
              sendhost  share  the  same  authentication  methods  and identities, it is possible to specify the
              authmethod for both recvhost and sendhost using the -A argument.  An authmethod specified with the
              -s  option  will  override an authmethod specified with the -A argument for communication with the
              sendhost.

              The format for authmethod and a description of the currently available authentication methods  are
              described with the -A argument.

       -U
              This  option  has been deprecated. Originally, it was used to specify the username to identify the
              AES key for authentication.  All  authentication  options  can  now  be  specified  using  the  -A
              argument.   For  the next several versions this option will report an error. Eventually, it may be
              reclaimed for another purpose.

   Throughput Test Arguments:
       The arguments were named to match their counterparts in Iperf as closely as possible.

       Some of the options are not available for some of the throughput testers.  BWCTL  does  not  support  UDP
       tests, changing the output format or changing the output units for either Nuttcp or Thrulay.

       -T     Specify which throughput tester to use:

              iperf

              thrulay

              nuttcp

              Default:
                     None. Selects a tool that the client and server have in common

       -S TOS
              Set the TOS byte in the sending packets.

       Default:
              None.

       -D DSCP
              Set  an RFC 2474 style DSCP value for the TOS byte in the sending packets. This can be set using a
              6-bit numeric value in decimal, hex, or octal. Additionally, the following set  of  symbolic  DSCP
              name constants are understood. (Example applications are taken from RFC 4594.)

       ┌────────┬────────┬─────────────────────────┬───────────────────────────┐
       │ NameValueService ClassExamples          │
       ├────────├────────├─────────────────────────├───────────────────────────┤
       │NONE    │        │                         │                           │
       │DEFAULT │ 000000 │        Standard         │     Undifferentiated      │
       │DF      │        │                         │                           │
       │CS0     │        │                         │                           │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │CS1     │ 001000 │    Low-Priority Data    │      No BW assurance      │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │AF11    │ 001010 │                         │                           │
       │AF12    │ 001100 │  High-Throughput Data   │     Store and forward     │
       │AF13    │ 001110 │                         │                           │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │CS2     │ 010000 │           OAM           │           OAM&P           │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │AF21    │ 010010 │                         │                           │
       │AF22    │ 010100 │    Low-Latency Data     │    Web-based ordering     │
       │AF23    │ 010110 │                         │                           │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │CS3     │ 011000 │     Broadcast Video     │     TV & live events      │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │AF31    │ 011010 │                         │                           │
       │AF32    │ 011100 │  Multimedia Streaming   │ Streaming video and audio │
       │AF33    │ 011110 │                         │                           │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │CS4     │ 100000 │  Real-Time Interactive  │   Video conf and gaming   │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │AF41    │ 100010 │                         │                           │
       │AF42    │ 100100 │ Multimedia Conferencing │ H.323 video conferencing  │
       │AF43    │ 100110 │                         │                           │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │CS5     │ 101000 │        Signaling        │   Video conf and gaming   │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │EF      │ 101110 │        Telephony        │    IP Telephony bearer    │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │CS6     │ 110000 │     Network Control     │      Network routing      │
       ├────────┼────────┼─────────────────────────┼───────────────────────────┤
       │CS7     │ 111000 │                         │                           │
       └────────┴────────┴─────────────────────────┴───────────────────────────┘
              Default:
                     Unset.

       -b bandwidth
              Limit UDP send rate to bandwidth (bits/sec).

              Default:
                     1 Mb

       -i interval
              Report interval (seconds).

              Default:
                     unset (no intervals reported)

       -l len length of read/write buffers (bytes).

              Default:
                     8 KB TCP, 1470 bytes UDP

       -P nStreams
              Number of concurrent streams for the test. See the -P option of Iperf for details.

       -S TOS Set the TOS (See RFC 1349) byte in packets.

              Default:
                     0 (not set)

       -t time
              Duration of test (seconds).

              Default:
                     10

       -u
              UDP test.

              Default:
                     TCP test

       -W window
              Same  as  the  -w  option,  except  that  the value is advisory. bwctl will attempt to dynamically
              determine the appropriate TCP window, based upon RTT information gathered from the control socket.
              If bwctl is unable to dynamically determine a window, the value window will be used.

              Default:
                     Unset (system defaults)

       -w window
              Socket buffer sizes (bytes). For TCP, this sets the TCP window size. For UDP, this sets the socket
              receive buffer size.

              Default:
                     Unset (system defaults)

   Scheduling Arguments:
       -a syncfuzz
              Allow bwctl to run without a synchronized system clock. Use this to specify how far off the  local
              clock  is  from  UTC.  bwctl  prefers  to  have an NTP synchronized system clock to ensure the two
              endpoints of the test are actually agreeing to the same scheduled time window for test execution.

              If two systems do NOT have a close enough notion of time, then the throughput test will eventually
              fail because one endpoint of the test will attempt to run at a different time than the other.

              If  the  operating  system supports the NTP system calls, and the system clock is determined to be
              unsynchronized, error messages will still be reported depending upon the value of the -e flag.

              When calculating the time errors, this value will be aded in to account for  the  difference.  The
              maximum  time  offset  can  be  bounded on the server side, using the max_time_error directive, to
              prevent a denial of service attack. If set, the server will reject any requests  to  test  with  a
              peer that has too high a timestamp error.

              Default:
                     Unset (Defaults to Set for systems without the NTP system calls)

       -I interval
              Specifies that bwctl should attempt to run a throughput test every interval seconds.

              Default:
                     Unset. If it is unset, bwctl only runs the test once.

       -L longest
              Specifies  the longest amount of time the client is willing to wait for a reservation window. When
              bwctl requests a test from the bwctld server, it specifies the earliest time and the  latest  time
              it  is  willing  to  accept.  The  latest  time is determined by adding this longest option to the
              earliest time. The earliest time is essentially 'now'.  The longest time is specified as a  number
              of seconds.

              Default:
                     If  interval  is  set,  the default is 50% of interval. Otherwise, the default is twice the
                     test duration time but no smaller than 5 minutes. (See -t.)

       -n nIntervals
              Number of tests to perform if the -I option is set.

              Default:
                     Continuous

       -R alpha
              Randomize the start time of the test within this alpha percent of the interval. Valid  values  for
              alpha  are  from  0-50.  bwctl will attempt to run the test every interval +/- alpha percent.  For
              example, if the interval is 300 seconds and alpha is set to 10 percent, then bwctl will attempt to
              run a test every 270-330 seconds. This option is only useful with the -I option.

              Default:
                     0 (no randomness)

   Output Arguments:
       -d dir Specifies directory for results files if the -p option is set.

       -e facility
              Syslog facility to log messages to.

              Default:
                     LOG_USER

       -f units
              Specify  the  units for the tool to use when displaying the results. The accepted values for units
              are tool specific.

              Iperf:

                     k      Kilobits per second

                     K      Kilobytes per second

                     m      Megabits per second

                     M      Megabytes per second

       -h
              Print a help message.

       -p
              Place test results in files. Print the filenames to stdout when results are complete.

       -q
              Quiet output. Output as little as possible.

       -r
              Send syslog messages to stderr.  This is the default unless the -q option  is  specified  so  this
              option is only useful with the -q option.

       -V
              Print version information and exit.

       -v
              Verbose output. Specifying additional -v's increases the verbosity.

       -x
              Output  sender  (client)  results as well as receiver results.  By default, sender results are not
              output. If the -p option is specified, the sender results are placed in an additional file.

       -y format
              Specify the output format of the tool. The accepted values for format are tool specific.

              Iperf:

                     c      [c]omma-separated output

ENVIRONMENT VARIABLES

       bwctl Environment Variable   use           default

       ────────────────────────────────────────────────────────

       BWCTLRC                      Config file   ~/.bwctlrc
       BWCTL_DEBUG_TIMEOFFSET       Offset        0.0(seconds)

LIMITATIONS

       Only tested with versions 1.7.0 and 2.0.b of Iperf.

EXAMPLES

       bwctl -c somehost.example.com

              Run  a  default  10  second  TCP  test  as  soon  as  possible  with  local  as  the  sender   and
              somehost.example.com  as  the  receiver,  using  whichever  tools  they have in common. Return the
              results from the receive side of the test.

       bwctl -x -c somehost.example.com

              Like the previous test, but also return the results from the sender side of the test.

       bwctl -x -c somehost.example.com -s otherhost.example.com

              Like the previous test, but with otherhost.example.com as the sender instead of local.

       bwctl -t 30 -T iperf -s somehost.example.com

              Run a 30 second TCP Iperf test with somehost.example.com as the sender and local as the receiver.

       bwctl -I 3600 -R 10 -t 10 -u -b 10m -s somehost.example.com

              Run a 10 second UDP test about every hour (3600 +/- 360 seconds) with the sender rate  limited  to
              10 Mbits per second from somehost.example.com to local.

       bwctl -s somehost.example.com AE AESKEY someuser

              Run  the  default  10 second TCP test. Authenticate using the identity someuser. bwctl will prompt
              for a passphrase that will be used to create an AES key.

SEE ALSO

       bwctld(8) and the http://e2epi.internet2.edu/bwctl/ web site.

       For details on Iperf, see the http://sourceforge.net/projects/iperf web site.

       For details on Nuttcp, see the http://www.wcisd.hpc.mil/nuttcp/Nuttcp-HOWTO.html web site.

       For details on Thrulay, see the http://e2epi.internet2.edu/thrulay/ web site.

ACKNOWLEDGMENTS

       This material is based in part on work supported by the National Science Foundation (NSF) under Grant No.
       ANI-0314723.  Any  opinions,  findings, and conclusions or recommendations expressed in this material are
       those of the author(s) and do not necessarily reflect the views of the NSF.

                              $Date: 2012-03-26 23:09:35 -0400 (Mon, 26 Mar 2012) $                     bwctl(1)