BGP有限状态机


BGP协议FSM状态图
BGP协议FSM状态图

有限状态机可以直观描述协议的变化,以及在网络活动中产生的事情和响应发生事件所产生的动作。

Idle状态(空闲状态)

BGP空闲状态,此状态下不接收任何对等体发出的连接信息,等待一个Start事件的发生。当一个Start事件发生时,系统重置Connect Retry定时器,并向邻居发起TCP连接,将状态变为Connect。

  • Start事件指的可能是BGP进程启动,或者管理员重置BGP进程,或者路由器软件重置BGP进程。
  • Connect Retry定时器缺省时间为32s。

Connect状态(连接状态)

在该状态下,BGP开始维护Connect Retry定时器(开始计时),等待TCP连接的完成。

  • 如果TCP连接成功,则立即发送Open报文,进入OpenSent状态,同时拆除Connect Retry定时器,重置Hold time定时器。
  • 如果TCP连接失败,则进入Active状态。
  • 如果Connect Retry定时器超时,系统还没有收到BGP对等体的响应,那么系统将重新连接,继续停留在Connect状态。
  • 注意:如果此状态中出现错误,那么BGP将会退回Idle状态。

Active状态(活跃状态)

如果已有Start事件但TCP连接未完成,则处于该状态;该状态下,BGP总是在试图建立TCP连接。同时会响应连接定时器超时事件。

  • 如果TCP连接完成,则发送Open消息,进入OpenSent状态,拆除Connect Retry定时器,重置Hold time定时器。
  • 如果TCP连接失败,则继续停留在Active状态。
  • 如果Connect Retry定时器超时,则重新进行TCP连接,同时重置Connect Retry定时器,进入到Connect状态。
  • 注意:同样,如果此状态中出现错误,那么BGP将会退回Idle状态。

OpenSent状态(OPEN消息已发送)

此状态说明Open消息已经发送,在等待BGP对等体回应的Open消息。并对收到的Open消息进行相关检查

  • 如果Open消息确认无误,则进入OpenConfirm状态,将Hold time定时器置为协商值;同时发送Keepalive消息,并重置Keepalive定时器。
  • 如果Open消息检查出现错误,则向对等体发送Notification消息,断开连接,回退Idle状态。
  • Hold time定时器缺省180s。

OpenConfirm状态(OPEN消息确认)

此状态说明系统已经发送了Keepalive消息,等待BGP对等体回应Keepalive消息。

  • 如果收到Keepalive消息,则转向Established状态并重置Hole time定时器。
  • 如果Keepalive定时器超时,则重置Keepalive定时器,重新发送Keepalive消息。
  • Keepalive定时器缺省30s。

Established状态(连接建立)

此状态说明BGP连接已经成功建立,可以交互Update和Route-refresh等报文

  • 如果Keepalive定时器超时则重置该定时器,并发送Keepalive消息。
  • 如果在Hold time时间内,收到Keepalive、Update、Route-refresh报文,则重置Hold time定时器。

说明

  • 除了Idle状态,其余状态在收到Notification消息或Others事件(BGP系统或管理员停止连接),BGP状态都会退回到Idle状态。