前面我们讲了BGP交互后需要建立对等体,BGP存在两种对等体关系类型:EBGP及IBGP,那对等体建立过程的状态是怎样的呢?BGP报文我们也学习过了,现在通过结合起来了解下BGP的状态机以及对等体表。
一、BGP状态机
也就是两台路由器间建立的对等体连接状态,当前处于什么状态,有以下几种:
Peer状态名称 | 用途 |
---|---|
Idle | 开始准备TCP的连接并监视远程对等体,启用BGP时,要准备足够的资源 |
Connect | 正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接 |
Active | TCP连接没建立成功,反复尝试TCP连接 |
OpenSent | TCP连接已经建立成功,开始发送Open包,Open包携带参数协商对等体的建立 |
OpenConfirm | 参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包 |
Established | 已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息 |
二、对等体建立过程
2.1 Idle状态
Idle状态是BGP初始状态。在Idle状态下,BGP拒绝对等体发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
Start事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起的。
任何状态中收到Notification报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态。
简单说就是默认状态处于Idle,或者链路故障、协商失败等回退回到初始Idle状态。
2.2 Connect、Active状态
配置完BGP对等体并成功查找到去往对等体地址的路由之后,会发起TCP三次握手,TCP三次握手建立过程中处于Connect状态,如果TCP连接长期无法建立则进入Active状态。
在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。
-
如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。 -
如果TCP连接失败,那么BGP转至Active状态。 -
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
在Active状态下,BGP总是在试图建立TCP连接。
-
如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态。 -
如果TCP连接失败,那么BGP停留在Active状态。 -
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
Connect状态是建立TCP连接的阶段,如果TCP建立成功则进入OpenSent状态,如果失败会出现尝试进入Active状态。
2.3 OpenSent、OpenConfirm状态
顾名思义这是TCP建立成功,然后发送OPEN报文互相确认的阶段。
在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
-
如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。 -
如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
Connect状态连接成功后进入OpenSent状态,发送OPEN报文并等待对方OPEN报文无误进入OpenConfirm状态。
2.4 Established状态
进入Open Confirm状态之后,BGP路由器如果收到了对端发送的Keeaplive报文,则进入Established状态,对等体关系建立过程就此完成。
在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
-
如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。 -
如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。 -
Route-refresh报文不会改变BGP状态。 -
如果收到Notification报文,那么BGP转至Idle状态。 -
如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。
前面我们学习BGP报文了解了Keepalive报文默认60s周期发送来保持BGP连接。
BGP状态机过程:
如果网络连接正常、OPEN参数、Keepalive协商正常经历的状态为: Idle状态 - Connect状态 - OpenSent状态 - OpenConfirm状态 - Established状态。
一般如果有连接问题会在处于Active状态进行重新连接。建议排查网络连接是否能够ping通,OPEN报文协商的Hold time时间和Keepalive时间是否一致等问题。
三、BGP对等体表项
在设备上通过display bgp peer
命令查看BGP对等体表,这里会显示自身的ID、AS号、全部对等体数量以及当前建立成功的对等体,具体对等体信息中主要参数含义:
-
Peer:对等体地址 -
V:version,版本号 -
AS:对等体AS号 -
Up/Down:该对等体已经存在up或者down的时间 -
State:对等体状态,这里显示的为BGP状态机的状态 -
PrefRcv:prefix received,从该对等体收到的路由前缀数目
<AR1>display bgp peer
BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.1.12.2 4 200 6 8 0 00:04:45 Established 0
如果想要查看指定对等体的具体协商参数可以通过display bgp peer 10.1.12.2 verbose
命令查看。
[AR1-bgp]display bgp peer 10.1.12.2 verbose
BGP Peer is 10.1.12.2, remote AS 200
Type: EBGP link # 对等体类型
BGP version 4, Remote router ID 2.2.2.2 # 对等体Router-ID
Update-group ID: 1
BGP current state: Established, Up for 00h09m48s
BGP current event: RecvKeepalive
BGP last state: OpenConfirm
BGP Peer Up count: 1
Received total routes: 0
Received active routes total: 0
Advertised total routes: 1
Port: Local - 179 Remote - 51130 # TCP端口连接信息
Configured: Connect-retry Time: 32 sec # Connect连接重传时间
Configured: Active Hold Time: 180 sec Keepalive Time:60 sec # Hold time和Keepalive时间
Received : Active Hold Time: 180 sec
Negotiated: Active Hold Time: 180 sec Keepalive Time:60 sec
Peer optional capabilities:
Peer supports bgp multi-protocol extension
Peer supports bgp route refresh capability
Peer supports bgp 4-byte-as capability
Address family IPv4 Unicast: advertised and received
Received: Total 11 messages # 接收和发送的5种报文数量统计
Update messages 0
Open messages 1
KeepAlive messages 10
Notification messages 0
Refresh messages 0
Sent: Total 13 messages
Update messages 1
Open messages 2
KeepAlive messages 10
Notification messages 0
Refresh messages 0
Authentication type configured: None # 报文更新时间
Last keepalive received: 2024/05/28 11:21:20 UTC-08:00
Last keepalive sent : 2024/05/28 11:21:19 UTC-08:00
Last update sent : 2024/05/28 11:12:19 UTC-08:00
Minimum route advertisement interval is 30 seconds
Optional capabilities: # 对等体使能的功能如4字节AS号、接收的路由条目数量等
Route refresh capability has been enabled
4-byte-as capability has been enabled
Peer Preferred Value: 0
Routing policy configured:
No routing policy is configured
总结:了解了BGP对等体建立过程的状态变化,BGP状态机制。学习通过display bgp peer
和display bgp peer x.x.x.x verbose
命令查看对等体简要和详细信息。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布