RFC: 4271
Оригинал: A Border Gateway Protocol 4
Предыдущие версии: RFC 1654, RFC 1771
Категория: Проект стандарта
Дата публикации:
Авторы: , ,
Перевод: Николай Малых

RFC 4271, Страница 40 из 65

  • Состояние OpenSent
  • В этом состоянии BGP FSM ожидает сообщения OPEN от партнера.

    Стартовые события (1, 3-7) игнорируются в состоянии OpenSent.

    Если в состоянии OpenSent происходит событие ManualStop (2), локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Cease;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • устанавливать ConnectRetryCounter = 0;
    • переходить в состояние Idle.

    Если в состоянии OpenSent происходит событие AutomaticStop (8), локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Cease;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.

    В ответ на событие HoldTimer_Expires (10) локальная система будет:

    • передавать сообщение NOTIFICATION с кодом ошибки Hold Timer Expired;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.

    События TcpConnection_Valid (14), Tcp_CR_Acked (16) или TcpConnectionConfirmed (17) говорят о том, что может иметь место попытка организации второго соединения TCP. Это второе соединение находится под контролем системы обработки конфликтов при соединениях (параграф 6.8), пока не будет принято сообщение OPEN.

    Запросы соединений TCP через некорректный порт (Tcp_CR_Invalid — Событие 15)) игнорируются.

    При получении информации о событии TcpConnectionFails (18) локальная система будет:

    • закрывать соединение BGP;
    • заново запускать таймер ConnectRetryTimer;
    • продолжать прослушивание порта на предмет вызовов от удаленных узлов BGP;
    • переходить в состояние Active.

    При получении сообщения OPEN проверяется корректность всех полей этого сообщения. Если сообщение OPEN не содержит ошибок (Событие 19), локальная система будет:

    • сбрасывать в 0 таймер DelayOpenTimer;
    • устанавливать для таймера ConnectRetryTimer значение 0;
    • передавать сообщение KEEPALIVE;
    • устанавливать значение таймера KeepaliveTimer (см. ниже);
    • устанавливать для таймера HoldTimer согласованное значение (см. параграф 4.2);
    • переходить в состояние OpenConfirm.

    Если согласованное время удержания равно 0, таймеры HoldTimer и KeepaliveTimer не запускаются. Если значение поля My Autonomous System совпадает с номером локальной AS, соединение трактуется как внутреннее, в противном случае относится к числу внешних (это будет оказывать влияние на описанную ниже обработку сообщений UPDATE).

    Если обнаружены ошибки при проверке заголовка BGP (Событие 21) или сообщения OPEN (Событие 22) (см. параграф 6.2), локальная система будет:

    • передавать сообщение NOTIFICATION с соответствующим кодом ошибки;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.

    При получении корректного сообщения BGP OPEN (Событие 19 или 20) требуется применять механизм детектирования конфликтов (параграф 6.8).

    Событие CollisionDetectDump происходит, когда реализация BGP определяет наличие конфликта при соединении (рассмотрение этих механизмов выходит за пределы данного документа).

    Если в состоянии OpenSent возникает необходимость закрыть соединение, машине состояний передается сигнал OpenCollisionDump (Событие 23). При получении такого события в состоянии OpenSent локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Cease;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.

    Если получено сообщение NOTIFICATION с кодом ошибки несоответствия версий (Событие 24), локальная система будет:

    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • переходить в состояние Idle.

    В ответ на любое другой событие (9, 11-13, 20, 25-28) локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Finite State Machine Error;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.

Страница 40 из 65

2007 - 2022 © Русские переводы RFC, IETF, ISOC.