Кратко

  • Участник BGP слушает TCP 179 и сам инициирует соединение. При одновременном старте две полноценные TCP-сессии могут представлять одно соседство; RFC 4271 требует закрыть одну.
  • Сохраняется соединение, начатое участником с большим BGP Identifier. Если у внешних соседей значения равны, RFC 6286 использует больший номер AS.
  • Это детерминированная сортировка, а не аутентификация. Нужны уникальные стабильные значения, защита транспорта и канарейка, предсказывающая победивший сокет.

После обслуживания A открывает TCP к B, а B — к A. Обе попытки доходят до удалённого listener. Короткое время существуют две зеркальные четвёрки адресов и портов, два пространства TCP, два BGP FSM и два OPEN.

Это не simultaneous open TCP, где перекрёстные SYN сходятся в одной связи. Здесь уже завершены две независимые TCP-сессии. BGP не может объединить их таймеры, переговоры и историю; сохранить обе означает дать одному соседству две версии истины.

Общий выбор вместо гонки задержек

RFC 4271 определяет коллизию, когда источник и назначение одной связи обратны другой для тех же участников. OPEN раскрывает удалённый BGP Identifier и позволяет связать FSM.

Значения сравниваются как беззнаковые четырёхоктетные числа. Остаётся соединение, инициированное владельцем большего значения. Если локальное меньше, система закрывает существующий OpenConfirm и принимает начатое удалённой стороной; иначе закрывает новое.

«Новое» и «существующее» зависят от точки наблюдения, но единое сравнение приводит оба конца к одному транспорту. Большое число не означает более высокий статус; это лишь ключ, не позволяющий задержке решать судьбу сессии.

RFC 4486 выделяет Cease 7 Connection Collision Resolution. Код объясняет закрытие, но доказательство обязано проследить оставшуюся четвёрку через OPEN, KEEPALIVE и обмен маршрутами.

Не всякая параллельность — коллизия

Между теми же маршрутизаторами допустимы разные настроенные соседства с разными адресными парами. Loopback-сессия и интерфейсная могут быть самостоятельными объектами политики. Группировка лишь по ASN уничтожит резервирование; разделение лишь по временному порту не увидит коллизию.

Инвентарь связывает локальный и удалённый адрес, routing instance и peer policy. Active и passive — временные роли TCP. После Established смысл BGP не зависит от того, чья сторона использовала порт 179.

RFC 6286 отделил Identifier от IPv4

RFC 6286 определяет ненулевое четырёхоктетное число, уникальное внутри AS, без требования быть действительным IPv4 unicast. Старые значения остаются пригодными.

Разные AS могут иметь одинаковые значения. При внешней коллизии с равенством сохраняется соединение, начатое участником с большим номером AS. Внутри AS равенство нарушает уникальность; вся конфедерация считается одной AS. Внешнее равенство безопасно только после подтверждения поддержки обновления обеими сторонами.

Малое значение участвует в большом числе состояний

Identifier используется также в агрегации, Route Reflection и отдельных поздних сравнениях. Его изменение способно перезапустить сессии и изменить отражённую идентичность и диагностику.

FRRouting документирует bgp router-id и предупреждает, что без сведений об интерфейсах автоматическое значение может остаться недопустимым 0.0.0.0. BIRD также требует ненулевого уникального значения, но выбирает иначе. Поэтому фактическое значение фиксируют по процессу и VRF.

Клоны, замены и поздние интерфейсы создают дубликаты или изменения. Запись включает AS, instance, конфигурацию, значение из OPEN, источник назначения, область уникальности и срок жизни.

Детерминированная очистка тоже может колебаться

Одна коллизия бывает нормальной: появляются два сокета, один закрывается, второй достигает Established. Считать каждый Cease отказом — ложная тревога. Но наблюдать только итог — значит скрыть повторение.

Нестабильный Identifier, firewall против ожидаемого победителя, разные настройки или повторный запуск автоматикой создают цикл: две связи, удаление, отказ победителя, новая попытка. Каждый оборот способен отзывать маршруты и расходовать CPU, журналы и TCP-state.

Правило гарантирует согласие о том, кто должен жить, но не прохождение firewall, ключа или KEEPALIVE. Телеметрия объединяет два сокета и два OPEN в одно событие и сигнализирует о повторении, отказе победителя и churn.

Порядок не является удостоверением личности

Identifier в OPEN — заявление, не криптографическая личность. RFC 4272 описывает ограниченную атаку: сторона, способная вовремя завершить нужный TCP/BGP обмен и выбрать выигрышное значение, может вытеснить законное соединение. Произвольного OPEN недостаточно; последовательности, время, допуск и аутентификация остаются барьерами.

RFC 2385 задаёт TCP MD5, RFC 5925 — TCP-AO. Они защищают сегменты настроенными ключами, но не проверяют UPDATE и не препятствуют легальному соседу дублировать Identifier. Адресное покрытие ключа, владелец, ротация и тревоги должны меняться согласованно.

Канарейка заранее называет победителя

Сначала документируется ровно одно соседство: адреса, AS, Identifiers и ключи, исключая намеренную параллельную сессию. Затем обе стороны одновременно инициируют в ограниченной среде, фиксируя SYN, четвёрки, OPEN и FSM.

До наблюдения победитель вычисляется по Identifier или, для совместимого внешнего равенства, по AS. Записываются Cease 7, закрытие, удаление FSM и retry. Предсказанная связь должна стать Established.

После проверяются импорт и экспорт, отсутствие дублей и необъяснимых отзывов, FIB и пакеты при заявлении непрерывности. Откат восстанавливает известное уникальное значение, ключи и одну адресную пару; многократный clear не является процедурой.