Difference in iperf output between client and server

iperf

Been playing with iperf for the last 4 hours and I'm unable to understand why the results are different in client and server.

Consider the following iperf output on client :

iperf -c 91.121.112.163 -p 2222
------------------------------------------------------------
Client connecting to 91.121.112.163, TCP port 2222
TCP window size: 1.06 MByte (default)
------------------------------------------------------------
[  3] local 10.0.0.160 port 36726 connected with 91.121.112.163 port 2222
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-11.4 sec  1.88 MBytes  1.38 Mbits/sec

And here is the corresponding output on server :

iperf -V -s -p 2222
------------------------------------------------------------
Server listening on TCP port 2222
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local ::ffff:91.121.112.163 port 2222 connected with ::ffff:86.209.154.156 port 36726
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-19.1 sec  1.88 MBytes   823 Kbits/sec

So, the client is uploading at 1.38Mbits/sec but the server is receiving at 823kbits/sec ?

Do someone have an explanation about these confusing results ?

Best Answer

From the client: (emphasis mine)

[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-**11.4** sec  1.88 MBytes  1.38 Mbits/sec

From the server:

[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-**19.1** sec  1.88 MBytes   823 Kbits/sec

For some reason, the server thinks the test is taking ~8 seconds longer than the client does. That would be enough to drop the overall bandwidth (from the server's perspective) to 823 Kbps.