路由反射器及选路原则
方法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 65000I 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上测试一下:
从这两条可以看出一条有起源ID一条没有,起源ID只有经过RR么射后才会有,如上面的路由经R2再通告给R4,R4从客户端学习到的路由再反射给客户端和非客户端(R3),起源ID为AS内始发路由器router-id R2 10.0.0.2 ,簇列表为RR router-id R4 10.0.0.4
我们结合下路由选择原则(
Originator_IDOriginator_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
转载于:https://blog.51cto.com/bozong/1406335