mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
390a55dcfa263b103dece0ad613ae0442ce629b6
- Update from version 2.0.14a to 2.1.7 - Update of rootfile not required - Changelog 2.1.7 (as of April 5th, 2022) o Support for tcp bounceback test o Code clean up o Regression fixes (see git-log) 2.1.6 o Fix to major 2.1.5 regeressions 2.1.5 change set as of (December 3, 2021) o fix some HAVE_IPV6 conditional changes o fix SO_TIMEOUT regressiony o ren sockets.c to socket_io.c o fix compile breakage per abs() returning an int instead of float o support for gettcpinfo on Mac OS X (tested on both M1 and x86 silicon) o move setsock_blocking from sockets into PerfSocket.cpp o don't require -V for v6, instead try v6 when v4 hostname lookup fails, client only o add assert in writen o add tcp RTT variance to client output o use setsockopt to get the nagle status o show Nagle and TOS settings on client o more on connect-only testing o sample and output the initial rtt and cwnd in the connect report o fix multiple fullduplex regressions o fix for HAVE_TCP_STATS in configure, then linux compile o writen can have more than one write, fix accounting when this occurs o fix tos with --reverse and --full-duplex o add support for --tos-override <value> on server o add support for --tcp-drain, add mmm stats, histograms - experimental feature o multiple man page updates o fix partial histogram print to not show (f) o some new scripts in python flows o fixes to incr-srcport o fixes for --incr-dstport o fix regression on very first UDP packet having transit latency of zero o fix --reverse and --isochronous when --trip-times not set o fix client_init regression, pull out tcp_shutdown o fix reporter startup race and one second delay by setting the threads ready predicate and issuing the signal under a lock o fix first send accounting for small -n o fix configure.ac to use '=' instead of '==' 2.1.4 change set as of (August 12, 2021) o fix TCP isoch regression o fix regression in UDP header exchange for tests like --reverse o Add support for TCP_NOTSENT_LOWAT vi --tcp-write-prefetch and select() before write() o Add support for TCP_WINDOW_CLAMP o Rework recvn() and writen() for when SO_SNDTIMEO and SO_RCVTIMEO are enabled o Add support for --histograms on select with --tcp-write-prefetch o Add support for bind to device on the listener, i.e. iperf -s -i 1 -e -B 0.0.0.0%eth0, will only accept/receive on the eth0 interface o Add support for virtual/tap interfaces o Add support for --hide-ips (don't show the ip addresses in the report outputs) o Fix units of -pps with --reverse, --fullduplex, -r and -d o Remove use of MSG_PEEK by moving the mBuf buffer from client/server object to settings context o Use MSG_WAITALL in recvn (collided with MSG_PEEK on Windows) 2.1.3 change set as of (July 13, 2021) o relax cli errors a bit to WARN instead of ERROR o fix TCP read fatal error macro o fix UDP server to not fatal error on EINTR, use macro o handle and warn on failed read of tcp test flags o redesign of tcp retry (2.1.2 fix was incomplete) o thread exit signals reporter thread condition var for timely exits of the tool 2.1.2 change set (as of June 25th, 2021) o fix TCP retry regression per interval reporting 2.1.1 change set (as of June 23rd, 2021) o isochronous bug fix o -P and -B src port will increment for unique quintuple o support for port ranges, e.g. -p 6000-6008 o double free fix per memory corruption when -l is less than 244 o don't use pthread_join on the client --reverse, symptom hung client o fixes for --trip-times and small 64 byte packets o udp fail on reverse should exit o support for low duty cycle bursts (--burst-period and --burst-size) o final report fixes o full duplex ouput fixex o support for --incr-scrip o multicast setsockopt fixes 2.1.0 change set (as of January 5th, 2021) o scaling improvements for -P, i.e. improved support for large numbers of traffic threads o major code refactoring (see doc/DESIGN_NOTES) for maintainability, extensibilty, performance, scaling, memory usage o support for full duplex traffic using --full-duplex o support for reverse traffic using --reverse o support for role-reversal character of asterisk in the transfer id o transfer id now an incrementing integer and no longer the socket id o support for TCP connect only tests with --connect-only o isochronous support compiled in by default, must use config to disable o support --isochronous for both UDP or TCP traffic to simulate video streams o support for low duty cycle traffic patterns via --burst-period and --burst-size o use of clock_nanosleep when supported to schedule isochronous burst starts, otherwise use nanosleep delay o support for --trip-times indicating the client and server clocks are synchronized to an accuracy sufficient, note: consider the use of precision time protocol as well as ask your data center to provide access to a GPS disciplined reference time source o support for --trip-times with -d and -r bidirectional tests o output TCP connect times (3WHS) in connect reports o support for application level tcp connect retries via --connect-retries n o rate-limited options of -b and --fq-rate supported for unidirectional, full duplex and reverse traffic o reporter thread designed to automatically cause packet reports to aggregate - mitigating and hopefully removing thread thrashing o support for frame or burst based reporting or sampling vs time based via -i [f|F] (experimental) o support for UDP traffic only from client to server with --no-udp-fin o support for write to read latencies (UDP and TCP) with --trip-times o support for sum only outputs with --sum-only o support for little's law calculations in --trip-time outputs o support for --txstart-time <epoch-time> to schedule client traffic start, timestamp support microseconds, e.g. unix $(expr $(date +%s) + 1).$(date +%N) o support for --txdelay-time to insert delay between TCP three way handshake (3WHS) and data transfer o support for --no-connect-sync which disables transmit traffic start synchronization when -P is used, defaults to synchronized o option of --full-duplex implementation uses a barrier on the client side to synchronize full duplex traffic o no limits to group sum reports, i.e. all clients will get its own sum report per a server o improved report timestamps, e.g. end to end or client and server based timestamps with --trip-times o improved settings messaging o improved messaging for --tcp-congestion or -Z o re-implemented -U for single UDP server with minimal threading interactions o re-implemented -1 or --singleclient where server will serialize traffic runs o warning message if the test were likely CPU bound instead of network i/o bound o fix the case when -P <value> is set on the server such that summing output is displayed o multicast listener will autoset -U (single server), e.g -P > 1 not supported for multicast o multicast listener no longer busy drops multicast packets during traffic test, i.e. only server thread receives them o immediate bail out on mutually exclusive command line options o getaddrinfo bug with -static linkage workaround and DNS lookup one time in setttings context vs twice in Settings and client traffic thread o fix -o or --output using freopen to redirect stdout and stderr to a file o support for --local-only which sets SO_DONTROUTE on a socket to limit traffic to local hosts (default is off) o support compile time option of --local-only to set on by default via ./configure --enable-default-localonly o support for date and time of in connect messages, e.g. [ 0] local 192.168.1.108%eth0 port 5001 connected with 192.168.1.62 port 36724 (MSS=453) (sock=5) on 2020-12-22 19:43:42 (PST) o support for feature of --permit-key and permit-key-timeout (defaults to 20 seconds.) The permit-key must match for the server to accpet the client's traffic. It also sets the transfer id. TCP only. o support for experimental feature of --near-congestion (tcp only) o man page updates with examples o tested with 1000's of traffic streams, WiFi, 10G and 100G Signed-off-by: Adolf Belka <adolf.belka@ipfire.org> Reviewed-by: Peter Müller <peter.mueller@ipfire.org>
IPFire 2.x - The Open Source Firewall
What is IPFire?
IPFire is a hardened, versatile, state-of-the-art Open Source firewall based on Linux. Its ease of use, high performance in any scenario and extensibility make it usable for everyone. For a full list of features have a look here.
This repository contains the source code of IPFire 2.x which is used to build the whole distribution from scratch, since IPFire is not based on any other distribution.
Where can I get IPFire?
Just head over to https://www.ipfire.org/download
How do I use this software?
We have a long and detailed wiki located here which should answers most of your questions.
But I have some questions left. Where can I get support?
You can ask your question at our community located here. A complete list of our support channels can be found here.
How can I contribute?
We have another document for this. Please look here.
Description
Languages
Perl
70.4%
Shell
23%
C
4%
Python
0.6%
Makefile
0.5%
Other
1.4%