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 报文。

报文交互流程示例:

  1. 建立 TCP 连接 → 交换 OPEN → 确认参数后发送 KEEPALIVE
  2. 通过 UPDATE 宣告或撤销路由。
  3. 周期性 KEEPALIVE 维持连接。
  4. 错误时发送 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

流程图说明

  1. TCP 连接建立

    • BGP 基于 TCP(端口179),首先通过三次握手建立连接。
  2. OPEN 报文交换

    • 双方发送 OPEN 报文协商参数(AS 号、Hold Time 等),并通过 KEEPALIVE 确认。
  3. 路由更新(UPDATE)

    • 对等体通过 UPDATE 报文宣告或撤销路由,接收方用 KEEPALIVE 确认(无需显式ACK)。
  4. 保活机制

    • 周期性发送 KEEPALIVE 维持连接(若 Hold Time 超时未收到,则断开)。
  5. 错误处理

    • 任何错误(如报文格式问题)触发 NOTIFICATION 报文,并终止会话。

关键交互逻辑

  • 状态机驱动:BGP 通过有限状态机(FSM)管理邻居状态(如 IdleConnectOpenSentEstablished)。
  • 增量更新:仅传播变化的路由(UPDATE 报文包含新增或撤销的路由)。
  • 显式确认:KEEPALIVE 既用于保活,也作为 OPEN/UPDATE 的隐式确认。
posted @ 2025-04-27 10:21  guanyubo  阅读(309)  评论(0)    收藏  举报