[iperf]: Bug fixes in DCCP support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I found that iperf still had several bugs, some of these involving the
DCCP support. 

The bugs have been fixed and the updated version of iperf has been uploaded to
http://www.erg.abdn.ac.uk/users/gerrit/dccp/apps/#iperf

A tarball with all changes is on  
http://www.erg.abdn.ac.uk/users/gerrit/dccp/apps/iperf/zip/iperf-2.0.2_DCCP-patched-CBR-continuous.tar.bz2

(NB - test tree also updated today).

Details of changes:
-------------------
 * fixed counting bugs when DCCP was used in packet-oriented mode
   (now the packet count is correct and works across UDP/DCCP);

 * enabled UDP-like reporting of statistics also for DCCP;

 * rewrote the algorithm to compute the inter-packet-gap in CBR mode:
   - in DCCP it tried to stuff the pipe without accounting for the time
     it spent, thus producing more packets than specified;
   - in tests this was observed to cause overflow;
   - the algorithm now measures the actual inter-packet gap of each packet
     and compares it to the target; adjusting for each send time;
   - it is more accurate than the previous implementation, in particular
     so for DCCP.
 * replaced the delay_loop(), which was using a spin-loop of constantly
   calling gettimeofday(), with nanosleep(). While the spinloop worked
   reasonably in many cases, it sometimes caused unwanted delays of
   50milliseconds or more (process preempted?); it does not block signals
   like nanosleep; and nanosleep uses the hrtimers interface internally
   (/usr/src/davem-2.6/Documentation/hrtimers/hrtimers.txt)

 * separated setting TCP window size and SO_{RCV,SND}BUF settings;

 * completely overhauled the IPv6 support, it is in the order of 359 insertions
   versus 759 deletions; the -V flag is no longer necessary - iperf can now take
   any v4/v6 hostname, v4/v6 literal address. This required a minor change for
   the dual test and the tradeoff test (options -2 and -r): they no longer do a
   check for the reverse-lookup when the reverse connection comes in, instead
   the peer address is copied from the connection, which will do in almost any
   conceivable case (doing a reverse lookup leads to complications since it
   requires complex case distinctions of v4/v6-mapped-v6/v6 addresses).

* IPv4 multicast support did not work well when the server-bind argument (-B)
  was used on a host with multiple interfaces. This has now been fixed for both
  IPv4 and IPv6 multicast using the `-j' `-J' arguments (for join-interface).
  For example:
  	iperf -s -u -B 224.1.2.3	  # works if there is only one interface
	iperf -s -u -B 224.1.2.3 -j eth1  # wanted to join on that one
	iperf -s -u -B FF00::c0de -J eth2 # IPv6 multicast, same semantics

Hence if anyone is using iperf for DCCP, using the new version is much encouraged,
as it will produce more reliable and accurate results.

Still - when encountering any problems with this version of iperf, please do report
these.
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [IETF DCCP]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux