和RR(route-reflector,路由反射)功能类似,BGP联盟的出现打破了IBGP对等体之间无法传递路由的问题,和RR不同的是,联盟属性里面主要是依靠联盟子AS之间的邻居关系来传递IBGP对等体的路由,如图:




bgp下一条问题 bgp的下一跳_路由表


网络拓扑

R1和R2之间使用直连接口运行建立EBGP邻居,R2,R3,R4属于AS200(AS200中包含两个联盟AS65000和65001,R2和R3之间通过联盟AS65000建立IBGP邻居,R3和R4之间通过联盟AS65001建立EBGP邻居),AS200中的R2和R4对外通过AS200分别与R1和R5建立EBGP邻居,由此,当R1上宣告一个路由条目以后,路由条目将可以传到设备R5上


bgp下一条问题 bgp的下一跳_bgp下一条问题_02


拓扑2

接下来开启设备,做具体配置以实现效果:

1.接口配置ip地址


bgp下一条问题 bgp的下一跳_bgp下一条问题_03


R1


bgp下一条问题 bgp的下一跳_EIGRP_04


R2


bgp下一条问题 bgp的下一跳_计算机图形学跳一跳_05


R3


bgp下一条问题 bgp的下一跳_EIGRP_06


R4

R5

2.R2,R3,R4之间运行EIGRP底层,宣告各自环回口


bgp下一条问题 bgp的下一跳_bgp下一条问题_07


R2


bgp下一条问题 bgp的下一跳_路由表_08


R3


bgp下一条问题 bgp的下一跳_计算机图形学跳一跳_09


R4

3.R1和R2建立EBGP邻居,R4和R5之间建立EBGP邻居,并在R1上通告路由条目172网段


bgp下一条问题 bgp的下一跳_EIGRP_10


R1


bgp下一条问题 bgp的下一跳_计算机图形学跳一跳_11


R2


bgp下一条问题 bgp的下一跳_计算机图形学跳一跳_12


R3


bgp下一条问题 bgp的下一跳_R3_13


R4


bgp下一条问题 bgp的下一跳_计算机图形学跳一跳_14


R5

4.R2-R3-R4之间使用BGP联盟,对外标识为AS200,并且R2和R4使用AS200分别和R1、R5建立EBGP邻居;R2-R3属于联盟子AS65000,建立IBGP邻居; R3-R4分别使用联盟子AS65000和65001建立EBGP邻居


bgp下一条问题 bgp的下一跳_bgp下一条问题_15


R1


bgp下一条问题 bgp的下一跳_bgp下一条问题_16


R2


bgp下一条问题 bgp的下一跳_bgp下一条问题_17


R3


bgp下一条问题 bgp的下一跳_R3_18


R4

虽然R1上宣告了172的网段,如果稍微细心点可以发现在R5上并没有相应的路由条目,那是因为R1和R2之间使用的直连建立的EBGP邻居,而R2-R3-R4之间运行EIGRP,使用环回口建立邻居,当路由条目传递给R2,下一跳(next-hop)是12.1.1.1 ,R2会传递给R3,但是下一跳还是12.1.1.1 ,由于R3并没有去往12.1.1.0/24网段的路由,因此,会导致下一跳路由不可达,所以R3不会将从R2收到的路由条目添加进路由表中


bgp下一条问题 bgp的下一跳_计算机图形学跳一跳_19


R5


bgp下一条问题 bgp的下一跳_路由表_20


R3

根据BGP的下一跳特性,如果要R3将从R2收到的路由加入到路由表中,需要满足以下条件之一:

1.R3从IGP协议也学习到了来自于R1的172网段的路由条目

2.在R2上通过neighbor x.x.x.x next-hop-self命令告诉R3下一跳指向R2

显然最好的方法就是后者了


bgp下一条问题 bgp的下一跳_计算机图形学跳一跳_21


R2


bgp下一条问题 bgp的下一跳_bgp下一条问题_22


R5

R5收到了从R1传来的三条路由条目,以上就是BGP联盟属性,这种方法看起来比RR更好,因为可以节约更多的公有AS。需要注意的是:联盟内的所有BGP路由器的了路由信息是始终保持一致的 。