NOTE: bwctl has been replaced by pScheduler.
bwctl is used to run a number of network testing tools. It ensures that only one test is running at a time. bwctl is a wrapper for a number of tools such as iperf / iperf3, nuttcp, ping, owping, traceroute, and tracepath. You need to install both bwctl and the tools the bwctl runs on test endpoints. By default bwctl runs iperf.
There are a number of public bwctl servers you can run a test to. ESnet bwctl servers are open to the entire R&E community.
|bwctl -c receive_host||This will use your host as the sender, and run a 10 second iperf3 test.|
|bwctl -c receive_host -t 30 -i 2||This will use your host as the sender, run a 30 second test, and show output every 2 secs (instead of the default of 1 sec).|
|bwctl -c receive_host:55555 -t 30 -w 64M||This will run the same test, but will connect to the bwctl daemon on the remote host that is running on the non-standard port 55555 (more on ports below). The TCP window will be 64MB.|
|bwctl -c receive_host -s send_host -t 30||This is very useful if you are not logged into one of the two endpoints. It runs a 30 second test from send_host to recv_host.|
|bwctl -L 1000 -c receive_host||By default bwctl exits if it can not get a test slot within 5 minutes. Use the -L flag for heavily used servers where you might have to wait longer.|
|bwctl -T iperf2 -c receive_host -s send_host -i 1 -u -b 500M||Use iperf2 instead of iperf2, and do a 500Mbps UDP test.|
|bwctl -c receive_host -T nuttcp||run nuttcp instead of iperf3|
|bwctl -c receive_host -s send_host -O 5 -t 20||Use iperf3 instead of iperf, and omit the first 5 seconds of a 20 second test (removes TCP slowstart)|
|bwctl -4 -c receive_host -s send_host||Force test to use IPv4 instead of IPv6|
|bwping -s send_host -c receive_host||run a ping from host A to host B|
|bwping -T owamp -s send_host-c receive_host -N 1000 -i .01||run owping from host A to host B, sending 1000 packets, spaced .01 seconds apart.|
|bwping -E -c www.google.com||run a ping to a host not running bwctld|
|bwtraceroute -c receive_host -s send_host||run a tracetroute from host A to host B|
|bwtraceroute -T tracepath -c receive_host -l 8192 -s send_host||run a tracepath from host A to host B, using a packet size of 8192 bytes. This will help find MTU issues.|
bwtraceroute -E -s send_host -c receive host
|Run a traceroute from a bwctl host to a non-bwctl host|
The main bwctl control port is 4823. Make sure all these ports are not blocked by any firewalls. In a firewalled environment you may need to create a file $HOME/.bwctlrc that contains the following:
# ESnet runs iperf on these ports # make sure your site firewall is configured to allow these iperf_ports 5001-5300 iperf3_ports 5001-5300 # ESnet's bwctld is configured to use these ports # make sure they are open too peer_port 6001-6050 # if iperf is not installed in /usr/bin, specify location here iperf_path /path/to/iperf
For more information see the bwctl homepage.