Traceroute odkrywa trasę, celowo doprowadzając pakiety do „śmierci” po kolejnych hopach
Traceroute nie pyta Internetu o gotową mapę trasy. W klasycznej formie wysyła serię pakietów z coraz większą wartością TTL: 1, 2, 3… Każdy router zmniejsza TTL, a gdy licznik spadnie do zera, odrzuca pakiet i zwykle odsyła komunikat ICMP Time Exceeded. Pierwszy pakiet „umiera” na pierwszym routerze, kolejny na drugim i tak dalej. Z adresów urządzeń zgłaszających śmierć pakietu narzędzie składa przybliżony obraz drogi. Co ciekawe, mechanizm TTL powstał po to, by pakiety nie krążyły bez końca w pętlach routingu; traceroute zamienia to zabezpieczenie w narzędzie diagnostyczne.
TTL jest licznikiem życia pakietu
Nagłówek IPv4 zawiera pole Time To Live. Choć nazwa historycznie sugeruje czas, w praktyce routery zmniejszają je co najmniej o jeden przy każdym przejściu. RFC 1812 wymaga od routera odrzucenia pakietu, gdy po zmniejszeniu wartość osiągnie zero, oraz przewiduje wysłanie ICMP Time Exceeded. W IPv6 analogiczną rolę pełni Hop Limit.
Po co zabijać pakiety
Gdy routing jest błędny, dwa lub więcej routerów może przez pewien czas przekazywać pakiet w kółko. Bez ogranicznika taki pakiet mógłby krążyć aż do zmiany tablic routingu, zużywając przepustowość za każdym okrążeniem. TTL gwarantuje, że po skończonej liczbie hopów pakiet zostanie usunięty. RFC 1812 opisuje tę funkcję jako zabezpieczenie przed nieograniczonym krążeniem.
Traceroute wykorzystuje efekt uboczny
RFC 1393 opisuje klasyczny mechanizm traceroute: sonda z TTL=1 wygasa na pierwszym routerze, z TTL=2 na drugim, a każda odpowiedź ICMP ujawnia adres kolejnego urządzenia. Narzędzie zwiększa wartość, aż sonda dotrze do celu lub przekroczy ustalony limit. Nie ma tu globalnego zapytania typu „pokaż trasę”; mapa powstaje z kontrolowanych niepowodzeń kolejnych pakietów.
Wynik nie jest idealną mapą
Router może nie odpowiadać na ICMP, filtrować sondy albo odpowiadać z innego interfejsu niż ten użyty do forwardingu. Równoważenie ruchu może też kierować różne sondy różnymi ścieżkami. Gwiazdka w traceroute nie oznacza automatycznie, że pakiety użytkownika nie przechodzą dalej; może oznaczać tylko brak odpowiedzi diagnostycznej z danego hopu.
Trasa powrotna też może być inna
Odpowiedź ICMP z routera musi wrócić do komputera uruchamiającego traceroute, a jej droga może być asymetryczna. Zmierzony czas do konkretnego hopu obejmuje więc podróż sondy do routera i odpowiedzi z powrotem, niekoniecznie po tej samej ścieżce. Dlatego kolejne czasy traceroute nie są prostym pomiarem opóźnienia pojedynczych odcinków.
Diagnostyka dzięki protokołowi ochronnemu
Najciekawsze w traceroute jest to, że Internet nie potrzebował osobnego obowiązkowego mechanizmu ujawniania całej topologii. Narzędzie wykorzystało istniejącą zasadę bezpieczeństwa pakietów i komunikaty błędów. Mechanizm stworzony po to, by usuwać beznadziejnie zapętlone dane, stał się jednym z najbardziej rozpoznawalnych sposobów oglądania niewidocznej drogi przez sieć.
Traceroute widzi tylko to, co routery zgodzą się ujawnić
Brak odpowiedzi z konkretnego hopu nie oznacza automatycznie dziury w trasie. Router może normalnie przekazywać pakiety użytkownika, a jednocześnie ograniczać lub filtrować odpowiedzi ICMP, żeby chronić własny procesor albo zgodnie z polityką bezpieczeństwa. Następny router może już odpowiedzieć, więc wynik ma wtedy gwiazdkę pomiędzy prawidłowymi hopami. Dodatkowo ECMP może kierować kolejne sondy innymi ścieżkami, dlatego narzędzie może pokazać kilka urządzeń na tym samym poziomie TTL. RFC 1393 już w opisie klasycznego traceroute zauważa, że ścieżka może zmienić się w trakcie pomiaru i że droga powrotna odpowiedzi może różnić się od drogi sondy. Traceroute jest więc sprytnym eksperymentem pomiarowym, a nie rentgenem gwarantującym pełną i statyczną mapę Internetu. To ograniczenie jest istotne także przy interpretacji nazw i lokalizacji hopów. Adres interfejsu odpowiadającego na ICMP nie musi wskazywać dokładnie miejsca, przez które przechodzi właściwy strumień danych, a nazwa reverse DNS bywa tylko etykietą operatora. Traceroute najlepiej traktować jako zestaw obserwacji o zachowaniu ścieżki, nie jako dosłowny plan wszystkich kabli i routerów.