BGP路由反射器

BGP路由反射器

由于水平分割的原因,为了保证AS内所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。

然而实现IBGP全互联存在诸多短板:

 路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时。

 AS内BGP网络的可扩展性较差,因为通过纯手工配置命令。

为了解决该问题,可应用到RR路由反射器技术。

1、Client:RR客户端,在RR设备上通过手动指定。

指定命令:peer 邻居 reflect-client

2、除了指定的设备为客户端,其它设备均为非客户端。

实验:

R1、R2、R3、R4都属于AS64511,其连接方式、互联接口地址如图所示。每台设备均创建Loopback0接口,IP地址为10.0.x.x/32,其中x为设备编号。R1、R2上的Loopback1地址分别为10.1.1.1/24、10.2.2.2/24,用于模拟用户网段。

所有设备都使用Loopback0地址作为BGP Router ID,R1与R2、R2与R3、R3与R4、R4与R2之间基于直连接口建立IBGP对等体关系,其中R1为R2的路由反射器客户端,R2为R3的路由反射器客户端,R3为R4的路由反射器客户端。

bgpluy8165208

配置ip地址:略

建立ibgp对等体:略

配置路由反射器

#R2上将R1配置为路由反射器客户端

[R2]bgp 64511

[R2-bgp] peer 10.0.1.1 reflect-client

#R3上将R2配置为路由反射器客户端

[R3]bgp 64511

[R3-bgp] peer 10.0.2.2 reflect-client

#R4上将R3配置为路由反射器客户端

[R4]bgp 64511

[R4-bgp] peer 10.0.3.3 reflect-client

验证Orginator_ID实现路由防环

在本步骤中,我们将在R2上发布BGP路由10.2.2.0/24,并观察该路由依次经路由反射器R3、R4反射后,被通告回R2从而引发潜在路由环路风险的情况。

缺省情况下,R2发布BGP路由后,该路由将被R2直接通告给R4,另一方面也会通过R3反射给R4,此时R4将优选R2直接通告过来的路由,从而不会再将R3反射过来的路由再反射回给R2。为此,我们需要在R2上部署路由策略,使R2不直接向R4通告10.2.2.0/24路由。

#配置路由策略

[R2]acl number 2000

[R2-acl-basic-2000] rule 5 permit

[R2-acl-basic-2000] quit

[R2]route-policy bgp deny node 10

[R2-route-policy] if-match acl 2000

#在BGP中调用路由策略

[R2]bgp 64511

[R2-bgp] peer 10.0.24.4 route-policy bgp export

#在R2上发布路由

[R2]bgp 64511

[R2-bgp] network 10.2.2.0 24

#R2上查看BGP路由10.2.2.0/24的明细信息

chakan102224728

R2将该条路由通告给了R3、R1,但是并未通告给R4。

#R3上查看BGP路由10.2.2.0/24的明细信息

r174808

R3将来自反射器客户端的BGP路由10.2.2.0/24反射给了10.0.34.4(R4)。同时该BGP路由的nexthop为10.0.23.2。

# R4上查看BGP路由10.2.2.0/24的明细信息

r4chakan80119

该条路由来自反射器客户端R3,原始路由经由R3反射,路由的nexthop地址并未改变,同时R3为其添加了Orginator_ID属性,值为10.0.2.2。同时R4将该条路由反射给了R2。

#再次在R2上查看BGP路由10.2.2.0/24的明细信息

zacifa80349

依旧只存在本地通告的BGP路由,没有R4通告的BGP路由。

#在R2上查看BGP对等体10.0.4.4的详细信息

display bgp peer 10.0.4.4 verbose

safhaofbsh1128180629

从输出信息可以看到R2从R4收到了1个Update报文,未向R4发送Update报文(路由策略限制),但是本地BGP路由表中不存在由R4通告的BGP路由10.2.2.0/24。

R4通告的BGP路由Orginator_ID属性值与本地的Router ID一致,R2忽略了该路由通告。

验证Cluster_List实现路由防环

为了方便观察现象,取消R2上的BGP路由发布,在R1上将Loopback1接口路由发布到BGP,观察Cluster_List如何防止环路。

#取消R2上的BGP路由发布

[R2]bgp 64511

[R2-bgp] undo network 10.2.2.0 255.255.255.0

#在R1上将Loopback1接口路由发布到BGP

[R1]bgp 64511

[R1-bgp] network 10.1.1.0 24

#依次在R1、R2、R3、R4上查看BGP路由10.1.1.0 /24的明细信息

xinfuaiell181000

R1为BGP路由10.1.1.0/24的始发者,R1将路由通告给了R2

2xinfahol128181116

来自路由反射器客户端R1的BGP路由10.1.1.0/24,R2将其反射给了R3

3xinmbxmcx1128181206

来自路由反射器客户端R2的BGP路由10.1.1.0/24,R2反射时添加了Cluster_List属性,值为10.0.2.2,R3将该条路由反射给了R4

44xinm1334

来自路由反射器客户端R3的BGP路由10.1.1.0/24,R3反射时添加了Cluster_List属性的值,当前值为10.0.3.3,10.0.2.2,R4将该条路由反射给了R2

#再次查看R2的BGP路由表

zaizaici661435

R2的BGP路由表中依旧只有一条来自r1的BGP路由10.1.1.0/24。

4通告的BGP路由其Cluster_List属性值中包含了R2的Cluster-ID,R2忽略了该路由通告。