BGP邻居建立
IBGP:邻居的AS号和自身的AS号相同,建立的BGP邻居叫IBGP邻居。
EBGP:邻居的AS号和自身的AS号不同,建立的BGP邻居叫EBGP邻居。
Open报文:㔹商BGP参数
Update报文:交换路由信息
Keepalive报文:保持邻居关系
Notification报文:差错通知
Route-Refresh报文:用于在改变路由策略后请求对等体重新发送路由信息
BGP是用于在自治系统(AS)之间交换路由信息的路径向量路由协议。
BGP邻居建立过程是指两个BGP路由器之间建立BGP会话的过程,这个会话用于交换路由信息。
邻居建立的过程可以分为五个主要阶段:Idle、Connect、Active、OpenSent、OpenConfirm和Established。
每个阶段都有特定的行为和消息交换。
1. Idle(空闲)
Idle状态是BGP的初始状态,在Idel状态下,BGP拒绝邻居发送的连接请求,也不会向邻居发送TCP SYN,只有等待32s之后才会向邻居发送TCP syn,并将状态转换为Connect状态。
BGP停留在Idle状态:本地没有去往改邻居的路由。
2. Connect(连接)
在Connect状态下,BGP启动连接重传定时器(32s),待TCP完成连接。
如果TCP连接成功,那么BGP向对等体发送open报文,并转至opensent状态。
如果TCP连接失败(对端开启了BGP协议,但是没有将本端配置为邻居,本端收到了RST置位为1的拒绝的响应),那么BGP转至Active状态。
停留在Connect状态:如果TCP SYN没收收到邻居的响应,将会卡在Connect状态,总是尝试与BGP邻居建立TCP连接。
停留在Connect状态原因:
①、邻居没有启用BGP协议。
②、沿途路径存在流量过滤将TCP SYN拒绝了。
③、EBGP邻居建立没有配置多跳。
3. Active(活跃)
在Active状态下,BGP总是主动尝试与对等体建立TCP连接。
如果TCP连接建立成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转到OpenSent状态;
如果TCP连接建立失败,保持在Active状态并定期重试。
如果连接重传计时器超时(32s),BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
4. OpenSent(打开已发送)
在OpenSent状态下,路由器已发送OPEN消息并等待对等体的OPEN消息。
如果收到Open报文正确,那么BGP发送Keepalive报文,并转到Openconfirm状态。
如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
接收对等体的OPEN消息:验证BGP版本号、AS号、BGP标识符。
5. OpenConfirm(打开确认)
在OpenConfirm状态下,BGP等待Keeplive或Notification报文。
如果路由器在接收到KEEPALIVE消息,状态转到Established。
如果路由器接受到Notification消息,返回idle状态。
6. Established(建立)
BGP会话成功建立,路由器开始交换UPDATE消息,正式进行路由信息的传播。
如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,保持BGP连接。
如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至ldle状态。