paris-traceroute(1)

πŸ“¦ version 0.93, in alpine 3.24

🌸 paris-traceroute(1) β€” the Paris Traceroute page, bestie edition 🌸

Okay so this is the manual page for Paris Traceroute, living in section 1 of the manual. Grab a snack, we're learning networking πŸ’…


✨ NAME ✨

Paris-Traceroute β€” like, that's her name, that's the whole vibe πŸŽ€


✨ SYNOPSIS ✨

An advanced implementation of traceroute that correctly handles load-balancing servers, among other things ✨


✨ DESCRIPTION ✨

So here's the tea β˜• β€” we're introducing Paris traceroute, a whole new traceroute built to respond to load-balancing routers. Her key innovation? She controls the probe packet header fields in a manner that lets all probes headed toward a destination follow the same path even when per-flow load balancing is being all extra about it. Lowkey iconic.

She also lets a user distinguish between the presence of per-flow load balancing and per-packet load balancing πŸ‘€. Ngl though, because per-packet load balancing is random in nature, Paris traceroute cannot perfectly enumerate all paths in all situations β€” she's honest about it, we stan transparency. But she can do considerably better than the classic traceroute, and she can flag those instances where there are doubts 🚩.

Here's the problem, if one wishes to keep certain header fields constant: traceroute still needs to be able to match response packets to their corresponding probe packets. Like, that's non-negotiable bestie 😭.

Paris traceroute does this by varying header fields that are within the first 28 octets, but are not used for load balancing. Let's break it down, per protocol 🧚:

  • In the case of TCP probes, Paris traceroute varies the sequence number.
  • In UDP probes, it's the checksum field. This requires manipulating the payload to yield the desired checksum, because packets with an incorrect checksum are liable to be discarded πŸ’€.
  • In ICMP probes, it's a combination of the ICMP identifier and the sequence number. We carefully set the value of the ICMP identifier and sequence number to keep constant the header checksum of all probes to a destination.

Figure 2 summarizes the IP, UDP, and ICMP header fields that are used by load balancers, classic traceroute, and Paris traceroute. We include the ICMP type field as used for load balancing, even if we cannot verify it experimentally β€” because routers only respond to one type of probes, which is the ICMP echo request πŸ™ˆ. Our experiments with UDP, TCP, and IPSec probes do give strong evidence that routers blindly use the first four octets after the IP header combined with the IP fields to do load balancing. Fr fr, no cap πŸ”₯.


✨ OPTIONS ✨

  • -h, --help β€” displays help and usage information 🫢 (your lil emergency exit)
  • -a<ALGORITHM>, --algorithm=<ALGORITHM> β€” choose which algorithm to use. Default is "mda" πŸ‘‘

✨ BUGS ✨

No known bugs πŸ’–. If any are found, please feel free to email us β€” we genuinely want to know, periodt.


✨ AUTHOR ✨

Julian Cromarty (julian.cromarty@gmail.com) πŸ¦‹


⭐ Okay that's the whole page bestie, go traceroute something and slay ✨

Sign-off szn πŸŽ€ β€” this was the paris-traceroute(1) page from Paris Traceroute, dated 8th June 2012, and you can find the crew over at www.paris-traceroute.net 🌈

πŸ“¦ where this page comes from