企业网络新选择:软件定义架构下的MPLS
随着现代企业园区网络和运营商级基础设施的不断发展,多协议标签交换 (MPLS) 已成为一项基础技术,这要归功于其高效的数据包转发、高级流量工程功能以及对多租户环境的强大支持。
什么是MPLS?
MPLS(多协议标签交换,Multiprotocol Label Switching)是一种基于标签的转发技术,结合了二层交换的简捷性与三层路由的灵活性。通过预分配的标签(Label)替代传统IP路由的逐跳查表,提升转发效率。
MPLS起源于IPv4(Internet Protocol version 4),其核心技术可扩展到多种网络协议,包括IPv6(Internet Protocol version 6)、IPX(Internet Packet Exchange)和CLNP(Connectionless Network Protocol)等。MPLS中的“Multiprotocol”指的就是支持多种网络协议。
由此可见,MPLS并不是一种业务或者应用,它实际上是一种隧道技术。这种技术不仅支持多种高层协议与业务,而且在一定程度上可以保证信息传输的安全性。
核心组件:LER(标签边缘路由器)、LSR(标签交换路由器)、FEC(转发等价类)。
工作原理
-
标签分配:入口路由器(LER)为数据包分配标签,标签对应转发路径(LSP)。
-
标签交换:中间路由器(LSR)根据标签转发表(LFIB)快速转发,无需解析IP头部。
-
标签移除:出口路由器(LER)剥离标签,恢复原始IP数据包。
标签结构
MPLS 标签是一个紧凑的 32 位报头,包含四个关键字段:
-
标签 (20 位) — 标识通过 MPLS 网络的路径 (LSP)
-
EXP(3 位)— 用于 QoS(服务质量)标记或流量优先级
-
S (1 bit) – 堆栈标志的底部;指示这是否是堆栈中的最后一个标签
-
TTL(8 位)– 生存时间;通过限制数据包的生命周期来防止路由循环
为什么需要MPLS?
在传统IP网络架构中,基于三层路由的转发机制逐渐暴露很多问题。
首先,转发效率低下的问题尤为突出,由于每台路由器都需要逐跳解析IP报文头部并查询路由表,这种反复查表的机制在大流量场景下会产生显著延迟,难以满足数据中心或运营商核心网的高吞吐需求。
其次,传统路由技术对路径控制能力薄弱,完全依赖OSPF、BGP等动态路由协议自动选路,既无法主动规避拥塞链路,也无法为特定业务指定优化路径,导致网络资源利用率低下。
更棘手的是多业务隔离难题,VLAN受限于4096个ID的规模上限,ACL策略管理复杂度随业务增长呈指数级上升,这种基于二层的隔离方案难以支撑跨地域、多租户的现代组网需求。
MPLS技术的核心功能
服务质量(QoS)
MPLS在QoS中的应用主要体现在其对网络流量优先级管理的精细化能力上,而EXP字段(Experimental Bits,后更名为Traffic Class字段)是两者结合的核心纽带。MPLS如何实现QoS保障?在MPLS网络入口(LER),根据业务类型(如语音、视频、普通数据)为流量分配EXP值,可通过手动配置或自动映射(如将IP层的DSCP值转换为EXP值)。LSR根据EXP值分为不同优先级队列,优先转发低延迟流量(SP)和按比例分配剩余带宽(WFQ)。当链路拥塞时,低EXP值的流量可能被丢弃(如TCP流量),而高EXP值的流量(如VoIP)始终保障带宽,此外,再结合RSVP-TE等协议实现关键业务(如语音、实时视频)的带宽保障和低抖动传输,构建起从转发效率到业务体验的全方位优化体系。
流量工程(TE)
TE通过MPLS技术解决了传统IP网络无法实现的精细化流量控制需求,通过显式路径(Explicit Path)手动或策略驱动流量走向,均衡负载或避开瓶颈链路,从而优化网络性能。
业务隔离与VPN
传统VPN一般是通过GRE(Generic Routing Encapsulation)、L2TP(Layer 2 Tunneling Protocol)、PPTP(Point to Point Tunneling Protocol)等隧道协议来实现私有网络间数据在公网上的传送,而MPLS LSP是通过标签交换形成的隧道,数据报文不再经过封装或者加密,因此,用MPLS实现VPN具有天然的优势。
基于MPLS的VPN通过LSP将私有网络的不同分支联结起来,形成一个统一的网络,如图所示。基于MPLS的VPN还支持对不同VPN间的互通控制。这对于企业和运营商网络至关重要。
-
CE(Customer Edge)是用户边缘设备,可以是路由器,也可以是交换机或主机。
-
PE(Provider Edge)是IP/MPLS骨干网的边缘设备。
-
P(Provider)是IP/MPLS骨干网的骨干设备,不与CE直接相连。P设备只需要具备基本MPLS转发能力,不维护VPN信息。
如何基于业务场景与技术特性选择最优网络方案?
对比维度 | MPLS | 传统IP路由 | SD-WAN | Segment Routing |
---|---|---|---|---|
转发效率 | 高(标签快速交换) | 低(逐跳查表) | 中(依赖隧道封装) | 高(类似MPLS) |
路径控制 | 支持显式路径和流量工程 | 依赖动态路由协议 | 动态智能选路 | 灵活源路由 |
多业务隔离 | 通过VPN实现逻辑隔离 | VLAN/ACL,扩展性差 | 有限(依赖Overlay) | 需结合其他技术(如VXLAN) |
部署成本 | 高(依赖专用设备和运营商专线) | 低 | 低(利用互联网链路) | 中(需升级硬件支持) |
适用场景 | 企业专网、运营商核心网 | 中小型园区网络 | 跨地域互联、云访问优化 | 数据中心、大规模骨干网 |
服务质量(QoS) | 强(基于EXP/DSCP优先级标记) | 弱 | 中(依赖链路质量监测) | 中(需策略配合) |
AsterNOS:软件定义架构下的MPLS转发技术革新
SONiC(Software for Open Networking in the Cloud) 是开源社区的网络操作系统,其核心目标是构建开放、解耦的云数据中心网络架构。作为全球首个完全开源的网络操作系统,SONiC基于Linux内核设计,支持标准化硬件(如白盒交换机)与容器化微服务架构,通过模块化组件(如SAI——交换机抽象接口)实现灵活的功能扩展。其开源特性吸引了全球云服务商、运营商及企业的广泛参与,逐步成为云原生网络的事实标准。
尽管社区版 SONiC 通过模块化设计为云数据中心提供了开放灵活的基础架构,但其在复杂协议支持上的短板始终制约着企业级场景的深度应用。以MPLS为例,社区版本需依赖第三方扩展或定制化开发,导致功能碎片化、性能不稳定,难以满足金融专网、跨云互联等高可靠性需求。
基于 SONiC 的开放式园区交换机的完整产品组合现在完全支持 MPLS,它提高了数据包转发速度,支持精细的流量控制,并支持多协议环境,使其成为电信、企业 WAN 和云数据中心中的大规模网络不可或缺的工具。这种“开源基因+商业级能力”的融合,使得AsterNOS既能继承开源生态的灵活性,又能以超前技术布局填补开源生态与商业需求间的鸿沟。
【参考文献】
https://www.fnetlink.com/hyzx/32732.html
https://wiki.mbalib.com/wiki/MPLS
https://info.support.huawei.com/info-finder/encyclopedia/zh/SR-MPLS.html
相关文章:
企业网络新选择:软件定义架构下的MPLS
随着现代企业园区网络和运营商级基础设施的不断发展,多协议标签交换 (MPLS) 已成为一项基础技术,这要归功于其高效的数据包转发、高级流量工程功能以及对多租户环境的强大支持。 什么是MPLS? MPLS(多协议…...
SparkSQL操作Mysql
(一)准备mysql环境 我们计划在hadoop001这台设备上安装mysql服务器,(当然也可以重新使用一台全新的虚拟机)。 以下是具体步骤: 使用finalshell连接hadoop001.查看是否已安装MySQL。命令是: rpm -qa|grep…...
【论文阅读】UNIT: Backdoor Mitigation via Automated Neural Distribution Tightening
ECCV2024 https://github.com/Megum1/UNIT 我们的主要贡献总结如下: 我们引入了UNIT(“AUtomated Neural DIstribution Tightening”),这是一种创新的后门缓解方法,它为每个神经元近似独特的分布边界,用于…...
Android逆向学习(十) IDA逆向编辑Android so文件
Android逆向学习(十) IDA逆向编辑Android so文件 一、 写在前面 这是吾爱破解论坛正己大大的第10个教程 native code在我之前的博客中讲到过,所以这里就不讲了 简单来说,native code就是在android中使用c或c语言进行开发 这样…...
OpenCV + PyAutoGUI + Tkinter + FastAPI + Requests 实现的远程控制软件设计方案
以下是基于 OpenCV PyAutoGUI Tkinter FastAPI Requests 实现的远程控制软件设计方案。该方案分为 被控端(服务端) 和 控制端(客户端),支持屏幕实时查看、键盘映射和鼠标操作。 1. 系统架构 ------------------- …...
C++.神经网络与深度学习(赶工版)(会二次修改)
神经网络与深度学习 1. 神经网络基础1.1 神经元模型与激活函数1.2 神经网络结构与前向传播2.1 损失函数与优化算法均方误差损失函数交叉熵损失函数梯度下降优化算法 2.2 反向传播与梯度计算神经元的反向传播 3.1 神经元类设计与实现神经元类代码实现代码思路 3.2 神经网络类构建…...
砷化镓太阳能电池:开启多元领域能源新篇
砷化镓太阳能电池作为一种高性能的光伏产品,具有诸多独特优势。其中,锗衬底砷化镓太阳能电池表现尤为突出,它具备高转化效率、耐辐照和高电压等特性。在空间供电电源领域,这些优势使其成为人造卫星、太空站、太空探测器和登陆探测…...
[Linux] vim及gcc工具
目录 一、vim 1.vim的模式 2.vim的命令集 (1):命令模式 (2):底行模式 3.vim配置 二、gcc 1.gcc格式及选项 2.工作布置 三、自动化构建工具makefile 1.基本使用方法 2.配置文件解析 3.拓展 在linux操作系统的常用工具中,常用vim来进行程序的编写;…...
java加强 -stream流
Stream流是jdk8开始新增的一套api,可以用于操作集合或数组的内容。 Stream流大量的结合了Lambda的语法风格来编程,功能强大,性能高效,代码简洁,可读性好。 体验Stream流 把集合中所有以三开头并且三个字的元素存储到…...
RHCE认证通过率
红帽RHCE考试总体通过率38%(2023年数据),细分数据显示自学者通过率18%,参加官方培训者47%,企业团体考生53%。通过率差异由备考资源和考试策略决定。 RHCE考试重点考Ansible自动化运维,需在3.5小时内完成12…...
OpenEvidence AI临床决策支持工具平台研究报告
平台概述 OpenEvidence是一个专为医疗专业人士设计的临床决策支持工具,旨在通过整合各类临床计算器和先进的人工智能技术,提高医生的诊疗决策效率和准确性。作为一款综合性医疗平台,OpenEvidence将复杂的医学计算流程简化,同时提供个性化的临床建议,使医生能够更快、更准…...
gd32e230c8t6 keil6工程模板
下载固件gd32e230c8t6固件官方下载(需登录) 或 蓝奏云 新建一个文件夹,把固件压缩包里的里的Firmware和Template拖进去 keil新建gd32e230c8工程 必须勾选CMSIS-CORE 新建一个文件夹,双击任意改名 点击manage project it…...
正向代理与反向代理区别及应用
正向代理和反向代理是两种常见的代理服务器类型,它们在网络架构中扮演不同角色,核心区别在于代理对象和使用场景。 1. 正向代理(Forward Proxy) 定义:正向代理是客户端(如浏览器)主动配置的代理…...
自然语言处理入门级项目——文本分类
文章目录 前言1.数据预处理1.1数据集介绍1.2数据集抽取1.3划分数据集1.4数据清洗1.5数据保存 2.样本的向量化表征2.1词汇表2.2向量化2.3自定义数据集2.4备注 结语 前言 本篇博客主要介绍自然语言处理领域中一个项目案例——文本分类,具体而言就是判断评价属于积极还…...
UOS专业版上通过源码安装 Python 3.13 并保留系统默认版本
在 UOS 专业版上通过源码安装 Python 3.13 并保留系统默认版本,可按照以下步骤操作: 1. 安装依赖 首先安装编译 Python 所需的依赖库: sudo apt update sudo apt install -y build-essential zlib1g-dev libncurses5-dev \ libgdbm-dev li…...
【论文笔记】ViT-CoMer
【题目】:ViT-CoMer: Vision Transformer with Convolutional Multi-scale Feature Interaction for Dense Predictions 【引用格式】:Xia C, Wang X, Lv F, et al. Vit-comer: Vision transformer with convolutional multi-scale feature interaction…...
kaggle薅羊毛
参考:https://pytorch-tutorial.readthedocs.io/en/latest/tutorial/chapter05_application/5_1_kaggle/#512-kaggle https://github.com/girls-in-ai/Girls-In-AI/blob/master/machine_learning_diary/data_analysis/kaggle_intro.md 1,code training…...
Python 之 Flask 入门学习
安装 Flask 在开始使用 Flask 之前,需要先安装它。可以通过 pip 命令来安装 Flask: pip install Flask创建第一个 Flask 应用 创建一个简单的 Flask 应用,只需要几行代码。以下是一个最基本的 Flask 应用示例: from flask imp…...
SpringBoot Vue MySQL酒店民宿预订系统源码(支付宝沙箱支付)+代码讲解视频
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...
Oracle日期计算跟Mysql计算日期差距问题-导致两边计算不一致
Oracle数据库对日期做加法时,得到的时间是某天的12:00:00 例: Oracle计算 select (TO_DATE(2025-04-14, YYYY-MM-DD)1.5*365) from dual; 结果:2026/10/13 12:00:00Mysql计算 select DATE_ADD( str_to_date( 2025-04-14, %Y-%m-%d ), INTER…...
多线程(三)
上一期关于线程的执行,咱们说到线程是 “ 随机调度,抢占式执行 ”。所以我们对于线程之间执行的先后顺序是难以预知的。 例如咱们打篮球的时候,球场上的每一位运动员都是一个独立的 “ 执行流 ”,也可以认为是一个线程࿰…...
微服务商城(1)开篇、服务划分
参考:https://mp.weixin.qq.com/s?__bizMzg2ODU1MTI0OA&mid2247485597&idx1&sn7e85894b7847cc50df51d66092792453&scene21#wechat_redirect 为什么选择go-zero go-zero 为我们提供了许多高并发场景下的实用工具,比如为了降低接口耗时…...
刘强东 “猪猪侠” 营销:重构创始人IP的符号革命|创客匠人热点评述
当刘强东身着印有外卖箱猪猪侠的 T 恤漫步东京涩谷街头时,这场看似荒诞的行为艺术实则揭开了互联网商业竞争的新篇章。这位曾经以严肃企业家形象示人的京东创始人,正通过二次元 IP 的深度绑定,完成从商业领袖到文化符号的华丽转身。 一、IP …...
MQ消息队列的深入研究
目录 1、Apache Kafka 1.1、 kafka架构设 1.2、最大特点 1.3、功能介绍 1.4、Broker数据共享 1.5、数据一致性 2、RabbitMQ 2.1、架构图 2.2、最大特点 2.3、工作原理 2.4、功能介绍 3、RocketMQ 3.1、 架构设计 3.2、工作原理 3.3、最大特点 3.4、功能介绍 3…...
填涂颜色(bfs)
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言📝 含泪播种的人一定能含笑收获! 题目描述 由数字 0 0 0 组成的方阵中,有一任意形状的由数字 1 1 1 构成的闭合圈。现…...
FFplay 音视频同步机制解析:以音频为基准的时间校准与动态帧调整策略
1.⾳视频同步基础 1.2 简介 看视频时,要是声音和画面不同步,体验会大打折扣。之所以会出现这种情况,和音视频数据的处理过程密切相关。音频和视频的输出不在同一个线程,就像两个工人在不同车间工作,而且不一定会同时…...
【Linux笔记】——进程信号的捕捉——从中断聊聊OS是怎么“活起来”的
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux笔记】——进程信号的保存 🔖流水不争,争的是滔滔不息 一、信号捕捉的流程二、…...
VCS X-PROP建模以及在方针中的应用
VCS X-PROP建模以及在方针中的应用 摘要:VCS X-Prop(X-Propagation)是 Synopsys VCS 仿真工具中的一种高级功能,用于增强 X 态(未知态)和 Z 态(高阻态)在 RTL 仿真中的建模和传播能力…...
OpenSHMEM 介绍和使用指南
OpenSHMEM 介绍和使用指南 什么是 OpenSHMEM? OpenSHMEM 是一个用于并行计算的标准化 API,它提供了一种分区全局地址空间 (PGAS) 编程模型。OpenSHMEM 最初由 Cray 公司开发,后来成为一个开源项目,旨在为高性能计算提供高效的通…...
Electron入门指南:用前端技术打造桌面应用
🌟 目录速览 什么是Electron?为什么要用Electron?核心概念三分钟掌握快速创建第一个应用典型应用场景开发注意事项常见问题解答 一、什么是Electron?🤔 Electron就像魔法转换器,它能将你熟悉的࿱…...
机器学习第十讲:异常值检测 → 发现身高填3米的不合理数据
机器学习第十讲:异常值检测 → 发现身高填3米的不合理数据 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 一、幼儿…...
【Redis】缓存穿透、缓存雪崩、缓存击穿
1.缓存穿透 是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,导致请求直接穿透缓存到达数据库,给数据库带来压力的情况。 常见的解决方案有两种: 缓存空对象:实现简单,维护方便&am…...
科学养生指南:打造健康生活
在快节奏的现代生活中,健康养生成为人们关注的焦点。科学养生无需复杂理论,掌握以下几个关键要素,就能为身体构筑坚实的健康防线。 合理饮食是健康的基础。世界卫生组织建议,每天应摄入至少 5 份蔬菜和水果,保证维生…...
解锁健康生活:现代养生实用方案
早上被闹钟惊醒后匆忙灌下咖啡,中午用外卖应付一餐,深夜刷着手机迟迟不肯入睡 —— 这样的生活模式,正在不知不觉侵蚀我们的健康。科学养生并非遥不可及的目标,只需从生活细节入手,就能逐步改善身体状态。 饮食管理…...
深入解析JVM字节码解释器执行流程(OpenJDK 17源码实现)
一、核心流程概述 JVM解释器的核心任务是将Java字节码逐条翻译为本地机器指令并执行。其执行流程可分为以下关键阶段: 方法调用入口构建:生成栈帧、处理参数、同步锁等。 字节码分派(Dispatch):根据字节码跳转到对应…...
【HCIA】BFD
前言 前面我们介绍了浮动路由以及出口路由器的默认路由配置,可如此配置会存在隐患,就是出口路由器直连的网络设备并不是运营商的路由器,而是交换机。此时我们就需要感知路由器的存活状态,这就需要用到 BFD(Bidirectio…...
vue使用路由技术实现登录成功后跳转到首页
文章目录 一、概述二、使用步骤安装vue-router在src/router/index.js中创建路由器,并导出在vue应用实例中使用router声明router-view标签,展示组件内容 三、配置登录成功后跳转首页四、参考资料 一、概述 路由,决定从起点到终点的路径的进程…...
用户模块 - IP归属地框架吞吐测试
一、引言 在很多用户系统中,我们常常需要知道一个IP地址来自哪里,比如判断一个用户是否来自国内、识别异常登录等。而实现这个功能,通常会使用一个“IP归属地解析框架”,它可以根据IP地址返回国家、省份、城市等信息。 不过&#…...
生活实用小工具-手机号归属地查询
一、接口定义 手机号码归属地接口(又称手机号查询API)是一种通过输入手机号码,快速返回其归属地信息(如省份、城市、运营商、区号等)的应用程序接口。其数据基础来源于运营商(移动、联通、电信)…...
鸿蒙-5.1.0-release源码下载
源码获取 前提条件 注册码云gitee帐号。注册码云SSH公钥,请参考码云帮助中心。安装git客户端和git-lfs并配置用户信息。 git config --global user.name "yourname" # 这得和gitee的账号对的上 git config --global user.email "your-email-ad…...
2020年下半年试题三:论云原生架构及其应用
论文库链接:系统架构设计师论文 论文题目 近年来,随着数字化转型不断深入,科技创新与业务发展不断融合,各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下,以容器盒微服务…...
Flutter到HarmonyOS Next 的跨越:memory_info库的鸿蒙适配之旅
Flutter到鸿蒙的跨越:memory_info库的鸿蒙适配之旅 本项目作者:kirk/坚果 您可以使用这个Flutter插件来更改应用程序图标上的角标 作者仓库:https://github.com/MrOlolo/memory_info/tree/master/memory_info 在数字化浪潮的推动下&#…...
昆士兰科技大学无人机自主导航探索新框架!UAVNav:GNSS拒止与视觉受限环境中的无人机导航与目标检测
作者: Sebastien Boiteau, Fernando Vanegas, Felipe Gonzalez 单位:昆士兰科技大学电气工程与机器人学院,昆士兰科技大学机器人中心 论文标题:Framework for Autonomous UAV Navigation and Target Detection in Global-Naviga…...
uniapp设置 overflow:auto;右边不显示滚动条的问题
设置了overflow:auto;或者其它overflow的属性不显示滚动条是因为在uniapp中默认隐藏了滚动条 解决方法: //强制显示滚动条 ::-webkit-scrollbar {width: 8px !important;background: #ccc !important;display: block !important;}//设置滚动条颜色.cu-…...
基于SIP协议的VOIP话机认证注册流程分析与抓包验证
话机的认证注册报文怎么看? 在SIP协议中,当VOIP话机首次启动的时候,他会向SIP服务器发送一个Register请求来注册自己的信息地址,,告诉服务器 话机当前在线话机的IP地址和端口是什么话机希望接收通话的联系方式 认证注…...
JS,ES,TS三者什么区别
Java Script(JS)、ECMAScript(ES)、TypeScript(TS) 的核心区别与关联的详细解析,结合技术背景、设计目标及应用场景展开说明: 一、核心定义与关系 JavaScript(JS) 定义:一种动态类型、基于原型的脚本语言,由 Netscape 公司于 1995 年首次开发,用于网页交互功能。角…...
深度理解指针(2)
🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 深入理解指…...
笔记本/台式机加装PCIe 5.0固态硬盘兼容性与安装方法详解 —— 金士顿Kingston FURY Renegade G5装机指南
在2025年,存储设备市场迎来了革命性的升级浪潮。作为最高性能PCIe 5.0固态硬盘的代表,Kingston FURY Renegade G5 PCIe 5.0 NVMe M.2 固态硬盘不仅刷新了读写速度新高,更以优异的能耗和温控表现成为高端PC、游戏本和工作站升级的“定心丸”。…...
使用libUSB-win32的简单读写例程参考
USB上位机程序的编写,函数的调用过程. 调用 void usb_init(void); 进行初始化 调用usb_find_busses、usb_find_devices和usb_get_busses这三个函数,获得已找到的USB总线序列;然后通过链表遍历所有的USB设备,根据已知的要打开USB设…...
Tailwind CSS 实战教程:从入门到精通
Tailwind CSS 实战教程:从入门到精通 前言 在Web开发的世界里,CSS框架层出不穷。从早期的Bootstrap到现在的Tailwind CSS,前端开发者们总是在寻找更高效、更灵活的样式解决方案。今天,我们就来深入探讨这个被称为"实用优先…...