Re: wrong parameters?


On Fri, 6 Feb 2004, Aldo Febro wrote:
> I was trying to send traffic from client -> server using the following specification:
> - constant streaming UDP traffic
> - payload size 160 bytes
> - sending 50 packets per seconds
> - let it run for 1 hour
> - format output in kbps
> - display report every 1 sec interval
> - iperf v 1.7, running on Windows 2000 box
> - client and server is separated by T1 running PPP
> 
> On the server side, I use the following parameters:
> iperf -s -u -f k -i 1 

This is a correct usage for the specified test.

> On the client side:
> iperf -c server_name -u -l 160 -n 50 -t 3600 -f k -i 1

This however is not what you want. First you are confused about the (-n) 
option. There are 2 ways to signal the end of a test. Either after a 
certain amount of time (-t) or after a certain amount of data is 
transfered (-n). You are telling it to end after sending 50 bytes, but 
then you tell it to run for 1 hour so it ignores (-n 50). Yes there is a 
bug in the docs for the (-n) parameter that needs to get fixed or maybe it 
was I forget, but it should be bytes not packets. 

Second, Iperf's UDP transfer speed is controlled by only one parameter, 
the bandwidth (-b) parameter. Also Iperf will only report application or 
payload data. This is because it is anyone's guess as to the size of the 
lower level headers. We can not determine if you are using ethernet or ATM 
or something else. Or if your machine is adding IP options or something. 
So if you want about 50 packets / second. Then you would specify:
iperf -c server_name -u -b 64k -l 160 -t 3600 -f k -i 1

Since, 50 pkts/s * 160 bytes/pkt = 8000 bytes/s * 8bits/byte = 64k (kilo 
bits are measured with 1000 bits since that is what equipment is measured 
with)

> I got the following results from the server:
> [ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
> [900]  0.0- 1.0 sec   127 KBytes  1043 Kbits/sec  2.438 ms    0/  815 (0%)
> [900]  1.0- 2.0 sec   128 KBytes  1052 Kbits/sec  2.444 ms    0/  822 (0%)
> [900]  2.0- 3.0 sec   128 KBytes  1052 Kbits/sec  2.353 ms    0/  822 (0%)
> 
> My problem:
> 1) iperf should only send 50 packets per second, but instead it sent around 800 packets per second
> 2) The bandwidth should be around 77kbps. But the reported bandwidth is 1043 Kbits/sec.

The above commandline should yield better results. If you want line level 
throughput numbers you will have to adjust for the headers by taking Iperf 
results and multiplying by 194/160, for the given situation only. You may 
notice that during some reporting intervals there may be 50, 49, or 51 
packets sent and this is due to scheduling and the granularity of the 
timer used.

> My calculation is as follows:
> L2 header (PPP)  :  6 bytes
> IP header        : 20 bytes
> UDP header       :  8 bytes
> Payload size     :160 bytes
> TOTAL packet size:194 bytes  
> 50 packets per seconds * 194 bytes = 9700 bytes
> To put in in kbps = 9700 bytes * 8 = 77,600 bps (77kbps)
> 
> So, I wonder whether my logic is correct? or the parameters used was 
> wrong? or iperf is not the right tool to achieve this?
> Any input will be appreciated, and thanks in advance for any help on this!

Everything looks good, just got a little mixed up on the parameters. Iperf 
will do this job and I don't know of anything that would be similar.

Kevin



Other Mailing lists | Author Index | Date Index | Subject Index | Thread Index