Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Measuring TCP output from a Windows client to Solaris server:
WXP SP3 with iperf 1.7.0 --> returns an average around 90Mbit
Same client, same server but iperf 2.0.5 for windows --> returns an average of 8.5 Mbit

Similar discrepancies have been observed connecting to other servers (W2008, W2003)

It's difficult to get to some conclusions when different versions of the same tool provide vastly different results.

Example below:

C:\temp>iperf -v (from iperf.fr)
iperf version 2.0.5 (08 Jul 2010) pthreads

C:\temp>iperf -c solaris10
Client connecting to solaris10, TCP port 5001
TCP window size: 64.0 KByte (default)

[ 3] local 10.172.181.159 port 2124 connected with 10.172.180.209 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.2 sec 10.6 MBytes 8.74 Mbits/sec

Abysmal perfomance, but now I test from the same host (Windows XP SP3 32bit and 100Mbit) to the same server (Solaris 10/sparc 64bit and 1Gbit running iperf 2.0.5 with default window of 48k) with the old iperf

C:\temp>1iperf -v
iperf version 1.7.0 (13 Mar 2003) win32 threads

C:\temp>1iperf.exe -c solaris10 -w64k
Client connecting to solaris10, TCP port 5001
TCP window size: 64.0 KByte

[1208] local 10.172.181.159 port 2128 connected with 10.172.180.209 port 5001
[ ID] Interval Transfer Bandwidth
[1208] 0.0-10.0 sec 112 MBytes 94.0 Mbits/sec

So one iperf with a 64k window says 8.75Mbit and the old iperf with the same window size says 94.0Mbit. These results are constant through repeated tests.

From my testing launching iperf(old) with window size "x" and iperf(new) with window size "x" instead of producing the same or very close results produce totally different results. The only difference I see is the old compiled as win32 threads vs. pthreads but parallelism (-P 10) appears to work in both.

Anyone has a clue or can recommend a tool that gives results I can trust??

EDIT: Looking at traces from (old) iperf it sets the TCP Window Scale flag to 3 in the SYN packet, when I run the (new) iperf this is set to 0 in the initial packet. A quick analysis of the window size through the exchange shows the (old) iperf moving back and forth but mostly at 32k while the (new) iperf mostly keeps at 64k. Maybe it will help somebody to connect the dots.

share|improve this question
    
After some tests it looks like the clients are consistent in their inconsistency. Old and new client will report roughly the same values regardless of the server version. The problem lies that the old client will always report say "42" and the new client will always report say "95". So basically the only thing you measure is the particular speed of that iperf implementation but with no real world value at all –  Albert Mata May 28 '12 at 20:18
    
You should probably put the above comment into an answer. And then accept the answer once the minimum time requirement elapses. That will allow others to see that you found an answer to the problem, and perhaps upvote both answer and question. –  Magellan May 28 '12 at 21:18
    
Can you provide download links for both versions you are using? –  dusan.bajic May 29 '12 at 13:57
    
Adrian. It's not really an answer. Same tool, different version, opposite result. I don't know if either of them are accurate. @dusan, sure: 2.0.5: iperf.fr/download/iperf_2.0.5/iperf-2.0.5-2-win32.zip. (I tried others on the web and appear to be the same version) For 1.7.0: linhost.info/downloads/apps/iperf.exe –  Albert Mata May 29 '12 at 19:10
    
downloaded, ran few tests, no inconsistencies found. I know it is not much of a help, but perhaps you should check with different client OS or something (I could only run win764/w2k8r2 combination) –  dusan.bajic May 30 '12 at 15:20
show 1 more comment

3 Answers 3

The later version of iperf you have is using a different threading library (win32 threads vs. pthread). That alone could explain the difference in performance.

There could be some other code difference between 1.x and 2.x of iperf. It could be simple like the default options changed from 1.x to 2.x (such as TCP_WINDOW_SIZE, ...).

Make sure both are using TCP (or udp), for example by re-running with the --udp option.

You might try the iperf-users mailing list archives, or even posting your question there.

share|improve this answer
    
+1 for your (....and because you gave a good answer) –  jwbensley Apr 2 '13 at 17:03
add comment

This doesn't qualify as a proper answer but have you tried ensuring that the iperf version on the Solaris end matches the one you are running on Windows. I haven't been able to reproduce this using iperf 2.0.4 on linux and 2.0.5 on windows. So I am suspecting the behavior you are seeing has to do with the version being used on your Solaris box not playing well with the latest version for Windows.

share|improve this answer
add comment

I don't believe the last statement in @Fahad's answer is correct! The Solaris and Linux iPerf clients are definitely pushing the correct bandwidth per the protocol analyzer. Windows iPerf 2.x is not deriving the correct value, but iPerf 1.07 is; therefore, I had to settle in using 1.x version to get accurate results.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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