> 1.BGP路由同步概念: BGP协议规定:一个运行BGP协议的路由器不会把从内部对等体(IBGP邻居)得知的路由信息通告给外部对等体(EBGP邻居),除非该路由信息也能通过IGP得知。若BGP路由器能通过IGP得知该路由信息,则可认为路由能在AS之间传播,内部通达已有保证。 首先,RTB通过EBGP邻居关系,获得了去往AS100的路由信息,例如,去往AS100中的10.1.1.1/24,RTB会把这样的路由信息通告给RTE,RTE收到从RTB通告来的去往自治系统AS100的路由信息10.1.1.1/24。对于RTE来说,她在考虑是否把这样的路由信息通告给她的EBGP邻居RTF时,就需要考虑同步问题。这里的同步是指:RTE如果能通过IGP(内部网关协议,如OSPF协议)获得去往10.1.1.1/24的路由,我们就认为EGP(外部网关协议,如BGP协议)和IGP同步。在同步情况下,RTE可以将路由信息10.1.1.1/24通告给RTF。否则,不能通告。 通过上面的叙述,相信大家应该知道什么是BGP同步了。那么BGP的设计者们为什么要做这样一个规定呢?为什么要引入BGP同步的概念呢? 下面我们来说说BGP同步存在的重要性和她所解决的关键问题。 2.BGP路由同步的重要性: 依然用上面的例子来解释,如果RTE不考虑同步问题,直接将路由信息10.1.1.1/24 通告给RTF,那么RTF的路由表中就会记录一条去往10.1.1.1/24的路由信息,下一跳是指向RTE的。这样问题就会出现:RTF有一去往10.1.1.1/24的数据包,RTF通过查看路由表,把这一数据包转发给RTE。如果没有同步,RTE的路由表中也会有去往10.1.1.1/24的表项,但是这一表项的下一跳是直接指向RTA的S0接口的(这里的原因参见BGP的下一跳属性)。在不同步的情况下,RTE是无法直接去往此路由的下一跳的(因为路径中途的路由器RTD、RTC都没有去往10.1.1.1/24的路由)。这里有个概念叫下一跳不可达,就是指这种情况。 那么,讲到这里,聪明的读者是不是明白了呢?BGP强调同步的原因就是要保证下一跳可达。用上面的例子来说,就是RTE在考虑把去往10.1.1.1/24的路由信息通告给RTF时,就需要考虑她去往10.1.1.1/24的下一跳是否可达(这里的下一跳就是指RTA的S0接口,此接口是AS200和AS300去往AS100的入口)。如果这个入口都不可达,更不要说访问其内部了。所以下一跳是否可达的问题是一个关键性问题,BGP强调同步,就是要求RTE所在自治系统的IGP协议能够实现下一跳可达。如果IGP找到了去往下一跳的路由,那么RTE就得到了两个去往10.1.1.1/24的路由。一个是:通过BGP获得的,这个路由的下一跳不可达。另一个是:通过IGP获得的,这一个下一跳可达(关于为什么BGP获得的路由下一跳不可达,而IGP获得的路由下一跳可达,这个问题需要大家对BGP的下一跳属性做进一步了解,这里不再叙述)。 3.BGP的路由可达和不可达问题: |