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

    Стартовые события (1, 3-7) игнорируются в состоянии Active. В ответ на событие ManualStop (2) локальная система будет:

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

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

    • заново запускать таймер ConnectRetryTimer (с начальным значением);
    • инициировать соединение TCP с другим узлом BGP;
    • продолжать прослушивание входящих вызовов TCP, которые могут приходить от удаленных узлов BGP;
    • переходить в состояние Connect.

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

    • устанавливать ConnectRetryCounter = 0;
    • останавливать и сбрасывать в 0 таймер DelayOpenTimer;
    • завершать инициализацию BGP;
    • передавать удаленному узлу сообщение OPEN;
    • устанавливать большое значение для таймера удержания;
    • переходить в состояние OpenSent.

    Для этого перехода предлагается устанавливать значение HoldTimer равным 4 минутам.

    При получении сведений о событии TcpConnection_Valid (14) локальная система обрабатывает флаги соединения TCP и остается в состоянии Active.

    При получении информации о событии Tcp_CR_Invalid (15) локальная система отвергнет соединение TCP и сохранит состояние Active.

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

    Если DelayOpen = TRUE, локальная система будет:

    • останавливать таймер ConnectRetryTimer и сбрасывать его значение в 0;
    • устанавливать для таймера DelayOpenTimer начальное значение (DelayOpenTime);
    • сохранять состояние Active.

    Если DelayOpen = FALSE, локальная система будет:

    • устанавливать ConnectRetryTimer = 0;
    • завершать инициализацию BGP;
    • передавать удаленному узлу сообщение OPEN;
    • устанавливать большое значение для таймера удержания;
    • переходить в состояние OpenSent.

    Для этого перехода предлагается устанавливать значение HoldTimer равным 4 минутам.

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

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

    Если получено сообщение OPEN и запущен таймер DelayOpenTimer (Событие 20), локальная система будет:

    • останавливать таймер ConnectRetryTimer (если тот запущен) и сбрасывать его значение в 0;
    • останавливать и сбрасывать в 0 таймер DelayOpenTimer;
    • завершать инициализацию BGP;
    • передавать сообщение OPEN;
    • передавать сообщение KEEPALIVE;
    • если значение HoldTimer отлично от 0:

      • запускать таймер KeepaliveTimer с начальным значением;
      • сбрасывать таймер HoldTimer в согласованное значение,

      если HoldTimer = 0

      • сбрасывать таймер KeepaliveTimer (0);
      • сбрасывать в 0 таймер HoldTimer;
    • переходить в состояние OpenConfirm.

    Если в поле AS содержится номер локальной автономной системы, соединение относится к числу внутренних, в противном случае считается внешним.

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

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

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

    • останавливать таймер ConnectRetryTimer (если тот включен) и сбрасывать его значение в 0;
    • останавливать и сбрасывать в 0 таймер DelayOpenTimer;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • переходить в состояние Idle.

    Если таймер DelayOpenTimer не запущен, локальная система будет:

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

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

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