This guide explains how to install and use RKIK to probe and compare NTP servers.
A development package rkik-git is available:
git clone https://aur.archlinux.org/rkik-git.git
cd rkik-git
makepkg -si
With a helper (example yay):
yay -S rkik-git
RKIK is packaged in nixpkgs as rkik (availability/version depends on the channel):
# temporary shell
nix shell nixpkgs#rkik
# install into user profile
nix-env -iA nixpkgs.rkik
Archives and .deb/.rpm are published in GitHub Releases.
# Debian/Ubuntu
sudo apt install ./rkik_X.Y.Z-R_amd64.deb
# Fedora/RHEL/Alma/Rocky
sudo dnf install rkik-X.Y.Z-R.x86_64.rpm
git clone https://github.com/aguacero7/rkik.git
cd rkik
cargo build --release
sudo install -m 0755 target/release/rkik /usr/local/bin/rkik
rkik pool.ntp.org
rkik --server time.cloudflare.com
rkik --compare time.google.com,time.cloudflare.com,0.de.pool.ntp.org
rkik --compare time1 time2 time3 --format json
rkik -6 --server 2.pool.ntp.org -j
--format text (default) — human-readable.--format json — detailed, stable.--format simple — minimal text (timestamp, name/port).--format json-short — compact ({"utc": "...", "name": "...", "port": 123}).
Aliases: -j/--json, -S/--short.# two measurements, 1s apart
rkik --server time.cloudflare.com --count 2 --interval 1 --short
# infinite loop (Ctrl-C to stop)
rkik --server time.google.com --infinite --format json
For ingestion into a SIEM/log pipeline, prefer --format json and collect one JSON object per line.
host[:port]rkik time.google.com:123
rkik [2606:4700:f1::123]:123
Disable all coloring:
rkik --no-color
# or environment variable
NO_COLOR=1 rkik ...
RKIK can inspect IEEE 1588 masters using the new --ptp mode (feature ptp, enabled by default).
# Basic probe against domain 0 (default ports 319/320)
rkik --ptp 192.0.2.1
# Custom domain and ports (useful for lab setups)
rkik --ptp --ptp-domain 24 --ptp-event-port 3319 --ptp-general-port 3320 127.0.0.1
# Verbose JSON output with diagnostics
rkik --ptp --verbose --format json --pretty ptp.lab.local
Available flags:
--ptp — enable PTP mode (mutually exclusive with --nts/--sync)--ptp-domain — domain number (default 0)--ptp-event-port / --ptp-general-port — override UDP ports (defaults 319/320)--ptp-hw-timestamp — request hardware timestamping (reported in diagnostics)PTP shares the existing features (compare mode, plugin mode, JSON/short outputs). Offsets are displayed in nanoseconds and detailed master metadata appears in verbose mode.
A ready-made Docker Compose lab with three NTP servers and a LinuxPTP grandmaster is included.
./scripts/test-env-up.sh # start containers
rkik 127.0.0.1:3123 # query lab NTP primary
rkik --ptp --ptp-event-port 3319 127.0.0.1 # query lab PTP master
./scripts/test-env-down.sh # stop containers
See docs/TEST_ENV.md for topology details, port mapping, and troubleshooting tips.
-6 if needed.-6.--compare accepts N≥2, all in parallel.--sync requirements: (Unix, root)