概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步(下)

简介: 文章目录系列文件概述BGP ASBGP 邻居BGP 更新源BGP TTLBGP路由表BGP 同步

因为BGP在将路由发给eBGP邻居时,会将自己的AS号码添加到AS- path中,所以可以以此来防止环路,而在将路由发给iBGP时,是不会往AS -path添加AS号码的,因此在iBGP之间传递路由时,没有防止环路的机制。考虑到为iBGP之间的路由传递也加入防环机制,因而强制将BGP路由在AS内部只传一跳, 具体操作为:一台BGP路由器从eBGP邻居收到路由,发给iBGP邻居之后,iBGP邻居收到后就不能再传给其它任何iBGP邻居,只能传递给eBGP邻居。此规则被多数人称为BGP的水平分割,就是一台BGP路由器从iBGP邻居收到的路由,不能传递给其它iBGP 邻居,只能传给eBGP邻居。如下图:

在上图中,当R1从eBGP邻居R6那里收到路由后,可以发给任何iBGP邻居,包括R3和R4,当R3从iBGP邻居R1那里收到路由后,不可以转发给任何iBGP邻居,只可以转发给eBGP邻居,所以R3从R1收到路由后,只能转发给eBGP邻居R5。由于R3和R4从R1收到路由后,都不可以转发给iBGP邻居R2, 在上图环境中,最

终造成R2无法接收任何路由,要让R2收到路由,建议在R1与R2之间再建立一条.BGP会话,所以如此一来,在同一个AS中,要将路由全网传递,就需要在iBGP邻居之间配置全互联,最终AS 20内的邻居关系如下图:




在AS内部,除了建立全互联的iBGP邻居关系外,还可以通过BGP Reflector (BGP反射器)和BGP Confederation(BGP联邦)的方式来实现路由全网传递,将在后续介绍。

BGP路由表

当路由器之间建立BGP邻居之后,就可以相互交换BGP路由。一台运行了BGP协议的路由器,会将BGP得到的路由与普通路由分开存放,所以BGP路由器会同时拥有两张路由器,一张是存放普通路由的路由表,被称为IGP路由表,就时平时我们使用命令show ip route 看到的路由表,IGP 路由表的路由信息只能从IGP协议和手工配置获得,并且只能传递给IGP协议:另外一张就是运行BGP之后创建的路由表,称为BGP路由表,需要通过命令showipbgp才能查看,BGP路由表的路由信息只能传递给BGP协议,如果两台BGP邻居的BGP路由表为空,就不会有任何路由传递。在初始状态下,BGP 的路由表为空,没有任何路由,要让BGP传递相应的

路由,只能先将该路由导入BGP路由表,之后才能在BGP邻居之间传递。默认情况下,任何路由都不会自动进入BGP路由表,BGP路由表的路由获得有多种方式,可以从BGP邻居获得,也可以手工将IGP路由导入BGP路由表,还可以将其它路由重分布进BGP,只要BGP的路由不是从邻居学习到的而是手工导入的,那么这样的路由被称为BGP本地路由。

因为BGP的邻居类型分为两种: eBGP 和iBGP,所以BGP路由的AD值也有区分,如果BGP的路由是从eBGP学习到的,AD值为20,可以发现,从eBGP邻居学习到的路由,将优于任何IGP协议:从iBGP学习到的路由的AD值为200,同样可以发现,此类路由的优先级低于任何IGP协议。BGP 除了以上两种AD值之外,如果BGP

路由是从本地手工导入的,即BGP本地路由,则BGP本地路由的AD值为200,与iBGP路由的AD值相同,优先级低于任何IGP协议。

如果某一条相同的路由同时从eBGP和iBGP以及本地路由学习到,那么究竞哪条路由会被选择为最优路径呢?路由的AD值并不一-定会影响到路径选择,因为BGP并不会在一开始,就通过比较AD值来选择最优路径。

BGP 同步

BGP邻居之间的通信与交流运行在TCP的基础上,在两个节点之间,只要网络是通的,就能够建立TCP建立,网络的连通,可以是任何IGP路由协议,甚至是静态路由,总之,只要网络是通的,.TCP 连接就一定能够建立起来。只要让两台路由器之间连通,保证TCP能够正常连接,就能够保证BCP的通信。在-一个AS中,除了需要建立BGP连接之外,同时还需要运行FGP协议,其中运行BGP的目的是为了在大型网络中传递庞大的路由表或路由信息,而运行IGP协议的目的可想而知,并不是为了传递庞大的路由信息,在AS中运行IGP的根本目的是为了让BGP路由器之间能够建立TCP连接,从而为BGP的通信服务。因此可以看出,BGP 就像是 一辆运货的卡车,BGP 的路由就是卡车要运的货,而IGP协议就是为了在站与站之间铺平道路,如果没有IGP去让道路连通,那么BGP就无法在站与站之间运送货物。

因为BGP在建立邻居时,BGP的源地址可以是任意地址,这些地址可以不是直连的,只要是能通信的,能建立TCP连接即可。当BGP在向邻居发送流量时,只要将流量发往邻居的对端地址,因为邻居的地址并不一定是直连的,所以要找到去往邻居地址的路径,可能需要查询IGP路由表,因为IGP为BGP的通信与连接提供了保证。由此可见,BGP 要将数据发给邻居,BGP 在查询去往邻居的路径时,采用的是递归查询,BGP 查询去往邻居的过程中,可能要多次查询IGP路由表,只要在IGP路由表中找到了去往邻居地址的相应路径或相应下一-跳,那么就会将数据发给这个下一跳。



在上图的网络中,R1与R4建立eBGP连接,R3与R5建立eBGP连接,而R1与R3建立iBGP连接。在R1与R3建立iBGP连接时,R1通过目标地址3.3.3.3找到邻居R3, R1的BGP源地址为1.1.1.1, 而R3也通过目标地址1. 1. 1.1找到邻居R1,R3的BGP源地址为3.3.3.3,为了让1.1. 1.1和3.3. 3.3能够正常通信,从而建立TCP连接,R1、R2、R3之间启用了IGP协议0SPF, OSPF的目的只是为了使1.1.1.1能够与3.3.3.3通信,并不传递AS中庞大的路由信息。

当AS 10中的R4将网段10. 1.1.0/24通告给AS 20中的R1后,因为R1与R3之间是iBGP邻居,所以R1将路由10.1.1.0/24传递给R3,最终R3将路由10.1.1.0/24传递给AS30中的R5。当R5将目的地为10.1.1.0/24的流量发给R3时,R3在查询路由表后得知,去往10.1. 1. 0/24的数据包需要发给iBGP邻居1.1.1.1才能够到达,于是R3便执行递归查询,查询如何去往1.1.1.1,正因为R1与R3之间的通信是靠OSPF提供的,所以R3得知去往1.1.1.1必须将数据包交给R2,即咬给下一跳23.1.1.2,因为R2只运行了OSPF为BGP服务,所以R2没有BGP的路由

10. 1.1.0/24,当R2发现数据包的目标地址为10. 1. 1. 0/24后,只能将数据包全部丢弃,这就类似于路由黑洞。

从以上情况中可以看出,当BGP从iBGP收到路由时,因为邻居之间可能跨越了多台IGP路由器,所以BGP在将数据包发往目的地时,通常会发给一台只运行了 IGP的路由器,而只运行IGP的路由器并没有BGP的路由,因而最终导致数据包丢失,造成路由黑洞。要杜绝此类问题的发生,其实答案很明了,就是让AS中只运行IGP的路由器同时也拥有BGP的路由表即可。由于以上原因,在BGP路由传递中,有以下一条规则:当BGP要将从iBGP邻居学习到的路由信息传递给其它邻居之前(这个邻居通常是eBGP邻居),这些路由必须在IGP路由表中也能学到,否则认为此路由无效而不能发给其它邻居。

此规则称为iBGP与IGP路由同步。

在上图环境中,在R3将从iBGP邻居R1学习到的路由传递给eBGP邻居R5之前,必须确定这条路由在自己的IGP路由表中也存在,否则不使用该路由。要查看路由在IGP路由表中是否存在,使用命令show ip route 即可。

注意,只有从iBGP邻居学习到的路由,才受iBGP与IGP路由同步规则的限制,如果路由是从eBGP邻居学习到的,则不受此规则限制,并且此规则可以手工开启或关闭。

BGP同步默认是开启的,在IOS 12.2(8)T 以及之后的版本默认都是关闭的。

目录
相关文章
|
6月前
|
网络协议
使用MPLS LDP解决BGP路由黑洞的问题
MPLS LDP默认不为BGP路由分配标签
|
4月前
|
存储 网络协议 网络虚拟化
BGP路由协议学习一
BGP路由协议学习一
79 0
|
5月前
|
网络架构
|
6月前
|
网络协议
OSPF,RIP和BGP的路由汇总
OSPF,RIP和BGP的路由汇总
82 0
|
6月前
|
存储 负载均衡 网络协议
BGP 技术连载:BGP 选路规则
【4月更文挑战第23天】
401 0
|
网络协议 算法 数据库
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步(上)
文章目录 系列文件 概述 BGP AS BGP 邻居 BGP 更新源 BGP TTL BGP路由表 BGP 同步
390 0
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步(上)
|
NoSQL Redis 网络架构
BGP邻居路由黑洞+mpls ip
文章目录 要求: 拓扑: 命令:
112 0
BGP邻居路由黑洞+mpls ip
|
网络协议 数据库 网络架构