路由反射器
路由反射器
背景介绍
在 iBGP 环境中,BGP 水平分割规则会阻止从一个 iBGP 邻居学习到的路由再通告给其他 iBGP 邻居。
为保证 AS 内路由的完整传播,传统设计需要在所有 iBGP 路由器之间建立全互联邻居关系。当 AS 内 BGP 节点数量增多时,会导致 iBGP 邻居数量急剧增加,配置复杂、控制平面负担加重。
通过在 AS 内部署 BGP 路由反射器(RR,下文简称 RR),集中建立 iBGP 邻居关系,其余 iBGP 路由器作为路由反射客户端(RR Client,下文简称 RR 客户端),仅与 RR 建立会话,从而减少 iBGP 全互联需求。
网络拓扑

- FGT-1 作为 RR(RR)。
- FGT-2、FGT-3、FGT-4、FGT-5 作为 RR 客户端。
- 所有设备位于同一 AS 65000。
- RR 客户端之间不直接建立 iBGP 邻居,仅与 FGT-1 建立邻居。
- RR 在 RR 客户端之间反射 iBGP 路由。
配置方法
RR 客户端
在 RR 客户端(FGT-2/FGT-3/FGT-4)上,仅需与 RR 建立 iBGP 邻居关系,配置示例如下(基础 BGP 配置略):
config router bgp
set as 65000
set router-id 169.254.10.2
config neighbor
edit "169.254.10.1"
set next-hop-self enable
set interface "Loopback1"
set remote-as 65000
set update-source "Loopback1"
next
end
endRR
RR(FGT-1)需要与 AS 内所有 RR 客户端(FGT-2/FGT-3/FGT-4)分别建立 iBGP 邻居关系,并在邻居配置中启用
route-reflector-client/route-reflector-client6参数:config router bgp set as 65000 set router-id 169.254.10.1 config neighbor edit "169.254.10.2" set soft-reconfiguration enable set interface "Loopback1" set remote-as 65000 set update-source "Loopback1" set route-reflector-client enable next edit "169.254.10.3" set soft-reconfiguration enable set interface "Loopback1" set remote-as 65000 set update-source "Loopback1" set route-reflector-client enable next edit "169.254.10.4" set soft-reconfiguration enable set interface "Loopback1" set remote-as 65000 set update-source "Loopback1" set route-reflector-client enable next end end由于 RR 的客户端可能数量众多,也可以选择使用 BGP 邻居组的方式来简化配置:
config router bgp config neighbor-group edit "RR" set soft-reconfiguration enable set interface "Loopback1" set remote-as 65000 set update-source "Loopback1" set route-reflector-client enable next end config neighbor-range edit 1 set prefix 169.254.10.0 255.255.255.0 set neighbor-group "RR" next end end
NEXT_HOP 属性
在 FortiGate 上,RR 仅改变 iBGP 路由的传播方式,而不会默认修改任何 BGP 路径属性,详情参考:路由 → 动态路由 → BGP → BGP 常见问题 → RR 反射路由无法修改属性章节。
在默认行为下,即使 RR 反射了路由,NEXT_HOP 仍保持为原始学习到的下一跳。例如:
- RR(FGT-1)从 FGT-2 学习到的 iBGP 路由,其 NEXT_HOP 仍指向 FGT-1 的 169.254.10.2。
- RR 客户端 FGT-3/FGT-4 接收到该反射路由后,NEXT_HOP 仍为 FGT-2 的 169.254.10.2,而不是 RR 本身(169.254.10.1)。
- 若 RR 客户端 FGT-3/FGT-4 无法通过 IGP 到达该 NEXT_HOP,则可能导致转发失败。
修改非反射路由 NEXT_HOP
对于非反射路由(如 eBGP 学习的路由),可以在 BGP 邻居配置上开启next-hop-self/next-hop-self6,该方式不会影响被反射的 iBGP 路由:
config router bgp
config neighbor
edit "169.254.10.2"
set remote-as 65001
set next-hop-self enable
next
end
end修改反射路由 NEXT_HOP
在 iBGP 路由反射场景中,next-hop-self/next-hop-self6不会修改被反射的 iBGP 路由的 NEXT_HOP,但 next-hop-self-rr /next-hop-self-rr6参数可以修改反射路由的 NEXT_HOP。
启用后,所有由 RR 反射给 RR 客户端的 iBGP 路由,其 NEXT_HOP 将被统一修改为 RR 自身地址。如下配置:
在 RR(FGT-1)上,对每一个 RR 客户端启用:
config router bgp config neighbor edit "169.254.10.2" set next-hop-self-rr enable next edit "169.254.10.3" set next-hop-self-rr enable next edit "169.254.10.4" set next-hop-self-rr enable next end end或在 RR 的 BGP 邻居组中启用:
config router bgp config neighbor-group edit "RR" set route-reflector-client enable next end end配置完成后,需要在 RR 上执行路由刷新,以触发路由重新学习(详情参考:路由 → 动态路由 → BGP → BGP 路由刷新章节):
execute router clear bgp all soft