1、实验拓扑
2、基础配置
R1配置
interface Loopback0
ip address 1.1.1.1 255.255.255.0
interface Serial0/0
ip address 13.1.1.1 255.255.255.0
interface Serial0/1
ip address 12.1.1.1 255.255.255.0
router ospf 110
router-id 1.1.1.1
network 1.1.1.0 0.0.0.255 area 0
network 12.1.1.0 0.0.0.255 area 0
network 13.1.1.0 0.0.0.255 area 0
R2配置
interface Loopback0
ip address 2.2.2.2 255.255.255.0
interface Serial0/0
ip address 24.1.1.2 255.255.255.0
interface Serial0/1
ip address 12.1.1.2 255.255.255.0
router ospf 110
router-id 2.2.2.2
network 2.2.2.0 0.0.0.255 area 0
network 12.1.1.0 0.0.0.255 area 0
R3配置
interface Loopback0
ip address 3.3.3.3 255.255.255.0
interface Serial0/0
ip address 13.1.1.3 255.255.255.0
interface Serial0/1
ip address 35.1.1.3 255.255.255.0
router ospf 110
router-id 3.3.3.3
network 3.3.3.0 0.0.0.255 area 0
network 13.1.1.0 0.0.0.255 area 0
R4配置
interface Loopback0
ip address 4.4.4.4 255.255.255.0
interface Serial0/0
ip address 24.1.1.4 255.255.255.0
R5配置
interface Loopback0
ip address 5.5.5.5 255.255.255.0
interface Serial0/1
ip address 35.1.1.5 255.255.255.0
3、BGP邻居建立
IBGP建邻居用环回口,而默认源地址是物理接口,所以在使用环回口建邻居的时候,需要手动指定更新源,例如:neighbor 3.3.3.3 update-source lo 0(单向即可建立邻居,但是一般都是两边都只定更新源)
EBBP建邻居一般用物理接口,若用环回口,要改TTL值,即改为多跳,默认TTL值为1,例如:neighbor 3.3.3.3 ebgp-multihop 2(不指定值默认为255)
R4和R2物理接口建立EBGP邻居
R4配置
router bgp 4
no synchronization
bgp router-id 4.4.4.4
neighbor 24.1.1.2 remote-as 1
R2配置
router bgp 1
no synchronization
bgp router-id 2.2.2.2
neighbor 24.1.1.4 remote-as 4
R2和R3环回口建立IBGP邻居
R2配置
router bgp 1
neighbor 3.3.3.3 remote-as 1
neighbor 3.3.3.3 update-source Loopback0
R3配置
router bgp 1
no synchronization
bgp router-id 3.3.3.3
neighbor 2.2.2.2 remote-as 1
neighbor 2.2.2.2 update-source Loopback0
R3和R5环回口建立EBGP邻居
R3配置
router bgp 1
neighbor 5.5.5.5 remote-as 5
neighbor 5.5.5.5 ebgp-multihop 2
neighbor 5.5.5.5 update-source Loopback0
R5配置
router bgp 5
no synchronization
bgp router-id 5.5.5.5
neighbor 3.3.3.3 remote-as 1
neighbor 3.3.3.3 ebgp-multihop 2
neighbor 3.3.3.3 update-source Loopback0
R3(config)#ip route 5.5.5.0 255.255.255.0 s0/1
R5(config)#ip route 3.3.3.0 255.255.255.0 s0/1
4、network通告网络
Network命令:
IGP发送hello包建邻居的同时通告接口所在网段。
BGP得先用neighbor建邻居,然后再用network通告路由,其通告的路由必须存在于路由表中,且其是精确匹配,例如:network 4.4.4.0 mask 255.255.255.0(路由表中必须存在该路由才能通告)
R4(config)#router bgp 4
R4(config-router)#network 4.4.4.0 mask 255.255.255.0
5、控制层面
BGP表中*表示可达,>代表最优,*>i后面的i表示是通过IBGP学到的,*> 后面的空格表示是自身通告或是通过EBGP学到的。
在R3的BGP表中我们可以看到* i4.4.4.0/24这样一条非最优路由。
同步:从IBGP学到路由,必须也可以通过IGP学到才放入路由表,传给其他邻居。
非最优路由:既不放入路由表,也不传给其他邻居。
造成非最优路由主要是应为:不同步、下一跳不可达。
解决不同步的方法:写静态路由或关闭同步.例如:no synchronization(现在默认都以关闭同步)
解决下一跳不可达的方法:写静态路由或在EBGP上修改下一跳。例如在R2上neighbor 3.3.3.3 next-hop-self。
由此可以看出,造成R3非最优路由的原因为下一跳不可达。在R2上修改下一跳即可。
R2(config)#router bgp 1
R2(config-router)#neighbor 3.3.3.3 next-hop-self
6、数据层面
此时用R5的环回口ping 4.4.4.4。
此时不通,主要是因为路由黑洞造成的。R3、R5都有到4.4.4.0/24网络的路由,但是当R3将数据发往R1的时候,由于R1上并没有4.4.4.0/24的路由将其丢弃了。
为解决该问题,我们采用FULL MESH的办法,建立全邻居关系,即R1、R2、R3两两间都互为邻居。
R1(config)#router bgp 1
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#neighbor 2.2.2.2 remote-as 1
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0
R1(config-router)#neighbor 3.3.3.3 remote-as 1
R1(config-router)#neighbor 3.3.3.3 update-source loopback 0
R2(config)#router bgp 1
R2(config-router)#neighbor 1.1.1.1 remote-as 1
R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
R3(config)#router bgp 1
R3(config-router)#neighbor 1.1.1.1 remote-as 1
R3(config-router)#neighbor 1.1.1.1 update-source loopback 0
此时R1学到的路由是非最优路由,非最优路由:不同步(已关闭同步),下一跳不可达(修改下一跳)
R2(config)#router bgp 1
R2(config-router)#neighbor 1.1.1.1 next-hop-self
此时数据包可以到达R4了,但是仍然不通。
此时主要是因为R4没有达到5.5.5.5的路由,我们需要在R5上将5.5.5.5通告进BGP。
R5(config)#router bgp 5
R5(config-router)#network 5.5.5.0 mask 255.255.255.0
此时R1、R2上的5.5.5.0/24路由为非最优路由,默认以关闭同步,我们需要在R3上修改下一跳。
R3(config)#router bgp 1
R3(config-router)#neighbor 1.1.1.1 next-hop-self
R3(config-router)#neighbor 2.2.2.2 next-hop-self
本文转自开源殿堂 51CTO博客,原文链接:http://blog.51cto.com/kaiyuandiantang/1720792,如需转载请自行联系原作者