跳到主要内容

4.2. OPEN Message 格式

4.2. OPEN Message 格式 (OPEN Message Format)​

建立 TCP 连接后, 每一端发送的第一条消息是 OPEN 消息. 如果 OPEN 消息可接受, 则会返回一条确认 OPEN 的 KEEPALIVE 消息.

除了固定大小的 BGP header 外, OPEN message 还包含以下字段:

       0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| Version |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| My Autonomous System |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hold Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BGP Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opt Parm Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Optional Parameters (variable) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Version:

这个 1 字节无符号整数 (1-octet unsigned integer) 指示消息的协议版本号 (protocol version number). 当前的 BGP 版本号为 4.

My Autonomous System:

这个 2 字节无符号整数 (2-octet unsigned integer) 指示发送方的自治系统编号 (Autonomous System number).

Hold Time:

这个 2 字节无符号整数 (2-octet unsigned integer) 指示发送方为保持定时器 (Hold Timer) 的值所提议的秒数. 收到 OPEN 消息后, BGP 系统 MUST 使用其自身配置的保持时间 (Hold Time) 与 OPEN 消息中收到的保持时间中较小的一个来计算保持定时器的值. 保持时间 MUST 为零或至少三秒. 实现 MAY 基于保持时间拒绝连接. 计算出的值表示从发送方连续接收 KEEPALIVE 和/或 UPDATE 消息之间允许经过的最大秒数.

BGP Identifier:

这个 4 字节无符号整数 (4-octet unsigned integer) 指示发送方的 BGP 标识符 (BGP Identifier). 给定 BGP 系统会将其 BGP 标识符的值设置为分配给该 BGP 系统的某个 IP 地址. BGP 标识符的值在启动时确定, 并且对每个本地接口 (local interface) 和每个 BGP 对等体都相同.

Optional Parameters Length:

这个 1 字节无符号整数 (1-octet unsigned integer) 指示可选参数 (Optional Parameters) 字段的总长度, 单位为字节. 如果该字段的值为零, 则不存在可选参数.

Optional Parameters:

这个字段包含可选参数 (optional parameter) 列表, 其中每个参数都编码为 <Parameter Type, Parameter Length, Parameter Value> 三元组 (triplet).

         0                   1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...
| Parm. Type | Parm. Length | Parameter Value (variable)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...

参数类型 (Parameter Type) 是一个 1 字节字段, 用于明确标识各个参数. 参数长度 (Parameter Length) 是一个 1 字节字段, 包含参数值 (Parameter Value) 字段的长度, 单位为字节. 参数值是一个变长字段 (variable-length field), 根据参数类型字段的值进行解释.

[RFC3392] 定义了能力可选参数 (Capabilities Optional Parameter).

OPEN 消息的最小长度为 29 字节 (包括消息头 (message header)).