Кратко

  • OSPFv2 линейно упорядочивает экземпляры одной LSA как знаковые 32-битные числа от 0x80000001 до 0x7fffffff; прямой переход к началу проиграл бы любой сохранившейся старой максимальной копии.
  • Источник сначала распространяет максимальный экземпляр с MaxAge, ждёт подтверждений и безопасного удаления, а затем создаёт начальный номер как первый элемент другой эпохи.

Сначала пространство напоминало леденец

Первая опубликованная спецификация OSPF нарисовала необычное пространство последовательностей. В RFC 1131, вышедшей в октябре 1989 года, прямая стартовая ножка входила в кольцо. Такая форма леденца должна была помочь новой инкарнации маршрутизатора обогнать остатки прежней и позволить долго работающему процессу продолжать выпуск версий по кругу.

OSPF версии 2 отказался от кольца. RFC 1247 в июле 1991 года назвала lollipop-пространство одной из исправленных проблем первой версии. Номера стали сравниваться как знаковые 32-битные целые. Значение 0x80000000 зарезервировали, 0x80000001 стало самым старым допустимым, а 0x7fffffff — самым новым.

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

Циклический переход отдал бы преимущество прошлому

Идентичность LSA составляют LS type, Link State ID и Advertising Router. Последовательность не является часами всей LSDB; она упорядочивает только версии с этой общей идентичностью.

Если источник после 0x7fffffff отправит 0x80000001, сосед с сохранённым максимумом обязан отвергнуть новый экземпляр. В линейном порядке старое содержимое действительно выше. Исправно работающий flooding будет защищать прошлое от задуманного обновления.

Молчание не доказывает очистку. Копия может храниться в базе соседа, ожидать в списке повторной передачи или вернуться во время синхронизации. LS age растёт, но это не общие настенные часы, способные подтвердить забывание во всём домене.

Поэтому OSPFv2 не стал усложнять круговое сравнение. Между поколениями появился явный отзыв.

Максимум переносил собственный приказ об удалении

Когда нужно увеличить LSA, уже достигшую MaxSequenceNumber, RFC 2328 требует от источника поставить текущему максимальному экземпляру LS age равный MaxAge и снова распространить его. Намеренное старение до естественного срока называется premature aging.

Полномочие следует за авторством. Маршрутизатор может преждевременно состарить свою LSA, но не объявление другого Advertising Router. Идентичность, максимальная последовательность и checksum содержимого сохраняются; меняется age. Возраст исключён из checksum, потому что растёт при передаче и хранении.

MaxAge здесь — активный отзыв, а не просто очень старое сообщение. Если последовательность и checksum совпадают, экземпляр MaxAge считается новее живого двойника. Он может вытеснить положительную копию, не дожидаясь её естественного часового срока.

Отзыв остаётся узким. Он удаляет экземпляр LSA из состояния OSPF и не доказывает физический обрыв, смерть маршрутизатора или отсутствие любого пути к назначению.

Для забывания требовались квитанции

Полученная MaxAge-LSA не удаляется немедленно. Она остаётся, пока числится в Link State Retransmission List хотя бы одного соседа. Её также сохраняют, если сосед находится в Exchange или Loading: незавершённая синхронизация ещё способна вернуть старую эпоху.

При исчерпании последовательности источник ждёт подтверждения от всех смежных соседей. Лишь когда максимальный экземпляр можно безопасно убрать, та же идентичность создаётся с InitialSequenceNumber.

Теперь падение числа имеет смысл. Малое значение не соревнуется с большим внутри одного поколения. Старое поколение было отозвано, прошло через смежности и вышло из текущей синхронизации; начальное значение открывает другое.

RFC 1247 изменила и обработку Database Description, чтобы LSA не исчезала, пока сосед ещё может узнавать её старое состояние. OSPF не обещает одновременный глобальный commit. Он собирает достаточно свидетельств на каждой важной границе, чтобы эпохи не разминулись незаметно.

После перезапуска сосед возвращал маршрутизатору его прошлое

Естественно израсходовать 32 бита трудно. Потерять оперативное состояние при рестарте легче. Сосед может сохранить само-originated LSA, выпущенную до остановки, с номером намного выше вновь начального. По правилам эта удалённая копия действительно новее.

RFC 2328 заставляет автора считаться с внешней памятью. Если он всё ещё должен создавать LSA, то выпускает экземпляр на единицу выше полученного. Если больше не должен, задаёт идентичности MaxAge и распространяет отзыв. Если вернувшаяся копия уже максимальна, сначала выполняется flush, а затем начало.

Реакцию часто называют LSA fight-back, но название само по себе не означает атаку. Честный сосед мог просто помнить дольше, чем перезапущенный автор. Роль Advertising Router даёт право обновить и отозвать; сохранённое доменом доказательство определяет, какой номер автор обязан превзойти.

Новизну решали три признака

Сначала сравнивается последовательность. При равенстве выигрывает больший checksum как беззнаковое число. Если равны оба, решение могут дать MaxAge и предусмотренная разница возрастов; достаточно близкие ages описывают один экземпляр.

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

Ни одно поле не является глобальной датой. Сравнение чисел разных LSA приписало бы им полномочие, которого протокол не определял.

DoNotAge сократил refresh, но не отменил отзыв

Обычный OSPFv2 обновляет само-originated LSA каждые 30 минут, прежде чем она естественно достигнет часового MaxAge. Даже стабильность расходует flooding и номера. Для demand circuits RFC 1793 ввела DoNotAge, а RFC 4136 расширила сокращение refresh в стабильных топологиях.

DoNotAge убирает периодическое переиздание без изменения содержимого. Он не отменяет новую генерацию при изменении и отзыв MaxAge. Экономия трафика не передаёт авторство и не делает LSA неотзывной.

RFC 5340 сохранила основную логику flooding и новизны в OSPFv3 для IPv6, хотя форматы и области действия изменились. Конфликт создаёт распределённая память, а не размер адреса.

Другие последовательности принадлежали другим механизмам

Пакеты Database Description имеют свой порядок при синхронизации соседей. Криптографически защищённые пакеты могут нести anti-replay sequence. RFC 6863 отделяет эту защиту пакетов от номера внутри LSA.

Последовательность LSA отвечает, какая версия утверждения о маршрутизации должна победить. Аутентификационная последовательность помогает понять, повторён ли старый защищённый пакет в контексте ключа. Владельцы, сроки жизни и rollover различны. Общий сигнал скрыл бы отказавший автомат.

Исчезновение и было протокольным действием

OSPF не увеличил счётчик и не положился на естественное забывание. Максимальный экземпляр понёс собственный отзыв. Подтверждения, повторные передачи и состояния синхронизации показали, когда старая эпоха перестала циркулировать. Только тогда минимальное разрешённое число снова стало означать «новое».

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

Источники и границы доказательств

Стандарты устанавливают механизм и его развитие, но не частоту исчерпания сегодня, настройки производителей или причину конкретной аварии. MaxAge отзывает LSA внутри OSPF, а не доказывает глобальный отказ. Исправление само-originated LSA после перезапуска само по себе также не свидетельствует о враждебной инъекции.