All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Add support for streaming mode (-s), for infinite duration tests
- Add raw mode for fixed units output to stdout during test
- Use LookupIP for client hostname lookups and log on multiple addresses
- Use LookupIP for server bind addresses
- Move to Go 1.25, x/net 0.57 and x/sys 0.47
- Record a per-packet "late" field for out-of-order and add to the output json
- Add report command that reads and emits saved results
- Allow IPv6 addresses without brackets
- Set DSCP on all packets, including opening handshake and close packets
- Add
expected_packets_sentfield to JSON to support report command
- Change default hybrid timer sleep factor from 0.95 to 0.9
- Remove packet length from report output to support reading results from JSON (avoids unmarshaling large ClientConfig struct for one field)
- Improve Windows time support by using
QueryPerformanceCounterandGetSystemTimePreciseAsFileTime. Time precision on Windows 10 can now reach 100ns. - Add syslog support for the server (
--syslogflag). - Add a SmokePing probe, available from SmokePing 2.7.2. It's possible to copy the code into older versions.
- Update OM2P build to use the new MIPS softfloat support in Go 1.10.
- Re-write git history with new email address.
- Re-licensed to GPLv2.
- Stop disabling GC on client and remove
--gcflag from server as disabling GC no longer offers a demonstrable performance benefit. See The Journey of Go's Garbage Collector.
- Fix potential client race at startup.
- Fix issue on platforms with timer resolution not accurate enough to measure server processing time (closes #13).
- Change handled interrupt signals to only
os.Interruptandsyscall.SIGTERMto fix Plan 9 build. - Various documentation fixes.
- Server fills are now supported, and may be restricted on the server. See
--sfillfor the client and--allow-fillson the server. As an example, one can doirtt client --fill=rand --sfill=rand -l 172 serverfor random payloads in both directions. The server default is--allow-fills=randso that arbitrary data cannot be relayed between two hosts.server_fillnow appears underparamsin the JSON. - Version information has been added to the JSON output.
- Due to adoption of the pflag package, all long
options now start with -- and must use = with values (e.g.
--fill=rand). After the subcommand, flags and arguments may now appear in any order. irtt clientsyntax changes:-rsis renamed to--stats-strictparamsis removed and is now the default.--loosemay be used instead to accept and use server restricted parameters, with a warning.-tsis renamed to--tstamp-qqis renamed to-Q-fillallis removed and is now the default.--fill-onemay be used as a small optimization, but should rarely be needed.
irtt serversyntax changes:-nodscpis renamed to--no-dscp-setsrcipis renamed to--set-src-ip
- The communication protocol has changed, so clients and servers must both be updated.
- The handshake now includes a protocol version, which may change independently of the release version, and must match exactly between the client and server or the client will refuse to connect.
- The default server minimum interval is now
10ms. - The default client duration has been changed from
1hto1m. - Some author info was changed in the commit history, so the rewritten history must be fetched in all forks and any changes rebased.
- Initial, untagged development release.