Download Latest Version ttl-x86_64-apple-darwin.tar.gz (4.1 MB)
Email in envelope

Get an email when there's a new version of ttl

Home / v0.18.0
Name Modified Size InfoDownloads / 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)
  • E indicator — 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 > 1 with 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 documentedLast column 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

Source: README.md, updated 2026-02-13