bwctl, bwping, bwtraceroute
Client application to request throughput, traceroute, ping and owamp tests.
- Provided by: bwctl-client (Version: 1.5.4+dfsg1-1build1)
- Source: bwctl
- Report a bug
Client application to request throughput, traceroute, ping and owamp tests.
bwctl [options] -c recvhost -s sendhost
bwctl [options] -c recvhost
bwctl [options] -s sendhost
bwping [options] -c recvhost -s sendhost
bwping [options] -c recvhost
bwping [options] -s sendhost
bwtraceroute [options] -c recvhost -s sendhost
bwtraceroute [options] -c recvhost
bwtraceroute [options] -s sendhost
bwctl is a command line client application that is used to initiate throughput 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 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, bwping and bwtraceroute clients are used to request the desired type of throughput, latency or traceroute 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 network measurement 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, Iperf3, Nuttcp, or Owamp 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.)
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]
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.
authscheme and schemeopts are only needed if authenticated communication (A or E modes of authmode) is wanted with sendhost and recvhost.
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.
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.
The arguments were named to match their counterparts in Iperf as closely as possible.
| Name | Value | Service Class | Examples |
| NONE | 000000 | Standard | Undifferentiated |
| DEFAULT | |||
| DF | |||
| CS0 | |||
| CS1 | 001000 | Low-Priority Data | No BW assurance |
| AF11 | 001010 | High-Throughput Data | Store and forward |
| AF12 | 001100 | ||
| AF13 | 001110 | ||
| CS2 | 010000 | OAM | OAM&P |
| AF21 | 010010 | Low-Latency Data | Web-based ordering |
| AF22 | 010100 | ||
| AF23 | 010110 | ||
| CS3 | 011000 | Broadcast Video | TV & live events |
| AF31 | 011010 | Multimedia Streaming | Streaming video and audio |
| AF32 | 011100 | ||
| AF33 | 011110 | ||
| CS4 | 100000 | Real-Time Interactive | Video conf and gaming |
| AF41 | 100010 | Multimedia Conferencing | H.323 video conferencing |
| AF42 | 100100 | ||
| AF43 | 100110 | ||
| CS5 | 101000 | Signaling | Video conf and gaming |
| EF | 101110 | Telephony | IP Telephony bearer |
| CS6 | 110000 | Network Control | Network routing |
| CS7 | 111000 |
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.
| bwctl Environment Variable | use | default |
| BWCTLRC | Config file | ~/.bwctlrc |
| BWCTL_DEBUG_TIMEOFFSET | Offset | 0.0(seconds) |
bwctl -c somehost.example.com
bwctl -x -c somehost.example.com
bwctl -x -c somehost.example.com -s otherhost.example.com
bwctl -t 30 -T iperf -s somehost.example.com
bwctl -I 3600 -R 10 -t 10 -u -b 10m -s somehost.example.com
bwctl -s somehost.example.com AE AESKEY someuser
bwping --no_endpoint -N 30 -i 0.5 --ttl 150 -c somehost.example.com
bwtraceroute -T tracepath -E -c somehost.example.com
bwctld(8) and the http://software/bwctl/ web site.
For details on Iperf3, see the https://github.com/esnet/iperf 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 Owamp, see the http://software.internet2.edu/owamp web site.
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.