Re: UDP Connection tuning questions regarding the -b and -l options
Marc Herbert wrote:
>>>As I understand it I am stressing the server nics and switches
>>>more by trying to achieve the same bandwidth throughput with many
>>>more (and less optimal from the hardware's point of view) packets.
>>>Hence more are dropped by the hardware (or OS).
>
>
> Not really "the same throughput".
>
> Since the -b option specify the throughput at the *UDP* level, when:
> -b is constant
> -l is variable
> then the throughput on the wire is _variable_, because you need to
> send _more_ packets (and thus more headers) for the same amount of
> user (-b) data. For low -l values, the throughput on the wire can
> even _exceed_ 100Mb/s, which is probably not what you want if you only
> have a 100Mb/s interface.
>
> Seen the other way round, if you want to keep the wire rate constant
> while -l is variable, then you need an adjusted, variable -b. Sorry.
OK I understand now thanks (famous last words from someone no doubt).
So if I use:
iperf -u -c 172.18.1.1 -l 100B -b 90m -t 5
I am saying send 90Mbits of data and getting 41.4 Mbits of headers added
on. This clearly does not work for a 100Mbit/s link!
My calculations:
Based on...
Ethernet header: 14 bytes
IP header: 20 bytes
UDP header: 8 bytes
UDP data: 1470 bytes (your -l option)
Ethernet CRC FCS: 4 bytes
To achieve 90 Mbit/s of UDP data with 100 byte datagrams 112500 udp
datagrams are sent per second. As the overhead is 46 bytes per datagram
then the total overhead per second is 46 x 112500 = 5175000 MBytes =
41400000 Mbits.
So I need to script a wrapper to set the correct -b option given a -l
value so I allow for the overhead, assuming I want a constant wire rate.
Jim Mozley