标题 | 浅谈BGP路由黑洞与解决策略 |
范文 | 刘炎火 摘要:在网络配置中,路由黑洞是比较常见的故障,特别是在边界配置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. 【通联编辑:唐一东】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。