7

I need to test network throughput of a server to/from itself (it's a lonnnng story!).

I love Iperf and use it across the network, but, I just can't figure out how to bind it to a single interface and only listen via that.

From the documentation, I would assume that this would work: iperf -B eth0 -s to bind one instance to eth0, then in another session: iperf -B eth1 -c ip.of.eth.1.

This doesn't work at all, and actually fails. If I use the ip instead of interface, it does work, but, throughput is at 29Gb/s - so, unless there is some magic going on where by I have a super server with a 30Gb/s card, I am guessing that I am not even touching the network and this is just going locally.

Can anyone help me here, or know of a better test/tool?

William Hilsum
  • 3,476
  • 5
  • 27
  • 39
  • There is an existing post on this topic at http://stackoverflow.com/questions/2734144/linux-disable-using-loopback-and-send-data-via-wire-between-2-eth-cards-of-one – dwurf Apr 25 '12 at 12:52
  • I can say that I looked around thoroughly, but, never thought of checking Stack Overflow for this! Reading now. – William Hilsum Apr 25 '12 at 12:58
  • Google-Fu: I didn't get any love till I googled "disable loopback linux". Turns out people try to do that for all the same reasons as you have :) – dwurf Apr 25 '12 at 13:18
  • I had success with `ip netns` exemplified here https://serverfault.com/a/861465/210994 – ThorSummoner Jan 03 '19 at 06:42

2 Answers2

5

Yes, this traffic is transferred locally without reaching your physical interfaces. It is transferred using the loopback interface. The kernel detects that the destination is a local one, so the traffic is looped back to the machine itself without going through eth0 or eth1.

Khaled
  • 35,188
  • 8
  • 67
  • 98
  • I guessed this is what the issue was, just didn't know it was via the loopback - you just gave me the idea of disabling the loopback interface - however, this didn't help and now I can't even get the big speed! Also tried going via a switch instead of going direct (port to port).. Do you know another tool that can help? At the moment, I am thinking of just using another machine... However, I really want to try and keep it to just one if possible. – William Hilsum Apr 25 '12 at 12:40
  • Try putting the interfaces on different subnets, and ensure that ip forwarding is disabled. Just a thought! – dwurf Apr 25 '12 at 12:46
  • @WilliamHilsum: I think it can be done by some ARP trick. – Khaled Apr 25 '12 at 12:49
  • I am certain this could be solved by editing the routing table, but, I just ran out of time and in the end, I just used a second server! Marking as answer though as it explained the problem and got me the closest... If someone else writes an actual answer on how to fix, I will switch the answer to that. – William Hilsum Jul 01 '12 at 16:42
2

I know this is old, but posting in case it helps anyone else.

Quote from iPerf 2 user documentation

If iPerf is in server mode, then specifying a host with -c will limit the connections that iPerf will accept to the host specified. Does not work well for UDP.

I used this to perform TCP throughput tests on Windows 7 64bit from LAN to WiFi interfaces. Worked fine with either iperf 2.0.8 or 2.0.5, not sure about other versions. See below the commands used.

iperf.exe -B 192.168.0.1 -s -c 192.168.0.2 -P 0 -i 1 -p 5001 -f m

iperf.exe -B 192.168.0.2 -c 192.168.0.1 -P 1 -i 1 -p 5001 -f m -t 100 -F c:\data.bin
masegaloeh
  • 17,749
  • 9
  • 54
  • 102
user305077
  • 21
  • 1