Parallelität ist ein Hauptgrund für die Variation der Geschwindigkeit dieser Werkzeuge. Ein weiterer Faktor ist, wie lange sie auf eine Antwort warten, bevor der Hop als nicht antwortend angesehen wird. Wenn Reverse DNS durchgeführt wird, müssen Sie auch darauf warten. Der einfache Traceroute-Befehl wird viel schneller, wenn Sie Reverse DNS deaktivieren.
Ein weiterer wichtiger Unterschied, den ich nicht erwähnt habe, ist, wie die beiden Tools die Ausgabe rendern. Traceroute erzeugt die Ausgabe in der Reihenfolge von oben nach unten. Mtr rendert die Ausgabe auf eine andere Art und Weise, wobei mtr zurückgehen und die Ausgabe in vorherigen Zeilen aktualisieren kann.
Dies bedeutet, dass mtr die Ausgabe anzeigen kann, sobald sie verfügbar ist. Wenn spätere Antworten dazu führen, dass diese Ausgabe nicht korrekt ist, kann mtr zurückgehen und sie aktualisieren. Da Traceroute nicht zurückgehen und die Ausgabe aktualisieren kann, muss es warten, bis es endgültig entschieden hat, was angezeigt werden soll.
Wenn beispielsweise Hop-Nummer 2 nicht antwortet (was ein Symptom ist, das ich bei mehreren ISPs gesehen habe), zeigt Traceroute Hop-Nummer 1 an und wartet dann eine Weile, bevor Hop-Nummer 2 und 3 angezeigt werden. Auch wenn die Antwort von Hop-Nummer 2 angezeigt wird 3 ist angekommen, es wird nicht angezeigt, da traceroute immer noch auf die Antwort von Hop Nummer 2 wartet. Mtr hat diese Einschränkung nicht und kann die Antwort von Hop Nummer 3 anzeigen und trotzdem zurückgehen, um die Antwort von Hop Nummer 2 anzuzeigen, wenn es kommt später an.
Zu viel Parallelität kann dazu führen, dass die Ausgabe ungenau wird. In einigen Szenarien ist die Anzahl der Pakete, auf die Sie Antworten erhalten können, begrenzt. Das Senden von mehr Paketen in diesen Fällen beschleunigt den Prozess nicht, führt jedoch zu mehr verlorenen Paketen, da Sie die gleiche Anzahl von Antworten erhalten, wenn mehr Pakete gesendet werden.
Ein Beispiel hierfür ist, wenn ein Hop auf der Route nicht auf ARP-Anforderungen antwortet. Normalerweise löst das erste Paket eine ARP-Anforderung aus. Wenn mehr Pakete vor Ablauf der ARP-Anforderung eintreffen, wird nur das letzte dieser Pakete gepuffert und erhält eine Antwort.
Ein weiterer Unterschied besteht darin, wie viele Hops ohne Antworten angezeigt werden, bevor das Tool keine weiteren Hops mehr anzeigt. Ich habe gesehen, dass der Befehl traceroute für so viele Hops wie angefordert fortgesetzt wird (standardmäßig 30), während der Befehl mtr angehalten wird, sobald er fünf Hops ohne Antworten bestanden hat.
Der Befehl traceroute sendet 3 Sonden pro Hop. Wenn Sie ihn auf 1 Sonde beschränken, werden
-q 1
die Ergebnisse vergleichbarIch würde erwarten, dass die Hauptunterschiede zwischen vergleichbaren Tests mit der DNS-Abfragezeit und den Pfadunterschieden zusammenhängen. Sie werden feststellen, dass meine Traceroute schneller ist als die mtr, aber dies ist nicht immer der Fall.
quelle
Ich nehme an, dass dies von der Art und Weise herrührt, wie die Routenverfolgung implementiert ist.
traceroute
hat nacheinander mindestens 3 Pakete für jeden Hop auf der Route zum Ziel gesendet.mtr
Ermitteln Sie zuerst die Sprünge in der Route und senden Sie dann parallel ein Paket an jeden Knoten.Es scheint mir auch, dass es einen Unterschied in der Art und Weise gibt, wie
mtr
Hopfen nicht auf Ping / Sonden reagieren. es ignoriert dann schneller, als estraceroute
scheint, seine 3 Pakete die ganze Zeit zu senden, selbst wenn die ersten Versuche fehlgeschlagen sind, eine Antwort zu erhalten.quelle
Der Hauptgrund ist die Art und Weise, wie Traceroute ausgeführt wird. Es sendet ein UDP-Paket (oder ICMP unter Windows) mit einer TTL von eins an den ersten Host. Wenn es eine Timeout-Antwort empfängt (oder ein internes Timeout durchläuft), generiert es das nächste Paket für den nächsten Host mit einer TTL von zwei und so weiter (Hinzufügen einer zur TTL für jeden Host). Die Gesamtzeit von traceroute umfasst also das sequentielle Senden und Empfangen von Paketen für jeden Host.
Nachdem mtr den Pfad bestimmt hat, den die Pakete nehmen, sendet mtr alle ICMP-ECHO-Pakete parallel.
quelle
[mtr] investigates the network connection between the host mtr runs on and a user-specified destination host. After it determines the address of each network hop between the machines