教培参考
教育培训行业知识型媒体
发布时间: 2024年11月23日 10:16
回顾一下IGP协议的操作,以OSPF为例,当我们在两台直连路由器的直连接口激活OSPF后,这两个接口就开始收发Hello报文,在通过Hello报文发现了直连链路上的邻居后,一个邻接关系的建立过程也就开始了。
IGP协议要求需要建立邻居关系的两台路由器必须是直连的,然而BGP则大不相同。BGP的对等体关系并不要求设备必须直连,BGP采用TCP作为传输层协议,两台路由器只要具备IP连通性,并且能够顺利地基于TCP179端口建立连接,就可以建立BGP对等体关系,因此BGP的对等体关系是可以跨设备建立的。
我们将建立BGP邻居关系的路由器称为BGP对等体(Peer)。BGP有两种对等体关系,一种是EBGP,另一种是IBGP。
1.EBGP对等体关系(External BGP Peer)
如果建立对等体关系的两台BGP路由器位于不同的AS,那么它们之间的关系被称为EBGP对等体关系。
在图1中,显示了3个AS通过BGP对接的场景。图中对于这3个AS内部的网络架构只是做了一个非常简单的描绘,实际上AS内部的网络可能是庞大而复杂的,只不过站在BGP的视角,它并不关心AS内部的网络结构。
在AS 100、AS 200及AS 300中,各自运行着IGP协议,目的是为了实现AS内部的路由互通,而AS之间的路由信息交互则由BGP来完成。在本例中,R1及R2运行了BGP并且两者建立了EBGP对等体关系,同样,R3及R4之间也建立了EBGP对等体关系。
图1 EBGP及IBGP对等体关系
一条BGP路由在EBGP对等体之间传递时,会发生有趣的变化。在图2中,描述了AS 200中的一条路由——10.1.1.0/24在EBGP对等体之间的传递情况。R2将AS 200中的10.1.1.0/24路由发布到了BGP,它将这条路由通过BGP通告给自己的EBGP对等体R1。
每条BGP路由都携带着多个属性,这些属性被称为路径属性,其中一个非常重要的路径属性就是AS_Path,AS_Path是每条BGP路由都会携带的属性,它描述了一条BGP路由在传递过程中所经过的AS的号码。
R2将始发于AS 200的路由10.1.1.0/24通告给R1时,将该路由的AS_Path设置为200,而R1将这条路由通告给自己的IBGP对等体R3时,路由的AS_Path不发生改变。
R3将该路由通告给EBGP对等体R4时,则将路由的AS_Path修改为100 200,也就是在原有的AS_Path基础上,插入自己所处AS的号码,当R4收到这条BGP路由更新时,它便知道要到达该目的网段,需要经过100、200这两个AS——您可能已经发现了,BGP路由在EBGP对等体之间的传递过程,很有点距离矢量路由协议的味道。
实际上如果R2及R4之间也建立EBGP对等体关系的话,那么R4将会从R2直接收到10.1.1.0/24的路由更新,而这条路由的AS_Path为200,单纯从AS_Path属性值的长度(包含的AS号码个数)来衡量,显然对于R4而言直接从R2到达目标网段要更“近”一点。因此,AS_Path的长度会影响路由器对BGP路径的优选。
图2 BGP路由在EBGP对等体之间的传递
另外,路由在EBGP对等体之间传递时,AS_Path还用于防止出现路由环路。R4从R3收到10.1.1.0/24路由后,如果它与R2之间存在EBGP对等体关系,那么它会将该路由通告给R2,此时路由的AS_Path为300 100 200,如图7-3所示,R2从R4收到该路由后,会忽略这条路由更新,因为它在收到的路由中看到了自己本地的AS号码,便意识到网络中出现了环路。
通常情况下,EBGP对等体关系必须基于直连接口建立,例如本例中的R1及R2,它们是直连的,此时双方便可使用直连接口来建立EBGP对等体关系。BGP之所以要设定这样的规则,是因为缺省情况下,EBGP对等体之间发送的BGP协议报文的TTL值为1,这使得这些协议报文只能够被传送1跳。
当然,在某些特殊的场景中我们可能需要在两台非直连的路由器之间建立EBGP对等体关系,那么就需要修改EBGP对等体的跳数限制,通过这个操作来修改协议报文中的TTL值。
2.IBGP对等体关系(Internal BGP Peer)
如果建立对等体关系的两台BGP路由器位于相同的AS,那么它们之间的关系被称为IBGP对等体关系。例如在图7-2所描述的网络中,AS 100内存在两台运行着BGP的路由器:R1及R3,由于它们同属一个AS,因此它们之间所建立的关系为IBGP对等体关系。
同样的,AS 200中的R2及R6也建立了IBGP对等体关系。值得注意的是,在两台路由器之间建立IBGP对等体关系时,并不要求它们必须直连,在本例中,AS 100里的R1和R3就并未直连,得益于AS 100中运行的IGP协议(例如OSPF等),R1及R3能够发现到达对方的路由,从而两者能够借助这些路由建立TCP连接,并进一步建立IBGP对等体关系。
不同的BGP对等体关系,对路由的操作是有明显区别的。例如BGP路由在EBGP对等体之间传递时,AS_Path属性会发生改变,路由的发送方会在该条BGP路由原有AS_Path的基础上,插入自己所处AS的号码。而BGP路由在IBGP对等体之间传递时,AS_Path不会发生改变。