前置说明:该笔记作用于 BGP 路由反射器理论与命令参考讲解
参考视频:红茶三杯
我们先来回顾 BGP 的第一天学习知识:
直接的观察上图,我们发现存在一个中转 AS ( Transit AS ),可以很直接了笃定,如果 D,C 不起 BGP 路由协议,那么将造成 路由黑洞 的问题
但是如果起了 BGP ,我们就需要注意 IBGP 的 水平分割原则:我从一个 IBGP 学习到的路由,我将不会再转发给我的任何 IBGP 邻居。所以为了避免水平分割的原则,造成 timeout,我们必须再 AS-Transit 中起一个全互联的 BGP neighbor 关系,我们将这种中转关系叫做 Full mesh neighbors
这种情况其实很常见,可是 BGP 配置就已经够烦人了,关系到各种路由策略,我还的关心路由黑洞和水平分割,不得玩疯了?
这个时候啊,BGP 路由反射器就诞生了
中转 AS 中的 IBGP 问题:-
AS 内要求 IBGP 全互联 ( IBGP 水平分割)
-
BGP Routers
- 需维护大量的 TCP 及 BGP 连接
- 网络中充斥着 BGP 路由信息
-
解决方案
- 路由反射器
- BGP 联邦
关键字:Route Reflector == 路由反射器 RR
观察上图:
因为 IBGP 水平分割原则,导致 AS 内部需要维护大量的 BGP 连接 (要求 IBGP 全互联 full mesh ),从而影响网络性能,路由反射器可以 “放宽” 水平分割原则,缓解该问题。
其实,说白了,我们就是不愿意,不想去给 R3 和 R5 起 BGP 邻居关系,这样会浪费网络性能
0x02 路由反射器基础关于路由反射器 RR route reflector 我们可以将其形象的理解为一面镜子
观察下图:
我们可以发现,存在一个 Client -> RR (Route Reflector) 的关系,
如果我们在 R4 上起路由反射器,将 R3 作为 Client,**那么 R4 将会把从 R3 发送给 R4 的路由信息反射到 **R5 上,从而使得 R5 跨越水平分割的屏障,学习到 R4 的路由。
0x03 路由反射规则 1:如果路由学习自非 Client IBGP Peer,则反射给所有 Client
2:如果路由学习自 Client,则反射给所有非 Client IBGP 邻居和除了该 Client 以外的所有 Client
3:如果路由学习自 EBGP Peer,则发送给所有 Client 和非 Client IBGP 邻居
巩固实例 1: 巩固实例 2: 0x04 Route Reflector 防环路径属性 由于我们使用路由反射器去放宽水平分割原则,这样就回给环路带来一定隐患
通常 Route Reflector 部署在 Transit AS 内部,那么既然为 AS 内部,则 AS-Path 防环无效,为了避免水平分割与路由黑洞,起路由反射器,但我们也需要注意路由反射器的防环
Route Reflector 防环属性:
- Originator_ID
- Cluster_list
参考图:
通过观察上图,我们可以发现:
1:Originator_ID 是标记一个路由起源,即 R3 的 Router ID
2:Cluster_list,则是 RR 标记上去的一个反射簇
二者都类似于 AS-path 属性的防环特点
3:Originator_ID,在反射出去后会一直携带,且不改变值
4:Cluster_list,则每经过一次反射,会被 Route Reflector 路由器标记下自己的 Route ID 存在该 list 中
参考示例 1: 参考示例 2:这里每一个圈代表一个反射簇
R1 是 R2 的 Client
R1 是 R3 的 Client
R3 是 R4 的 Client
我们可以看到,反射器的路径属性优选方式为 Cluster list 少者优先,标记 Best
0x05 Route Reflector 部署冗余BGP 路由反射特性属于 BGP 中的高级特性,其具备基本防环性质,同时可减少 BGP TCP 连接,为网络带来优化
所以,如果我们在 Transit AS 内部署路由反射,那么我们就必须考虑 Route Reflector 的冗余性。
如果我们不考虑反射器的冗余,一旦唯一的 RR 挂了,那么 BGP AS 内部,就是水平分割的天下了。
参考图:
- 冗余 RR 增加了网络的健壮性
- 使用 Originator_ID、Cluster_list 属性在冗余 RR 环境中避免路由环路 (该属性默认由 RR 携带并传递)
- 将两个 RR 的 Cluster_ID 配置为一样,那么可以起到进一步的防环作用
- 所有的 RR 之间采用 IBGP full mesh
命令示例:
router bgp 123 neighbor 1.1.1.1 remote-as 123 neighbor 1.1.1.1 update-source Loopback0 neighbor 1.1.1.1 route-reflector-client !!! `基本配置路由反射器就一条命令,指定 Client,因为 Client 并不知道自己属于反射簇,只有 RR 知道` `neighbor Client-ip-address route-reflector-client`
RR 可修改自己的 cluster-id
route-bgp 123 bgp cluster-id 222.222.222.222实验参考图: 实验 topology 图参考
关键配置在于 Route-Reflector
Route-Refelctor(config-router)#neighbor 2.2.2.2 route-reflector-client
最后在 R4 验证,存在 Route-Reflector 反射过来的路由
R4#show ip bgp
BGP table version is 3, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i100.1.1.0/24 2.2.2.2 0 100 0 100 i
*>i200.1.1.0 2.2.2.2 0 100 0 100 i
R4#show ip bgp 100.1.1.0
BGP routing table entry for 100.1.1.0/24, version 2
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Flag: 0x820
Advertised to update-groups:
2
100
2.2.2.2 (metric 129) from 3.3.3.3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, valid, internal, best
'Originator: 2.2.2.2, Cluster list: 3.3.3.3'
完整配置如下
!! R1 interface Loopback0 ip address 100.1.1.1 255.255.255.0 ! interface Loopback1 ip address 200.1.1.1 255.255.255.0 ! interface Serial0/0 ip address 10.1.1.1 255.255.255.0 ! router bgp 100 network 100.1.1.0 mask 255.255.255.0 network 200.1.1.0 neighbor 10.1.1.2 remote-as 234 ! end
!! Client interface Loopback0 ip address 2.2.2.2 255.255.255.255 ! interface Serial0/0 ip address 10.1.1.2 255.255.255.0 ! interface Serial0/1 ip address 20.1.1.1 255.255.255.0 ! router ospf 1 network 2.2.2.2 0.0.0.0 area 0 network 20.1.1.1 0.0.0.0 area 0 ! router bgp 234 neighbor 3.3.3.3 remote-as 234 neighbor 3.3.3.3 update-source Loopback0 neighbor 3.3.3.3 next-hop-self neighbor 10.1.1.1 remote-as 100 ! end
!! Route-Reflector interface Loopback0 ip address 3.3.3.3 255.255.255.0 ! interface Serial0/1 ip address 20.1.1.2 255.255.255.0 ! interface Serial0/2 ip address 30.1.1.1 255.255.255.0 ! router ospf 1 network 3.3.3.3 0.0.0.0 area 0 network 20.1.1.2 0.0.0.0 area 0 network 30.1.1.1 0.0.0.0 area 0 ! router bgp 234 neighbor 2.2.2.2 remote-as 234 neighbor 2.2.2.2 update-source Loopback0 neighbor 2.2.2.2 route-reflector-client neighbor 4.4.4.4 remote-as 234 neighbor 4.4.4.4 update-source Loopback0 ! end
!! R4 interface Loopback0 ip address 4.4.4.4 255.255.255.0 ! interface Serial0/0 ip address 40.1.1.1 255.255.255.0 ! interface Serial0/2 ip address 30.1.1.2 255.255.255.0 ! router ospf 1 network 4.4.4.4 0.0.0.0 area 0 network 30.1.1.2 0.0.0.0 area 0 ! router bgp 234 neighbor 3.3.3.3 remote-as 234 neighbor 3.3.3.3 update-source Loopback0 neighbor 40.1.1.2 remote-as 500 ! end
!! R5 interface Loopback0 ip address 5.5.5.5 255.255.255.255 ! interface Serial0/0 ip address 40.1.1.2 255.255.255.0 ! router bgp 500 neighbor 40.1.1.1 remote-as 234 ! end
该笔记参考 朱sir(红茶三杯) 视频所作



