BGP对等体建立过程中,可能出现的一些状态:

1、Idle:初始化状态。当BGP进程初始化之后,进入Connect状态,监听TCP会话的建立。

2、Connect:本地路由器等待TCP会话建立的完成。如果该过程成功,本地路由器向对方发送Open信息,并进去OpenSent状态;如果该过程失败,本地路由器将重置ConnectRetry计时器,并进入Active状态。如果当路由器处于Connect状态时,计时器的值倒数为0,本地路由器将尝试另外一条连接,重置计时器的值,并且仍旧处于Connect状态。

3、Active:该状态下,本地路由器尝试向对方发起一条TCP会话,如果会话成功建立,本地路由器将发送Open信息,并进入到OpenSent状态;如果连接失败,将重置ConnectRetry计时器的值为0,并回到Connect状态;如果本地路由器从一个不预期的远程路由器那里收到一条连接请求,本地路由器将拒绝该连接仍旧处于Active状态,并重置ConnectRetry计时器。

4、OpenSent:TCP会话成功建立后,将进入该状态。本地路由器将发送Open信息,并等待对方给予Open信息做为回应。如果本地路由器从对方那里收到了有效的Open信息,本地路由器将发送Keepalive信息给远程路由器,双方协商BGP会话参数,并进入到OpenConfirm状态;如果在该状态下,TCP会话突然断开,本地路由器将中断BGP会话,重置ConnectRetry计时器,并回退到Active状态。

5、OpenConfirm:当本地路由器收到对方回应的有效Open信息,进入该状态。本地路由器发送Keepalive信息,并等待对方给予回应。

6、Established:当本地路由器收到对方回应的Keepalive信息后,BGP对等体会话关系完全建立。

--------------------------------------

1.以TCP随机的源端口@(1024~~50000)目的端口179(BGP)发送SYN包。(在此之前是Idle,此时是connect连接状态一直到TCP三次握手成功)

2.对端收到第一个SYN后会以源端口179(BGP)目的端口@(1024~~50000)发送SYN 及 ACK。

3.收到对端的ACK SYN后,还是以TCP随机的源端口@(1024~~50000)目的端口179(BGP)发送ACK包至此TCP三次握手结束。(如果三次握手成功就会直接进入打开发送状态,没成的话就会初始化TCP连接到Active状态。)

4.结束TCP三次握手时本端还会发送BGP的OPEN 消息以TCP S D:179(此时应该是Opensent打开发送状态状态)

5.收到BGP的OPEN  消息后,会给对端以TCP S:179 D发送BGP的OPEN消息及KEEPALIVE消息。(此时是OpenConfirm打开确认状态)

6.收到对端BGP的OPEN及KEEPALIVE消息后,会立即回复个BGP的KEEPALIVE 消息以TCP S D:179。

7.收到对端的KEEPALIVE消息后会立即回复个TCP的ACK包,以TCP S:179 D此时BGP邻居已经建立。(此时过后才算是Established建立状态)