Параллелизм является основной причиной изменения скорости этих инструментов. Еще одним фактором, способствующим этому, является то, как долго они ждут ответа, прежде чем считается, что прыжок не отвечает. Если выполняется обратный DNS, вы также должны ждать этого. Команда plain traceroute становится намного быстрее, если вы отключите обратный DNS.
Другое важное отличие, о котором я не упомянул, заключается в том, как два инструмента визуализируют вывод. Traceroute производит вывод в порядке сверху вниз. Mtr выводит вывод другим способом, где mtr может вернуться назад и обновить вывод в предыдущих строках.
Это означает, что mtr может отображать вывод, как только он становится доступным, потому что, если более поздние ответы приведут к тому, что вывод не будет точным, mtr может вернуться и обновить его. Так как traceroute не может вернуться назад и обновить вывод, ему приходится ждать, пока он окончательно не решит, что будет отображаться.
Например, если переход № 2 не отвечает (это симптом, который я видел на нескольких интернет-провайдерах), traceroute отобразит номер прыжка 1, а затем подождет некоторое время, прежде чем отобразит номер прыжка 2 и 3. Даже если ответ от номера прыжка 3 прибыл, он не отображается, потому что traceroute все еще ожидает ответа от прыжка номер 2. Mtr не имеет такого ограничения и может отобразить ответ от прыжка номер 3 и все еще вернуться к отображению ответа от прыжка номер 2, если это прибывает позже.
Слишком сильный параллелизм может привести к тому, что вывод станет неточным. В некоторых случаях существуют ограничения на количество пакетов, на которые вы можете получить ответы. Отправка большего количества пакетов в этих случаях не ускорит процесс, однако приведет к большему количеству потерянных пакетов, поскольку вы получаете такое же количество ответов с большим количеством отправляемых пакетов.
Одним из примеров этого является случай, когда переход на маршруте не отвечает на запросы ARP. Обычно первый пакет инициирует запрос ARP, и если большее количество пакетов поступит до истечения времени ожидания запроса ARP, только последний из этих пакетов будет буферизован и получит ответ.
Другое отличие состоит в том, сколько прыжков без ответов будет отображаться до того, как инструмент перестанет отображать больше прыжков. Я видел, как команда traceroute продолжалась столько раз, сколько было запрошено (30 по умолчанию), в то время как команда mtr остановилась, как только прошла пять прыжков без ответов.