为什么需要路由反射器就是为了打破BGP中从IBGP学到的路由不能再传给IBGP(防止环路),那用什么来防止环路呢?利用Originator_ID和Cluster_List,收到Originator_ID和本地的Router ID,如果两个ID相同,BGP 路由器会忽略掉这条路由,不做处理。更详细的内容请见前面http://tangfangxiao.blog.51cto.com/2116646/646077 

组网需求:

1.R1、R2、R3、R4、R5、R6、R7处于同一AS 10

2.R8处于AS30,R9处于AS20,它们之间通过EBGP与AS10进行通信。

3.在R1发布汇总静态路由10.0.0.0/16至BGP、在R5发布汇总静态路由10.5.0.0/16至BGP、

在R7发布汇总静态路由10.7.0.0/16至BGP、在R8发布汇总静态路由10.8.0.0/16至BGP、

在R9发布汇总静态路由10.9.0.0/16至BGP。

4.运用RR全连接或二级路由反射解决路由反射问题。

AS10 IGP配置如下:

R1:

router ospf 1

 router-id 10.0.0.1

 passive-interface Ethernet0/0

 network 10.0.14.0 0.0.0.3 area 0

 network 10.0.16.0 0.0.0.3 area 0

 network 10.0.12.0 0.0.0.3 area 0

 network 10.0.13.0 0.0.0.3 area 0

 network 10.0.18.0 0.0.0.3 area 0(上面拓扑写错了,是10.0.18.0/30)

 network 10.0.0.1 0.0.0.0 area 0

R2:

router ospf 1

 router-id 10.0.0.2

 passive-interface Ethernet0/1

 network 10.0.0.2 0.0.0.0 area 0

 network 10.0.12.0 0.0.0.3 area 0

 network 10.0.29.0 0.0.0.3 area 0

R3:

router ospf 1

 router-id 10.0.0.3

 network 10.0.0.3 0.0.0.0 area 0

 network 10.0.13.0 0.0.0.3 area 0

R4:

router ospf 1

 router-id 10.0.0.4

 network 10.0.0.4 0.0.0.0 area 0

 network 10.0.14.0 0.0.0.3 area 0

 network 10.0.45.0 0.0.0.3 area 0

R5:

router ospf 1

 router-id 10.0.0.5

 network 10.0.0.5 0.0.0.0 area 0

 network 10.0.45.0 0.0.0.3 area 0

R6:

router ospf 1

 router-id 10.0.0.6

 network 10.0.0.6 0.0.0.0 area 0

 network 10.0.16.0 0.0.0.3 area 0

 network 10.0.67.0 0.0.0.3 area 0

R7:

router ospf 1

 router-id 10.0.0.7

 network 10.0.0.7 0.0.0.0 area 0

 network 10.0.67.0 0.0.0.3 area 0

现在AS内可以连通了,开始配置BGP:

在R1、R4、R6上配置成RR,R2、R3为R1的客户端,R5为R4的客户端,R7为R6的客户端,R1与R8建立EBGP,R2与R9建立EBGP。

R1:

router bgp 10

 no synchronization    //关闭同步

 network 10.0.0.0          //静态发布BGP路由汇总

 neighbor rrc peer-group       //创建一个名为rrc对等组(共享同一BGP策略)

 neighbor rrc remote-as 10           //指定邻居AS为10

 neighbor rrc update-source Loopback0 //指定更新源为LOOP 0

 neighbor rrc route-reflector-client  //指定为RR的客户端RRC

 neighbor rrc next-hop-self       //将下一条改变为自己

 neighbor 10.0.0.2 peer-group rrc   //指定邻居使用对等组策略

 neighbor 10.0.0.3 peer-group rrc   //指定邻居使用对等组策略

 neighbor 10.0.0.4 remote-as 10

 neighbor 10.0.0.4 update-source Loopback0

 neighbor 10.0.0.4 next-hop-self

 neighbor 10.0.0.6 remote-as 10

 neighbor 10.0.0.6 update-source Loopback0

 neighbor 10.0.0.6 next-hop-self

 neighbor 10.0.18.2 remote-as 30

 no auto-summary              //关闭自动汇总

ip route 10.0.0.0 255.0.0.0 Null0     //添加汇总静态路由

R2:

router bgp 10             //RRC只需在RR上配置,RRC只要配置IGBP

 no synchronization

 neighbor 10.0.0.1 remote-as 10

 neighbor 10.0.0.1 update-source Loopback0

 neighbor 10.0.0.1 next-hop-self

 neighbor 10.0.29.2 remote-as 20    //配置EBGP邻居

 no auto-summary

R3:

router bgp 10             //RRC只需在RR上配置,RRC只要配置IGBP

 no synchronization

 neighbor 10.0.0.1 remote-as 10

 neighbor 10.0.0.1 update-source Loopback0

 neighbor 10.0.0.1 next-hop-self

 no auto-summary

R4: 

router bgp 10                //配置成RR,客户端为R5

 no synchronization

 neighbor rrc peer-group

 neighbor rrc remote-as 10

 neighbor rrc update-source Loopback0

 neighbor rrc route-reflector-client

 neighbor rrc next-hop-self

 neighbor 10.0.0.1 remote-as 10

 neighbor 10.0.0.1 update-source Loopback0

 neighbor 10.0.0.1 next-hop-self

 neighbor 10.0.0.5 peer-group rrc

 no auto-summary

R5:

router bgp 10

 no synchronization

 network 10.5.0.0 mask 255.255.0.0      //发布路由到BGP

 neighbor 10.0.0.4 remote-as 10

 neighbor 10.0.0.4 update-source Loopback0

 neighbor 10.0.0.4 next-hop-self

 no auto-summary

ip route 10.5.0.0 255.255.0.0 Null0    //添加汇总静态路由

R6:

router bgp 10              //配置成RR,RRC为R7

 no synchronization

 neighbor rrc peer-group

 neighbor rrc remote-as 10

 neighbor rrc update-source Loopback0

 neighbor rrc route-reflector-client

 neighbor rrc next-hop-self

 neighbor 10.0.0.1 remote-as 10

 neighbor 10.0.0.1 update-source Loopback0

 neighbor 10.0.0.1 next-hop-self

 neighbor 10.0.0.7 peer-group rrc

 no auto-summary

R7:

router bgp 10

 no synchronization

 network 10.7.0.0 mask 255.255.0.0  //发布到BGP

 neighbor 10.0.0.6 remote-as 10

 neighbor 10.0.0.6 update-source Loopback0

 neighbor 10.0.0.6 next-hop-self

 no auto-summary

ip route 10.7.0.0 255.255.0.0 Null0  //添加汇总静态路由

R8:                     

router bgp 30            //配置EBGP

 no synchronization

 network 10.8.0.0 mask 255.255.0.0

 neighbor 10.0.18.1 remote-as 10  //发布到BGP中

 no auto-summary

ip route 10.8.0.0 255.255.0.0 Null0   //添加汇总静态路由

R9:

router bgp 20

 no synchronization

 network 10.9.0.0 mask 255.255.0.0   //发布到BGP中

 neighbor 10.0.29.1 remote-as 10

 no auto-summary

ip route 10.9.0.0 255.255.0.0 Null0   //添加汇总静态路由

现在我们可以看到R9能够学习到所有路由,R8也一样:

   Network          Next Hop            Metric LocPrf Weight Path

*> 10.0.0.0         10.0.29.1                              0 10 i

*> 10.5.0.0/16      10.0.29.1                              0 10 i

*> 10.7.0.0/16      10.0.29.1                              0 10 i

*> 10.8.0.0/16      10.0.29.1                              0 10 30 i

*> 10.9.0.0/16      0.0.0.0                  0         32768 i

我们来分析一下10.7.0.0/16路由是怎么传播到R9的:

R7:   Network          Next Hop            Metric LocPrf Weight Path

*>i10.0.0.0         10.0.0.1                 0    100      0 i

*> 10.7.0.0/16      0.0.0.0                  0         32768 i

*>i10.8.0.0/16      10.0.0.1                 0    100      0 30 i

*>i10.9.0.0/16      10.0.0.2                 0    100      0 20 i

首先由R7始发路由,所以下一跳为0.0.0.0,本地始发Weight为32768

然后传播到R6,其它的路由都是由RR反射过来的,

这里显示从RRC10.0.0.7学习到的路由,下一跳开销为101跟OSPF里的值一样,Origin为IGP,由静态发布IGP到BGP中的,MED值默认为0,本地优先级(localpref)默认为100,此路由是有效的,域内的,最优的

从RRC学习到的路由,传播给它的非客户端R1,

由RR反射过来的路由,不会改变下一跳等信息,起源ID为AS始发路由器ID 10.0.0.7,簇列表为RR的ROUTER-ID10.0.0.6,只经过了一个RR反射!

现在我们看一下R4的路由表:

 Network          Next Hop            Metric LocPrf Weight Path

*>i10.0.0.0         10.0.0.1                 0    100      0 i

*>i10.5.0.0/16      10.0.0.5                 0    100      0 i

*>i10.8.0.0/16      10.0.0.1                 0    100      0 30 i

*>i10.9.0.0/16      10.0.0.2                 0    100      0 20 i

很显然没有10.7.0.0/16这条路由。因为从非客户端学习到的路由只会传给RRC,同理RR、R7没有10.5.0.0/16这条路由。

解决方法:1.统一由R1做RR,AS内其它路由器都作为R1的客户端    

     2.RR之间全连接

     3.二级路由反射,R4,R6作为R1的客户端

     4.用联盟

方法-:容易造成单点故障,当核心节点失效后,整个网络将不能互访

配置如下(R2、R3配置不变):

R1:

no router bgp 10    //清除前面的配置

router bgp 10

 no synchronization

 network 10.0.0.0

 neighbor rrc peer-group

 neighbor rrc remote-as 10

 neighbor rrc update-source Loopback0

 neighbor rrc route-reflector-client

 neighbor rrc next-hop-self

 neighbor 10.0.0.2 peer-group rrc

 neighbor 10.0.0.4 peer-group rrc

 neighbor 10.0.0.3 peer-group rrc

 neighbor 10.0.0.5 peer-group rrc

 neighbor 10.0.0.6 peer-group rrc

 neighbor 10.0.0.7 peer-group rrc

 neighbor 10.0.18.2 remote-as 30

 no auto-summary

R4:

no router bgp 10    //清除前面的配置

router bgp 10

 no synchronization

 neighbor 10.0.0.1 remote-as 10

 neighbor 10.0.0.1 update-source Loopback0

 neighbor 10.0.0.1 next-hop-self

 no auto-summary

R5:

no router bgp 10    //清除前面的配置

router bgp 10

 no synchronization

 bgp log-neighbor-changes

 network 10.5.0.0 mask 255.255.0.0

 neighbor 10.0.0.1 remote-as 10

 neighbor 10.0.0.1 update-source Loopback0

 neighbor 10.0.0.1 next-hop-self

 no auto-summary

R6:

no router bgp 10    //清除前面的配置

router bgp 10

 neighbor 10.0.0.1 remote-as 10

 neighbor 10.0.0.1 update-source Loopback0

 neighbor 10.0.0.1 next-hop-self

 no auto-summary

R7:

no router bgp 10    //清除前面的配置

router bgp 10

 no synchronization

 network 10.7.0.0 mask 255.255.0.0

 neighbor 10.0.0.1 remote-as 10

 neighbor 10.0.0.1 update-source Loopback0

 neighbor 10.0.0.1 next-hop-self

 no auto-summary

   Network          Next Hop            Metric LocPrf Weight Path

*>i10.0.0.0         10.0.0.1                 0    100      0 i

*>i10.5.0.0/16      10.0.0.5                 0    100      0 i

*> 10.7.0.0/16      0.0.0.0                  0         32768 i

*>i10.8.0.0/16      10.0.0.1                 0    100      0 30 i

*>i10.9.0.0/16      10.0.0.2                 0    100      0 20 i

现在在R7上看有整个网络的路由了!

方法二:很简单,在R4和R6之间再建立一个IBGP,路由器多的时候就有得忙了

在原来的配置上再加入以下配置:

R4:

neighbor 10.0.0.6 remote-as 10

neighbor 10.0.0.6 update-source loop 0

neighbor 10.0.0.6 next-hop-self

R6:

neighbor 10.0.0.4 remote-as 10

neighbor 10.0.0.4 update-source loop 0

neighbor 10.0.0.4 next-hop-self

这个方法简单吧

方法三:也很简单,用得也比较多

 neighbor 10.0.0.4 remote-as 10  //也可以直接加在前面那个对等组里,就更简单了

 neighbor 10.0.0.4 update-source Loopback0 //方便大家理解就写多点

 neighbor 10.0.0.4 route-reflector-client

 neighbor 10.0.0.4 next-hop-self

 neighbor 10.0.0.6 remote-as 10

 neighbor 10.0.0.6 update-source Loopback0

 neighbor 10.0.0.6 route-reflector-client

 neighbor 10.0.0.6 next-hop-self

就这么简单没了

 

由于字数限制,所以只能发在下一篇