IDC网络双出口BGP流量工程实践
一、为什么要做这个实验
在实际的数据中心网络中,企业通常不会只使用一条互联网出口,而是同时接入多个ISP,以提高网络可靠性,并通过 BGP 策略实现更加灵活的流量调度。
因此,本实验模拟一个双出口 IDC 网络:
- IDC:AS 65000
- ISP-A:AS 65100
- ISP-B:AS 65200
- Internet:AS 65300
不单独为验证某一个 BGP 属性,而是模拟一个完整的双出口流量工程场景,在实践中体悟Local Preference、AS-PATH Prepend、Route-map、Prefix-list等技术的作用和意义。
二、网络拓扑与地址规划
1. 网络拓扑

2. 地址规划
公网链路地址规划:
| 链路 | 网段 |
|---|---|
| R1 - R4 | 14.1.1.0/30 |
| R2 - R5 | 25.1.1.0/30 |
| R4 - R6 | 46.1.1.0/30 |
| R5 - R6 | 56.1.1.0/30 |
Loopback地址:
| 设备 | Loopback0 |
|---|---|
| R1 | 1.1.1.1/32 |
| R2 | 2.2.2.2/32 |
| R3 | 3.3.3.3/32 |
R3 使用两个业务网段模拟 IDC 内部服务器业务:
1 | 10.10.10.0/24 Web业务 |
R6 使用两个 Loopback 模拟互联网目标:
1 | 8.8.8.8/32 |
三、基础网络与 BGP 配置
在实施 BGP 流量策略之前,需要先保证控制平面正常,即完成基础网络配置:
AS 65000 内部通过 OSPF 保证 R1、R2、R3 的 Loopback 地址互通,随后通过 Loopback 建立 iBGP 邻居。
AS 65000、AS 65001、AS 65002、AS 65003之间建立eBGP邻居。
1. R1 BGP配置
1 | router bgp 65000 |
2. R2 BGP配置
1 | router bgp 65000 |
3. R3 BGP配置
1 | router bgp 65000 |
4. R4 BGP配置
1 | router bgp 65100 |
5. R5 BGP配置
1 | router bgp 65200 |
6. R6 BGP配置
1 | router bgp 65300 |
完成基础配置后,R3 应能够同时学习两个 ISP 提供的 Internet 路由;而 R6 则应该能够通过两个 ISP 学习 IDC 的业务网段。
四、BGP 流量工程策略
本实验分别控制两个方向的流量:
- IDC → Internet:使用 Local Preference;
- Internet → IDC:使用 AS-PATH Prepend。
1. Local Preference 控制出方向流量
Local Preference 用于控制一个 AS 内部访问外部网络时优先使用哪个出口,因此 Local Preference 数值越大越优先(默认值100)。
本实验将指定路径修改为200,目标是 8.8.8.8/32 通过 ISP-A 进入 IDC 网络,而 9.9.9.9/32 通过 ISP-B 进入 IDC 网络。
R1 配置(匹配:8.8.8.8/32)
配置 Prefix-list:
1 | ip prefix-list ISP-A-PREFIX permit 8.8.8.8/32 |
配置 Route-map:
1 | route-map ISP-A-IN permit 10 |
应用到从 ISP-A 接收路由的入方向:
1 | router bgp 65000 |
R2 配置(匹配:9.9.9.9/32)
类似R1,配置Prefix-list:
1 | ip prefix-list ISP-B-PREFIX permit 9.9.9.9/32 |
配置 Route-map:
1 | route-map ISP-B-IN permit 10 |
应用:
1 | router bgp 65000 |
最终:
1 | IDC → ISP-A → 8.8.8.8 |
2. AS-PATH Prepend 控制入方向流量
Local Preference 主要影响本 AS 的出口选择,如果希望影响外部 AS 访问 IDC 时选择哪个入口时则可以使用 “AS-PATH Prepend”。其基本思想是“人为增加某一方向的 AS-PATH 长度,使外部网络更倾向于选择 AS-PATH 较短的路径”。
因此,这里目标变成了 Internet 要访问 10.10.10.0/24 时经过 ISP-A ,而要访问 10.10.20.0/24 时则经过 ISP-B 。
让 10.10.10.0/24 优先 ISP-A
在 R2 向 ISP-B 发布 Web 业务网段时进行 AS-PATH Prepend:
1 | ip prefix-list WEB permit 10.10.10.0/24 |
做路由策略:
1 | route-map ISP-B-OUT permit 10 |
应用:
1 | router bgp 65000 |
此时 R6 对 10.10.10.0/24 看到的两条路径为:
1 | ISP-A: |
因此 R6 更倾向于通过 ISP-A 访问该业务。
让 10.10.20.0/24 优先 ISP-B
在 R1 向 ISP-A 发布该业务网段时增加 AS-PATH:
1 | ip prefix-list AI permit 10.10.20.0/24 |
做路由策略:
1 | route-map ISP-A-OUT permit 10 |
应用:
1 | router bgp 65000 |
综上,最终流量策略为:
| 流量 | 主路径 |
|---|---|
| IDC → 8.8.8.8 | ISP-A |
| IDC → 9.9.9.9 | ISP-B |
| Internet → 10.10.10.0/24 | ISP-A |
| Internet → 10.10.20.0/24 | ISP-B |
五、配置结果验证
1. 查看 BGP 邻居
1 | show ip bgp summary |
确认相关邻居已经处于 “Established” 状态。
2. 验证 Local Preference
查看 8.8.8.8/32:
1 | show ip bgp 8.8.8.8 |
应该看到经 ISP-A 学习到的路径:
1 | Local Preference = 200 |
查看:
1 | show ip bgp 9.9.9.9 |
应该看到经 ISP-B 学习到的路径:
1 | Local Preference = 200 |
3. 查看 BGP Best Path
1 | show ip bgp |
重点观察 “>” 标记。
对于 8.8.8.8/32,Best Path 应该指向 R1 / ISP-A。
对于 9.9.9.9/32,Best Path 应该指向 R2 / ISP-B。
4. 查看路由表
1 | show ip route bgp |
确认 BGP Best Path 已经进入路由表。
5. 验证 AS-PATH
在 R6 上查看:
1 | show ip bgp 10.10.10.0 |
应该看到 ISP-A 对应路径拥有更短的 AS-PATH,再查看:
1 | show ip bgp 10.10.20.0 |
应该看到 ISP-B 对应路径拥有更短的 AS-PATH。
六、出口故障与 BGP 收敛
正常流量工程完成后,模拟 ISP-A 出口故障。
人为关闭 R1 和 R4 之间的公网链路(此处在 R1 上关闭对应接口为例)。
- 故障前:R3 → R1 → R4 → R6 ,用于访问
8.8.8.8; - 链路故障后:R1 和 R4 之间的 BGP 邻居Down掉了,导致 AS65000 重新计算并认定通过 ISP-B 为最佳路径,
最终流量切换为:R3 → R2 → R5 → R6 。
故障后的验证
查看邻居:
1 | show ip bgp summary |
确认 R1 与 R4 的 BGP 邻居已经 Down。
再查看:
1 | show ip bgp 8.8.8.8 |
确认 ISP-A 路径消失。
查看 RIB:
1 | show ip route 8.8.8.8 |
确认下一跳已经切换至 ISP-B。
最后执行:
1 | traceroute 8.8.8.8 |
确认实际数据流量已经通过 R3 → R2 → R5 → R6 完成转发,说明:BGP 策略决定正常情况下的优选路径,而备用路径的存在可以保证主出口故障后的业务恢复。
七、Troubleshooting:Local Preference 策略未生效
除了验证正常配置,还可以人为制造一个策略错误。假设原本应该配置:
1 | neighbor 14.1.1.2 route-map ISP-A-IN in |
但错误配置成:
1 | neighbor 14.1.1.2 route-map ISP-A-IN out |
此时发现 show ip bgp 8.8.8.8 ,Local Preference 并没有变为 200。
1. 故障排查
首先检查 Prefix-list:
1 | show ip prefix-list |
确认 8.8.8.8/32 被正确匹配。
然后检查 Route-map:
1 | show route-map |
确认 set local-preference 200 存在。
最后检查 BGP Neighbor 策略:
1 | show running-config | section router bgp |
发现 route-map ISP-A-IN 被应用在了 out方向。
2. 根因
Local Preference 用于控制:本 AS 内部应该通过哪个出口访问外部网络。
因此,本实验应该在从 “ISP 接收路由” 的时候(in方向)修改 Local Preference,正确配置为:
1 | router bgp 65000 |
修改完成后刷新 BGP 路由:
1 | clear ip bgp 14.1.1.2 soft in |
3. 修复后的验证
1 | show ip bgp 8.8.8.8 |
此时应该看到 Local Preference = 200 并且 8.8.8.8/32 重新优选 ISP-A。
这一故障也说明:BGP 策略不仅需要检查匹配条件和属性修改,还必须特别注意 Route-map 应用在 Neighbor 的方向。
八、实验总结和知识复盘
本实验完成了一个典型的 IDC 双出口 BGP 流量工程场景。
- 通过
Local Preference实现了 IDC 出方向流量控制。 - 通过
AS-PATH Prepend影响了 Internet 访问 IDC 时的入口选择。
| BGP 属性 | 主要用途 |
|---|---|
| Local Preference | 控制本 AS 出去走哪个出口 |
| AS-PATH Prepend | 影响外部 AS 从哪个入口进入 |
需要特别注意:AS-PATH Prepend 并不能绝对控制入方向流量,因为外部 AS 可能还配置了 Local Preference / Weight / 其他 BGP Policy。
因此 AS-PATH Prepend 的本质是:
影响外部网络的选路决策,而不是强制外部网络按照本地要求选路。





