1These are the Release Notes for Revision 2.7.0 of netperf:
2
3*) Add bits/s (-f b) and Bytes/s (-f B) as selectable throughput
4   units. This may make life easier for folks doing post-processing of
5   things like interim results.
6
7*) Miscelaneous fixes
8
9*) Much of the now-seeming kruft for things peripheral to netperf's
10   core mission - have been removed though the code itself remains in
11   the repository.  So, things like looking-up egress interface,
12   driver/slot information etc have been disabled in a manner
13   requiring more than just a ./configure to bring-back.
14
15   It wasn't clear those features were being used.  This is a test of
16   that hypothesis.
17
18These are the Release Notes for Revision 2.6.0 of netperf:
19
20*) Initial pass at support for --enable-intervals (WANT_INTERVALS) for
21   Windows, courtesy of Jonathan Cook.
22
23*) When in demo mode (./configure --enable-demo and a global -D
24   <interval> option netperf will make sure it emits "one last
25   interval result" when the test is terminated.  This should assist
26   when post-processing results through the likes of rrdtool when
27   there is a slow-down in the performance just at the end that would
28   have stretched the interval to beyond the test termination.
29
30*) A fix to have the AF_UNIX tests realize that the value for "take
31   the system default" socket buffer size became -1 years ago.  Bug
32   found by Eric Dumazet.
33
34*) Include a patch from Dave Taht to enable symbolic manipulation of
35   IP_TOS values.
36
37*) Include a patch from Sachar Raindel to enable the omni tests to get
38   ENOBUFS under Linux when the socket buffer is larger than the tx
39   queue of the egress interface.  This will help preclude netperf's
40   reporting a larger than link-rate send-side figure.
41
42*) Fix a problem with late checking of the return from select() in
43   src/netserver.c. Reported by Waqar Sheikh.
44
45*) A new global -Z option has been added to netperf and netserver.
46   This takes as an argument a passphrase.  In the case of netserver
47   it will expect a control message with the passphrase as the first
48   thing it receives on the control connection.  If netserver does not
49   receive a control message with the passphrase it will close the
50   control connection and move-on.  If the netserver receives a
51   control message with a passprhase when it is not lookign for one,
52   it will be ignored. There is at present a 20 second timeout on the
53   attempted receipt of the request message. In the case of netperf,
54   the passphrase will be the first thing sent on the control
55   connection.  There is no response to a passphrase control message.
56
57*) Demo mode output format will now track the omni output format. So,
58   if the omni ouput format is CSV then the interim results will be
59   emitted in csv. Likewise for keyval.  If the mode is human (default
60   and test-specific -O) then the output remains unchanged.  Keyval
61   output includes the count of interval, with a mind towards being
62   able to source it in shells and whatnot.  Subject to change without
63   notice.
64
65*) A patch to correctly handle IPv6 addresses in the control messages,
66   courtesy of Bjoern Zeeb.
67
68*) The global -F option can now be used specify a local and/or remote
69   fill file.
70
71*) It is now possible to set/get the TCP congestion control algorithm
72   being used by either end of the test connection when using the omni
73   code.  The output selectors are LOCAL_CONG_CONTROL and
74   REMOTE_CONG_CONTROL and setting is via the test-specific -K option.
75
76*) Stop leaking file descriptors when looking-up probable egress
77   interface names and I/O slot numbers.
78
79*) The global -Y option can be used to set IP_TOS on those platforms
80   which support it.  Since this is specific to IP (v4 or v6) it may
81   move to a test-specific otion in the future.  It is presently
82   global for foolish consistency with the -y option to set
83   SO_PRIORITY.
84
85*) The global -y option can be used to set SO_PRIORITY on those
86   platforms which support it.  Based on patches from Amir Vidai.
87
88*) The control message size has been increased from 256 bytes to 512
89   bytes. THIS WILL BREAK COMPATABILITY WITH PREVIOUS VERSIONS OF
90   NETPERF. However, we need more room on the pinhead on which the
91   angels dance.
92
93*) Make the "sum" field of the histogram structure a 64 bit int to
94   avoid having it wrap-around on tests where the sum of all the
95   measured latencies was larger than 31 bits. This was causing
96   statistics like stddev to go negative in some cases.
97
98*) If the time delta between two events is negative, do not bother
99   doing any math with it in the histogram/statistics code, just
100   increment the ridiculous count and move-on.
101
102*) Fixed a bug which caused local transport retransmissions to be
103   reported as -1 even though the getsockopt() call was
104   successful. (Linux).  Later included remote transport
105   retransmissions.
106
107*) The src/nettest_omni.c and re-written src/netserver.c code are now
108   known to have compiled under Windows 7 x64 with the Microsoft
109   WDK. There remains a timing issue with confidence intervals which
110   is yet to be addressed, and may have been there for ages. Netserver
111   has been run as a non-spawning (-f) server, netperf has been run,
112   both have run "classic" and "omni" tests.
113
114These are the Release Notes for Revision 2.5.0 of netperf:
115
116*) Add a new -N option to netserver which will suppress all creation
117   of debug files and so debugging output.  While this would put a
118   serious crimp in debugging a problem in netserver, it will enable
119   folks using small embedded systems to avoid soaking-up their /tmp
120   filesystem with clutter.
121
122*) A refactoring and partial re-write of the src/netserver.c code to
123   untangle years of accumulated spaghetti code.  Included is the
124   ability to not daemonize netserver when launched from the
125   command-line (-D) and also to not fork/spawn child processes upon
126   the acceptance of a control connection (-f).  Combined, the two
127   options will cause netserver to remain in the forground and not
128   spawn children - in effect netserver will handle only one test at a
129   time.
130
131*) As it has been two years since the defect in Solaris getaddrinfo()
132   was submitted, it should be the case that a fix is available, so it
133   should no longer be necessary to "hide" the "Hey your platform's
134   getaddrinfo() call is buggy" warning.  Consequently, it is no
135   longer being suppressed.
136
137*) A new global command line option - -S - has been added to enable
138   setting of SO_KEEPALIVE on the data socket.  This will affect the
139   netperf side of the "classic" netperf tests, and will also affect
140   the netserver side of an "omni" or migrated classic test as only
141   the control message for the omni tests has the requisite flags
142   field to communicate the desire to set SO_KEEPALIVE.
143
144   Ostensibly, this may help when netperf is (ab)used in functional
145   testing situations and netservers end-up orphaned and out in the
146   cold because their corresponding netperfs went away and the
147   notification was lost amid the roar of traffic over-saturating the
148   interconnect(s).
149
150   The default is to behave as before - SO_KEEPALIVE not set.
151
152*) Base on the frequency at which the author has used the
153   functionality, the default for --enable-burst is now "yes."  To
154   disable support for burst mode one must now include a
155   --enable-burst=no when performing the ./configure prior to
156   compiling the bits.
157
158*) The output of the -D global command line option (./configure
159   --enable-demo) has been enhanced to include seconds and
160   milliseconds since the epoch as returned by a gettimeofday() call
161   with a null pointer for the timezone.  This is in support of being
162   able to easily shove interim results into an rrdtool Round-Robin
163   Database (RRD).
164
165*) The "omni" tests will be compiled-in by default, and WANT_MIGRATION
166   is the default.  One must ./configure with --enable-omni=no to
167   disable this.
168
169*) When ./configured with --enable-intervals and intervals are
170   actually used, the round-trip latency reported by an omni (or
171   migrated classic) request/response test should better reflect
172   reality rather than the length of the pacing interval.  It and the
173   MEAN_LATENCY from the histogram and -j output will still differ
174   slightly and probably always will.
175
176*) The histogram code has been enhanced to track more than one latency
177   at a time and so --enable-histogram and --enable-burst are now
178   compatible - for the omni tests or migrated "classic" tests only
179   however.  This change was inspired/instigated by Jim Gettys and his
180   work on overly-large queues of buffers
181
182*) WANT_MIGRATION is enabled when one specifies --enable-omni on the
183   configure command line.
184
185*) Massage and encorporate a patch from Google that enables
186   randomization of the IP addresses used in a test.  An optional mask
187   length in the standard '/' notation can be added to the end of the
188   IP/name in the test-specific -H or -L options of an Omni test.
189
190*) Massage and include a DEBUG_LOG_FILE patch for Android from
191   Josselin Costanzi
192
193*) Add intial attempt to report Slot ID on HP-UX 11.31.
194
195*) Add global -s option to cause omni tests to pause between
196   setting-up the test and actually starting it.  pause is in seconds.
197   Poor man's way to (attempt to) avoid issues when starting many,
198   Many, MANY concurrent netperf tests. Based on patches from Google.
199
200*) Additional timing statistics will be kept by the omni tests when
201   the global "-j" option is specified.  The additional statistics are
202   min, max, mean, stddev and the 50th, 90th and 99th percentiles on
203   the timings measured by histograms. Based on patches from Google.
204
205*) Add a workaround to get Linux to report TX queue drops in a
206   UDP_STREAM test when the socket buffer size is larger than the
207   TX queue.  Provided by Andrew Gallatin.
208
209*) Fix the configure script to know it does not have to look for an
210   SCTP library on FreeBSD 8.X
211
212*) The BSD and "omni" tests now have a test-specific -R option which
213   is a boolean controlling whether or not SO_DONTROUTE will be set on
214   the data socket.  By default, any unidirectional UDP test will have
215   SO_DONTROUTE set unless a -R 1 option is given.  All other tests
216   (including UDP request/response tests) will not have SO_DONTROUTE
217   set unless a -R 0 option is given.  This is put into place to make
218   it take longer for blithering idiots to shoot themselves in the
219   foot by running tests on setups they shouldn't.
220
221*) At least the beginnings of support for RDS, based on a circa 2007
222   patch against 2.4.2 by Vladimir Sokolovsky. Rather than create the
223   "RDS_STREAM" test of his patch, the intention this time around is
224   to enable RDS for the "omni" tests by using an omni test-specific
225   -T rds specifyer for the "transport" to use.
226
227*) Missing fprintf format statements provided by Bruno Cornec
228
229*) Numerous cleanups from Jose Pedro Oliveira
230
231*) Fixes to allow netperf -H ::1 to work without having to add -6 or
232    an AF_INET6 -L option
233
234These are the Release Notes for Revision 2.4.5 of netperf:
235
236Things changed in this release:
237
238*) Fixes for Linux procstat-based CPU utilization on newer kernels
239   from Andrew Gallatin.
240
241*) Fix for a TCP_RR hang from Michael Shuldman
242
243*) Compilation cleanups for MingW cnd MSDOS (djgpp) ourtesy of Gisle
244   Vanem.
245
246*) Changes to enable compilation and building of netperf for
247   VMware. Kudos to the person who did the first port, I will be happy
248   to name that person when told it is OK :)
249
250*) Fixes from Adam Bidema for launching netserver children when the
251   path to netserver.exe is very long.
252
253*) For the first time, netperf2 has a dependency, albeit optional, on
254   another non-base-os bit of code - libsmbios under Linux.  It will
255   attept to detect this at compile time and use it to report the
256   system model name in an omni test.  If libsmbios is there we will
257   try to use it, otherwise we will not.  If the associated include
258   file is also there (eg the -dev package in apt-get-speak), we will
259   use it to get the prototype for SMBIOSGetSystemName, otherwise we
260   make a guess as to the prototype for SMBIOSGetSystemName(), which
261   is the only call we make to libsmbios.
262
263*) Fixes for BSD CPU utilization to deal with different BSD variants
264   using different types.  Courtesy of Simon Burge <simonb@NetBSD.org>
265
266*) The "omni" suite has been added on an experimental basis.  If it
267   works-out then many of the tests in src/nettest_bsd.c,
268   src/nettest_sdp.c, and src/nettest_sctp.c will be "migrated" to use
269   the "omni infrastructure" (aka two routines to measure them
270   all...).  Apart from reduced socket code, the omni suite has
271   user-configurable output in either "human readable," CSV or
272   keyword=value format.  By default, a VERY large quantity of data is
273   output when asking for csv format (test-specific -o option) or
274   keyword format (test-specific -k option).  The omni suite is not
275   yet documented (there are some as-yet undiagnosed problems with
276   doc/netperf.texi in emacs texinfo mode and updating nodes and links
277   and such - any help there would be appreciated) but there is a
278   small text file in doc/ describing the names (most) of the
279   available output's.  For the most up-to-date list consult
280   src/nettest_omni.c and the enum netperf_output_name. Or, you can
281   pass-in a "filename" of '?' to either of the -O, -o or -k options
282   and netperf will emit a list of the known available outputs.
283
284*) Coming along for the ride are some new platform specific files to
285   determine the probable egress interface for each end of a test, as
286   well as driver information for that interface.  There is also
287   reporting of "uname" like information for both local and remote
288   system, and eventually perhaps something about the vendor's model
289   name for the systems as well as the processor types.  The end goal
290   is to make it easy to get most if not all what one would want in a
291   database of netperf results.
292
293*) The UDP_RR test now understands the global -f option to change
294   output units.  It also understands the -B option to tag
295   results. Courtesy of Alexander Duyck.
296
297*) A fix has been added for hanging UDP_RR tests under
298   Windows. Courtesy of Alexander Duyck.
299
300*) Use vfork() on those platforms without fork(), courtesy of Matt
301   Waddel
302
303*) Track the bouncing interfaces that are linux processor affinity
304
305*) Fixes for Solaris sendfilev usage.
306
307*) A TCP_MSS test has been added which will report the MSS for a data
308   connection setup as if the test were a TCP_STREAM test.  While the
309   remote (netserver) is tricked into thinking it is to accept a
310   TCP_STREAM test, no actual data will flow over the connection.
311   This means that if the MSS is one which might change over the life
312   of the connection, it will not be reflected in the test output.
313   Should this prove to be a problem a single send() can be arranged
314   along with the return of the shutdown();recv() handshake.
315
316   The idea is that this might be useful for netperf scripts wanting
317   to parameterize things based on the MSS - for example the
318   packet_byte_script.
319
320*) The width of the confidence interval can be specified in fractions
321   of a percent for the confidence of a clean, close, comfortable
322   calculation. :)
323
324*) Honor the global -B option in a TCP_SENDFILE test.
325
326*) Correct the sense of Send/Recv in the banner of a TCP_MAERTS test.
327
328These are the Release Notes for Revision 2.4.4 of netperf:
329
330Things changed in this release:
331
332*) The LOC_CPU and REM_CPU tests will report their respective beliefs
333   as to the number of CPUs present when the verbosity is set to more
334   than one.  This can be used when trying to diagnose issues with CPU
335   utilization.
336
337*) A kind soul who wishes to remain anonymous provided a patch to
338   enable use of sendfile() on OSX.
339
340*) Fix a misplaced \n in a format string of send_tcp_maerts, courtesy
341   of Alexander Duyck.
342
343*) There is an experimental global -r option which will allow one to
344   include CPU utilization measurements, but make the decision about
345   hitting confidence based on the result only.  The test banner will
346   reflects this when -r is used.
347
348*) It is no longer necessary to specify a file with the global -F
349   option when running a _SENDFILE test.  Netperf will create a
350   temporary file and populate it with random data and use that.  If
351   running aggregate tests it is strongly suggested one use a -F
352   option. Otherwise, the overhead spent creating and populating the
353   temporary file will be included in the CPU utilization calculation.
354
355*) The configure script recognizes Solaris 11 and selects the correct
356   CPU utilization mechanism - or rather it selects the same mechanism
357   as is used in Solaris 10.  Fix courtesy of Andrew Gallatin.
358
359*) Convert a number of struct sockaddr_in's to struct
360   sockaddr_storage's and add requisite casts to deal with some abort
361   problems on Windows and perhaps other platforms as well. Kudos to
362   Alexander Duyck.
363
364*) One can now pass a value of 'x' to the global -f option to specify
365   the units as transactions per second.  This is the default for any
366   request/response test, which is determined by there being a "double
367   `r'" in the name - eg "RR," "rr," "Rr," or "rR."  At present only
368   the TCP_RR test actually looks for this to be set.
369
370*) One can request bits/bytes per second as the primary output of a
371   TCP_RR test by setting the global -f option to [kmgKMG] as with any
372   of the "STREAM" tests.  This converts the primary throughput metric
373   to a bitrate (byterate) following the verbosity rules for a STREAM
374   test.  Service demand remains usec/Transaction regardless of the
375   setting of the global -f option.
376
377   A verbosity level of 2 or more will cause the TCP_RR test to report
378   calculated average RTT latency, transaction rate, and inbound and
379   outbound transfer rates regardless of the primary units selected
380   with the global -f paramter.  If the primary output is transactions
381   per second, the reported inbound and outbound transfer rates will
382   be 10^6 bits per second, otherwise, they honor the setting of the
383   global -f option.
384
385   All of this is EXPERIMENTAL and subject to change without prior
386   notice in future versions of netperf.
387
388*) Replace "break" with "break 2" in acinclude.m4 for a socklen macro
389
390*) The default for the requested socket buffer size is changed from 0
391   to -1 to enable passing a value of 0 under Windows, which tells that
392   stack one wishes to enable copy-avoidance.
393
394*) Call fflush() on each interim result displayed in demo mode to make
395   things happier for folks redirecting same to a file.  From Dan
396   Yost.
397
398*) In theory each distinct netserver child will have a debug log with
399   its pid appended to the name, somewhat like what appears to happen
400   under Windows.
401
402*) A new global, command-line option to netperf and netserver has been
403   added. The -V option will cause netperf/netserver to display its
404   version and exit.
405
406*) Setting -I without setting -i will now implicitly set the iteration
407   minimum and maximums as if a -i 10,3 were set.  Also, some further
408   sanity checking on the bounds for each is made.
409
410*) Fixed a typo in the manual (found by Emir Halepovic) so the
411   description for the -s and -S options properly specifies they
412   affect the data connection.
413
414These are the Release Notes for Revision 2.4.3 of netperf:
415
416Things changed in this release:
417
418*) The UDP_STREAM test includes --enable-demo support, courtesy of
419   patches from Scott Weitzenkamp.
420
421*) The nettest_dns.* files have been removed from the release and the
422   repository.  Those wishing to perform DNS server tests should
423   migrate to netperf4 which has better support for DNS test.
424
425*) Fixes for compiling under Windows with Mingw/gcc courtesy of Gisle
426   Vanem.
427
428*) A new global option - -N - has been added. When specified, this
429   option will tell netperf to not bother to try to establish a
430   control connection with a remote netserver.  Instead, netperf will
431   only attempt to make a data connection to the remote system.  By
432   default, this will be to the "discard" service for a "STREAM" or
433   "SENDFILE" test, the "echo" service for a "RR" test and the
434   "chargen" service for a "MAERTS" test.  Any "remote" settings are
435   changed to reflect their being unused in the test, and a "no
436   control" tag is added to the test banner when -N is specified.
437
438   This still needs to be propagated to other test files - at least
439   for those for which it may make sense.
440
441*) The tests in nettest_bsd.c have been altered to not actually take
442   timestamps and deltas in --enable-histogram unless the verbosity
443   level has been set to actually display a histogram.  This reduces
444   the overhead measurably, even on systems with "fast" time calls,
445   which _may_ mean that a future release of netperf may have
446   histogram support enabled by default.
447
448   This still needs to be propagated to other test files.  Patches
449   from the community would be most welcome :)
450
451*) Eliminate a bogus fprintf from the signal catching routine which
452   was being executed when both intervals and demo mode were active at
453   the same time.
454
455*) The nettest_ipv6.* files are no longer included in the source
456   tar/zip file. IPv6 functionality has been subsumed into the
457   nettest_bsd.* files for some time now.
458
459*) Use a higher resolution "time" source for HISTOGRAM support under
460   Windows, courtesy of Spencer Frink. Prior to this it had no better
461   than 10ms granularity which could lead to some rather strange
462   looking results :)
463
464*) A bug fix reporting recv_size rather than send_size in TCP_MAERTS
465   when CPU utilization was requested.
466
467*) A bug fix for buffer filling from a file to properly advance the
468   buffer pointer when the file is smaller than the send buffer.
469
470*) Enable certain UDP tests which previously used unconnected sockets
471   to use connected sockets.  Courtesy of Shilpi Agarwal.
472
473*) The OSX CPU utilization code actually gets put into the tarball in
474   a make dist now :)
475
476*) The check to make sure that getaddrinfo returned ai_protocol and/or
477   ai_socktype's matching that which we requested is done for all socket
478   and/or protocol types and a warning is emitted if it returns any which
479   do not match.
480
481*) The linux CPU affinity code has been made capable of binding to
482   CPU's >=32 on a 32-bit compilation and >=64 on a 64-bit
483   compilation.
484
485*) More complete closing/redirecting of stdin/stdout/stderr/where in
486   netserver to make it easier to launch netserver at the far-end of a
487   remote shell.  Courtesy of Hans Blom.
488
489*) Sendfile changes for Solaris courtesy of Andrew Gallatin.
490
491*) "spec" file support to generate RPMs courtesy of Martin Brown
492
493These are the Release Notes for Revision 2.4.2 of netperf:
494
495Things changed in this release:
496
497*) Fixes for floating point format differences, courtesy of George
498   Davis.
499
500*) Additions for CPU util support on MacOS X, courtesy of Anonymous.
501
502*) Processor affinity is now supported on AIX 5.3 (perhaps earlier)
503   via the bindprocessor system call.
504
505*) Fixes for test lockups with TCP_CRR and TCP_CC under Windows
506   courtesy of Dikon Reed.
507
508*) Fixes to netcpu_looper.c to get it to actually compile :)
509
510*) Have netcpu_looper use the bind_to_specific_processor() call
511   provided by netlib since that knows about more platforms than the
512   code in netcpu_looper did. The looper CPU binding will use a
513   mapping to handle cases where the CPU id's on the system may not be
514   a contiguous space starting from zero.  At present, the code that
515   setups the mapping only knows about retrieving actual CPU ids under
516   HP-UX.
517
518*) The netcpu_sysctl method becomes calibration-free, courtesy of
519   Andrew Gallatin
520
521These are the Release Notes for Revision 2.4.1 of netperf:
522
523Things changed in this release:
524
525*) There is now a -B global command-line argument that will append its
526   parameter as a string to the end of result lines when test banners
527   have been suppressed.  this is to make it easier to distinguish one
528   result from another when aggregate restults are being run in
529   parallel, without having to resort to having the individual results
530   shell redirected to a file. This has been done for some of the
531   tests in nettest_bsd.c, but not all of them, nor for the tests in
532   the other nettest_mumble.c files.
533
534*) There is now an --enable-spin configure option that will enable
535   intervals if not already enabled and will have the sender sit and
536   spin in a tight loop until time for the next interval rather than
537   wait for an interval timer to expire.  This means it should be
538   possible to have a much finer granularity on the interval, at the
539   expense of an EXTREME increase in CPU utilization.  (To the extent
540   I'm considering disabling measurement of local CPU utilization when
541   that mode is enabled, and bursts have been requested - your
542   feedback on that topic would be most appreciated)
543
544   If only --enable-intervals is used with configure, the old set the
545   interval timer and wait method is still used.
546
547   If --enable-spin is configured, the test banner will include "spin
548   intervals" rather than the "intervals" from a plain
549   --enable-intervals.  The sit and spin will either use
550   gettimeofday(), or gethrtime() if gethrtime() is available.
551
552   This has been implemented in the tests of nettest_bsd.c but none of
553   the others.  Volunteers would be most welcome.  I would entertain
554   the notion of making the implementation a series of inline
555   functions in netlib. This holds true for the demo mode - why will
556   become clear when you look at nettest_bsd.c.  While things are
557   considerably cleaner than they were before, with reuse within
558   nettest_bsd.c, there is no resuse with the rest of the
559   nettest_mumble.c files.
560
561*) the -w option for the interval time now takes three optional
562   suffixes. if the suffix is 'm' (eg 10m) it will assume the user has
563   specified time in units of milliseconds.  if the suffix is 'u' it
564   will assume microseconds, and if 's' seconds. no suffix remains
565   milliseconds for backwards compatability with previous netperf
566   versions.
567
568*) It should be possible to successfully compile with
569   --enable-intervals.
570
571These are the Release Notes for Revision 2.4.1 of netperf:
572
573Things changed in this release:
574
575*) netcpu_pstatnew.c has been altered to workaround a bug in the
576   interrupt cycle accounting in HP-UX 11.23 that is not expected to
577   be resolved until a later release.  basically, some interrupt time
578   is not counted, which means the sum of idle, user, kernel and
579   interrupt is less than the cycles per second multiplied by the
580   elapsed time.  the workaround preserves the "no calibration
581   required" nature of the pstatnew CPU utilization mechanism.  you
582   can see more in netcpu_pstatnew.c and/or in debug output.
583
584*) in netlib.c recv_response has been renamed
585   recv_response_timed(addl_time) which is now used in
586   calibrate_remote_cpu in place of the "sleep(40);recv_response()"
587   sequence.  This then allows the REM_CPU test to complete in less
588   than 40 seconds when the remote's CPU utilization mechanism does
589   not require calibration.  The value of "addl_time" is added to the
590   tc_sec field of the select() timeout.  A "new" recv_response has
591   been added that simply calls recv_response_timed(0) - this is to
592   minimize the number of changes needed elsewhere in the code.
593
594*) hopefully, this release fixes problems people have been having with
595   the configure script failing when picking a type for socklen_t.
596   now, instead of generating an error, it emits a warning and simply
597   tries socklen_t
598
599*) the configure script no longer looks for the size of an in_port_t
600
601*) netlib.c now has code to perform processor binding for Tru64, but
602   the configure script may or may not detect it correctly. This means
603   that one may have to edit the config.h file by hand to get the
604   functionality.
605
606*) it is known that netperf will compile under Windows XP and 2003
607   using the DDK it is possible that netperf 2.4.1 will compile on a
608   Windows system under VC++/Visual Studio.  It might even work!-) See
609   the README.window file for additional details.
610
611Things _NOT_ changed in this release:
612
613*) The automagic determination of the number and type of parameters to
614   sched_setaffinity under Linux remains brittle at best.
615
616These are the Release Notes for Revision 2.4.0 of netperf:
617
618Things changed in this release:
619
620*) Netperf has been converted to use a configure script.  Yes boys and
621   girls, after 12 years of distributing netperf with just a makefile
622   I have finally bitten the bullet and cast my fate to autoconf,
623   automake, etc.  To get the most basic netperf built all you should
624   need to do is:
625
626   cd to the netperf directory
627   ./configure
628   make
629   and perhaps
630   make install
631
632   (Note, I've not done much with make install - I'm hemming and
633   hawing over what the default installation location should be)
634
635   Please keep in mind that this is the first time I've tried to use
636   autoconf et al. I am sure there are things that should be done
637   differently and would welcome any and all constructive criticisms.
638
639   I suspect there are several places where I've not fully
640   demonstrated being of the autoconf body - particulary as pertains
641   to include files being in "#if mumble #endif" blocks.  Fixes would
642   be most welcome.
643
644*) Speaking of becomming one with various GNU tools, work on a new
645   netperf manual has begun, with the source being a texinfo document
646   that is converted to "all" the other formats.  This resides in doc/
647   .
648
649*) The platform-specific parts of CPU utilization measurement have
650   been broken-out into separate .c files and selected at configure
651   time a la the pcap_mumble files of tcpdump.  This makes
652   src/netlib.c _much_ easier to read and the addition of new CPU
653   utilization mechanisms much easier.
654
655*) New HP-UX 11.23 and Solaris 10 CPU utilization measurement
656   mechanisms (called pstatnew and kstat10 respectively) need no
657   calibration step.  Both have variations on microstate accounting.
658   HP-UX 11.23 still identifies the method in the headers as 'P' for
659   pstat.  The kstat10 method is identified as 'M' for Microstate.
660
661   Scripts which make calibration runs with LOC_CPU and REM_CPU may
662   continue to do so, they will just run forty to eighty seconds
663   faster on platforms with the calibration-free CPU util mechanisms.
664
665*) Automatic detection of CPU utilization mechanism for HP-UX, Linux,
666   AIX, *BSD and Solaris.  If you do not like what the configure
667   script selects, you can use --enable-cpuutil=<foo> .
668
669*) The "times" (aka 'T') CPU utilization mechanism has been removed.
670   It was never very accurate at all, only showing CPU time charged to
671   the process, and with interrupts and other network processing it is
672   rarely chaged to a or the correct process.  It and other methods
673   may remain in the format_cpu_method() routine of src/netlib.c for
674   historical purposes only.
675
676*) CAVEAT - the "kstat" mechanism is KNOWN TO BE BOGUS for Solaris.
677   It does not include time spent processing interrupts, and
678   networking benchmarks will generate at least a few of those...
679   This affects _ALL_ versions of Solaris with kstat.
680
681   So, do NOT trust any CPU util figures where netperf says the method
682   was 'K' for kstat - unless perhaps it reports 100% CPU util.
683
684   Solaris 10 takes a step in the right direction adding microstate
685   accounting similar to what netperf uses on HP-UX 11.23.  HOWEVER,
686   Solaris 10's accounting for user/kernel/idle is done in _parallel_
687   with interrupt, which means they overlap. Doubleplusungood. Netperf
688   attempts to compensate for that with some handwaving
689   (src/netcpu_kstat10.c)
690
691*) Initial support for SCTP has been added with the SCTP_STREAM and
692   SCTP_RR tests.  These tests use the libsctp mechanisms for
693   increased portability.  It has been explained that libsctp should
694   not impart all that much overhead and it does make things rather
695   simpler.
696
697*) Netperf now uses getaddrinfo() to resolve hostnames and IP
698   addresses. A replacement getaddrinfo() is provided for those
699   platforms where the configure script cannot tell that getaddrinfo
700   is present.
701
702   There are cases where a host's getaddrinfo call may return results
703   that ignore the hints for protocol.  Netperf catches these and
704   reports a warning so you can pester your OS source for fixes.
705
706   Solaris getaddrinfo() seems to return results with SCTP procotol
707   cleared.
708
709   Mac OS X getaddrinfo botches when the service/port is specified as
710   "0" so one must specify a port number on the netperf command line.
711
712   AIX 5.something getaddrinfo has a different but similar problem
713   with "0" as a port/service name as well.
714
715   Linux 2.6 and HP-UX 11i getaddrinfo seem to be fine - at least as
716   far as netperf goes :)
717
718*) A "Demo Mode" has been added to the main BSD Sockets/TCP/UDP tests:
719   TCP_STREAM, TCP_MAERTS, TCP_SENDFILE, TCP_RR, TCP_CC, TCP_CRR and
720   UDP_RR. It has not been added to UDP_STREAM.  This mode is enabled
721   with --enable-demo when configuring netperf, which activates a
722   global "-D" option.  By default, -D will cause interim results
723   (throughput or transactions/s only, not CPU util) from the
724   netperf's perspective to be emitted no sooner than once per second.
725   An optional parameter can specify another interval in units
726   (floating point) of seconds:
727
728      -D 1.5
729
730   will make the reporting interval at least 1.5 seconds.
731
732   This mode makes no use of explicit interval timers since that can
733   be so, well fun on different platforms.  Instead, an initial guess
734   of how many units of work must be done to consume the desired
735   reporting interval is made, and that guess is refined throughout
736   the entire test.  If something happens to dramatically slow-down
737   the test, the reproting interval may become must larger for a few
738   intervals.  When things speed-up it is detected very quickly.  As
739   with the --enable-historgram support, if gethrtime() is available
740   on the platform, it will be used in lieu of gettimeofday().  In any
741   case, the number of calls to gettimeofday()/gethrtime() is much,
742   Much, MUCH smaller than for --enable-histogram so while there may
743   be a measurable effect on the results, it should be rather small.
744
745*) The global -H option has been enhanced to take an optional address
746   family specification for the control connection:
747
748   -H <remote>,<family>
749
750   Unlike other comma-separated options, where specifying only one
751   thing will set both, here specifying only one thing will be
752   ass-u-me-d to be the <remote> and will leave <family> defaulted
753   (AF_UNSPEC).   Family can be specified as "4" or "inet" for
754   AF_INET, "6" or "inet6" for AF_INET6.
755
756*) A new global -L option has been added to specify the local name/IP
757   and/or address family for the control connection:
758
759   -L <local>,<family>
760
761   Unlike other comma-separated options, where specifying only one
762   thing will set both, here specifying only one thing will be
763   ass-u-me-d to be the <local> and will leave <family> defaulted
764   (AF_UNSPEC).  Family can be specified as "4" or "inet" for
765   AF_INET, "6" or "inet6" for AF_INET6.
766
767*) Test-specific -H and -L options are present for the TCP, UDP and
768   SCTP tests, which are now (intended to be) IP protocol version
769   agnostic.
770
771*) Global -4 and -6 options will set the both the local and remote
772   address family to either AF_INET or AF_INET6 respectively.
773
774*) Test-specific -4 and -6 options have been added for TCP, UDP and
775   SCTP tests.
776
777*) Since the basic TCP UDP and SCTP tests are no longer IPv4-only, the
778   nettest_ipv6.[ch] files are only included in the source
779   distribution for historical interest.
780
781*) The main test banners for the TCP, UDP and SCTP tests have been
782   enhanced to give both local and remote addressing information for
783   the data connection.
784
785*) Compilation under Windows is likely FUBAR at this point.  I _hope_
786   to start trying to do builds under the DDK soon, but am not sure
787   when I'll be able to start.  Any and all assistance you can give
788   there would be most welcome.
789
790*) Various and sundry fixes.  TCP_RR should no longer go into an
791   infinite loop when you abort netperf.  I'm sure there are others.
792
793*) Unix domain socket tests are compiled-in with --enable-unix=yes at
794   configure time.
795
796*) DLPI tests are compiled-in with --enable-dlpi=yes at configure
797   time.
798
799*) XTI tests are compiled-in with --enable-xti=yes at configure time.
800
801Things not changed in this release:
802
803*) Seems like everything has changed :)
804
805These are the Release Notes for Revision 2.3pl2 of netperf:
806
807Things changed in this release
808
809*) One can bind netperf or netserver to specific CPUs with the -T
810   option. This is a generalization of some HP-UX and netserver specific
811   work from 2.3pl1.
812
813*) Extend the kludge to workaround the Linux setsockopt/getsockopt
814   bizzarreness to the socket buffer sizes for the remote side in
815   addition to the local side.
816
817*) Fix the lack of initialization of times_up in recv_tcp_maerts()
818   that caused confidence intervals to fail miserably.
819
820*) Other misc fixes - than you to all of you who sent them.
821
822These are the Release Notes for revision 2.3pl1 of netperf:
823
824Things changed in this release
825
826*) The bind() call in create_data_socket() in the file nettest_bsd.c
827   is no longer conditional on the user's specifying an IP address or
828   port number to which the data socket should be bound.  This fixes
829   the "connection refused" errors in the UDP tests.
830
831*) Some experimental code to allow one to specify a CPU to which the
832   remote netserver should be bound.  This is intended to allow one to
833   get greater certainty (as in confidence intervals) on SMP
834   systems. At present the functionality is HP-UX specific.
835   Submittals of changes for a more general approach are welcomed.
836
837These are the Release Notes for revision 2.3 of netperf:
838
839Things changed in this release
840
841*) The user can now specify local and/or remote port numbers for the
842   data connection using the -P test-specific option.  This is to
843   support those folks who want to run netperf through those evil,
844   end-to-end-breaking things known as firewalls... :)  This changes
845   the format of some of the control messages, hence the bump in the
846   update number in the VUF. While it may be possible to mix 2.3 and
847   pre-2.3 netperf and netserver, it is not supported.
848
849*) The user can now specify local and/or remote IP addresses for the
850   data connection using the -I test-specific option.  This is to
851   support those folks who want to run netperf through those evil,
852   end-to-end-breaking things known as firewalls... :) This changes
853   the format of some of the control messages, hence the bump in the
854   update number in the VUF. While it may be possible to mix 2.3 and
855   pre-2.3 netperf and netserver, it is not supported.
856
857*) Set DL_mumble  message priorities in the DLPI tests
858
859*) Fix error return check for getaddrinfo()
860
861*) Those systems with gethrtime() can define -DHAVE_GETHRTIME to use
862   gethrtime() instead of gettimeofday() and reduce the measurement
863   overhead when enabling the -DHISTOGRAM functionality.
864
865*) The default for -DHISTOGRAM compilation now adds a UNIT_USEC and
866   TEN_USEC row and renames TENTH_MSEC to HUNDRED_USEC.  If you want
867   the old behaviour add -DOLD_HISTOGRAM to CFLAGS.
868
869*) Add missing '!' in the recv_udp*_stream so we recognize the end of
870   a timed test correctly.
871
872*) Replace "||" with "&&" to fix an infinite loop in
873   recv_tcp_conn_rr() most likely introduced in 2.2pl5.
874
875*) Code has been added to kludge around the bug in Linux getsockopt()
876   where it almost always returns twice the value for which one
877   asks unlike virtually every other stack on the face of the
878   planet. This was doing some unpleasant things to tests in which
879   confidence intervals were requested.
880
881Things not changed in this release
882
883*) Lots :)
884
885These are the Release Notes for revision 2.2pl5 of netperf:
886
887Things changed in this release
888
889*) Improved (perhaps even usable :) support for Windows, including
890compilation and run on Win64.
891
892*) Fixes for MacOS X and FreeBSD
893
894Things not changed in this release
895
896*) Specifying the port number(s) for the data connection
897
898These are the Release Notes for Revision 2.2pl4 of netperf:
899
900Things changed in this release
901
902*) USE_SYSCTL available on suitable FreeBSD releases to measure CPU
903   utilization without having to resort to -DUSE_LOOPER.
904
905*) Include Solaris 9 with the Linux sendfile path under -DHAVE_SENDFILE
906
907This still outstanding in this release
908
909*) Knowing why signals are not interrupting socket calls under
910   OpenVMS.  A quick try to use threads for timing a la Win32 worked,
911   but also cut performance in half.  Any and all assistance in this
912   area would be most welcome.
913
914These are the Release Notes for revisoin 2.2pl3 of netperf:
915
916Things changed in this release
917
918*) I started practicing what I preach and will set SO_REUSEADDR before
919   netserver tries to bind to its well-known port.
920
921*) Initial port to OpenVMS.  This includes support for the OVMS
922   Auxilliary server (inetd replacement).  See README.ovms for more
923   details on what is involved in compiling and running netperf under
924   OpenVMS.
925
926*) Testname comparisons are now case insensitive.  This is a side
927   effect of OpenVMS downshifting commandlines to lowercase.  I made
928   the change and decided it was OK to keep it that way, even though
929   for OpenVMS one _has_ to set the right defines to disable that
930   downshifting or the command-line options will not work. For example
931   "-H" will become "-h" which isn't quite the same thing...
932
933*) Misc fixes for nettest_ipv6.c.
934
935*) Support for sendfile() under Linux
936
937Thins I would like to have changed but did not know how or didn't have
938time:
939
940*) Allow netserver to run as a standalone daemon under OpenVMS
941*) Allow netserver to run as a standalone daemon under Windows
942*) Rediscover an inetd-like facility for Windows
943*) Figure-out how to get low-overhead, accurate, per-CPU utilization
944   figures under OpenVMS
945*) Get the UDP_RR and UDP_STREAM tests to work under OpenVMS, and get
946   the TCP_RR test to work based on time rather than transaction
947   count.  There is some bug (possibly in OpenVMS?) where the SIGALRM
948   fires, but a socket call will not return an EINTR.
949
950Things that changed prior to this release:
951
952*) Addition of the TCP_MAERTS test - this is a TCP_STREAM test where
953   the data flows from the netserver to the netperf rather than from
954   the netperf to the netserver.  This can be useful in those
955   situations where netperf (netserver) is installed on a remote
956   system, but the tester has no shell access and wishes to get
957   performance data for the path from netserver to netperf.
958
959These are the Release Notes for the 2.2 revision of netperf:
960
961Things changed in this release
962
963*) Various and sundry bugs fixed (in theory) for platforms such as
964   FreeBSD and Linux. If I left-out your bug fix, it was purely
965   accidental - my mind has a very small cache, and sometimes I will
966   "lose" email in the shuffle.
967
968*) Initial support for sendfile() on HP-UX. This test will use the
969   sendfile() call instead of send() to send data to the
970   remote. Netperf "lies" to netserver and calls it a TCP_STREAM test
971   since what netserver needs to do is exactly the same. A future
972   patch may change that and simply have netserver call the same
973   routine for both test types. Kudos to Charles Harris for the
974   initial prototype.
975
976*) The Fore ATM API and HiPPI tests have been dropped from the
977   distribution.
978
979Things I would have liked to have changed, but did not have time for:
980
981*) Conversion of the source and makefile to use the GNU configure/autoconf
982   utility to make it easier for folks to build by not having to edit
983   makefiles... You will notice that I have started to switch from
984   "DO_MUMBLE" to "HAVE_MUMBLE"
985
986as always - happy benchmarking,
987
988rick jones <raj@cup.hp.com>
989
990---------------------------------------------------------------------
991
992These are the Release Notes for the 2.1pl3 revision of netperf:
993
994*) An OBOB (Off By One Bug) in netlib.c that was causing a core dump
995   on Irix should be fixed.
996
997*) Irix systems should now be able to determine the number of CPU's
998   present automagically (code from outside, not tested yet because I
999   have no MP Irix systems at my disposal)
1000
1001*) An alpha version of a TCP_CC test has been added - this is a
1002   TCP_CRR test with out the "RR."
1003
1004*) The -Ae has been removed from the default makefile. If someone has
1005   a nice way to automagically generate the correct makefile for
1006   different platforms I would like to learn how.
1007
1008happy benchmarking,
1009
1010rick jones <raj@cup.hp.com>
1011
1012----------------------------------------------------------------------
1013
1014These are the Release Notes for the 2.1 revision of netperf:
1015
1016Things Changed in this release:
1017
1018*) The XTI (Version 2 of the spec) tests are now documented in the
1019   manual.
1020
1021*) The TCP_CRR (Connect Request/Response) test is now documented in
1022   the manual, including a description of how it mimics the behaviour
1023   of http (the protocol underlying the WWW).
1024
1025*) Support for for Windows NT 3.51 OS in the BSD Sockets tests (ok, so
1026   they are really Winsock in that case :). Other test suites may be
1027   ported as required/desired/appropriate.
1028
1029*) Tests for TCP and UDP, using the IPv6 extensions to BSD sockets are
1030   included in this release. They are included by adding -DUSE_IPv6 to
1031   the makefile and recompiling.
1032
1033*) Support for a "long long" datatype should only be required for
1034   -DUSE_PSTAT compilation which is an HP-UX only thing. The
1035   *unbundled* HP compilers from at least "HP92453-01 A.09.61 HP C
1036   Compiler" and later should have the required support. The bundled
1037   compiler may not. GCC should work - check the archives listed in
1038   the comp.sys.hp.hpux FAQ for copies. The FAQ is archived on
1039   rtfm.mit.edu under the path pub/usenet/comp.sys.hp.hpux.
1040
1041*) A "proper" fix for double data type alignment has been included.
1042
1043*) A new script is included with this release which can be used to
1044   measure aggregate TCP_RR performance (multiple, concurrent
1045   instances of the TCP_RR test). A related use of this script would
1046   be measuring MP scaling. A single-byte TCP_RR test is good for this
1047   purpose for two reasons:
1048
1049      1) it excercises the control/protocol paths heavily without
1050         using much in the way of data copies which may be easier to
1051         scale.
1052      2) most systems can easily saturate cards with bandwidth, but
1053         not so easily with request/response
1054
1055   Of course, feedback on this is most welcome.
1056
1057*) When measuring CPU utilization, the units for service demand have
1058   been changed from milliseconds (designated ms) of CPU per unit (KB
1059   or Transaction) to microseconds (desginated us).
1060
1061*) For accurate reporting of service demand, netperf needs to know the
1062   number of CPU's present on a system. On some systems (HP-UX), this
1063   is automatic. For others (All), it is necessary to add a global "-n
1064   <numcpu>" option to both netperf and netserver.
1065
1066   !! IF THIS IS LEFT-OUT CPU UTILIZATION AND SERVICE DEMAND FOR !!
1067	     !! MULTI-PROCESSOR SYSTEMS WILL BE WRONG. !!
1068
1069   If you know of ways to programatically determine the number of
1070   active CPUs on a system, please let the author Rick Jones
1071   <raj@cup.hp.com> know.
1072
1073*) other things I've probably forgotten :)
1074
1075Things Not Changed in this release:
1076
1077*) The ancillary test suites are essentially unchanged - DLPI,
1078   HiPPI/LLA, Unix Domain, and Fore ATM API. Unless there is much
1079   interest expressed in these tests, 2.1 may be the last release in
1080   which they are included. The order of retirement would likely be
1081   Unix Domain, HiPPI/LLA, Fore ATM API, and then DLPI.
1082
1083Miscelaneous Comments:
1084
1085*) The -DUSE_LOOPER CPU utilization _seems_ to be nice and low-impact
1086   on HP-UX, Digital Unix, and IRIX. It does not yet seem to be
1087   low-impact on Solaris (I need an example of priocntl usage), AIX
1088   (setpri only works if you are root), and NT (not sure of the
1089   reason). Help with those problems would be most appreciated.
1090