4.5. NOTIFICATION Message 格式
4.5. NOTIFICATION Message 格式 (NOTIFICATION Message Format)
检测到错误条件 (error condition) 时会发送 NOTIFICATION 消息. 发送后会立即关闭 BGP 连接 (connection).
除了固定大小的 BGP header 外, NOTIFICATION 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error code | Error subcode | Data (variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Error Code:
这个 1 字节无符号整数 (1-octet unsigned integer) 指示 NOTIFICATION 的类型. 已定义以下错误代码 (Error Code):
| Error Code | Symbolic Name | Reference |
|---|---|---|
| 1 | Message Header Error (Message Header 错误) | Section 6.1 |
| 2 | OPEN Message Error (OPEN Message 错误) | Section 6.2 |
| 3 | UPDATE Message Error (UPDATE Message 错误) | Section 6.3 |
| 4 | Hold Timer Expired (Hold Timer 过期) | Section 6.5 |
| 5 | Finite State Machine Error (有限状态机错误) | Section 6.6 |
| 6 | Cease (终止) | Section 6.7 |
Error subcode:
这个 1 字节无符号整数 (1-octet unsigned integer) 提供关于所报告错误 (error) 性质的更具体信息. 每个错误代码可以关联一个或多个错误子码 (Error Subcode). 如果没有定义合适的错误子码, 则错误子码字段使用零值 (Unspecific).
Message Header Error subcodes:
- 1 - Connection Not Synchronized (连接未同步).
- 2 - Bad Message Length (错误的消息长度).
- 3 - Bad Message Type (错误的消息类型).
OPEN Message Error subcodes:
- 1 - Unsupported Version Number (不支持的版本号).
- 2 - Bad Peer AS (错误的对等体 AS).
- 3 - Bad BGP Identifier (错误的 BGP 标识符).
- 4 - Unsupported Optional Parameter (不支持的可选参数).
- 5 - [Deprecated - see Appendix A] (已废弃 - 见附录 A).
- 6 - Unacceptable Hold Time (不可接受的保持时间).
UPDATE Message Error subcodes:
- 1 - Malformed Attribute List (格式错误的属性列表).
- 2 - Unrecognized Well-known Attribute (无法识别的众所周知属性).
- 3 - Missing Well-known Attribute (缺少众所周知属性).
- 4 - Attribute Flags Error (属性标志错误).
- 5 - Attribute Length Error (属性长度错误).
- 6 - Invalid ORIGIN Attribute (无效的 ORIGIN 属性).
- 7 - [Deprecated - see Appendix A] (已废弃 - 见附录 A).
- 8 - Invalid NEXT_HOP Attribute (无效的 NEXT_HOP 属性).
- 9 - Optional Attribute Error (可选属性错误).
- 10 - Invalid Network Field (无效的网络字段).
- 11 - Malformed AS_PATH (格式错误的 AS_PATH).
Data:
这个变长字段 (variable-length field) 用于诊断 NOTIFICATION 的原因. 数据 (Data) 字段的内容取决于错误代码和错误子码. 更多细节见第 6 节.
注意, 数据字段的长度可以通过以下公式从消息长度 (message Length) 字段确定:
Message Length = 21 + Data Length
NOTIFICATION 消息的最小长度为 21 字节 (包括消息头 (message header)).