网络工程师笔记10-BGP协议
一、概念
边界网关协议(Border Gateway Protocol,BGP)是一种用于在不同自治系统(Autonomous System,AS)之间交换路由信息的路径向量路由协议。
五种报文:OPEN (建立对等体)报文、UPDATE (路由更新)报文、KEEPALIVE (维持对等体)报文、NOTIFICATION (中止对等体)报文、ROUTE - REFRESH (动态更新)报文
六个状态:Idle(空闲状态)、Connect(连接状态)、Active(活跃状态)、OpenSent(OPEN消息已发送)、OpenConfirm(OPEN消息确认)、Established(已建立)
二、特性
1.路径向量协议:通过 AS 路径,BGP 路由器能知晓数据包从源到目的网络所经过的所有自治系统序列,这不仅有助于检测和避免路由环路,还能让网络管理员基于 AS 路径制定复杂的路由策略。
2.基于 TCP 传输:BGP 基于可靠的传输控制协议(TCP)进行通信,使用 TCP 端口 179。
3.丰富的路径属性:BGP 拥有众多路径属性,这些属性携带了关于路由的各种信息,帮助路由器进行路由选择和策略制定。
4.增量更新:BGP 采用增量更新机制,当网络拓扑发生变化时,BGP 路由器只向对等体发送发生变化的路由信息,而非全部路由表。
5.支持多种地址族:BGP 支持多种地址族,除了 IPv4 单播地址族外,还支持 IPv6 单播、IPv4 多播、IPv6 多播等地址族。
6.支持策略路由:根据多种因素制定路由策略,如 AS 路径、IP 地址前缀、路径属性等。例如,通过设置策略,让特定源地址或目的地址的流量通过指定的链路传输
7.扩展性强:在大型网络环境中,BGP 通过一些机制来增强其扩展性。例如,路由反射器(RR)和联盟(Confederation)技术。
三、工作原理
阶段 1:BGP 邻居关系建立(从 “闲置” 到 “稳定”)
BGP 邻居建立需经历 5 个状态,核心是通过Open 报文协商参数,通过Keepalive 报文维持连接:
状态 | 核心行为 |
---|---|
1. Idle(闲置) | 路由器等待 “启动 BGP” 的指令,未尝试建立连接。 |
2. Connect | 主动向邻居的 TCP 179 端口发起连接,等待 TCP 三次握手完成。 |
3. OpenSent | TCP 连接建立后,发送Open 报文(包含 AS 号、Hold Time、BGP 标识符等核心参数)。 |
4. OpenConfirm | 收到邻居的 Open 报文后,验证参数(如 AS 号匹配),发送Keepalive 报文确认。 |
5. Established | 收到邻居的 Keepalive 报文,邻居关系稳定,开始交换路由信息。 |
- 关键细节:
- Hold Time(保活时间):默认 180 秒,若在 Hold Time 内未收到邻居的 Keepalive / 路由更新报文,会断开邻居关系;Keepalive 报文默认每 60 秒发送一次(为 Hold Time 的 1/3)。
- BGP 标识符(Router ID):通常是路由器的环回口 IP,用于唯一标识 BGP Speaker。
阶段 2:路由信息交换(传递 “路径向量” 而非单纯路由)
BGP 不像 OSPF(链路状态)或 RIP(距离向量)那样传递 “度量值”,而是传递路由条目 + 路径属性(PA,Path Attributes),形成 “路径向量”(记录到达目标网络的 “AS 路径”)。
交换的核心内容:
- 路由条目:目标网络的 IPv4/IPv6 前缀(如 10.0.0.0/8)。
- 路径属性(PA):决定路由优先级和合法性的关键信息,核心 PA 包括:
路径属性(PA) 作用 AS_PATH(AS 路径) 记录到达目标网络经过的所有 AS 号(如 [AS200, AS300]),核心防环机制(拒绝 AS_PATH 含自身 AS 号的路由)。 NEXT_HOP(下一跳) 指示到达目标网络的下一跳 IP(EBGP 邻居的下一跳是邻居的直连接口 IP;IBGP 邻居的下一跳默认不变)。 LOCAL_PREF(本地优先级) 仅 IBGP 内生效,值越大越优先(默认 100),用于 AS 内部指定 “出 AS 的优选路径”。 MED(多出口鉴别器) 用于告知邻居 AS“本 AS 的多个入口中,哪个更优”(值越小越优先),仅 EBGP 间传递。 Origin(起源) 标记路由的来源(IGP:最优,如从 OSPF 引入;EGP:次优;Incomplete:最差,如从静态路由引入)。
路由交换的触发条件:
- 邻居关系刚建立时,双方主动发送全部 BGP 路由(初始同步)。
- 后续仅当路由变化(如网络新增 / 删除、路径属性更新)时,发送增量更新(仅传递变化的路由,减少带宽消耗)。
- 若路由失效,发送Withdraw 报文(撤销无效路由)。
阶段 3:路径选择(BGP 的 “策略核心”,13 步优先级排序)
当 BGP 从多个邻居学到到达同一目标网络的多条路由时,会按固定优先级顺序选择 “最优路由” 加入本地 BGP 路由表(再发布给 IGP,供内部转发)。
路径选择优先级(从高到低):
- Weight(权重):Cisco 私有属性,仅本地生效,值越大越优先(默认 0,手动配置优先)。
- LOCAL_PREF(本地优先级):值越大越优先(仅 IBGP 路由,AS 内部策略控制)。
- 自我生成的路由:自身通过
network
命令发布的路由 > 从其他邻居学到的路由(下一跳为 0.0.0.0)。 - AS_PATH 长度:AS_PATH 越短,路由越优先(避免绕远路,如 [AS200] 优于 [AS200, AS300])。
- Origin(起源):IGP(i) > EGP(e) > Incomplete(?)(保证路由来源可靠性)。
- MED(多出口鉴别器):值越小越优先(仅对同一 AS 邻居的路由生效)。
- EBGP 路由优于 IBGP 路由:跨 AS 的路由比 AS 内部的路由优先(优先选择 “直接连接的外部路径”)。
- IBGP 邻居的下一跳 IGP 度量值:下一跳的 IGP(如 OSPF)开销越小越优先(确保 AS 内部转发最优)。
- Oldest Route(最旧路由):若前 8 步无法区分,选择最早学到的路由(避免频繁切换)。
- EBGP 邻居的 IP 地址:邻居 IP 越小越优先(仅 EBGP,Cisco 默认,非标准)。
- IBGP 邻居的 Router ID:邻居 Router ID 越小越优先(仅 IBGP)。
- 邻居的 IP 地址:邻居 IP 越小越优先(最终兜底)。
- 拒绝路由:若所有条件相同,拒绝该路由(避免负载均衡,BGP 默认不支持负载均衡,需手动配置)。
阶段 4:路由维护(动态适应拓扑变化)
BGP 通过以下机制确保路由的实时性和可靠性:
- Keepalive 报文:每 60 秒发送一次,确认邻居存活;若 Hold Time(180 秒)内无响应,断开邻居并删除该邻居的所有路由。
- 增量更新:仅当路由的前缀或路径属性变化时,发送更新 / 撤销报文,避免全量重发。
- 防环机制:
- EBGP 防环:通过 AS_PATH(拒绝含自身 AS 号的路由)。
- IBGP 防环:① 水平分割(不将从一个 IBGP 邻居学到的路由传给另一个 IBGP 邻居);② 路由反射器(RR)或联邦(Confederation)(解决 IBGP “全连接” 的 scalability 问题)。
四、报文解析
一、OPEN(建立对等体)报文:“初次合作的资质介绍信”
核心作用:BGP 邻居建立阶段(从 Connect→OpenSent→OpenConfirm)的 “身份与规则协商工具”,用于向对方证明自身身份、约定合作参数,是邻居关系的 “敲门砖”。
1. 报文结构(关键字段)
字段名称 | 长度 | 核心作用 |
---|---|---|
Version(版本) | 1 字节 | 标识 BGP 版本(目前主流为 BGPv4,对应 IPv4;BGPv6 用于 IPv6),双方版本必须一致。 |
My AS(本地 AS 号) | 2/4 字节 | 本地自治系统(AS)的编号(16 位或 32 位),证明 “我是谁”,EBGP 邻居需确认 AS 号合法性。 |
Hold Time(保活时间) | 2 字节 | 约定 “邻居存活超时阈值”(单位:秒),默认 180 秒。若在该时间内未收到对方任何报文(Keepalive/UPDATE),则断开邻居关系。 |
BGP Identifier(Router ID) | 4 字节 | 本地 BGP 路由器的唯一标识(通常为环回口 IP),用于区分同一 AS 内的不同 BGP 设备。 |
Optional Parameters(可选参数) | 可变 | 扩展功能协商(如认证密码、IPv6 支持、路由反射器属性等),增强安全性或适配特殊场景。 |
2. 关键特点
- 仅在邻居建立阶段发送 1 次(OpenSent 状态),后续邻居稳定后不再发送。
- 是邻居关系从 “试探” 到 “确认” 的核心报文,参数不匹配会直接导致邻居建立失败。
二、UPDATE(路由更新)报文
核心作用:BGP 路由交换的 “核心载体”,用于传递 “新增可用路由” 或 “撤销无效路由”,同时附带 “路径属性”(如 AS_PATH、MED),帮助对方判断路由优劣。
1. 报文结构(关键字段)
UPDATE 报文分为 “撤销路由段” 和 “新增路由段”,支持同时传递两种信息:
字段分组 | 关键子字段 | 核心作用 |
---|---|---|
撤销路由段 | Withdrawn Routes Length | 标识后续 “撤销路由” 的总长度(若为 0,说明无撤销路由)。 |
Withdrawn Routes(前缀 + 掩码) | 列出需要 “删除的无效路由”(如目标网络下线、链路故障),格式为 “网络前缀 + 前缀长度”(如 10.0.0.0/8)。 | |
新增路由段 | Path Attributes Length | 标识后续 “路径属性” 的总长度(路径属性是 BGP 选路的核心依据)。 |
Path Attributes(路径属性) | 每条新增路由的 “附加信息”,如:- AS_PATH:到达目标网络的 AS 序列(防环核心);- NEXT_HOP:下一跳 IP 地址;- LOCAL_PREF:本地优先级(IBGP 选路用)。 | |
Network Layer Reachability Information(NLRI) | 列出 “新增的可用路由”,格式为 “网络前缀 + 前缀长度”(如 192.168.0.0/24)。 |
2. 关键特点
- 增量更新:仅传递 “变化的路由”(新增 / 撤销),而非全量路由,大幅减少带宽消耗(互联网 BGP 路由表达百万级,全量发送不可行)。
- 路径属性必带:每条新增路由必须附带 AS_PATH(防环)和 NEXT_HOP(指明下一跳),否则对方会丢弃该路由。
三、KEEPALIVE(维持对等体)报文:“合作关系的定期心跳”
核心作用:邻居关系稳定后(Established 状态),用于 “确认对方存活” 的 “心跳报文”,避免因网络延迟 / 波动误判邻居失效。
1. 报文结构(极简)
KEEPALIVE 是 5 种报文中结构最简单的,仅包含 BGP 报文头部(无 payload 数据),总长度固定为 19 字节(BGP 头部 16 字节 + 报文类型 3 字节?不,实际 BGP 头部为 16 字节,其中 “Type” 字段标识为 4(KEEPALIVE),无后续数据,总长度 = 16 字节)。
- 头部关键字段:
Type=4
(明确该报文为 KEEPALIVE)。
2. 关键特点
- 周期性发送:发送间隔 = Hold Time/3(默认 60 秒),Hold Time 由 OPEN 报文协商确定(双方需一致,若不一致取较小值)。
- 无业务数据:仅用于 “存活检测”,不传递路由或配置信息。
四、NOTIFICATION(中止对等体)报文:“合作中断的故障通知书”
核心作用:当 BGP 发现 “不可恢复的错误” 时(如参数不匹配、路由非法),向对方发送 “故障通知”,并立即断开邻居关系,是 BGP 的 “错误处理工具”。
1. 报文结构(关键字段)
字段名称 | 长度 | 核心作用 |
---|---|---|
Error Code(错误码) | 1 字节 | 标识错误类型(共 6 类),如:- 1:版本不匹配(如一方 BGPv4,一方 BGPv3);- 2:AS 号错误(如 EBGP 邻居 AS 号与配置不符);- 3:Hold Time 不匹配;- 5:路由属性错误(如 AS_PATH 为空)。 |
Error Subcode(错误子码) | 1 字节 | 细化错误类型(如 Error Code=5 时,子码 = 1 表示 “AS_PATH 属性缺失”)。 |
Data(错误数据) | 可变 | 携带错误相关的具体信息(如版本不匹配时,携带对方的版本号),帮助排查故障。 |
2. 关键特点
- 触发即断开:发送 NOTIFICATION 报文后,本地会立即关闭 TCP 连接,邻居关系强制终止,需重新建立(修复错误后)。
- 错误信息明确:Error Code+Subcode+Data 字段能精准定位故障原因,便于运维排查(如 AS 号错误、路由属性非法等)。
五、ROUTE-REFRESH(动态更新)报文:“路由策略变更后的主动刷新”
核心作用:当本地 BGP “路由策略变更” 时(如修改过滤规则、调整路径属性),无需断开邻居关系,通过该报文 “主动请求对方重新发送路由”,实现 “动态更新路由表”,避免策略变更后路由不一致。
1. 报文结构(关键字段)
字段名称 | 长度 | 核心作用 |
---|---|---|
Address Family Identifier(AFI) | 2 字节 | 标识地址族(如 1=IPv4,2=IPv6),明确请求刷新哪种地址的路由。 |
Subsequent Address Family Identifier(SAFI) | 1 字节 | 标识子地址族(如 1=unicast 单播路由,2=multicast 组播路由),细化路由类型。 |
3. 关键特点
- 无破坏性:无需断开邻居关系,避免策略变更导致的业务中断(对比 “断开邻居再重连”,效率更高)。
- 双向支持:需双方 BGP 设备均支持 ROUTE-REFRESH(主流设备默认支持),否则请求会被忽略(需手动重连邻居)。
总结:5 种报文的 “分工协作流程”
BGP 的完整工作流,本质是 5 种报文的有序交互,可对应 “快递合作生命周期”:
- 建立合作(Open):用 OPEN 报文协商资质,拿到 “合作许可证”;
- 共享路线(Update):用 UPDATE 报文传递 “新增 / 撤销路线”,附带路线细节;
- 维持合作(Keepalive):用 KEEPALIVE 报文定期 “心跳”,确认合作正常;
- 处理故障(Notification):用 NOTIFICATION 报文通知 “合作中断原因”,及时止损;
- 动态调整(Route-Refresh):用 ROUTE-REFRESH 报文 “更新路线”,适应策略变更。
五、配置案例
拓扑如下:
AR1与AR2在同一个AS100建立IBGP;AR2与AR3建立EBGP邻居 。Lo0口用于建立BGP;Lo1口模拟业务网段
华为:
AR1--------------------------------------------------
interface GigabitEthernet0/0/0ip address 192.168.1.1 255.255.255.0
#
interface LoopBack0ip address 1.1.1.1 255.255.255.255
#
interface LoopBack1ip address 10.1.1.1 255.255.255.0
#
ip route-static 2.2.2.2 255.255.255.255 192.168.1.2
#
bgp 100router-id 1.1.1.1peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack0network 10.1.1.1 255.255.255.0AR2----------------------------------------------
interface GigabitEthernet0/0/0ip address 192.168.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1ip address 192.168.2.2 255.255.255.0
#
interface LoopBack0ip address 2.2.2.2 255.255.255.255
#
interface LoopBack1ip address 20.1.1.1 255.255.255.0
#
ip route-static 1.1.1.1 255.255.255.255 192.168.1.1
#
bgp 100router-id 2.2.2.2peer 1.1.1.1 as-number 100 peer 1.1.1.1 connect-interface LoopBack0peer 192.168.2.3 as-number 200 network 10.1.1.1 255.255.255.0network 20.1.1.1 255.255.255.0 network 30.1.1.1 255.255.255.0 peer 1.1.1.1 next-hop-localAR3----------------------------------------------------
interface GigabitEthernet0/0/0ip address 192.168.2.3 255.255.255.0
#
interface LoopBack0ip address 3.3.3.3 255.255.255.255
#
interface LoopBack1ip address 30.1.1.1 255.255.255.0
#
bgp 200router-id 3.3.3.3peer 192.168.2.2 as-number 100 network 30.1.1.1 255.255.255.0
华三:
AR1--------------------------------------------------
interface GigabitEthernet1/0ip address 192.168.1.1 255.255.255.0
#
interface LoopBack0ip address 1.1.1.1 255.255.255.255
#
interface LoopBack1ip address 10.1.1.1 255.255.255.0
#
ip route-static 2.2.2.2 255.255.255.255 192.168.1.2
#
bgp 100router-id 1.1.1.1peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack0
address-family ipv4 unicast network 10.1.1.1 255.255.255.0peer 2.2.2.2 enableAR2----------------------------------------------
interface GigabitEthernet1/0ip address 192.168.1.2 255.255.255.0
#
interface GigabitEthernet2/0ip address 192.168.2.2 255.255.255.0
#
interface LoopBack0ip address 2.2.2.2 255.255.255.255
#
interface LoopBack1ip address 20.1.1.1 255.255.255.0
#
ip route-static 1.1.1.1 255.255.255.255 192.168.1.1
#
bgp 100router-id 2.2.2.2peer 1.1.1.1 as-number 100 peer 1.1.1.1 connect-interface LoopBack0peer 192.168.2.3 as-number 200
address-family ipv4 unicast network 10.1.1.1 255.255.255.0network 20.1.1.1 255.255.255.0network 30.1.1.1 255.255.255.0peer 1.1.1.1 enablepeer 192.168.2.3 enable peer 1.1.1.1 next-hop-localAR3----------------------------------------------------
interface GigabitEthernet0/0/0ip address 192.168.2.3 255.255.255.0
#
interface LoopBack0ip address 3.3.3.3 255.255.255.0
#
interface LoopBack0ip address 30.1.1.1 255.255.255.0
#
bgp 200router-id 3.3.3.3peer 192.168.2.2 as-number 100
address-family ipv4 unicast network 30.1.1.1 255.255.255.0peer 192.168.2.2 enable
锐捷:
AR1--------------------------------------------------
interface GigabitEthernet0/0ip address 192.168.1.1 255.255.255.0
#
interface LoopBack0ip address 1.1.1.1 255.255.255.255
#
interface LoopBack1ip address 10.1.1.1 255.255.255.0
#
ip route 2.2.2.2 255.255.255.255 192.168.1.2
#
router bgp 100
bgp router-id 1.1.1.1neighbor 2.2.2.2 remote-as 100neighbor 2.2.2.2 update-source loopback 0network 10.1.1.1 mask 255.255.255.0AR2----------------------------------------------
interface GigabitEthernet0/0ip address 192.168.1.2 255.255.255.0
#
interface GigabitEthernet0/1ip address 192.168.2.2 255.255.255.0
#
interface LoopBack0ip address 2.2.2.2 255.255.255.255
#
interface LoopBack1ip address 20.1.1.1 255.255.255.0
#
ip route 1.1.1.1 255.255.255.255 192.168.1.1
#
router bgp 100
bgp router-id 2.2.2.2neighbor 1.1.1.1 remote-as 100neighbor 1.1.1.1 update-source loopback 0neighbor 192.168.2.3 remote-as 200network 10.1.1.1 mask 255.255.255.0network 20.1.1.1 mask 255.255.255.0network 30.1.1.1 mask 255.255.255.0neighbor 1.1.1.1 next-hop-selfAR3----------------------------------------------------
interface GigabitEthernet0/1ip address 192.168.2.3 255.255.255.0
#
interface LoopBack0ip address 3.3.3.3 255.255.255.255
#
interface LoopBack0ip address 30.1.1.1 255.255.255.0
#
router bgp 200
bgp router-id 3.3.3.3neighbor 192.168.2.2 remote-as 100network 30.1.1.1 mask 255.255.255.0
六、日常排障
华为
display bgp peer -->查看BGP状态
display bgp network -->查看BGP路由宣告
display bgp routing-table -->查看BGP路由华三
display bgp peer ipv4。 -->查看BGP状态
display bgp network ipv4 -->查看BGP路由宣告
display bgp routing-table ipv4 -->查看BGP路由锐捷
show ip bgp summary -->查看BGP状态
show bap all -->查看BGP路由宣告
show ip route bgp -->查看BGP路由
一、邻居关系建立失败(最基础故障)
BGP 邻居需通过 TCP(端口 179)建立连接,且需通过 Open 报文协商参数,任何环节异常都会导致邻居无法建立,典型现象为display bgp peer
中邻居状态停留在Idle
、Connect
或Active
。
1. TCP 连接失败(状态:Idle/Connect/Active)
现象:邻居状态始终为Idle
(未尝试连接)、Connect
(正在建立 TCP 连接)或Active
(连接被拒绝)。常见原因:
- IP 不可达:邻居 IP(如 peer 配置的 IP)在本地路由表中无对应路由(
display ip routing-table 邻居IP
为空)。 - 端口被屏蔽:防火墙或 ACL 阻止了 TCP 179 端口的通信(入方向或出方向)。
- 邻居 IP 配置错误:peer 命令指定的邻居 IP 与实际邻居接口 IP 不符(如误写为环回口 IP 但未配置对应路由)。
- EBGP 多跳问题:非直连 EBGP 邻居未配置
ebgp-multihop
(默认 TTL=1,跨设备时 TTL 不足)。
2. Open 报文协商失败(状态:OpenSent/OpenConfirm)
现象:TCP 连接建立后,邻居状态停留在OpenSent
(已发送 Open 报文)或OpenConfirm
(等待确认),随后因超时进入Idle
。常见原因:
- AS 号不匹配:EBGP 邻居的
as-number
配置与实际不符(如本地 AS 100,邻居 AS 应为 200 却配置为 100)。 - Hold Time 不一致:双方 Open 报文中的 Hold Time(保活时间)差异过大(默认取较小值,若一方为 0 则协商失败)。
- Router ID 冲突:本地与邻居的 Router ID 相同(需确保 Router ID 唯一,通常用环回口 IP)。
- 认证失败:双方配置了 BGP 认证(如
peer 邻居IP password
)但密码不一致。
二、路由无法传递(邻居已建立,但无路由交换)
邻居状态为Established
,但display bgp routing-table
中无预期路由,或路由未传递给邻居。
1. 本地未宣告路由
现象:本地 BGP 路由表中无目标路由,无法向邻居传递。原因:
network
命令宣告的路由不在本地路由表中(需精确匹配网段和掩码)。import-route
未配置(未引入静态 / IGP 路由),或引入时被路由策略过滤。
2. 路由被过滤(入方向 / 出方向)
现象:本地有路由,但未传递给邻居(出方向过滤),或未从邻居收到路由(入方向过滤)。
原因:邻居配置了路由过滤策略(如peer 邻居IP route-policy 策略名 export/import
),或前缀列表、AS 路径过滤。
3. IBGP 水平分割(AS 内路由无法传递)
现象:从一个 IBGP 邻居学到的路由,未传递给另一个 IBGP 邻居(同一 AS 内)。
原因:BGP 默认启用 “水平分割”:从 IBGP 邻居学到的路由,不会再传递给其他 IBGP 邻居(防止 AS 内路由环路)。
排查场景:AS 100 内有 3 台路由器(R1-R2-R3),R1 与 R2 是 IBGP 邻居,R2 与 R3 是 IBGP 邻居,R1 学到的路由无法通过 R2 传递给 R3。
三、路由在 BGP 表中,但未进入全局路由表(无法转发)
BGP 路由表中有目标路由(状态*
),但未标记为最优(无>
),或未加入全局路由表(display ip routing-table
中无该路由)。
1. 下一跳不可达(最常见)
现象:BGP 路由表中路由状态为*
(有效)但无>
(非最优),原因显示 “Next hop unreachable”。原因:BGP 路由的Next Hop
(下一跳)在本地全局路由表中不可达(display ip routing-table NextHopIP
为空)。
2. 路由未满足优选条件
现象:BGP 路由表中有多条到同一目标的路由,但预期路由未被标记为>
(最优)。
原因:BGP 选路规则(如 Weight、Local_Pref、AS_Path 长度等)导致非预期路由被优选。
四、路由可达但通信失败(ping 不通)
BGP 路由已进入全局路由表,但跨 AS ping 目标 IP 失败,核心是双向路由不对称或ICMP 报文被过滤。
1. 反向路由不可达
现象:正向路由(A→B)存在,但反向路由(B→A)缺失,导致 ICMP 应答无法返回。
原因:BGP 路由传递是单向的,A 有到 B 的路由不代表 B 有到 A 的路由(如 B 未宣告自身路由,或路由被过滤)。
2. ICMP 报文被 ACL / 防火墙过滤
现象:双向路由均存在,但ping
时无回包(无Reply
)。
原因:中间设备或目标设备的 ACL / 防火墙阻止了 ICMP Echo Request(类型 8)或 Echo Reply(类型 0)报文。
五、总结:BGP 故障排查核心流程
- 先查邻居:确认邻居状态为
Established
,否则按 “邻居建立失败” 排查。 - 再查路由:确认目标路由存在且状态为
*>
(有效且最优)。 - 三查下一跳:
一跳IP
确保 BGP 路由的下一跳可达。 - 四查双向路由:在源和目标设备分别检查到对方的路由是否存在。
- 五查过滤策略:检查 ACL、路由策略是否过滤了 BGP 路由或 ICMP 报文。