BGP协议原理-状态机详解

3.BGP状态机

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

Idle:BGP连接的第一个状态。在空闲状态,BGP在等待一个启动事件。启动事件出现以后,BGP初始化资源,复位连接重试计时器(Connect-Retry),发起一条TCP连接,同时转入Connect(连接)状态。

Connect:在此状态,BGP发起第一个TCP连接,如果连接重试计时器超时,就重新发起TCP连接,并继续保持在Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就转入Active状态。

Active:在此状态,BGP总是在试图建立TCP连接,如果连接重试计时器(Connect-Retry)超时,就退回到Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就继续保持在Active状态,并继续发起TCP连接。

OpenSent:在此状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive报文,并复位Keepalive计时器,开始计时。同时转入OpenConfirm状态。

OpenConfirm:在OpenConfirm状态,BGP等待一个Keepalive报文,同时复位保持计时器,如果收到了一个Keepalive报文,就转入Established阶段,BGP邻居关系就建立起来了。

Established:在Established状态,BGP邻居关系已经建立,这时,BGP将和它的邻居们交换Update报文,同时复位保持计时器。

另外,在除Idle状态以外的其它五个状态出现任何Error的时候,BGP状态机就会退回到Idle状态。