目录
5. 联盟(把一个大的AS分给为若干个子AS,通过不同的AS号区分)
5. MED(Multiple Exit Discriminator,多出口鉴别器)
一、简介
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。
MP-BGP是对BGP-4进行了扩展,来达到在不同网络中应用的目的,BGP-4原有的消息机制和路由机制并没有改变。MP-BGP在IPv6单播网络上的应用称为BGP4+,在IPv4组播网络上的应用称为MBGP(Multicast BGP)。
传统的BGP-4只能管理IPv4单播路由信息,对于使用其它网络层协议(如IPv6、组播等)的应用,在跨AS传播时就受到一定限制。BGP多协议扩展MP-BGP(MultiProtocol BGP)就是为了提供对多种网络层协议的支持,对BGP-4进行的扩展。目前的MP-BGP标准是RFC4760,使用扩展属性和地址族来实现对IPv6、组播和VPN相关内容的支持,BGP协议原有的报文机制和路由机制并没有改变。
MP-BGP对IPv6单播网络的支持特性称为BGP4+,对IPv4组播网络的支持特性称为MBGP(Multicast BGP)。MP-BGP为IPv6单播网络和IPv4组播网络建立独立的拓扑结构,并将路由信息储存在独立的路由表中,保持单播IPv4网络、单播IPv6网络和组播网络之间路由信息相互隔离,也就实现了用单独的路由策略维护各自网络的路由。
1.BGP的特征
-
IGP与BGP的区别:IGP协议的目标是路由的发现与计算,BGP协议目标是路由的传播与优选(策略、属性进行选路)
-
外部路由协议,用来AS之间传递信息
-
路径矢量协议,只把本地认为最优的的路由传递给对方(BGP表中带有标识为>的路由)
-
BGP承载的路由条目较多,路由增量更新,仅触发无周期(OSPF为周期性更新和触发更新)
-
BGP被TCP承载,端口号179,提高协议的可靠性
-
路由附带较多的属性信息,同时路由控制策略丰富,方便控制路由(IGP通过控制Metric和打Tag来做路由策略)
-
仅发单播消息,每个对等体建立一个独立的点到点连接
-
BGP路由通过携带AS路径信息彻底解决路由环路问题
-
使用多协议扩展的MP-BGP,可以传递IPV6、VPNv4、VPNv6 ,Multicast
-
BGP支持CIDR(Classless Inter-Domain Routing,无类别域间路由)
2.为什么使用BGP?(优点)
BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性。
- BGP提供了丰富的路由策略,能够灵活的进行路由选路。
- BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
- BGP使用TCP(179)作为其传输层协议,并支持BGP与BFD(Bidirectional Forwarding Detection,双向转发检测)联动、BGP Auto FRR(Fast Reroute,快速重路由)和BGP GR和NSR,提高了网络的可靠性。
- BGP采用认证和GTSM的方式,保证了网络的安全性(GTSM功能可保障路由器免受CPU利用类型的攻击,是一种通用TTL保护机制)
- 在邻居数目多、路由量大且大部分邻居具有相同出口的策略的场景下,BGP使用按组打包技术极大的提高了BGP打包发包性能。
BGP的平滑重启GR(Graceful Restart)和不间断路由NSR(Non-Stop Routing)的根本目的都是为了保证用户业务在设备故障的时候不受影响或者影响最小。
BGP GR技术保证了在设备重启或主备倒换过程中转发层面能够继续指导数据的转发,同时控制层面邻居关系的重建以及路由计算等动作不会影响转发层面的功能,从而避免了路由震荡引发的业务中断,提高了网络的可靠性。
NSR是一种控制平面倒换而邻居不感知的可靠性技术,适用于设备具有主用主控板和备用主控板的场景,与GR相比,NSR具有不需要邻居协助,不存在互通性问题的优点;
3.BGP分类
BGP按照运行方式分为EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)。
-
EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。(AS PATH防环)
-
IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接(IBGP水平分割防环)。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,4字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。
4. BGP为什么使用TCP承载?
-
BGP承载的是公网的路由,公网的带宽有限
-
需要携带大量的路由信息
-
Internet上的链路有好有坏,BGP不用考虑链路好坏
5. IGP对BGP的作用
-
BGP的邻居建立(通常使用Loopback建立,需要通过IGP打通)
-
下一跳可达(OSPF与BGP下一跳的区别:OSPF通过直连建立邻居,好处是可以自动发现邻居,目的IP为组播的IP;BGP可以通过跨跳建立邻居,需要手动指定邻居,目的IP为手动指定的IP)
-
为BGP提供路由
6. BGP的应用场景
-
什么时候要使用BGP?
-
路由条目多,网络过于庞大,IGP难以胜任
-
网络中的路由需要实施复杂的策略(多宿主:同时连接两个或多个运营商)
-
网络中需要部署MPLS VPN
-
向客户提供Internet路由服务
-
-
什么时候不需要使用BGP?
-
单宿主:只同一个运营商相连,使用默认路由即可,若使用BGP,查询路由表的效率低,对设备的压力大
-
不向客户提供Internet路由服务
-
7. BGP的三张表
-
邻居表(邻居建立阶段):存放的BGP对等体的相关信息
-
BGP路由表(路由通告阶段):BGP宣告和收到的前缀(NLRI)的数据库
-
路由表(路由计算阶段):将BGP表中带有>标识的放进路由表
8. BGP针对路由信息的处理
-
Adj-RIB-In:保存BGP Speaker从邻居学到的路由信息(初始路由)
-
Loc-RIB:保存经过决策从Adj-RIB-In选取的路由信息(最优路由)
-
Adj-RIB-Out:保存BGP Speaker发送给邻居的路由信息(发布路由)
-
处理过程:
-
当从对等体接收到更新数据包时,路由器会把这些更新数据包存储到RIB中,并指明是来自哪个对等体的(Adj-RIB-In),这些更新数据包被输入策略引擎过滤后,路由器将会执行路径选择算法,来为每一条前缀确定最佳路径。
-
得出的最佳路径被存储到本地BGP RIB (Loc-RIB)中,然后被提交给本地IP路由选择表(IP-RIB),以用作安装考虑。
-
除了从对等体接收来的最佳路径外,Loc-RIB也会包含当前路由器注入的本地发起的路由,并被选择为最佳路径的BGP前缀。Loc-RIB中的内容在被通告给其他对等体之前,必须通过输出策略引擎。只有那些成功通过输出策略引擎的路由,才会被安装到输出RIB (Adj-RIB-Out)中。
-
BGP报文交互中分为Speaker和Peer两种角色。
Speaker:发送BGP报文的设备称为BGP发言者(Speaker),它接收或产生新的报文信息,并发布(Advertise)给其它BGP Speaker。
Peer:相互交换报文的Speaker之间互称对等体(Peer)。若干相关的对等体可以构成对等体组(Peer Group)。
9.BGP的邻居关系
-
BGP邻居关系建立在TCP连接的基础之上。
-
可以通过IGP或静态路由来提供TCP连接的可达性。
BGP的邻居是通过单播的方式建立的,所以首先需要在BGP进程下手动配置邻接地址。BGP没有自动发现邻居的机制,只能手动建立。
10.BGP中影响邻居建立的条件
-
停留在Idle状态。
-
没有到达Peer的路由条目。
-
EBGP多跳。(不去发送TCP的建立连接报文)
-
-
停留在Connect或者Active状态。
-
源地址错误。(查看对端的IP地址是否是本地指定的邻居地址)
-
TCP的认证。(TCP MD5)
-
有到达peer的路由,但是路由错误。
-
过滤了TCP的报文。
-
注:在华为中如果是通过默认路由的方式到达邻居,那么该邻居通告的所有路由都为无效路由。
二. BGP的四个阶段
1. TCP建立阶段
1、Idle:评估资源,要确保有足够的的资源(序列号、内存、CPU、端口号),尝试准备开始进行TCP的连接,并且监视远程邻居启动TCP连接。
2、Connect:进行TCP的三次握手,若TCP三次握手连接建立成功,BGP会向邻居发送Open报文并且进入Opensent状态;若TCP三次握手连接建立失败,则将会继续侦听邻居初始化的连接,进入Active状态。
3、Active:反复地尝试TCP三次握手连接,若TCP三次握手连接建立成功,BGP会向邻居发送Open报文并且进入Opensent状态。
2.BGP邻居建立阶段
4、Opensent:TCP连接建立已经成功,开始发送Open报文,Open包携带参数,协商邻居的建立(参数同步)。
5、Openconfirm:参数、能力特性协商成功,自己开始发送Keeplive报文,等待对方的Keeplive报文(保活)。
3. 路由通告阶段
6、Established:已经收到对方的Keeplive报文,双方能力特性一致,开始使用Update报文按需通告路由消息(类似OSPF的Two-Way状态)。
4. 路由计算阶段
开始计算BGP路由表,将最优的路由放进全局路由表(先按照十三条选路原则进行比较,再通过仲裁比较AD值,将最优路由放进路由表) 。
三. BGP的五种报文
open——update——notification——keepalive——router-refresh
1. Open报文:
BGP报文头中的TYPE为1
作用:建立BGP的连接,负责和对等体建立邻接关系,保证参数的同步
-
版本号:表示协议的版本号,现在BGP的版本号为4
-
My AS:会话发起者的AS号
-
Hold Time:路由器接收到Keeplive和Update报文之前可以等待的最长时间,保持时间必须为0(此时不发送Keeplive报文)~3s,默认时间为180s 若双方保持时间不一致,则以较短的时间作为双方可接受的保持时间
-
BGP Identifier:会话发起者的RID
-
Option Parameters(可选参数):用来宣告认证、多协议支持以及路由刷新等可选支持能力
2.Update报文
BGP报文头中的TYPE为2
作用:用于宣告可达路由和属性,撤销不可达路由
BGP使用的报文中,与IPv4相关的三处信息都由Update报文携带,这三处信息分别是:NLRI字段、Next_Hop属性、Aggregator属性。
-
NLRI(网络层可达信息):一个或多个宣告目的端前缀以及长度的二元组(网段+掩码)
-
Path attributes(路径属性):BGP选择最短路径和检测路由环路
-
Withdrawn Routes(撤销路由):描述已成为不可达且退出服务的目的端的二元组(OSPF通过将LSA报文Age字段置于3600来发现路由已经消失)
-
通告路由包含通告NLRI+路径属性,撤销路由只撤销NLRI信息
-
NLRI(Network Layer Reachability Information,网络层路由信息),是BGP中用来描述网络可达性信息的数据结构,它包含了目的地网络的前缀以及相关的路由属性。
在BGP中,NLRI用于描述一个路由目的地的网络前缀(Prefix)以及与该前缀相关的路由属性。它通常由一个IP前缀(如IPv4或IPv6地址)和一组路由属性(如AS路径、下一跳等)组成。NLRI告诉BGP路由器如何到达特定的目的地,