计算机网络-MPLS基础概念

ops/2025/2/13 10:25:30/

早期传统IP报文依赖路由器查询路由表转发,但由于硬件技术存在限制导致转发性能低,路由器的查表转发成为了网络数据转发的瓶颈。因此旨在提高路由器转发速度的MPLS(Multi-Protocol Label Switching,多协议标签交换) 被提出。

随着设备硬件性能不断提升,MPLS在提高数据转发速度上的优势逐渐弱化,但其支持多层标签嵌套和设备内转控分离的特点,使其在VPN(Virtual Private Network,虚拟私有网络)QoS(Quality of Service,服务质量) 等新兴应用中得到广泛应用。

一、MPLS概述

1.1 传统IP路由转发的痛点

在传统IP路由中,数据报文经过每一台路由器时,都需要逐跳解封装并查找路由表,这一过程不仅重复且效率低下。具体特点如下:

  • 全网路由依赖:所有路由器必须知道全网路由信息。
  • IP头部处理效率低:IP头部不定长,处理效率低下。
  • 无连接性:传统IP转发面向无连接,无法提供良好的端到端QoS保证。

传统IP路由转发

依赖路由表

正是由于IP路由转发的这些特点,因此出现了MPLS多协议标签交换协议。

1.2 MPLS基本概念

MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务。通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发。

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

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

MPLS标签转发

1.3 MPLS基础术语概念

1.3.1 MPLS域与LSR

MPLS域(MPLS Domain):一系列连续的运行MPLS的网络设备构成的区域。

LSR(标签交换路由器):支持MPLS的路由器或交换机等网络设备。

  • LER(边沿路由器):位于MPLS域边缘,连接其他网络。
  • Core LSR(核心LSR):位于MPLS域内部。

就是支持MPLS的网络设备称为LSR,然后又类似OSPF区分了那些是在MPLS的边缘,那些是在MPLS内部分为LER边缘路由器和核心LSR,所有这些设备组成MPLS域。

MPLS域与LSR

1.3.2 LSR分类

除了安装设备的位置还可以安装对标签的处理方式进行划分,根据LSR在MPLS域中的位置和数据处理方式,可分为:

  • 入站LSR(Ingress LSR):负责向IP报文中压入MPLS头部。
  • 中转LSR(Transit LSR):负责标签置换操作,继续转发报文。
  • 出站LSR(Egress LSR):负责移除MPLS头部,还原为IP报文。

LSR分类

1.3.3 FEC(转发等价类)

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

  • 在MPLS网络中,FEC可以通过多种方式划分,例如基于目的IP地址及网络掩码、DSCP等特征来划分。
  • 数据属于哪一个LSP,由数据进入MPLS域时的Ingress LSR决定。
  • MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息。

FEC示意图

在传统的采用最长匹配算法的IP转发中,匹配到同一条路由的所有报文就是一个转发等价类。在MPLS中,关于FEC最常见的例子是:目的IP地址匹配同一条IP路由的报文被认为属于同一个FEC。

关于FEC如果单看概念是不容易理解,可以理解为FEC简单的就是到达某个相同目的路由的一类数据包。在IP路由中通过静态路由ip route-static 192.168.1.0 24 10.0.0.1表示到达192.168.1.0/24网段的数据依据下一跳10.0.0.1进行转发,而在MPLS中也是类似的,匹配到目的地址192.168.1.0/24就分为一类FEC,这是最简单的表示,也可以进行细分。

1.3.4 LSP(标签交换路径)

LSP(Label Switched Path,标签交换路径) 是标签报文穿越MPLS网络到达目的地所走的路径。与上面的FEC进行相关联。同一个FEC的报文通常采用相同的LSP穿越MPLS域,所以对同一个FEC,LSR总是用相同的标签转发。

LSP示意图

  • 一条LSP包含一台入站LSR一台出站LSR以及数量可变的中转LSR,因此LSP也可以看做是这些LSR的有序集合。
  • LSP需要在数据转发开始前建立完成,只有这样报文才能顺利穿越MPLS域。
  • LSP可通过静态动态两种方式建立。
  • 需要注意的是,LSP是一个从"起点"到"终点"的单向路径,若需要双向数据互通,则需要在双方之间建立双向的LSP。

缺省情况下MPLS的每个LSR路由器都对标签进行处理也就是每个路由器都验证标签,LSP就是每一个LSR路由器处理过程的路径,而且标签是没有方向的,也就是来回数据都需要LSP。

小结:从上面我们可以知道运行MPLS的网络设备组成MPLS域,而这些MPLS的设备称为LSR,根据对标签的处理分为入站LSR、出站LSR和中转LSR。到达同一目的网络的LSR路径的有序集合称为LSP(标签转发路径),LSP关联到FEC转发等价类进行分类,而且LSP是单向的,如果需要互相通信需要双向建立LSP。

二、MPLS标签

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

MPLS标签结构

2.1 标签结构

MPLS标签位于二层帧头部和IP头部之间,包含以下字段:

  • Label(标签值):20bit,用于标识FEC。
  • EXP(实验用途):3bit,主要用于CoS(服务质量)。
  • S(栈底位):1bit,栈底位,用于指示该标签头部是否为最后一层标签,长度1bit。如果该字段为1,则表示当前标签头部为栈底;如果该字段为0,则表示当前标签头部之后依然还有其他标签头部。
  • TTL(生存时间):8bit,防止报文在网络中无限循环。

2.2 标签栈

MPLS标签栈

  • MPLS支持一层或多层标签头部,这些标签头部的有序集合被称为标签栈(Label Stack)。
  • 当标签栈中存在多个标签时,这些标签的顺序是非常讲究的:
    • 栈顶标签:最靠近二层头部的标签,S字段为0。
    • 栈底标签:最靠近IP头部的标签,S字段为1。

通过前面标签结构中的S栈底为确定是否为栈顶或者栈底。当上层为MPLS标签栈时,以太网头部中的Type字段为0x8847,PPP头部中的Protocol字段为0x8281。

2.3 标签空间

前面我们讲了那么多的标签,那么标签究竟是怎样的呢?标签是一个短而定长的、只具有本地意义的标识符。标签空间就是指标签的取值范围,简单说标签就是一个数字,具有本地意义的数字。标签值的范围及规划如下:

MPLS标签空间

2.4 MPLS标签的处理

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

  • LSR对标签的操作类型包括:
    • Push(标签压入):在报文进入MPLS域时,压入新的标签。
    • Swap(标签交换):在MPLS域内转发时,替换标签。
    • Pop(标签弹出):在报文离开MPLS域时,移除标签。

标签操作示意图

结合前面的入站LSR和出站LSR和转发LSR可以理解各个标签路由器对于标签的压入、转发、弹出,然后在最后一跳转换为平台的IP数据包。

总结:

  • MPLS通过标签转发显著提升了数据转发速度。
  • MPLS术语(如MPLS域、LSR、FEC、LSP)是理解MPLS的关键。
  • MPLS标签的结构和操作机制是实现高效转发的核心。

通过本章的学习,我们对MPLS的基本概念、术语和标签有了全面的了解,可以知道传统IP转发路由器需要每次进行查找路由表匹配到数据包然后进行转发,而MPLS只要规划好LSP和FEC只对标签进行处理即可,是执行压入标签、转发标签还是弹出标签就行相对来说效率更高。


http://www.ppmy.cn/ops/158017.html

相关文章

笔记3——字符串和编码

文章目录 字符串和编码编码解码字符串长度格式化字符串(1)用 % 实现(2)用 format() 实现(3)用 f-string实现 eg 字符串和编码 在 Python 中,字符串是 Unicode 字符序列。Python 3 中的字符串默…

MySQL8.0 innodb Cluster 高可用集群部署(MySQL、MySQL Shell、MySQL Router安装)

简介 MySQL InnoDB集群(Cluster)提供了一个集成的,本地的,HA解决方案。Mysq Innodb Cluster是利用组复制的 pxos 协议,保障数据一致性,组复制支持单主模式和多主模式。 InnoDB Cluster组件: …

基于Java的分布式系统架构设计与实现

Java在大数据处理中的应用:基于Java的分布式系统架构设计与实现 随着大数据时代的到来,数据处理的规模和复杂性不断增加。为了高效处理海量数据,分布式系统成为了必不可少的架构之一。而Java,凭借其平台独立性、丰富的生态系统以…

Vue3(2)

一.Vue新特性 &#xff08;1&#xff09;defineOptions:主要是用来定义Options API的选项 背景说明&#xff1a;有< script setup >之前&#xff0c;如果定义props&#xff0c;emits可以轻而易举地添加一个与setup平级 的属性。但是用了< script setup >后&#…

DeepSeek解决服务器繁忙,使用API接口进行使用

一、在网页端客户端使用DeepSeekR1&#xff0c;经常是问一个问题&#xff0c;然后就是服务器繁忙 二、具体为什么会出现这样的情况那&#xff1f; 用户流量过大&#xff1a;DeepSeek的免费开放和强大功能吸引了大量用户&#xff0c;短时间内的请求激增使服务器负担过重。 算力…

H5 图片系列—new Image()加载图片是否会有缓存,从而img标签获取同一数据源显示时使用该缓存数据?

是的,new Image() 在加载图片时,会利用浏览器的缓存机制。如果图片的 src 地址相同,浏览器会尝试从缓存中加载图片,而不是重新从网络请求。这是浏览器默认的行为,不会重复下载相同的图片,从而提高页面加载速度。 1.缓存机制 1.浏览器缓存: a.当 img.src = imageUrl 被…

C语言简单练习题

文章目录 练习题一、计算n的阶乘bool类型 二、计算1!2!3!...10!三、计算数组arr中的元素个数二分法查找 四、动态打印字符Sleep()ms延时函数system("cls")清屏函数 五、模拟用户登录strcmp()函数 六、猜数字小游戏产生一个随机数randsrandRAND_MAX时间戳time() 示例 …

2、k8s 二进制安装(详细)

k8s 二进制安装 IP规划初始化部署 etcd 集群在 etcd01 节点上操作准备cfssl证书生成工具&#xff0c;加权生成etcd证书上传etcd软件包启动 etcd 服务 部署 Master 组件部署 Worker Node 组件node 节点安装 docker部署组件 部署 CNI 网络组件部署 flannel简介部署 部署 Calico简…