一、配置BGP前,注意掌握BGP speaker路由更新规则:
 
当一个BGP speaker接收到本AS内其它speaker发来的路由更新时,不得将此更新再转发给其它BGP speaker!
 
但是可以将此更新转发给其它AS的BGP speaker!
 
也就是说,接到路由更新时,可以传递给其它EBGP邻居,但不能传给其IBGP邻居!
 
这就要求在一个AS内部,所有IBGP邻居要建立full mesh(全互连)
 
为什么会有以上这个规则:为了防止AS内部的路由环路,因为BGP只有在EBGP之间,才有AS-PATH可以用来作为防环机制;但是在同一AS内部,AS-PATH是不变的,都是本地AS号,这样防环机制自然就无效了。正是出于这个原因,所有AS内部BGP speaker都不得将路由更新转发给其它邻居,这样形成环路的可能性就没有了。但是这么一来,为了在IBGP之间同步路由,就势必需要在所有IBGP 邻居之间建立FULL MESH(全互连)
 
 
二、BGP同步规则:
如果你的AS需要将一个AS内路由转发给其它AS,必须确定本AS内的IGP路由已经学得你将要通告至其它AS的路由。
 
也就是说,在转发一条路由条目给其它EBGP邻居前,必须确定本AS内IGP路由表中已有这条路由。
 
 
 
比如上图中:
RTC如将170.10.0.0路由通过EBGP传给RTA,RTA在将这条路由转给RTB时,是通过TCP协议进行传递,其下一跳地址为2.2.2.1。
 
这样,如果没有同步规则存在时,RTB会不加思考地将它继续转发给RTD。这样,如果RTD想发送数据给170.10.0.0时,首先会交由RTB,RTB下一步将数据转给RTE,但是RTE上只运行了IGP协议,IGP中并没有到170.10.0.0的路径,所以数据包将在E处被丢弃。
 
如果同步规则存在,那么在RTB上的IGP路由表中没有170.10.0.0存在时,它不得将此路由转发给其它任何BGP邻居。避免了路由黑洞的形成。