
一、实验环境
1、分公司与运营商AS自治系统内运行IGP路由协议OSPF、RIP或静态路由,AS自治系统内通过IBGP路由协议建立BGP邻居关系。
 2、公司AS自治系统与运营商AS自治系统间运行EBGP路由协议。
 3、通过loopback建立IBGP与EBGP邻居关系,发挥loopback建立邻居的优势。
 4、BGP协议解决大中型网络中的路由条目过多问题,提高硬件资源的利用率、网络稳定性。
二、专业术语
1、防环
EBGP的水平分割:AS之间的防环,路由器不收带有自己AS号的路由更新。
 IBGP的水平分割:从IBGP收到的路由不会传递给另一个IBGP。
 RR的防环:RR路由反射器打破了IBGP只传一跳的规则,所以需要通过cluster-id防环。
2、路由黑洞
什么是黑洞?简而言之就是世上所有存在的实物或虚拟物品,靠近黑洞就会消失不见,这种就是黑洞。而路由黑洞就是指它会默默地将数据包丢弃,使所有数据包有去无回。由于BGP防环机制的存在,BGP中间途经的路由器不会获知外部的路由。
 如图中的路由黑洞,就存在于AR3上,根据BGP建立邻居的规则,只要TCP可达,便可建立邻居关系,所以图中AR2与AR4可以直接建立iBGP邻居关系。而在AR3上不配置BGP,此时AS100的loopback 接口1.1.1.1与AS300的loopback接口5.5.5.5之间进行通信时,到达AR3时,数据包便会被丢弃。AR3即路由黑洞。

3、iGP与BGP同步
在现实环境中,若IGP路由表中要拥有全部BGP路由,会发生路由膨胀,降低路由器的性能,因此会关掉BGP同步,但关闭后有可能造成路由黑洞(运行BGP的设备没有路由),所以有了路由反射器、BGP联盟、mpls等手段解决数据黑洞。
 验证:华为设备都是关闭BGP同步的,不支持开启BGP的同步!undo synchronization:关闭BGP与IGP的同步功能,如下图:
 
从上图可看出,并没有synchronization命令用于开启同步。为减少路由条目,提升路由器的性能,提高硬件资源的利用率,本例采用iBGP内建立邻居关系的方式处理与GRE隧道的方式解决路由黑洞问题。
4、BGP的全互连
是指在一个自治系统(AS)内的所有BGP路由器都建立直接的邻居关系,确保每个路由器都能直接与其他所有路由器通信。这种配置方式可以避免路由环路和路由黑洞的问题,确保路由信息的准确传递。
三、iBGP与EBGP的配置过程
1、【AR1】配置:
System-view
 sysname AR1
 router id 1.1.1.1
 interface GigabitEthernet0/0/1
 ip address 10.1.12.1 255.255.255.0
 interface GigabitEthernet0/0/2
 interface LoopBack0
 ip address 1.1.1.1 255.255.255.255
 bgp 100
 peer 2.2.2.2 as-number 200
 peer 2.2.2.2 ebgp-max-hop 255
 peer 2.2.2.2 connect-interface LoopBack0
 ipv4-family unicast
 undo synchronization
 network 1.1.1.1 255.255.255.255
 peer 2.2.2.2 enable
 ip route-static 0.0.0.0 0.0.0.0 10.1.12.2
2、【AR2】配置:
System-view
 sysname AR2
 router id 2.2.2.2
 interface GigabitEthernet0/0/1
 ip address 10.1.12.2 255.255.255.0
 interface GigabitEthernet0/0/2
 ip address 10.1.23.1 255.255.255.0
 interface LoopBack0
 ip address 2.2.2.2 255.255.255.255
 bgp 200
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 ebgp-max-hop 255
 peer 1.1.1.1 connect-interface LoopBack0
 peer 4.4.4.4 as-number 200
 ipv4-family unicast
 undo synchronization
 network 2.2.2.2 255.255.255.255
 peer 1.1.1.1 enable
 peer 4.4.4.4 enable
 peer 4.4.4.4 next-hop-local
 ospf 1
 area 0.0.0.0
 network 2.2.2.2 0.0.0.0
 network 10.1.12.0 0.0.0.255
 network 10.1.23.0 0.0.0.255
 ip route-static 1.1.1.1 255.255.255.255 10.1.12.1
3、【AR3】配置:
System-view
 sysname AR3
 router id 3.3.3.3
 interface GigabitEthernet0/0/1
 ip address 10.1.34.1 255.255.255.0
 interface GigabitEthernet0/0/2
 ip address 10.1.23.3 255.255.255.0
 interface LoopBack0
 ip address 3.3.3.3 255.255.255.255
 ospf 1
 area 0.0.0.0
 network 3.3.3.3 0.0.0.0
 network 10.1.23.0 0.0.0.255
 network 10.1.34.0 0.0.0.255
4、【AR4】配置:
System-view
 sysname AR4
 router id 4.4.4.4
 interface GigabitEthernet0/0/1
 ip address 10.1.34.4 255.255.255.0
 interface GigabitEthernet0/0/2
 ip address 10.1.45.4 255.255.255.0
 interface LoopBack0
 ip address 4.4.4.4 255.255.255.255
 bgp 200
 peer 2.2.2.2 as-number 200
 peer 2.2.2.2 connect-interface LoopBack0
 peer 5.5.5.5 as-number 300
 peer 5.5.5.5 ebgp-max-hop 255
 peer 5.5.5.5 connect-interface LoopBack0
 ipv4-family unicast
 undo synchronization
 network 4.4.4.4 255.255.255.255
 peer 2.2.2.2 enable
 peer 2.2.2.2 next-hop-local
 peer 5.5.5.5 enable
 ospf 1
 area 0.0.0.0
 network 4.4.4.4 0.0.0.0
 network 10.1.34.0 0.0.0.255
 network 10.1.45.0 0.0.0.255
 ip route-static 5.5.5.5 255.255.255.255 10.1.45.5
5、【AR5】配置:
System-view
 sysname AR5
 router id 5.5.5.5
 interface GigabitEthernet0/0/2
 ip address 10.1.45.5 255.255.255.0
 interface LoopBack0
 ip address 5.5.5.5 255.255.255.255
 bgp 300
 peer 4.4.4.4 as-number 200
 peer 4.4.4.4 ebgp-max-hop 255
 peer 4.4.4.4 connect-interface LoopBack0
 ipv4-family unicast
 undo synchronization
 peer 4.4.4.4 enable
 ip route-static 0.0.0.0 0.0.0.0 10.1.45.4
四、验证iBGP与EBGP邻居关系
(一)验证BGP邻居关系
1、验证EBGP邻居关系
 (1)在AR2上查看BGP邻居,可以看出与AR1的1.1.1.1建立了邻居关系,也与AR4的4.4.4.4建立了邻居关系,如下图:
 
(2)在AR2上查看EBGP邻居,可以看出AR2与AR1建立的是EBGP邻居关系,如下图:
 
2、在AR2上查看iBGP邻居关系,可以看出AR2与AR4建立的是iBGP邻居关系,如下图:

3、在AR4上同样可验证EBGP与iBGP邻居关系,此处不再赘述。
(二)查看路由表
1、查看BGP路由表
 (1)在AR1上查看BGP路由表,可以看出,AR1上有EBGP邻居AR2的2.2.2.2与直连路由表,并没有AS200自治系统中的路由,也没有AR4邻居EBGP之外的路由5.5.5.5,所以BGP能减少路由条目,为路由器减负。
 
(2)在AR2上查看BGP路由表,可以看出有自治系统AS100的BGP路由与AS300的BGP路由,其中*>代表最优路由,i代表iBGP, ?代表引入的路由,AR2上有AS100的1.1.1.1的路由,但是没有AS300的5.5.5.5的路由,因为AR3上存在路由黑洞,AR3没有配置BGP邻居,所以从AS300到达AS200的路由丢弃。
 如下图:
 
(3)在AR4上查看BGP路由表,其中有AS300的5.5.5.5的EBGP路由,但是没有AS100的1.1.1.1的EBGP路由,因为AR3没有配置BGP邻居,所以从AS100到达AS200的路由丢弃。
 
(4)在AR5上查看BGP路由表,可以看出到4.4.4.4的BGP路由,是经过了AS_PATH的AS200自治系统区域,如下图:
 
2、查看ip路由表
 (1)在AR1上查看ip路由表,仅有自己直连的路由与一条缺省路由,并没有AS200与AS300自治系统的路由,如下图:
 
(2)在AR4上查看ip路由表,可以看出AR4上有自己宣告的BGP路由4.4.4.4,OSPF宣告的路由与OSPF学习到的路由,但是没有AS100中的1.1.1.1这条EBGP路由与AS300中的5.5.5.5这条EBGP路由。因为此时AR3存在路由黑洞。
 
3、验证从AR1到AR4之间的连通性,可以看到只有request的请求报文,而没有回复的reply报文,所以此时AR3的路由黑洞直接丢弃了ping回应报文。接下来处理路由黑洞。
 
五、处理路由黑洞:
(一)路由黑洞处理方式1
1、在AR2与AR4之间建立GRE隧道
 【AR2】:
 interface Tunnel0/0/1
 ip address 172.16.0.1 255.255.255.0
 tunnel-protocol gre
 source 10.1.23.1
 destination 10.1.34.4
 ip route-static 0.0.0.0 0.0.0.0 Tunnel 0/0/1
 【AR4】:
 interface Tunnel0/0/1
 ip address 172.16.0.2 255.255.255.0
 tunnel-protocol gre
 source 10.1.34.4
 destination 10.1.23.1
 ip route-static 0.0.0.0 0.0.0.0 Tunnel 0/0/1
 2、再次验证AR1到AR4的连通性,已经有回应的数据包了,从而解决了AR3路由黑洞问题,如下图:
 
3、从抓取的数据包中筛选通过GRE隧道的包,说明这些回应的数据包是通过GRE隧道过来的,如下图:

(二)路由黑洞处理方式2
(删除刚才建立的GRE隧道,在AR3上与AR2、AR4都建立iBGP邻居关系):
 1、配置AR1
 Undo ip route-static 0.0.0.0 0.0.0.0 10.1.12.2
 ip route-static 5.5.5.5 255.255.255.255 10.1.12.2
 2、配置AR2
 undo interface Tunnel 0/0/1
 bgp 200
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 ebgp-max-hop 255
 peer 1.1.1.1 connect-interface LoopBack0
 peer 3.3.3.3 as-number 200
 peer 3.3.3.3 connect-interface LoopBack0
 peer 4.4.4.4 as-number 200
 peer 4.4.4.4 connect-interface LoopBack0
 ipv4-family unicast
 undo synchronization
 network 2.2.2.2 255.255.255.255
 peer 1.1.1.1 enable
 peer 3.3.3.3 enable
 peer 3.3.3.3 next-hop-local
 peer 4.4.4.4 enable
 peer 4.4.4.4 next-hop-local
 ip route-static 1.1.1.1 255.255.255.255 10.1.12.1
 ospf 1
 import-route static
3、配置AR3:
 bgp 200
 peer 2.2.2.2 as-number 200
 peer 2.2.2.2 connect-interface LoopBack0
 peer 4.4.4.4 as-number 200
 peer 4.4.4.4 connect-interface LoopBack0
ipv4-family unicast
 undo synchronization
 network 3.3.3.3 255.255.255.255
 peer 2.2.2.2 enable
 peer 2.2.2.2 next-hop-local
 peer 4.4.4.4 enable
 peer 4.4.4.4 next-hop-local
4、配置AR4
 undo interface Tunnel 0/0/1
 bgp 200
 peer 2.2.2.2 as-number 200
 peer 2.2.2.2 connect-interface LoopBack0
 peer 3.3.3.3 as-number 200
 peer 3.3.3.3 connect-interface LoopBack0
 peer 5.5.5.5 as-number 300
 peer 5.5.5.5 ebgp-max-hop 255
 peer 5.5.5.5 connect-interface LoopBack0
ipv4-family unicast
 undo synchronization
 network 4.4.4.4 255.255.255.255
 peer 2.2.2.2 enable
 peer 2.2.2.2 next-hop-local
 peer 3.3.3.3 enable
 peer 3.3.3.3 next-hop-local
 peer 5.5.5.5 enable
 ip route-static 5.5.5.5 255.255.255.255 10.1.45.5
 ospf 1
 import-route static
5、配置AR5
 bgp 300
 peer 4.4.4.4 as-number 200
 peer 4.4.4.4 ebgp-max-hop 255
 peer 4.4.4.4 connect-interface LoopBack0
 ipv4-family unicast
 undo synchronization
 network 5.5.5.5 255.255.255.255
 peer 4.4.4.4 enable
 ip route-static 1.1.1.1 255.255.255.255 10.1.45.4
4、查看AR3上的BGP邻居,以及BGP路由表,可以看出,AR3已经与AR2和AR4都建立了BGP邻居关系,如下图:
 
5、验证AR1到AR5的连通性,已经有回应的数据包了,从而解决了AR3路由黑洞问题,如下图:
 
至此结束,本文通过GRE隧道与BGP邻居关系,2种方式解决了BGP路由黑洞问题。