实验:BGP的简单配置
实验拓扑:
参照拓扑:
实验要求:
R1的回环接口能与R5的回环接口进行正常通讯
实验配置:
一、基本配置完成后,在R2、R3、R4上发布ospf,不发布12.12.12.0/24和45.45.45.0/24的网段(如果这两个网段发布后,R2、R3、R4的路由表中都有这两个网段的路由信息,实验显得没有意义)
二、在R1和R2上配置bgp,其命令如下:
R1:
router bgp 1
bgp router-id 1.1.1.1
neighbor 12.12.12.2 remote-as 2
R2:
router bgp 2
bgp router-id 2.2.2.2
neigh 12.12.12.1 remote-as 1
如图,当两边都配置了bgp之后,如框中所示,最初显示为Idle(空闲),因为bgp协议很庞大,所以在bgp中建立邻居关系,并没有立刻成功,需要一段时间,当确定两边都建立了ebgp邻居关系后,框中显示为0,为数字,即邻居关系建立完成。
三、在R4和R5中配置bgp,其命令如下:
R4:
ip route 5.5.5.0 255.255.255.0 s1/1
router bgp 2
bgp router-id 4.4.4.4
neig 5.5.5.5 remote-as 3
neig 5.5.5.5 update-so lo1
neig 5.5.5.5 ebgp-mul
exi
R5:
ip route 4.4.4.0 255.255.255.0 s1/0
router bgp 3
bgp router-id 5.5.5.5
neigh 4.4.4.4 remote-as 2
neig 4.4.4.4 update-sou loo1
neigh 4.4.4.4 ebgp-mult
exi
因为配置bgp的不是直连接口是回环接口,所以需要发布自己的回环接口ip,让邻居收到,但是仍然没有成功建立邻居关系。这是因为选择的是回环接口,而从本地路由器的回环接口与邻居路由器的回环接口建立邻居关系,则比直连接口复杂。需要更新源的回环接口,从而选择最佳路径。并且默认的跳数为1,所以需要定义跳数,使bgp路由器建立ebgp关系。
当配置了neig 5.5.5.5 update-so lo1更新源的回环接口地址,neig 5.5.5.5 ebgp-mul定义跳数后,R4和R5的ebgp邻居关系成功建立。
四、在R2和R4中配置bgp,其命令如下:
R1:
router bgp 1
net 1.1.1.0 mask 255.255.255.0
R2:
router bgp 2
neigh 4.4.4.4 remote-as 2
neigh 4.4.4.4 update-sou lo1
neigh 4.4.4.4 next-hop-self
R4:
router bgp 2
neig 2.2.2.2 remote-as 2
neig 2.2.2.2 update-sour lo1
neig 2.2.2.2 next-hop-sel
当没有定义下一跳时,虽然能够建立ibgp邻居关系,但是当R1宣告了自己的ip网段后,R4并不能学习到。
在R2、R4上定义了下一跳,强制自己成为下一跳地址,则避过了R3,使R4能够学习到R1的ip,同理,如果R5也宣告了自己的ip网段,R2也能通过定义下一跳学习到R5的ip网段。
五、R1和R5的会换地址进行互相通讯,其截图如下:
R5的路由表中拥有R1的回环接口地址,但是并不能进行正常通讯,这时在R1上查看它的路由表,则发现R1的路由表里并没有R5的回环接口地址信息,所以很好理解为什么R1和R5的回环接口不能进行正常通讯。从上述步骤中,漏掉了一点,R5的回环接口ip并没有宣告,所以,需要在R5上通过bgp通过net 5.5.5.0 mask 255.255.255.0宣告5.5.5.5。
当在R5上宣告了它的回环地址后,发现仍不能进行正常通讯。通过show ip route命令把所有的路由器查看一遍后,发现,R3并没有学习到R1和R5的回环地址。
为什么会这样呢?
这就引出了一个术语,路由黑洞。在控制层路由黑洞是不存在的,因为R2和R4能够成功建立ibgp邻居关系,而建立这个关系,需要经过R3,并且在R2和R4定义了下一跳之后,两者也是通过R3学习到R5和R1的会换地址,所以说,在控制层面,路由黑洞并不存在。但是因为R3并没有运行bgp协议,所以R3学习不到R1和R2的回环地址。所以无法传输数据,阻断了R1和R5的正常通信。这就是数据层面的路由黑洞。
解决路由黑洞的方法有三种:
一、物理线路full mesh(基本不用太贵了)
二、BGP邻居的full mesh (这种方式最多,就是让R3也运行BGP)
三、将BGP重发布到IGP中(只限于LAB,各位可以想象一下可不可能把公网上面的BGP全部重发布到你的本OSPF地来,这样的话内网瞬间就垮了)
六、通过BGP邻居的full mesh解决路由黑洞,从而使R1和R5进行回环地址的通讯,其命令如下:
R2:
router bgp 2
neigh 3.3.3.3 remote-as 2
neigh 3.3.3.3 update-sou lo1
neigh 3.3.3.3 next-hop-self
R4:
router bgp 2
neig 3.3.3.3 remote-as 2
neig 3.3.3.3 update-sour lo1
neig 3.3.3.3 next-hop-sel
R3:
router bgp 2
bgp router-id 3.3.3.3
neigh yinming peer-group
neigh yinming remote-as 2
neigh yinming update-sou lo1
neigh yinming next-hop-se
neigh 2.2.2.2 peer-group yinming
neigh 4.4.4.4 peer-group yinming
当没有配置更新源的回环接口的地址时,便会出先如框中所显示的“*”号,这是因为“*”代表的是次优路径,而bgp只会走最优路径,所以哪怕R3的路由表中拥有R1和R5的回环地址信息,也不能进行正常通讯。
而且也需要重新定义下一跳,因为R3已经运行bgp协议,需要更新R3源的回环地址,从而使R3也学习到R1和R5所宣告的路由信息。
如图所示,实验成功!!!!