路由反射器(Route Reflector)简介

       在使用BGP路由协议的网络中,为保证IBGP对等体之间的连通性,须要在IBGP对等体之间创建全链接关系。假设在一个AS内部有n台路由器,那么应该创建的IBGP链接数就为n(n-1)/2。当IBGP对等体数目不少时,对网络资源和CPU资源的消耗都很大。网络

1、路由反射器的定义ide

       利用路由反射能够解决这一问题。在一个AS内,其中一台路由器做为路由反射器RR(Route Reflector),其它路由器作为客户机(Client)。客户机与路由反射器之间创建IBGP链接。路由反射器和它的客户机组成一个集群(Cluster)。路由反射器在客户机之间传递(反射)路由信息,而客户机之间不须要创建BGP链接。学习

       既不是反射器也不是客户机的BGP路由器被称为非客户机(Non-Client)。非客户机与路由反射器之间,以及全部的非客户机之间仍然必须创建全链接关系。以下图所示。.net

路由反射器

 

 

 

 

 

 

 

2、路由反射器的工做步骤资源

 

       当RR收到IBGP发来的路由,首先使用BGP选择路由的策略选择最佳路由。在公布学习到的路由信息时,RR按照RFC2796中的规则发布路由:路由

 

1)从非客户机IBGP对等体学到的路由,发布给此RR的全部客户机。get

2)从客户机学到的路由,发布给此RR的全部非客户机和客户机(发起此路由的客户机除外)。it

3)从EBGP对等体学到的路由,发布给全部的非客户机和客户机。class

 

       RR的一个好处就是配置方便,由于只须要在反射器上配置,客户机不须要知道本身是客户机。集群

 

3、Originator_ID

 

       RFC2796定义了Originator_ID属性和Cluster_List属性,用于检测和防止路由环路。

 

       Originator_ID属性长4字节,是由路由反射器(RR)产生的,携带了本地AS内部路由发起者的Router ID。

 

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

 

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

 

Originator_ID属性保证路由在反射器和客户机/非客户机之间的不出现循环。

 

4、Cluster_List

 

       对于AS之间,BGP用于防止环路的主要措施是经过AS_Path属性记录途经的AS路径,带有本地AS号的路由将被路由器丢弃;对于AS以内,BGP防止路由环路的方法是禁止IBGP对等体发布从AS内部学来的路由。

 

       路由反射器的实现是基于放宽对“BGP在AS内学到的路由不会在AS中转发”的要求,即容许IBGP对等体之间发布从AS内部学来的路由。在这种状况下,Cluster_List属性被引入,用于防止AS内部的环路。

 

       Cluster_List由一系列的Cluster_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的路由将被丢弃。

原文连接:http://www.net1980.com/2011/06/14/route-reflector/

相关文章
相关标签/搜索