BGP一共有以下几种消息类型:
四种类型的BGP消息,每一种都在建立、维护或拆除BGP对等会话中扮演着自己的角色:
1. Open
2. Update
3. Notification
4. Keepalive
5. Route-refresh
在两个BGP路由器通过TCP的179端口建立TCP连接之前,不会交换这些信息,但是如果TCP的连接错误,会触发Notification信息通知
idel
connect
open sent
open confirm
active
established
____________________________________________________
需要知道的是,BGP路由器交互任何消息类型之前必须建立于TCP连接之上:
idel状态位初始化,查询路由表,查询到路由表,也就是TCP可达,会进入connect状态
connect状态,代表查询到路由表,如果TCP连接建立成功,进入下一个open sent状态
open sent状态开始发送open消息,发出open消息以后等待对方发送的open消息,进入下一个open confirm状态,如果对方没有响应open信息,那么会一直卡在acticve状态,并且发送一条noticafition错误日志信息,直到正确响应对方的open信息进入下一状态
open confirm状态为open消息确认,代表收到了对方发来的open消息,开始发送keepalive消息,进入下一个establish状态,如果对方没有响应keepalive消息,回退到idel状态
establish状态代表建立了BGP邻居关系,开始周期性的交互keepalive消息,update消息及其noticafition消息
导致BGP邻居关系建立失败的原因:
1.TCP连接建立失败,要么没有对方neighbor的ip地址的路由,或者是反之对方没有
2.neighbor的ip地址指定错误,或者update-source指定错误,反之亦然
3.AS号不匹配,版本不一致,BGP标识符不一致,同2
下面以一个实验说明测试BGP建立邻居失败常见的原因:
两台路由器,底层EIGRP,然后使用环回接口建立IBGP邻居
1.当R2---update-souce接口配置错误
可以看到,R1会一只尝试建立TCP连接,且会一致卡在active状态
这类故障可以通过debug或者是抓包分析,然后检查配置解决
2.router-id配置错误:
检查route-id是否重复,或者配置错误等
3.AS配置错误
以上就是关于BGP邻居的几种消息类型和邻居建立过程,如果查看到邻居的状态一定要检查TCP的可达性;如果是处于active状态,一定要检查bgp的配置,谢谢!