文章目录

  • 参考阅读
  • 数据层面的路由黑洞
    • 实验拓扑
    • 配置思路
      • BGP建邻
      • 使能LDP
      • 检查BGP、LDP邻居
    • 详细分析
      • 黑洞的产生
      • 解决黑洞
      • 抓包分析label的in、out
  • 总结

参考阅读

实验详解手工指定MPLS的LSP(Huawei设备)
在网络架构中,P、PE、CE、CR等分别代表什么意思?
MPLS 实验-VRF表分离(Huawei设备)

数据层面的路由黑洞

在一个BGP-domain中,纯P设备是不运行BGP进程的,只做高速的路由转发,转发是基于MPLS-LSP进行的,即在MPLS+BGP环境下,纯P设备收到的必须是label包,若收到一个IP包,其并没有路由,这样就会产生数据层面的路由黑洞了

实验拓扑


1、承接参考于阅读中的网段信息与静态LSP的配置信息,这些都不做改变
2、三种颜色被分成了三个BGP的domain,在AS234中底层跑了动态的LDP,进行label的分发;
3、AS之间使用EBGP关系
4、R1、R5分别发布自己的loopback路由
5、R3是纯P设备,R2与R4之间使用loopback口建立IBGP关系,并修改下一条属性

配置思路

BGP建邻

[R1-bgp]di th
[V200R003C00]
#
bgp 100router-id 172.16.1.1peer 172.16.12.2 as-number 234 #ipv4-family unicastundo synchronizationnetwork 172.16.1.0 255.255.255.0 peer 172.16.12.2 enable
#
return[R2-bgp]di th
[V200R003C00]
#
bgp 234router-id 10.1.2.2peer 10.1.4.4 as-number 234 peer 10.1.4.4 connect-interface LoopBack0peer 172.16.12.1 as-number 100 #ipv4-family unicastundo synchronizationpeer 10.1.4.4 enablepeer 10.1.4.4 next-hop-local peer 172.16.12.1 enable
#
return[R4-bgp]di th
[V200R003C00]
#
bgp 234router-id 10.1.4.4peer 10.1.2.2 as-number 234 peer 10.1.2.2 connect-interface LoopBack0peer 172.16.45.5 as-number 200 #ipv4-family unicastundo synchronizationpeer 10.1.2.2 enablepeer 10.1.2.2 next-hop-local peer 172.16.45.5 enable
#
return[R5]bgp 200
[R5-bgp]di th
[V200R003C00]
#
bgp 200router-id 172.16.5.5peer 172.16.45.4 as-number 234 #ipv4-family unicastundo synchronizationnetwork 172.16.5.0 255.255.255.0 peer 172.16.45.4 enable
#
return

使能LDP

R2
mpls lsr-id 10.1.2.2
mpls
mpls ldp
interface Serial4/0/0
mpls 使能mpls
mpls ldp 使能动态的lspR3
mpls lsr-id 10.1.3.3
mpls
mpls ldp
interface Serial4/0/0 Serial4/0/1
mpls
mpls ldp R4
mpls lsr-id 10.1.4.4
mpls
mpls ldp
interface Serial4/0/0
mpls
mpls ldp

检查BGP、LDP邻居



详细分析

黑洞的产生

由于R1、R5都宣告了自己的loopback,此时做ping操作,可见并不能ping通

这是一个IP包,查询FIB,发现没有tunnel-id,说明仍然进行IP转发,下一跳给到R2

R2查询FIB,仍然没有tunnel-id,下一跳给到R3;由于R3是一个纯P设备,上面并未运行BGP进程,所以没有去往172.16.5.5的路由信息,所以就造成数据层面的路由黑洞

解决黑洞

1、本质在于要让R3可以转发,前提就在于要让这个IP包变成label包;
2、虽然AS234的底层运行了MPLS,且存在LDP生成的LSP,但是对于BGP的路由并没有生效
这是因为华为的LDP默认只对32位的主机路由分label,为了节省资源
需要在R2和R4上运行如下命令,

route recursive-lookup tunnel

这条命令的意义在于,让非标签的BGP路由迭代进BGP下一跳的隧道;即让非标签的BGP路由迭代进自己下一跳的隧道
注意:LDP不会为BGP分配label,转发时使用的是BGP的下一跳label


在R2、R4上进行label迭代的配置

[R2]route recursive-lookup tunnel

R1上带源去pingR5的loopback,可见符合预期

R1收到一个IP包,查询FIB,将数据转发到R2

R2收到一个IP包,查看FIB,其是存在tunnel-ID的,所以要继续查看LFIB,唯一标识是0x5,且迭代到10.1.4.4这个FEC(forwarding equal class)转发等价类中

详细查看NHLFE,可以看到Token、Type、Out-Label、Label Operation等详情

此数据包的fec是10.1.4.4 ,且下一跳是R3,然后在R3上查看in-label为1025的详情,可以看到是进行SWAP的label交换操作,out label被改成了3 说明在R3设备上要进行PHP操作,即次末跳弹出,变成IP包

这个目的地址为172.16.5.5的IP包来到R4上后,直接查看FIB,因为这是一个IP包,直接按照出接口进行转发即可

抓包分析label的in、out

R3的入接口查看,可以发现这个标签是1025

R3的出接口抓包看不到label,是因为PHP(次末跳弹出),label变成了一个IP包

总结

  • LDP要进行使能才能生效,配置完成LDP后,要检查LDP的session邻居是否建立成功
  • 华为的设备默认只对32位的主机路由分label,节省资源
如何对所有的路由分配标签?
[]mpls
[]lsp-trigger all
默认是lsp-trigger host

MPLS+BGP产生的数据层面的路由黑洞详解相关推荐

  1. python Django Rest_Framework框架 视图集与路由Routers详解(图文并茂版)

    视图集与路由Routers详解 视图集 ViewSet视图集 代码实现 GenericViewSet视图集 代码实现 ModelViewSet视图集 ReadOnlyModelViewSet视图集 路 ...

  2. React 路由react-router-dom详解

    React 路由react-router-dom详解 ( 路由嵌套 + 路由传参 + 路由权限 + 路由优化 按需导入 + 404页面 ) 前面我们先了解一下 路由是什么? 路由分类有哪些?内置API ...

  3. ls路由算法_路由算法详解

    路由算法详解1. 引言 2. 路由器基础知识 3. LS算法 4. 示例:Dijkstra算法 5. DV算法 6. 分级路由 如果您已经阅读过博闻网中的路由器工作原理一文,您会了解到路由器的作用是管 ...

  4. 25、react 中使用路由 router 详解

    react 中使用路由 router 详解 今天开始最新的一个模块,也是 react 开发中最重要的一部分,就是路由. SPA 理解 我们使用原生的 HTML + CSS + JavaScript 开 ...

  5. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  6. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  7. python数据清理的实践总结_python 数据的清理行为实例详解

    python 数据的清理行为实例详解 数据清洗主要是指填充缺失数据,消除噪声数据等操作,主要还是通过分析"脏数据"产生的原因和存在形式,利用现有的数据挖掘手段去清洗"脏数 ...

  8. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  9. js路由在php上面使用,React中路由使用详解

    这次给大家带来React中路由使用详解,React中路由使用的注意事项有哪些,下面就是实战案例,一起来看一下. 路由 通过 URL 映射到对应的功能实现,React 的路由使用要先引入 react-r ...

最新文章

  1. bvp解算器是什么_边值问题(BVP)的Matlab解法
  2. 详解Python模块化编程-自定义函数
  3. 整理记录word2016小技巧,自用
  4. springcloud-05-ribbon中不使用eureka
  5. bios设置_bios怎么设置显存 bios设置显存教程【图文】
  6. c语言程序设计夏宽理第三版答案,(100)西南大学2021计算机考研数据速览(特别更新版),民族脊梁袁隆平院士的母校!...
  7. JS module的导出和导入 1
  8. linux有k歌软件吗,在Linux下可用Wine安装和运行暴风影音16、全民K歌
  9. 开发者论坛一周精粹(第十四期):CVE-2017-7529:Nginx敏感信息泄露
  10. window10 下面固定本地 ip
  11. 【问题7】集群部署时的分布式 session 如何实现?
  12. atmega328p引脚图_atmega328p中文手册
  13. 总线外设基础1——i2s,i2c,uart,spi,touchpanel,lcd
  14. 本地Navicat连接阿里云数据库RDS for MySQL(全网最详细,没有之一!)
  15. 云计算机实验,云计算
  16. 关于手机的MAC地址
  17. Angular项目目录结构
  18. 华硕灵耀pro16参数 华硕灵耀pro16怎么样
  19. Notepad++的第三方插件介绍中文翻译
  20. java的行业认证_Sun认证Java程序员考试介绍

热门文章

  1. 基于ThinkPHP框架的简单的后台管理系统
  2. PHP 打印0-n的所有质数,输出1到n中所有的素数 C语言编程:输出1到N中所有质数的个数...
  3. android app防止锁屏_触控禁止!Touch Protector 锁定屏幕触控功能,避免意外操作(Android)...
  4. 小型SDDC建设攻略
  5. IDEA+Java+JSP+Mysql+Tomcat实现Web学校教材管理系统
  6. 无线网调优案例分享,很实用
  7. jdk版本8u201 8u202 区别
  8. 每日一C | 一维数组案例——五只小猪称体重
  9. java的dowhile循环语句_java do while 循环语句用法
  10. 二叉树递归和非递归遍历