多路径TCP(MPTCP)研究概述

翻译自《A Brief Review of Multipath TCP for Vehicular Networks》一文的第2节(Chao L, Wu C, Yoshinaga T, et al. A brief review of multipath tcp for vehicular networks[J]. Sensors, 2021, 21(8): 2793)。

2.2. MPTCP概述

如今,大多数用户设备都有多个接口,服务器机器也是多宿主的。同时,为了确保可靠性,数据中心网络利用额外的基础设施在任意两台服务器之间提供许多冗余路径。然而,传统的单路径TCP无法有效利用这些多条路径,因为它们未能有效地耦合数据流。为了克服这个限制,开发了多路径TCP(MPTCP)。MPTCP允许端主机通过多条路径传输单一数据流。它标准化并实现了一个可部署的TCP多路径扩展。如图1所示,端主机可以在MPTCP连接中同时通过多个TCP子流传输数据。在MPTCP之前,有许多尝试尝试同时通过多条路径传输数据。例如,SCTP[3]是一种传输层面向连接的协议,可以可靠地传输数据。与TCP的三次握手类似,SCTP进行四次握手以建立两个端点之间的关联。TCP容易受到拒绝服务(DoS)攻击的影响。然而,SCTP可以通过使用cookie机制增加安全性,并且能够更好地应对这个问题。SCTP支持多宿主,因此其每个端点可以持有多个IP地址。因此,在一个SCTP关联中可以存在多条路径。然而,只有主路径被允许传输数据,而其他路径用于备份。SCTP结合了TCP和UDP的优势。使用SCTP的并发多路径传输(CMT-SCTP)[24]是SCTP的一个扩展,它支持在SCTP关联内进行多路径数据传输。在CMT-SCTP中,数据包通过轮询(RR)方式分配到不同的路径。然而,这种方法在遇到异构路径时会带来数据包乱序问题。MPTCP的架构指南在[25]中进行了讨论。在[26]中,Paasch等人进行了实验,展示了MPTCP能够在仅有小延迟的情况下在不同路径之间切换传输路径。2013年1月,互联网工程任务组(IETF)发布了TCP扩展的MPTCP规范[4]。MPTCP主要设计目的是实现三个目标,即提高吞吐量、保持TCP友好性、平衡拥塞并在发生故障时提高弹性。在学术和工业界,进行了许多关于MPTCP的研究。在MPTCP中,每个子流都是一个标准的TCP连接。如图2所示,在MPTCP连接建立状态中,必须首先建立一个初始子流。与TCP类似,它也进行三次握手来启动初始子流。起初,发送方发送包含MP_CAPABLE选项、发送方的密钥和标志的SYN数据包给接收方。MP_CAPABLE选项表示发送方支持MPTCP并希望启动MPTCP。然后,如果接收方也支持MPTCP,它将用包含MP_CAPABLE选项、接收方的密钥和标志的SYN/ACK数据包进行回复。之后,发送方用包含MP_CAPABLE选项、发送方的密钥、接收方的密钥和标志的最终ACK进行回复,并成功建立了一个MPTCP会话。然而,在SYN/ACK发送阶段,如果接收方不支持MPTCP或没有在SYN/ACK数据包中添加MP_CAPABLE选项,则MPTCP会话将返回到常规TCP。在初始子流建立阶段交换的密钥也为后续子流的建立提供了加密信息。密钥被后续子流用来识别它想要加入的MPTCP连接。初始子流建立后,如图2所示,可以通过进行四次握手向现有的MPTCP连接添加新的子流。首先,MPTCP通过发送MP_JOIN选项来启动后续子流。除了MP_JOIN选项外,SYN数据包还包括加密信息(接收方令牌)、发送方的随机数(nonce)、发送方的地址ID和标志。然后接收方在收到SYN数据包后,用包含接收方的基于哈希的消息认证码(HMAC)、接收方的nonce、接收方的地址ID和标志的SYN/ACK数据包进行回复。之后,发送方用包含MP_JOIN选项和发送方的HMAC的ACK进行回复。最后,接收方发送ACK以成功建立子流。HMAC利用在MP_CAPABLE和nonce中交换的密钥。MPTCP具有连接级序列号和子流级序列号。连接级序列号是在分配给每个子流之前的数据包序列号。子流级序列号是每个子流上的数据包序列号,与常规TCP的序列号类似。子流级序列号映射到连接级序列号,这将使数据包能够通过不同的路径传输。

在标准的MPTCP连接建立阶段,需要一个初始子流来交换发送方和接收方之间的信令信息,以便通过多条路径启用数据传输。考虑到连接可能因默认路径遭受数据包丢失而受到影响,Amend等人[27]提出了一种名为RobE的解决方案,该方案使用额外的潜在子流来提高建立多路径数据传输的鲁棒性。在初始子流建立之后,启动其他子流的速度被认为是影响MPTCP性能的重要因素。在[28]中,Chen等人进行了两流MPTCP的实验。他们表明,额外流的延迟启动导致小数据的带宽利用率低。对于大数据,Wi-Fi和蜂窝网络的同时利用可能会由于缓冲区膨胀导致性能下降。此外,他们研究了缓冲区膨胀对MPTCP性能的影响,并提供了减轻严重缓冲区膨胀影响的解决方案。Nikravesh等人[29]首次通过进行真实世界实验,致力于MPTCP性能和跨层交互。他们讨论了多路径感知内容分发网络(CDN)服务器选择问题。例如,对于小文件传输,选择最小延迟的服务器是合理的。相比之下,对于大文件传输,选择最大化整体带宽的服务器更为重要。同时,基于用户试验,设计并实现了一种名为MPFlex的新的移动多路径灵活系统。MPFlex采用多路复用技术,并将调度算法与操作系统协议实现解耦。通过仅一次握手预先建立了多重连接(MCs),而不是为每个子流建立进行握手,并保持连接状态。因此,可以大幅减少启动时间。与此同时,与MPTCP相比,MPFlex的调度器实现通过从操作系统解耦而大大简化,避免了每次MPFlex软件更新都需要进行整个内核升级。MPFlex还使用策略引擎根据用户需求提供如何利用多条路径的更高级控制。Chaturvedi等人在[30]中提出了一种名为安全连接多路径TCP(SCMTCP)的MPTCP安全协议。SCMTCP有三个模块,包括带MP_CAPABLE的SCMTCP(SCMTCP_MPC)、带MP_JOIN的SCMTCP(SCMTCP_MPJ)和带ADD_ADDR的SCMTCP(SCMTCP_ADA)。SCMTCP_MPC生成私钥和公钥。在初始子流建立阶段,公钥将与MP_CAPABLE选项一起交换。SCMTCP还使用第三方证书颁发机构以确保公钥的交换成功。SCMTCP_MPC旨在保护MPTCP免受中间人攻击。在将新子流添加到现有MPTCP连接时,SCMTCP_MPJ也生成唯一密钥,并与MP_JOIN一起交换密钥信息。SCMTCP_MPJ旨在保护MPTCP免受拒绝服务攻击。同样,SCMTCP_ADA也生成唯一密钥,并与ADD_ADDR一起交换它。

图2. 多路径TCP初始子流握手和后续子流握手。

如前所述,提高吞吐量是MPTCP的主要目标之一。Fakhimi等人[31]提出了一种基于Q学习的MPTCP算法。主要思想是找出一种策略,根据不同的网络条件选择最佳的接口和拥塞控制方法的组合,以最大化整体吞吐量。基于Q学习算法,发送方决定是使用单路径还是多路径进行数据传输。讨论了诸如机会性链接增加算法(OLIA)[32]、Cubic[16]和Westwood[33]等拥塞控制机制。在[34]中,Jin等人提出了一种基于吞吐量预测和可用带宽的MPTCP路径选择方法。首先,他们研究了路径特性对MPTCP吞吐量的影响。然后他们分析了不良路径严重影响MPTCP性能的原因。他们认为,当最佳单路径足够时,不必使用MPTCP。这是因为在这种情况下,通过聚合多条路径的带宽,由于TCP友好性要求,带宽的改进将非常有限。此外,低效路径可能由于它们的较长RTT和较高的丢包率,对整体吞吐量产生负面影响。然而,这项研究使用了一种静态方法,需要进一步研究将这一理念应用于动态环境中。MPTCP向应用程序暴露了标准套接字API。然而,一些应用程序未能完全管理多条路径。为了克服这一限制,Hesmans等人[35]提出了一个MPTCP路径管理器,使应用程序能够控制MPTCP的多条路径。路径管理器被分为数据平面和控制平面。数据平面保留在内核中进行数据传输。控制平面用于管理子流。提出了一种新的进程间通信机制,以增强应用程序与MPTCP内核之间的交互。该机制充当桥接,连接内核路径管理器与在用户空间运行的子流控制器。这为通过子流控制器控制不同路径带来了极大的便利。近年来,语音识别技术取得了显著进步,并被应用于许多设备,如车载导航和智能手机。在[36]中,Tran等人研究了在MPTCP环境中语音激活应用程序的性能,利用基于容器技术的MONROE平台。为了满足MONROE平台的限制,他们将MPTCP Linux代码移植到Linux内核库中。同时,由于大多数流行的语音识别系统是封闭源代码,他们修改了iperf3以克服这一限制。结果表明,MPTCP在提高语音激活应用程序的性能方面发挥了作用。由于传输延迟是语音识别的关键性能参数,它更容易受到单路径TCP网络条件的影响。在MPTCP中,调度器可以将数据传输从信号强度弱的子流转移到信号强度强的子流。除了MPTCP,还有一些其他可以实现多路径传输的替代方案,如多路径QUIC(MP-QUIC)[37]和数据报拥塞控制协议的多路径传输模型(MP-DCCP)[38]。MP-QUIC是QUIC的扩展,它在一个QUIC连接上启用多路径传输。在[37]中,Quentin等人实现了一些实验,并表明MP-QUIC在有损失和无损失的场景中都优于MPTCP。然而,MP-QUIC的有效性需要在各种场景中进一步验证。与UDP类似,数据报拥塞控制协议(DCCP)是一种位于IP层之上的传输层协议。它包括拥塞控制机制,以及接收方在接收数据包时的确认(ACK)。然而,发送方不会重传丢失的数据包。DCCP非常灵活,它甚至可以在传输过程中切换其选项和特性。多路径数据报拥塞控制协议(MP-DCCP)基于DCCP,并支持使用不同的拥塞控制算法。与UDP类似,MP-DCCP不考虑重传。Amend等人在[38]中提出了一个与IP兼容的异构接入网络的多路径框架,利用MP-DCCP。该框架通过将虚拟网络接口与MP-DCCP集成实现了IP兼容性。MP-DCCP支持通过多个DCCP隧道同时进行多路径传输。MP-DCCP基于丢包率、带宽和往返时间来测量每个隧道的容量,并调度从虚拟网络接口进入的数据跨不同的隧道。应用了调度模块和重排序模块来调整MP-DCCP的隧道延迟差异。

2.3. 单路径TCP与MPTCP的比较

为了证明MPTCP的优势,许多研究对单路径TCP(SPTCP)和MPTCP的性能进行了比较。最初,MPTCP旨在提高数据中心通信的效率。在[39]中,Raiciu等人提出了一种在数据中心网络中用MPTCP替代TCP的方法。他们研究了MPTCP的每个参数如何影响网络性能,并将MPTCP的性能与TCP进行了比较。影响指标包括网络拓扑、子流数量、流量矩阵和拥塞控制。首先,结果表明MPTCP可以在VL2和FatTree网络拓扑中分别使用两个子流和八个子流实现90%的带宽利用率。其次,实验表明子流数量也会影响吞吐量性能。至少对于排列流量矩阵,八个子流足以实现90%的吞吐量利用率。还研究了不同拥塞控制机制对网络性能的影响。他们将MPTCP的链接拥塞控制机制与未耦合的TCP和等权重TCP(EWTCP)进行了比较。最后,他们在双宿主FatTree(DHFT)场景中评估了MPTCP的性能,这是FatTree拓扑的双宿主变体。结果表明,MPTCP不仅提高了吞吐量,而且以相同的成本提高了鲁棒性。Chen等人[40]进行了Web流量测量,比较了Wi-Fi和蜂窝网络上单路径TCP和MPTCP的性能。由于不同的Web流量可能有不同的流量负载,他们努力分析网络因素和应用级性能之间的关系。他们考虑了具有不同文件大小的文件下载流量,具体为8 KB、64 KB、512 KB、4 MB、8 MB、16 MB和32 MB。当Wi-Fi是默认路径时,MPTCP的下载性能与SPTCP相比没有明显的改善。对于小文件下载场景(例如64 KB大小),通过Wi-Fi的单路径提供了最佳性能。相反,对于稍长流量,通过LTE的单路径成为最佳选择。原因是Wi-Fi具有短RTT和高丢包率,而蜂窝网络具有低丢包率。小文件可以很快通过Wi-Fi完成。然而,当文件大小变大时,由于Wi-Fi数据包的高丢包率,重传率将增加。在这种情况下,由于其低数据包丢失率,蜂窝网络将带来更好的性能。对于4路径MPTCP,小文件可以快速通过两个Wi-Fi子流完成,而不需要利用蜂窝通信。同样,当文件大小变大时,蜂窝将发挥主导作用。还评估了许多因素对延迟的影响。这些因素包括子流数量、拥塞控制器、背景流量和每个流的开始时间。IEEE 802.11p是一种众所周知的车辆对车辆通信方法,类似于Wi-Fi。另一方面,车辆也可以通过蜂窝网络相互通信。因此,这项研究的发现可以用于设计车载环境中文件传输和视频流的新MPTCP方法。在[41]中,Deng等人通过进行真实世界实验比较了Wi-Fi和LTE的传输性能。在实验中,750名用户在180天内使用了来自美国七个城市16个不同国家的众包移动应用程序。结果表明,在相当长的时间内,LTE优于Wi-Fi,因为Wi-Fi性能容易受到信号质量或用户密度的影响。他们还比较了美国20个不同地点的七个城市中Wi-Fi或LTE上MPTCP与TCP的性能。对于短流程,常规TCP的更快链接优于MPTCP性能。为了缩短小尺寸数据的传输时间,对于MPTCP来说,选择适当的通信路径至关重要。原因是,正如[40]所分析的,对于短流程,传输可以很快通过更快的常规TCP链接完成。因此,MPTCP对传输性能的影响有限。情况与MPTCP类似。为了快速完成传输,选择正确的路径非常重要。虽然对于大数据流程,选择主路径也很重要,但应用正确的拥塞控制以增加带宽更为重要。在这项工作中,只使用了耦合和解耦拥塞控制机制。另一方面,在极端场景中,例如高度异构的网络,TCP优于MPTCP。因此,基于网络环境做出正确的决策,是否应用MPTCP以及使用哪些路径非常重要。还分析了一些移动电话应用程序以补充流程级分析。Han等人[42]进行了实验,比较了MPTCP和SPTCP上HTTP和SPDY的性能。结果是SPDY从MPTCP中受益更多。SPDY协议是基于多路复用技术开发的。然而,他们也发现MPTCP并不总是为移动Web应用程序带来性能改进。一些浏览器,如Chrome,在HTTP上使用MPTCP时表现甚至更差。在移动场景中,如果使用SPTCP,当终端主机移动到接入点覆盖区域之外时,IP地址需要更改。正在进行的连接将被停止或重置。如果发生重置,未完成的数据将被丢弃。然而,MPTCP可以解决移动环境中的断开连接问题[43,44]。另一方面,移动场景中的信号强度不稳定。可能会频繁发生数据包丢失,这将导致带宽使用不足。这是因为拥塞窗口无法达到完全利用状态。在MPTCP中,可以通过将流量转移到信号强度更强的路径上来减轻这种现象。

在移动场景中,由于车辆的持续移动,网络拓扑不断变化,这使得维持稳定的网络连接变得困难。因此,需要设计高效的路由协议来提供稳定的通信。由于上述挑战,一个能够以低开销提高通信效率的新MPTCP架构非常有趣。在本文中,我们对MPTCP的技术挑战和现有解决方案进行了调查,并对MPTCP在车载网络中的实施进行了讨论。我们还简要介绍了车载网络中的多路径路由,这是在高度移动环境中实现多路径数据传输的基础。

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

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

相关文章

通知:全国135G大流量卡要统一下调至80G,大家抓紧下单!

通知:全国135G大流量卡要统一下调至80G,大家抓紧下单! 接运营商最新通知!! 7月27日起,全国互联网电话流量卡产品市场迎来了新一轮的调整,超过135G的流量卡将陆续下架,现有大流量卡流…

谷粒商城实战笔记-92~96-商品发布和查询

文章目录 Spu列表检索接口。Sku列表检索接口。仓库列表接口。问题记录 这一篇包含如下内容: 92-商品服务-API-新增商品-商品保存其他问题处理93-商品服务-API-商品管理-SPU检索94-商品服务-API-商品管理-SKU检索95-仓储服务-API-仓库管理-整合ware服务&获取仓库…

蚓链数字化营销系统:“爆省”!“爆赚”!“爆值”!“爆快”!“爆增”!“爆享”!

随着信息技术的飞速发展和消费者行为的深刻变化,数字化营销已成为企业在市场竞争中取得优势的关键手段。蚓链数字化营销系统凭借其创新的功能和策略,为企业带来了一系列“爆”优势! “按效果付费--信息化建设费用爆省”! “按效果…

卷积神经网络(五)---图像增强的方法

前面的部分专注于卷积神经网络的层结构介绍,同时还介绍了到目前为止比较出名的卷积神经网络,接着使用比较复杂的卷积神经网络提高了 MNIST 数据集的准确率。下面将从另外的角度——图像增强的方面入手,提高模型的准确率和泛化能力。 一直以来…

Android 系统与SDK和JDK版本对照表

Android 系统与SDK和JDK版本对照表 传说中的兼容问题是指在高版本 SDK 平台开发的软件,可能在低版本 Android 系统中运行时出现各种问题。而低版本 SDK 开发的软件在高版本 Android 系统中运行时基本没有兼容问题的。 Android版本SDK/API版本JDK版本备注Android 14…

Django的响应对象

【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django的请…

react中zuStand状态管理工具使用

一、zuStand的基本使用 1.安装工具 npm install zustand 2.新建文件 在src下新建store文件夹,在store文件夹下新建zuStand.js文件 3.配置zuStand.js // 1.引入创建方法 import { create } from "zustand";// 2.创建store const useStore create((s…

hive 中编写生成连续月sql

记录一下 sql 编写生成从一个确定的起始月份到当前月份的连续月份序列 SELECT substr(add_months(table1.start_dt,table2.pos),1,4) AS INDICT_YEAR,substr(add_months(table1.start_dt,table2.pos),1,7) AS INDICT_MON FROM (SELECT 2024-01-01 AS start_dt,substr(CURRE…

vue3+cesium创建地图

1.我这边使用的是cdn引入形式 比较简单的方式 不需要下载依赖 在项目文件的index.html引入 这样cesium就会挂载到window对象上面去了 <!-- 引入cesium-js文件 --><script src"https://cesium.com/downloads/cesiumjs/releases/1.111/Build/Cesium/Cesium.js"…

【云原生】Kubernetes中的定时任务CronJob的详细用法与企业级应用案例分享

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

数据库安全:MySQL文件权限的安全问题和解决方案

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们需…

Java8新特性之Stream-Map

Map一些新方法的具体使用案例 1、getOrDefault:default V getOrDefault(Object key, V defaultValue) package com.qbb.threadpool;import java.util.HashMap; import java.util.Map;/*** author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)* version 1.0* date…

从功能出发:优化超市商品陈列,助力销售额提升

随着时代的发展&#xff0c;竞争的加剧&#xff0c;人们的生活节奏加快&#xff0c;时间观念越来越强。在这种情形下&#xff0c;作为超市&#xff0c;怎样为顾客提供一个舒适方便的购物环境&#xff0c;尽可能让顾客逛完整个卖场&#xff0c;满足一站式购足呢&#xff1f;除了…

外卖项目day10---缓存商品/Spring Cache初学、购物车功能

缓存菜品&#xff0c;只需要在DishController中修改一下代码即可 /*** 菜品管理*/ RestController RequestMapping("/admin/dish") Api(tags "菜品相关接口") Slf4j public class DishController {Autowiredprivate DishService dishService;Autowiredpri…

【前端面试】七、算法-递归

遍历方法总结 链式调用 数组的很多操作可以构成链式操作&#xff0c;类似这样的格式&#xff1a;…map().filter(…).sort(…).map(….)链式操作就是对象方法返回类型是自身的。比如map是属于数组的方法&#xff0c;它返回数组&#xff0c;所以构成了链式操作优势&#xff1a;…

The Llama 3 Herd of Models 第4部分后训练的全文

Llama 3前三部分包括介绍、总体概述和预训练https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501 4 Post-Training 后训练 我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在…

Null Pointer Exception: 如何快速定位和修复?️

Null Pointer Exception: 如何快速定位和修复&#xff1f;&#x1f4a1;&#x1f6e0;️ Null Pointer Exception: 如何快速定位和修复&#xff1f;&#x1f4a1;&#x1f6e0;️摘要引言正文内容什么是Null Pointer Exception&#xff1f;&#x1f914;NPE的常见原因&#x1f…

使子查询可行

使用 子查询 时&#xff0c;行为或要求可能不会保存为普通查询。 此查询有效&#xff1a; 但是&#xff0c;作为子查询&#xff0c;它不再起作用&#xff1a; 原因是子查询需要别名&#xff1a;当我们添加它时&#xff0c;原来的错误消失了&#xff0c;但又出现了新的错误&…

springboot集成thymeleaf实战

引言 笔者最近接到一个打印标签的需求&#xff0c;由于之前没有做过类似的功能&#xff0c;所以这也是一次学习探索的机会了&#xff0c;打印的效果图如下&#xff1a; 这个最终的打印是放在58mm*58mm的小标签纸上&#xff0c;条形码就是下面的35165165qweqweqe序列号生成的&…