APP下载

浅谈BGP路由黑洞与解决策略

2020-09-29刘炎火

电脑知识与技术 2020年17期

刘炎火

摘要:在网络配置中,路由黑洞是比较常见的故障,特别是在边界配置BGP路由时,经常出现路由黑洞,为了更好解决由于BGP配置而产生的路由黑洞,在本文中列举了多种解决策略。

關键词:路由黑洞;BGP;EBGP;IBGP;邻居关系

中图分类号:TP393        文献标识码:A

文章编号:1009-3044(2020)17-0056-03

Abstract: In the network configuration, routing black hole is a common failure. A routing black hole often appears especially in BGP routing. In order to better solve the routing black hole caused by BGP configuration, this paper lists a variety of solutions.

Key words: routing black hole;BGP;ebgp; iBGP;neighbor relationship

在配置BGP的时候,最容易遇到的问题就是路由黑洞,那么什么是路由黑洞?简单地说,它会默默地将数据包丢弃,使数据包有去无回。我们知道传统的IP路由,它是通过逐跳查找路由信息,根据路由信息转发数据包,通俗地说就是当数据包到达路由设备的时候,路由设备首先查找路由表,然后根据路由信息转发数据包,当然,路由设备转发数据包的前提是存在下一跳路由。对BGP来说,由于存在IBGP水平分割规则,这是一种防止环路机制,所以在BGP的设计上有些设备就不会运行BGP。BGP是一种TCP的连接或者说是一种host-to-host的连接,可以跨越设备进行连接,所以路由传递是没有问题的,但是数据包的路由却是有问题的。通常我们会出现是IBGP邻居关系可以正常建立,也就是说控制平面看起来是正常的,但是数据平面确不可达,从而形成路由黑洞。接下来,我将解决BGP路由黑洞的几种常见方法进行逐一介绍。

1 采用邻居全互联(Full-mesh)方式解决由IBGP水平分割导致的BGP路由黑洞问题

图1所示,为了实现1.1.1.1<->5.5.5.5可以互相访问,计划在R1、R2、R4、R5跑BGP协议,R2、R3、R4跑OSPF协议。并且在R1<->R2、R4<->R5之间创建默认路由保证BGP邻居关系的建立。配置完成之后,发现无法实现1.1.1.1<->5.5.5.5互相访问,通过对设备路由信息的查询,发现R3没有1.1.1.1和5.5.5.5的路由条目。经过仔细分析配置策略,发现由于R3没有启用BGP配置,因此R2和R4均不会将路由条目传给R3,导致R3没有1.1.1.1和5.5.5.5的路由信息,最终出现路由黑洞。

经过对配置信息的分析和查阅相关资料,决定利用Full-mesh方式解决路由黑洞问题。解决方法就是在R3上配置BGP,与R2和R4建立完全BGP邻居关系,通过IBGP学习到1.1.1.1和5.5.5.5的路由条目。配置完成之后,经测试完全实现1.1.1.1<->5.5.5.5互相访问。利用Full-mesh方式解决路由黑洞配置拓扑图如图1所示。

具体实现过程:使用Peer Group简化配置,节约内存,配置R2、R3、R4之间的IBGP,通过邻居全互联解决路由黑洞。R2、R3和R4相互建立邻居关系,具体配置如下:

//R2与R3、R4建立邻居关系

router bgp 200

neighbor slyar peer-group

neighbor slyar remote-as 200

neighbor slyar update-source Loopback0

neighbor slyar next-hop-self

neighbor 3.3.3.3 peer-group slyar

neighbor 4.4.4.4 peer-group slyar

//R3与R2、R4建立邻居关系

router bgp 200

neighbor slyar peer-group

neighbor slyar remote-as 200

neighbor slyar update-source Loopback0

neighbor slyar next-hop-self

neighbor 2.2.2.2 peer-group slyar

neighbor 4.4.4.4 peer-group slyar

//R4与R2、R3建立邻居关系

router bgp 200

neighbor slyar peer-group

neighbor slyar remote-as 200

neighbor slyar update-source Loopback0

neighbor slyar next-hop-self

neighbor 2.2.2.2 peer-group slyar

neighbor 3.3.3.3 peer-group slyar

利用Full-mesh方式解决路由黑洞,对于结构简单的网络没有问题,但是要是网络拓扑复杂,则存在全互联要求建立n*(n-1)/2个邻居关系,这显然是很麻烦,也不现实。因此,只能说是解决BGP路由黑洞的方法之一。

2 采用路由反射器(Router Reflector)解决由IBGP水平分割导致的BGP路由黑洞问题

导致路由黑洞的原因与“一”一样,解决路由黑洞方法则采用Router Reflector方式进行解决。Router Reflector基本原理是利用路由反射器,将R3作为反射器(RR),其余IBGP路由器作为客户端?,路由反射器和客户端共同组成路由反射簇,客户端只需要与路由反射器建立邻居即可,不需要与每台IBGP路由器建立邻居。

配置路由反射器配置,需要保证三个原则,一是RR从EBGP收到的路由,能够反射给客户端和非客户端;二是从客户端收到的路由,能够反射给客户端、非客户端及EBGP邻居;三是从非客户端收到的路由,只能反射给客户端和EBGP邻居,不能反射给其他非客户端。满足了这三个原则,就可以有效解决BGP的路由黑洞问题。网络拓扑图参照“图1”,其中R3为反射器,R2和R4为客户端,R2、R3和R4的配置如下:

2.1 使用回环接口配置R2、R3、R4之间的IBGP关系

//R3配置

router bgp 200

no synchronization

bgp router-id 3.3.3.3

neighbor 2.2.2.2 remote-as 200

neighbor 2.2.2.2 update-source Loopback0

neighbor 4.4.4.4 remote-as 200

neighbor 4.4.4.4 update-source Loopback0

no auto-summary

//R2配置

router bgp 200

neighbor 3.3.3.3 remote-as 200

neighbor 3.3.3.3 update-source Loopback0

neighbor 3.3.3.3 next-hop-self

//R4配置

router bgp 3

neighbor 3.3.3.3 remote-as 200

neighbor 3.3.3.3 update-source Loopback0

neighbor 3.3.3.3 next-hop-self

2.2 在R3上开启路由反射器,指定客户端

router bgp 3

neighbor 2.2.2.2 route-reflector-client

neighbor 4.4.4.4 route-reflector-client

利用Router Reflector解决BGP的路由黑洞问题,与Full-mesh比较,优势是显而易见的,其建立邻居关系只需要(n-1)条。因此,是解决BGP路由黑洞比较好的方法。

3 采用联邦(BGP Confederation)解决由IBGP水平分割导致的BGP路由黑洞问题

导致路由黑洞的原因也和“一”一样,解决路由黑洞方法则采用Confederation方式进行解决。Confederation基本原理是将AS 200内部划分为2个子AS,使用私有BGP AS 65001和65002,同时,R3与R4之间的关系改为EBGP,从而打破IBGP的水平分割法则,进而解决路由黑洞问题。这些私有AS就叫作联邦(Confederation),私有AS对于AS 100和AS 300来说,即联邦是透明的,在他们看来,AS 200依旧是AS 200。实现BGP Confederation配置拓扑结构如图2所示。

配置Confederation需要按照三个步骤完成,第一步将路由器进行分组,划分为不同的小AS;第二步在大AS的边界路由器上,声明所处的大AS号;第三步在小AS边界路由器之间建立联邦EBGP关系,并互指Peer。参照图2,配置内容如下:

3.1 在R2和R3上创建联邦AS 65011,建立IBGP关系

//R2上创建AS 65001

router bgp 65001

no synchronization

bgp router-id 2.2.2.2

neighbor 3.3.3.3 remote-as 65001

neighbor 3.3.3.3 update-source Loopback0

neighbor 3.3.3.3 next-hop-self

no auto-summary

//R3上创建AS 65011

router bgp 65001

no synchronization

bgp router-id 3.3.3.3

neighbor 2.2.2.2 remote-as 65001

neighbor 2.2.2.2 update-source Loopback0

no auto-summary

3.2 在R4上創建联邦AS 65002

//R4上创建AS 65002

router bgp 65002

no synchronization

bgp router-id 4.4.4.4

no auto-summary

3.3在R2、R3、R4上声明自己的大AS,然后与R1和R5创建EBGP关系

//R2上配置联邦声明

router bgp 65001

bgp confederation identifier 200

neighbor 10.0.12.1 remote-as 100

//R4上配置联邦声明

router bgp 65002

bgp confederation identifier 200

neighbor 10.0.45.2 remote-as 300

//R3上配置联邦声明

router bgp 65001

bgp confederation identifier 200

3.4 在R3和R4的联邦AS之间通过环回口创建EBGP关系,并互指联邦Peer

//R3上配置EBGP邻居并指定联邦Peer

router bgp 65001

bgp confederation peers 65002

neighbor 4.4.4.4 remote-as 65002

//由于使用回环接口建立联邦EBGP关系,因此需要将默认TTL值改大(在此TTL默认值为1)

neighbor 4.4.4.4 ebgp-multihop 2

neighbor 4.4.4.4 update-source Loopback0

//R4上配置EBGP鄰居并指定联邦Peer

router bgp 65002

bgp confederation peers 65001

neighbor 3.3.3.3 remote-as 65001

neighbor 3.3.3.3 ebgp-multihop 2

neighbor 3.3.3.3 update-source Loopback0

neighbor 3.3.3.3 next-hop-self

所谓联邦AS是由一组子自治系统组成,它们共享一个联邦AS号,该联邦AS号被联邦之外的对等体视为整个联邦的名字(AS号),外部的对等体是无法看见联邦的内部结构的。因此采用联邦AS解决IBGP邻居关系,从而解决其路由黑洞问题是比较可取的方法。

4 采用多协议标签交换 (MPLS)解决BGP路由黑洞问题

导致路由黑洞的原因与“一”一样,R2与R4建立IBGP,可以互相学习各自的BGP 路由,因是BGP邻居的建立是通过TCP建立的,BGP邻居互传路由是通告封装到TCP,再封装到IP里面的。配置完成时候,还是无法实现1.1.1.1<->5.5.5.5互相访问。解决办法除了前面三种以外,也可以使用MPLS来解决BGP路由黑洞问题。MPLS 是一种使用标签来制定数据转发决策的数据包转发技术。案例网络拓扑结构参照“图1”,具体配置内容如下所示。

//R2上配置MPLS

route recursive-lookup tunnel

mpls lsr-id 2.2.2.2

mpls

mpls ldp

int s1/1

mpls

mpls ldp

//R2上配置MPLS

route recursive-lookup tunnel

mpls lsr-id 3.3.3.3

mpls

mpls ldp

int s1/1

mpls

mpls ldp

int s1/2

mpls

mpls ldp

//R2上配置MPLS

route recursive-lookup tunnel

mpls lsr-id 4.4.4.4

mpls

mpls ldp

int s1/2

mpls

mpls ldp

使用MPLS解决BGP路由黑洞容易实现,配置也比较简单,但是其中为什么能在没有路由的情况下(R3,R4)能通,很多人并不是特别清楚。在MPLS网络中,MPLS会给IGP路由分配label,cef会采用MPLS分配好的label,并且给下一跳是IGP内的相应BGP路由分配对应IGP的label,数据在转发的时候是按照cef表进行的,这样那些没有在MPLS中分配标签的BGP路由也可以按照标签进行转发,最终解决路由黑洞问题。

由于BGP规定无论路由器是否启动BGP都要无条件地转发BGP消息和更新包,违背了"非IGP路由器阻断IGP域"的原则,因而辗转造成了BGP路由器"居然ping不通路由表中的条目"的现象,也就是所谓的路由黑洞。在边界路由器产生的路由黑洞,一般不宜采用重分布实现同步策略。上述四种策略是实际应用中常用策略。

参考文献:

[1] Amir Ranjbar[美].CCNP TSHOOT学习指南[M].北京:人民邮电出版社,2013.

[2] 周亚军.思科CCIE路由交换v5实验指南[M].北京:电子工业出版社,2016.

[3] 张国清.路由技术:IPv6版[M].北京:电子工业出版社,2014.

[4] 梁广民,王隆杰.思科网络实验室CCNA实验指南[M].北京:电子工业出版社,2012.

【通联编辑:唐一东】