| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| SHA256SUMS | 2026-02-13 | 401 Bytes | |
| ttl-aarch64-apple-darwin.tar.gz | 2026-02-13 | 3.8 MB | |
| ttl-aarch64-unknown-linux-gnu.tar.gz | 2026-02-13 | 3.8 MB | |
| ttl-x86_64-apple-darwin.tar.gz | 2026-02-13 | 4.0 MB | |
| ttl-x86_64-unknown-linux-musl.tar.gz | 2026-02-13 | 4.2 MB | |
| README.md | 2026-02-13 | 1.8 kB | |
| v0.18.0 source code.tar.gz | 2026-02-13 | 853.5 kB | |
| v0.18.0 source code.zip | 2026-02-13 | 882.8 kB | |
| Totals: 8 Items | 17.6 MB | 1 | |
ECMP Classification & Flow Attribution Hardening
This release fixes how ttl handles ECMP (Equal-Cost Multi-Path) load balancing, particularly per-packet ECMP common on Arista, Juniper, and Cisco switches. Previously, users would see "Paths: 1" in the main table despite 8+ responders visible in the hop detail view.
Added
- ECMP classification — Detects per-flow vs per-packet ECMP using primary concentration heuristics. Paths column now accurately reflects observed responder count for per-packet load balancing (#46)
Eindicator — New ECMP indicator in main table replaces misleading!(route flap) when ECMP is the actual cause- Effective flow capability — Runtime detection of protocol flow support.
--flows > 1with ICMP now warns and collapses to single-flow instead of silently doing nothing - Receiver flow attribution hardening — Out-of-range source ports (NAT/CGNAT) no longer force-attributed to flow 0. Unknown-flow responses only match pending probes when unambiguous
- Hop detail view — Per-packet ECMP section shows responder count and path count; per-flow ECMP section unchanged
- Last RTT semantics documented —
Lastcolumn tracks primary responder's most recent RTT - Main table layout guard tests — Header/cell/width count parity verified across display mode x flow mode matrix
- IPv6 RAW payload fallback tests — Echo Reply and Time Exceeded parsing tests for IPv6
Changed
- Flap detection suppressed during ECMP —
!indicator no longer fires when per-packet ECMP is detected at a hop - Probe engines use per-session config — Each target's engine sees the effective flow count, not the raw CLI value
Full Changelog: https://github.com/lance0/ttl/compare/v0.17.0...v0.18.0