Implementing Paris Traceroute in Rust: Tracing Paths Through Load Balancers
说明与用途
在 Rust 中实现 Paris Traceroute 可在 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