跳到主要内容

8.2. FSM 描述

8.2. FSM 描述 (Description of FSM)​

8.2.1. FSM 定义 (FSM Definition)​

BGP MUST 为每个已配置的对等体 (configured peer) 维护一个单独的 FSM. 潜在连接 (potential connection) 中配对的每个 BGP 对等体都会尝试连接对方, 除非被配置为保持在空闲状态 (idle state), 或被配置为保持被动 (passive). 为了本讨论, TCP 连接的主动方或连接发起方 (active or connecting side, 发送第一个 TCP SYN 数据包的一侧) 称为 outgoing. 被动方或侦听方 (passive or listening side, 第一个 SYN/ACK 的发送方) 称为 incoming connection. (关于下文使用的 active 和 passive 术语, 见 8.2.1.1 节.)

BGP 实现 MUST 连接到 TCP 端口 179 (TCP port 179), 并且除了尝试连接对等体之外, 还 MUST 在 TCP 端口 179 上侦听 (listen) 以接收传入连接 (incoming connection). 对每条传入连接, MUST 实例化一个状态机 (state machine). 有一段时间内, 传入连接另一端的对等体的身份已知, 但 BGP 标识符尚未知. 在此期间, 同一个已配置对等关系 (configured peering) 可以同时存在一条传入连接和一条外出连接 (outgoing connection). 这称为连接冲突 (connection collision, 见 6.8 节).

BGP 实现最多会为每个已配置的对等关系拥有一个 FSM, 另外为每条对等体尚未识别的传入 TCP 连接拥有一个 FSM. 每个 FSM 正好对应一条 TCP 连接.

如果连接被配置为使用不同的 IP 地址对 (IP address pair), 一对对等体之间可能存在多条连接. 这称为到同一对等体的多个 "已配置对等关系 (configured peering)".

8.2.1.1. 术语 "active" 和 "passive" (Terms "active" and "passive")​

术语 active 和 passive 在互联网运营者 (Internet operator) 的词汇中已使用近十年, 并已证明有用. 当应用于 TCP 连接或对等体时, active 和 passive 这两个词的含义略有不同. 根据上面的定义和下面的状态机, 对于任意一条 TCP 连接, 只有一个主动侧 (active side) 和一个被动侧 (passive side). 当 BGP 系统被配置为 active 时, 它最终可能位于所建立连接的主动侧或被动侧. 一旦 TCP 连接完成, 哪一端曾是 active, 哪一端曾是 passive 就不再重要. 唯一区别在于 TCP 连接的哪一侧拥有端口号 179 (port number 179).

8.2.1.2. FSM 和碰撞检测 (FSM and Collision Detection)​

每条 BGP 连接有一个 FSM. 当连接冲突在确定某条连接关联到哪个对等体之前发生时, 一个对等体可能有两条连接. 连接冲突解决后 (见 6.8 节), SHOULD 处置被关闭连接的 FSM.

8.2.1.3. FSM 和 Optional Session Attribute (FSM and Optional Session Attributes)​

可选会话属性 (Optional Session Attribute) 指定充当标志 (flag, TRUE 或 FALSE) 的属性, 或可选定时器 (optional timer). 对于充当标志的可选属性, 如果可选会话属性可以在系统上设置为 TRUE, 则必须支持对应的 BGP FSM 动作 (action). 例如, 如果 BGP 实现中可以设置以下选项: AutoStart 和 PassiveTcpEstablishment, 则必须支持事件 3, 4 和 5. 如果某个可选会话属性不能设置为 TRUE, 则不必支持支撑该选项集合的事件.

每个可选定时器 (DelayOpenTimer 和 IdleHoldTimer) 都有一组属性:

  • 表示支持的标志 (flag),
  • Timer 中设置的 Time,
  • Timer.

两个可选定时器体现这种格式:

  • DelayOpenTimer: DelayOpen, DelayOpenTime, DelayOpenTimer
  • IdleHoldTimer: DampPeerOscillations, IdleHoldTime, IdleHoldTimer

如果表示支持某个可选定时器的标志 (DelayOpen 或 DampPeerOscillations) 不能设置为 TRUE, 则不必支持支撑该选项的定时器和事件.

8.2.1.4. FSM Event Number (FSM Event Numbers)​

此状态机描述中使用的事件编号 (Event number, 1-28) 有助于规定 BGP 状态机的行为. 实现 MAY 使用这些编号提供网络管理信息 (network management information). FSM 或 FSM 事件的确切形式由每个实现决定.

8.2.1.5. 依赖实现的 FSM Action (FSM Actions that are Implementation Dependent)​

在某些点上, BGP FSM 指定将发生 BGP 初始化 (initialization) 或删除 BGP 资源 (resource). BGP FSM 和关联资源的初始化取决于 BGP 实现的策略 (policy) 部分. 这些动作的细节不在 FSM 文档 (document) 范围内.