1
1

61 Коммитов

Автор SHA1 Сообщение Дата
Bruce A. Mah
c550ef4605 Non-platform-specific detection of TCP_CONGESTION socket option.
Rather than checking for anything Linux-specific at configure-time,
see if TCP_CONGESTION is defined in <netinet/tcp.h> and if so define
a CPP variable HAVE_TCP_CONGESTION, which we then use to enable
conditional compilation of the code for this feature.
2014-04-10 10:53:18 -07:00
Bruce A. Mah
e90f34f61a Merge remote-tracking branch 'origin/master' into feature/sctp-build-fixes 2014-04-09 13:55:03 -07:00
Bruce A. Mah
449f47e4ef
Use the PACKAGE_BUGREPORT and PACKAGE_STRING macros from automake
in --help and --version.  Notably this provides the correct URL
for the bugtracker.
2014-04-09 13:29:03 -07:00
Bruce A. Mah
cd81de3c0a
Rework detection / enabling of SCTP support.
Rather than doing checks for platforms that we believe support SCTP,
instead look for an indication (notably the presence of <netinet/sctp.h>)
that it's supported.  This makes the conditionals for SCTP more obvious.
In addition, it opens up the possibility that SCTP might work on some
new OS that's not FreeBSD or Linux.

This change may force some additional build-time requirements on Linux,
such as lksctp-tools-devel on CentOS / Fedora or libsctp-dev on
Ubuntu.

Committing this first cut for review and to enable testing on multiple
platforms.  So far this works correctly on Linux (SCTP support) and
MacOS (no SCTP support).
2014-04-09 10:29:16 -07:00
Bruce A. Mah
aeb6938d5a
Support --logfile argument to make all output go to a file.
This works for both client and server side (in the case of the server,
either for daemon or non-daemon mode).

Consistifies a few places that were using printf instead of iprintf.

Fixes Issue 119.
2014-03-14 14:23:38 -07:00
Bruce A. Mah
3eaf324ab3 Remove incorrect references to multicast from -B documentation.
(This is partially because iperf3 doesn't do multicast, yet.)

Also it's not specifically a client-side option, so relocate it in
the manpage.
2014-02-14 14:58:01 -08:00
Bruce A. Mah
60bd98a538 Add SCTP support with the --sctp flag (Linux and FreeBSD only).
Note this option only has a long option flag; we're running out of
letters for short options.

Based heavily on a patch submitted in Issue 131 (SCTP support for
iperf); I added support for FreeBSD and did some other packaging and
documentation improvements.

We probably shouldn't tie SCTP support to looking specifically for
Linux or FreeBSD; we probably leave support enabled all the time if
possible, possibly with some configure-time checks.
2014-02-14 11:52:16 -08:00
Bruce A. Mah
d076653bd4 Output TCP snd_cwnd (on platforms supporting it) in normal output.
We were computing and printing this in JSON output mode anyway; this
change just exposes this quantity in a human-friendly manner (better
than the first attempt at this) when doing normal output.

Resolves Issue 99 (Additional TCP_INFO items).
2014-02-14 11:17:43 -08:00
Bruce A. Mah
441d8b75a0 Add support for writing the PID to a file in server mode.
This is specified with the -I or --pidfile option.

Issue:		120 (PID file support)
2014-01-24 16:42:10 -08:00
Bruce A. Mah
7234074fe8 Whoops. Forgot to document the -d flag properly. Do this. 2014-01-15 12:01:22 -08:00
Bruce A. Mah
deefb95fea Add FreeBSD support for -A (set CPU affinity).
Mostly this change consists of adding FreeBSD-specific code to handle
this feature.  The concepts and system calls are very similar to what's
already done for Linux.  One difference is that on FreeBSD, the CPU
affinity mask is saved before -A processing and restored afterwards.
This causes a slight change to the function signatures for
iperf_setaffinity() and iperf_clearaffinity() (these functions
however are not documented as a part of the libiperf3 API).

Slightly improve some of the documentation for the -A command line
option, to hopefully stave off some of the questions about this
feature.

Mostly based on a submitted patch.

Issue:          128 (better error message for CPU affinity failure)
Submitted by:   Susant Sahani <ssahani@redhat.com>
2014-01-13 10:58:47 -08:00
Bruce A. Mah
0b9ba1005a Fix a server side crash with -P and -R.
The problem was a mangled printf format string, which I introduced in
616ac79bd80b.

Issue:		129 (iperf3 hangs with -R and -Z flags)
2014-01-03 10:33:28 -08:00
Bruce A. Mah
39ad947995 For now, suppress printing congestion window stats in the output.
(It remains in the JSON output.)

We have some issues we need to resolve about the formatting and
representation of this (and other future values that we might be
adding).
2013-12-19 14:44:15 -08:00
Bruce A. Mah
dcd7b32b15 Follow-on to 4cfce137e89c based on some feedback and experience.
Rip out the tcpi_sacked support...it doesn't really keep a cumulative
total of SACKs received like we thought it did (it's instantaneous
state).

Convert tcpi_snd_cwnd (originally expressed in segments) to octets before
printing.

Re-work internal APIs for functions to get stuff out of tcp_info...rather
than doing a getsockopt() call per value, grab the values out of a
saved copy of the tcp_info structure (which we were getting in almost
every case anyway).

Issue:		99 (Additional TCP_INFO items)
2013-12-19 13:37:50 -08:00
Jef Poskanzer
f11d3fa332 Added -k / --blockcount. 2013-12-19 10:31:22 -08:00
Jef Poskanzer
3f4d657209 Added note to -h output for -b flag's burst mode. 2013-12-18 20:56:21 -08:00
Bruce A. Mah
5cdc6a4ac8 Keep track of SACKs and snd_cwnd from tcp_info (Linux only for now).
Committing this WIP so we can get some experimentation done with it.
2013-12-18 15:09:46 -08:00
Jef Poskanzer
62bfa88ceb Added -C / --linux-congestion.
Also a few other bugfixes I ran across.
2013-12-13 19:57:52 -08:00
Bruce A. Mah
d04c7bd0a4 Support setting the IPv6 flow label on Linux systems (only).
This functionality uses some setsockopt(2) calls that unfortunately
don't seem to have an analog on other platforms.

Slightly tweaked version of a patch that was...

Submitted by:	ssahani@redhat.com
Issue:		40 (Option for setting Flow Label field in IPv6
		header)
2013-12-12 09:21:36 -08:00
Jef Poskanzer
95360b2046 Show UDP stats in interval reports.
To the extent possible, anyway - on the sender side,
only the packet counts are available.

Also a few minor bug fixes.
2013-12-04 09:16:37 -08:00
Jef Poskanzer
e41823c46b Pushing out merge of inadvertent branch. 2013-12-02 09:55:48 -08:00
Bruce A. Mah
fe4a13ab4d Support daemonizing with -D flag.
Possible related work still under consideration:

o Use syslog in daemon mode for output that would normally go to
  stdout / stderr.

o Write a PID file.

This is basically the gist of Issue 105.
2013-11-26 15:40:19 -08:00
Jef Poskanzer
056361fc5d Show user/system CPU usage as well as total. 2013-11-26 14:47:15 -08:00
Jef Poskanzer
37ba3f73dd Simplified output formatting. 2013-11-12 08:58:00 -08:00
Jef Poskanzer
b47e9f6a66 Couple of improvements to the report format. 2013-11-11 12:16:38 -08:00
Jef Poskanzer
d1405717cd Redid the CPU Utilization report so it shows sender/receiver as
well as local/remote.
2013-11-11 11:37:07 -08:00
Jef Poskanzer
558c9b8013 Moved a bunch more output strings to locale.[hc]. 2013-11-11 11:18:46 -08:00
Jef Poskanzer
d38ab4c8df Added the -T / --title flag. 2013-11-08 20:31:19 -08:00
Jef Poskanzer
8a7e01eb8f Implement -A flag to set CPU affinity. 2013-10-25 17:00:52 -07:00
Jef Poskanzer
a953f5aa2c Re-do of how --omit works. 2013-10-24 14:08:04 -07:00
Jef Poskanzer
e32a7bcd77 Added the -F / --file flag, to use a specified file instead
of random data for sending, and to save the data in the file
on receiving.
2013-10-19 07:43:38 -07:00
Jef Poskanzer
66ee0e2084 Got rid of the -d/--debug flag, it was not being used for anything. 2013-09-14 08:36:11 -07:00
Jef Poskanzer
cb6347fba9 Fix for issue 79, bad results when using the API. 2013-08-10 09:12:07 -07:00
Jef Poskanzer
5789260432 Changed the -I / --ignore flag to -O / --omit, so that we can use the
same flag in bwctl.
2013-07-05 13:52:19 -07:00
Jef Poskanzer
c969359995 Added -I flag to ignore an initial period of data transfer,
defaulting to one second.
2013-07-03 12:01:57 -07:00
Jef Poskanzer
647d3b95a8 New implementation of the -b bandwidth limit flag, that applies to
TCP as well as UDP.
2013-06-24 07:14:14 -07:00
Jef Poskanzer
c687db9da2 Storing the known-to-not-work Flow Label code, just to save it.
The user-visible parts are commented out or return a "not implemented
yet" error message.  The other parts are harmless.

We'll come back to this once we figure out how exactly one sets
the Flow Label.
2013-06-03 13:12:43 -07:00
Jef Poskanzer
a6b3f26be1 Dual-stack operation - IPv4 and IP46 in the same server.
Also added -4 flag to force IPv4.
2013-03-29 17:49:27 -07:00
Jef Poskanzer
987b432316 A bunch of changes mixed together in this commit, but the significant
one is the new -Z flag.

- Fixed potential bug in net.c's Nread and Nwrite routines.  If they
had ever needed to loop they would have read/written the wrong address,
due to incorrect pointer arithmetic - sizeof(void) is not 1.  Fix
was to change the type of the buffer pointer to char*, which also
meant adding casts to some callers.

- Better checking for conflicts between command-line flags - now they
should no longer be order-dependent.

- Added a new -Z / --zerocopy flag, to use a "zero copy" method of
sending data, such as sendfile(2) instead of the usual write(2).

- Renumbered error enum to make inserting new ones easier.
2013-03-04 15:55:16 -08:00
Jef Poskanzer
1133dd0b6c Fix long help message to show theactual default values from the .h file.
Correct the default test duration to ten seconds.
2013-02-27 14:22:44 -08:00
Jef Poskanzer
a5122e8951 Fix a couple problems noted by the C++ compiler. 2013-02-15 09:10:56 -08:00
Jef Poskanzer
9bfb54c0cc Add -J flag to produce JSON output instead. 2013-02-01 11:42:35 -08:00
Jef Poskanzer
17666b94d9 Updated the man page and help string so they correspond with the code.
This entailed some re-ordering, so the diff is large.
2013-01-28 18:14:34 -08:00
Jef Poskanzer
d7613a8e9f Allow API client to provide an fd for the client-side control socket. 2012-12-13 09:37:55 -08:00
Jef Poskanzer
9d1fc7c676 Line up output columns better. 2012-12-03 16:20:49 -08:00
jef
6b7db8f774 Get rid of the -T/--tcpinfo flag and show retransmits if they
are available.

Also, show them in interval results as well as at the end.
2012-11-09 16:02:42 -08:00
jef
99502d9409 Re-jiggered the "Interval Transfer Bandwidth" header so it only
appears at the start and end of the results, and added a separator
line when there are both multiple streams and multiple intervals.
2012-10-29 22:30:31 -07:00
Jon Dugan
7d375156aa update license info for all source files 2011-04-20 20:33:09 +00:00
sethdelliott
86afd62bfe UDP results are now exchanged. Made results exchange process better. 2010-07-15 17:43:25 +00:00
sethdelliott
f1b3bd81f9 Quite a bit of code restructuring. 2010-07-07 21:54:24 +00:00