LWN: multipath TCP的现状

MPTCP多路径传输协议的研究与实现 MPTCP(Multipath TCP,多路径传输控制协议)是一种在传输层实现多路径传输的协议。传统的TCP(Transmission Control Protocol,传输控制协议)只能使用单一路径进行数据传输,而MPTCP扩展了TCP,允许同时利用多个网络路径进行数据传输。MPTCP的关键思想是创建多个TCP子流(subflow),每个子流可以通过不同的网络路径传输数据。这些子流可以在不同的网络接口、不同的网络类型(如Wi-Fi和蜂窝网络)之间进行传输。 阅读详情

640

点击上方蓝色“Linux News搬运工”关注我们~

Upstreaming multipath TCP

By Jonathan Corbet


LPC

 

过去差不多10年中,multipath TCP (MPTCP)协议以及在Linux kernel的支持一直在持续开发。MPTCP对于拥有超过一个网卡接口的设备来说有很多好处。虽然现在有很多地方已经采用了MPTCP,不过upstream Linux kernel里面尚未正式支持。2019 Linux Plumbers Conference会议上,Matthieu Baerts和Mat Martineau讨论了Linux MPTCP当前实现的状态,以及如何才能合入mainline kernel。

640

 

MPTCP是由RFC 6824所定义的,它的核心想法是,允许一个网络连接(network connection)能通过多条物理路径来收发数据。有一个很典型的应用场景就是手机,手机拥有WiFi和4G网络接口,如果能同时利用这两条路来发送数据,肯定能够得到更高的带宽,容错性也更高(其中一条路径状态变化并不会导致网络连接中断)。

 

Apple在2013年就增加了MPTCP支持,就是主要想改善某条链路出问题时候的出错处理。很典型的就是走出房间的过程中,用户使用的WiFi信号变弱所以必须要切换到4G网络。而Samsung和LG等公司也通过打上MPTCP patch来获取更大的贷款。MPTCP还经常应用到一些既有DSL也有LTE的家庭网关上,目的仍然是更大带宽。5G标准里也包含了MPTCP。

 

Linux在2009年3月开始实现MPTCP,过去10年里已经达到了0.95版本。Baerts认为它的用户已经有百万数量级了,不过目前还没有达到upstream的标准。MPTCP开发者一直希望能推上upstream,不过受限于一些因素尚未成功。首先就是MPTCP加入后也不能影响现有的TCP协议栈,具体来说不能导致性能下降,也不能在关闭MPTCP的情况下增加code size。这个协议本身是可选的,所以应用程序必须明确提出使用MPTCP,才会用到它。目前他们打算采用小步走的策略,先把最基本的功能合入进去。

 

The MPTCP protocol

 

Baerts接下来简要介绍了一下MPTCP协议本身,他觉得这个协议就像是最简单版本的TCP。众所周知,因为互联网上现有的各种中转设备无法处理它们不能识别的网络数据,所以每次给互联网广域网增加新的协议都是一件很麻烦的事情。简单来说有两种方法,一种是QUIC采用的方法,把所有协议细节隐藏掉,让中间网关看不到。另一种方法则是MPTCP采用的,就是伪装成一个现存的协议。因此MPTCP在中间网关看来其实就像是个普通的TCP连接。

 

MPTCP新协议肯定需要包含一些新的信息来把多个TCP连接合并起来。这里使用了好几种处理方法,首先是要利用多个连接统一分配的"data sequence number"。在TCP header里有一个MPTCP选项,以及一些新加的SYNC标志来表示支持MPTCP能力,还有能增加一个TCP connection到现有的某个MPTCP session里去。还会有一些其他的通知机制,例如公布有新的地址可用等等。多个TCP connection中的接收窗口也会被组合起来形成MPTCP级别可以看到的一个统一窗口。

 

其实MPTCP协议有两个版本,一个是RFC 6824,后来又有了一个新的RFC 6824bis。后者已经提交公开,将会是MPTCP v1.0 patch所实现的协议。新版本改动让这个协议更加容易实现,而5G也在使用这个版本的标准,所以今后用户应该都会很快切换到这个版本。Baerts会上也问kernel的网络开发者是否介意他只实现RFC 6824bis的支持,Eric Dumazet认为可以接受。

 

Getting it upstream

 

6月份就有个patch set发到mailing list上了,这个patch set创建了一个新的协议类型(IPPROTO_MPTCP),应用程序可以通过这个协议来指定使用multipath功能。Baerts指出这个patch set还没有支持IPv6,虽然添加IPv6并不难,不过MPTCP开发者打算稍后再做。一位听众提出其实可以反着做,只实现IPv6,今后再加IPv4。Dave Miller则提出基本功能需要在第一版本里就包含,IPv6也要支持,他认为现在阶段只实现IPv4功能已经无法满足需求了。

 

开发者们还问道怎么能对MPTCP subflows设置socket option。Baerts回答说现在还没有定义好API,所以user-space暂时还无法访问subflow。

 

听众又问,谁可以创建MPTCP socket。第一版的实现里,还没有完善的加固(harden)功能,例如尚未实现fuzzing机制。后面的计划是增加一个sysctl节点来控制谁能访问这个功能。缺省关闭这个功能,可以逐个network space来进行控制。Miller也不赞成这个做法,他希望合入的时候这个功能要完善,不应该缺省关闭。其实系统里面的sysctl已经太多了。Alexei Starovoitov觉得接收路径上更加重要一些,这个不应该通过sysctl来控制。Apple有一个远程安全攻击漏洞被利用来给手机系统进行越狱破解,他不希望Linux上也碰到这个问题。

 

Use cases

 

Martineau指出,MPTCP最开始的应用场景是在服务器端。这种场景下path management会非常简单。而现在在客户端这边会很麻烦,要处理多种差异显著的网络接口。这里需要一些底层机制,部分已经合入upstream了。他举的例子是SKB extensions,这是一种不继续撑大sk_buff结构并且能在packet里增加额外信息的方式。SKB extensions加入后,已经从sk_buff结构中去掉了多个不相干的指针,确实有改善。

640

等MPTCP第一版合入之后,大家就可以开始增加更多功能了。包括优先增加客户端应用场景下的支持。还有需要能支持user-space path manager,这样就能让系统管理员来增加、减少path(底层链路)了。GitHub上已经有些代码在实现user-space的管理功能了。

 

后续还有一个需要开发的方向就是packet scheduler,用于决定每个packet应该通过哪个patch来收发。它也应该允许用户配置,从而能实现throughput、latency、redundancy等方面的优化。在服务器方面,这个工作比较简单,主要能相应每个MPTCP连接对端的请求就好。kernel会实现一个基本的scheduler,今后估计还是要增加BPF hook来支持更复杂的场景。

 

MPTCP是个可选功能,除非application指定要用它,否则不会被激活。不过肯定会有用户希望能让他们的可执行程序能自适应的支持具有MPTCP功能的环境。目前有个初步的解决方案,可能不够优雅。需要增加一个新的cgroup hook,允许在某个程序调用socket()的时候执行预设好的BPF program,这样就能修改所请求的协议,改为IPPROTO_MPTCP,这样应用程序本身都不用意识到。

 

还有个"break before make"机制可以支持建立一个不用包含任何subflow的MPTCP connection。在一些场景会很有用,例如需要在多个WiFi AP之间切换的时候。等后续真有这种强烈需求的时候会加进来。最终肯定有需要对subflow设置socket option,这种功能要很仔细地处理,因为一些socket option会影响到正常的TCP。

 

最终,Martineau指出in-kernelTLS support带来的麻烦。因为MPTCP不是TCP,所以缺乏TLS所依赖的一些上层协议。要支持的话就需要很多工作,希望最终能把TLS数据也分发到多个flow上去。不过如果牵涉到硬件加速的话就很难了。不确定最终方案会是什么样。

 

[Your editor thanks the Linux Foundation, LWN's travel sponsor, for supporting travel to this event.]

 

全文完

LWN文章遵循CC BY-SA 4.0许可协议。

极度欢迎将文章分享到朋友圈 
热烈欢迎转载以及基于现有协议修改再创作~

 

长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~

 

640?wx_fmt=jpeg

Ubuntu下配置Multipath TCP(MPTCP)By内核下载(一) Ubuntu下配置Multipath TCP(MPTCP)By内核下载 阅读详情

相关推荐

MPTCP(Multipath TCP)简介

MPTCP(多路径TCP)是传统TCP的扩展协议,允许单个连接通过Wi-Fi、蜂窝等多路径并行传输数据,提升吞吐量40%-100%并实现毫秒级网络切换。其核心价值在于聚合带宽、增强容错性(单路径故障不影响连接)及无缝切换能力,适用于移动设备、数据中心等高流量场景。虽然面临中间设备兼容性等挑战,但MPTCP已通过智能调度和认证机制实现安全可靠的传输优化,无需修改应用层即可部署。

DD'Notes 920

linux 多路径意义,多路径TCP(MPTCP)

前言:tcp连接时,一直以来都是只能绑定一个ip地址,但是随着多网卡主机越来越多,从一个主机到另一个主机往往都会有多条链路可以到达,这种情况下,如何充分利用这多条链路进行并行的传输或者作为链路备份,就变得十分有意义,本篇就简单介绍其中一种多路径传输的方法—多路径TCP。一. 多路径传输的背景我们来看另一个常见的场景:用户的手机一般都有4G和WIFI两种网络接入方式,当用户进行下载数据时,如果接入了...

weixin_39581845的博客 748

ns3学习(三)——MPTCP

ns3及MPTCP源码运行笔记

qq_45926015的博客 3948

多路径TCP(MPTCP)研究概述

如今,大多数用户设备都有多个接口,服务器机器也是多宿主的。同时,为了确保可靠性,数据中心网络利用额外的基础设施在任意两台服务器之间提供许多冗余路径。然而,传统的单路径TCP无法有效利用这些多条路径,因为它们未能有效地耦合数据流。为了克服这个限制,开发了多路径TCP(MPTCP)。MPTCP允许端主机通过多条路径传输单一数据流。它标准化并实现了一个可部署的TCP多路径扩展。如图1所示,端主机可以在MPTCP连接中同时通过多个TCP子流传输数据。在MPTCP之前,有许多尝试尝试同时通过多条路径传输数据。

研究兴趣:智能物联网、嵌入式系统、人工智能 2874

数据中心内的多路径传输负载均衡(MPTCP)

多路径传输(Multipath TCP,MPTCP)是一种在数据中心网络中实现负载均衡和提高网络性能的技术。总结起来,数据中心内的多路径传输负载均衡(MPTCP)通过利用多个TCP连接进行数据传输,实现负载均衡和提高网络性能。开发人员可以使用相应的编程语言和网络库来实现MPTCP功能,从而优化数据中心网络的性能和可靠性。上述示例代码使用Python的socket模块创建了一个MPTCP套接字,并绑定到指定的地址和端口上。函数中,可以添加相应的逻辑来处理客户端的请求,并返回相应的响应。函数处理客户端的请求。

AnHaskell的博客 1358

【Multipath网络层协议】MPTCP工作原理

MPTCP 是在传统 TCP 基础上进行扩展的协议,它允许在源端和目的端之间建立多个 TCP子流,这些子流可以通过不同的网络路径传输数据。例如,一台笔记本电脑同时连接了 Wi-Fi 网络和以太网网络,当使用 MPTCP进行数据传输时,它可以将数据分别通过 Wi-Fi和以太网这两条不同的路径发送到目标服务器,从而充分利用两条链路的带宽。LISP 将 IP 地址的功能进行了分离,把 IP地址分为标识(ID)和位置(Locator)两部分。

xtb666666的博客 1428

LWN:5.14合并周期的第一部分!

关注了就能看到更多这么棒的文章哦~The first half of the 5.14 merge windowBy Jonathan CorbetJuly 2, 2021DeepL as...

Linux News搬运工 396

LINUX下多路径(multi-path)介绍及使用

本文档介绍和指导如何在Linux服务器上部署配置多路径软件,可以为想在Linux服务器上挂载磁盘阵列设备的技术人员提供一定的参考。

多路径传输协议的深度解析:MPTCP与CMT-SCTP的性能对比

本文将深入探讨多路径传输协议(MPTCP)与并发多路径传输协议(CMT-SCTP)的性能特点,结合最新的网络技术发展,对这两种协议进行详细的性能分析,并讨论它们在实际网络中的应用潜力与面临的挑战。

weixin_52421133的博客 2451

MobaXterm终端工具个人学习版安装包及常用配置备份

资源包含 MobaXterm 个人版的安装包以及日常运维常用的基础配置备份文件。适用于网络工程师及运维人员用于日常的服务器管理、SSH 连接及串口调试。 压缩包内附带了个人整理的软件使用技巧与配置说明(仅供个人学习参考)。请各位同行下载后注意,技术工具请尽量支持官方正版,本资源仅供个人测试与交流使用,切勿用于商业环境。

实例讲解Simulink CAN通讯丢失故障判定模型搭建及仿真测试验证方法

本文通过ABS通讯丢失故障触发、判定条件Simulink模型的搭建和仿真的讲解,介绍了一种控制器CAN通讯丢失故障判定的方法和建模方法,希望能给相关技术人员带来一定参考和帮助。

qq_43011586的博客 3685

链路聚合技术——多路径传输Multipath TCP(MPTCP)快速实践

有什么办法可以让网络传输时让链路叠加,以实现网络传输时的“更快更强”?LACP(Link Aggregation Control Protocol,链路汇聚控制协议),一般使用支持LACP的设备进行链路汇聚linux bond,在具有多网口的linux服务器上配置bond,根据需求使用指定的bond类型实现链路汇聚MPTCP(MultiPath TCP),在现有的TCP协议上扩展实现的多路径传输协议,可将数据包拆分为多个子包传输。

水中加点糖 5772

深入解析Vivado FIFO的Standard与FWFT模式:性能对比与应用场景

本文深入解析了Vivado FIFO的Standard与FWFT两种工作模式的核心差异。通过对比数据就绪时机、读延迟、控制逻辑和有效深度等关键特性,并结合图像处理、数据包转发等典型应用场景,为FPGA设计者提供了清晰的选择依据和实战配置指南,帮助优化数据流性能与设计效率。

weixin_29219189的博客 254

多路径传输(MPTCP & MPQUIC)数据包调度研究总结

MPTCP与MPQUIC多路径传输数据包调度研究梳理总结。

Green Lv的博客 8363

RAG项目简历包装指南:从“流水线工人”到“问题解决者”的跃迁(附代码与思路)

本文代码已在Python 3.11 + CUDA 12.3环境测试,部分功能需LangChain 0.2+支持。

Conan_0728的博客 1885

基于python的排课表系统,用python编写排课系统

实现一个具体的课程管理系统。(5) 学生可以查看自己选上的课的成绩,以及各个课程的得分、绩点,并给出其平均绩点,但不允许查看年级其他人的成绩。(2) 学生定制专属课表,可以查看整个学期本人的课程安排,包括课程名称、上课时间、上课地点、任课老师、学分等等。(13) 系主任可以查看整个系的全部学生以及他们的平均绩点,可以对每个班进行排名,或者也可以对整个系进行排名。(15) 系主任可以查看整个学期所开设的所有课程,包括这些课程的全部详细信息。(1) 学生基本信息的查询,学生可以对本人的系统登陆密码进行修改。

yang0728y的博客 1999

Multipath TCP(MPTCP) Congestion Control抛砖引玉

MPTCP是一个全新的古老协议,从效果上看,它对标准TCP的扩展主要体现在两方面: 多路径切换:应用程序无感知的前提下在多条链路之间进行切换。 负载均衡:使用多条路径同时传输,提高链路带宽利用率。 似乎人们对多路径切换更感兴趣,几乎所有MPTCP的资料上都会介绍MPTCP在Wi-Fi和3G之间的透明切换能力,但有趣的是,定义MPTCP的RFC6182中(详见Section 2. Goals1)并没有提到这一点,路径备份似乎是一个附加的功能。 从本质(而不是从表面)上看,MPTCP是一个支持流量调度的资源

TCP/IP 3万+

IC设计效率翻倍!Verilog-mode的AUTOWIRE/AUTOINST组合使用技巧

本文详细介绍了在Emacs的verilog-mode插件中,如何组合使用AUTOWIRE与AUTOINST功能,实现Verilog代码的智能自动化连接与维护。通过声明式编程思想,该组合能自动生成模块实例化连接和线网声明,并配合AUTO_TEMPLATE处理复杂映射,从而大幅提升IC顶层设计的效率和可靠性,减少手动连线的错误。

weixin_28826545的博客 319

MPTCP和上层应用之间的关系,怎么在一个游戏中使用MPTCP

MPTCP(多路径传输控制协议)是一种传输层协议,它能够在多条网络路径之间动态地分配数据流。这意味着它可以通过多条不同的网络路径传输数据,并且可以在这些路径之间动态地切换。 在一个游戏中使用MPTCP的方法是将其作为传输层协议,并在游戏的网络层中使用它来传输数据。这可以通过在游戏的网络层中实现MPTCP协议栈来实现。在这种情况下,MPTCP将负责在多条网络路径之间分配数据流,而上层应用程序将无需知...

weixin_35750953的博客 429

FPGA 上的 YOLOv8 实时目标检测:从模型优化到硬件加速全解析

本文全面解析了将YOLOv8目标检测模型部署到FPGA进行硬件加速的完整流程。通过模型裁剪、混合精度量化等优化手段,结合HLS设计专用计算引擎与数据流,实现了高能效比的实时推理。文章深入探讨了软硬协同部署、性能调试与优化技巧,为追求极致实时性与低功耗的边缘AI应用提供了从算法到硬件的实战指南。

weixin_29031161的博客 605

【Claude Code】Not logged in 未登录错误解决方案 + /login 认证路径

Claude Code 启动时提示 Not logged in 表示当前会话缺少有效凭证。本文从环境变量、API Key 配置、CI 自动化凭证脚本和系统时钟四个维度,提供完整的认证排查流程与修复方案。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 894

Ubuntu下配置Multipath TCP(MPTCP)路由 (二)

Ubuntu下配置Multipath TCP(MPTCP)路由 (二)

weixin_44322104的博客 3656

【Clickhouse】Clickhouse写入报错keeper server rejected the connection during the handshake

我的clickhouse集群时不时的报这个错误All connection tries failed while connecting to ZooKeeper. nodes: xxx 到时写入数据失败 用的ck自带的keeper。你需要仔细检查ZooKeeper集群的配置和状态,确保所有节点都正常运行,并且能够正确地选举领导者。检查ZooKeeper的ACL以及ClickHouse连接所使用的凭据,确保它们被正确配置和授权。版本不兼容:有时,不同版本的软件之间可能存在不兼容性,导致连接问题。

九师兄 372

使用MPTCP+BBR进行数据传输,让网络又快又稳

通过对前文《链路聚合技术——多路径传输Multipath TCP(MPTCP)快速实践》和本文的综合应用,相信对于MPTCP的配置和实践有了一定的了解,体验下来后也会感悟到MPTCP的应用领域还是比较多的。与LACP与BOND相比,MPTCP在数据传输时不会因子路径的增加而新开辟单独的TCP连接,这种底层协议级的链路聚合也具有更好的性能表现。在开源产品方面,基于MPTCP的链路聚合路由器也获得了不错的好评。愿网络越来越快,越来越稳~

水中加点糖 3087

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

multipath tcp 实验 linux,RHEL 8.3 将引入 Multipath TCP

红帽确认将在 Red Hat Enterprise Linux 8.3 中引入多路径 TCP(Multipath TCP, MPTCP),以作为技术预览功能提供。MPTCP 由 IETF 的 MultiPath TCP 工作组研发,属于 TCP 的扩展,其目的是允许 TCP 连接使用多个路径将信道资源使用率最大化,以及增加冗余。虽然 MPTCP 已问世多年,不过其Linux 的参考实现却一直没...

weixin_33680199的博客 468

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MPTCP包结构

MPTCP包结构

tiger625的博客 698
上一篇: LWN: Linus Torvalds在2019 Maintainers Summit座谈会
下一篇: LWN:使用GCC编译生成BPF程序
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值