张孟康,赵海涛,于洪苏,茅天奇,朱洪波
南京邮电大学通信与信息工程学院,南京210003
随着新的网络接入技术的发展,车辆上提供了多种网络接口,使得传统的车联网逐渐向车载异构网络转变.车载异构网络就是将多种不同类型的网络融合构成的通信系统运用到车载环境中,车辆终端具备多种网络接口模块,可以接入组成异构车联网系统的任何一种网络,多种网络之间协作互助,很大程度上满足了车载环境下的通信需求与车辆用户业务多样性的要求[1].
多路径传输控制协议(multipath transmission control protocol,MPTCP)是互联网工程组(IETF)在2009年提出的一种协议[2],它是传输控制协议(TCP)的扩展协议,允许同时使用多个路径进行数据传输,能够提高资源利用率.MPTCP使用TCP作为子流传输,每条路径代表1个TCP子流[3].MPTCP通过提高网络资源使用效率获得更高的吞吐量,将MPTCP应用到车载异构网络中能够提高传输性能和吞吐量.使用MPTCP主要挑战之一是接收缓冲区阻塞问题[4].MPTCP默认采用的数据调度算法是Round-Robin算法,该算法通过轮询方式依次将数据发送到各条子流上,没有考虑子流之间的差异[5].而车载异构网络中路径之间的延迟、带宽、负载、丢包率等因素互不相同,仅简单采用Round-Robin算法,在使用这些路径传输资源时将会导致数据包乱序,这些乱序数据包堆积在有限的接收缓冲区中,就会引起接收缓冲区阻塞现象,从而严重影响车辆之间的通信性能.在这种情况下,设计一个有效的多路径调度优化方法来避免发生接收缓冲区阻塞现象并提高车载异构网络的传输性能是非常重要的.
MPTCP接收缓冲区阻塞问题是近年来的研究热点.许多学者和研究机构试图通过数据调度、分割接收缓冲区、数据包重排序、重传、路径管理等方法减缓接收缓冲区阻塞,从而提高系统吞吐量.
文献[2]提出使用MPTCP传输的MA-MPTCP移动感知多媒体数据传输算法,有效提高了传输的稳定性和公平性,并减缓了接收缓冲区阻塞问题.文献[6]对MPTCP接收缓冲区的阻塞问题进行了研究,提出了一种避免冗余重传的方案,能够防止接收缓冲区阻塞,提高系统整体吞吐量.然而,该方案需要对每个接口预先建立多个连接,容易造成资源浪费.文献[7]针对MPTCP接收缓冲区阻塞问题,提出了一种名为MPTCP-MA2的数据调度策略,使用路径更加合理,但效果并不明显.文献[8]提出一种在非对称路径连接上的路径调度,可以减少接收缓冲区的无序分组并提高系统的鲁棒性.然而,该文献的仿真实验仅完成了单个流的传输,对于多流传输的效果仍未知.文献[9]研究了MPTCP中数据包重排序问题,提出了一种新的PR-R算法,该算法能够在丢包率较高的情况下提高系统的总吞吐量和路径利用率,但其内存空间占用较大,在实际应用中不方便.文献[10]将数据包重排序恢复方法与拥塞控制算法结合进行比较,能够提高路径利用率,但对于非对称链路的吞吐量提高效果不明显.文献[11]基于子流往返时间对接收缓冲区进行分割,减少了缓冲区阻塞,但并不能确保提供TCP字节流的传输.文献[12]对数据调度算法进行了研究和优化,提出一种基于传输时间和发送间隔的调度算法,提高了吞吐量的稳定性,但其实现部署较复杂.文献[13]提出一种拥塞窗口自适应算法(CWA-MPTCP),根据路径间端到端的时延差异调整拥塞窗口,有效地提高了链路上多路径传输的吞吐量.然而,该算法不适用于网络的动态变化.文献[14]针对子流的时延、丢包率、拥塞窗口和慢启动门限等,提出一种重传策略,然而该策略只有在缓冲区阻塞发生后才能执行.文献[15]提出一种基于接收缓冲区的路径管理方案,该方案实现简单,能够有效地提高MPTCP的吞吐量.但该方案进行路径选择时,仅考虑了带宽和往返时间的影响,因此选择路径时会出现偏差.文献[16]提出一种基于细粒前向预测的多路径TCP动态分组调度机制(F2P-DPS),利用TCP建模的思想来估计调度路径上的延迟和其他路径上同时发送的数据量,提高了吞吐量并减少了接收缓冲区占有率.然而,该方法未建立有效地动态网络数学模型,无法定量地分析性能.
针对上述解决缓冲区阻塞方案中存在的问题,本文提出在车载异构网络中基于路径选择和缓冲区预测的MPTCP的多路径调度优化方案.该方案易于实现,通过预估乱序数据包的数量从而停止使用不良性能路径的方式来减弱接收缓冲区阻塞问题,能够提高系统的吞吐量,最大限度地提高MPTCP的性能.
车载异构网络中存在不同的无线通信技术,车辆终端也存在不同的网络接口,进行多路径传输时,路径之间的特性差异较大.MPTCP为每个路径创建TCP子流,每一条路径对应相应的TCP子流,这些子流在接收端共享同一个接收缓冲区,而不同的路径特性会影响MPTCP的性能.为了防止缓冲区阻塞现象的发生,进而获得更高的吞吐量,应将更多的数据包安排到具有最佳特征的路径上进行传输.如果路径的性能较差,聚合带宽带来的吞吐量增量要小于RTT和丢包率所带来的吞吐量减少量,则应该放弃使用这条路径进行数据传输.本节提出一种基于吞吐量预测和可用带宽的路径选择方法,通过比较各条路径的性能,停止不良性能的子流进行数据传送.
基于RTT和丢包率的传统吞吐量模型为
式中,RTT为路径的往返时间,p为丢包率,b是由接收到的ACK确认的分组数量,令b=1.式(1)可以预测标准TCP协议下各个路径的吞吐量.
设I={1,2,………………,n}代表所有的可用路径,这些路径的参数为pathi={RTTi,pi,BWi}.其中,RTTi为可用路径i的来回往返时间,pi为可用路径i的丢包率,BWi为可用路径i的可用带宽.最大的吞吐量为
在最佳路径的可用带宽有限的情况下,则有
式中,Tk为路径k的吞吐量,BWk为路径k的可用带宽,路径k的吞吐量等于最大的吞吐量,且其吞吐量大于其可用带宽.此时,集合S0={k|Tk=Tmax且k>BWk}为初始路径选择方案.
假设Bkm是S0中可用带宽的最大值,Xmax为最佳路径的吞吐量,路径i不属于初始路径选择方案,Xi表示路径i的吞吐量,则有如下表达式:
如式(7)所示,当j/∈S0且j/=0,Δm,j表示Tmax与其他路径的吞吐量之间的差值.当j=0,Δm,j表示Tmax与各个最佳路径的最大带宽之间的差值.
令δm,j表示Xmax和Xj之间的相似性,则有
δm,j越大,Xmax与Xj越接近.其中,ζ∈[0,1]是一个区分系数,当Δmax变得太大时,ζ能够削弱Δmax的影响.这里,令ζ=0.5.
δthr是决定一个路径是否被选择的阈值.当δm,i≥δthr时,该路径被选择.当X0较大时,需要较少的路径来聚合带宽.当X0较小时,则需要较多的路径来聚合带宽.因此,令
当X0较大时,δthr也会较大,此时只会选择较少的路径;相反,当X0较小时,则会选择更多的路径.
综上所述,总体的路径选择方案为
根据这种基于吞吐量预测和可用带宽的路径选择方法,就可以选择与最佳路径相似性更高的路径,并且停止通过不良性能的路径进行数据包传输.
根据上一节提出的基于吞吐量预测和可用带宽的路径选择方法,对可用路径进行管理,提出一种基于路径选择和接收缓冲区预测(path selection and receive buffer prediction,PSRBP)的路径调度优化算法,有效地解决接收缓冲区阻塞问题,提高系统的吞吐量.将使用这种路径管理方法的MPTCP称为PSRBP-MPTCP.
如果接收缓冲区空间足够大,这时不会发生缓冲区阻塞问题,则PSRBP-MPTCP与传统的MPTCP没有差别.要使PSRBP-MPTCP能够像传统的MPTCP一样运行,则需要的接收缓冲区的大小为
式中,B表示所需的接收缓冲区大小,N为子流的数量,BWi表示第i个子流的可用带宽,RTTmax为所有子流中最大的RTT.由于车载异构网络中每条路径都具有不同的特性,因此这个接收缓冲区大小是不符合实际的.在车载异构网络中,每个接收端并不能拥有足够的MPTCP所需要的接收缓冲区大小.常规的MPTCP总是尝试使用所有可用的路径,而忽略路径的特性差异和实际可用的缓冲区大小,因此会遭受到接收缓冲区阻塞的问题.在没有足够的接收缓冲区和多个路径的不同特性的情况下,为了保证系统的吞吐量,应该使用基于路径选择和缓冲区预测的路径管理算法.
首先,提前预测缓冲区阻塞现象.当MPTCP需要的缓冲区大小超过可用接收缓冲区大小时,就会发生接收缓冲区阻塞现象.为了预测缓冲区阻塞现象,必须估计无序数据包的数量和所需的缓冲区大小[4].在子流j的RTT期间,子流i中估计的无序数据包数量为
此时,j>i.为了快速地估计无序数据包数量,假设RTT期间已经传输的数据包数量为一个传输单元.在这种假设下,Li,j表示RTTj期间在子流i中与无序数据包相关联的预期的传输单元数量.为了避免过多的传输约束,当RTTj期间的无序包数量小于RTTi期间已传输的数据包数量时,令Li,j=0.因为所提算法在每个数据包传输时都估计无序包的传输数量,因此在RTT期间,未传输的数据包数量等于子流的拥塞窗口(congestion window,CWND).在Li,j的基础上,MPTCP同时使用所有可用路径传输时所需的缓冲区大小为
式中,PAi是子流i中的未传输的数据包,MSSi是子流i上的最大报文段,N是子流的数量,子流i表示的是正在使用的子流.根据拥塞控制算法,在每个子流的RTT期间CWND是可以改变的.但因CWND的变化很难预测,本文假设所有子流的CWND在子流的RTT期间是固定的.
一旦估计到所需缓冲区大小,基于路径选择和缓冲区预测的路径管理算法就可以预测缓冲区阻塞现象.如果预测到缓冲区阻塞现象,它会发现根据上节提出的路径选择算法发现性能较差的子流,并停止通过这些子流进行传输.由于车载异构网络的拓扑结构实时变化,因此有可能错误地停止掉一些可用的路径.若可用的接收缓冲区足够大,则重新使用所有停止掉的子流发送数据.即当目的地的可用缓冲区大小超过所需的缓冲区大小的2.5倍时,则定义可用的缓冲区大小足够大.算法流程图如图1所示.
本文评估了使用基于路径选择和缓冲区预测的路径管理的MPTCP(PSRBP-MPTCP)与常规的MPTCP在车载异构网络中的传输性能.将PSRBP-MPTCP在多路径内核版0.89中实现.为了生成一个虚拟的车载异构网络环境,使用NS-3进行网络仿真,配备了4个支持MPTCP的接口,可以将数据从发送车辆传输到接收车辆,仿真路径拓扑如图2所示.两个MPTCP车辆移动终端之间有4条独立的路径,分别表示为路径A、B、C、D.路径A通过1 Mbit/s的接入带宽,传输延迟为100 ms,丢包率为0.02;路径B通过10 Mbit/s的接入带宽,传输延迟为50 ms,丢包率为0.01;路径C通过3 Mbit/s的接入带宽,传输延迟为40 ms,丢包率为0.01;路径D通过2 Mbit/s的接入带宽,传输延迟为20 ms,丢包率为0.01.
图1 系统算法流程图Figure 1 System algorithm fl ow chart
MPTCP的接收缓冲区大小设置为200 kB,路径管理方法设置为fullmesh,拥塞控制算法为reno,并禁用机会重传和惩罚方法.主要参数设置如表1所示.源和目的地通过4条不相交的路径相连,每条路径通过两个路由器相连.源端与路由器以及路由器与目的端之间的链路具有足够的性能,不会影响整体吞吐量(带宽:100 Mbit/s,延迟:1 ns).每个链路的队列类型和大小分别是Drop-Tail和100个数据包,仿真时间为100 ms.路径的主要仿真参数如表1所示.
图3显示了使用路径A、B、C、D的4路PSRBP-MPTCP的吞吐量.如图所示,子流B所在路径的带宽被充分利用,其余3条子流均受到不同程度的限制,这是因为路径选择算法认为子流B所在的路径具有最好的性能.由于使用全部的子流传输数据包会导致接收缓冲区阻塞现象,因此,PSRBP-MPTCP不会将数据包分配给性能较差的子流A和子流C所在的路径进行传输.当通过子流D传输的数据包增加时,发生接收缓冲区阻塞现象,此时子流D将被限制传输,仅通过子流B传输所有的数据包.只有一条子流进行传输时,接收缓冲区阻塞现象将消失,一旦可用的接收缓冲区大于2.5倍的预测缓冲区,便重新使用所有子流进行传输.PSRBP-MPTCP的总吞吐量大于使用单流传输的吞吐量,性能没有恶化.
图2 仿真路径拓扑图Figure 2 Simulation path topology
表1 主要路径仿真参数Table 1 Main path simulation parameters
图3 使用路径A、B、C、D的PSRBP-MPTCP吞吐量Figure 3 Throughput of PSRBP-MPTCP using path A,B,C,D
图4显示了使用路径A、B、C、D4路传统MPTCP的吞吐量.在与PSRBP-TCP使用相同特性路径的情况下,传统MPTCP的性能与PSRBP-MPTCP相比明显较差.由于传统的MPTCP不包含所提出的基于路径选择和吞吐量预测的路径管理方案,因此开始使用所有的子流进行传输,10 s时总吞吐量达到最大.随着数据包的不断传送,接收缓冲区逐渐被填满,进而发生阻塞现象.各个子流均被限制发送数据包,缓冲区阻塞现象持续发生,因此吞吐量一直处于较低水平,失去了多路径传输的意义.
图4 使用路径A、B、C、D的常规MPTCP吞吐量Figure 4 Throughput of original MPTCP using path A,B,C,D
图5和6分别使用累积曲线获得了使用路径A、B、C、D的PSRBP-MPTCP和常规MPTCP的吞吐量.从图中可以看出,在100 s内PSRBP-MPTCP和常规MPTCP的累积吞吐量均基本呈线性增长,但PSRBP-MPTCP的增长速率较快,并且100 s时所达到的累积吞吐量也超出常规的MPTCP较多,网络利用率提高.
图5 使用路径A、B、C、D的PSRBP-MPTCP累积吞吐量Figure 5 Accumulated throughput of PSRBP-MPTCP using path A,B,C,D
为了说明PSRBP算法的性能效果,本文将PSRBP算法与其他改进算法进行了比较.图7和8分别为PSRBP与MA-MPTCP、MPTCP-MA2及常规MPTCP的吞吐量和累积吞吐量的比较.如图7所示,在0~30 s阶段,RSRBP算法表现不好,与MA-MPTCP和MPTCPMA2相比优势并不明显,甚至出现了性能比其他两种算法差的情况.30 s以后,PSRBP算法趋于稳定,吞吐量明显大于其他算法.如图8所示,在0~50 s阶段,PSRBP算法与其他算法的累积吞吐量相比差别不大;在50~100 s阶段,相比于其他两种改进算法,PSRBP累积吞吐量明显提高,性能表现优异.
图6 使用路径A、B、C、D的常规MPTCP累积吞吐量Figure 6 Accumulated throughput of original MPTCP using path A,B,C,D
图7 PSRBP-MPTCP、MA-MPTCP、MPTCP-MA2和常规MPTCP的吞吐量比较Figure 7 Throughput comparison of PSRBP-MPTCP,MA-MPTCP,MPTCP-MA2,and original MPTCP
图8 PSRBP-MPTCP、MA-MPTCP、MPTCP-MA2和MPTCP的累积吞吐量比较Figure 8 Accumulated throughput comparison of PSRBP-MPTCP,MA-MPTCP,MPTCPMA2,and original MPTCP
本文针对MPTCP接收缓冲区阻塞的问题,提出一种基于路径选择和缓冲区预测的多径TCP路径调度优化的方法,来提高车载异构网络中MPTCP的吞吐量和网络利用率.所提方法会估计无序数据包的数量,从而判断出所需接收缓冲区的大小,并与实际可用的缓冲区大小进行比较,从而预测接收缓冲区阻塞现象.一旦预测到缓冲区阻塞,就会使用基于吞吐量模型和可用带宽的路径选择算法,停止通过性能较差的路径进行传输.通过这种方法,接收缓冲区阻塞问题将会减少,PSRBP-MPTCP也会比常规的MPTCP具有更好的性能,实现了吞吐量的总体提高,并提高了网络利用率.