Implementing Paris Traceroute in Rust: Tracing Paths Through Load Balancers
Описание и применение
Реализация Paris Traceroute на Rust позволяет получать последовательные пути через сети с ECMP, точные измерения задержек и обнаруживать балансировщики нагрузки.
Задача
Standard traceroute produces inconsistent hops on modern networks due to ECMP load balancing, making debugging connectivity issues unreliable.
Результат
Consistent path tracing through ECMP networks, accurate latency per hop, and ability to detect load balancers by comparing paths with different flow IDs.
Рабочий процесс
- 1. Define a constant FlowId with fixed source and destination ports (and identifier for ICMP).
- 2. Use the multiprobe crate to create a Probe with the FlowId and set max_hops.
- 3. Send probes, varying only TTL, and collect hop information.
- 4. (Optional) Compare traces with different FlowIds to detect multiple distinct paths indicating ECMP load balancing.
Доказательства
Standard traceroute is broken on modern networks.
Paris Traceroute keeps flow identifiers constant across all probes so they all traverse the same path.
With Paris Traceroute, you get: Consistent paths through ECMP networks Accurate hop-by-hop latency measurements Load balancer detection (per-flow vs per-packet)
- Дата записи: 2026-09-15T17:00:27.666Z