Кратко

  • RFC 3478 сохраняла записи пересылки MPLS и привязки label-FEC как устаревшее состояние, пока LDP заново строил их управляющий смысл.
  • Таймеры reconnect, liveness, recovery и holding вместе с запретом раннего повторного использования делали непрерывность ограниченным займом, а не доказательством восстановления.

«Плавный перезапуск» звучит как обещание вернуться без следа. RFC 3478 описывала более осторожную сделку: компонент LDP плоскости управления мог перезапуститься и заново выучить состояние, а плоскость пересылки продолжала применять правила, установленные до сбоя. Пакеты жили дольше объяснения своего пути.

Предположение о сохранении было минимальным. LSR не обязан был сохранять всё состояние LDP, достаточно фактической пересылки MPLS: входная метка к выходной метке и следующему переходу, либо на входе FEC к выходной метке и переходу. Это не нарушало LSP сразу, но не подтверждало, что управление знает смысл каждой метки.

После запуска сохранённые записи отмечались stale. Новый Label Mapping мог подтвердить их совпадением выходной метки и next hop, полученного от соседа. Implicit NULL, penultimate hop и egress требовали дополнительных условий для pop и FEC. Только восстановленное протокольное свидетельство снимало отметку.

Альтернативная процедура допускала две локальные привязки для одной FEC: старую сохранённую и новую созданную. Они имели одинаковые выходную метку и next hop, а старая позже удалялась. Непрерывность не означала единственную управляющую истину в каждый момент.

Сделкой управляло время. FT Session TLV в Initialization содержал FT Reconnect Timeout и Recovery Time. Первый сообщал, сколько отправитель просил соседа хранить старое состояние после потери связи. Второй — сколько перезапущенный LSR готов сохранять реально уцелевшую пересылку.

Ноль был точным. Нулевой FT Reconnect Timeout означал, что отправитель не сохранит собственную пересылку, хотя мог помочь соседу. Нулевой Recovery Time означал, что старого состояния нет. Сосед должен был удалить stale-привязки, а не ждать бесконечно.

Локальная политика сокращала удалённое обещание. До повторного соединения состояние жило меньшее из FT Reconnect Timeout и Neighbor Liveness Timer. После соединения с ненулевым Recovery Time — меньшее из него и Maximum Recovery Time. На самом перезапущенном LSR MPLS Forwarding State Holding timer удалял всё, что оставалось stale.

Это были часы разных владельцев. Сосед просил время, оператор ограничивал доверие, машина ограничивала собственные остатки. Реальное окно было пересечением, а не самым большим объявленным числом.

RFC рекомендовала завершить обмен mappings в первой половине Recovery Time. Но восстановление TCP/LDP-сессии не доказывало полноту LIB. В исходном протоколе не было явной отметки окончания. RFC 5919 позже добавила End-of-LIB Notification. Это показывает пробел свидетельства, но не делает позднее поле частью договора 2003 года.

Карантин меток защищал значение. Если downstream освобождал число и назначал ему новый смысл, пока upstream посылал по старому, пакеты могли попасть не туда. Поэтому освобождённую метку нельзя было повторно использовать для graceful-restart соседа как минимум FT Reconnect Timeout плюс Recovery Time.

Раздел безопасности показывал атаку на время. Злоумышленник мог подменить Recovery Time на ноль и вызвать освобождение. В другом направлении слишком раннее повторное использование platform-wide label сталкивалось с соседом, сохраняющим старую связь. Аутентификация помогала, но аудит всё равно должен был установить, во что верила каждая сторона и когда.

Непрерывный трафик — узкий документ. Он показывает, что некоторые записи выжили и работали для наблюдавшихся пакетов. Он не доказывает обновление всех FEC, восстановление LIB, сохранение владельца меток, созданных также BGP или RSVP-TE, и безопасность после последнего таймера.

Дисциплина слоёв Heng Lu начинает со старой и новой LDP-сессии, TCP-событий, FT TLV и всех таймеров. Forwarding, LIB и протокольное происхождение учитываются раздельно. Для каждой записи фиксируются stale, обновившие Mapping и адрес, изменение метки, удаление и карантин перед повторным использованием.

Только затем присоединяется трафик. График без потерь не является журналом восстановления. Session-up не равен End-of-LIB. Ненулевой Recovery Time — заявление, не измерение. Работающая запись остаётся stale, пока её не обновит контрольное доказательство.

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

Источники