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、测试
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建立很简单略过。
1、在UNclient3上引入外部路由测试会反射给那些设备:
RR2/RR1上学习到了(此为正常的BGP传递规则,本地学习到的路由会发送给所有BGP邻居)
client1/client2上:同时收到了RR1和RR2上反射的路由,所以表中有两条
unclient2上没有路由:BGP的正常传递规则,从IBGP学习到的路由不传递给IBGP邻居,也就是client2从RR上学习到的没有传递给unclient2
unclient4上没有路由:
AS300/AS200都是有路由的:
太繁琐不一一测试,直接结论
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的防护作用双方不会交互除本地路由外学到的路由
看下面例子:
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对比相同,则直接丢弃此条路由。
拿掉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,也是为了防环,避免回注产生环路。
以上就是集群内的防环机制,通过cluster list与originator实现。