1、bgp邻居状态
BGP对等体的交互过程中存在6种状态机:
空闲(Idle)
连接(Connect)
活跃 (Active)
Open报文已发送(OpenSent)
Open报文已确认(OpenConfirm)
和连接已建立(Established)
空闲状态(Idle):BGP 初始状态
- 描述:在空闲状态下,BGP路由器尚未尝试建立连接。
- 触发条件:只有在收到本设备的 Start 事件后,BGP 才开始尝试和其它 BGP 对等体进行 TCP 连接,并转至Connect 状态。(Start 事件是由一个操作者配置一个 BGP 过程,或者重置一个已经存在的过程或者路由器软件重置 BGP过程引起的)
- 行为:BGP路由器等待指令以建立到特定邻居的连接。
- 任何状态中收到 Notification 报文或 TCP 拆链 通知等 Error 事件后,BGP 都会转至 Idle 状态。
连接状态(Connect):表示等待 TCP 连接完成,等待时间默认 为 32 秒(重传超时时间)
- 描述:在连接状态下,BGP路由器正在尝试建立与邻居的TCP连接。
- 触发条件:BGP路由器已经发送了TCP SYN包,尝试与邻居建立连接。
- 行为:BGP路由器等待TCP连接的确认。
- 如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。
如果TCP连接失败,那么BGP转至Active状态。
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
卡Connect状态原因:1、对端BGP没开;2、认证;3、TCP179端口被禁
active状态,BGP总是在主动建立TCP连接
- 如果TCP连接成功,BGP向对端发送Open报文,关闭连接重传定时器,转至OpenSent状态。
如果TCP连接失败,那么BGP停留在Active状态。
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
OpenSent状态:BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证等进行检查。
- 描述:在OpenSent状态下,BGP路由器已经成功建立了TCP连接,并向邻居发送了Open消息。
- 触发条件:BGP路由器已经发送了Open消息,但尚未收到邻居的Open消息。
- 行为:BGP路由器等待邻居的Open消息以确认连接
- 如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。
如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
OpenConfirm状态下:BGP等待Keepalive或Notification报文。如果收到Keepalive报 文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
- 描述:在OpenConfirm状态下,BGP路由器已经收到了来自邻居的Open消息,确认连接已建立。
- 触发条件:BGP路由器已经收到了邻居的Open消息。
- 行为:BGP路由器等待Keepalive消息以确认连接的稳定性。
Established状态下:BGP可以和对等体交换Update、Keepalive、Route-refresh报文和 Notification报文。
- 描述:在建立状态下,BGP邻居之间的连接已经建立并且稳定,可以交换路由信息。
- 触发条件:BGP路由器已经收到了邻居的Keepalive消息,确认连接的稳定性。
- 行为:BGP路由器可以开始交换路由信息,并保持连接处于活动状态。
- 如果收到正确的 Update 或 Keepalive 报文,那么 BGP就认为对端处于正常运行状态,将保持 BGP 连接。
如果收到错误的 Update 或 Keepalive 报文,那么 B知对端,GP发送 Notification 报文通并转至 Idle 状态。
如果收到 Notification 报文,那么 BGP 转至 Idle 状态。
如果收到 TCP 拆链通知,那么 BGP 断开连接,转至 Idle状态
2、影响邻居的因素
1、版本:一般都是 V4,不一致不能建立。
2、Router-ID:Router-ID 不能一样,否则不可以建立邻居。
3、AS 号:建立邻居的时候会检测 Open 报文中 AS 号是否与本端配置的邻居 AS 号一致,如果不一致,不能正常建立邻居
4、认证:BGP 只有 MD5 认证和 keychain 认证;
MD5 认证:只针对 TCP 进行认证,认证信息放在 TCP报文的 option 字段中。
keychain 认证:针对 TCP 和 BGP 报文进行认证,认证信息放在 TCP 报文的 option 字段中,同时也放在 BGP 报文中。
5、peer地址不可达,对端bgp地址不可达。
6、指了邻居没指更新源
7、EBGP邻居关系使用loopback口要配置多跳(直连检测)
3、BGP对等体之间路由的交互原则
- 从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。(IBGP到IBGP不传)
- 从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。
- 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。
- 路由更新时,BGP设备只发送更新的BGP路由。