一、路由反射器
引入反射器可以简化IBGP全互联的需求配置,可以减轻网络和CPU的负担和不必要的BGP Update;
IBGP全互联是因为IBGP的水平分割防环机制;
水平分割防环机制是指在BGP(边界网关协议)的IBGP(内部边界网关协议)环境中,路由器从一个IBGP邻居学习到的路由,不会再通过另一个IBGP邻居传递出去,从而避免路由环路。
具体含义:在AS(自治系统)内部运行IBGP协议时,若没有水平分割机制,路由可能在IBGP邻居间循环传递。例如,路由器A将路由传给B,B又传给C,C再传给A,形成环路。水平分割机制通过禁止路由器从某个IBGP邻居学到的路由向另一个IBGP邻居传递,从根本上防止了这种环路的产生。
引入路由反射器之后存在的三种角色:
RR(Route Reflector):路由反射器
Client:客户机
Non-Client:非客户机
(是否为客户机是由RR指定的)
RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联。
(简单理解为,由于水平分割防环机制因此需要IBGP全互联,由于IBGP全互联导致网络设备CPU的负担和不必要的BGP Update报文,因此引入路由反射器使得IBGP路由在AS内传播无需建立IBGP全互联)
路由反射器的相关角色:
RR:允许把IBGP对等体学习到的路由反射到其他IBGP对等体的设备(类似OSPF网络中的DR)
Client:与RR形成反射关系的IBGP设备(在AS内部只需要与RR直连)
Non-Client:既不是RR也不是客户机的IBGP设备。(在AS内部,非客户机与RR之间,以及所有的非客户机之间必须建立全互联关机)
Originator(始发者):在AS内部始发路由的设备。(Originator_ID属性用于防止集群内部产生路由环路)
Cluster(集群):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路
(将一台路由器指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何RR相关的配置,它并不知晓网络中存在RR)
二、路由反射规则
1、RR在接收到BGP路由时:
1.1、若RR是从自己的非客户对等体学习到的一条IBGP路由,则它将该路由反射给所有客户;
1.2、若RR时从自己的客户对等体学习到的一条IBGP路由,则它将该路由反射给所有非客户,以及除了该客户之外的其他所有客户;
1.3、若路由从EBGP学习到路由,则发送给所有的客户、非客户IBGP对等体;
(路由反射规则简单总结为"非非不传" ,即非客户端与非客户端之间不进行路由传递)
注:
1)当RR执行路由反射时,它只将自己使用的,最优的BGP路由进行反射。
2)RR在进行路由反射时不会修改任何属性;RR在进行路由发送时会修改"下一跳"属性;

三、路由反射器防环机制:Originator ID与Cluster List
一、Originator ID
1、BGP的非过渡属性;
2、Originator ID由RR产生,使用的Router ID的值标识路由的发送者,用于防止集群内产生路由环路;
3、当一条路由第一次被RR反射的时候,RR将Originator ID属性加入这条路由,标识这条路由的起始设备。如果一条路由中已经存在Originator ID属性,则RR将不会创建新的Originator ID属性(此时的Originator ID指的是将该路由传递给RR的路由器的Router ID,不是RR的Router ID)
4、当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同则不接收此路由。

二、Cluster List
1、BGP的可选非过渡属性,用于集群间的防环,由每个路由反射器(RR)生产,记录路由反射器经过的集群;
2、路由反射器和它的客户机组成一个集群(Cluster)。在一个AS内部,每个路由反射器使用唯一的Cluster ID作为集群标识。缺省情况下,每个路由反射器使用自己的Router ID作为集群ID。【reflector cluster-id 65000 //命令用来配置路由反射器的集群ID】
3、为了防止集群间产生路由环路,路由反射器便用Cluster List属性,记录路由经过的所有集群的Cluster ID;
4、当RR在它的客户机之间或者客户机与非客户机之间反射路由时,RR会把本地Cluster ID添加到Cluster List的前面,如果Cluster List为空,RR就创建一个;
5、当RR接收到一条更新路由时,RR就会检查Cluster List。如果Cluster List中已经有本地Cluster ID,则丢弃该路由;如果Cluster List中没有本地Cluster ID,则将其加入Cluster List,然后反射该路由。

四、常见组网:备份RR组网
- 为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。
- 转发路径上的路由器与所有RR均建立IBGP关系,任意一个RR均有完整的BGP路由。

- RR1和RR2在同一个集群内,配置了相同的Cluster ID。
- 单级RR组网路由反射原理(图示以RR1的反射路径为例):
- 当客户机Client1从EBGP对等体接收到一条更新路由,它将通过IBGP向RR1和RR2通告这条路由。
- RR1和RR2在接收到该更新路由后,将本地Cluster ID添加到Cluster List前面,然后向其他的客户机(Client2)反射,同时相互反射。
- RR1和RR2在接收到该反射路由后,检查Cluster List,发现自己的Cluster ID已经包含在Cluster List中。于是RR1和RR2丢弃该更新路由,从而降低BGP的内存占用。(RR之间根据Cluster List 防环)
PS:Cluster ID很类似于使用AS Path防环