BGP是为TCP/IP互联网设计的外部网关协议,用于多个自治域之间。
它既不是基于纯粹的链路状态算法,也不是基于纯粹的距离向量算法。
它的主要功能是与其他自治域的BGP交换网络可达信息。
各个自治域可以运行不同的内部网关协议。
BGP更新信息包括网络号/自治域路径的成对信息。
自治域路径包括到达某个特定网络须经过的自治域串,这些更新信息通过TCP传送出去,以保证传输的可靠性。
一条从IBGP邻居学习到的路由在进入IGP(show ip route)路由表或通告给一个BGP对端之前,通过IGP必须知道该路由。
为什么需要同步?为什么不需要同步?
(1)当通过IBGP公布路由的时候,根据定义,它们是在同一个AS内进行公布。结果是,AS_PATH不会发生改变。
实际上,在路由公布给EBGP对端之前,本地AS号不会附加到AS_PATH上。
因此,IBGP路由不具备EBGP路由所具有的防止环路功能。
为了防止环路,BGP不会将从一个IBGP对端学习到的路由宣告给另外一个IBGP对端。
所以这就要求IBGP对等体间全互联网状结构。
这种网状结构连接有如下好处:
首先,在AS内防止环路。
其次,保证了BGP路由上的所有路由器都知道如何将数据包转发到目的地。
所以,全互联网状结构下,同步是不需要的,我们必须关掉它。
(2)当IBGP对等关系不是全互联网状连接时会出现什么情况呢?我们通过如下拓朴来分析同步在这种情况下的重要性。
在这种情况下Shanghai和Beijing,Chengdu和Beijing之间已经配置了IBGP对等会话。
你可以看到Shanghai和Beijing正在交换它们本地网络,同时Chengdu和Beijing也在交换。
但Shanghai和Chengdu却无法学习到彼此的网络。
通过全网状IBGP对等连接获得完全可达性。此时虽然在Shanghai和Chengdu之间没有直接的数据链路,但是这它们是对等的。
在Shanghai和Chengdu之间BGP使用的TCP连接要通过Beijing,但逻辑上这它们之间的连接是一个点到点的会话连接。
这一点非常重要,因为要建立TCP会话,Shanghai和Chengdu必须要知道将它们连接在一起的数据链路地址。
非全互联网状结构,图1所示Shanghai和Chengdu不能学习到彼此的网络通告。
这和BGP同步与非同步没有任何关系,它是BGP防环的内在机制。在全互联网状结构中Shanghai和Chengdu能相互学习到彼此的通告,并将其加入BGP表,但不会加入IGP表,因为同步被启用。
同步要求从IBGP学习到的路由在进入IGP路由表之前,通过IGP必须知道该路由。
这里没有运行任何IGP,所以不能从IGP知道该路由同时也就不能加入IGP路由表。
把同步关掉后,学习到的路由就能加入IGP路由表。