BGP 路由反射器

发布于:2022-12-07 ⋅ 阅读:(510) ⋅ 点赞:(0)

author:leadlife

data:2022/9/26

说明:该笔记作用与 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 联邦

0x01 路由反射器技术背景


关键字: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

0x06 Route Reflector 命令参考 🔺


命令示例:

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
本文含有隐藏内容,请 开通VIP 后查看