Równoległość jest głównym powodem różnic w szybkości tych narzędzi. Kolejnym czynnikiem jest to, jak długo czekają na odpowiedź, zanim przeskok nie zostanie uznany za odpowiadający. Jeśli wykonywane jest odwrotne DNS, musisz również na to poczekać. Zwykłe polecenie traceroute staje się znacznie szybsze, jeśli wyłączysz odwrotny DNS.
Inną ważną różnicą, o której nie wspomniałem, jest sposób, w jaki oba narzędzia wyświetlają dane wyjściowe. Traceroute produkuje dane wyjściowe w kolejności od góry do dołu. Mtr renderuje dane wyjściowe w inny sposób, gdzie mtr może wrócić i zaktualizować dane wyjściowe w poprzednich liniach.
Oznacza to, że mtr może wyświetlić dane wyjściowe, gdy tylko będą dostępne, ponieważ jeśli późniejsze odpowiedzi spowodują, że dane wyjściowe nie będą dokładne, mtr może wrócić i je zaktualizować. Ponieważ traceroute nie może wrócić i zaktualizować danych wyjściowych, musi poczekać, aż ostatecznie zdecyduje, co wyświetli.
Na przykład, jeśli skok nr 2 nie odpowiada (co jest symptomem, który widziałem u wielu dostawców usług internetowych), traceroute wyświetli skok nr 1, a następnie zaczeka chwilę, zanim wyświetli skok nr 2 i 3. Mimo że odpowiedź z numeru skoku 3 przybył, nie jest wyświetlany, ponieważ traceroute nadal czeka na odpowiedź z przeskoku nr 2. Mtr nie ma tego ograniczenia i może wyświetlić odpowiedź z przeskoku nr 3 i nadal wracać, aby wyświetlić odpowiedź z przeskoku nr 2, jeśli przybywa później.
Zbyt duża równoległość może spowodować, że dane wyjściowe staną się niedokładne. W niektórych scenariuszach istnieją ograniczenia dotyczące liczby pakietów, dla których można uzyskać odpowiedzi. Wysłanie większej liczby pakietów w tych przypadkach nie przyspieszy procesu, spowoduje jednak więcej utraconych pakietów, ponieważ otrzymujesz taką samą liczbę odpowiedzi i wysyłanych jest więcej pakietów.
Jednym z przykładów jest to, że przeskok na trasie nie odpowiada na żądania ARP. Zwykle pierwszy pakiet wyzwala żądanie ARP, a jeśli więcej pakietów dotrze przed upływem terminu ARP, tylko ostatni z tych pakietów zostanie zbuforowany i otrzyma odpowiedź.
Kolejna różnica polega na tym, ile przeskoków bez odpowiedzi zostanie wyświetlonych, zanim narzędzie przestanie wyświetlać więcej przeskoków. Widziałem, że polecenie traceroute kontynuuje tyle przeskoków, ile zażądano (domyślnie 30), podczas gdy polecenie mtr zatrzyma się, gdy tylko przejdzie pięć przeskoków bez odpowiedzi.