8. BGP 有限状态机 (FSM)
8. BGP 有限状态机 (FSM) (BGP Finite State Machine)
本文档描述的 data structure 和 FSM 是概念性的, 只要 implementation 支持所描述的 functionality 并表现出严格相同的 externally visible behavior, 就不必完全按此处描述的方式实现.
本节规定 BGP 与 TCP transport 的交互. BGP Listener SHOULD 依赖 TCP state machine 处理 incoming TCP connection request, 并且 SHOULD NOT 处理 TCP UDP pseudo-header checksum 或 TCP sequence number. 特定 BGP implementation (例如带有 "PassiveTcpEstablishment" option 的 implementation) MAY 与 TCP state machine 交互, 以确定 connection 的有效性或身份; 这种交互不在本文档范围内.
FSM event 和 action 是针对支持下一节中描述的所有 capability (option) 的 BGP implementation 说明的. mandatory BGP function 的逻辑不会因为包含 optional function 而改变. 如果特定 option 未被 "set" 或 enabled, 则此 FSM 支持 Mandatory BGP function.
例如, FSM 描述了 DelayOpenTimer, 它是 optional "Graceful" connection start (DelayOpen) 的一部分. 如果此 option 未被 "set" 或不受支持, 则不会设置 timer, 与该 timer 关联的 event 也不会发生. option "not set" 的逻辑路径就是标准 BGP connection logic.
以下 Section (8.2.1.3) 描述如何基于 optional session attribute 启用 FSM transition.
Optional Session attribute 如下所列. 这些 optional attribute 可以按每条 connection 或每个 local system 支持:
- AcceptConnectionsUnconfiguredPeers
- AllowAutomaticStart
- AllowAutomaticStop
- CollisionDetectEstablishedState
- DampPeerOscillations
- DelayOpen
- DelayOpenTime
- DelayOpenTimer
- IdleHoldTime
- IdleHoldTimer
- PassiveTcpEstablishment
- SendNOTIFICATIONwithoutOPEN
- TrackTcpState
optional session attribute 支持 BGP functionality 的不同 feature, 这些 feature 会影响 BGP FSM state transition. 与 timer 相关的两组 attribute 是:
- group 1: DelayOpen, DelayOpenTime, DelayOpenTimer
- group 2: DampPeerOscillations, IdleHoldTime, IdleHoldTimer
第一个 parameter (DelayOpen, DampPeerOscillations) 是 optional attribute, 表示 Timer function 处于 active. "Time" value 指定 "Timer" 的 initial value (DelayOpenTime, IdleHoldTime). "Timer" 指定实际的 timer.
请参阅 Section 8.1.1, 了解这些 optional attribute 与发给 state machine 的 event 之间的交互. Section 8.2.1.3 也简要概述了不同类型的 optional attribute (flag 或 timer).