I have currently set up a home gigabit network which consists of a gigabit router and a few machines which all have gigabit network adapters. Connections are made through cat5.e cables from which the longest one is around 20m long.

First I tested through FTP where the transfer rates varied around 300Mbit/s which was pretty poor but could be limited by many factors so then I resorted to using a specified utility for the purpose. I got iperf3 running on both machines and as suggested in other answers first I tried running loopback tests on both machines to see if the system itself is capable of handling the traffic and here are the results:

enter image description here

Obviously I don't know what I'm doing but I suppose that the loopback is not supposed to go through the NIC so if that's the case these results make sense and mean that my machines are both capable of handling the connection.

Next I proceed to going from 1 machine to the other and here are the results

enter image description here

Which is not as bad as some other questions around the web, but still 100 mbit is 100 mbit.

I'm interested in finding out what's causing this, how can I diagnose the problem further?

  • How fast is your read/write medium? – Tetsujin Dec 23 '16 at 15:19
  • @Tetsujin I'm not sure I fully understand, if you mean what is my disk speed I'm using SSDs that both have relatively equal speeds of 450MB/s read and 300MB/s write. – php_nub_qq Dec 23 '16 at 15:24
  • 1
    Is this a non-existent problem? is full 1GB even possible in theory? I thought that throughput is less than or equal to data divided by round-trip, and so I think the round-trip time for ACK etc. is enough to cause a 2% slowdown. Factor in retransmits. Not an expert (but IMO 90% is about what you'd hope for) – Yorik Dec 23 '16 at 15:51
  • @Yorik I'm not an expert too but when I get a gigabit device I expect a gigabit to flow through it. It's like if you go to a diner and order a pizza and the waiter brings you 9/10 slices of pizza and tells you "that's about what you'd hope for". Sorry if I sound like a mad customer tho :D – php_nub_qq Dec 23 '16 at 16:20
  • 3
    the gigabit port is the box the pizza comes in though. Obviously my point is that you have a false expectation. gigabit is the max transmission limit, not the max throughput. This is so in virtually all computer contexts. – Yorik Dec 23 '16 at 16:22

You need to realize that you are never going to get 1000 Mbps throughput. You have layer-2 (ethernet) overhead of at least 18 bytes per frame, layer-3 (IP) overhead of at least 20 bytes per packet, and the layer-4 (UDP, TCP, etc.) overhead. Your data will be the payload of the layer-4 protocol. There will also be some processing overhead in the network stack (software) of the source and destination hosts.

If you are going through a switch, then you may get close to wire-speed switching. If your packets are being routed, then you will not get wire speed because of the router overhead.

Your last two images (by the way, never use images for text; paste the text into your question and format it with the {} button) look like you are getting pretty close to 1 Gbps throughput. I really don't see a problem.

  • i think iperf is measuring raw throughput not the "goodput" so some of the packet overhead you mention is not relevant (?). – Yorik Dec 23 '16 at 16:26
  • It actually uses the network stack, staring with layer-4 (TCP, UDP, or SCTP). That would mean that the layer-2/3/4 overhead, along with the processing overhead will be part of the measurement. – Ron Maupin Dec 23 '16 at 16:30

You might be reading the iperf output wrong and confusing megabits with MebiBytes.

Network speeds are measured in megabits: 1,000,000's of bits per second. File copy speeds are measured in MebiBytes (1,048,576's of 8-bit Bytes per second) so 1 MebiByte = about 8.4 megabits.

iperf's "Transfer" column is in MebiBytes like file transfers. iperf's "Bandwidth" column is in megabits like networks.

Because of the overhead of Ethernet, IPv4, and TCP, your theoretical max TCP/IPv4 over a perfect gigabit Ethernet is about 942 megabits/sec, which is about 112 MebiBytes/sec.

So you're getting 108 MebiBytes/sec out of a possible 112, or 96% efficiency. Not bad. You could possibly squeeze a couple more percent with TCP tuning, such as proper TCP receive window sizing. You could also raise your ceiling a couple percent by going to nonstandard "jumbo frames". Using 9000-Byte frames can make your Ethernet efficiency approach 99%.

But really, iperf is showing that your network is doing decently well as-is. Your initial 300 megabit/sec FTP speed must have been poorly written FTP software, or disk I/O bottlenecks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.