131302187.jpg

方法3:路由反射器

简单介绍下:路由反射器工作在同一个AS内,路由器的角色分为RR(路由反射器)RRC(路由反射器客户)NOn-Clinet(非客户端)

路由反射器通告原则:当RR收到IBGP发来的路由,首先使用BGP选择路由的策略选择最佳路由。

1.RR只把最佳路由通告反射出去,不会改变路由属性(包括下一跳、LP、MED)

2.从非客户机IBGP对等体学到的路由,发布给此RR的所有客户机

3.RR从客户端学习到的路由,反射给它的所有客户端和非客户端(发起此路由的客户机除外)

4.RR从非客户端节学习到的路由,反射给它的客户端

5.从EBGP对等体学到的路由,发布给所有的非客户机和客户机。

RR的一个好处就是配置方便,因为只需要在反射器上配置,客户机不需要知道自己是客户机。

RR的防环机制:我们知道从一个IBGP学习到的路由不会再传给另一个IBGP,这样做目的是为了防止环路,引入RR就是为了人为的打破这一规则,但也为了防止环路,所以要有一个Originator_ID和Cluster_List。

Originator_ID(起源ID)属性长4字节,是由第一个路由反射器(RR)产生的,携带了本地AS内部路由发起者的Router ID(如果是本AS内的路由器发起的就发始发者Router ID,如果是AS外发起的,就为AS边界路由器的Router ID).

  1)当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起路由器。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID.

  2)当其它BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP 路由器会忽略掉这条路由,不做处理。

 Cluster_List(簇列表)由一系列的Cluster_ID(簇ID,为RR的router-id)组成,描述了一条路由所经过的反射器路径,这和描述路由经过的As路径的AS_Path属性有相似之处。Cluster_List由路由反射器产生。

  1)当RR在它的客户机之间或客户机与非客户机之间反射路由时,RR会把本地Cluster_ID添加到Cluster_List的前面。如果Cluster_List为空,RR就创建一个。

  2)当RR接收到一条更新路由时,RR会检查Cluster_List.如果Cluster_List中已经有本地Cluster_ID,丢弃该路由;如果没有本地Cluster_ID,将其加入Cluster_List,然后反射该更新路由。

  为了保证客户机可以学习到反射器发来的路由,Cluster_ID不能和客户机的Router ID相同。如果相同,客户机会将收到的路由丢弃。Cluster_List只在AS内部传播,从EBGP对等体收到的含有Cluster_List的路由将被丢弃。

R1: router bgp 65000 neighbor 10.0.0.3 remote-as 65000 I neighbor 10.0.0.3 update-source Loopback0

//把下跳改为自己(EBGP默认)

neighbor 10.0.0.4 next-hop-self

                             //关闭自动汇总R2:

neighbor 10.0.0.4 remote-as 65000

neighbor 10.0.0.3 remote-as 65000

R3:

neighbor 10.0.0.1 remote-as 65000

neighbor 10.0.0.1 route-reflector-client neighbor 10.0.0.4 remote-as 65000

neighbor 10.0.0.2 remote-as 65000

neighbor 10.0.0.2 route-reflector-client network 10.0.0.0 mask 255.255.0.0           no auto-summary   //添加一条静态汇总路由,用来发布

router bgp 65000

neighbor 10.0.0.1 update-source Loopback0

neighbor 10.0.0.3 update-source Loopback0

neighbor 10.0.0.2 update-source Loopback0

network 10.3.0.0 mask 255.255.0.0             no auto-summary              //关闭自动汇总 //添加一条静态汇总路由,用来发布 R5上测试一下:
131446236.jpg
从这两条可以看出一条有起源ID一条没有,起源ID只有经过RR么射后才会有,如上面的路由经R2再通告给R4,R4从客户端学习到的路由再反射给客户端和非客户端(R3),起源ID为AS内始发路由器router-id R2 10.0.0.2 ,簇列表为RR router-id R4 10.0.0.4
我们结合下路由选择原则(

131611240.jpg
Originator_ID Originator_ID 和簇列表都相同吧,就比较邻居地址,显然10.0.0.3小于10.0.0.4,所以成为最优的(如果是比较ROUTER-ID的显示是第二条要优)

大家可以看到这张图跟上面那张图唯一变的就是邻居地址吧20.20.20.20(上面是10.0.0.30),看到没有邻居小地址小的变成最优路由了(开始是在面最优,现在是下面这一条了)  大家在做实验中如果发现我的说法是错误的,一定要通知我哦!赶快去验证吧! BGP最优路由选择原则总结: 不能PING通)

,本地始发默认为

5.选择本路由器始发的路由(包括network、重分布、及汇总)

8.选择MED 值最小的路由

112.选择Originator_ID小的路由(没有Originator_ID时,用Router-id和Originator_ID进行比较,哪个小哪个优)Originator_ID和Router-id相同时),选择Cluster_List14.选择邻居地址最小的BGP邻居通告过来的路由(BGP只会向外通告一条最优的路由,所以这里是不可能相同的)

在BGP邻居建立的基础上,将BGP表中最优的路由使用Update报文通告给BGP邻居。

(3)从EBGP学到的路由会通告给它所有的BGP邻居(包括EBGP和IBGP)

(6)BGP是距离矢量路由协议,遵从水平分割原则:包括基于邻居的水平分割、基于AS_Path的水平分割。

(7)BGP邻居一建立,就将自己所有的最优路由通告给它的邻居。

  2)BGP采用增量更新机制:当新发布某些路由时,BGP只将这些新发布的路由通告给邻居;当某些路由失效时,BGP只向邻居发送Withdrawn消息撤销这些路由。(Withdrawn消息:将失效的路由放在BGP Update报文的不可达路由字段中)

Cisco:EBGP:20 IBGP:200本地始发:200

本文出自 “凡人世界” 博客,请务必保留此出处http://tangfangxiao.blog.51cto.com/2116646/646077