tcpblast | ttcp | iperf | AB | Linbot & wget | ping(4) | |
---|---|---|---|---|---|---|
TCP | YES | YES | YES | YES | YES | NO |
UDP | YES | YES | YES | YES | NO | NO |
ICMP | NO | NO | NO | NO | NO | YES |
client-server (1) | NO | YES | YES | NO | NO | NO |
Multiple streams | NO | YES | YES | YES | YES | NO |
Full BandWidth? (2) | YES | YES | NO (UDP:YES) | NO | NO | NO |
MTU (3) | NO | NO | YES | NO | NO | NO |
(1): ttcp and iperf are server/client programs. So you have to start on 1 PC the server and anther PC can act as client and connects to the server and send the data.
(2): tcpblast, ttcp and iperf (TCP) are sending as much data they can. When iperf sends UDP you can specify a rate. AB and Linbot are querying a web-server so they generate as much as the webserver can deliver and as much the scripts can proces.
(3): With iperf you can specify the TCP maximum segment wich is MTU - 40bytes. You can also specify the TCP window size.
(4): You can start several pings in the background to generate the rate you want or you can specify the -f parameter to flood the destination host.
local copy: I found this little program in the contrib area of MRTG (Multi Router Traffic Grapher).
- You can filter on destintaion port
- Allways tries to generate as much traffic as possibility
# ./tcpblast --help usage: ./tcpblast [options] destination nblocks tcpblast/udpblast is a simple tool for probing network and estimating its through output. It sends nblocks of 1024 B blocks of data to specified destination hostI'm using this program to generate the traffic and not to measure the bandwidth. But tcpblast is only a client program. It can kill the destination server because it's overloading the server by sending random data to a port.
local copy: This is a server-client program that generates traffic between them. It works great and I choose it above tcpblast. With ttcp you don't risk to overload the destination server. I include the programma itself in and endless loop so it keeps sending in data instead of stopping.
Starting the server on poort POORT1:
while true; do ttcp -r -s -p $POORT1; done
Connecting with a client to server SERVER:
while true ;do ttcp -t -s $SERVER -p $POORT1; done
- client-server setup: you can filter on destintaion port
- Only one parallel connection, so one big data stream
- Allways tries to generate as much traffic as possibility
local copy (Home page): This is also a client-server program that measured the bandwidth. It has more options than ttcp. It can also generates parallel connections.
- client-server setup: you can filter on destintaion port
- Possibility to generate parallel connections to the same destination port in one big data stream
- Allways tries to generate as much traffic as possibility. When you use UDP, you can specify a limit to the transmitted traffic.
Apache Benchmark & linbot & wget
- Tool to test web-server so lot of small connections to one destination port
- Possibility to generate parallel connections to the same destination port
- Generates about 20KByte/s to my test server (Linux, P120Mhz, 32MB Ram)
$ netstat | grep kriek:www tcp 0 1 192.168.1.128:4279 kriek:www SYN_SENT tcp 0 1 192.168.1.128:4278 kriek:www LAST_ACK tcp 0 0 192.168.1.128:4277 kriek:www CLOSE tcp 0 0 192.168.1.128:4276 kriek:www CLOSE tcp 0 0 192.168.1.128:4275 kriek:www CLOSE tcp 0 0 192.168.1.128:4274 kriek:www CLOSE tcp 0 0 192.168.1.128:4273 kriek:www CLOSE
Linbot is a tool to test the html pages of web-servers. It queries all the pages of the web-servers and looks for broken links. So it generates a lot of small connections to download different files. I think this is the best tool you can get to generate real traffic.
Another tool that can be used is wget. This downloads all the files from a web-server.
Starting ping with the option -f, floods the destination hosts and creates a lot of bandwitdh. You can start also different pings at the same time so you can generate a very small stream.