Re: How iperf puts delay between the packets??


More details are needed for properly diagnosing what you are seeing here. 
It would be helpful to know these things:

A) Are the tests terminating or orginating from a single machine or 
multiple?

B) What does the client say the UDP send rate is? Does that differ from 
what the server reported?

C) Do you completely understand the method your router is using for 
queuing? So like is it possible that the router is queuing these streams 
separately and thus always giving the TCP stream 35M?

However to answer your questions:
Iperf attempts to generate a CBR (Constant Bit Rate) UDP stream. To 
accomplish this it sits in a tight loop between sends. It makes the 
assumption that once the send() call returns the packet has been sent. (Or 
atleast a extremely close approximation) It then calculates the time 
needed to wait and loops till it is over. Repeat for specified timeout or 
amount to send. The amount actually sent is reported on the client side. 
If this is less than was specified then there are some issues with your 
setup that prevent higher speeds. (i.e. Windows has a horrid time 
resolution with the function we currently use (we want to fix it in the 
future), Iperf is not holding the CPU but got swapped out for another 
process thus making our timing way off (this would be _one_ reason why 
having both streams generated from the system would not work well)....)

Iperf does not control TCP throughput. It simply sends the defined chunk 
size (default 8K) and repeats for specified timeout or amount to send.


Kevin

On Fri, 16 Jul 2004, maroo wrote:

> Hello,
>    I am doing an experiment to test the TCP-friendliness of my protocol. To 
> test it I am passing a stream using my protocol and an iperf TCP stream in 
> parallel through a botlleneck link that supports 100Mbps.
> 
>    To compare TCP-friendliness of my protocol with that of UDP (which is 
> non-TCP-friendly), I am running an iperf UDP stream in parallel with an iperf 
> TCP stream from the same botllneck link. But to my surprise, whatever I set 
> the sending rate of UDP stream (anything above 70Mbps), it always gives 35 
> Mbps to the parallel TCP stream. That is UDP stream lowers down its rate to 
> accomodate the parallel TCP stream on the bottleneck link.
> 
>   So, this is the reason, I want to know how does iperf controls the sending 
> rate of UDP stream (or even for a TCP stream). How does iperf puts the delay 
> between the packets to control the rate.
> 
>   Could anybody please help me.
> 
>   With best regards and thanks for the help.
> 
> Aditya Maroo
> 
> 



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