BGP协议常用的几种报文
目录
BGP(Border Gateway Protocol)是用于自治系统(AS)之间交换路由信息的路径向量协议,其核心功能通过以下 5 种报文 实现:
1. OPEN 报文
- 作用:建立 BGP 对等体(Peer)之间的初始连接。
- 关键字段:
- BGP 版本号(默认版本4)
- 本地 AS 号
- Hold Time(保活时间间隔)
- BGP Identifier(Router ID,通常为本地路由器的 IP)
- 触发时机:TCP 连接建立后(端口179),双方首先发送 OPEN 报文协商参数。
2. KEEPALIVE 报文
- 作用:维持 BGP 对等体连接,确认对方存活。
- 特点:
- 仅包含 BGP 头部(19 字节),无额外内容。
- 按协商的 Hold Time 间隔周期性发送(默认为 60 秒)。
- 重要性:若未按时收到 KEEPALIVE,连接会被重置。
3. UPDATE 报文
- 作用:携带路由信息(新增/撤销路由)。
- 关键字段:
- NLRI(Network Layer Reachability Information):宣告的可达路由前缀(如
192.168.1.0/24)。 - Path Attributes:路由属性(如 AS_PATH、NEXT_HOP、LOCAL_PREF、MED 等)。
- Withdrawn Routes:要撤销的路由前缀列表。
- NLRI(Network Layer Reachability Information):宣告的可达路由前缀(如
- 示例:
UPDATE 报文示例: - 新增路由:192.168.1.0/24,AS_PATH=[AS100, AS200], NEXT_HOP=10.1.1.1 - 撤销路由:172.16.0.0/16
4. NOTIFICATION 报文
- 作用:报告错误并立即终止 BGP 连接。
- 常见错误类型:
- 报文格式错误(如版本不匹配)
- Hold Time 过期
- 邻居状态机错误
- 字段:错误码(如
OPEN Message Error)和子错误码(如Unsupported Version)。
5. ROUTE-REFRESH 报文(可选)
- 作用:动态请求对等体重新发送路由信息(需支持
Route Refresh Capability)。 - 使用场景:本地路由策略变更后,主动请求邻居重新发送 UPDATE 报文。
报文交互流程示例:
- 建立 TCP 连接 → 交换 OPEN → 确认参数后发送 KEEPALIVE。
- 通过 UPDATE 宣告或撤销路由。
- 周期性 KEEPALIVE 维持连接。
- 错误时发送 NOTIFICATION 断开连接。
补充说明:
- 报文头部:所有 BGP 报文共享 19 字节头部(含标记位、长度、类型字段)。
- 可靠性:基于 TCP(端口179),确保报文有序可靠传输。
这些报文共同支撑了 BGP 的稳定路由交换和故障处理能力。
BGP 协议报文交互的流程图
以建立邻居(Peer)关系和路由更新为核心场景
sequenceDiagram
participant AS1_Router as AS1 Router
participant AS2_Router as AS2 Router
Note over AS1_Router, AS2_Router: 1. 建立TCP连接(端口179)
AS1_Router->>AS2_Router: SYN
AS2_Router->>AS1_Router: SYN-ACK
AS1_Router->>AS2_Router: ACK
Note over AS1_Router, AS2_Router: 2. BGP会话初始化
AS1_Router->>AS2_Router: OPEN报文(AS号、Hold Time等)
AS2_Router->>AS1_Router: OPEN报文(协商参数)
AS1_Router->>AS2_Router: KEEPALIVE(确认OPEN)
AS2_Router->>AS1_Router: KEEPALIVE(确认OPEN)
Note over AS1_Router, AS2_Router: 3. 路由交换(稳定状态)
loop 周期性保活
AS1_Router->>AS2_Router: KEEPALIVE(默认60秒)
AS2_Router->>AS1_Router: KEEPALIVE
end
AS2_Router->>AS1_Router: UPDATE报文(新增路由+属性)
AS1_Router->>AS2_Router: KEEPALIVE(确认UPDATE)
Note over AS1_Router, AS2_Router: 4. 错误处理(可选)
alt 检测到错误(如版本不匹配)
AS1_Router->>AS2_Router: NOTIFICATION报文(错误码)
AS1_Router-x AS2_Router: 关闭TCP连接
end
流程图说明:
-
TCP 连接建立
- BGP 基于 TCP(端口179),首先通过三次握手建立连接。
-
OPEN 报文交换
- 双方发送 OPEN 报文协商参数(AS 号、Hold Time 等),并通过 KEEPALIVE 确认。
-
路由更新(UPDATE)
- 对等体通过 UPDATE 报文宣告或撤销路由,接收方用 KEEPALIVE 确认(无需显式ACK)。
-
保活机制
- 周期性发送 KEEPALIVE 维持连接(若 Hold Time 超时未收到,则断开)。
-
错误处理
- 任何错误(如报文格式问题)触发 NOTIFICATION 报文,并终止会话。
关键交互逻辑:
- 状态机驱动:BGP 通过有限状态机(FSM)管理邻居状态(如
Idle→Connect→OpenSent→Established)。 - 增量更新:仅传播变化的路由(UPDATE 报文包含新增或撤销的路由)。
- 显式确认:KEEPALIVE 既用于保活,也作为 OPEN/UPDATE 的隐式确认。
Do not communicate by sharing memory; instead, share memory by communicating.

浙公网安备 33010602011771号