多路径TCP(MPTCP)研究概述
如今,大多数用户设备都有多个接口,服务器机器也是多宿主的。同时,为了确保可靠性,数据中心网络利用额外的基础设施在任意两台服务器之间提供许多冗余路径。然而,传统的单路径TCP无法有效利用这些多条路径,因为它们未能有效地耦合数据流。为了克服这个限制,开发了多路径TCP(MPTCP)。MPTCP允许端主机通过多条路径传输单一数据流。它标准化并实现了一个可部署的TCP多路径扩展。如图1所示,端主机可以在M
翻译自《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在车载网络中的实施进行了讨论。我们还简要介绍了车载网络中的多路径路由,这是在高度移动环境中实现多路径数据传输的基础。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)