- Added IPv4 endpoint address as a new column in the results table
- Adjusted column formatting to accommodate the new 15-character wide column
- Makes it easier to see which IP addresses correspond to each relay
- Restored original timeout values:
- Liveness check: 3 seconds
- Latency measurement: 10 seconds
- Restored original ping settings:
- Count: 5 pings
- Interval: 1 second
- Restored original worker counts:
- Liveness workers: 20
- Latency workers: 30
The aggressive optimizations were causing many false negatives in
liveness checks and zero latency readings. The original conservative
values ensure reliable measurements even if slower.
- Increased ping interval to 500ms (was too aggressive at 200ms)
- Set reasonable timeouts: 2s for liveness, 5s for latency
- Reduced workers to 40/60 (from 50/100) to avoid overwhelming network
- Kept reduction from 5 to 3 pings for modest speed improvement
The previous 200ms interval was causing the ping library to return
0 latency for all measurements, making results meaningless.
- Reduced ping interval from 1s to 200ms (5x faster per relay)
- Reduced ping count from 5 to 3 (still reliable, but faster)
- Increased latency workers from 30 to 100 (3.3x more parallelism)
- Increased liveness workers from 20 to 50 (2.5x more parallelism)
- Reduced timeouts: liveness from 3s to 1s, latency from 10s to 3s
- Expected speedup: ~10x faster overall execution time
- Added validation to detect and handle invalid zero latency measurements
- When MinRtt is 0 but packets were received, fall back to AvgRtt
- Added -debug flag to help diagnose ping statistics issues
- Added debug logging to show raw ping statistics for zero latency cases
- Prevents impossible 0s latency readings for remote servers
- Updated golang.org/x/net dependency to fix linking error with syscall.recvmsg
- Added -force flag to allow running the tool while connected to VPN
- Fixed linter errors: replaced deprecated ioutil with io/os, added error handling
- Added test, fmt, and lint targets to Makefile