BGP 技术连载:BGP 状态机

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

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

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

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

目录:

空闲状态(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 进程与对等体建立了稳定的连接,并可以开始交换路由信息。

相关推荐

  1. <span style='color:red;'>BGP</span>综合

    BGP综合

    2024-04-20 22:38:02      27 阅读
  2. <span style='color:red;'>BGP</span>实验

    BGP实验

    2024-04-20 22:38:02      31 阅读
  3. <span style='color:red;'>BGP</span>协议

    BGP协议

    2024-04-20 22:38:02      7 阅读
  4. 八、<span style='color:red;'>BGP</span>

    八、BGP

    2024-04-20 22:38:02      5 阅读
  5. BGP/Border Gateway Protocol

    2024-04-20 22:38:02       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 22:38:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 22:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 22:38:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 22:38:02       20 阅读

热门阅读

  1. vue处理异步状态的逻辑useAsyncState

    2024-04-20 22:38:02       18 阅读
  2. Spring Cloud Gateway面试题

    2024-04-20 22:38:02       53 阅读
  3. Ubuntu如何给tar.gz文件创建桌面快捷方式

    2024-04-20 22:38:02       51 阅读
  4. 力扣经典150题第三十三题:最小覆盖子串

    2024-04-20 22:38:02       19 阅读
  5. 多数元素(C++)

    2024-04-20 22:38:02       13 阅读
  6. SpringMVC接收参数方式讲解

    2024-04-20 22:38:02       16 阅读