【转】BGP的邻居状态机

九、BGP邻居状态机

可以利用邻居状态机描述BGP连接的建立和维护,它将有以下的6种状态:

1、ldle (空闲)状态

BGP总以ldle状态为起点,该状态拒绝所有入站的连接。只有在BGP起动之后,BGP进程将初始化所有BGP资源,初始化去往邻居的TCP连接,监听来自邻居的TCP初始化消息,并更改为连接状态。启动事件一般是配置BGP进程。

2、Connect(连接)状态

进入Connect状态后,BGP进程将一直等待TCP连接的完成(三次握手),当TCP连接建立成功,BGP将会向邻居发送Open消息,并进入OpenSent(打开发送)状态。如果TCP会话没有建立,BGP将继续监听邻居初始化的连接,开启连接重试定时器,迁移到Active(激活)状态。Connect→→OpenSent(TCP连接建立);Connect→→Active(TCP连接暂未建立)。

3、Active(激活)状态

该状态下,BGP进程继续尝试和邻居建立TCP连接,如果TCP连接建立成功,BGP进程清除连接重试定时器,完成初始化过程,并向邻居发送Open报文,迁移到OpenSent(打开发送)状态。
如果连接重试定时器到期BGP进程依然处在激活状态,进程将返回连接状态,监听邻居发起的TCP会话,这个过程将反复循环,直到监听到由邻居发起的TCP会话。

4、OpenSent(打开发送)状态

进入了该状态,已经发送了Open消息,BGP将一直等待来自邻居的Open消息。一旦接收到Open消息后,将检查该消息的每一个字段,如果有差错,将会发送Notification消息迁入Idle状态。
如果接收到的Open消息没错,就会发送Keepalive消息并商讨Keepalive定时器和Keepalive发送的时间。 并迁移到OpenConfirm(打开确认)状态。

5、OpenConfirm(打开确认)状态

进入了这个状态下,BGP进程将等待邻居确认的Keepalive或Notification消息。如果接收到的是Keepalive消息则迁移到Established(建立)状态,如果是Notification消息那么就将迁移到Idle状态。

6、Established(建立)状态

进入了这个状态就说明了BGP的对等连接正式建立了,对等体之间交互Update,Keepalive和Notification消息,如果接受到的是Update或Keepalive消息,则重启保持定时器,如果接受到一个Notification消息,则会迁移到Idle状态。

注:

①Q:长时间停留在Active或ldle状态,可能的原因是什么?
a)本路由器没有到达BGP Open报文中源IP地址的路由(debug ip bgp输出:no route)
b)neighbor命令中配置了错误的IP地址(debug ip bgp输出:no route)
c)neighbor命令中没有配置更新源地址(debug ip bgp输出:Connection refused by remote host)
d)在建立eBGP邻居是的neighbor命令中没有考虑到TTL值问题
e)没有配置neighbor命令
f)AS号配置错误(debug ip bgp输出:Connection refused by remote host)

②我们在实际网络中操作BGP时,为了避免路由动荡,可以使用命令router(config-router)# neighbor A.B.C.D shutdown来暂时的关闭BGP邻居,此时邻居配置未删除但是路由丢失。

③查看命令show ip bgp summary  # 观察最后1列显示为空白或数字,表示该邻居正常建立。
查看命令show ip bgp neighbors     # 观察BGP State显示为Established表示邻居正常建立。

bgp-neighbor-state-machine-1 bgp-neighbor-state-machine-2

 

转自:http://bbs.51cto.com/thread-932222-1.html

打赏作者
这里是 “ CCIE 工程师社区 ” 官方的捐款通道,您是否可以考虑请我们喝杯咖啡呢?

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

Was this article helpful?

Related Articles

Leave A Comment?

This site uses Akismet to reduce spam. Learn how your comment data is processed.