Maximum Network throughput
iperf3 is a nice tool to test you LAN connection.
With gigabit you cannot expect 128 MBytes (1B = 8b) because of overhead, that increases a lot with smaller packets.
For Low-latency, we use very small packets. The IEEE standard has a minimum size of 64B:
6B Destination MAC
6B Source MAC
2B Protocol Type
46B Payload
2B CRC
plus 8B preamble and 12B inter-frame gap equals 84B „wire time“.
Rate / Frame size = frames per second
1000Mbps / (84B*8b) = frames/s
1,000,000,000b / 672b = 1,488,000 frames/s
frames/s * frame size = throughput
1,488,000fps * 64B*8b = 761Mbps
# remove preamble and gap
1,488,000fps * 8B*8b = 95Mbps
1,488,000fps * 12B*8b = 143Mbps
761-95-143 = 65MBps
With big packets(MTU=1518) it’s much more efficient:
1000Mbps / (1538B*8b) = 81,274 fps
81,274fps * 1518B*8b = 986Mbps
# subtract preamble and gap
986 - 5 - 7 = 974Mbps = 121 MBps
Real-world measurements will be several MB smaller.
The intricacies of the networking card, operating system and interrupt handling might result in 300-400Mbps in iperf3. Run at least 10 threads in parallel to saturate a gigabit link:
iperf3 -c 192.168.1.1 -P10