Определение простыми словами
Traceroute отвечает на вопрос «где теряются мои пакеты». Утилита отправляет серию тестовых пакетов с TTL=1, 2, 3 и так далее. Каждый маршрутизатор уменьшает TTL на единицу, и когда счётчик доходит до нуля — возвращает ICMP Time Exceeded. По обратным сообщениям traceroute восстанавливает цепочку хопов и измеряет RTT для каждого.
В Linux по умолчанию используется UDP-вариант (порты 33434+), в Windows (tracert) — ICMP echo. Многие узлы отдают приоритет «обычному» трафику, поэтому ICMP-ответы могут приходить с задержкой больше, чем фактический пинг через них. Это нормально и не означает реальной просадки.
Сравнение
| Утилита | Платформа | Метод | Особенности |
|---|---|---|---|
| traceroute | Linux/macOS | UDP по умолчанию | Гибкие флаги, есть -I (ICMP) и -T (TCP) |
| tracert | Windows | ICMP Echo | Минимум опций, идёт «из коробки» |
| mtr | Linux/macOS/Windows | ICMP/UDP/TCP | Постоянный режим, статистика потерь |
| tcptraceroute | Linux | TCP SYN | Проходит фаерволы, блокирующие UDP/ICMP |
| pathping | Windows | ICMP + анализ | Длительный сбор статистики потерь |
Кейсы использования
- Поиск узкого места: traceroute показывает, на каком хопе RTT резко вырастает или начинаются потери.
- Диагностика BGP-маршрута: видно, через каких провайдеров (AS) идёт трафик до целевого хоста.
- Проверка асимметричной маршрутизации — туда и обратно пакеты могут идти разными путями, отсюда странные задержки.
- Подбор лучшего датацентра: трассируете до нескольких локаций и выбираете с минимальным числом хопов и стабильным RTT.
- Негатив: traceroute не покажет всю картину, если на пути стоит фаервол, дропающий ICMP TTL Exceeded или UDP. Хопы будут отображаться как
* * *. В таких случаях используйте tcptraceroute с портом 80/443.
Технические детали
Базовые команды для Linux. В Windows аналог — tracert.
# Простой UDP-traceroute
traceroute example.com
# Через ICMP, удобно когда UDP блокируется
traceroute -I example.com
# Через TCP-порт 443 — обходит большинство периметровых фильтров
traceroute -T -p 443 example.com
# Без резолва имён, быстрее
traceroute -n example.com
# Указать максимальное число хопов и количество проб на хоп
traceroute -m 20 -q 3 example.com
# Постоянный режим с потерями (mtr)
mtr -rwzbc 50 example.com
# -r: report mode, -w: wide, -z: ASN, -b: и IP и hostname, -c: число пакетов
# Windows эквивалент
tracert -d -h 20 example.com
При анализе трассы обращайте внимание не на одиночные всплески, а на устойчивый рост RTT начиная с конкретного хопа — это и есть точка деградации.
🔥 Где это применяется
Частые вопросы
Почему один из хопов показывает звёздочки * * *?
Маршрутизатор не отвечает на ICMP Time Exceeded — фильтрует или ограничивает rate-limit. Пакет всё равно проходит дальше, просто этот хоп не виден. Не считайте это потерей.
Чем traceroute отличается от mtr?
Traceroute — разовая трассировка. Mtr делает её непрерывно и показывает процент потерь и среднее RTT на каждом хопе. Для долгой диагностики mtr намного информативнее.
Что значат высокие задержки на промежуточном хопе при нормальном RTT до цели?
Промежуточный маршрутизатор обрабатывает ICMP-ответы по остаточному принципу, поэтому показывает большее RTT. Если задержка не растёт на следующих хопах — реальной проблемы нет.