Кратко

  • RFC 1058 считала метрики RIP от 1 до 15 допустимыми, а 16 обозначало недостижимость. Более длинный путь нельзя было объявить действующим маршрутом.
  • Низкое значение «бесконечности» ограничивало счёт до бесконечности, но не гарантировало быстрой сходимости. В RFC описаны и другие способы сдерживать петли — с их ограничениями.

Маршрут может оказаться слишком длинным, чтобы существовать

Шлюз узнаёт, что сеть исчезла. Соседний шлюз всё ещё сообщает маршрут, который сам узнал от первого. Каждый может принять объявление другого за подтверждение того, что путь остался. Узла назначения уже нет, а старые сведения продолжают жить в таблицах.

В спецификации 1988 года точку остановки намеренно поставили близко. Согласно RFC 1058, метрики от 1 до 15 обозначали доступный путь, а 16 — недостижимый. Это не бесконечное расстояние в буквальном смысле, а граница между маршрутом, который протокол может объявить, и тем, который должен отозвать.

Отсюда прямое ограничение: RIP не мог представить как действительный путь с метрикой выше 15. В записке Хедрика протокол предназначен для сетей умеренного размера; там же отмечено мнение разработчиков, что для сетей с диаметром свыше 15 он вряд ли практичен. Низкий порог одновременно сокращал число шагов, на которых устаревшая информация могла продолжать счёт.

Граница ограничивает сбой, но не отменяет его

RFC 1058 не выдаёт число 16 за полное решение. В документе счёт до бесконечности рассматривается как проблема сходимости; также описаны split horizon, poisoned reverse и запускаемые обновления. Но гонки остаются возможны: обновление может опоздать, и остаток ошибочного маршрута продолжит распространяться. RFC прямо признаёт, что счёт до бесконечности всё ещё может происходить.

То, что ошибка когда-нибудь завершится, не делает промежуток до этого безопасным. Пока шлюзы увеличивают метрику, они могут пересылать пакеты по ложному пути. Значение 16 показывает, когда плоскость управления перестаёт считать маршрут пригодным; оно не доказывает, что все предыдущие пакеты шли по рабочему пути.

RFC 2453 сохранила 16 как бесконечность и для второй версии RIP, а также описала ограничения и петли протокола. RFC 1812 рассматривает RIP среди исторических протоколов маршрутизации. Подробная спецификация механизма ещё не делает его универсальным выбором.

Размер сети был частью замысла

Число 16 легко принять за произвольную старую константу. В RFC есть более содержательное объяснение: бесконечность должна быть небольшой, чтобы не растягивать счёт после отказа, но не настолько малой, чтобы исключать обычные пути. Это компромисс между диаметром сети и временем восстановления, когда сохраняются неверные сведения.

Поэтому значение было эксплуатационным допущением, а не просто полем в пакете. Выбирая RIP, оператор принимал и предел топологии. Когда сеть перерастала его, настройка таймеров не превращала маршрут с метрикой 16 в допустимый. Протокол достиг границы того, что мог выразить.

Ограниченное значение сдерживает распространение сбоя, объявляя часть возможных состояний недопустимой. Кто платит за такое решение: механизм сходимости, оператор, которому надо менять сеть, или пользователи, чьи пути больше нельзя представить? В 1988 году RIP делал эту развилку наглядной. На отметке 16 его карта переставала утверждать, что знает дорогу.

Первичные документы: RFC 1058; RFC 2453; RFC 1812.