Skip to content

0. 实验目标

本实验将 BGP 邻居、IBGP 传递、Local_Pref、AS_Path、Community、聚合与故障切换放在同一场景中。完成后应能从 display bgp routing-table 解释每一个 *> 和属性变化。

text
                   ISP-A (AS 65010)
                         |
                    192.0.2.0/30
                         |
HQ-EDGE1 (AS 65001) ----- IBGP ----- HQ-EDGE2 (AS 65001)
                         |                         |
                    198.51.100.0/30          203.0.113.0/30
                         |                         |
                   ISP-B (AS 65020)      Branch LAN: 10.10.0.0/16

为简化拓扑图,省略了两台总部边界之间的承载网。实际实验中应先通过 OSPF 或静态路由保证两台设备的 Loopback、IBGP Next_Hop 和各外联地址可达。


1. 验收需求

  1. EDGE1 与 ISP-A、EDGE2 与 ISP-B 建立 EBGP;EDGE1 与 EDGE2 建立 Loopback IBGP。
  2. 两个 ISP 都发布测试前缀 203.0.113.0/24,总部默认经 ISP-A 出口。
  3. ISP-A 故障后,流量可自动切到 ISP-B。
  4. 将 Branch 的 10.10.10.0/2410.10.11.0/24 聚合为 10.10.10.0/23 对外发布,并防止回灌。
  5. 给仅限本 AS 使用的测试路由打 no-export,确认其不会被发布到 EBGP。
  6. 用 AS_Path prepend 让外部网络相对更少选择备用入口。

2. 建立邻居与可达性

以下是 VRP 配置骨架;接口地址和 AS 号可按实验环境替换。

text
# HQ-EDGE1
bgp 65001
 router-id 1.1.1.1
 peer 192.0.2.1 as-number 65010
 peer 10.255.255.2 as-number 65001
 peer 10.255.255.2 connect-interface LoopBack0
 # 把从 ISP-A 学到的路由传给 IBGP 时改写下一跳
 peer 10.255.255.2 next-hop-local

# HQ-EDGE2
bgp 65001
 router-id 2.2.2.2
 peer 198.51.100.1 as-number 65020
 peer 10.255.255.1 as-number 65001
 peer 10.255.255.1 connect-interface LoopBack0
 peer 10.255.255.1 next-hop-local

先验证:

text
display bgp peer
display ip routing-table 10.255.255.1
display ip routing-table 10.255.255.2

只有 peer 为 Established 且下一跳可达,后续选路实验才有意义。


3. 用 Local_Pref 选择主出口

在 EDGE1 的 ISP-A 入方向提高 Local_Pref。该属性会通过 IBGP 传播,因此总部内部设备也会偏向 ISP-A。

text
route-policy PREFER-ISP-A permit node 10
 apply local-preference 200
route-policy PREFER-ISP-A permit node 100

bgp 65001
 peer 192.0.2.1 route-policy PREFER-ISP-A import

在 EDGE1、EDGE2 上比较同一前缀:

text
display bgp routing-table 203.0.113.0 24

预期:来自 ISP-A 的路径带 localpref 200 并标记 *>;来自 ISP-B 的路径仍保留为 valid 备份。


4. 聚合、Community 与外部引流

4.1 对外聚合并保留 AS_Path 防环

text
bgp 65001
 aggregate 10.10.10.0 23 as-set detail-suppressed

as-set 让聚合路由继承明细 AS_Path,避免始发 AS 接受回灌路由;detail-suppressed 仅发布汇总,减少外部路由表条目。验证聚合路由是否带 Atomic-aggregate 和期望的 AS_Path。

4.2 标记不可出 AS 的测试前缀

text
ip ip-prefix TEST-ONLY index 10 permit 10.255.0.0 16
route-policy MARK-NO-EXPORT permit node 10
 if-match ip-prefix TEST-ONLY
 apply community no-export
route-policy MARK-NO-EXPORT permit node 100

bgp 65001
 peer 192.0.2.1 route-policy MARK-NO-EXPORT export
 peer 192.0.2.1 advertise-community

advertise-community 是关键:未显式通告 Community 时,属性可能不会沿 peer 传递。对两个出口按实际需求分别部署策略,避免把测试前缀误发到公网。

4.3 让备用入口较不吸引外部流量

在 EDGE2 对 ISP-B 的出方向追加本 AS 两次:

text
route-policy PREPEND-ISP-B permit node 10
 apply as-path 65001 65001 additive

bgp 65001
 peer 198.51.100.1 route-policy PREPEND-ISP-B export

这影响的是外部 AS 的选路,不会替代本 AS 内由 Local_Pref 决定的主出口策略。


5. 故障演练与验收表

操作预期现象验证命令
正常状态ISP-A 路径 Local_Pref 更高、为 bestdisplay bgp routing-table 203.0.113.0 24
关闭 EDGE1 到 ISP-A 的接口ISP-A 路径撤销,ISP-B 路径升为 best同上、display bgp peer
恢复接口ISP-A 邻居恢复后重新成为 best同上
查看 10.10.10.0/23对外只见聚合,明细受抑制display bgp routing-table 10.10.10.0 23
检查测试前缀具有 no-export 的前缀不应在 EBGP 对端学习本端 display bgp routing-table + 对端 BGP 表
删除 advertise-community 后刷新对端不再获得 Community 标记对端详细 BGP 路由信息

变更边界

在真实网络中执行 Local_Pref、AS_Path prepend、聚合或 Community 策略前,必须先用 route-policy 精确匹配业务前缀,并保留末尾 permit。遗漏末尾 permit 可能使未匹配路由被整体拒绝发布。

6. 复盘问题

  1. 为什么 ISP-B 的 MED 更小,仍可能不被本 AS 选为主出口?
  2. 为什么只在 EDGE1 改 Local_Pref,却能影响 EDGE2 的出口选择?
  3. 为什么聚合时 as-set 能降低回灌风险,detail-suppressed 又可能造成次优?
  4. no-export、AS_Path prepend 分别控制哪个方向的流量?