网站首页  词典首页

请输入您要查询的论文:

 

标题 浅谈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下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/7/8 4:44:32