如何解决BGP路由黑洞问题

实验拓扑
实验需求1.设备互联地址如图所示;所有设备开设loopback0口,该接口ip地址为x.x.x.x/32,其中x为设备编号。loopback0的ip地址作为ospf routerid以及lsr id、ldp传输地址。
2.r1、r2、r3、r4运行ospf,通告直连接口及loopback0。注意r1不能在ospf中通告192.168.1.0/24路由,r4也不能在ospf中通告192.168.2.0/24路由。
3.r1及r4基于loopback0口建立ibgp邻居关系;r1将直连路由192.168.1.0/24通告进bgp,r4将直连路由192.168.2.0/24通告进bgp,r2及r3不运行bgp。
4.通过部署mpls,使得pc1与pc2能够互通。
实验步骤及配置1.完成设备接口、ospf和bgp的配置:
r1的配置如下:
完成接口ip地址的配置:
[r1] interface gigabitethernet0/0/0[r1-gigabitethernet0/0/0] ip address 12.1.1.1 24[r1] interface gigabitethernet0/0/1[r1-gigabitethernet0/0/1] ip address 192.168.1.254 24[r1] interface loopback0[r1-loopback0] ip address 1.1.1.1 32 配置ospf:
[r1] ospf 1 router-id 1.1.1.1[r1-ospf-1] area 0[r1-ospf-1-0.0.0.0] network 12.1.1.0 0.0.0.255[r1-ospf-1-0.0.0.0] network 1.1.1.1 0.0.0.0 配置bgp:
[r1] bgp 100[r1-bgp] peer 4.4.4.4 as-number 100[r1-bgp] peer 4.4.4.4 connect-interface loopback0[r1-bgp] network 192.168.1.0 24 r2的配置如下:
完成接口ip地址的配置:
[r2] interface gigabitethernet0/0/0[r2-gigabitethernet0/0/0] ip address 12.1.1.2 24[r2] interface gigabitethernet0/0/1[r2-gigabitethernet0/0/1] ip address 23.1.1.2 24[r2] interface loopback0[r2-loopback0] ip address 2.2.2.2 32 配置ospf:
[r2] ospf 1 router-id 2.2.2.2[r2-ospf-1] area 0[r2-ospf-1-0.0.0.0] network 12.1.1.0 0.0.0.255[r2-ospf-1-0.0.0.0] network 23.1.1.0 0.0.0.255[r2-ospf-1-0.0.0.0] network 2.2.2.2 0.0.0.0 r3的配置如下:
完成接口ip地址的配置:
[r3] interface gigabitethernet0/0/0[r3-gigabitethernet0/0/0] ip address 23.1.1.3 24[r3] interface gigabitethernet0/0/1[r3-gigabitethernet0/0/1] ip address 34.1.1.3 24[r3] interface loopback0[r3-loopback0] ip address 3.3.3.3 32 配置ospf:
[r3] ospf 1 router-id 3.3.3.3[r3-ospf-1] area 0[r3-ospf-1-0.0.0.0] network 23.1.1.0 0.0.0.255[r3-ospf-1-0.0.0.0] network 34.1.1.0 0.0.0.255[r3-ospf-1-0.0.0.0] network 1.1.1.1 0.0.0.0 r4的配置如下:
完成接口ip地址的配置:
[r4] interface gigabitethernet0/0/0[r4-gigabitethernet0/0/0] ip address 34.1.1.4 24[r4] interface gigabitethernet0/0/1[r4-gigabitethernet0/0/1] ip address 192.168.2.254 24[r4] interface loopback0[r4-loopback0] ip address 4.4.4.4 32 配置ospf:
[r4] ospf 1 router-id 4.4.4.4[r4-ospf-1] area 0[r4-ospf-1-0.0.0.0] network 34.1.1.0 0.0.0.255[r4-ospf-1-0.0.0.0] network 4.4.4.4 0.0.0.0 配置bgp
[r1] bgp 100[r1-bgp] peer 1.1.1.1 as-number 100[r1-bgp] peer 1.1.1.1 connect-interface loopback0[r1-bgp] network 192.168.2.0 24 完成上述配置后,当pc1去ping pc2时,肯定是无法ping通的,数据包的转发过程如下:
虽然r1已经通过bgp从r4学习到192.168.2.0/24的路由,pc1访问pc2的数据包被r1转发给了r2,但是由于r2没有运行bgp,而ospf域中又没有关于192.168.2.0/24的路由,因此报文在r2处被丢包,这就是典型的bgp路由黑洞问题。其实之所以不在r2、r3上运行bgp,是因为bgp承载的路由前缀数量往往非常庞大,此举可以极大的降低r2、r3的设备资源消耗,但是却也带来了路由黑洞问题。
利用mpls能够解决上述问题,我们在r1、r2、r3、r4上激活mpls及ldp:
从而构建一个mpls网络。
r1的配置增加如下:
[r1] mpls lsr-id 1.1.1.1  #配置mpls lsr id[r1] mpls  #全局激活mpls[r1-mpls] quit[r1] mpls ldp #全局激活ldp[r1-mpls-ldp] quit[r1] interface gigabitethernet 0/0/0[r1-gigabitethernet0/0/0] mpls #在接口上激活mpls[r1-gigabitethernet0/0/0] mpls ldp #在接口上激活ldp r2的配置增加如下:
[r2] mpls lsr-id 2.2.2.2[r2] mpls[r2-mpls] quit[r2] mpls ldp[r2-mpls-ldp] quit[r2] interface gigabitethernet 0/0/0[r2-gigabitethernet0/0/0] mpls[r2-gigabitethernet0/0/0] mpls ldp[r2] interface gigabitethernet 0/0/1[r2-gigabitethernet0/0/1] mpls[r2-gigabitethernet0/0/1] mpls ldp r3的配置增加如下:
[r3] mpls lsr-id 3.3.3.3[r3] mpls[r3-mpls] quit[r3] mpls ldp[r3-mpls-ldp] quit[r3] interface gigabitethernet 0/0/0[r3-gigabitethernet0/0/0] mpls[r3-gigabitethernet0/0/0] mpls ldp[r3] interface gigabitethernet 0/0/1[r3-gigabitethernet0/0/1] mpls[r3-gigabitethernet0/0/1] mpls ldp r4的配置增加如下:
[r4] mpls lsr-id 4.4.4.4 [r4] mpls [r4-mpls] quit[r4] mpls ldp[r4-mpls-ldp] quit[r4] interface gigabitethernet 0/0/0[r4-gigabitethernet0/0/0] mpls[r4-gigabitethernet0/0/0] mpls ldp 现在,我们遇到的问题,是r2及r3由于没有运行bgp,因此他们无法学习到bgp路由192.168.1.0/24及192.168.2.0/24,因此在他们这出现了路由黑洞。此处通过利用标签栈,可以解决192.168.1.0/24及192.168.2.0/24网络通信的问题。当pc1访问pc2时,ip数据包先是送到r1,如果这个ip数据包被r1压入一层mpls标签,而这个标签正好又是r2能理解、能处理的,不就能解决这个问题么?那么压入的标签值是多少?其实完全可以走4.4.4.4这条lsp,因此标签值就用4.4.4.4这条fec的标签。
实际上,在r1上查看bgp路由 192.168.2.0/24能够发现该路由的下一跳就是4.4.4.4。而4.4.4.4此刻在lfib表中已经有条目,因此去往192.168.2.0/24的ip数据包能够使用4.4.4.4这条lsp来走。
pc1去访问192.168.2.1这台主机,ip报文先是被送到r1,r1通过查看路由表发现下一跳是4.4.4.4,将数据包压入4.4.4.4对应的标签值1026,然后把数据包发给r2。r2将标签1026置换成1028然后将数据包送到r3,r3将标签弹出,将ip报文转发给r4。这里有个细节需要注意,那就是在华为的设备上,缺省情况下,r1在查去往192.168.2.0/24的路由时会发现下一跳是4.4.4.4,而4.4.4.4非直连,又会进一步将下一跳递归得到10.1.12.2,然后将ip数据包转发给r2,而不会压标签。为了让r1递归到lsp,要配置一条命令来打开这个开关:route recursive-lookup tunnel。
如此一来pc1就能够ping 通pc2了。


日本最大VR线下体验店新宿·VRZONE将于3月31日结束营业
药丸自动分配器的制作教程
荣耀手表GS Pro秘境星空版重磅发布
荣耀V40硬件参数曝光
汽车未来化离不开无线充电模块,推荐几款车载支架无线充
如何解决BGP路由黑洞问题
AB类放大器push-pull电路之热补偿工作原理
【节能学院】安科瑞电力监控系统在胜利监理东营西郊现代服务区办公生活基地10KV配电工程的研究及应用
笔记本导热硅胶片的常用厚度是多少?
CAAC颁发锂电池空运新规范
虹科技术|如何阻止供应链攻击?
Alien Technology发布了最新款集成芯片Higgs-9
出售闪存的英特尔,存储业务依然“风骚”
数字源表是什么,数字源表各专业术语的解答
平价无线蓝牙耳机哪个好?500元内蓝牙耳机性价比之王品牌
2022上海人工智能开发者大会Amazon DeepRacer自动驾驶赛车嘉年华 成功举办
阿里云输出智慧城市方案 马来西亚成为拓展海外市场的第一站
飞睿智能cv5200双向无线通信系统介绍
NLP领域取得最重大突破!BERT模型开启了NLP的新时代!
一场金融革命即将到来:瑞士网上银行推出比特币产品