BGP路由黑洞

一、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 全互联)。

现在中转中心知道广州在西站那边,北京在东站那边,收到快递后就能正确转发,不会丢件了。


一句话总结:路由黑洞就是中间的 "中转站" 不知道最终目的地,把流量直接丢了;解决办法就是让中转站也同步到完整的地址信息。

相关推荐
Cx330❀1 小时前
【Linux网络】一文吃透 TCP Socket 编程
linux·运维·服务器·开发语言·网络·tcp/ip
砍材农夫1 小时前
物联网实战:Spring Boot MQTT | 模拟器Paho客户端拆解核心点
java·javascript·网络·spring boot·后端·物联网
J-Tony111 小时前
【计算机网络】TCP粘包和拆包
网络·tcp/ip·计算机网络
志栋智能1 小时前
轻量级 vs. 重平台:巡检超自动化的两种路径选择
运维·网络·人工智能·自动化
EasyDSS2 小时前
私有化视频会议系统/智能会议管理系统EasyDSS打造安全高效的数字化培训新模式
安全
Bruce_kaizy2 小时前
c++网络编程——解析主机字节序、网络字节序以及深入剖析tcp编程中万恶的结构体(爆肝)
linux·服务器·网络·tcp/ip·ubuntu
不爱吃糖的程序媛2 小时前
鸿蒙应用内添加服务卡片到桌面:formProvider.openFormManager 实战
华为·harmonyos
TE-茶叶蛋2 小时前
Next.js中App Router 全部特殊文件一览
开发语言·javascript·网络
不爱吃糖的程序媛2 小时前
hionic框架设备信息获取:@ionic-native/device 插件在鸿蒙PC平台的适配实践
华为·harmonyos