跳到主要内容

4.2. OPEN Message 格式

4.2. OPEN Message 格式 (OPEN Message Format)

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

除了固定大小的 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-octet unsigned integer 指示 message 的 protocol version number. 当前 BGP version number 为 4.

My Autonomous System:

这个 2-octet unsigned integer 指示发送方的 Autonomous System number.

Hold Time:

这个 2-octet unsigned integer 指示发送方为 Hold Timer 的值提议的秒数. 收到 OPEN message 后, BGP speaker MUST 使用自身配置的 Hold Time 与 OPEN message 中收到的 Hold Time 之中较小的值来计算 Hold Timer 的值. Hold Time MUST 为零或至少三秒. implementation MAY 基于 Hold Time 拒绝 connection. 计算出的值表示从发送方连续接收 KEEPALIVE 和/或 UPDATE message 之间允许经过的最大秒数.

BGP Identifier:

这个 4-octet unsigned integer 指示发送方的 BGP Identifier. 给定 BGP speaker 会把其 BGP Identifier 的值设置为分配给该 BGP speaker 的某个 IP address. BGP Identifier 的值在启动时确定, 并且对每个 local interface 和每个 BGP peer 都相同.

Optional Parameters Length:

这个 1-octet unsigned integer 指示 Optional Parameters field 的总长度, 单位为 octet. 如果该 field 的值为零, 则不存在 Optional Parameters.

Optional Parameters:

这个 field 包含 optional parameter 列表, 其中每个 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-octet field, 用于明确标识各个 parameter. Parameter Length 是一个 1-octet field, 包含 Parameter Value field 的长度, 单位为 octet. Parameter Value 是一个 variable-length field, 根据 Parameter Type field 的值进行解释.

[RFC3392] 定义了 Capabilities Optional Parameter.

OPEN message 的最小长度为 29 octet (包括 message header).