210 likes | 462 Views
Avoiding traceroute anomalies with Paris Traceroute. Brice Augustin (Université Pierre et Marie Curie-LIP6/CNRS) Xavier Cuvellier, Timur Friedman, Renata Teixeira (Université Pierre et Marie Curie-LIP6/CNRS) Fabien Viger, Benjamin Orgogozo, Matthieu Latapy
E N D
Avoiding traceroute anomalies with Paris Traceroute Brice Augustin (Université Pierre et Marie Curie-LIP6/CNRS) Xavier Cuvellier, Timur Friedman, Renata Teixeira (Université Pierre et Marie Curie-LIP6/CNRS) Fabien Viger, Benjamin Orgogozo, Matthieu Latapy (Université Denis Diderot-LIAFA/CNRS) Clémence Magnien (Ecole Polytechnique-CREA/CNRS)
Contributions • Identified traceroute deficiencies on load balanced paths • Measured paths are inaccurate and incomplete • False diamonds, false loops and false cycles • Built a new traceroute: Paris traceroute
Traceroute under load balancing Actual topology: A C Dst E Src L TTL = 2 B D TTL = 3 Inferred topology: A C False link Dst E Src L B D Missing nodes and links
Anomalies: false diamonds A C Actual topology: Dst E Src L B D Inferred topology: A C Dst E Src L B D
Anomalies: false loops and cycles TTL = 3 Actual topology: A Dst Src D L B C TTL = 4 TTL = 2 Inferred topology: Src Dst L D B
Anomalies happen even under per-flow load balancing • Traceroute uses the destination port as identifier • Per-flow load balancers use the destination port as part of the flow identifier Port 2 Flow 1 A C Port 1 Dst E Src L TTL = 2 Port 3 B D TTL = 1 TTL = 3
Paris traceroute • Solves the problem with per-flow load balancing • Probes to a destination belong to same flow • How to identify probes? • Use the UDP checksum • Does not address per-packet load balancing Checksum 2 Checksum 3 Port 1 Port 1 A C Checksum 1 Port 1 Dst E Src L TTL = 2 TTL = 3 B D TTL = 1
Measurement infrastructure 5000 reachable destinations • Measurements • 1 round takes 100 minutes • 2 months • 1465 rounds Paris traceroute Classic traceroute Paris traceroute Classic traceroute Paris Paris traceroute INTERNET Source
Unusual observations Diamonds Loops Cycles • What portion of these are false, i.e. anomalies? A A A B C B B D C C
Measurement artifacts are common From our LIP6 vantage point: • Diamonds appear in 30% of the destinations • Paris traceroute removes 10,662 from 19,159 (56%) • Loops appear in 4.5% of the measured routes • Paris traceroute removes 5,047 from 5,795 (87%) • Cycles appear in 0.25% of the measured routes • Paris traceroute removes 3,886 from 5,674 (68%) • Other causes • Routing changes • NAT boxes • Buggy routers • Per-packet load balancing
Conclusion • Classic traceroute leads to anomalies: • False diamonds, false loops and false cycles • Per-flow load balancers cause most of the anomalies • Paris traceroute reports more precise paths
More information www.paris-traceroute.net
Future Directions • Exhaustive algorithm • Find all paths • Fine characterization of load balancers • Impact on inferred graphs (stats, dynamics) • Broader experiments • More sources and destinations • Path diversity • Optimize Internet connections by selecting the appropriate flow identifier
Anomalies: false loops and cycles TTL = 3 A Dst D Src L B C E TTL = 5 TTL = 2 TTL = 4 Dst D Src L B E
Anomalies:Loops caused by buggy routers -bash$ traceroute Dst traceroute to Dst 1B0.289 ms 2 B 0.278 ms 3 Dst 0.578 ms Dst Src A B X Rejects the probe with a TTL of 0 and sends it back to the source Forwards the probe with TTL equal to 0 Forwards the probe with TTL equal to 0 TTL = 1 TTL = 1 Rejects the probe with a TTL of 0 and sends it back to the source TTL = 2 -bash$ traceroute-paris Dst traceroute to Dst 1 B0.289 ms!T0 2 B 0.278 ms 3 Dst 0.578 ms Src Dst B
Anomalies:Loops caused by NAT boxes Response TTL = 254 IP Identifier = 12375 Response TTL = 252 IP Identifier = 9356 Dst (NAT) Src A B C Dst B TTL = 2 TTL = 3 TTL = 3 Response TTL = 253 IP Identifier = 5286 2 Dst Src A See [ Bellovin 2002 ]
An intriguing traceroute output -bash$ -bash$ traceroute F traceroute to F, 64 hops max, ... 1 A0.353 ms 0.358 ms 0.222 ms 2 B0.848 msC0.264 msB0.985 ms 3 D0.225 msE0.718 msD0.778 ms 4 F0.590 ms 0.609 ms 0.750 ms -bash$ -bash$ -bash$ A B C ? D E F
An intriguing traceroute output -bash$ -bash$ traceroute F traceroute to F, 64 hops max, ... 1 A0.353 ms 0.358 ms 0.222 ms 2 B0.848 msC0.264 msB0.985 ms 3 D0.225 msE0.718 msD0.778 ms 4 F0.590 ms 0.609 ms 0.750 ms -bash$ -bash$ -bash$ traceroute F traceroute to F, 64 hops max, ... 1 A0.253 ms0.354 ms 0.325 ms 2 C0.342 ms0.364 msB0.825 ms 3 E0.216 msD0.614 ms0.820 ms 4 F0.612 ms 0.503 ms 0.728 ms -bash$ A B C ? D E F
Anomalies: diamonds A C Dst E Src L B D A C Dst E Src L B D
What we expect with per-flow load balancing Flow 1 A C Dst E Src L TTL = 2 B D TTL = 3 A Dst E Src L D
How traceroute works Src Dst A B 0 1 0 1 TTL = 1 TTL = 2 TTL = 3 Src Dst A0 B0 Src Dst A1 B1