当前位置:首页 > 技术 > 正文内容

BGP协议报文类型及结构解析

访客 技术 2026年6月28日 3

BGP 报文类型概述

BGP(Border Gateway Protocol)作为域间路由协议的核心,通过五种标准报文实现对等体之间的路由信息交换与状态维护。这些报文包括:

  • OPEN:用于建立BGP对等关系,协商参数。
  • UPDATE:传递路由可达性信息或撤销无效路由。
  • KEEPALIVE:维持TCP会话活跃,确认连接正常。
  • NOTIFICATION:在检测到错误时终止会话并报告原因。
  • ROUTE-REFRESH:请求对端重新发送特定地址族的路由信息。

BGP 公共头部格式

所有BGP报文均以统一的头部开始,其结构如下:

Marker (16字节) | Length (2字节) | Type (1字节)
字段 说明
Marker 全为1(十六进制f...f),用于同步校验;若启用认证,则包含哈希值。
Length 整个报文长度,范围为19至4096字节。
Type 标识报文类型:1=OPEN,2=UPDATE,3=NOTIFICATION,4=KEEPALIVE,5=ROUTE-REFRESH。

OPEN 报文详解

该报文在TCP连接建立后立即发送,用于初始化BGP会话。

Version: 4
My AS: 100
Hold Time: 180
BGP Identifier: 24.1.1.2
Optional Parameters Length: 22
Optional Parameters:
    Capability: Multiprotocol Extensions (AFI=1, SAFI=1)
    Capability: Route Refresh
    Capability: 4-Octet AS Number
字段 描述
Version 当前默认版本为4,支持多协议扩展(如IPv6、EVPN等)。
My AS 本地自治系统编号,必须与对端配置一致才能建立邻居。
Hold Time 保持时间,通常设为180秒。若在此期间未收到有效报文,则断开连接。实际Keepalive间隔为此值的1/3。
BGP Identifier BGP路由器ID,通常取自Loopback接口IP,选举规则类似OSPF。
Optional Parameters 可选参数列表,主要携带能力通告(Capabilities),例如:
  • 多协议扩展(MP-BGP):支持非IPv4单播路由。
  • 路由刷新能力:支持Route-Refresh机制。
  • 四字节AS号:支持大于65535的AS号码。

UPDATE 报文结构分析

UPDATE报文用于发布新路由或撤回已失效路由。一个典型报文可同时包含多个操作。

Withdrawn Routes Length: 0
Total Path Attribute Length: 28
Path attributes:
    ORIGIN: IGP
    AS_PATH: []
    NEXT_HOP: 12.1.1.2
    MED: 0
    LOCAL_PREF: 100
NLRI:
    2.2.2.0/24

当策略变更导致部分路由被过滤时,将生成仅含撤回路由的UPDATE报文:

Withdrawn Routes Length: 9
Withdrawn Routes:
    2.2.2.0/24
    2.2.22.2/32
Total Path Attribute Length: 0

对于EVPN等复杂场景,使用MP_REACH_NLRI属性传递扩展路由信息:

Path Attribute - MP_REACH_NLRI
    AFI: Layer-2 VPN (25)
    SAFI: EVPN (70)
    Next hop: 3.3.3.3
    NLRI: Inclusive Multicast Route
        RD: 1:1
        Ethernet Tag: 0
        IP: 3.3.3.3
关键字段 功能说明
Withdrawn Routes 列出需要撤销的前缀列表。
Path Attributes 路径属性分为四类:公认必遵(ORIGIN、AS_PATH、NEXT_HOP)、公认任意、可选过渡、可选非过渡。其中前三者必须存在于每个UPDATE中。
MP_REACH_NLRI 多协议可达属性,用于传输非IPv4单播路由(如EVPN、IPv6)。包含AFI/SAFI标识和下一跳信息。
NLRI 网络层可达信息,即发布的IPv4/IPv6/EVPN前缀。

注意:当出口策略(route-policy export)发生变化时,设备会触发新的UPDATE报文,可能包含新增或撤销的路由条目。

NOTIFICATION 报文与错误处理

当BGP状态机检测到严重错误时,会发送NOTIFICATION报文并关闭连接。

Major Error Code: Hold Timer Expired (4)
Minor Error Code: 0
Major Error Code: Cease (6)
Minor Error Code: Administratively Reset (4)
主错误码 含义
1 消息头格式错误
2 OPEN报文协商失败(如AS不匹配)
3 UPDATE报文内容非法
4 保持计时器超时
5 有限状态机异常
6 会话被主动终止(如管理员reset)

常见触发场景包括:邻居Reset、Hold Time超时未收Keepalive、认证失败、AS号冲突等。

KEEPALIVE 报文作用

该报文非常简洁,仅包含BGP头部:

Marker: ffffffffffffffffffffffffffffffff
Length: 19
Type: KEEPALIVE (4)
  • 发送频率为Hold Time的1/3,最低不低于1秒。
  • 若在Hold Time内已发送过UPDATE报文,则不再重复发送Keepalive。
  • 主要用于维持TCP会话存活,无其他附加信息。

ROUTE-REFRESH 报文机制

用于动态请求对端重新发送指定地址族的路由更新,避免硬重置邻居。

Type: ROUTE-REFRESH (5)
AFI: IPv4 (1)
SAFI: Unicast (1)
Subtype: Normal Request (0)

当入方向策略(import route-policy)发生变更时,本端将向对端发送此报文,要求其重新推送IPv4单播路由表。

TCP 层安全增强:MD5 认证

BGP认证并非在应用层实现,而是利用TCP选项字段提供保护:

TCP Options:
    Kind: MD5 Signature (19)
    Length: 18
    Digest: ee6fdfa9617b88a538ac256e16e0fdf5

该机制确保BGP会话只能在共享密钥的双方之间建立,防止非法接入。

标签: BGP路由协议

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。