RE: Iperf UDP issue
On Wed, 12 Feb 2003, paul shields wrote:
> Taking IPv6 support out of the Sun client as you suggested worked great. The
> Sun server now can accept UDP connections. I have a new problem though
Yes the cause of this problem was discovered by Sam Horrock, so it will be
fixed in the next release.
> I have a test where I send short bursts of small packets with iperf. The
> following is the Windows out
>
> C:\>iperf -c 192.168.3.200 -u -l 18 -n 54
> ------------------------------------------------------------
> Client connecting to 192.168.3.200, UDP port 5001
> Sending 18 byte datagrams
> UDP buffer size: 8.00 KByte (default)
> ------------------------------------------------------------
> [140] local 0.0.0.0 port 2038 connected with 192.168.3.200 port 5001
> [ ID] Interval Transfer Bandwidth
> [140] 0.0- 0.0 sec 54.0 Bytes 43.1 Kbits/sec
> read failed: Message too long
This is due to the "end packet" sent from the server to the client, which
would default to 1470 bytes which is larger than your 18 byte buffer. If
you are always testing with this length you can pass it to the server as
well and get a response that will not cause the error. It has no real
effect since it makes you quit when you are in fact supposed to quit.
Kevin
> The transfer works as reported by the Sun server
> [ ID] Interval Transfer Bandwidth Jitter Lost/Total
> Datagrams
> [ 3] 0.0- 0.0 sec 54.0 Bytes 62.6 Kbits/sec 0.031 ms 0/ 3 (0%)
>
> I was just concerned about the error message at the end of the run on the
> Windows NT machine, which is running an unmodified 1.6.5.
>
> Thanks
> Paul
>
>
> -----Original Message-----
> From: Kevin Gibbs [mailto:kgibbs --at-- ncsa.uiuc.edu]
> Sent: Thursday, February 06, 2003 4:05 PM
> To: paul shields
> Cc: iperf-users --at-- dast.nlanr.net
> Subject: 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
>