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设备与对等体建立邻居关系后,采取以下交互原则:
- 从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。
- 从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。
- 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。
- 路由更新时,BGP设备只发送更新的BGP路由。
- 所有对等体发送的路由,BGP设备都会接收