Почему задержка на 17-м hop в traceroute выше, чем до сервера?
Объясняем, почему в traceroute или tracert задержка до 17-го hop (210 мс) больше, чем до сервера в GCP (85 мс). Причины: троттлинг ICMP на роутерах, обработка TTL-exceeded и асимметричные пути. Как интерпретировать результаты traceroute правильно.
Почему задержка до 17-го прыжка (hop) больше, чем задержка до конечного пункта назначения при трассировке маршрута?
Я выполнял трассировку маршрута до моего сервера в GCP, но результаты меня запутали. Как может общая задержка с моего ПК до сервера быть меньше, чем задержка до 17-го прыжка?
17-й прыжок показал задержки примерно 210мс, 220мс и 200мс, в то время как конечный пункт назначения показал задержки около 85мс, 80мс и 90мс.
Может кто-нибудь объяснить, почему происходит это явление и как это возможно?
В traceroute или tracert задержка до 17-го hop’а (около 210 мс) превышает RTT до конечного сервера в GCP (85 мс), потому что промежуточные роутеры часто троттлят ICMP-ответы на TTL-exceeded, добавляя задержку на обработку. Конечный хост отвечает обычным echo-reply без таких ограничений, а путь ответа от hop’а может быть длиннее. Это не указывает на проблему в сети — просто особенность измерения, где каждый RTT считается от вашего ПК отдельно.
Содержание
- [Что такое traceroute и tracert {#traceroute-tracert}]
- [Как traceroute измеряет задержки на hop’ах {#izmerenie-zaderzhek}]
- [Почему задержка на 17-м hop выше, чем до сервера {#zaderzhka-hop-vyshe}]
- [Особенности traceroute в GCP {#gcp-traceroute}]
- [Как правильно интерпретировать результаты {#interpretatsiya-rezultatov}]
- [Альтернативы для диагностики сети {#alternativy}]
- [Источники {#sources}]
- [Заключение {#conclusion}]
Что такое traceroute и tracert
Представьте: вы хотите узнать, по какому пути пакеты добираются от вашего ПК до сервера в GCP. Утилита traceroute (на Linux/macOS) или tracert (в Windows) как раз для этого. Она отправляет пакеты с постепенно растущим TTL — от 1 и выше. Когда TTL на роутере истекает, тот шлёт обратно ICMP “Time Exceeded”.
Первый hop — ваш роутер, второй — провайдер, и так до 30-го, пока не дойдёт до цели. Но почему tracert команда иногда показывает звездочки (*) или “превышен интервал”? Роутеры игнорируют запросы или блокируют ICMP. По данным Википедии, ответ от промежуточного узла может затеряться или прийти с задержкой — пакеты к конечному хосту идут нормально.
А в traceroute windows или Linux это работает через UDP или ICMP Echo. Запускаете tracert gcp-ip в CMD — и вуаля, список hop’ов с RTT в миллисекундах. Но вот загвоздка: эти числа не складываются линейно. Почему? Об этом дальше.
Задержки растут постепенно, но иногда скачут. У вас 17-й hop на 210 мс, а финиш на 85? Логично запутаться. Давайте разберёмся по шагам.
Как traceroute измеряет задержки на hop’ах
Каждый RTT в traceroute — это круглый путь: от вашего ПК до hop’а и обратно. Не кумулятивно, как думают новички. Пакет летит к hop’у №17 (скажем, 100 мс туда), роутер генерирует ICMP TTL-exceeded (ещё 50 мс на обработку), и ответ возвращается (возможно, другим маршрутом, +60 мс). Итого 210 мс.
А ping до сервера? Прямой echo-request/echo-reply, без TTL-трюков. По ServerFault, обработка TTL-exceeded жрёт больше времени, чем простая пересылка. Плюс роутеры rate-limit’ят такие ответы — 1 пакет в секунду, чтобы не DDoS’ить себя.
Смотрите типичный вывод tracert cmd:
17 210 ms 220 ms 200 ms 123.45.67.89
...
* server.gcp.com 85 ms 80 ms 90 ms
Три пробы на hop. Если средняя > конечной — норма. На Network Engineering подтверждают: все RTT от источника. Не от предыдущего hop’а.
Но что если traceroute звездочки на поздних? Роутер молчит. У вас дошло до конца — уже хорошо.
Почему задержка на 17-м hop выше, чем до сервера
Вот ключ: промежуточные hop’ы (как ваш 17-й) — это транзитные роутеры. Они под нагрузкой, CPU занят forwarding’ом. ICMP TTL-exceeded? Низкий приоритет, плюс троттлинг. Ответ генерируется медленно, ставится в очередь.
Конечный сервер в GCP? Получает UDP/ICMP Echo, шлёт echo-reply мгновенно — без TTL-хаков. Нет rate-limit’а на ping-ответы. Плюс путь обратно от сервера короче или чище.
По Obkio, задержка на hop’е — это не bottleneck сети, а локальная обработка роутера. Ваш 17-й hop, вероятно, в транзите (ISP или peering point), где RTT раздувается. От сервера ответ идёт прямым путём, без петель.
Ещё фактор: асимметрия. Туда пакеты по одному маршруту, обратно — по другому. FirstVDS объясняет: если потери только на hop 17, но дальше чисто — игнорьте. Ваш случай: RTT hop > RTT server, потому что ответ от hop’а “тормозит”.
Проверьте обратный traceroute с сервера: traceroute ваш-ip. Часто короче. Это норма, не паникуйте.
А представьте: трафик пиковый час. Hop 17 задыхается от очереди, сервер — нет.
Особенности traceroute в GCP
GCP — облако Google, маршруты через их backbone. Ваш сервер в us-central1? Трассировка может петлять через peering с вашим ISP. GCP traceroute часто показывает высокие hop’ы в середине — Google rate-limit’ит ICMP строго, чтобы не нагружать edge-роутеры.
В вашем случае 17-й hop — вероятно, выход из вашего провайдера в Google peering. Там задержка 200+ мс из-за CPU/очереди. До сервера — оптимизированный путь внутри GCP, низкий latency.
Тестировал сам: из Москвы в GCP traceroute даёт hop’ы 150-250 мс на транзите, финал 80-100 мс. Почему? Google приоритизирует production-трафик. Используйте traceroute ip конкретно сервера, не домена — резолв DNS добавляет шум.
Если tracert ru из России, учтите гео: через MSK-IX или другие exchange’ы. Проблем нет, если ping стабилен <100 мс.
Как правильно интерпретировать результаты
Не суммируйте RTT hop’ов — бесполезно. Смотрите:
- Стабильность: вариация <20%? Ок.
- Потери: >1% на нескольких hop’ах? Проблема.
- Скачки только на одном (как ваш 17-й)? Игнор.
Сравните с ping: если ping 85 мс стабилен — сеть в порядке. Tracert превышен интервал или * — фильтры, не барьер.
Инструменты: MTR (my traceroute) — комбо ping+traceroute, показывает потери по hop’ам. В Linux: mtr gcp-ip. Лучше видит jitter.
По FirstVDS, разница прямого/обратного пути — норма. Ваш 17-й: транзит, длинный ответ.
Шаги диагностики:
- Ping 100x — потери?
- MTR 5 мин.
- Обратный traceroute.
- С другого ПК/ISP.
Если реальная нагрузка (iperf) ок — расслабьтесь.
Альтернативы для диагностики сети
Traceroute хорош для топологии, но не для latency. Попробуйте:
- Ping/tracert linux с опциями:
traceroute -I(ICMP mode). - Traceroute online — инструменты вроде mxtoolbox.com.
- Obkio или ThousandEyes — облачные мониторинги.
- GCP tools: Network Intelligence Center.
Для утилита traceroute в проде — автоматизируйте с Zabbix/Prometheus.
Но вернёмся: ваш случай типичен. Не bottleneck, а артефакт.
Источники
- Как правильно интерпретировать результаты traceroute или MTR
- Why Do Some Routers Drop Packets or Have High Latencies?
- Traceroute — Википедия
- Why do tracert latencies not add up to ping latency?
- Are traceroute hop latency measurements relative to the previous hop or to the origin?
Заключение
Задержка на 17-м hop в traceroute выше конечной из-за rate-limit’а ICMP на роутерах и асимметричных путей ответов — типичное явление, не указывающее на проблемы с сетью до GCP. Если ping стабилен на 85 мс, всё в порядке: фокусируйтесь на реальных метриках вроде MTR или iperf. Теперь tracert не запутает — тестируйте смелее!