【HCIP】BGP协议基础 :分类,数据包,状态机,工作过程

 一、BGP引入

1、IGP,EGP:

2,距离矢量,路径矢量

3,TCP,UDP

二、BGP对等体分类

1、IBGP

2、EBGP

三、BGP数据包

Open报文:

Update报文:

Notification报文:

Keepalive报文:

Route-Refresh报文:

四、BGP状态机

1、Idle 状态

2、Connect 状态

3、Active 状态

4、OpenSent 状态

5、OpenConfirm 状态

6、Established 状态

五,BGP工作过程

1. 邻居建立

2. 路由信息交换

3. 路由策略决策

4. 路由信息传播

5. 路由器状态维护

6. 路由信息的撤销和更新

BGP是一种路径矢量协议。AS之间的外部网关协议。使用TCP作为传输协议,使用179端口号进行通信。BGP通过在对等体之间建立TCP连接来交换路由信息和网络可达性信息。BGP的主要作用是实现自治系统之间的路由选择和路径选择。

 一、BGP引入

 1、IGP,EGP:

IGP

内部网关协议 :域(AS)内路由选择

  • RIP:距离矢量协议,多用于小型网络。
  • ISIS:链路状态协议,多用于运营商网络。 
  • OSPF:链路状态协议,多用于企业中大型网络。 
  • EIGRP:CISCO 私有路由协议,增强型距离矢量协议。

EGP

外部网关协议:域(AS)间路由选择

  •  EGP:BGP 的前身,目前已经不再使用。
  •  BGP:路径矢量协议,事实上目前唯一的域间路由选择协议。

2,距离矢量,路径矢量

路径矢量--EGP距离矢量--RIP
一个AS为一跳一个路由器为一跳
不是算法概念,仅将IGP协议算好的路由信息搬运传递出去 是一个算法的概念,用来计算到达未知网段作的路由信息

3,TCP,UDP

TCP协议

面向连接的,通过三次握手建立连接,确保数据的有序、可靠传输,并具有流控制和拥塞控制机制。
UDP协议

面向无连接的,不提供可靠性保证,但传输速度快,适用于对实时性要求较高且对可靠性要求不高的场景。

二、BGP对等体分类

IBGP(内部BGP)和EBGP(外部BGP)是BGP对等体的两种类型,它们在不同的场景中发挥不同的作用。

1、IBGP

IBGP用于AS内部的路由传递。在一个AS内部,可能有多个BGP对等体,它们通过IBGP建立对等关系来交换路由信息。将外部BGP(EBGP)学习到的路由信息传递给AS内的其他BGP对等体。

2、EBGP

EBGP用于AS间的路由传递。当一个AS与另一个AS相连时,它们之间会建立EBGP对等关系,通过EBGP交换路由信息。

3、IBGP的协议特点

  • 1、AS路径不会改变,即AS路径会保持不变。
  • 2、IBGP对等体必须全互连,即每个IBGP对等体之间都必须建立对等关系。
  • 3、 IBGP对等体之间需要进行全网扩散,确保每个对等体都能学习到完整的路由信息。

4、EBGP的协议特点

  • 1、 AS路径会改变,即AS路径会根据经过的自治系统而改变。
  • 2、 EBGP对等体之间可以是部分互连,即不需要所有EBGP对等体之间都建立对等关系。
  • 3、 EBGP对等体之间不需要进行全网扩散,只需要将路由信息传递给需要的自治系统。

三、BGP数据包

BGP的运行是通过报文驱动的,共有Open、Update、Notification、Keepalive和Route-refresh五种报文类型。其中 Keepalive 报文为周期性发送,其余报文为触发式发送

Open报文:

是TCP连接建立BGP连接后发送的第一个消息,用于建立对等体连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-Refresh消息的交换。

Update报文:

用于在对等体之间交换路由信息。连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端。

Notification报文:

当BGP检测到错误状态时,就向对等体发出Notification消息,之后会立即中断BGP连接

Keepalive报文:

BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性,周期保活

Route-Refresh报文:

在改变路由策略后请求对等体重新发送路由信息。通过OPEN消息告知BGP对等体本地支持路由刷新能力。只有支持路由刷新(Route-refresh)能力的 BGP 设备会发送和响应此报文。

四、BGP状态机

BGP对等体的交互过程中存在6种状态机:空闲状态(Idle)、连接状态(Connect)、活跃(Active)、 Open 报文已发送(OpenSent)、 Open 报文已确认(OpenConfirm)和连接已建立(Established)。在BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active和Established。

  • Idle状态:BGP拒绝任何进入的连接请求,是BGP初始状态。
  • Connect状态:BGP等待TCP连接的建立完成后再决定后续操作。
  • Active状态:BGP将尝试进行TCP连接的建立,是BGP的中间状态。
  • Open-Sent状态:BGP等待对等体的Open报文。
  • Open-Confirm状态:BGP等待一个Notification报文或Keepalive报文。
  • Established状态:BGP对等体间可以交换Update报文、Route-refresh报文、Keepalive报文和Notification报文。

BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。

1、Idle 状态

是 BGP 初始状态。在 Idle 状态下, BGP 拒绝邻居发送的连接请求。只有在收到本设备的 Start 事件后, BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至 Connect状态。

说明:

Start 事件是由一个操作者配置一个 BGP 过程,或者重置一个已经存在的过程或者路由器软件重置 BGP 过程引起的。

任何状态中收到 Notification 报文 或 TCP 拆链通知等 Error 事件后, BGP 都会转至 Idle状态。

2、Connect 状态

 BGP 启动连接重传定时器(Connect Retry),等待 TCP 完成连接。

如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,并转至 OpenSent 状态;

如果 TCP 连接失败,那么 BGP 转至 Active 状态;

如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 继续尝试和其它 BGP 对等体进行 TCP 连接,停留在 Connect 状态。

3、Active 状态

 BGP 总是在试图建立 TCP 连接。如果 TCP 连接成功,那么 BGP 向对等体发送 Open 报文,关闭连接重传定时器,并转至 OpenSent 状态;

如果 TCP 连接失败,那么 BGP 停留在 Active 状态;

如果连接重传定时器超时, BGP 仍没有收到 BGP 对等体的响应,那么 BGP 转至 Connect状态。

4、OpenSent 状态

BGP 等待对等体的 Open 报文,并对收到的 Open 报文中的 AS 号、版本号、 认证码等进行检查。

如果收到的 Open 报文正确,那么 BGP 发送 Keepalive 报文,并转至 OpenConfirm 状态;

如果发现收到的 Open 报文有错误,那么 BGP 发送 Notification 报文给对等体,并转至Idle 状态。

5、OpenConfirm 状态

BGP 等待 Keepalive 或 Notification 报文。如果收到 Keepalive 报文,则转至 Established 状态,如果收到 Notification 报文,则转至 Idle 状态。

6、Established 状态

BGP 可以和对等体交换 Update、 Keepalive、 Route-refresh 报文和Notification 报文。

如果收到正确的 Update 或 Keepalive 报文,那么 BGP 就认为对端处于正常运行状态,将保持 BGP 连接。

如果收到错误的 Update 或 Keepalive 报文,那么 BGP 发送 Notification 报文通知对端,并转至 Idle 状态。

Route-refresh 报文不会改变 BGP 状态。

如果收到 Notification 报文,那么 BGP 转至 Idle 状态。

如果收到 TCP 拆链通知,那么 BGP 断开连接,转至 Idle 状态。

五,BGP工作过程

因为BGP的传输层协议是TCP协议,所以在BGP对等体建立之前,对等体之间首先进行TCP连接。BGP邻居间会通过Open报文协商相关参数,建立起BGP对等体关系。建立连接后,BGP邻居之间交换整个BGP路由表。BGP会发送Keepalive报文来维持邻居间的BGP连接,BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update报文增量地更新路由表。当BGP检测到网络中的错误状态时(例如收到错误报文时),BGP会发送Notification报文进行报错,BGP连接会随即中断。

bbf86f4728674075929b052afe39d3cc.png

c1e8ae4d422d45c2b47fd93ba98937e1.png

1. 邻居建立

BGP的工作始于建立邻居关系。邻居关系是指两个BGP路由器之间的逻辑连接。建立邻居关系的步骤如下:

1.路由器A向路由器B发送一个BGP Open消息,其中包含有关路由器A的信息,如AS号码、BGP版本等。

2.路由器B接收到BGP Open消息后,检查其中的信息,并向路由器A发送一个BGP Open消息作为响应。该消息包含有关路由器B的信息。

3.路由器A和B交换Keepalive消息以确认邻居关系的建立。

4.路由器A和B交换Update消息以交换路由信息。

2. 路由信息交换

一旦邻居关系建立,BGP路由器之间开始交换路由信息。路由信息交换的步骤如下:

5.当路由器A有新的路由信息可用时,它将发送一个Update消息给路由器B。Update消息包含有关可达目的地的信息,如网络前缀、下一跳等。

6.路由器B接收到Update消息后,检查其中的路由信息,并将其添加到自己的路由表中。

7.路由器B向路由器A发送一个Update消息,其中包含有关自己的路由信息,以便路由器A也可以将其添加到自己的路由表中。

8.路由器A和B可以通过交换Update消息来更新彼此的路由表,以反映网络拓扑的变化。

3. 路由策略决策

在路由信息交换的过程中,BGP路由器需要根据一定的路由策略来决定如何选择和传播路由。路由策略决策的步骤如下:

9.路由器根据收到的Update消息中的属性,如AS路径、自治系统号等,判断是否接受该路由。

10.如果路由器接受了路由,它将根据自己的策略决定是否将该路由添加到自己的路由表中。

11.路由器可以基于不同的策略进行路由选择,如最短AS路径、最低延迟等。

12.路由器可以使用路由映射、过滤器等技术来修改或限制路由信息的传播。

4. 路由信息传播

一旦路由器决定了要接受和使用的路由,它将开始将路由信息传播给其他邻居。路由信息传播的步骤如下:

13.路由器将接受的路由信息添加到自己的路由表中。

14.路由器将新的路由信息封装在Update消息中,并发送给所有的邻居。

15.邻居路由器接收到Update消息后,将检查其中的路由信息,并根据自己的策略决定是否接受和使用该路由。

16.如果邻居路由器接受了路由,它将将其添加到自己的路由表中,并将该路由继续传播给它的邻居。

17.路由信息根据BGP的循环避免机制,避免无限循环的传播。

5. 路由器状态维护

BGP路由器需要维护与邻居之间的状态和连接。路由器状态维护的步骤如下:

18.路由器定期发送Keepalive消息给邻居,以确认邻居的活动状态。

19.路由器接收到邻居的Keepalive消息后,确认邻居的活动状态,并继续维持邻居关系。

20.如果路由器在一定时间内没有收到邻居的Keepalive消息,它将认为邻居已经失效,并将邻居从自己的路由表中删除。

21.路由器可以根据需要手动终止与邻居的连接,或者重新建立邻居关系。

6. 路由信息的撤销和更新

在网络拓扑变化或故障发生时,BGP路由器需要及时撤销和更新路由信息。路由信息的撤销和更新的步骤如下:

22.如果某个路由不再可达或失效,路由器将发送一个Withdraw消息给它的邻居,以撤销该路由。

23.邻居路由器接收到Withdraw消息后,将从自己的路由表中删除该路由。

24.如果某个路由的属性发生变化,路由器将发送一个Update消息给它的邻居,以更新该路由。

25.邻居路由器接收到Update消息后,将根据新的路由信息更新自己的路由表。

以上是BGP的工作流程的主要步骤和流程。BGP作为一种自治系统之间的外部网关协议,通过邻居建立、路由信息交换、路由策略决策、路由信息传播、路由器状态维护以及路由信息的撤销和更新等过程,实现了互联网中的路由控制和管理。

  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值