A portable, free and open source command-line network bandwidth tester tool.
The uCodev Bandwidth Tester (ubwt for short) is a command-line tool designed to test network bandwidth with unidirectional, bidirectional, reverse and asynchronous full-duplex testing modes, providing basic or, optionally, extended reports.
It consists of a single tool, that can be executed as a listener on one end, and as connector on the another end - it is not designed to be used as a running service. It is a testing tool, designed to be used with both endpoints under full control of the tester.
- Basic one-way testing (TCP and UDP)
- Bidirectional testing (TCP and UDP)
- Reverse testing (TCP and UDP)
- Asynchronous full-duplex testing (TCP only)
- Multi-connection testing (TCP only)
- Latency testing
- Both IPv4 and IPv6 are supported
- Configurable number of connections
- Configurable testing time
- Configurable payload size
- Configurable payload contents
- Configurable timeouts
- Configurable handshake iterations and intervals
- Brief summary report or full extended report
- Extended reports can be exported as JSON files
- Built-in debugging output can be enabled/disabled
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
See LICENSE
ubwt is designed to be compliant with any POSIX-based operating system. It was successfully tested under GNU Linux, GNU Hurd, FreeBSD, NetBSD, OpenBSD, SunOS, Minix and Darwin. A native implementation for Microsoft Windows operating systems is not included yet - but it will in a near future. Meanwhile, Cygwin can be used to build and run ubwt, as it is fully supported in this platform.
Also, ubwt is architecture independent - it was also successfully tested under x86/64, ARM, MIPS (mips/mipsel) and SPARC.
DISCLAIMER: This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ubwt is currently in its beta stage of development - it is usable, but not extensively tested, so there isn't a version that can be considered "stable", yet.
Please refer to ChangeLog.txt
Install ubwt with the following commands:
~# cd /usr/src
~# git clone https://github.com/ucodev/ubwt
~# cd ubwt
~# ./deploy
or see INSTALL.txt
IMPORTANT NOTE: When using ubwt, both listener and connector mode MUST have the same command-line options - by failing to do so, either the client and/or the listener will reject the test.
Usage: ubwt [OPTIONS] {connector|listener} {HOSTNAME|IPv4|IPv6}
OPTIONS
-A Asynchronous bi-directional full-duplex test. TCP only.
-b Perform a bi-directional test.
-B OCTETS Size of the round-robin buffer used for payload. Requires -C.
-C FILE Creates a buffer from file to fill the payload. Requires -B.
-d FILE Append debugging output to a file (default: stderr).
-D Enable debugging.
-F Enable full/extended reporting.
-h Display this help.
-I MSEC Interval between latency measurements (default: 1 msec).
-j FILE Export report in JSON format to file.
-m OCTETS Link MTU (default: 1500 octets).
-M MULTIPLIER Talk count multiplier (default: auto).
-N ITERATIONS Number of handshake iterations (default: 20 iterations).
-o SECONDS Process reverse delay. Sets -b (default: 3 seconds).
-O SECONDS Maximum wait time before next stream (default: 20 seconds).
-P PORT TCP or UDP port to listen/connect to (default: 19991).
-r FILE Store the running PID into the specified file.
-R Reverse stream testing first.
-s OCTETS L4 payload size (default: 1432).
-t SECONDS Minimum stream time (default: 3 seconds).
-T SECONDS Maximum wait time between stream packets (default: 5 seconds).
-v Display version information.
-w SECONDS Connection timeout (default: 120 seconds).
-W COUNT Maximum number of workers (default: 1). TCP only.
| im@listening ~ $ ubwt listener 10.10.10.1
| [*] Initializing local regular workers...
| [*] Waiting for remote regular workers...
| [*] Running bandwidth test...
|
| Latency : 1.128 ms
| Download : 943.485 Mbps
| im@listening ~ $
| im@connector ~ $ ubwt connector 10.10.10.1
| [*] Initializing local regular workers...
| [*] Waiting for remote regular workers...
| [*] Running bandwidth test...
|
| Latency : 1.128 ms
| Upload : 943.485 Mbps
| im@connector ~ $
| im@listening ~ $ ubwt -b listener 10.10.10.1
| [*] Initializing local regular workers...
| [*] Waiting for remote regular workers...
| [*] Running bandwidth test...
|
| Latency : 1.351 ms
| Download : 968.273 Mbps
|
| Latency : 1.287 ms
| Upload : 940.265 Mbps
| im@listening ~ $
| im@connector ~ $ ubwt -b connector 10.10.10.1
| [*] Initializing local regular workers...
| [*] Waiting for remote regular workers...
| [*] Running bandwidth test...
|
| Latency : 1.351 ms
| Upload : 968.273 Mbps
|
| Latency : 1.287 ms
| Download : 940.265 Mbps
| im@connector ~ $
| im@listening ~ $ ubwt -F -b listener 10.10.10.1
| [*] Initializing local regular workers...
| [*] Waiting for remote regular workers...
| [*] Running bandwidth test...
|
| Direction : Download
| MTU : 1500 octets
| L3 Protocol : ipv4
| L4 Protocol : tcp
| Requested L4 payload size : 1432 octets
| Estimated headers size : 66 octets
| Transmission time : 12.3916 s
| Total L4 packets expected : 1000000
| Total L4 packets transfered : 1000000
| Total L4 octets transfered : 1432000000
| Estimated L3 packets transfered : 1000000
| Estimated L3 fragmentation ratio : 1:1
| Estimated L2 octets transfered : 1498000000
| Latency (L4 RTA) : 0.950 ms
| Effective packet loss : 0.0000 (%)
| Theoretical L1 Bandwidth : 1000 Mbps
| Estimated L2 Bandwidth : 967.106 Mbps
| Effective L4 Bandwidth : 924.496 Mbps
|
| Direction : Upload
| MTU : 1500 octets
| L3 Protocol : ipv4
| L4 Protocol : tcp
| Requested L4 payload size : 1432 octets
| Estimated headers size : 66 octets
| Transmission time : 12.7196 s
| Total L4 packets expected : 1000000
| Total L4 packets transfered : 1000000
| Total L4 octets transfered : 1432000000
| Estimated L3 packets transfered : 1000000
| Estimated L3 fragmentation ratio : 1:1
| Estimated L2 octets transfered : 1498000000
| Latency (L4 RTA) : 1.220 ms
| Effective packet loss : 0.0000 (%)
| Theoretical L1 Bandwidth : 1000 Mbps
| Estimated L2 Bandwidth : 942.164 Mbps
| Effective L4 Bandwidth : 900.654 Mbps
| im@listening ~ $