RFC: 4271
Оригинал: A Border Gateway Protocol 4
Предыдущие версии: RFC 1654, RFC 1771
Категория: Проект стандарта
Дата публикации:
Авторы: , ,
Перевод: Николай Малых
  • Состояние Connect
  • В этом состоянии BGP FSM ожидает завершения процесса организации соединения TCP. Стартовые события (1, 3-7) игнорируются в состоянии Connect. В ответ на событие ManualStop (Событие 2) локальная система будет:

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

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

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

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

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

    Если BGP FSM получает информацию о событии TcpConnection_Valid (14), обрабатывается соединение TCP и сохраняется состояние Connect.

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

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

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

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

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

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

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

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

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

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

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

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

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

      в противном случае (начальное значение HoldTimer равно 0)

      • сбрасывается таймер KeepaliveTimer;
      • таймер HoldTimer сбрасывается в 0,
    • система переходит в состояние 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;
    • если таймер DelayOpenTimer, — останавливать и сбрасывать его в 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.
2007 - 2017 © Русские переводы RFC, IETF, ISOC.