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