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建立邻居失败常见的原因:




BGP节点是什么 bgp state connect_BGP节点是什么

拓扑



两台路由器,底层EIGRP,然后使用环回接口建立IBGP邻居

1.当R2---update-souce接口配置错误




BGP节点是什么 bgp state connect_路由表_02

R1



可以看到,R1会一只尝试建立TCP连接,且会一致卡在active状态




BGP节点是什么 bgp state connect_路由表_03

R1




BGP节点是什么 bgp state connect_ide_04

R1配置



这类故障可以通过debug或者是抓包分析,然后检查配置解决

2.router-id配置错误:




BGP节点是什么 bgp state connect_TCP_05

R1




BGP节点是什么 bgp state connect_ide_06

R2



检查route-id是否重复,或者配置错误等

3.AS配置错误




BGP节点是什么 bgp state connect_BGP节点是什么_07

R1




BGP节点是什么 bgp state connect_ide_08

R2




BGP节点是什么 bgp state connect_路由表_09

R1




BGP节点是什么 bgp state connect_TCP_10

R2



以上就是关于BGP邻居的几种消息类型和邻居建立过程,如果查看到邻居的状态一定要检查TCP的可达性;如果是处于active状态,一定要检查bgp的配置,谢谢!