8. Машина конечных состояний BGP
Структуры данных и FSM, описанные в данном документе, являются концептуальными моделями и не реализуются в точном соответствии с приведенными описаниями. Если реализация поддерживает описанную функциональность, она будет демонстрировать соответствующее описанному здесь поведение.
В этой главе описывается работа BGP в терминах машины конечных состояний (FSM). Глава разбита на две части:
- Описание событий для машины состояний (параграф 8.1)
- Описание FSM (параграф 8.2)
Обязательными атрибутами каждого соединения являются:
- State — состояние;
- ConnectRetryCounter — счетчик числа попыток организации соединения;
- ConnectRetryTimer — таймер повторов для соединения;
- ConnectRetryTime — время ожидания для повтора;
- HoldTimer — таймер удержания;
- HoldTime — время удержания;
- KeepaliveTimer — таймер сохранения;
- KeepaliveTime — время сохранения.
Атрибуты состояния сессии показывают текущее состояние BGP FSM. Счетчик ConnectRetryCounter показывает число попыток узла BGP организовать соединение с партнером.
Обязательные атрибуты, связанные с таймерами, описаны в главе 10. Для каждого таймера существуют значения "timer" и "time" (начальное значение).
Ниже перечислены дополнительные атрибуты сессий. Эти атрибуты могут поддерживаться для соединений или для локальной системы в целом:
- AcceptConnectionsUnconfiguredPeers
- AllowAutomaticStart
- AllowAutomaticStop
- CollisionDetectEstablishedState
- DampPeerOscillations
- DelayOpen
- DelayOpenTime
- DelayOpenTimer
- IdleHoldTime
- IdleHoldTimer
- PassiveTcpEstablishment
- SendNOTIFICATIONwithoutOPEN
- TrackTcpState
Дополнительные атрибуты сессий определяют различные параметры BGP, оказывающие влияние на смену состояний BGP FSM. Две группы атрибутов, связанных с таймерами, включают:
- Группа 1: DelayOpen, DelayOpenTime, DelayOpenTimer
- Группа 2: DampPeerOscillations, IdleHoldTime, IdleHoldTimer
Первый параметр (DelayOpen, DampPeerOscillations) является дополнительным атрибутом, который показывает, что функция Timer активна. Значение "Time" указывает начальное состояние таймера (DelayOpenTime, IdleHoldTime). "Timer" задает реальный таймер.
Описание взаимодействия между дополнительными атрибутами и состояниями, передаваемыми FSM, приведено в параграфе 8.1.1. Параграф 8.2.1.3 содержит краткий обзор двух различных типов дополнительных атрибутов (флаги и таймеры).