ttl
Modern traceroute/mtr-style TUI with hop stats and optional ASN/geo enrichment.
Features
- Fast, low-overhead continuous path monitoring
- Useful hop-level stats (loss, min/avg/max, jitter, stddev)
- Great terminal UX built with ratatui
- Scriptable mode for CI and automation
- Reverse DNS resolution
- ECMP detection (multiple responders per TTL)
- Multiple export formats (JSON, CSV)
- Session replay from saved JSON files
- IPv4 and IPv6 support
Installation
From source
Permissions
Raw sockets require elevated privileges. Choose one:
# Option 1: Run with sudo
# Option 2: Add capability (Linux)
# Option 3: Enable unprivileged ICMP (Linux)
Platform Support
| Platform | Status | Notes |
|---|---|---|
| Linux | Full support | Raw sockets require CAP_NET_RAW or root |
| macOS | Full support | Requires root |
| Windows | Not supported | Would require WinPcap/Npcap |
Usage
Interactive TUI (default)
Report mode
JSON export
CSV export
Replay a saved session
Streaming output
Options
-c, --count <N> Number of probes (0 = infinite, default)
-i, --interval <S> Probe interval in seconds (default: 1.0)
-m, --max-ttl <N> Maximum TTL (default: 30)
--timeout <S> Probe timeout in seconds (default: 3)
-4, --ipv4 Force IPv4
-6, --ipv6 Force IPv6
--no-dns Skip reverse DNS lookups
--no-tui Streaming output mode
--report Batch report mode (requires -c)
--json JSON output (requires -c)
--csv CSV output (requires -c)
--replay <FILE> Replay a saved JSON session
Keybindings
| Key | Action |
|---|---|
q |
Quit |
p |
Pause/Resume |
r |
Reset stats |
e |
Export to JSON |
? / h |
Help |
Up / k |
Move selection up |
Down / j |
Move selection down |
Enter |
Expand selected hop |
Esc |
Close popup / Deselect |
Troubleshooting
Permission errors
Error: Insufficient permissions for raw sockets
Raw ICMP sockets require elevated privileges. See the Permissions section above.
High packet loss
If you see high loss (>10%) to a destination that should be reachable:
- Network congestion - Some routers deprioritize ICMP traffic
- Rate limiting - Target may rate-limit ICMP responses
- Firewall - Intermediate firewalls may drop ICMP
- ECMP paths - Multiple paths with different characteristics
Try increasing the probe interval: ttl target -i 2.0
All hops showing * * *
This usually means:
- Firewall blocking - Your outbound ICMP is blocked
- VPN interference - Some VPNs don't pass ICMP correctly
- Target unreachable - Verify the IP/hostname is correct
IPv6 not working
- Verify IPv6 connectivity:
ping6 2001:4860:4860::8888 - Force IPv6:
ttl -6 google.com - Check if your ISP supports IPv6
DNS resolution slow
Reverse DNS lookups can be slow. Disable with --no-dns for faster startup.
Tech Stack
- Language: Rust
- TUI: ratatui + crossterm
- Async: tokio
- Sockets: socket2 + pnet
- DNS: hickory-resolver
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.