- Состояние 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.
- RFC: 4271
- Оригинал: A Border Gateway Protocol 4
- Предыдущие версии: RFC 1654, RFC 1771
- Категория: Проект стандарта
- Дата публикации:
- Авторы: Yakov Rekhter , Tony Li , Susan Hares
- Перевод: Николай Малых
RFC 4271, Страница 39 из 65
Страница 39 из 65
2007 - 2022 © Русские переводы RFC, IETF, ISOC.