I'm using Mininet to test out achieved throughputs for different congestion control algorithms. Now I'm seeing something that does not really make sense to me. When running a standard Mininet network with TCLinks that have a bandwidth and delay, iperf and iperf3 on the client both report impossible throughputs (higher than the bandwidth of the links). The server reports the correct numbers.
Reproduction steps:
sudo mn --link tc,bw=10,delay=10ms
iperf
Output:
sudo mn --link tc,bw=10,delay=10ms
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(10.00Mbit 10ms delay) (10.00Mbit 10ms delay) (h1, s1) (10.00Mbit 10ms delay) (10.00Mbit 10ms delay) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
c0
*** Starting 1 switches
s1 ...(10.00Mbit 10ms delay) (10.00Mbit 10ms delay)
*** Starting CLI:
mininet> iperf
*** Iperf: testing TCP bandwidth between h1 and h2
*** Results: ['9.50 Mbits/sec', '11.8 Mbits/sec']
I would expect to see throughputs just below 10 Mbps for both the client and the server but the client reaches a throughput of around 12 Mbps.
Has anyone a good explanation to this? Is it save to just use the throughput numbers reported by the server for analysis or is there another problem with that?