MPLS基本转发过程,隧道特性、对TTL的处理、BGP路由黑洞

2024-04-06 23:36

本文主要是介绍MPLS基本转发过程,隧道特性、对TTL的处理、BGP路由黑洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MPLS基本转发过程,隧道特性

        标签操作类型包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作。

        倒数第二跳弹出特性PHP(Penultimate Hop Popping):在最后一跳节点,标签已经没有使用价值,在倒数第二跳节点处将标签弹出,减少最后一跳的负担。最后一跳节点直接进行IP转发或者下一层标签转发。

默认情况下:设备支持PHP特性,支持PHP的Egress节点分配给倒数第二跳节点的标签值为3。

压入:在二层与三层之间添加一个标签。

交换:将收到的报文标签值,替换为自身下一跳提供的标签值。

弹出:将报文的所有标签剥除。PHP:倒数第二跳弹出机制,默认开启。

基本转发过程:

Tunnel ID:为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32bit,只是本地有效。

NHLFE:Next Hop Label Forwarding Entry,下一跳标签转发表:用于知道MPLS报文的转发。(包括Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息)

FEC到一组NHLFE的映射称为FTN(FEC-to-NHLFE)。通过查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息,FTN只在Ingress存在。

ILM:Incoming Label Map,入标签映射。包括:Tunnel ID,入标签,入接口,标签操作类型等信息。

ILM在Transit节点的作用是将标签和NHLFE绑定,通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。

1、当IP报文进入MPLS域时,首先查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0。

[R1]diagnose;进入到诊断视图中;

[R1-diagnose]display mpls nhlfe,查看下一跳标签转发表;

[R1-diagnose]display mpls ilm,查看入标签映射表;

        1.1 如果Tunnel ID值为0x0,则进入正常的IP转发流程。

        1.2 如果Tunnel ID值不为0x0,则进入MPLS转发流程。

2、在MPLS转发过程中,FIB、ILM、和NHLFE表项是通过Tunnel ID关联的。

        2.1、Ingress的处理:通过查询FIB表和NHLFE表知道报文的转发、

                2.1.1、查看FIB表,根据目的IP地址找到对应的Tunnel ID。

                2.1.2、根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。

                2.1.3、查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。

                2.1.4、在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳.

        2.2、Transit的处理:通过查询ILM和NHLFE表指导MPLS报文的转发

                2.2.1、根据MPLS的标签值查看对应的ILM表,可以得到Tunnel ID。

                2.2.2、根据ILM表的Tunnel ID找到对应的NHLFE表项。

                2.2.3、查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。

                2.2.4、MPLS报文的处理方式根据不同的标签值而不同。

如果标签值>=16,则用新标签替换MPLS报文中的旧标签,同时处理TTL,然后将替换完标签的MPLS报文发送给下一跳。

如果标签值为3,则直接弹出标签,同时处理TTL,然后进行IP转发或下一层标签转发。

        2.3、Egress的处理:通过查询ILM表指导MPLS报文的转发或查询路由表指导IP报文转发

                2.3.1、如果Egress收到IP报文,则查看路由表,进行IP转发。

                2.3.2、如果Egress收到MPLS报文,则查看ILM表获得标签操作类型,同时处理TTL。

如果标签中的栈底标识S=1,表明该标签是栈底标签,直接进行IP转发。

如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发。

LDP邻居建立;LDP的标签发布、分配、保持方式;MPLS中数据转发流程(FIB,NHLFE,ILM)

MPLS对TTL的处理

MPLS对TTL的处理模式:

Uniform模式:统一模式,IP报文经过MPLS网络时,在入节点,IP TTL减1映射到MPLS TTL字段,此后报文在MPLS网络中按照标准的TTL处理方式处理。在出节点将MPLS TTL减1映射到IP TTL字段。

Pipe模式:管道模式,在入节点,IP TTL值减1,MPLS TTL字段为固定值,此后报文在MPLS网络中按照标准的TTL处理方式处理。在出节点会将IP TTL字段的值减1。

[Huawei]undo ttl propagate,修改为管道模式,该命令执行前清理mpls ldp才能生效,reset mpls ldp all;

[Huawei]ttl propagate,统一模式

BGP路由黑洞的解决方案:BGP跨跳建立,R2和R4运行BGP,建立邻居传递路由,R3没有运行BGP

1、GRE隧道,去往一个目的地,如果这个目的地的下一跳,有隧道,那么去往该目的地也经过隧道。

2、全互联

3、MPLS LSP隧道

[Huawei]route recursive-lookup tunnel,开启非标签公网BGP路由迭代到LSP隧道中。

4、路由引入

LSP具有隧道特性;所有VPN本质都是隧道。

这篇关于MPLS基本转发过程,隧道特性、对TTL的处理、BGP路由黑洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881122

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)