Re: Iperf UDP issue
On Thu, 6 Feb 2003, paul shields wrote:
> It seems that iperf clients expect an acknowledgement of the last UDP packet
> sent and if they don't get it, resend the last packet 10 times. Also, when
> the client drops the connection finally, the server also quits with a can't
> getpeeraddress error.
>
> 1. Why does the client expect a response on UDP traffic.
Well the way that Iperf is written there are resources on the server that
need to be freed when a client is done sending (Not true for lots of UDP
applications like say DNS). Since the first final packet is sent at the
speed of the test there is a good chance that packet will get dropped if
the sending rate is too high. As such the client will resend it 10 times
at 1 sec intervals so as to increase the likelihood that it makes it to
the server and the server can release its resources. The response lets the
client know that it can stop the resend process. Yes there are lots of
different ways of doing this but that is were we are right now.
> 2. Can the server be made to stay up in UDP mode when a client disconnects?
As Vivek restated a temporary fix is to change the FAIL_errno() to
WARN_errno() for your case the one you want is in lib/Socket.cpp line 332
(in the Iperf 1.6.5 source). There are a LOT of errors that result in
closing the server, which is not always neccessary or practical. I need to
spend a significant amount of time looking into all of them and making
permanent fixes/changes.
Kevin