BGP原理与运用场景

前言

在小型网络中 由于设备的个数和距离的原因,ospf和rip就足以满足所需,但是对于运行商来说就不足以满足需求,就诞生了BGP协议。BGP主要用于运行商,在大型的网络中来使用,本章就来探讨他的原理。

一、BGP是什么?

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
新版本BGP-4 是在1995年发布的。
BGP路由选择协议执行中使用4种分组:打开分组(open)、更新分组(update)、存活分组(keepalive)、通告分组(notification)。

二、特点

1.BGP特点

BGP属于外部或域间路由协议。BGP的主要目标是,为处于不同自治系统(AS)中的路由器之间进行“路由信息通信”提供保障。

BGP对网络拓扑结构没有限制,其特点包括:

1、实现自治系统(AS)间通信,传播网络的可达信息。BGP是一个外部网关协议,允许一个自治系统(AS)与另一个自治系统(AS)进行通信。BGP允许一个自治系统(AS)向其他自治系统(AS)通告其内部网络的可达性信息,或者是通过该自治系统(AS)可达的其他网络的路由信息。同时,自治系统(AS)也能够从另一个自治系统(AS)中了解这些信息。BGP为每个目的网络提供的是“下一跳(next-hop)结点”的信息。

2、多个BGP路由器之间的协调。如果在一个自治系统(AS)内部有多个路由器分别使用BGP与其他自治系统(AS)中对等路由器进行通信,BGP可以协调一系列路由器,使这些路由器保持路由信息的一致性。

3、BGP支持基于策略的选路。一般的距离向量选路协议,会确切通告本地选路中的路由;而BGP则可以实现由本地管理员选择的策略。BGP路由器可以为“域内”和“域间”的网络可达性配置不同的策略。

4、可靠的传输。BGP路由信息的传输采用了可靠的TCP(传输控制协议)协议。

5、路径信息。在BGP通告目的网络的可达性信息时,处理指定目的网络的下一跳信息之外,通告中还包括了“通路向量(path vector)”,即去往该目的网络时需要经过的自治系统(AS)的列表,使接受者能够了解去往目的网络的通路信息。

6、增量更新。BGP不需要在所有路由更新报文中传送完整的路由数据库信息,只需要在启动时交换一次完整信息。后续的路由更新报文只通告网络的变化信息。这种网络变化的信息称为增量(delta)。

7、路由聚集。BGP允许发送方把路由信息聚集在一起,用一个“条目”来表示多个相关的目的网络,以节约网络带宽。

8、 BGP还允许接收方对报文进行鉴别和认证,以验证发送方的身份。

2.分类

BGP按照运行方式分为EBGP(External/Exterior BGP)和IBGP(Internal/Interior BGP)。

EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。
IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟

3 工作原理

BGP对等体的建立,更新和删除等交互过程主要有五种报文,6种状态机和九个原则 。
五种报文
1、Open报文 用于对等体参数协商;

2、Keepalive报文 用于维护对等体邻居;

3、Update报文 用于通告可达路由和不可达路由;

4、Notification报文 用于错误信息通告,断开对等体邻居;

5、Route-refresh报文 用于请求对等体重新发送路由信息;

BGP所有报文均采用单播的方式发送,因此需要手动指定对等体,不能像IGP协议通过组播方式自动发现邻居。

BGP不需要开发确认报文,通过TCP来提供重传、确认及排序功能,因此建立BGP对等体之前必须先建立TCP连。
六种状态机
Idle(空闲):
Idle 是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位bai连接重试计时器(Connect-Retry),发起一条TCP连接,同时转入Connect(连接)状态。

Connect(连接):
在Connect 状态,BGP发起第一个TCP连接,如果 连接重试计时器(Connect-Retry)超时,就重新发起TCP连接,并继续保持在Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就转入Active 状态。

Active(活跃):
在Active状态,BGP总是在试图建立TCP 连接,如果连接重试计时器(Connect-Retry)超时,就退回到Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就继续保持在Active状态,并继续发起TCP连接。

OpenSent(打开消息已发送):
在OpenSent 状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open 报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive 报文,并复位Keepalive 计时器,开始计时。同时转入OpenConfirm状态。

OpenConfirm(打开消息确认)状态:
在OpenConfirm状态,BGP发送一个Keepalive 报文,同时复位保持计时器,如果收到了一个Keepalive 报文,就转入Established 阶段,BGP邻居关系就建立起来了。如果TCP连接中断,就退回到Idle 状态。

Established(连接已建立):
在Established 状态,BGP 邻居关系已经建立,这时,BGP将和它的邻居们交换Update 报文,同时复位保持计时器。
九个原则

4 配置

由于BGP是在大型网络中使用的协议,所以仅仅在途中简单模拟
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_49172531/article/details/112756551