RFC: 4271
Оригинал: A Border Gateway Protocol 4
Предыдущие версии: RFC 1654, RFC 1771
Категория: Проект стандарта
Дата публикации:
Авторы: , ,
Перевод: Николай Малых
  • Состояние OpenConfirm
  • В этом состоянии BGP FSM ожидает приема сообщения KEEPALIVE или NOTIFICATION.

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

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

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

    В ответ на событие AutomaticStop (8), инициированное системой, локальная система будет:

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

    Если событие HoldTimer_Expires (Событие 10) происходит до получения сообщения KEEPALIVE, локальная система будет:

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

    Если локальная система получает сигнал KeepaliveTimer_Expires (Событие 11), она будет:

    • передавать сообщение KEEPALIVE;
    • заново запускать таймер KeepaliveTimer;
    • сохранять состояние OpenConfirmed.

    Событие TcpConnection_Valid (14) или успешная организация соединения TCP (Событие 16 или 17) в состоянии OpenConfirm требуют от локальной системы проверки отсутствия второго соединения (с тем же партнером).

    При попытке организации соединения TCP через некорректный порт (Событие 15) локальная система будет игнорировать вторую попытку организации соединения.

    Если локальная система получает сигнал TcpConnectionFails (Событие 18) от нижележащего уровня TCP или сообщение NOTIFICATION (Событие 25), она будет:

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

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

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

    Если локальная система получает корректное сообщение OPEN (BGPOpen — Событие 19), выполняется процесс детектирования конфликтов, описанный в параграфе 6.8. Если в результате данное соединение будет разрываться, локальная система будет:

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

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

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

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

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

    При получении сообщения KEEPALIVE (KeepAliveMsg — Событие 26) локальная система будет:

    • заново запускать таймер HoldTimer;
    • переходить в состояние Established.

    В ответ на все остальные события (9, 12-13, 20, 27-28) локальная система будет:

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