一、为什么要做这个实验

在实际的数据中心网络中,企业通常不会只使用一条互联网出口,而是同时接入多个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
2
10.10.10.0/24    Web业务
10.10.20.0/24 AI/API业务

R6 使用两个 Loopback 模拟互联网目标:

1
2
8.8.8.8/32
9.9.9.9/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
2
3
4
5
6
7
8
9
10
router bgp 65000
bgp log-neighbor-changes

neighbor 14.1.1.2 remote-as 65100

neighbor 2.2.2.2 remote-as 65000
neighbor 2.2.2.2 update-source Loopback0

neighbor 3.3.3.3 remote-as 65000
neighbor 3.3.3.3 update-source Loopback0

2. R2 BGP配置

1
2
3
4
5
6
7
8
9
10
router bgp 65000
bgp log-neighbor-changes

neighbor 25.1.1.2 remote-as 65200

neighbor 1.1.1.1 remote-as 65000
neighbor 1.1.1.1 update-source Loopback0

neighbor 3.3.3.3 remote-as 65000
neighbor 3.3.3.3 update-source Loopback0

3. R3 BGP配置

1
2
3
4
5
6
7
8
9
10
11
router bgp 65000
bgp log-neighbor-changes

neighbor 1.1.1.1 remote-as 65000
neighbor 1.1.1.1 update-source Loopback0

neighbor 2.2.2.2 remote-as 65000
neighbor 2.2.2.2 update-source Loopback0

network 10.10.10.0 mask 255.255.255.0
network 10.10.20.0 mask 255.255.255.0

4. R4 BGP配置

1
2
3
4
5
router bgp 65100
bgp log-neighbor-changes

neighbor 14.1.1.1 remote-as 65000
neighbor 46.1.1.2 remote-as 65300

5. R5 BGP配置

1
2
3
4
5
router bgp 65200
bgp log-neighbor-changes

neighbor 25.1.1.1 remote-as 65000
neighbor 56.1.1.2 remote-as 65300

6. R6 BGP配置

1
2
3
4
5
6
7
8
router bgp 65300
bgp log-neighbor-changes

neighbor 46.1.1.1 remote-as 65100
neighbor 56.1.1.1 remote-as 65200

network 8.8.8.8 mask 255.255.255.255
network 9.9.9.9 mask 255.255.255.255

完成基础配置后,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
2
3
4
5
route-map ISP-A-IN permit 10
match ip address prefix-list ISP-A-PREFIX
set local-preference 200

route-map ISP-A-IN permit 20

应用到从 ISP-A 接收路由的入方向:

1
2
router bgp 65000
neighbor 14.1.1.2 route-map ISP-A-IN in

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
2
3
4
5
route-map ISP-B-IN permit 10
match ip address prefix-list ISP-B-PREFIX
set local-preference 200

route-map ISP-B-IN permit 20

应用:

1
2
router bgp 65000
neighbor 25.1.1.2 route-map ISP-B-IN in

最终:

1
2
3
IDC → ISP-A → 8.8.8.8

IDC → ISP-B → 9.9.9.9

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
2
3
4
5
route-map ISP-B-OUT permit 10
match ip address prefix-list WEB
set as-path prepend 65000 65000 65000

route-map ISP-B-OUT permit 20

应用:

1
2
router bgp 65000
neighbor 25.1.1.2 route-map ISP-B-OUT out

此时 R6 对 10.10.10.0/24 看到的两条路径为:

1
2
3
4
5
ISP-A:
65100 65000

ISP-B:
65200 65000 65000 65000 65000

因此 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
2
3
4
5
route-map ISP-A-OUT permit 10
match ip address prefix-list AI
set as-path prepend 65000 65000 65000

route-map ISP-A-OUT permit 20

应用:

1
2
router bgp 65000
neighbor 14.1.1.2 route-map ISP-A-OUT out

综上,最终流量策略为:

流量 主路径
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
2
router bgp 65000
neighbor 14.1.1.2 route-map ISP-A-IN in

修改完成后刷新 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 的本质是:

影响外部网络的选路决策,而不是强制外部网络按照本地要求选路。