bgp路由反射器如何避免路由环路 bgp路由反射器防环_华为

拓扑解释

1、AS100中一共7台路由器互为IBGP邻居,其中两台做RR反射器互为冗余,避免单点故障引起的网络瘫痪。

2、AS100中路由器1-4和两台RR进行双线连接作线路冗余,其中client2中外接一台un client2路由器进行IBGP连接,用于测试RR反射器对非client设备的影响。

3、RR1与client1上分别连接一台外部AS路由器做EBGP邻居,测试RR路由反射路径是否会在EBGP上产生影响。

4、RR1互联的设备采用10.0.0.0/30网段,RR2互联的设备采用10.0.1.0/30网段。

配置思路

1、先进行底层配置,接口地址及底层连通性(此段配置略过)。

2、进行BGP配置,注意EBGP处学到的路由再给IBGP邻居时需要命令强制更改下一跳。

3、在两台RR上配置client

4、测试

配置开始

bgp路由反射器如何避免路由环路 bgp路由反射器防环_华为

RR1上:

bgp 100
 group RR external             //创建EBGP组(可以不做,建组方便统一下发策略,简化配置)
 group RR1 internal            //创建IBGP组
 peer 10.0.0.2 group RR1         //配置IBGP加组默认就是本地AS号
 peer 10.0.0.6 group RR1 
 peer 10.0.0.10 group RR1
 peer 10.0.0.14 group RR1
 peer 10.0.0.18 as-number 200       //配置EBGP加组时需要指定AS号
 peer 10.0.0.18 group RR
 peer 10.0.1.17 group RR1
 #
 address-family ipv4 unicast         //开启IPV4单播
  reflector cluster-id 1.1.1.1          //配置簇ID,主要用于RR集群间防环,缺省为router-ID
  peer RR enable                   //激活组成员
  peer RR1 enable
  peer 10.0.0.6 reflect-client           //配置client
  peer 10.0.0.14 reflect-client

  peer 10.0.0.10 next-hop-local      //强制更改下一跳,此处我只做了unclient4,其它设备与其一样,多敲几遍就行

RR2上与RR1类似,其它设备的BGP建立很简单略过。

测试RR的反射机制

1、在UNclient3上引入外部路由测试会反射给那些设备:

RR2/RR1上学习到了(此为正常的BGP传递规则,本地学习到的路由会发送给所有BGP邻居)

bgp路由反射器如何避免路由环路 bgp路由反射器防环_华为_03

bgp路由反射器如何避免路由环路 bgp路由反射器防环_网络协议_04

 client1/client2上:同时收到了RR1和RR2上反射的路由,所以表中有两条

bgp路由反射器如何避免路由环路 bgp路由反射器防环_网络_05

 

bgp路由反射器如何避免路由环路 bgp路由反射器防环_网络协议_06

 unclient2上没有路由:BGP的正常传递规则,从IBGP学习到的路由不传递给IBGP邻居,也就是client2从RR上学习到的没有传递给unclient2

bgp路由反射器如何避免路由环路 bgp路由反射器防环_网络协议_07

 unclient4上没有路由:

bgp路由反射器如何避免路由环路 bgp路由反射器防环_网络协议_07

AS300/AS200都是有路由的:

bgp路由反射器如何避免路由环路 bgp路由反射器防环_网络_09

太繁琐不一一测试,直接结论

 

结论:

1、RR从非client上学习到的路由仅传递给client与EBGP邻居,client收到后不再传递给IBGP邻居,会正常传递给EBGP邻居(由于client对自身角色是无感知的,所以除开RR设备,不管是client、UNclient都按照正常BGP传递规则传递路由)。

2、RR从client上学习到的路由会传递给所有的IBGP邻居,包括client和UNclient,client和UNclient收到路由后按照正常的BGP传递规则传递路由。

注意:如果RR2上的cluster ID配置的与RR1相同则 ,且将RR2与RR1互配为对方的client,则由于簇ID的防护作用双方不会交互除本地路由外学到的路由

看下面例子:

bgp路由反射器如何避免路由环路 bgp路由反射器防环_网络_10

unclient3上:

int loopbakc 0

ip add 2.2.2.2 32

bgp 100

address-family ipv4 un

network 2.2.2.2 255.255.255.255    //将2.2.2.2宣告到BGP进程中

int g0/0

shutdown      // DOWN掉接口避免RR1不从RR2学习直接从冗余线路直接学习到2.2.2.2路由

RR2上:

bgp 100

address-family ipv4 un

reflector cluster-id 1.1.1.1           // RR2上与RR1配置相同的簇ID

network 1.1.1.13 255.255.255.255    //将1.1.1.13宣告到BGP进程中

RR1上:

bgp 100

address-family ipv4 un

reflector cluster-id 1.1.1.1          //RR1与RR2配置相同的簇ID

此时查看RR1上的BGP路由表,学习不到2.2.2.2这条路由,但是是可以学习到RR2本地产生的路由,由于簇ID相同,RR2将2.2.2.2路由打上1.1.1.1的簇ID后发送给RR1,RR1收到后与自身的簇ID对比相同,则直接丢弃此条路由。

bgp路由反射器如何避免路由环路 bgp路由反射器防环_华为_11

 

拿掉RR2的簇ID

RR2上:

bgp 100

address-family ipv4 un

undo reflector cluster-id 1.1.1.1           // 拿掉簇ID

拿掉后在RR1上查看此条路由,可以看到路由已经学习到了,cluster list中ID为10.0.1.9为RR2的缺省数值也就是router-ID,在上面还有originator(起源ID),此ID为始发此条路由的router-id,也是为了防环,避免回注产生环路。

bgp路由反射器如何避免路由环路 bgp路由反射器防环_华为_12

 以上就是集群内的防环机制,通过cluster list与originator实现。