BGP对等体创建过程当中,可能出现的一些状态:ide
一、Idle:初始化状态。当BGP进程初始化以后,进入Connect状态,监听TCP会话的创建。spa
二、Connect:本地路由器等待TCP会话创建的完成。若是该过程成功,本地路由器向对方发送Open信息,并进去OpenSent状态;若是该过程失败,本地路由器将重置ConnectRetry计时器,并进入Active状态。若是当路由器处于Connect状态时,计时器的值倒数为0,本地路由器将尝试另一条链接,重置计时器的值,而且仍旧处于Connect状态。进程
三、Active:该状态下,本地路由器尝试向对方发起一条TCP会话,若是会话成功创建,本地路由器将发送Open信息,并进入到OpenSent状态;若是链接失败,将重置ConnectRetry计时器的值为0,并回到Connect状态;若是本地路由器从一个不预期的远程路由器那里收到一条链接请求,本地路由器将拒绝该链接仍旧处于Active状态,并重置ConnectRetry计时器。路由
四、OpenSent:TCP会话成功创建后,将进入该状态。本地路由器将发送Open信息,并等待对方给予Open信息作为回应。若是本地路由器从对方那里收到了有效的Open信息,本地路由器将发送Keepalive信息给远程路由器,双方协商BGP会话参数,并进入到OpenConfirm状态;若是在该状态下,TCP会话忽然断开,本地路由器将中断BGP会话,重置ConnectRetry计时器,并回退到Active状态。开发
五、OpenConfirm:当本地路由器收到对方回应的有效Open信息,进入该状态。本地路由器发送Keepalive信息,并等待对方给予回应。it
六、Established:当本地路由器收到对方回应的Keepalive信息后,BGP对等体会话关系彻底创建。class
--------------------------------------路由器
1.以TCP随机的源端口@(1024~~50000)目的端口179(BGP)发送SYN包。(在此以前是Idle,此时是connect链接状态一直到TCP三次握手成功)请求
2.对端收到第一个SYN后会以源端口179(BGP)目的端口@(1024~~50000)发送SYN 及 ACK。im
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创建状态)