📝理论讲解:
BGP的工作原理
BGP是跨公网,跨自治系统的路由协议,可以在自治系统之间学习路由。BGP的动态学习路由也是基于邻居,只有邻居关系正常,BGP才可以正常工作。下面首先介绍BGP中的邻居关系及路由通告。
BGP邻居关系
运行BGP的路由器通常被称为BGPSpeaker(发言者),相互之间传递报文的Speaker之间互称为对等体(Peer)。BGP邻居关系的建立,更新和删除是通过对等体之间交互 5 种报文、6 种状态机和 5 个表等信息来完成的,最终形成BGP邻居,一下分别进行介绍。
BGP报文
BGP报文头中的Type定义了BGP的报文类型。BGP对等体之间通过5 种报文进行路由信息的交互。这5 种报文类型分别是Open、Update、Notification、KeepAlive和Route-Refresh。
1)Open报文
Open报文是TCP连接建立后发送的第一个报文,用于建立BGP对等体之间的连接关系,主要包括BGP版本,本地AS编号,Hold time等信息。对等体在接收到对端发过来的Open报文并协商成功后,将发送Keep Alive报文确定并保持连接的有效性。BGP对等体关系确定后,对等体间可以进行Update、Notification、Keep Alive和Route-Refresh报文的交换,以更新路由信息。
2)UPdate报文
Update报文用来在BGP对等体之间更新路由信息。Update报文可以通告多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
3)Notification报文
Notification报文的作用是当BGP检测到错误状态时,立刻向对等体发出Notification报文,之后BGP连接会立即中断。要注意的是,不管当前BGP状态当时处于何种状态,只要收到Notification报文就会放回idle状态。换而言之,BGP是不允许错误出现的一种路由协议,在选路原则中,更优的路由往往是邻居关系最久的对等体,以此反映对等体两端经历很长的时间都没有出现过错误。
4)Route-Refresh
用来告知对等体本地所支持路由的刷新能力,在所有BGP路由器拥有Route-Refresh能力的情况下,如果BGP的入口路由策略发生了变化,本地BGP路由器会向对等体发送Route-Refresh报文,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,可以在不中断BGP连接的情况下,对BGP路由表进行动态刷新,并应用新的路由策略。该报文中的AFI字段,用于标识所采用的地址族的类型,如IPv4单薄或者组播。
5)KeepAlive
该报文在对等体之间周期性的发送,用以保持连接的有效性并维护其连接,Keep Alive报文只有一个BGP报文头。默认Keep Alive报文发送周期为60s,Hold time为180s。Keep Alive报文类似于OSPF协议中的Hello报文,当收到对等体发过来的KeepAlive报文后会刷新Hold time计时器,如果Hold time计时器超时仍未收到Keep Alive报文,则认为对等体失效。
BGP状态机
1、ldle状态
2、Connect状态
3、Active状态
4、Open Sen状态
5、Open Confirm状态
6、Established状态
BGP数据库
BGP数据库是BGP正常工作需要的存储空间,基于保存的内容不同,可分为如下几种:
1.IP路由表(IP-RIB)
全局路由信息库,包括所有最优的IP路由信息
2.BGP路由表(Loc-RIB)
BGP路由信息库,包括本地BGP Speaker通告的路由信息,将其中最优路由添加到IP路由表中。
注意:先要关注BGP路由表,若BGP路由表中不是最优路由,则无法在IP路由中可见。
3.邻居表
对等体邻居清单列表,包括对等体两端的邻居信息及邻居列表。
4.Adi-RIB-In
对等体宣告给本地Speaker的未处理的路由信息库
5.Adj-RIB-Out
本地Speaker宣告给指定对等体的路由信息库。
BGP邻居关系类型
在BGP中大致可分为两种邻居关系,IBGP邻居关系和EBGP邻居。
●IBGP:同一个AS内部的BGP关系,IBGP邻居通常是指运行BGP协议的对等体两端均在统一个AS域内,属于同一个BGP AS内部。
●EBGP:AS之间的BGP关系,EBGP邻居通常是指运行在BGP协议的对等体两端分别在不同的AS内。
📢友情提示:
IGP协议建立邻居一般要求三层直连,并且通过广播或组播建立邻居。而BGP的邻居关系是基于TCP的,也就是说只要TCP/IP 可达,无论是否直连,BGP对等体彼此之间就可以建立邻居关系。所以BGP建立邻居之前首先要考虑的就是对等体之间的路径是否可达。务必要通过IGP或者静态路由使对等体两端互通。
📖实验配置与实现:
拓扑图:
推荐步骤:
R1和R2、R3互联链路配置RIPv2
R2和R3互联R4链路配置OSPF
在R2和R3配置路由重分发OSPF和RIP相互重分发全网互通
在R1配置BGP和R2以及R3建立EBGP邻居关系宣告Lo0网络
在R2配置BGP和R1建立EBGP邻居宣告Lo0网络,R2和R4建立IBGP邻居和Lo0建立邻居关系更新源,在R2配置IBGP下一跳可达
在R3配置BGP和R1建立EBGP邻居宣告Lo0网络,R3和R4建立IBGP邻居和Lo0建立邻居关系更新源,在R3配置IBGP下一跳可达
在R2配置路由策略修改优先级为300经过R2转发数据
实验步骤:
一、R1和R2、R3互联链路配置RIPv2
1、R1配置RIPv2,宣告直连路由
1)启动RIP进程
2)关闭路由汇总
3)宣告直连路由
2、R2配置RIPv2,宣告直连路由
1)启动RIP进程
2)关闭路由汇总
3)宣告直连路由
3、R3配置RIPv2,宣告直连路由
1)启动RIP进程
2)关闭路由汇总
3)宣告直连路由
二、R2和R3互联R4链路配置OSPF
1、在路由器R2上配置ospf,指定区域宣告直连网络
1)启动ospf进程为1指定route-id
2)指定ospf区域,宣告直连路由
2、在路由器R3上配置ospf,指定区域宣告直连网络
1)启动ospf进程为1指定route-id
2)指定ospf区域,宣告直连路由
3、在路由器R4上配置ospf,指定区域宣告直连网络
1)启动ospf进程为1指定route-id
2)指定ospf区域,宣告直连路由
三、在R2和R3配置路由重分发OSPF和RIP相互重分发全网互通
1、在路由器R2配置路由重分发ospf和rip
1)R2配置路由重分发
2、在路由器R3配置路由重分发ospf和rip
1)R3配置路由重分发
3、验证全网互通
1)在R1上验证全网互通
2)在R4验证全网互通