BGP基本概念

在正式介绍BGP之前我们先介绍一下基础知识

1、IGP与EGP的区别?
2、什么是AS?BGP中的AS编号是如何获取的?
3、为什么要使用BGP?
4、BGP的应用场景?**

1、IGP与EGP的区别。

IGP(interior Gateway Protocols)内部网关协议,RIP,OSPF和IS-IS都属于IGP。IGP的主要目的是发现和计算自治域内的路由信息。

BGP(Border Gateway Protocol,边界网关协议)是用来连接Internet上的独立系统的路由选择协议。它是Internet工程任务组制定的一个加强的、完善的、可伸缩的协议。EGP和 BGP(此BGP为具体的协议)属于BGP。BGP是一个增强型的距离矢量协议。BGP是为取代最初的外部网关协议EGP设计的。现在EGP已不再使用。

2、什么是AS编号?BGP中的AS编号是如何获取的?

AS(Autonomous System)译为自治系统,是指使用统一内部路由协议的一组网络。 如果成员单位的网络路由器准备采用 BGP(Border Gateway Protocol)协议,可以申请AS号码。如果网络规模较小,或者规模较为固定,而且只有一个出口, 可采用静态路由或其它路由协议,这样就不需要AS号码。

AS编号从哪申请?
1.运营商申请
2.其他机构申请 - 例如CNNIC 机构 - 申请AS编号 - 成为CNNIC会员会员 ,通过AS编号 进行路径选择

3、为什么要使用BGP协议?

IGP路由协议,如OSPF、EIGRP等,只能处理几万条以内的路由。实际上Internet上有大约70万条路由条目。

BGP有更强大的选路标准和属性。BGP可以宣告到达每个可达的AS的路径信息。可以使用路由策略来控制数据经过AS的走向。

4、BGP的应用场景

我们通过典型拓扑进行举例。

数据中心拓扑
在这里插入图片描述当互联网上的用户发送一个HTTP请求给服务器之后,服务器需要上传大量数据回给互联网上的用户。当数据到达网关时,就需要选择最优的路径去往用户。来保证通讯的质量,给用户一个良好的体验。 其中的选路问题,我们就要用到BGP协议。

5、BGP的使用注意事项

1、 BGP适用于以下几种场合:

– 允许某个AS做为穿越AS,允许数据包穿越到别的AS(比如 服务提供商的网络).
– 一个AS有多条连接到达另一个AS.
– 需要对进入和离开某AS的流量进行路由策略。

2、 以下几种场合请不要使用BGP:

– 只有单个到达Internet或别的AS的连接(可以使用默认路 由而无需使用BGP).
– 路由器内存和CPU资源过低.
– 缺乏对BGP路由策略的理解.
– AS之间的链路带宽过低。

正式介绍BGP协议

1、定义

   BGP是边界网关协议,是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。BGP的主要目标是为处于不同AS中的路由器之间进行路由信息通信提供保障。BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。

2、IBGP与EBPG

同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP 被称为 IBGP(Internal/Interior BGP)

归属不同的AS的对等实体之间运行的BGP称为EBGP (External/Exterior BGP)。

备注:在Cisco IOS中,IBGP通告的路由的管理距离为200,优先级比EBGP和任何内部网关协议(IGP)通告的路由都低。EBGP通告的路由管理距离为2。优先级顺序也是EBGP高于IGP,而IGP又高于IBGP。

3、 BGP的消息类型

1、 Open消息:Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。包括holdtime和BGP的RID。
2、 Keepalive消息:BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。

3、 Update消息:Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。
4、 Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。

4、 BGP的特性

1、可靠的路由更新机制:BGP运行于TCP,使用TCP端口号179操作。
2、触发式增量更新。
3、周期性的keepalive信息保证TCP的连接是否存活.。
4、更强大的metric标准,属性。
5、适用于大型网络,比如Internet。

5、BGP数据库

1、邻居表: • 列举BGP邻居信息
2、BGP转发表: • 列举从每个邻居学习来的网络信息• 可以包含到达目标网络的多条路径 • 每条路径都有相应的BGP属性
3、IP路由表: • 列举到达目标网络的最佳路由信息

6、BGP对等体

BGP对等体也叫BGP邻居,代表和本地BGP路由器建立了邻居关系的BGP路由器。

7、 BGP邻居状态机

1、 空闲(Idle):
为初始状态,当协议激活后开始初始化,复位计时器,并发起第一个TCP连接,并开始倾听远程对等体所发起的连接,同时转向Connect状态。

2、 连接(Connect):
开始TCP连接并等待TCP连接成功的消息。如果TCP连接成功,则进入OpenSent状态;如果TCP连接失败,进入Active状态。

3、 行动(Active):
BGP总是试图建立TCP连接,若连接计时器超时,则退回到Connect状态,TCP连接成功就转为Open sent状态。

4、 OPEN发送(Open sent):
TCP连接已建立,自己已发送第一个OPEN报文,等待接收对方的Open报文,并对报文进行检查,若发现错误则发送Notification消息报文并退回到Idle状态。若检查无误则发送Keepalive消息报文,Keepalive计时器开始计时,并转为Open confirm状态。

5、 OPEN证实(Open confirm):
BGP等待Keepalive报文,同时复位保持计时器。如果收到了Keepalive报文,就转为Established状态,邻居关系协商完成。如果系统收到一条更新或Keepalive消息,它将重新启动保持计时器;如果收到Notification消息,BGP就退回到空闲状态。

6、已建立(Established):
即建立了邻居(对等体)关系,路由器将和邻居交换Update报文,同时复位保持计时器。

8、 启用BGP

启用BGP的步骤如下:

1.启用BGP进程: Router (config) #router bgp {AS-number}
2.指定BGP邻居: Router (config-router )#neighbor {ip-address} remote-as {AS-number}
3.定义要宣告的网络: Router (config-router) #network {network-number} [mask mask]

配置实例

IBGP的配置
在这里插入图片描述
show run 配置
R1

在这里插入图片描述R2
在这里插入图片描述show BGP 邻居 (重要参数用箭头标出)
在这里插入图片描述show BGP 路由表
在这里插入图片描述
show BGP转发表
在这里插入图片描述EBGP配置(先配置ospf或其他协议保证底层互通)
EBGP配置时默认设备需要直连,默认最大跳数为1跳。当设备不是直连时,需要修改最大跳数。非直连设备BGP配置之前需要保证底层互通。同时还要解决路由黑洞的问题(后续专题中介绍)

在这里插入图片描述在没有修改最大跳数的情况下,邻居状态显示 idle
在这里插入图片描述我们修改最大跳数 R(config-router)#neighbor 20.1.1.2 ebgp-multihop 255
邻居状态为establish
在这里插入图片描述 最后我们show run 一下 每个设备的配置
R1
在这里插入图片描述R2
在这里插入图片描述
R3
在这里插入图片描述BGP专题后续会介绍路由黑洞问题,和各种特性及选路规则。 有想了解的可以关注交流。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐