一、引言:大型BGP网络的挑战
在大型BGP网络架构中,传统的IBGP全连接架构会带来严重的扩展性问题。当网络中存在N台路由器时,需要维护N*(N-1)/2个IBGP连接,这对设备资源和运维管理都是巨大挑战。本文将深入解析两种主流解决方案:路由反射器和联邦体系。
二、路由反射器(Route Reflector)技术解析
场景
问题:
当R2学到他的EBGP对等体R1来的路由后会发送给R3,但是由于IBGP水平分割的限制,R3是无法把路由发送给他的IBGP对等体R4和R5的。
2.1 核心架构原理
路由反射器(RR)通过建立层次化结构打破IBGP水平分割规则:
当我们将一台设备制定成为路由反射器后,同时需要制定他的一个或多个的IBGP对等体作为他的客户。(client)剩余没有被指定为客户的IBGP对等体称为非客户。
- 反射簇:由RR及其客户端组成,簇ID默认采用RR的Router ID
- 角色定义:
- RR(路由反射器):负责路由转发的中枢
- Client(客户端):仅需与RR建立连接
- Non-Client(非客户端):需要与RR保持全连接
2.2 路由反射规则详解
路由来源 | 反射方向 | 典型场景 |
---|---|---|
客户端 | 反射给所有客户端和非客户端 | 分支机构路由传播 |
非客户端 | 仅反射给所有客户端 | 数据中心间路由同步 |
EBGP对等体 | 正常转发给所有IBGP节点 | 互联网路由注入 |
总结为“非非不传”
2.3 防环机制深度剖析
路由反射器实际上通过打破 IBGP 水平分割来实现更灵活的路由传播,所以会有环路出现,这时利用属性来防止路由环路,确保网络的稳定性和可靠性。
路由反射器通过两个关键属性防止环路:
1. Originator_ID
- 记录路由始发者的Router ID
- 当路由器收到携带自身ID的路由时自动丢弃
2. Cluster_List
- 记录路由经过的反射簇ID序列
- 检测到重复簇ID立即终止传播
2.4 配置
#只需在RR上指定client即可
[r3-bgp]peer 2.2.2.2 reflect-client
查看BGP路由详细信息
注意:因为以上两个防环属性是IBGP对等体内部进行防环使用,所以,在发送给自己EBGP对等体时,将不携带。
三、联邦(Confederation)体系架构
3.1 联邦核心设计理念
通过AS嵌套机制实现逻辑分割:
- 成员AS:内部使用私有AS号(64512-65535)
- 联邦AS:对外显示统一公有AS号
- 路由传播:
- 联邦内使用EBGP协议交互
- 对外路由隐藏内部AS细节
3.2 典型配置示例
1)拓补:
2)基础配置准备:
1. 划分IP地址:
路由器 | 环回地址 | 物理接口地址示例 |
---|---|---|
AR1 | 1.1.1.1/24 | GE0/0/0: 12.0.0.1/24 |
AR2 | 2.2.2.2/24 | GE0/0/0: 12.0.0.2/24 GE0/0/1: 23.0.0.1/24 |
AR3 | 3.3.3.3/24 | GE0/0/0: 23.0.0.2/24 GE0/0/1: 34.0.0.1/24 |
AR4 | 4.4.4.4/24 | GE0/0/0: 34.0.0.2/24 GE0/0/1: 45.0.0.1/24 |
AR5 | 5.5.5.5/24 | GE0/0/0: 45.0.0.2/24 GE0/0/1: 56.0.0.1/24 |
AR6 | 6.6.6.6/24 | GE0/0/0: 56.0.0.2/24 |
2. AS2内部配置OSPF实现互通
3)联邦核心配置
R1:
[r1-bgp]dis this
[V200R003C00]
#
bgp 1
router-id 1.1.1.1
peer 12.0.0.2 as-number 2 (AS之间还是以大AS建邻)
#
ipv4-family unicast
undo synchronization
network 1.1.1.0 255.255.255.0
peer 12.0.0.2 enable
#
return
R2:
[r2-bgp]dis this
[V200R003C00] # 设备系统版本V200R003C00
#
bgp 64512 # 启动BGP进程,使用私有AS号64512(成员AS号)
router-id 2.2.2.2 # 设置BGP路由器ID(需与环回地址一致)
confederation id 2 # 声明联邦公有AS号
# IBGP对等体配置(连接同成员AS的AR3)
peer 3.3.3.3 as-number 64512 # 指定邻居AS号
peer 3.3.3.3 connect-interface LoopBack0 # 使用环回口建立邻居
# EBGP对等体配置(连接外部AS1的AR1)
peer 12.0.0.1 as-number 1 # 指定邻居AS号(物理接口直连)
#
ipv4-family unicast # 进入IPv4单播地址族视图
undo synchronization # 关闭BGP与IGP同步(华为默认关闭)
# 在IPv4地址族下激活邻居
peer 3.3.3.3 enable # 使能IBGP邻居的IPv4路由交换
peer 3.3.3.3 next-hop-local # 修改下一跳为自身(华为设备必须显式配置)
peer 12.0.0.1 enable # 使能EBGP邻居的IPv4路由交换
#
return
R3:
[r3-bgp]dis this
[V200R003C00]
#
bgp 64512
router-id 3.3.3.3
confederation id 2
confederation peer-as 64513 # 声明联邦邻居AS
peer 2.2.2.2 as-number 64512
peer 2.2.2.2 connect-interface LoopBack0
peer 4.4.4.4 as-number 64513
peer 4.4.4.4 ebgp-max-hop 255
peer 4.4.4.4 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 4.4.4.4 enable
#
return
R4:
[r4-bgp]dis this
[V200R003C00]
#
bgp 64513
router-id 4.4.4.4
confederation id 2
confederation peer-as 64512 # 声明联邦邻居AS
peer 3.3.3.3 as-number 64512
peer 3.3.3.3 ebgp-max-hop 255
peer 3.3.3.3 connect-interface LoopBack0
peer 5.5.5.5 as-number 64513
peer 5.5.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 3.3.3.3 enable
peer 5.5.5.5 enable
#
return
R5:
[r5-bgp]dis this
[V200R003C00]
#
bgp 64513
router-id 5.5.5.5
confederation id 2
peer 4.4.4.4 as-number 64513
peer 4.4.4.4 connect-interface LoopBack0
peer 56.0.0.2 as-number 3
#
ipv4-family unicast
undo synchronization
peer 4.4.4.4 enable
peer 56.0.0.2 enable
#
return
R6:
[r6-bgp]dis this
[V200R003C00]
#
bgp 3
router-id 6.6.6.6
peer 56.0.0.1 as-number 2
#
ipv4-family unicast
undo synchronization
peer 56.0.0.1 enable
#
return
联邦也打破了IBGP水平分割,所以,也有可能出环,因为已经成为EBGP对等体关系,则可以直接使用EBGP对等体的水平分割---即通过AS_PATH属性来进行防环。
注意,联邦的AS号使用小括号括起来,在防环时,需要防止回传,但是,在选路时,直接不考虑。因为联邦的AS号是IBGP对等体内部进行防环使用,所以,在发送给自己EBGP对等体时,将不携带。