跳到主要内容

8. BGP 有限状态机 (FSM)

8. BGP 有限状态机 (FSM) (BGP Finite State Machine)​

本文档描述的数据结构 (data structure) 和 FSM 是概念性的, 只要实现支持所描述的功能 (functionality) 并表现出严格相同的对外可见行为 (externally visible behavior), 就不必完全按此处描述的方式实现.

本节规定 BGP 与 TCP 传输 (transport) 的交互. BGP 侦听器 (Listener) SHOULD 依赖 TCP 状态机 (state machine) 处理传入的 TCP 连接请求, 并且 SHOULD NOT 处理 TCP UDP 伪报头校验和 (pseudo-header checksum) 或 TCP 序列号 (sequence number). 特定 BGP 实现 (例如带有 "PassiveTcpEstablishment" 选项的实现) MAY 与 TCP 状态机交互, 以确定连接的有效性或身份; 这种交互不在本文档范围内.

FSM 事件 (event) 和动作 (action) 是针对支持下一节中描述的所有能力 (capability, option) 的 BGP 实现说明的. 强制 BGP 功能 (mandatory BGP function) 的逻辑不会因为包含可选功能 (optional function) 而改变. 如果特定选项未被 "set" 或启用 (enabled), 则此 FSM 支持强制 BGP 功能.

例如, FSM 描述了 DelayOpenTimer, 它是可选的 "优雅 (Graceful)" 连接启动 (DelayOpen) 的一部分. 如果此选项未被 "set" 或不受支持, 则不会设置定时器, 与该定时器关联的事件也不会发生. 选项 "not set" 的逻辑路径就是标准 BGP 连接逻辑 (connection logic).

以下小节 (8.2.1.3) 描述如何基于可选会话属性 (optional session attribute) 启用 FSM 转换 (transition).

可选会话属性如下所列. 这些可选属性可以按每条连接或每个本地系统支持:

  1. AcceptConnectionsUnconfiguredPeers
  2. AllowAutomaticStart
  3. AllowAutomaticStop
  4. CollisionDetectEstablishedState
  5. DampPeerOscillations
  6. DelayOpen
  7. DelayOpenTime
  8. DelayOpenTimer
  9. IdleHoldTime
  10. IdleHoldTimer
  11. PassiveTcpEstablishment
  12. SendNOTIFICATIONwithoutOPEN
  13. TrackTcpState

可选会话属性支持 BGP 功能的不同特性 (feature), 这些特性会影响 BGP FSM 状态转换 (state transition). 与定时器相关的两组属性是:

  • 组 1 (group 1): DelayOpen, DelayOpenTime, DelayOpenTimer
  • 组 2 (group 2): DampPeerOscillations, IdleHoldTime, IdleHoldTimer

第一个参数 (DelayOpen, DampPeerOscillations) 是可选属性, 表示定时器功能 (Timer function) 处于活动 (active) 状态. "Time" 值 (value) 指定 "Timer" 的初始值 (initial value) (DelayOpenTime, IdleHoldTime). "Timer" 指定实际的定时器.

请参阅 8.1.1 节, 了解这些可选属性与发给状态机的事件之间的交互. 8.2.1.3 节也简要概述了不同类型的可选属性 (标志 flag 或定时器).