【Multipath网络层协议】MPTCP工作原理
常见网络层多路径协议介绍
MPTCP(Multipath TCP)
- MPTCP 是在传统 TCP 基础上进行扩展的协议,它允许在源端和目的端之间建立多个 TCP子流,这些子流可以通过不同的网络路径传输数据。
例如,一台笔记本电脑同时连接了 Wi-Fi 网络和以太网网络,当使用 MPTCP进行数据传输时,它可以将数据分别通过 Wi-Fi和以太网这两条不同的路径发送到目标服务器,从而充分利用两条链路的带宽。
LISP(Locator/ID Separation Protocol)
- LISP 将 IP 地址的功能进行了分离,把 IP地址分为标识(ID)和位置(Locator)两部分。在实际网络中,比如一个大型企业拥有多个分支机构,每个分支机构都有自己的内部网络。通过LISP,企业可以将内部设备的标识(ID)与它们当前所在的位置(Locator)进行分离管理。当分支机构之间进行数据传输时,LISP可以根据网络的实时状态,将流量动态地分配到不同的链路(路径)上。
例如,如果一条链路出现拥塞,LISP 会自动将部分流量切换到其他可用的链路,实现负载均衡,提高网络的整体性能和可靠性。
- 在数据中心网络中,LISP 也可以发挥作用。数据中心内有大量的服务器和存储设备,它们之间的数据交互频繁。LISP可以根据服务器的负载情况和网络拓扑,合理地规划数据传输路径,避免某些链路或设备过度负载,提高数据中心的运行效率。
DIF(Data-Centric Networking/Information-Centric Networking)
- DIF 以数据为中心,不同于传统的以地址为中心的网络架构。在一个内容分发网络(CDN)场景中,DIF可以根据用户请求的数据内容,在网络中寻找距离用户最近且缓存有该数据的节点进行数据传输。
例如,当用户请求观看一部热门电影时,DIF 会在 CDN 的多个节点中查找,发现节点 A 和节点 B 都缓存了这部电影,且节点 A距离用户更近,延迟更低。此时,DIF 会选择从节点 A 传输数据给用户。如果在传输过程中节点 A 出现问题,DIF 可以迅速切换到节点 B继续传输,而不需要像传统网络那样重新建立连接和寻找路径。
- 在物联网(IoT)环境中,DIF 也具有优势。物联网设备数量众多,产生的数据种类和格式各异。DIF可以根据数据的类型和需求,选择合适的路径进行传输。例如,对于实时性要求较高的传感器数据(如温度、湿度等监测数据),DIF会优先选择低延迟的路径进行传输;对于一些非实时性的设备配置数据等,则可以选择更经济的路径传输。
MPTCP 的工作原理与优势
工作原理
1、子流建立:当源端和目的端要建立 MPTCP 连接时,首先进行初始的协商。双方通过发送带有 MPTCP 选项的 SYN 报文,来确定对方是否支持 MPTCP 协议以及可以建立的子流数量等参数。
例如,源端发送一个 SYN 报文,其中包含了自己支持的最大子流数量等信息,目的端收到后,如果也支持 MPTCP,会在返回的 SYN-ACK报文中确认相关参数,并可能提出自己的一些配置信息。之后,双方会像建立普通 TCP 连接一样,通过三次握手为每个子流建立独立的 TCP连接。比如,源端和目的端决定建立两个子流,那么就会分别为这两个子流进行三次握手,建立起两条独立的 TCP 连接。
2、数据传输:在数据传输阶段,MPTCP 会根据各个子流的状态信息(如带宽、延迟、丢包率等)来分割和分配数据。假设源端要发送一个大文件,MPTCP 会将文件数据分割成若干个数据块,然后根据当前各个子流的带宽情况,将数据块分配到不同的子流上传输。如果子流 1 的带宽较高,可能会分配更多的数据块给它;子流 2 的带宽较低,则分配相对较少的数据块。接收端会对来自不同子流的数据块进行重组,按照正确的顺序恢复出原始文件数据。
3、路径管理:MPTCP 会持续监测各个子流的状态。例如,通过定期发送探测报文来测量子流的延迟、丢包率等指标。当发现某个子流的丢包率过高(如超过了设定的阈值),或者链路断开时,MPTCP 会将原本通过该子流传输的数据转移到其他正常的子流上。同时,如果检测到新的可用路径,MPTCP 可以动态地建立新的子流来利用这条路径。比如,当移动设备连接到一个新的 Wi-Fi 网络时,MPTCP 可以迅速建立一个新的子流,将部分数据切换到这个新的路径上传输,以提高整体的传输效率。
优势
1、提高吞吐量:通过同时利用多个路径的带宽,MPTCP 能够显著提升数据传输速度。
例如,在一个实验环境中,一台设备同时连接了 100Mbps 的 Wi-Fi 网络和 100Mbps 的以太网网络,使用传统 TCP协议传输数据时,由于只能使用一条路径,最大传输速度只能达到 100Mbps。而使用 MPTCP 协议,将数据分别通过这两条路径传输,理论上最大传输速度可以达到 200Mbps(实际情况可能会因网络开销等因素略低),大大提高了数据传输的效率,满足了高清视频流、大数据文件传输等对带宽要求较高的应用需求。
2、增强可靠性:当某一条路径出现故障时,MPTCP 可以快速切换到其他路径,保证数据传输的连续性。
例如,在视频会议应用中,如果使用传统 TCP 协议,当网络链路突然中断(如 Wi-Fi信号弱导致连接断开),视频会议可能会出现卡顿甚至中断。而使用 MPTCP 协议,当 Wi-Fi 链路出现问题时,MPTCP可以迅速将数据切换到蜂窝网络路径上继续传输,用户几乎感觉不到视频会议的中断,提高了应用的可靠性和用户体验。
3、无缝切换:在移动场景中,MPTCP 能够实现设备在不同网络之间的无缝切换。
比如,当用户在地铁上使用手机观看在线视频时,手机可能会从一个基站的覆盖范围移动到另一个基站的覆盖范围,或者从地铁内的 Wi-Fi 网络切换到移动数据网络。使用 MPTCP协议,视频数据可以在不同网络之间无缝切换传输路径,而不需要重新建立连接,保证了视频播放的流畅性,用户不会因为网络切换而中断观看。
MPTCP 与传统 TCP 的对比
连接特性
- 传统 TCP
一个 TCP 连接只使用一条路径进行数据传输。在连接建立过程中,源端发送 SYN 报文,目的端返回 SYN-ACK 报文,源端再发送 ACK 报文,通过三次握手建立起一条端到端的连接。
例如,用户在浏览网页时,浏览器与 web 服务器之间建立的 TCP连接就是通过一条网络路径(如用户的家庭宽带网络)进行数据传输的,数据只能在这条路径上按照 TCP 的规则进行发送和接收。
- MPTCP
一个 MPTCP 连接可以包含多个 TCP 子流,这些子流可以通过不同的路径传输数据。在连接建立时,除了进行传统的 TCP 三次握手外,还需要额外协商 MPTCP 相关的参数。
例如,源端和目的端不仅要确定基本的 TCP 连接参数(如初始序列号等),还要协商可以建立的子流数量、子流的优先级等 MPTCP特有的参数。然后,为每个子流分别建立独立的 TCP 连接,这些子流可以同时在不同的网络路径(如 Wi-Fi 和移动数据网络)上传输数据。
性能表现
- 传统 TCP
在网络条件良好的情况下,传统 TCP 能够提供稳定的数据传输性能。
例如,在局域网环境中,网络带宽充足且稳定,使用传统 TCP 协议进行文件传输可以达到较高的速度。
但当网络出现拥塞(如在高峰时段网络带宽被大量占用)、链路故障(如网线断开)或路径变化(如移动设备切换网络)时,TCP 的性能会受到较大影响。
比如,当网络拥塞时,传统 TCP会通过慢启动、拥塞避免等机制来调整发送窗口大小,降低数据发送速率,导致传输速度大幅下降;当链路故障时,TCP连接可能会中断,需要重新建立连接,这会造成数据传输的中断和延迟。
- MPTCP
MPTCP 可以通过多路径传输和动态路径管理,在网络拥塞或路径故障时,仍然保持较高的吞吐量和较低的延迟。
例如,当一条路径出现拥塞时,MPTCP 会将数据转移到其他未拥塞的路径上,避免了因单条路径拥塞导致的整体性能下降。
在链路故障时,MPTCP 可以迅速切换到其他可用路径,保证数据传输的连续性,减少了数据传输的中断时间和延迟。通过合理地分配数据到不同的子流,MPTCP 还可以提高整体的带宽利用率,从而提升数据传输的性能。
应用场景
- 传统 TCP
适用于大多数对网络连接要求不高的应用场景,如简单的网页浏览、文件下载等。在这些场景中,单路径的 TCP 连接能够满足基本的需求,用户对网络性能的要求相对较低。
例如,用户浏览普通的新闻网页,网页内容较小,即使传统 TCP 连接在网络拥塞时速度有所下降,用户也可能不会明显感觉到影响。
- MPTCP
更适合对网络性能和可靠性要求较高的应用场景,如移动应用、实时通信(如 VoIP、视频会议)、云计算等。在移动应用中,设备经常需要在不同的网络之间切换,MPTCP 的无缝切换特性可以保证应用的连续性。在云计算场景中,服务器之间的数据交互频繁且数据量大,MPTCP 的高吞吐量特性可以提高数据传输效率,提升云计算服务的性能。
相关文章:
【Multipath网络层协议】MPTCP工作原理
常见网络层多路径协议介绍 MPTCP(Multipath TCP) MPTCP 是在传统 TCP 基础上进行扩展的协议,它允许在源端和目的端之间建立多个 TCP子流,这些子流可以通过不同的网络路径传输数据。 例如,一台笔记本电脑同时连接了 W…...
deepseek使用记录18——文化基因美食篇
子篇:薪火相传的味觉辩证法——从燧人氏到预制菜的文化突围 一、石器时代的启蒙:食物探索中的原始辩证法 在贾湖遗址的陶罐残片上,碳化稻米与蜂蜜的结晶层相互交叠,这是9000年前先民对"甘"与"饱"的首次辩证…...
2025学年安徽省职业院校技能大赛 “信息安全管理与评估”赛项 比赛样题任务书
2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(五) 第一部分:网络平台搭建与设备安全防护任务书第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务1 :内存取证&…...
在 Ansys Maxwell 中分析磁场
在 Ansys Maxwell 中分析磁场 分析磁场的能力对于理解电磁系统至关重要。Ansys Maxwell 为工程师提供了强大的工具,帮助他们探索磁场数据并从中提取有价值的见解。在本指南中,我将深入研究 Ansys Maxwell 中的几种基本技术和方法,以有效地分…...
springboot项目Maven打包遇到的问题总结
java -jar 执行报错中没有主清单属性 Spring Boot的可执行JAR需要依赖该插件生成正确的主清单属性。在 pom.xml 的 部分添加以下配置: <build><plugins><!-- 必须配置此插件才能生成可执行的Spring Boot JAR --><plugin><groupId>o…...
DeepSeek FlashMLA:用技术创新破解大模型落地难题
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列十四DeepSeek大模型技术系列十四》DeepS…...
[补充]原码、反、补、移码的转换
近期在学习Java的类型转换的知识,强制类型转换的时候会遇到数据(丢失)溢出的问题。 最后在IDEA控制台输出的时候,出现了负数。了解了一下强制类型转换在计算机中的原理,随后就复习了一下原码、反、补、移码的转换的知…...
Hue 编译异常:ImportError: cannot import name ‘six‘ from ‘urllib3.packages‘
个人博客地址:Hue 编译异常:ImportError: cannot import name six from urllib3.packages | 一张假钞的真实世界 在编译Hue的时候出现错误信息如下: Running /home/zhangjc/ysten/git/ysten-hue/build/env/bin/hue makemigrations --noinpu…...
【Maven】将普通Eclipse项目改造为Maven项目(非SpringBoot项目)
文章目录 将普通Eclipse项目改造为Maven项目(非SpringBoot项目)Maven安装与配置项目结构改造父子Pom.xml文件配置(继承与集成)父项目下的pom.xml文件配置普通子模块下的pom.xml配置启动模块的pom.xml配置 多模块编译总结 Maven插件…...
安装Node.js
1.打开官网,下载安装包 2.安装过程中,全部默认,next. 3.在安装根目录下,新建两个文件夹【node_cache】和【node_global】 4.检测是否安装成功 打开控制台,node -v, npm -v, 显示版本号。 5.配置环境变量 1>从no…...
物联网同RFID功能形态 使用场景的替代品
在物联网(IoT)和自动识别技术领域,除了RFID标签外,还有一些其他技术产品可以在形态和大小上与RFID标签相似,同时提供类似或更强大的功能。以下是几种能够替代RFID标签的产品: 一、NFC标签 NFC(…...
【力扣】堆相关总结
priority_queue std::priority_queue 是 C 标准库中的一个容器适配器,提供了堆(Heap)数据结构的功能。它通常用于实现优先队列,允许你高效地插入元素和访问最大或最小元素。 头文件 #include <queue> 基本定义 std::pri…...
【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br)
HTML结构 一个HTML包含以下部分: 文档类型声明html元素 head元素body元素 例(CSDN): 一、文档类型声明 HTML最一方的文档称为:文档类型声明,用于声明文档类型。即:<!DOCTYPE html>…...
【漫话机器学习系列】113.逻辑回归(Logistic Regression) VS 线性回归(Linear Regression)
逻辑回归 vs 线性回归:详解对比 在机器学习和统计学中,逻辑回归(Logistic Regression) 和 线性回归(Linear Regression) 都是非常常见的模型。尽管它们的数学表达式有一定的相似性,但它们的应用…...
3 算法1-3 回文质数
题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)(一亿)间的所有回文质数。 输入格式 第一行输入两个正…...
Redis---缓存穿透,雪崩,击穿
文章目录 缓存穿透什么是缓存穿透?缓存穿透情况的处理流程是怎样的?缓存穿透的解决办法缓存无效 key布隆过滤器 缓存雪崩什么是缓存雪崩?缓存雪崩的解决办法 缓存击穿什么是缓存击穿?缓存击穿的解决办法 区别对比 在如今的开发中&…...
联合省选 2025 游记
Day 1 不会 LCT,不会字符串,不会博弈 快进到考场 t 1 t1 t1 很快想到枚举中位数再 check,然后就会了,思路很清晰写的很快 t 2 t2 t2 干想 1h 编出来 n m 2 3 nm^{\frac{2}{3}} nm32,然后认为 t 3 t3 t3 会和去年…...
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
一.Skywalking介绍 Apache SkyWalking是一个开源的分布式追踪与性能监视平台,特别适用于微服务架构、云原生环境以及基于容器(如Docker、Kubernetes)的应用部署。该项目由吴晟发起,并已加入Apache软件基金会的孵化器,…...
Thonny+MicroPython+ESP32开发环境搭建
1、下载&安装Thonny 安装成功后,会在桌面生成快捷键 双击快捷键,打开程序,界面如下 2、下载MicroPython 下载地址:MicroPython - Python for microcontrollers v1.19版(推荐,此版本稳定): https://do…...
数据结构:反射 和 枚举
目录 一、反射 1、定义 2、反射相关的类 3、Class类 (2)常用获得类中属性相关的方法: (3)获得类中注解相关的方法: (4)获得类中构造器相关的方法: (…...
前缀和算法 算法4
算法题中帮助复习的知识 vector<int > dp( n ,k); n为数组大小 ,k为初始化 哈希表unordered_map<int ,int > hash; hash.find(k)返回值是迭代器 ,找到k返回其迭代器 没找到返回hash.end() hash.count(k)返回值是数字 ,找到k返回1 ,没找到返回0. C和java中 负数…...
USRP7440-通用软件无线电平台
1、产品描述 USRP7440基于第三代XILINX Zynq UltraScale RFSoC架构,它将射频ADC、DAC、ARM、FPGA等集成一体,瞬时带宽可以达到2.5GHz,尤其适合于射频直采应用,比如通信与雷达。 第一代RFSOC高达4GHz • 8x 或 16x 6.554GSPS DAC…...
yunedit-post ,api测试比postman更好
postman应该是大家最熟悉的api测试软件了,但是由于它是外国软件,使用它的高端功能注册和缴费都比较麻烦。生成在线文档分享也经常无法访问被拦截掉。 这里可以推荐一下yunedit-post,该有的功能都有。 https://www.yunedit.com/postdetail …...
windows下玩转vllm:在wsl下安装vllm后续,设置modelscope作为下载源
文章目录 前言所涉及的之前的关键步骤解决模型权重下载网络不通畅的问题vllm和modelscope整合后的bug附录 ImportError: cannot import name _try_login from modelscope.utils.hf_util 全部报错信息前言 之前,咱们说了,由于windows不支持直接部署vllm,所以要么采用wsl,要…...
移动零
一 :题目 二:思路 双指针法: 两个指针将数组划分成三个部分: 解释: ①:所以一开始dest要等于-1,因为没有非零的元素,cur0,因为要从头开始遍历数组 ②:cur为…...
MySQL整体架构
目录 1 客户端 2 服务端 2.1 Server层 2.1.1 连接器 2.1.2 查询缓存 2.1.3 词法器 2.1.4 优化器 2.1.5 执行器 2.2 存储引擎层 1 客户端 ● 客户端为连接MySQL服务端的工具或者驱动,比如JDCB,ODBC等等 ● 用于连接目前服务器,并且发送需要执行…...
Linux之yum详解
—— 小 峰 编 程 目录 1、Linux软件的安装方式 2、什么是yum 3、配置网络yum源 4、yum命令 【语法】 【yum常用命令】 1、Linux软件的安装方式 在CentOS系统中,软件管理方式通常有三种方式: rpm安装 、 yum安装 以及 编译安装 。 2、什么是yum…...
大数据学习(52)-MySQL数据库基本操作
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
鸿蒙启动页开发
鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件,找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…...
记忆化搜索(典型算法思想)—— OJ例题算法解析思路
目录 一、509. 斐波那契数 - 力扣(LeetCode) 算法代码: 1. 动态规划 (fib 函数) 初始化: 递推计算: 返回结果: 2. 记忆化搜索 (dfs 函数) 备忘录初始化: 递归终止条件: 递…...
