BGP 技术连载:BGP 状态机

简介: 【4月更文挑战第23天】

在 BGP 运行过程中,BGP 对等体之间会根据一定的状态机进行状态转换,以确保路由信息的可靠传递和路由表的一致性。BGP 状态机描述了 BGP 对等体在建立 BGP 邻居关系时可能经历的状态以及状态之间的转换过程。

BGP 状态机由 6 种状态组成,分别是:

  1. 空闲(Idle)
  2. 连接(Connect)
  3. 活跃(Active)
  4. Open 报文已发送(OpenSent)
  5. Open 报文已确认(OpenConfirm)
  6. 已建立(Established)

本文瑞哥将带大家好好了解这6种状态。

目录:

[TOC]

空闲状态(Idle)

Idle 状态是 BGP 进程启动后的初始状态。在这个状态下,BGP 进程尚未尝试与其他 BGP 对等体建立连接,而是处于等待状态。换句话说,BGP 此时不主动与其他对等体通信,而是暂时处于被动监听状态。

在 Idle 状态下,BGP 将拒绝来自邻居的连接请求。这意味着其他 BGP 对等体发送的连接请求将被 BGP 进程拒绝。这种行为的目的是确保在 BGP 进程初始化时不会意外地建立连接,从而避免不必要的网络开销和安全风险。

虽然 BGP 在 Idle 状态下暂时不与其他对等体通信,但一旦收到本设备的 Start 事件,BGP 将开始尝试与其他 BGP 对等体建立连接。Start 事件是 BGP 开始积极参与连接过程的触发条件,它可以由操作者配置 BGP 过程、重置已存在的 BGP 过程或设备软件重置 BGP 过程等情况引起。

一旦收到 Start 事件,BGP 将转至连接状态(Connect)。在连接状态下,BGP 将主动发送 TCP 连接请求,并等待其他对等体的响应。这标志着 BGP 开始尝试建立连接,并开始与其他 BGP 对等体进行路由信息交换的过程。

💡记忆小技巧:空闲状态(Idle)是 BGP 进程启动后的初始状态,它标志着 BGP 正在准备与其他 BGP 对等体建立连接,但尚未开始实际的连接过程。在此状态下,BGP 拒绝来自邻居的连接请求,直到收到本设备的 Start 事件。一旦收到 Start 事件,BGP 将开始尝试建立连接,并转至连接状态(Connect),从而打开了与其他 BGP 对等体进行路由信息交换的大门。

连接状态(Connect)

BGP的状态机中,连接状态(Connect)是 BGP 进程尝试建立 TCP 连接的阶段。在这个状态下,BGP 启动连接重传定时器(Connect Retry),并等待 TCP 完成连接的过程。

在 Connect 状态下,BGP 启动连接重传定时器,通常称为 Connect Retry。这个定时器的作用是在 TCP 连接尝试失败后,重新尝试建立连接。BGP 会在设定的时间间隔内等待 TCP 完成连接的建立,如果在这段时间内连接未成功建立,则会触发重新连接的尝试。

如果 TCP 连接成功建立,那么 BGP 将向对等体发送 Open 报文,并将自身状态转至 OpenSent 状态。在 OpenSent 状态下,BGP 等待对等体的响应,并继续后续的协商过程。

如果 TCP 连接失败,那么 BGP 将转至活跃状态(Active)。在活跃状态下,BGP 进程会尝试重新建立连接,以便与对等体进行通信。

如果连接重传定时器超时,即 BGP 在设定的时间内未能收到对等体的响应,那么 BGP 仍然没有建立连接,将继续尝试与对等体进行 TCP 连接,并保持在 Connect 状态。这个过程将持续,直到 TCP 连接成功建立或者 BGP 转入活跃状态。

💡记忆小技巧:连接状态(Connect)是 BGP 在状态机中的一个关键阶段,它代表了 BGP 进程正在尝试与对等体建立 TCP 连接的过程。在这个过程中,BGP 启动连接重传定时器,等待 TCP 完成连接的建立。根据连接的结果,BGP 可能转至 OpenSent 状态、活跃状态或者继续保持在 Connect 状态,直到连接成功建立。

活跃状态(Active)

在 BGP(Border Gateway Protocol)的状态机中,活跃状态(Active)是指 BGP 进程正在尝试建立 TCP 连接的阶段。

在活跃状态下,BGP 进程持续尝试与对等体建立 TCP 连接。无论之前的连接尝试是否成功,BGP 都会不断尝试建立连接,以确保能够与对等体进行通信。

如果 TCP 连接成功建立,那么 BGP 将向对等体发送 Open 报文,并关闭连接重传定时器。然后 BGP 将转至 OpenSent 状态,等待对等体的响应,并继续协商过程。

如果 TCP 连接失败,那么 BGP 将继续保持在活跃状态。在这种情况下,BGP 进程不会放弃尝试建立连接,而是继续不断地尝试与对等体建立 TCP 连接。

如果连接重传定时器超时,即在设定的时间内 BGP 未能收到对等体的响应,那么 BGP 将转至连接状态(Connect)。这意味着 BGP 进程暂时放弃与当前对等体的连接尝试,转而尝试与其他对等体建立连接。

💡记忆小技巧:活跃状态(Active)是 BGP 在状态机中的一个关键阶段,代表了 BGP 进程正在持续尝试与对等体建立 TCP 连接的过程。无论之前的连接尝试成功与否,BGP 都会不断尝试建立连接,直到成功建立连接或者超时。

OpenSent 状态

在 BGP 的状态机中,OpenSent 状态是指 BGP 进程已经向对等体发送了 Open 报文,并正在等待对等体的响应。在这个状态下,BGP 进程会对收到的 Open 报文中的 AS 号、版本号、认证码等信息进行检查。

在 OpenSent 状态下,BGP 进程会等待对等体的 Open 报文响应。这个阶段是 BGP 建立邻居关系的关键步骤之一,因为 BGP 需要确保双方的参数和配置是一致的。

BGP 进程会对收到的 Open 报文中的 AS 号、版本号、认证码等重要信息进行检查。这是为了确保双方的参数配置正确,以及安全地建立 BGP 邻居关系。

如果收到的 Open 报文正确无误,那么 BGP 将发送 Keepalive 报文作为对等体的响应,并将自身状态转至 OpenConfirm 状态。在 OpenConfirm 状态下,BGP 进程等待对等体的 Keepalive 报文以确认连接。

如果发现收到的 Open 报文存在错误,例如 AS 号不匹配、版本号不支持等问题,那么 BGP 将发送 Notification 报文给对等体,并将自身状态转至空闲状态(Idle)。这是为了避免建立基于错误参数的邻居关系,以保障网络的稳定性和安全性。

💡记忆小技巧:OpenSent 状态是 BGP 在建立邻居关系过程中的一个关键阶段,它代表了 BGP 已经向对等体发送了 Open 报文,并正在等待对等体的响应。通过对收到的 Open 报文进行检查,BGP 确保双方的参数配置正确,并安全地建立邻居关系。

OpenConfirm 状态

在 OpenConfirm 状态下,BGP 进程等待对等体的 Keepalive 或 Notification 报文的到达。这个阶段是 BGP 建立邻居关系的最后一步,BGP 需要确保连接的稳定性和可靠性。

如果 BGP 进程收到对等体发送的 Keepalive 报文,那么说明连接已经建立成功,BGP 将转至 Established 状态。在 Established 状态下,BGP 进程与对等体之间的连接已经正常运行,可以开始交换路由信息。

如果 BGP 进程收到对等体发送的 Notification 报文,那么可能意味着在连接过程中出现了问题,或者对等体希望终止连接。在这种情况下,BGP 将转至空闲状态(Idle),并终止当前的 BGP 邻居关系。

💡记忆小技巧:OpenConfirm 状态是 BGP 在建立邻居关系过程中的最后一步,它代表了 BGP 进程已经向对等体发送了 Open 报文,并等待对等体的 Keepalive 或 Notification 报文的响应。通过等待对等体的响应,BGP 确保连接的稳定性和可靠性,并在收到相应的报文后转至相应的状态。

Established 状态

在 Established 状态下,BGP 可以与对等体交换多种类型的报文,包括 Update、Keepalive、Route-refresh 和 Notification 报文。这些报文用于维持连接的稳定性和传递路由信息。

如果 BGP 进程收到正确的 Update 或 Keepalive 报文,那么它会认为对端处于正常运行状态,并保持 BGP 连接。这表示连接仍然稳定,可以继续进行路由信息的交换。

如果 BGP 进程收到错误的 Update 或 Keepalive 报文,例如格式错误或包含无效信息,那么它会发送 Notification 报文通知对端,并转至空闲状态(Idle)。这是为了避免在连接中传输错误的路由信息,从而保障网络的稳定性。

Route-refresh 报文用于请求对端刷新路由表,它不会改变 BGP 的状态。BGP 进程在收到 Route-refresh 报文后,仍然保持 Established 状态。

如果 BGP 进程收到 Notification 报文,无论是在何种情况下,它都会立即转至空闲状态(Idle)。这表示在连接过程中出现了问题,需要终止当前的 BGP 邻居关系。

如果 BGP 进程收到 TCP 拆链通知,那么它会断开与对等体的连接,并转至空闲状态(Idle)。这是为了及时处理连接中断的情况,以便重新建立连接或者进行其他操作。

💡记忆小技巧:Established 状态是 BGP 在状态机中的一个关键阶段,它代表了 BGP 进程与对等体建立了稳定的连接,并可以开始交换路由信息。

目录
相关文章
|
4月前
|
网络协议 网络架构
以太网链路连接 和 ISIS/OSPF等路由协议关系
以太网链路连接 和 ISIS/OSPF等路由协议关系
51 0
|
5月前
|
网络协议 网络虚拟化 网络架构
|
6月前
|
存储 负载均衡 网络协议
BGP 技术连载:BGP 选路规则
【4月更文挑战第23天】
403 0
|
网络架构
BGP路由技术(二)
⭐本文介绍⭐ BGP(Border Gateway Protocol,边界网关协议)是一个路径矢量路由协议,和传统的基于下一跳的IGP协议不同,它是基于AS(自治系统)的协议。BGP属于外部网关路由协议,它解决的是AS之间的选路问题,也正因为这样,它更适合与互联网。学习BGP的关键在于理解BGP的报文,邻居建立,BGP路由属性,选路原则等。本文将对以上各项知识、工作原理及相关的配置做介绍。
BGP路由技术(二)
|
网络协议 数据库 网络架构
BGP路由技术(一)
⭐本文介绍⭐ BGP(Border Gateway Protocol,边界网关协议)是一个路径矢量路由协议,和传统的基于下一跳的IGP协议不同,它是基于AS(自治系统)的协议。BGP属于外部网关路由协议,它解决的是AS之间的选路问题,也正因为这样,它更适合与互联网。学习BGP的关键在于理解BGP的报文,邻居建立,BGP路由属性,选路原则等。本文将对以上各项知识、工作原理及相关的配置做介绍。
BGP路由技术(一)
|
网络协议 算法 定位技术
链路状态路由协议 OSPF (一)
本章将会学习链路状态路由协议OSPF,理解OSPF的基本概念,工作原理,掌握OSPF配置基本命令 本章重点: OSPF的基本概念 OSPF配置
215 1
链路状态路由协议 OSPF (一)
|
网络协议 算法 数据库
链路状态路由协议OSPF——理解OSPF多区域原理
上几章学习了OSPF路由协议的基本概念、工作过程及单域的配置,但是在使用OSPF构建大型网络时,仅有单域是远远不够的。在大型网络中,网络结构的变化是时常发生的,而且随着多条网络路径的增加,路由表将变得越来越庞大。为了解决这个问题,OSPF允许把大型区域划分成多个更易管理的小型区域。本章主要介绍OSPF多区域的原理及配置。
422 0
链路状态路由协议OSPF——理解OSPF多区域原理
|
网络协议 算法 数据库
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步(上)
文章目录 系列文件 概述 BGP AS BGP 邻居 BGP 更新源 BGP TTL BGP路由表 BGP 同步
390 0
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步(上)
|
网络协议 网络架构 iOS开发
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步(下)
文章目录 系列文件 概述 BGP AS BGP 邻居 BGP 更新源 BGP TTL BGP路由表 BGP 同步
469 0
概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步(下)
|
网络协议 网络架构
链路状态路由协议 OSPF (四)
本章将会继续学习链路状态路由协议OSPF ,理解OSPF领接关系的建立。
143 0
链路状态路由协议 OSPF (四)