BGP协议常用的几种报文

2025-06-27 20:11:17 2962

目录1. OPEN 报文2. KEEPALIVE 报文3. UPDATE 报文4. NOTIFICATION 报文5. ROUTE-REFRESH 报文(可选)报文交互流程示例:补充说明: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:要撤销的路由前缀列表。

示例: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 的隐式确认。