bandwidth measurement using iperf

I wrote about using netcat to measure bandwidth between servers which works perfectly well in a minimal sort of way (and in particular between servers where the relatively common netcat is installed). For a slightly more user-friendly approach consider iperf.

Once installed on both servers (let’s call them serverA and serverB):

  1. start iperf to listen on one server (add a port particularly if there are firewall restrictions in place which need to be adjusted/worked-with):
    serverA$ iperf -s -p 12345
  2. start iperf to send data from the other server:
    serverB$ iperf -c serverA -p 12345
  3. iperf displays results / status on both servers:
    serverA$ iperf -s -p 12345
    ------------------------------------------------------------
    Server listening on TCP port 12345
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [ 4] local 10.0.0.1 port 12345 connected with 10.0.0.2 port 48728
    [ ID] Interval Transfer Bandwidth
    [ 4] 0.0-10.0 sec 989 MBytes 829 Mbits/sec
    
    serverB$ iperf -c serverA -p 12345
    ------------------------------------------------------------
    Client connecting to ServerA, TCP port 12345
    TCP window size: 85.0 KByte (default)
    ------------------------------------------------------------
    [ 3] local 10.0.0.2 port 48728 connected with 10.0.0.1 port 12345
    [ ID] Interval Transfer Bandwidth
    [ 3] 0.0-10.0 sec 989 MBytes 830 Mbits/sec

Run this in both directions a few times to get a good feeling for the bandwidth between the servers. There are other options (eg. parallel dual-direction testing) to consider, so the man page is worth a read.

Leave a Reply

Your email address will not be published. Required fields are marked *