Требуется пара объяснений:
Прежде всего, как работает traceroute:
- Traceroute отправляет пакет на IP-адрес назначения (94.2.55.112) с TLL = 1
- Получающий маршрутизатор уменьшает TTL, и поскольку TTL = 0 отбрасывает пакет и возвращает
TTL exceeded
- Traceroute отправляет пакет на IP-адрес назначения (94.2.55.112) с TLL = 2
- Получающий маршрутизатор уменьшает TTL и передает его следующему прыжку.
- Следующий переход уменьшает TTL, и поскольку TTL = 0 отбрасывает пакет и возвращает
TTL exceeded
- Traceroute отправляет пакет на IP-адрес назначения (94.2.55.112) с TLL = 3
,
,
,
И так до тех пор, пока посылка не достигнет пункта назначения (94.2.55.112).
Теперь давайте проверим, как работают маршрутизаторы:
Когда маршрутизатор получает пакет, его единственная задача - отправить его на следующий переход как можно скорее.
Для достижения этой цели маршрутизатор принимает решение на основе таблицы маршрутизации; таблица маршрутизации для интернет-таблицы может быть огромной. Проверка таблицы и принятие решения называется переключением процессов и является самым медленным способом сделать это. Так что есть некоторые приемы, чтобы ускорить его.
Есть быстрое переключение. С его помощью после того, как пакет был отправлен на следующий переход, информация о маршруте о том, как добраться до места назначения, сохраняется в быстром кэше. Когда маршрутизатор получает другой пакет, который направляется в тот же пункт назначения, он использует кэш. Это быстрее, чем традиционный способ.
Cisco разработала технологию, называемую Cisco Express Forwarding или CEF, которая еще быстрее. CEF - это система, которая хранит информацию таким образом, что ее можно очень быстро запросить.
Теперь давайте соберемся все вместе:
Когда пунктом назначения трассировки является хост (например, 94.2.55.112), в первом пакете маршрутизаторы будут использовать традиционный способ (переключение процессов), чтобы узнать, где находится пункт назначения, но после этого в следующих пакетах маршрутизаторы будут используйте быстрое переключение или CEF. От пункта отправления до пункта назначения будет фиксированный путь.
Когда пунктом назначения traceroute является маршрутизатор (99.34.xx.xx), промежуточные маршрутизаторы будут делать то же самое, что и раньше (первый пакет с переключением процессов и затем кэшировать), но маршрутизатор назначения не будет делать это, поскольку нет следующего прыжка. Таким образом, целевой маршрутизатор выполнит переключение процессов, чтобы ответить на каждый полученный пакет.
Большая проблема возникает, когда маршрутизатор назначения имеет два или более подключений к разным интернет-провайдерам и соединения выполняют балансировку нагрузки.
Балансировка нагрузки означает, что во избежание перегрузки одного соединения до тех пор, пока маршрутизатор не использует следующее, он использует механизм циклического перебора для равномерного распределения трафика между всеми своими соединениями.
Теперь у вас есть взрывоопасная смесь для вашей ситуации: трассировка к маршрутизатору, он будет использовать переключение процессов для каждого пакета, на который влияет балансировка нагрузки, и каждый раз вы выбираете другой путь.
Извините за длинное объяснение, но в результате получилась сумма нескольких механизмов, я хотел сделать их как можно более понятными.