一、BGP 路由黑洞解释
****正式概念:****在BGP 跨 AS 自治系统转发数据时,数据包能顺着 BGP 路由发过去,但中间经过的路由器没有对应的回程路由 / 明细路由,走到半路被中间设备直接丢弃,数据凭空消失,就像掉进黑洞一样,只进不出、有去无回,这个丢包现象就叫BGP 路由黑洞。
2 个基础:
AS:自治系统,简单说就是不同运营商 / 不同公司内网
BGP:专门用来不同 AS 之间传路由的协议
内网路由器常用 OSPF/RIP,中间中转设备很多不跑 BGP
产生原理:
两端边界路由器建立 BGP 邻居,互相宣告网段路由
中间穿越的中转路由器:只转发流量,不运行 BGP
中转路由器只知道往前走,不知道怎么回
流量从外网进来,走到中转设备这里
中转设备查路由表找不到回程路径,直接丢包
结果:能通路由、ping 不通、业务不通,路由表正常,流量消失
现象特征:
BGP 邻居正常,路由表学习完整
直连边界能互通,跨中间设备不通
能查到路由,丢包严重、ping 不通
单向通,双向不通
抓包看到流量走到中段直接消失
四种主流解决办法:
1.路由同步(同步原则)让 BGP 路由和内网 IGP 路由同步,确保中转设备有路由
2.关闭同步(最常用)中小型网络直接关闭 BGP 同步,简化部署
3.修改 BGP 下一跳为自身把下一跳改成边界路由器本地地址,中转设备能识别
4.全链路发布明细路由让所有中转路由器都学到全网回程路由
二、实验拓扑

三、命令配置及实验调试
1. 设备命名与 IP 地址配置
AR1 的配置:
sysname AR1
配置接口IP
interface GigabitEthernet 0/0/0
ip address 12.1.1.1 255.255.255.0
宣告环回(宣告BGP用)
interface LoopBack 0
ip address 1.1.1.1 255.255.255.255
AR2 的配置:
sysname AR2
接口IP
interface GigabitEthernet 0/0/1
ip address 12.1.1.2 255.255.255.0
interface GigabitEthernet 0/0/0
ip address 23.1.1.2 255.255.255.0
环回口(IBGP邻居用)
interface LoopBack 0
ip address 2.2.2.2 255.255.255.255
AR3 的配置:
sysname AR3
接口IP
interface GigabitEthernet 0/0/1
ip address 23.1.1.3 255.255.255.0
interface GigabitEthernet 0/0/0
ip address 34.1.1.3 255.255.255.0
环回口(IBGP邻居用)
interface LoopBack 0
ip address 3.3.3.3 255.255.255.255
AR4 的配置:
sysname AR4
接口IP
interface GigabitEthernet 0/0/1
ip address 34.1.1.4 255.255.255.0
interface GigabitEthernet 0/0/0
ip address 45.1.1.4 255.255.255.0
环回口(IBGP邻居用)
interface LoopBack 0
ip address 4.4.4.4 255.255.255.255
AR5 的配置:
sysname AR5
接口IP
interface GigabitEthernet 0/0/1
ip address 45.1.1.5 255.255.255.0
宣告环回
interface LoopBack 0
ip address 5.5.5.5 255.255.255.255
2. 配置 AS200 内的 OSPF(R2、R3、R4)
目的:让 AS200 内所有路由器的环回和网段互通,为 IBGP 邻居提供路由。
AR2 的配置:
ospf 1 router-id 2.2.2.2
area 0
network 2.2.2.2 0.0.0.0
network 12.1.1.0 0.0.0.255
network 23.1.1.0 0.0.0.255
AR3 的配置:
ospf 1 router-id 3.3.3.3
area 0
network 3.3.3.3 0.0.0.0
network 23.1.1.0 0.0.0.255
network 34.1.1.0 0.0.0.255
AR4 的配置:
ospf 1 router-id 4.4.4.4
area 0
network 4.4.4.4 0.0.0.0
network 34.1.1.0 0.0.0.255
network 45.1.1.0 0.0.0.255
3. 配置 EBGP 邻居
AR1 ↔ AR2(直连建立)
AR1 配置:
bgp 100
router-id 1.1.1.1
peer 12.1.1.2 as-number 200
宣告路由
network 1.1.1.1 255.255.255.255
AR2 配置:
bgp 200
router-id 2.2.2.2
peer 12.1.1.1 as-number 100
AR4 ↔ AR5(直连建立)
AR4 配置:
bgp 200
router-id 4.4.4.4
peer 45.1.1.5 as-number 300
AR5 配置:
bgp 300
router-id 5.5.5.5
peer 45.1.1.4 as-number 200
宣告路由
network 5.5.5.5 255.255.255.255
4. 配置 IBGP 邻居(先按题目要求:只 R2 ↔ R4 建立)
关键:用环回口建立 IBGP 邻居,需要更新源为环回口。
AR2 配置:
bgp 200
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LoopBack 0
修改下一跳为自己
peer 4.4.4.4 next-hop-local
AR4 配置:
bgp 200
peer 2.2.2.2 as-number 200
peer 2.2.2.2 connect-interface LoopBack 0
修改下一跳为自己
peer 2.2.2.2 next-hop-local
5. 查看 BGP 路由表
在 AR1 上查看:
display bgp routing-table

可以看到 5.5.5.5/32 的路由,下一跳是 12.1.1.2(AR2)。
在 AR5 上查看:
display bgp routing-table

可以看到 1.1.1.1/32 的路由,下一跳是 45.1.1.4(AR4)。
在 AR3 上查看:
display ip routing-table

AR3 只有直连和 OSPF 路由,没有 1.1.1.1/32 和 5.5.5.5/32 的 BGP 路由,这就是路由黑洞的成因。
6. 测试连通性
在 AR1 上 ping 5.5.5.5,会发现不通。

原因:
AR1 发往 5.5.5.5 的包发给 AR2;
AR2 查路由,下一跳是 AR4,转发给 AR3;
AR3 收到包后,查路由表,没有 5.5.5.5 的路由,直接丢弃 → 形成黑洞。
7. 解决路由黑洞:配置 IBGP 全互联
在 AS200 内,R2、R3、R4 两两建立 IBGP 邻居,让所有路由器都能学到 BGP 路由。
AR2 补充 IBGP 邻居(与 R3 建立)
bgp 200
peer 3.3.3.3 as-number 200
peer 3.3.3.3 connect-interface LoopBack 0
peer 3.3.3.3 next-hop-local
AR3 配置 IBGP 邻居(与 R2、R4 建立)
bgp 200
router-id 3.3.3.3
peer 2.2.2.2 as-number 200
peer 2.2.2.2 connect-interface LoopBack 0
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LoopBack 0
AR4 补充 IBGP 邻居(与 R3 建立)
bgp 200
peer 3.3.3.3 as-number 200
peer 3.3.3.3 connect-interface LoopBack 0
peer 3.3.3.3 next-hop-local
8. 验证解决结果
在 AR3 上查看路由表:display ip routing-table

现在可以看到 1.1.1.1/32 和 5.5.5.5/32 的 BGP 路由了。
在 AR1 上 ping 5.5.5.5:ping -a 1.1.1.1 5.5.5.5

可以正常连通,路由黑洞问题解决。
四、总结
我们用一个送快递的生活化例子,把 BGP 路由黑洞讲明白:
故事背景:
你在 北京(AS100) 寄一个快递,要送到 广州(AS300),中间要经过 武汉(AS200) 这个中转站。
北京(AR1):知道地址,要把快递发出去
广州(AR5):知道地址,等着收快递
武汉(AS200):是个大中转枢纽,里面有三个仓库:AR2(武汉东站)、AR3(武汉中转中心)、AR4(武汉西站)
黑洞是怎么出现的?
北京(AR1) 把快递发给武汉东站(AR2),并附上广州的地址。
武汉东站(AR2)知道这个快递要发去广州,下一站得走武汉西站(AR4),于是把快递发给了武汉中转中心(AR3)。
关键问题来了:武汉中转中心(AR3)只知道本地仓库之间的路(OSPF 路由),根本不知道 "广州" 这个地址存在(没跑 IBGP,学不到 BGP 路由)。
它一看快递地址是个不认识的地方,直接就把快递丢进垃圾桶了。
结果:快递到了武汉中转中心就没了,北京这边永远收不到签收通知,这就是路由黑洞。
✅ 怎么解决这个黑洞?
要让武汉中转中心(AR3)也知道 "广州" 和 "北京" 的地址,就必须让它也加入到仓库之间的信息同步里(跑 IBGP):
武汉东站(AR2)、中转中心(AR3)、西站(AR4)互相交换全国地址信息(IBGP 全互联)。
现在中转中心知道广州在西站那边,北京在东站那边,收到快递后就能正确转发,不会丢件了。
一句话总结:路由黑洞就是中间的 "中转站" 不知道最终目的地,把流量直接丢了;解决办法就是让中转站也同步到完整的地址信息。