BGP工作原理

 BGP对等体的建立、更新和删除等交互过程主要有5种报文、6种状态机和5个原则

 

一、5种报文类型:

1,open:用于建立BGP对等体连接

1.1,BGP邻居参数协商:

  • AS number:要和邻居一致,否则无法建立邻居关系;
  • Router-id:不能冲突,否则无法建立邻居关系;
  • Hold time:邻居失效时间 ,默认180s,如果不一致,协商成小的;
  • BGP version:默认运行为v4版本

1.2,BGP邻居能力的协商:

  • 地址族协商一致,否则无法建立邻居关系,默认为ipv4单播地址族(至少有一种地址组能力要一致)
  • 路由刷新能力
  • 是否支持4字节的AS号

 

2,update:用于在对等体之间交换路由信息,更新和撤销

3,notification:用于中断BGP TCP连接

4,keepalive:用于保持BGP连接,周期性发送,默认60s,180s内没收到,邻居关系断开

5,route-refresh:用于手动触发路由的触发更新,或者用于ORF功能。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文

二、6种状态机制

1,空闲(Idle)

  • 没有去往邻居路由
  • 邻居发起的tcp连接,被本端拒绝,源地址不是本端指定的邻居地址

2,连接(Connect)

  • 发起tcp连接,无法收到邻居的任何响应
  • 如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。
  • 如果TCP连接失败,那么BGP转至Active状态。

3,活跃(Active)

  • 发起tcp连接的路由器,能收到相应邻居的应答报文,但依然无法建立起tcp 3次握手
  • 如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态。
  • 如果TCP连接失败,那么BGP停留在Active状态。
  • 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态

4,Open报文已发送(OpenSent)

  • 如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。
  • 如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。

 

5,Open报文已确认(OpenConfirm)

 

  • 在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。

6,连接已建立(Established)

 

  • 如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。
  • 如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。
  • Route-refresh报文不会改变BGP状态。
  • 如果收到Notification报文,那么BGP转至Idle状态。
  • 如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。

 

在BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active和Established

 

 

三、BGP对等体之间的交互5个原则

 

BGP设备将最优路由加入BGP路由表,形成BGP路由。BGP设备与对等体建立邻居关系后,采取以下交互原则:

 

  1. 从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。

  2. 从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。

  3. 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。

  4. 路由更新时,BGP设备只发送更新的BGP路由。

  5. 所有对等体发送的路由,BGP设备都会接收

 

posted @ 2021-12-18 23:03  他大舅和二舅  阅读(747)  评论(0编辑  收藏  举报