Кратко

  • Срок жизни объявления по умолчанию в RFC 1256 — 1 800 секунд. Если обновление не пришло, хост может ждать столько, прежде чем забыть динамически обнаруженный маршрутизатор; это не обещание переключения за полчаса.
  • RFC прямо говорит: при интервале объявлений по умолчанию в 7,5–10 минут обнаружить чёрную дыру на первом переходе до тайм-аута транспортного сеанса не удастся. Обнаружение отказа шлюза — отдельная функция хоста, описанная в RFC 1122.

При отказе шлюза тревожит не только сам момент отказа. Важно и то, как долго хост продолжает считать адрес действующим выходом, хотя маршрутизатор уже может не пересылать пакеты.

В сентябре 1991 года RFC 1256 предложила хостам способ находить соседние маршрутизаторы без ручного списка адресов и без привязки к конкретному протоколу маршрутизации. Маршрутизаторы рассылали ICMP-объявления; при запуске интерфейса хост мог отправить несколько запросов. Так становилось известно, кто объявляет себя соседним маршрутизатором. Самый показательный выбор проекта — как долго этому объявлению полагалось оставаться убедительным.

Значения по умолчанию намеренно сдержанные. Максимальный интервал объявления — 600 секунд, минимальный — 75% от него, то есть 450 секунд. Следующий интервал выбирается случайно в этом диапазоне, поэтому обычные объявления приходят примерно раз в 7,5–10 минут и не синхронизируются. Срок жизни по умолчанию равен трём максимальным интервалам: 1 800 секунд, или полчаса.

Этот срок можно понимать как аренду локального состояния. Получив корректное объявление соседнего маршрутизатора, хост добавляет его адрес в список шлюзов по умолчанию и запускает таймер на объявленный срок. Новое объявление обновляет таймер. После истечения срока динамически изученная запись удаляется. Статически заданная запись устроена иначе: сама конфигурация не снабжает её таким таймером.

Фразу «тридцать минут» легко принять за срок переключения. RFC прямо предостерегает от этого. Низкая частота объявлений и долгий срок жизни позволяют уменьшить нагрузку на канал и хосты даже при большом числе маршрутизаторов. Но стандартные значения не позволяют обнаружить чёрную дыру на первом переходе до завершения транспортного сеанса. Администратор может задать меньшие интервалы; текст не утверждает, что так поступают повсеместно.

Обнаружить присутствие маршрутизатора — не то же самое, что проверить его доступность сейчас. Объявление сообщает, что адрес предлагается как соседний маршрутизатор и без обновления может считаться действительным до указанного срока. Оно не проверяет, пройдёт ли следующий пакет к конкретному адресу назначения. RFC 1256 не является протоколом маршрутизации и не выбирает лучший путь для каждого назначения. ICMP Redirect решает иную задачу: сообщает о лучшем первом переходе для трафика, уже отправленного через маршрутизатор.

RFC 1122 описывает вторую часть: IP-уровень должен обнаружить отказ шлюза следующего перехода и выбрать другой. В 1989 году документ признавал, что полностью удовлетворительного общего алгоритма ещё нет. Постоянный ping запретили как дорогой и плохо масштабируемый подход. Вместо него уровни выше и ниже IP могут передавать подсказки: TCP-подтверждение служит положительным свидетельством, а повторные передачи без успеха или сигнал канального уровня — отрицательным. Таймер RFC 1256 не должен был подменять такую оценку.

Запрос при старте помогает быстрее получить первоначальную информацию, но не служит постоянным сигналом жизни. Хост может послать не более трёх запросов с интервалом в три секунды и обязан остановиться после корректного объявления. Дальше список обновляется периодическими объявлениями. Молчание со временем удаляет запись, но само по себе не указывает, когда путь перестал работать.

Поэтому эта история не о получасовом отказе, а о разделении двух видов свидетельств. Router Discovery сокращает ручную настройку и хранит ограниченную по времени память о маршрутизаторах, заявивших о себе. Обнаружение отказа шлюза должно оценивать текущее пересылание, трафик и сигналы других уровней. Если считать срок удаления обещанием восстановления, эти задачи смешиваются, а RFC приписывается гарантия, которую она прямо не даёт.

Источники — RFC 1256 и раздел 3.3.1.4 RFC 1122. Они устанавливают значения и проектные ограничения, а не скорость восстановления конкретной ОС, сети или пользователя после реального отказа.