2022-12- 05 网工进阶(三十七)MPLS--基本概念、转发过程、基本配置、配置静态LSR

news2024/12/30 3:53:42

MPLS概述

基本概念

MPLS(Multi-Protocol Label Switching,多协议标签交换)位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务。

通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发。

 MPLS起源于IPv4(Internet Protocol version 4),其核心技术可扩展到多种网络协议,包括IPv6(Internet Protocol version 6)、IPX(Internet Packet Exchange)、Appletalk、DECnet、CLNP(Connectionless Network Protocol)等。MPLS中的“Multiprotocol”指的就是支持多种网络协议。

MPLS以标签交换替代IP转发。标签是一个短而定长的、只具有本地意义的标识符。

MPLS术语

MPLS域(MPLS Domain)

一系列连续的运行MPLS的网络设备构成了一个MPLS域。

LSR(Label Switching Router,标签交换路由器)

支持MPLS的路由器(实际上也指支持MPLS的交换机或其他网络设备)

位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER(Label Edge Router),区域内部的LSR称为核心LSR(Core LSR)

LSR分类

入站LSR(Ingress LSR):通常是向IP报文中压入MPLS头部并生成MPLS报文的LSR。

中转LSR(Transit LSR):通常是将MPLS报文进行例如标签置换操作,并将报文继续在MPLS域)-中转发的LSR。 

出站LSR(Egress LSR):通常是将MPLS报文中MPLS头部移除,还原为IP报文的LSR。

FEC(Forwarding Equivalence Class,转发等价类)

FEC是一组具有某些共性的数据流的集合,这些数据流在转发过程中被网络节点以相同方式处理。

在MPLS网络中,FEC可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分。

数据属于哪一个LSP(Label Switched Path,标签交换路径),由数据进入MPLS域时的Ingress LSR决定。

MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息。
 

LSP(Label Switched Path,标签交换路径)

LSP是标签报文穿越MPLS网络到达目的地所走的路径

同一个FEC的报文通常采用相同的LSP穿越MPLS域,所以对同一个FEC,LSR总是用相同的标签转发。

一条LSP包含一台入站LSR一台出站LSR以及数量可变的中转LSR,因此LSP也可以看做是这些LSR的有序集合

LSP需要在数据转发开始前建立完成,只有这样报文才能顺利穿越MPLS域。

LSP可通过静态和动态两种方式建立。

需要注意的是,LSP是一个从“起点”到“终点”的单向路径,若需要双向数据互通,则需要在双方之间建立双向的LSP。

MPLS标签

IP报文进入MPLS域之前,会被入站LSR压入MPLS头部(又叫MPLS标签),形成一个MPLS标签报文。一个标签报文可以包含一个或多个MPLS标签。

标签报文

字段解释:

标签(Label):用于携带标签值,长度20bit

EXP(Experimental Use):主要用于CoS(Class of Service),长度3bit。EXP字段在早期的MPLS标准中被定义,意为试验性的字段,但实际上该字段主要被用于CoS。为了避免歧义,RFC5462重新定义了该字段,命名为流分类(Traffic Class)。

S(Bottom of Stack):栈底位,用于指示该标签头部是否为最后一层标签,长度1bit。如果该字段为1,则表示当前标签头部为栈底;如果该字段为0,则表示当前标签头部之后依然还有其他标签头部。

TTL(Time To Live):用于当网络出现环路时,防止标签报文被无限制转发,与IP报文头部中的TTL具有相同的意义,长度8bit

抓包观察

1 标签值为200

2 扩展位为0

3 表示为底层标签

4 生存时间126

标签栈

MPLS支持一层或多层标签头部,这些标签头部的有序集合被称为标签栈(Label Stack)。

最靠近IP头部的标签是栈底标签,标签中的S字段为1。

当上层为MPLS标签栈时,以太网头部中的Type字段为0x8847,PPP头部中的Protocol字段为0x8281。

标签空间

标签是一个短而定长的、只具有本地意义的标识符。标签空间就是指标签的取值范围。

标签值

描述

0~15

特殊标签值。例如0被定义为IPv4显式空标签(IPv4 Explicit NULL Label),标签值3被定义为隐式空标签(Implicit NULL Label)

16~1023

用于静态LSP、静态CR-LSP的共享标签空间

1024~1048575

LDP、RSVP-TE、MP-BGP等动态信令协议的标签空间;

动态信令协议的标签空间不是共享的,而是独立且连续的,互不影响

标签的处理

LSR对标签的操作类型包括标签压入(Push)标签交换(Swap)标签弹出(Pop)

压入(Push)

IP报文进入MPLS域时,MPLS边界设备在报文二层头部和IP头部之间插入一个新标签;MPLS中间设备也可根据需要,在标签栈顶增加一个新的标签

交换(Swap)

当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签替换MPLS报文的栈顶标签。 

弹出(Pop)

当报文离开MPLS域时,将MPLS报文的标签去掉。        

相关命令

配置LSR的ID号(必须配置)

[R1]mpls lsr-id 1.1.1.1

全局下开启MPLS功能

[R1]mpls

接口下开启MPLS功能

[R1-GigabitEthernet0/0/0]mpls

查看LSP

[R1]display mpls lsp 

MPLS转发概述

MPLS转发的本质就是将数据归到对应的FEC按照提前建立好的LSP进行转发

对于整个MPLS域,LSP是某一给定的FEC进入域和离开域的路径,可以看成是LSR的有序集合。

对于单台LSR,需要建立标签转发表,用标签来标识FEC,并绑定相应的标签处理和转发等行为。
 

体系结构

MPLS的体系结构由控制平面 (Control Plane)转发平面 (Forwarding Plane)组成。

控制平面 (Control Plane)

控制平面是无连接的,主要功能是负责产生和维护路由信息以及标签信息。

路由信息表RIB(Routing Information Base)由IP路由协议(IP Routing Protocol)、静态路由和直连路由共同生成,用于选择路由。

标签信息表LIB(Label Information Base):用于管理标签信息,LIB中的表项可由标签交换协议(LDP、RSVP等协议)或静态配置生成

转发平面 (Forwarding Plane)

转发平面也称为数据平面,是面向连接的, 主要功能是负责普通IP报文的转发以及带MPLS标签报文的转发。

转发信息表FIB(Forwarding Information Base)从RIB提取必要的路由信息生成,负责普通IP报文的转发。

标签转发信息表LFIB(Label Forwarding Information Base):简称标签转发表,负责带MPLS标签报文的转发。

LSP建立原则

当网络层协议为IP协议时,FEC所对应的路由必须存在于LSR的IP路由表中,否则该FEC的标签转发表项不生效。

LSR用标签标识指定FEC,所以该FEC的数据被发送至LSR时,必须携带正确的标签,才能被LSR正确的处理。

对某一FEC,设备上存在进(In)标签和出(Out)标签,分别表示该FEC的数据接收时和发送时所携带的标签。

以R2转发到4.4.4.0/24的数据为例,R1为R2的上游(Upstream)LSR,R3为R2的下游(Downstream)LSR。为确保标签报文能被正确的处理和转发,那么R1发给R2的报文所携带的标签与R2上绑定到4.4.4.0/24的相同,即R1的出标签等于R2的入标签。同理,R2关于4.4.4.0/24这条FEC的出标签必须等于R3的入标签。

LSP建立方式

MPLS需要为报文事先分配好标签,建立一条LSP,才能进行报文转发。LSP分为静态LSP动态LSP两种

静态LSP

基本概念

静态LSP是用户通过手工为各个FEC分配标签而建立的
静态LSP不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小
通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预

应用场景

适用于拓扑结构简单并且稳定小型网络

标签分配原则

前一节点出标签的值等于下一个节点入标签的值。

PS:由于静态LSP各节点上不能相互感知到整个LSP的情况,因此静态LSP是一个本地的概念。

动态LSP

基本概念

动态LSP通过标签发布协议动态建立。

标签发布协议是MPLS的控制协议(也可称为信令协议),负责FEC的分类、标签的分发以及LSP的建立和维护等一系列操作。

常用标签发布协议:标签分发协议 (LDP)

全称Label Distribution Protocol

定义

LDP是多协议标签交换MPLS的一种控制协议,负责转发等价类FEC的分类、标签的分配以及标签交换路径LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。

应用场景

LDP广泛地应用在VPN服务上,具有组网、配置简单、支持基于路由动态建立LSP、支持大容量LSP等优点。

其他标签分布协议

RSVP-TE:Resource Reservation Protocol Traffic Engineering,它是对RSVP的扩展,用于建立基于约束的LSP。它拥有普通LDP LSP没有的功能,如发布带宽预留请求、带宽约束、链路颜色和显式路径等。

MP-BGP:Multiprotocol Border Gateway Protocol,MP-BGP是在BGP协议基础上扩展的协议。MP-BGP支持为MPLS VPN业务中私网路由和跨域VPN的标签路由分配标签。
 

MPLS标签转发

LSR处理报文时主要根据FTN、 NHLFE和ILM。

Tunnel ID

为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32比特,只是本地有效。在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的。

NHLFE

下一跳标签转发表项(Next Hop Label Forwarding Entry):LSR对报文(MPLS或IP报文)进行MPLS转发时使用,NHLFE在IngressTransit存在。
NHLFE包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。

FTN

FTN(FEC-to-NHLFE):当LSR收到IP报文并需要进行MPLS转发时使用,FTN只在Ingress存在。

FTN包括:Tunnel IDFEC到NHLFE的映射信息

ILM

入标签映射(ILM,Incoming Label Map):用于指导MPLS报文的转发(MPLS或IP转发),ILM只在TransitEgress存在。

ILM包括:Tunnel ID入标签入接口标签操作类型等信息。

MPLS详细转发过程

 

Ingress LSR(入站LSR)的处理

当IP报文进入MPLS域时

1 Ingress LSR查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0(如果Tunnel ID值为0x0,则进入正常的IP转发流程)。

2 如果Tunnel ID值不为0x0,根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。

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

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

Transit LSR的处理(中转LSR)的处理

当MPLS报文在MPLS域转发时

5 Transit LSR根据MPLS的标签值查看对应的ILM表得到Tunnel ID

6 根据ILM表的Tunnel ID找到对应的NHLFE表项

7 查看NHLFE表项,得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Swap,则交换标签。

Egress LSR(出站LSR)的处理

当MPLS报文需要离开MPLS域时

8 Egress根据ILM查询到该标签对应的操作为Pop,说明需要剥离该标签

9 根据当前标签头部的下一层报文头部进行下一步处理
 

相关命令

静态入站LSR配置

[R1]static-lsp ingress R1toR3 destination 192.168.1.0 24 nexthop 10.1.0.2 out-label 100 

静态中转LSR配置

[R2]static-lsp transit R1toR3 incoming-interface GigabitEthernet 0/0/0 in-label 100 nexthop 10.1.1.3 out-label 200 

静态出站LSR配置

[R3]static-lsp egress R1toR3 incoming-interface GigabitEthernet 0/0/0 in-label 200 

查看静态LSP

<R1>display mpls static-lsp

配置距离---单向静态LSR

需求:配置从路由器R1到路由器R3的静态LSP,反向不配置。使得PC1到PC2的报文通过MPLS进行转发。

路由器R1配置

#
 sysname R1
#
mpls lsr-id 1.1.1.1
mpls
#
interface GigabitEthernet0/0/0
 ip address 10.1.0.1 255.255.255.0 
 ospf enable 1 area 0.0.0.0
 mpls
#
interface GigabitEthernet0/0/1
 ip address 192.168.0.254 255.255.255.0 
 ospf enable 1 area 0.0.0.0
#
interface LoopBack0
 ip address 1.1.1.1 255.255.255.255 
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 1.1.1.1 
 silent-interface GigabitEthernet0/0/1
 area 0.0.0.0 
#
static-lsp ingress R1toR3 destination 192.168.1.0 24 nexthop 10.1.0.2 out-label 
100
#

路由器R2配置

#
 sysname R2
#
mpls lsr-id 2.2.2.2
mpls
#
interface GigabitEthernet0/0/0
 ip address 10.1.0.2 255.255.255.0 
 ospf enable 1 area 0.0.0.0
 mpls
#
interface GigabitEthernet0/0/1
 ip address 10.1.1.2 255.255.255.0 
 ospf enable 1 area 0.0.0.0
 mpls
#
interface LoopBack0
 ip address 2.2.2.2 255.255.255.255 
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
#
static-lsp transit R1toR3 incoming-interface GigabitEthernet0/0/0 in-label 100 n
exthop 10.1.1.3 out-label 200
#

路由器R3配置

#
 sysname R3
#
mpls lsr-id 3.3.3.3
mpls
#
interface GigabitEthernet0/0/0
 ip address 10.1.1.3 255.255.255.0 
 ospf enable 1 area 0.0.0.0
 mpls
#
interface GigabitEthernet0/0/1
 ip address 192.168.1.254 255.255.255.0 
 ospf enable 1 area 0.0.0.0
#
interface LoopBack0
 ip address 3.3.3.3 255.255.255.255 
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 3.3.3.3 
 silent-interface GigabitEthernet0/0/1
 area 0.0.0.0 
#
static-lsp egress R1toR3 incoming-interface GigabitEthernet0/0/0 in-label 200
#

查看静态LSP

<R1>display mpls static-lsp
TOTAL          :	1       STATIC LSP(S)
UP             :	1       STATIC LSP(S)
DOWN           :	0       STATIC LSP(S)
Name                FEC                I/O Label    I/O If                Status
R1toR3              192.168.1.0/24     NULL/100     -/GE0/0/0             Up 

抓包查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

木字楠后台管理系统开发(3):Vue项目初始化并引入基础依赖

&#x1f3b6; 文章简介&#xff1a;木字楠后台管理系统开发(3)&#xff1a;Vue项目初始化并引入基础依赖 &#x1f4a1; 创作目的&#xff1a;为了带大家完整的体验木字楠后台管理系统模版的开发流程 ☀️ 今日天气&#xff1a;温度骤降&#xff0c;差点给爷送走。 &#x1f4…

Js逆向教程23-AST Babel插件最简单修改值示例

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; AST Babel插件最简单修改值示例 一、文档地址和安装的方式 https://github.com/jamiebuilds/babel-handbook/blob/master/translation…

动态规划

什么是动态规划 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中&#xff0c;可能会有许多可行解。每一个解都对应于一个值&#xff0c;我们希望找到具有最优值的解。 动态规划的前提是什么&#xff1f; 存在最优解 拿出来任意一块物品&#xff0c;仍旧是最…

详解C++11

文章目录前言一、C11简介二、统一的列表初始化2.1 {}的初始化2.2 std::initializer_list三、声明3.1 auto3.2 decltype3.3 nullptr四、范围for五、智能指针六、STL中一些变化新容器容器中的一些新方法七、右值引用和移动语义7.1 左值引用和右值引用7.2 左值引用和右值引用比较左…

灵魂拷问,你真的了解DNS吗?

未来已来&#xff0c;只是不均衡地分布在当下 大家好&#xff0c;我是菜农&#xff0c;欢迎来到我的频道。 都说程序员是面向Google编程&#xff0c;殊不知当你输入 www.google.com 地址的时候&#xff0c;是否有想过&#xff0c;在回车的一瞬间浏览器如何将请求发送&#xff…

价值年薪70W的JAVA进阶学习路线!终于让我从阿里P8手里抠出来了

作为一个男人我感觉必须得做点什么来证明一下自己&#xff0c;现在我又回来了&#xff0c;准备把自己的节操准备补一下。另外给各位未来的Java程序员说一句&#xff0c;别的我不清楚&#xff0c;学习编程请从一而终 咱们学习编程就挺难的&#xff0c;有这些先驱者来带领咱们学习…

【Maven基础】命令行环境使用

实验一&#xff1a;根据坐标创建 Maven 工程 1、Maven 核心概念&#xff1a;坐标 1.1、数学中的坐标 使用 x、y、z 三个『向量』作为空间的坐标系&#xff0c;可以在『空间』中唯一的定位到一个『点』。 1.2、Maven中的坐标 1.2.1、向量说明 使用三个『向量』在『Maven的仓…

[附源码]计算机毕业设计会议室预定管理APPSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【个人笔记 hive】hive里面的说SerDe含义

官网中这样介绍serde&#xff1a;https://cwiki.apache.org/confluence/display/Hive/SerDe&#xff1a; SerDe Overview SerDe is short for Serializer/Deserializer. Hive uses the SerDe interface for IO. The interface handles both serialization and deserialization …

Linux中mysql的安装|配置|操作|卸载

文章目录1. mysql的卸载1.1 首先查询系统是否安装了MySQL1.2 关闭MySQL服务1.3 查看MySQL对应的文件夹1.4 卸载并删除MySQL安装的组键服务1.5 删除系统中MySQL的所有文件夹1.6 最后验证MySQL是否删除完成2. mysql的安装与配置2.1 下载mysql8.0安装包2.2 解压mysql8.0安装包2.3 …

蜂鸟学习笔记E203(七)——写回、存储器和ICB总线

一、 蜂鸟E203处理器的写回硬件实现 核心思想如下 将指令划分为单周期指令和长指令两大类将长指令的交付和写回分开&#xff0c;使得即使执行力多周期的长指令也不会阻塞流水线&#xff0c;妨碍单指令 主要包含最终写回仲裁、长指令写回仲裁 最终写回仲裁 长指令的写回比…

Python的数据结构- 序列(sequence)

数据结构 - 序列&#xff08;sequence&#xff09; 序列的一个特点就是根据索引&#xff08;index&#xff0c;即元素的位置&#xff09;来获取序列中的元素&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;以此类推。 所有序列类型都可以进行某些通用的操作…

ChatGPT教我面试

​持续坚持原创输出&#xff0c;点击蓝字关注我吧 最近ChatGPT爆火&#xff0c;ChatGPT能干什么呢&#xff1f;想必已经看过很多文章了&#xff0c;例如ChatGPT通过美国高考、ChatGPT开发游戏、调试代码、写文章等等。 哈哈&#xff0c;作为一个软件测试博主&#xff0c;我怎么…

frp内网穿透SSH

参考博客: 博客1(推荐): https://sspai.com/post/52523 博客2: https://blog.csdn.net/qq_36981760/article/details/115713179 博客3: https://blog.csdn.net/qq_36981760/article/details/115713179 参考视频 (推荐&#xff0c;比较详细): https://www.bilibili.com/video/BV…

谈谈inline(内联函数)

目录1、例子抛出2、 了解inline2.1 宏替换的副作用2.2 内联函数2.3 有意思的点3、总结4、 感谢您的阅读&#xff01;1、例子抛出 我们知道可以用宏定义来代替一个变量或者函数块&#xff1a; #define A 20 #define MYFUNC(a,b) (&#xff08;a&#xff09; > &#xff08;…

Kubernetes双主集群的部署(二)

Kubernetes单主集群的部署&#xff08;一&#xff09;_Evens7xxX的博客-CSDN博客 上期完成了单主架构集群的部署&#xff0c;本期将在单主架构的基础上添加Master和负载均衡器 目录 二、k8s双主架构集群的部署 1.另一台Master同样做初始化配置 2.配置 Master02 3.配置负载均…

算法与数据结构31:DC3算法生成后缀数组

算法与数据结构31&#xff1a;DC3算法生成后缀数组什么是后缀数组引出DC3算法DC3算法具体实现DC3算法模板DC3模板的用法一个可以使用DC3的题什么是后缀数组 假设有字符串 aabaabaa 那么从每个位置开始&#xff0c;到结尾位置&#xff0c;截取后缀串&#xff0c;可得 a aa baa …

四面阿里巴巴如愿拿到offer定级P7,为此我筹备了半年

前言 每个程序员都有一个大厂的梦&#xff0c;而互联网大厂首当其冲自然是阿里巴巴最吃香&#xff0c;今天小编就来分享一个小伙进阿里巴巴的面经&#xff01; “不想进大厂的程序员不是好程序员”哈哈哈 春节过后&#xff0c;本是金三银四之际&#xff0c;大部分人也都准备好…

【RealSense】L515学习记录

Intel RealSense™ SDK 2.0的安装 1、注册服务器的公钥: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8…

ChatGPT:chatGPT本地部署、运行和接口调用

文章目录从 github 下载环境配置conda 创建虚拟环境官方步骤配置环境安装 revChatGPT更改 config.json.example -> config.json将 config.json 移动到 revChatGPT 路径下cookie 信息写入 config.json方式1&#xff1a;使用账号密码作为登录的方法方式2&#xff1a; 使用 ses…