February 11, 2018
irtt-server - Isochronous Round-Trip Time Server
irtt server [args]
irtt server is the server for irtt(1).
Bind addresses (default “:2112”), comma separated list of:
Format | Address Type |
---|---|
:port | unspecified address with port, use with care |
host | host with default port 2112, see Host formats below |
host:port | host with specified port, see Host formats below |
%iface | all addresses on interface iface with default port 2112 |
%iface:port | all addresses on interface iface with port |
Note: iface strings may contain * to match multiple interfaces
Add HMAC with key (0x for hex) to all packets, provides:
Log events to syslog (default don’t use syslog). URI format: protocol://host:port/tag. Examples:
URI | Result |
---|---|
local: | Log to local syslog, default tag irtt |
local:/irttsrv | Log to local syslog, tag irttsrv |
udp://logsrv:514/irttsrv | UDP to logsrv:514, tag irttsrv |
tcp://logsrv:8514/ | TCP to logsrv:8514, default tag irtt |
Note: not available on Windows, Plan 9 or Google Native Client
Payload fill if not requested (default pattern:69727474). Possible values include:
Value | Fill |
---|---|
none | Echo client payload (insecure on public servers) |
rand | Use random bytes from Go’s math.rand |
pattern:XX | Use repeating pattern of hex (default 69727474) |
Comma separated patterns of fill requests to allow (default rand). See options for –fill. Notes:
Timestamp modes to allow (default dual). Possible values:
Value | Allowed Timestamps |
---|---|
none | Don’t allow any timestamps |
single | Allow a single timestamp (send, receive or midpoint) |
dual | Allow dual timestamps |
Hosts may be either hostnames (for IPv4 or IPv6) or IP addresses. IPv6 addresses must be surrounded by brackets and may include a zone after the % character. Examples:
Type | Example |
---|---|
IPv4 IP | 192.168.1.10 |
IPv6 IP | [2001:db8:8f::2/32] |
IPv4/6 hostname | localhost |
Note: IPv6 addresses must be quoted in most shells.
Durations are a sequence of decimal numbers, each with optional fraction, and unit suffix, such as: “300ms”, “1m30s” or “2.5m”. Sanity not enforced.
Suffix | Unit |
---|---|
h | hours |
m | minutes |
s | seconds |
ms | milliseconds |
ns | nanoseconds |
Running an IRTT server that’s open to the outside world requires some additional attention. For starters, the command line flags should be used to, at a minimum:
In addition, there are various systemd(1) options available for securing services. The irtt.service file included with the distribution sets some commonly used options, but should not be considered exhaustive.
To secure a server for public use, additional steps may be taken that are outside of the scope of this documentation, including but not limited to:
It should be noted that there are no known security vulnerabilities in the Go language at this time, and the steps above, in particular the chroot jail, may or may not serve to enhance security in any way. Go-based servers are generally regarded as safe because of Go’s high-level language constructs for memory management, and at this time IRTT makes no use of Go’s unsafe package.
irtt server exits with one of the following status codes:
Code | Meaning |
---|---|
0 | Success |
1 | Runtime error |
2 | Command line error |
3 | Two interrupt signals received |