|
BGP(Border Gateway Protocol,边界网关协议)是用来连接Internet上独立系统的路由选择协议。它是Internet工程任务组制定的一个加强、完善、可伸缩的协议。BGP4支持CIDR寻址方案,该方案增加了Internet上的可用IP地址数量。BGP是为取代最初的外部网关协议EGP设计的。它也被认为是一个路径矢量协议。BGP是一种在自治系统之间动态交换路由信息的路由协议。
|
|
|
|
|
(1)BGP将传输控制协议(TCP)用作其传输协议,是可靠传输,运行在TCP的179端口上(目的端口)。
|
|
|
(2)由于传输是可靠的,所以BGP使用增量更新,在可靠的链路上不需要使用定期更新,所以BGP使用触发更新。
|
|
|
(3)类似于OSPF和ISIS路由协议的Hello报文,BGP使用keepalive周期性地发送存活消息(60s)(维持邻居关系)。
|
|
|
(4)BGP在接收更新分组的时候,TCP使用滑动窗口。
|
|
|
|
|
|
|
|
(2)转发数据库:记录每个邻居的网络;包含多条路径去往同一目的地,通过不同属性判断最好路径;数据库包括BGP属性。
|
|
|
(3)路由表:最佳路径放入路由表中。EBGP路由(从外部AS获悉的BGP路由)的管理距离为2,IBGP路由(从AS系统获悉的路由)管理距离为200。
|
|
|
|
(1)open:用来建立最初的BGP连接,包含hold-time,router-id)。
|
|
|
(2)Keepalive:对等体之间周期性的交换这些消息以保持会话有效,默认为60秒。
|
|
|
(3)Update:对等体之间使用这些消息来交换网络层可达性信息。
|
|
|
(4)Notification:这些消息用来通知出错信息。
|
|
|
|
在两个BGP发言人交换信息之前,BGP都要求建立邻居关系,BGP不是动态地发现所感兴趣运行BGP的路由器;相反,BGP使用一个特殊的邻居IP地址来配置的。
|
|
|
BGP使用周期性的Keepalive分组来确认BGP邻居的可访问性。
|
|
|
Keepalive计时器是保持时间(Hold Time)的三分之一,如果发给某一特定BGP邻居三个连续的Keepalive分组都丢失的话,保持时间计时器超时,那个邻居被视为不可达,RFC1771对保持时间的建议是90秒,Keepalive计时器的建议值是30秒。
|
|
|
按照RFC1771,BGP建立邻居关系要经历以下几个阶段,如下图所示。
|
|
|
|
|
(1)Idle:在此状态下不分配网络资源,不允许传入的BGP连接。当在持续性差错条件下,经常性的重启会导致波动。因此,在第一次进入到空闲状态后,路由器会设置连接重试定时器,在定时器到期时才会重新启动BGP,思科的初始连接重试时间为60秒,以后每次连接重试时间都是之前的两倍,也就是说,连接等待时间呈指数关系递增。
|
|
|
(2)Connect:(已经建立完成了TCP三次握手),BGP等待TCP连接完成,如果连接成功,BGP在发送了OPEN分组给对方之后,状态机变为OpenSent状态,如果连接失败,根据失败的原因,状态机可能演变到Active,或保持Connect,或返回Idle。
|
|
|
(3)Active:在这个状态下,初始化一个TCP连接来建立BGP间的邻居关系。如果连接成功,BGP在发送了OPEN分组给对方之后,状态机变为OpenSent状态,如果连接失败,可能仍处在Active状态或返回Idle状态。
|
|
|
(4)OpenSent:BGP发送OPEN分组给对方之后,BGP在这一状态下等待OPEN的回应分组,如果回应分组成功收到,BGP状态变为OpenConfirm,并给对方发送一条Keepalive分组,如果没有接到回应分组,BGP状态重新变为Idle或是Active。
|
|
|
(5)OpenConfirm:这时,距离最后的Established状态只差一步,BGP在这个状态下等待对方的Keepalive分组,如果成功接收,状态变为Established;否则,因为出现错误,BGP状态将重新变为Idle。
|
|
|
(6)Established:这是BGP对等体之间可以交换信息的状态,可交换的信息包括UPDATE分组、KeepAlive分组和Notification分组。
|
|
|
|
IBGP运行在AS内部,不需要直连。IBGP有水平分割,建议使用Full Mesh,由于Full Mesh不具有扩展性,为了解决IBGP的Full Mesh问题,使用路由反射器(RR)和联邦两种方法来解决。主要减少了backbone IGP中的路由。
|
|
|
|
(1)邻居之间可以通过各自的一个物理接口建立对等关系,该对等关系是通过属于它们共享的子网的IP地址来建立的。
|
|
|
(2)邻居之间也可以通过使用环回接口建立对等关系。
|
|
|
在IBGP中,由于假定了IBGP邻居在物理上直接相连的可能性不大,所以将IP分组头中的TTL域设置为255。
|
|
|
|
EBGP运行在AS与AS之间的边界路由器上,默认情况下,需要直连或使用静态路由,如果不是直连,必须指EBGP多跳。
|
|
|
|
(1)邻居之间可以通过各自的一个物理接口建立对等关系。
|
|
|
(2)邻居之间也可以通过使用环回接口建立对等关系。
|
|
|