一、BGP的定义
边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络(如IPv6等)使用的版本是MP-BGP(RFC4760)。
MP-BGP是对BGP-4进行了扩展,来达到在不同网络中应用的目的,原有BGP-4的消息机制和路由机制并没有改变。MP-BGP在IPv6单播网络上的应用称为BGP4+,在IPv4组播网络上的应用称为MBGP(Multicast BGP)。
PS:AS是指在一个实体管辖下的拥有相同选路策略的IP网络
二、BGP 的特点
BGP 是一种 EGP( Exterior Gateway Protocol,外部网关协议),与 OSPF、 RIP 等 IGP( Interior Gateway Protocol,内部网关协议)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。
BGP是自治系统外部路由协议,用来在AS之间传递路由信息;
路径矢量路由协议,从设计上避免了环路的发生;主要有如下特性:
● TCP承载,端口号是179;
● 支持CIDR和路由聚合;
● 路由附带丰富的属性;
● 只发送增量路由更新;
● 路由过滤和路由策略。
三、BGP五种消息类型及作用
1、Open消息:Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。
2、Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。
3、Keepalive消息:BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。
4、Update消息:Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。
5、Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。
四、BGP协议的状态
1、空闲(Idle)状态
为初始状态当协议激活后开始初始化,复位计时器,并发起第一个TCP连接。
2、连接(Connect)状态
开始TCP连接并等待TCP连接成功的消息。
3、活跃(Active)状态
试图建立TCP连接。
4、open已发送(OpenSent)状态
TCP连接已建立,自己已发送第一个OPEN报文,等待接收对方的Open报文,并对报文进行检查。
5、open已确认(OpenConfirm)状态
BGP等待Keepalive报文,同时复位保持计时器。
6、连接已建立(Established)状态
即建立了邻居(对等体)关系,路由器将和邻居交换Update报文,同时复位保持计时器。
五、BGP对等体之间的交互原则
BGP设备将最优路由加入BGP路由表,形成BGP路由。BGP设备与对等体建立邻居关系后,采取以下交互原则:
● 从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。
● 从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。
● 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。
● 路由更新时,BGP设备只发送更新的BGP路由。
● 所有对等体发送的路由,BGP设备都会接收。