- ICMP Echo probing with TTL sweep
- IPv4 and IPv6 support with extension header handling
- Real-time TUI with ratatui
- Hop statistics (loss, min/avg/max, stddev, jitter)
- Enhanced jitter stats (avg, max, last RTT)
- RTT percentiles (p50, p95, p99) from sample history
- ECMP detection (multiple responders per TTL)
- Paris/Dublin traceroute (multi-flow ECMP path enumeration)
- NAT detection (source port rewrite detection)
- ICMP rate limit detection (identify misleading loss% from router limits)
- Reverse DNS resolution (parallel lookups)
- MPLS label detection (RFC 4884/4950 ICMP extensions)
- JSON, CSV, and report export formats (with full enrichment)
- Session replay from saved JSON
- Animated replay with speed control
- Pause/resume probing
- Stats reset
- Destination detection (stops at actual hop count)
- Race-free probe correlation (shared pending map)
- Terminal state cleanup on error/panic
- Interface binding (
--interface,--recv-any) - Shell completions (
--completions bash/zsh/fish/powershell) - Terminal injection protection (sanitize external data)
- FreeBSD build support
- ICMP Echo (default for privileged users)
- UDP probing (
-p udp) - TCP SYN probing (
-p tcp) - Protocol auto-detection (
-p auto, new default) - Custom port selection (
--port,--fixed-port) - Multi-flow probing (
--flows,--src-port)
- ASN lookup (Team Cymru DNS)
- GeoIP lookup (MaxMind GeoLite2)
- IX detection (PeeringDB)
- Interactive hop selection with j/k navigation
- Hop detail modal view (with percentiles, jitter, MPLS)
- Loss-aware sparkline visualization
- Help overlay
- Settings modal (theme + display mode + PeeringDB)
- Target list overlay (multi-target mode)
- Status bar with keybind hints
- Theme support (11 built-in themes via --theme flag)
- Theme persistence (~/.config/ttl/config.toml)
- Display mode (auto/compact/wide) with
wkey cycling - Autosize columns in auto mode (fit to content, capped)
- Linux (raw sockets with CAP_NET_RAW or root)
- macOS (requires root, uses DGRAM sockets for proper TTL support)
- FreeBSD (build support, gateway detection unavailable)
- TUI refresh rate increased to 60fps (from 10fps) for responsive updates (#17)
- ProbeEvent recording during trace (offset_ms, ttl, seq, flow_id, response/timeout)
- Session JSON includes events array (backward compatible)
-
--animateflag for replay mode - Animated replay shows hop-by-hop discovery in TUI
- Space/p to pause/resume replay
- Graceful fallback for old sessions without events
- Replay speed control (
--speedmultiplier, default 10x) - Monotonic event timestamps (immune to clock jumps)
- Late reply tracking for replay accuracy
- Progress indicator in status bar
- Interactive replay (step through events, jump to time)
- Trace comparison (
ttl --diff trace1.json trace2.json) - Show added/removed/changed hops between two sessions
- Highlight latency and path changes
- Streaming JSON output (
--stream-json) for piping to other tools - Line-delimited JSON (one event per line, composable with jq/grep)
- Official Dockerfile (minimal image, NET_RAW capability)
-
--daemonmode (no TUI, lightweight, signal handling) - Prometheus/OpenMetrics exporter (
--prometheus :9090) - Health check endpoint for container orchestration
-
ttlwith no args enters interactive mode - Press
oto open target input modal - Text input with hostname/IP validation
- DNS resolution with loading state
- First target determines IPv4/IPv6 family for session
- Add additional targets mid-session (same family only)
- Empty state UI: "Press 'o' to add target"
- Library API stabilization (stable
lib.rsfor third-party integrations) - Comprehensive documentation for library consumers
- Semantic versioning commitment
- PCAP export (write probe/response packets to .pcap for Wireshark analysis)
- Looking glass integration (query public route servers)
- BGP community display (show communities on path if available)
- RPKI/ROA validation (prefix origin validation for each hop)
- AS path display (full BGP AS path where available)
- Baseline comparison (save baseline, alert on deviations)
- Threshold alerts (configurable latency/loss/jitter alerts)
- Continuous logging mode (log path changes over hours/days)
- Historical data storage (SQLite/file-based path history)
- TCP behavior testing (MSS clamping, window scaling, SACK)
- ECN testing (Explicit Congestion Notification support)
- Fragmentation testing (test behavior at different packet sizes)
- Multi-path validation (verify all ECMP paths are functional)
- Customizable columns (choose which stats to display)
- Custom keybindings
- World map visualization (ASCII/Unicode geographic path display)
- Integration tests for probe→receive→state pipeline
- Property-based/fuzz tests for packet parsing (correlate.rs)
- RAW payload fallback unit tests (IPv4 Echo Reply, Time Exceeded)
- IPv6 RAW payload fallback unit tests (Echo Reply, Time Exceeded)
- IX lookup performance: radix trie for O(prefix_len) instead of O(n) linear scan
- Refactor Receiver::new() 9-arg signature to config struct
- Document --pmtud flag in README
- Fix naming inconsistency: fixed_port (CLI) vs port_fixed (Config)
- GitHub Actions CI (build, test, clippy, FreeBSD)
- Binary releases (Linux x86_64/aarch64, macOS aarch64)
- Homebrew formula (
brew install lance0/tap/ttl) - Curl installer (
curl -fsSL https://raw.githubusercontent.com/lance0/ttl/master/install.sh | sh) - Dependabot (Cargo + GitHub Actions)
- AUR package (
ttl-bin, community-maintained) - Gentoo package (
net-analyzer/ttl, official repository) - Docker Hub image
- Bidirectional probing (with remote agent, measure both directions)
- One-way delay estimation (detect latency asymmetry)
- Bandwidth/capacity estimation (pathchar-style probing)
- SNMP integration (query router interface stats)
- Network topology learning (build graph from multiple traces over time)
- Web/mobile UI - this is a CLI tool, SSH into a box
- Shareable URLs / hosted trace service - JSON files are the sharing format
- Webhook/event streaming - use
--stream-json | curlinstead - Monitor mode with alerting - use Smokeping/Nagios for long-running monitoring
- Modular output plugins - Unix pipes are the plugin system
- Windows native support - massive Npcap effort, WSL2 works, revisit if demand warrants
- Hop privacy mode (mask IPs for screenshots) - users can redact manually
- Multi-language TUI (i18n) - English-only is fine for CLI tools
- Full packet capture/analysis (use tcpdump/wireshark)
- Bandwidth testing (use iperf)
- Port scanning (use nmap)
- Enterprise collaboration platform