在 BGP 运行过程中,BGP 对等体之间会根据一定的状态机进行状态转换,以确保路由信息的可靠传递和路由表的一致性。BGP 状态机描述了 BGP 对等体在建立 BGP 邻居关系时可能经历的状态以及状态之间的转换过程。
BGP 状态机由 6 种状态组成,分别是:
空闲(Idle) 连接(Connect) 活跃(Active) Open 报文已发送(OpenSent) Open 报文已确认(OpenConfirm) 已建立(Established)
本文瑞哥将带大家好好了解这6种状态。
目录:
空闲状态(Idle)
连接状态(Connect)
活跃状态(Active)
OpenSent 状态
OpenConfirm 状态
Established 状态
空闲状态(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 对等体进行路由信息交换的过程。
连接状态(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 转入活跃状态。
活跃状态(Active)
在 BGP(Border Gateway Protocol)的状态机中,活跃状态(Active)是指 BGP 进程正在尝试建立 TCP 连接的阶段。
在活跃状态下,BGP 进程持续尝试与对等体建立 TCP 连接。无论之前的连接尝试是否成功,BGP 都会不断尝试建立连接,以确保能够与对等体进行通信。
如果 TCP 连接成功建立,那么 BGP 将向对等体发送 Open 报文,并关闭连接重传定时器。然后 BGP 将转至 OpenSent 状态,等待对等体的响应,并继续协商过程。
如果 TCP 连接失败,那么 BGP 将继续保持在活跃状态。在这种情况下,BGP 进程不会放弃尝试建立连接,而是继续不断地尝试与对等体建立 TCP 连接。
如果连接重传定时器超时,即在设定的时间内 BGP 未能收到对等体的响应,那么 BGP 将转至连接状态(Connect)。这意味着 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)。这是为了避免建立基于错误参数的邻居关系,以保障网络的稳定性和安全性。
OpenConfirm 状态
在 OpenConfirm 状态下,BGP 进程等待对等体的 Keepalive 或 Notification 报文的到达。这个阶段是 BGP 建立邻居关系的最后一步,BGP 需要确保连接的稳定性和可靠性。
如果 BGP 进程收到对等体发送的 Keepalive 报文,那么说明连接已经建立成功,BGP 将转至 Established 状态。在 Established 状态下,BGP 进程与对等体之间的连接已经正常运行,可以开始交换路由信息。
如果 BGP 进程收到对等体发送的 Notification 报文,那么可能意味着在连接过程中出现了问题,或者对等体希望终止连接。在这种情况下,BGP 将转至空闲状态(Idle),并终止当前的 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)。这是为了及时处理连接中断的情况,以便重新建立连接或者进行其他操作。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...