7

I don't want to do anything crazy - just measure the download and upload speed for a client to a server.

On the server I ran:

iperf3 -s

On the client I ran:

iperf3 -c IP_ADDESS

These are my results:

Connecting to host IP_ADDRESS, port 5201
[  4] local LAN_IP port 2722 connected to IP_ADDRESS port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec   256 KBytes  2.08 Mbits/sec
[  4]   1.01-2.01   sec   128 KBytes  1.05 Mbits/sec
[  4]   2.01-3.01   sec   128 KBytes  1.05 Mbits/sec
[  4]   3.01-4.01   sec   128 KBytes  1.05 Mbits/sec
[  4]   4.01-5.01   sec   128 KBytes  1.05 Mbits/sec
[  4]   5.01-6.01   sec   128 KBytes  1.05 Mbits/sec
[  4]   6.01-7.01   sec   128 KBytes  1.05 Mbits/sec
[  4]   7.01-8.01   sec   128 KBytes  1.05 Mbits/sec
[  4]   8.01-9.01   sec  0.00 Bytes  0.00 bits/sec
[  4]   9.01-10.01  sec   128 KBytes  1.05 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.01  sec  1.25 MBytes  1.05 Mbits/sec                  sender
[  4]   0.00-10.01  sec  1.07 MBytes   896 Kbits/sec                  receiver

iperf Done.

I get that it first tells you what it's connected to, and then reports every 1 second (by default) on how well it was doing for that 1 second. What are:

  1. The results? By default, data is sent from the client to the server (unless -R is specified, in which case this is reversed). So if this is a result of a unidirectional transfer, why are there 2 lines in the result?
  2. The ID values. They are all 4 in my case.
  3. When doing a reverse transfer:

    iperf3 -c IP_ADDRESS -R

the results include one extra field:

[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  3.02 MBytes  2.53 Mbits/sec   21             sender
[  4]   0.00-10.00  sec  2.94 MBytes  2.46 Mbits/sec                  receiver

Does the Retr field mean that 21 packets had to be re-transmitted by TCP?

1 Answer 1

6

I had the same question so i dug into the code and hope to have found the correct answers.

  1. The two lines show the measurement from both sides. One might argue that these results should be identical. But as you can see in both of your results the receiver measured less data than the sender. The main reason is, that the measurement is time binned. So e.g. when you measure for 10seconds (starting at the first packet) you send n packets but the receiver might receive the last packets more then 10 seconds after the first. So these are not counted. Additionally there is packet loss.

  2. This is filled with sp->socket. So in the end this is the file descriptor of the socket (which translates to an int). Try running with the -P Flag. You will see different IDs per connection/socket.

  3. Your assumption is partly right. This field represents sp->result->stream_retrans. So these are retransmission. This field is only displayed when retransmissions appeared (0 is not shown). So this should be independent of the direction.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .