IPRAN中BGP的概念与原理(下)

IPRAN中BGP的概念与原理(下)

一、路由反射器

1、路由反射器简介

路由反射器可以解决当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大的问题。根据网络的实际情况,可以部署备份RR和多级RR。

为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接(Full-mesh)关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。利用路由反射可以解决这一问题。

在一个AS内,其中一台路由器作为路由反射器RR(Route Reflector),其它路由器作为客户机(Client)。客户机与路由反射器之间建立IBGP连接。路由反射器和它的客户机组成一个集群(Cluster)。路由反射器在客户机之间反射路由信息,客户机之间不需要建立BGP连接。

既不是反射器也不是客户机的BGP设备被称为非客户机(Non-Client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。如下图所示。

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

  • 从非客户机IBGP对等体学到的路由,发布给此RR的所有客户机。
  • 从客户机学到的路由,发布给此RR的所有非客户机和客户机(发起此路由的客户机除外)。
  • 从EBGP对等体学到的路由,发布给所有的非客户机和客户机。

RR的配置方便,只需要对作为反射器的路由器进行配置,客户机并不需要知道自己是客户机。

在某些网络中,路由反射器的客户机之间已经建立了全连接,它们可以直接交换路由信息,此时客户机到客户机之间的路由反射是没有必要的,而且还占用带宽资源。路由器支持配置命令undo reflect between-clients来禁止客户机之间的路由反射,但客户机到非客户机之间的路由仍然可以被反射。缺省情况下,允许客户机之间的路由反射。

2、Originator_ID属性和Cluster_List属性

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

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

  • 当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起路由器。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID。
  • 当其他BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP Speaker会忽略掉这条路由,不做处理。

Cluster_List属性由一系列的Cluster_ID组成,描述了一条路由所经过的反射器路径,这和描述路由经过的AS路径的AS_Path属性有相似之处。Cluster_List由路由反射器产生。

对于AS之间,BGP用于防止环路的主要措施是通过AS_Path属性记录途经的AS路径,带有本地AS号的路由将被路由器丢弃;对于AS之内,BGP防止路由环路的方法是禁止IBGP对等体发布从AS内部学来的路由。RR的实现是基于放宽对“BGP在AS内学到的路由不会在AS中转发”的要求,即允许IBGP对等体之间发布从AS内部学来的路由。在这种情况下,Cluster_List属性被引入,用于防止AS内部的环路。路由反射器和它的客户机组成一个集群(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,然后反射该更新路由。

3、备份RR

为增加网络的可靠性,防止单点故障,有时需要在一个集群中配置一个以上的路由反射器。这时,相同集群中的路由反射器要共享相同的Cluster_ID,以避免路由环路。路由器需要使用命令reflector cluster-id给所有位于同一个集群内的路由反射器配置相同的Cluster_ID。

在冗余的环境里,客户机会收到不同反射器发来的到达同一目的地的多条路由,这时客户机应用BGP选择路由的策略来选择最佳路由。

如下图,路由反射器RR1和RR2在同一个Cluster内。RR1和RR2之间配置IBGP连接,即两个反射器互为非客户机。

  • 当客户机Client1从外部对等体接收到一条更新路由后,它通过IBGP向RR1和RR2通告这条路由。
  • RR1接收到该更新路由后,它向其他的客户机(Client2、Client3)和非客户机(RR2)反射,同时将本地Cluster_ID添加到Cluster_List前面。
  • RR2接收到该反射路由后,检查Cluster_List,发现自己的Cluster_ID已经包含在Cluster_List中。因此,它丢弃该更新路由,不再向自己的客户机反射。

说明:Cluster_List的应用保证了同一AS内的不同RR之间不出现路由循环。

4、AS内多个集群

一个AS中可能存在多个集群(Cluster)。各个RR之间是IBGP对等体的关系,一个RR可以把另一个RR配置成自己的客户机或非客户机。因此可以灵活的配置AS内部集群与集群之间的关系。

例如,一个骨干网被分成多个反射集群,每个RR将其它的RR配置成非客户机,各RR之间建立全连接。每个客户机只与所在集群的RR建立IBGP连接。这样该自治系统内的所有BGP路由器都会收到反射路由信息。如下图所示。

5、分级反射器

在实际的反射器部署中,常用的是分级反射器的场景。如下图所示,ISP为AS100提供Internet路由,ISP与AS100内建立双出口EBGP连接。AS100内部分为两个集群。Cluster1内的四台路由器是核心路由器。

  • Cluster1中部署了两个一级RR(RR-1),这种冗余结构保证了AS100内部网络核心层的可靠性。核心层其余两台路由器作为RR-1的客户机。
  • Cluster2中部署了一个二级RR(RR-2),这个RR-2同时也是RR-1的客户机。

说明:反射器场景下,如果BGP的优选路由不需要指导转发,通过配置BGP-RIB-ONLY特性,使所有BGP的优选路由都不加入IP路由表,也不进入转发层,从而提高转发效率和提升系统容量。

二、BGP Auto FRR

BGP Auto FRR(Auto Fast ReRoute)是一种链路故障保护措施,应用于有主备链路的网络拓扑结构中。使能BGP Auto FRR,可以使BGP的两个邻居切换或者两个下一跳切换达到亚秒级的收敛速度。

BGP Auto FRR(Auto Fast ReRoute)是一种链路故障保护措施,应用于有主备链路的网络拓扑结构中。使能BGP Auto FRR,可以使BGP的两个邻居切换或者两个下一跳切换达到亚秒级的收敛速度。

BGP Auto FRR对于从多个对等体学到的相同前缀的路由,利用最优路由作转发,自动将次优路由的转发信息添加到最优路由的备份转发表项中,并下发到FIB,进而到数据转发层面。当主链路出现故障的时候,系统快速响应BGP路由不可达的通知,并将转发路径切换到备份链路上。

BGP Auto FRR支持IPv6路由的FRR,但是只支持6PE FRR场景,保护的是6PE路由器之间的链路或节点。

如下图所示,CX-Y将学到的BGP路由发往AS100中的CX-X2和CX-X3,然后CX-X2和CX-X3通过反射器将路由发到CX-X1上,CX-X1上收到下一跳为CX-X2和CX-X3的两份路由,配置策略优选其中一条链路上收到的路由,这里假设在CX-X1上优选从CX-X2发来的LinkA路由,备份链路是LinkB路由。

在CX-X1上使能Auto FRR,当域内LinkA路由经过的节点或者链路出现故障的时候,CX-X1上到CX-X2的下一跳信息就会失效,触发转发平面迅速将从CX-X1到CX-Y流量快速切换到LinkB路由上,优先保证流量。同时,CX-X1重新按照前缀进行选路,优选从CX-X3发来的路由并更新FIB。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xumeng32@126.com

文章标题:IPRAN中BGP的概念与原理(下)

文章字数:2.4k

本文作者:F_numen

发布时间:2020-03-21, 15:18:16

最后更新:2020-03-21, 15:52:59

原始链接:https://netheroone.cn/archives/f4dad339.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
/*baidu统计*/