天天看点

BGP之备份路由反射器

作者:让我再卷一分钟

为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。由于RR打破了从IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,利用Originator和Cluster list来防环。

Originator_ID属性

Originator ID由RR产生,使用的Router ID的值标识路由的始发者,用于防止集群内产生路由环路。

  • 当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。
  • 当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同,则不接收此路由。

Cluster_List属性

路由反射器和它的客户机组成一个集群(Cluster),使用AS内唯一的Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。

  • 当一条路由第一次被RR反射的时候,RR会把本地Cluster ID添加到Cluster List的前面。如果没有Cluster_List属性,RR就创建一个。
  • 当RR接收到一条更新路由时,RR会检查Cluster List。如果Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地Cluster ID,将其加入Cluster List,然后反射该更新路由。

一、不同Cluster情况

BGP之备份路由反射器

如图,R1,R3,R4,R5属于一个Cluster1,R1作为Cluster1的RR;R2,R3,R4,R5属于一个Cluster2,R2作为Cluster2的RR,R1与R2互为彼此的非客户机。在R3上通告192.168.3.0的路由,根据BGP路由反射规则,R1收到该路由会反射给其客户机R4,R5 和非客户机R2,而R2将192.168.6.0的路由反射给R3,由于反射路由携带了Originator_ID:3.3.3.3,R3发现Originator_ID:3.3.3.3与自己Router ID相同,拒绝接收该路由。

在R2上查看192.168.6.0的BGP明细路由信息,一条路由R3发送而来的,没带Originator_ID和Cluster List属性,一条是由R1反射而来的路由,携带了Originator_ID和Cluster List属性。

BGP之备份路由反射器

反之亦然,R2收到R3传来的路由,也会反射给其客户机R4,R5 和非客户机R1,而R1将192.168.6.0的路由反射给R3,由于反射路由携带了Originator_ID:3.3.3.3,R3发现Originator_ID:3.3.3.3与自己Router ID相同,拒绝接收该路由。

在R1上查看192.168.6.0的BGP明细路由信息,一条路由R3发送而来的,没带Originator_ID和Cluster List属性,一条是由R2反射而来的路由,携带了Originator_ID和Cluster List属性。

BGP之备份路由反射器

R1配置

bgp 100
 router-id 1.1.1.1
 private-4-byte-as enable
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack0
 group IBGP internal
 peer IBGP connect-interface LoopBack0
 peer 3.3.3.3 as-number 100
 peer 3.3.3.3 group IBGP
 peer 4.4.4.4 as-number 100
 peer 4.4.4.4 group IBGP
 peer 5.5.5.5 as-number 100
 peer 5.5.5.5 group IBGP
 #
 ipv4-family unicast
  undo synchronization
  peer 2.2.2.2 enable
  peer IBGP enable
  peer IBGP reflect-client //配置R1为group IBGP中对等体路由反射器
  peer 3.3.3.3 enable
  peer 3.3.3.3 group IBGP
  peer 4.4.4.4 enable
  peer 4.4.4.4 group IBGP
  peer 5.5.5.5 enable
  peer 5.5.5.5 group IBGP           

R2配置

router-id 2.2.2.2
 private-4-byte-as enable
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 connect-interface LoopBack0
 group IBGP internal
 peer IBGP connect-interface LoopBack0
 peer 3.3.3.3 as-number 100
 peer 3.3.3.3 group IBGP
 peer 4.4.4.4 as-number 100
 peer 4.4.4.4 group IBGP
 peer 5.5.5.5 as-number 100
 peer 5.5.5.5 group IBGP
 #
 ipv4-family unicast
  undo synchronization
  peer 1.1.1.1 enable
  peer IBGP enable
  peer IBGP reflect-client //配置R2为group IBGP中对等体路由反射器
  peer 3.3.3.3 enable
  peer 3.3.3.3 group IBGP
  peer 4.4.4.4 enable
  peer 4.4.4.4 group IBGP
  peer 5.5.5.5 enable
  peer 5.5.5.5 group IBGP           

二、相同Cluster情况

BGP之备份路由反射器

如图,R1,R2,R3,R4,R5属于一个Cluster,R1,R2作为Cluster的RR;路由反射器R1和R2在同一个集群内,配置了相同的Cluster ID,在R3上通告192.168.3.0的路由,根据BGP路由反射规则,R1收到该路由会反射给其客户机R4,R5 和非客户机R2,而R2此时作为集群的路由反射器,又作为R1的非客户端,当R2收到R1反射过来的路由,查看Cluster ID与自己相同,拒绝接收该路由,反之亦然;

R1配置:

bgp 100
 router-id 1.1.1.1
 private-4-byte-as enable
 peer 2.2.2.2 as-number 100
 peer 2.2.2.2 connect-interface LoopBack0
 group IBGP internal
 peer IBGP connect-interface LoopBack0
 peer 3.3.3.3 as-number 100
 peer 3.3.3.3 group IBGP
 peer 4.4.4.4 as-number 100
 peer 4.4.4.4 group IBGP
 peer 5.5.5.5 as-number 100
 peer 5.5.5.5 group IBGP
 #
 ipv4-family unicast
  undo synchronization
  reflector cluster-id 999 // 配置cluster-id 为999 (cluster-id 格式又数值类型和IP地址格式两种)
  peer 2.2.2.2 enable
  peer IBGP enable
  peer IBGP reflect-client //配置R1为group IBGP中对等体路由反射器
  peer 3.3.3.3 enable
  peer 3.3.3.3 group IBGP
  peer 4.4.4.4 enable
  peer 4.4.4.4 group IBGP
  peer 5.5.5.5 enable
  peer 5.5.5.5 group IBGP           

R2配置:

bgp 100
 router-id 2.2.2.2
 private-4-byte-as enable
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 connect-interface LoopBack0
 group IBGP internal
 peer IBGP connect-interface LoopBack0
 peer 3.3.3.3 as-number 100
 peer 3.3.3.3 group IBGP
 peer 4.4.4.4 as-number 100
 peer 4.4.4.4 group IBGP
 peer 5.5.5.5 as-number 100
 peer 5.5.5.5 group IBGP
 #
 ipv4-family unicast
  undo synchronization
  reflector cluster-id 999 // 配置cluster-id 为999 (cluster-id 格式又数值类型和IP地址格式两种)
  peer 1.1.1.1 enable
  peer IBGP enable
  peer IBGP reflect-client //配置R2为group IBGP中对等体路由反射器
  peer 3.3.3.3 enable
  peer 3.3.3.3 group IBGP
  peer 4.4.4.4 enable
  peer 4.4.4.4 group IBGP
  peer 5.5.5.5 enable
  peer 5.5.5.5 group IBGP           

R1上查看192.168.3.0的BGP路由信息,R1只接收R3传来的路由,然后反射给其客户机,由于R2的Cluster ID与R1相同,拒绝接收该路由,由于R3的Router ID与反射路由的Originator_ID相同,拒绝接收该路由。

BGP之备份路由反射器

反之亦然,R2上查看192.168.3.0的BGP路由信息,也是一样的原理。

BGP之备份路由反射器

在R4上查看192.168.3.0的BGP路由信息,收到从R1和R2反射的192.168.3.0的路由并且携带了Originator: 3.3.3.3 和Cluster list: 0.0.3.231两个属性值。

为啥Cluster list值不是999,怎么变成0.0.3.231?

十进制99转换为二进制:1111100111

->0000 0000.0000 0000.0000 0011.1110 0111 <=> 0.0.3.231

或者

0.0.3.231 -> 3*256 +231 = 999

BGP之备份路由反射器