BGP路由反射器技术详解
IBGP路由传递原则可以认为只传一跳,在实际的网络中,设备非常多,网络联接非常复杂,不太可能每个AS内的设备都有邻居关系,但路由又必须传递下去。为了解决这一麻烦,推出了路由反射器技术,可以大量减化设备配置,也可以减少邻居条目,还可以减轻设备CPU负担,在实际网络环境中被大量使用,因为反射器配置非常简单。
路由反射器传递原则:
1、RR收到一条EBGP路由,会将其发送给所有EBGP邻居与IBGP邻居,包含反射器群成员及非成员
2、RR收到一条RRC发送的IBGP路由,会将其发送给所有EBGP邻居,也会发给所有的RRC及Non-RRC
3、RR收到一条Non-RRC发送的IBGP路由,会将其发送给所有的EBGP邻居及RRC,不会发送给Non-RRC
在网络复杂的情况下有可能在一个反射器群内出现路由环路,为了避免出现环路,在反射器群组内将会启用Cluster-ID和Originator-ID,通过这两种属性可防止环路产生。
Cluster_List属性
路由反射器和它的客户机组成一个集群(Cluster),使用AS内唯一的Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。Cluster ID为该路由器的Route-ID。
1、当一条路由第一次被RR反射的时候,RR会把本地Cluster ID添加到Cluster List的前面。如果没有Cluster_List属性,RR就创建一个。
2、当RR接收到一条更新路由时,RR会检查Cluster List。如果Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地Cluster ID,将其加入Cluster List,然后反射该更新路由。
Originator_ID属性
Originator ID由RR产生,使用RR上一跳路由器的Router ID标识路由的始发者,用于防止集群内产生路由环路。
1、当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。
2、当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同,则不接收此路由。
实验配置:
如上图,R6通行6.0环回路由,在R2,R3,R4上分别设置反射器,查看R5选路情况
R2,R3,R4配置反射器:peer 5.5.5.5 reflect-client(类似命令)
BGP routing table entry information of 6.6.6.0/24:
From: 35.1.1.3 (13.1.1.3)
Route Duration: 01h24m11s
Relay IP Nexthop: 35.1.1.3
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 13.1.1.1
Qos information : 0x0
AS-path 6, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, best, select, active, pre 255, IGP cost 2
Originator: 1.1.1.1
Cluster list: 2.2.2.2
Advertised to such 1 peers:
45.1.1.4
BGP routing table entry information of 6.6.6.0/24:
RR-client route.
From: 45.1.1.4 (24.1.1.4)
Route Duration: 01h24m08s
Relay IP Nexthop: 45.1.1.4
Relay IP Out-Interface: GigabitEthernet0/0/1
Original nexthop: 12.1.1.1
Qos information : 0x0
AS-path 6, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, IGP cost 3, not preferred for IGP cost
Originator: 1.1.1.1
Cluster list: 4.4.4.4, 3.3.3.3
Not advertised to any peer yet
查看路由详细描述可知两条路径中所添加的 Cluster 。
备份RR:
RR在一个Cluster区域内作为一个非常重要的角色存在,如果RR出现故障,则会为网络带来非常严重的问题,部分路由器将无法获得路由,直接导致网络瘫痪,为避免此类问题发生,可在Cluster区域内配置多个RR,即备份RR。
在有多个RR的环境中,恐出现路由环路,因此,在所有的RR上必须配置相同的Cluster-ID。路由器在接收到路由时会查看Cluster-ID,若Cluster-ID与本地所配置的ID一致,则丢弃该路由
拓扑描述:
当客户机Client1从外部对等体接收到一条更新路由(202.100.1.0/24)后,它通过IBGP向RR1和RR2通告这条路由。
1、RR1接收到该更新路由后,它向其他的客户机(RRC2、RRC3)和非客户机(RR2)反射,同时将本地Cluster_ID添加到Cluster_List前面。
2、RR2接收到该反射路由后,检查Cluster_List,发现自己的Cluster_ID已经包含在Cluster_List中。因此,它丢弃该更新路由,不再向自己的客户机反射。
同级反射器:
在一个AS中可能存在多个集群,为了让路由能够在各集群之间进行传递,可配置同级反射器,即在一个集群内,RR与RRC保持关系,在集群之间,各RR之间建立普通的IBGP连接,基于反射器的路由传递原则,这样在一个AS内的所有设备都能够同步路由。如下图所示:
分级反射器:
在多个Cluster的环境中也可以配置分级反射器技术,上层RR指向下层的路由器为RRC,而下层的RRC则指向更下一层的路由器RRC,逻辑拓扑如下:
通过配置分级反射器也可将AS内的所有路由同步。