BGP路由反射器
BGP路由反射器
YangBGP路由反射器
由于水平分割的原因,为了保证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的路由反射器客户端。
配置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的明细信息
R2将该条路由通告给了R3、R1,但是并未通告给R4。
#R3上查看BGP路由10.2.2.0/24的明细信息
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的明细信息
该条路由来自反射器客户端R3,原始路由经由R3反射,路由的nexthop地址并未改变,同时R3为其添加了Orginator_ID属性,值为10.0.2.2。同时R4将该条路由反射给了R2。
#再次在R2上查看BGP路由10.2.2.0/24的明细信息
依旧只存在本地通告的BGP路由,没有R4通告的BGP路由。
#在R2上查看BGP对等体10.0.4.4的详细信息
display bgp peer 10.0.4.4 verbose
从输出信息可以看到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的明细信息
R1为BGP路由10.1.1.0/24的始发者,R1将路由通告给了R2
来自路由反射器客户端R1的BGP路由10.1.1.0/24,R2将其反射给了R3
来自路由反射器客户端R2的BGP路由10.1.1.0/24,R2反射时添加了Cluster_List属性,值为10.0.2.2,R3将该条路由反射给了R4
来自路由反射器客户端R3的BGP路由10.1.1.0/24,R3反射时添加了Cluster_List属性的值,当前值为10.0.3.3,10.0.2.2,R4将该条路由反射给了R2
#再次查看R2的BGP路由表
R2的BGP路由表中依旧只有一条来自r1的BGP路由10.1.1.0/24。
4通告的BGP路由其Cluster_List属性值中包含了R2的Cluster-ID,R2忽略了该路由通告。