发明内容
为了解决现有的基于MPTCP的智能拥塞控制方法,在应用于异构网络环境时仍然存在着链路性能不稳定、可靠性低、低吞吐量的问题,本发明提供一种基于ABEA3C的多路径拥塞控制方法,其可以对异构网络中的每条路径的链路带宽进行准确判断并对链路执行提升、保持和降低等调整传输速率的决策,有效提升链路的传输速率保证链路的合理传输性,并降低链路的拥塞问题发生的概率。
本发明的技术方案是这样的:一种基于ABEA3C的多路径拥塞控制方法,其特征在于,其包括以下步骤:
S1:构建异构多子流网络;
在异构多子流网络的sender端和receiver端之间存在多条链路;
S2:基于深度学习模型A3C,构建异构多子流网络中传输数据时的调度模型;
所述调度模型包括:STATE模块、Action模块和Reward模块;
所述STATE模块在每一次数据包进行传输后,记录当前各链路状态;所述链路状态包括:链路的带宽、拥塞窗口、往返时延、空余带宽、丢包率;
所述Action模块对每一条链路的数据传输做出决策action;Action模块的动作包括:正、负、零,分别表示提升链路传输速率、降低链路传输速率和不改变链路传输速率;
所述Reward模块在action的每一次改善链路传输速率决策后,根据链路状态对Action模块做出的决策进行评价,生成决策评价;
S3:基于所述Action模块,控制每条所述链路发送数据;
S4:在每一次数据包进行传输完成后,基于所述STATE模块记录当前各链路状态Qk i和链路带宽BWk i:
Qk i=[BWk i,Cwndk i,RTTk i,SEk i,PLRk i]
BWk i=[ BW1 1, BW1 2, BW1 3, ..., BWk-1 i-1,BWk i]
其中,n为网络中存在的链路总数,i为链路编号,k为传输的次数,i的范围为0~n;
BWk i是子流i在k次传输时的链路带宽,Cwndk i为子流i在k次传输时的拥塞窗口,RTTk i为子流i在k次传输时的往返时延,SEk i为子流i在k次传输时的空余带宽, PLRk i为子流i在k次传输时的丢包率;
S5:所述Reward模块根据当前各链路状态Qk i和链路带宽BWk i,对Action模块做出的决策进行评价得到决策评价rt:
;
U(i,t)为Action模块在t时间段内对链路i做出的决策评价结果;N为t时间段内的子流的总数;
S6:在数据包传输的过程中,抓取每一条链路的链路信息,并计算得到所述链路状态Q;
Q的计算方法为:
;
Qk i为链路i在k次传输时的网络状态实际值,i为链路编号,k为传输的次数,i的范围为0~n,n为网络中存在的链路总数;α为当前链路传输完成的数据包数量;
Cwnd为当前时刻的拥塞窗口值;
S7:对所述链路状态Q进行归一化处理:
当Qk i值大于1时,将Qk i=1;
Q值大于0小于0.5时,将Qk i=-1;
Q值大于0.5小于1时,将Qk i=-0;
S8:基于所述链路状态Q,对当前链路的带宽BWk i进行重新估计;
;
其中,BWk i是子流i在k次传输时的链路带宽;packet为每个数据包的大小动态值;
ηk的计算方法如下:
;
其中,ρk为链路带宽增益,RTT为数据传输往返时间,△RTT为第k-1次数据传输往返时间和第k次数据传输往返时间的差值;
S9:基于A3C模型的critic,基于所述链路状态Q、当前链路的带宽BWk i和决策评价rt对Action模块的决策进行评判;
S10:Action模块基于critic的评价结果,决定链路的下一次传输速率,并采取改善action;
S11:循环执行步骤S4~S10,实现对异步网络的各个链路的实时调度。
其进一步特征在于:
所述链路带宽增益ρk的计算方法为:
;
其中,每一条链路对应一个子流,N为t时间段内的子流的总数;Qk i为链路i在k次传输时的网络状态实际值;Qmax i为链路i在数据传输过程的历史数据中,链路状态的计算最大值;
所述Action模块的决策中,首次数据包传输随机选择链路分配,链路传输速率随机产生。
本申请提供的一种基于ABEA3C的多路径拥塞控制方法,将异构多子流网络中多径链路拥塞控制的离散问题,建模成为A3C可解决的模型问题,基于A3C模型中的智能体根据receiver端返回的数据和Reward返回的值进行强化学习,结合链路状态评判准则,即链路状态Q值,让Action模块在每一次改善链路传输速率均为正确的改善,有效提升链路的传输速率保证链路的合理传输性,并极大地降低了链路的拥塞问题发生的概率。
具体实施方式
异构多子流网络中的链路数据发送为离散事件,所以本实施例中,基于NS3(Network Simulator version 3)平台上对本方法运行仿真场景进行搭建,如图1所示为运行本方法的仿真环境。网络拓扑包括发送端(sender)、接收端(receiver)和四个路由节点,其中send-point为发送端包含的IP地址为:10.0.0.1和10.0.0.2;receive-point为接收端,IP为:10.0.0.7,路径管理方式为MPTCP的默认机制,路径链接为:路径一为10.0.0.1->10.0.0.7;路径二为10.0.0.2->10.0.0.7。
本方法创新性地将A3C模型应用于在异构多子流网络中降低链路的拥塞问题的场景中,对A3C模型进行改进,提出了多路径协作传输数据调度算法(以下简称:ABEA3C),有效地改善了链路的传输速率的调整问题。
如图3所示,A3C(Asynchronous Advantage Actor-Critic, 异步优势演员-评论家算法)是一种异步的基于优势函数的Actor-Critic并行学习算法:Actor以策略为基础,通过奖惩信息来进行调节不同状态下采取各种动作的概率;Critic是以值(价值函数)为基础的学习网络,可以计算每一步的奖惩值。Actorhe 和Critic相结合,Actor来选择动作,Critic告诉Actor选择的动作是否合适。在这一过程中,Actor不断迭代,得到每一个状态下选择每一动作的合理概率,Critic不断迭代,不断完善每个状态下选择每一个动作的奖励值。
ABEA3C算法在发送端和接收端之间存在多条路径,如图2所示,MPTCP sender向MPTCP receiver发送数据,其工作过程概述为:
首先,数据被分成数据包存储于sendbuffer中,等待ABEA3C算法的Actor Network结合MPTCP receiver返回的参数,即:当前各链路状态:当前子流i在k次传输时的链路带宽BWk i、拥塞窗口Cwndk i、往返时延RTTk i、空余带宽SEk i和丢包率PLRk i,再结合计算出的Q值、BW值和reward值,采取action改善链路的传输速率。其中,首次数据包传输时,随机选择链路分配,链路传输速率随机产生;
其次,MPTCP receiver端接收到数据包,ABEA3C算法中的Reward模块对链路状态进行计算Q值,Critic根据MPTCP receiver返回的当前各链路状态参数对Actor的action进行评判生成决策评价rt;最后将生成的决策评价rt、Q值和BW值返回给Actor Network对其进行参数更新,促使其正确的提升、保持和降低对应链路的传输速率。
图3中,Actor通过获取Critic的决策评价rt和Q值更新Policy,Critic对Actor的action进行评判生成决策评价rt,Environment(环境)是对链路的状态进行评判生成Q值和BW值,A3C深度强化学习算法的训练模型如图4所示,通过创建多个并行的环境,虚拟多个线程,每个并行环境同时运行Actor-Critic,对智能体(worker)进行训练,加快A3C算法的收敛速度。并行中的智能体(worker)互不干扰,而主结构(GlobalNetwor)的参数更新通过副结构上传各并行智能体的更新梯度实现。
本申请提供的一种基于ABEA3C的多路径拥塞控制方法,其具体包括以下步骤。
S1:使用图1所示的仿真环境,基于MPTCP协议,构建异构多子流网络;
在异构多子流网络的sender端和receiver端之间存在多条链路。
S2:基于A3C模型,构建异构多子流网络中传输数据时的调度模型。
调度模型包括:STATE模块、Action模块和Reward模块。
STATE模块在每一次数据包进行传输后,记录当前各链路状态;链路状态包括:链路的带宽、拥塞窗口、往返时延、空余带宽、丢包率。
Action模块对每一条链路的数据传输做出决策action; Action模块中,每一次数据传输时间为t时,在t时间段的动作:
At=[At1,...,Atk]
其中,t为每一次数据传输时间段,Atk是在每个t 时间段时改变当前链路传输速度;k为t时间段内的动作次数;
Action模块的动作包括:正、负、零,分别表示提升链路传输速率、降低链路传输速率和不改变链路传输速率;ABEA3C分别在每个时间t对N个子流的执行上述操作,最终实现:链路状态优的链路提升传输速率,链路状态差的链路降低传输速率,链路状态中的链路传输速率保持不变。
Reward模块在action的每一次改善链路传输速率决策后,根据链路状态对Action模块做出的决策进行评价,生成决策评价rt。
S3:基于Action模块,控制每条链路发送数据;在Action模块的决策中,首次数据包传输随机选择链路分配,链路传输速率随机产生。
S4:在每一次数据包进行传输完成后,基于STATE模块记录当前各链路状态Qk i和链路带宽BWk i:
Qk i=[BWk i,Cwndk i,RTTk i,SEk i,PLRk i],
BWk i=[ BW1 1, BW1 2, BW1 3, ..., BWk-1 i-1,BWk i]
其中,n为网络中存在的链路总数,i为链路编号,k为传输的次数,i的范围为0~n;
BWk i是子流i在k次传输时的链路带宽,Cwndk i为子流i在k次传输时的拥塞窗口,RTTk i为子流i在k次传输时的往返时延,SEk i为子流i在k次传输时的空余带宽, PLRk i为子流i在k次传输时的丢包率。
本方法的最终目标就是改善链路的传输速率,缓解链路拥塞问题。所以在对链路带宽BWk i进行估计之前,使用ABEA3C算法的Reward模块对Action模块做出的决策进行评价。
S5:在每一次数据包传输时,Reward模块根据当前各链路状态Qk i和链路带宽BWk i,对Action模块做出的决策进行评价得到决策评价rt:
;
U(i,t)为Action模块在t时间段内对链路i做出的决策评价结果。
并将结果返回给ABEA3C算法中的智能体,让其下次提升正确改善链路的传输速率的概率,即提升优质链路的传输速率,保持正常链路的传输速率,降低劣质链路的传输速率。同时通过计算链路状态Q值,反应当前链路的状态优劣,目的是保证Action每次都能准确的改善链路的传输速率。
S6:在数据包传输的过程中,抓取每一条链路的链路信息,并计算得到链路状态Q。
本申请中ABEA3C算法的核心就是链路状态的估计,发送端使用ABEA3C算法,结合链路的状态参数:BWk i,Cwndk i,RTTk i,SEk i,PLRk i,对链路状态进进评判,链路状态通过Q值反映。
Q的计算方法为:
;
Qk i为链路i在k次传输时的网络状态实际值,i为链路编号,k为传输的次数,i的范围为0~n,n为网络中存在的链路总数;
α为当前链路传输完成的数据包数量;Cwnd为当前时刻的拥塞窗口值。
α*RTT为链路已传输的数据包占用的总带宽,packet*RTT*k:为k次传输,所有数据包占用链路的总带宽,二者之差就是链路当前的已用的带宽。
S7:对链路状态Q进行归一化处理;
Qk i的计算公式中,BWk-1 i+packet*RTT*(α-k)这一项的计算结果为子流i在k次传输时的空余带宽SEk i,对Q值进行归一化的时候,空余带宽SEk i越大则Qk i的值越大,根据空余带宽SEk i的占比将链路状态Q进行归一化处理,具体如下:
当Qk i值大于1时,将Qk i=1;
Q值大于0小于0.5时,将Qk i= -1;
Q值大于0.5小于1时,将Qk i=-0。
S8:基于链路状态Q,对当前链路的带宽BWk i进行重新估计。
本申请中的ABEA3C算法的基础是链路带宽估计,链路带宽估计的目的是准确判断出链路当前的拥塞状态,优化多路径传输协议的拥塞控制算法,进而保证链路高效利用网络带宽资源进行传输。
在数据传输的过程中,数据量的大小不做规定,每个数据包的大小为动态值packet,packet取值为1KB、5KB和10KB,MPTCP sender端发送数据给MPTCP Receiver端,接收端返回当前链路的状态参数:BWk i,Cwndk i,RTTk i,SEk i,PLRk i。ABEA3C算法中,通过链路带宽估计判断出链路是否具备更多的网络带宽资源,链路带宽判断越准确,链路的网络带宽资源利用率越高。
;
其中,BWk i是子流i在k次传输时的链路带宽;packet为每个数据包的大小动态值。
即,本方法的模型中,Q值大于1时,表示空余带宽SEk i较多,链路状态最好,重估后的BWk i对应为增加当前链路的传输速率;
Q值大于0小于0.5时,表示链路状态最差,空余带宽SEk i较少,处于拥塞状态,则重估后的BWk i对应为降低当前链路的传输速率;
Q值大于0.5小于1时,表示空余带宽SEk i较少处于可接受状态,链路状态正常,则重估后的BWk i对应为不改变当前链路的传输速率。
本方法通过A3C算法reward模块对链路采取的action进行评分判定,并更新critic网络,从而提升的评判准确度,从而动态估计的ABEA3C更加稳定。
其中,ηk取值决定着算法带宽估计的准确度,经过大量修改参数的仿真实验得知,当设定的ηk值较大时,算法对带宽的估计值趋近于稳定值,且不会出现正常的带宽值波动,与实际链路的带宽值不符。当设定的ηk较小时,算法对带宽的估计值与理论计算值相关性较小,且带宽的估计值波动较大。在实际链路中,ηk与链路传输时的带宽、拥塞和时延等参数相关,因此ηk的计算不再固定,设置为与参数ρk相联系。
ηk的计算方法如下:
;
其中,RTT为数据传输往返时间,△RTT为第k-1次数据传输往返时间和第k次数据传输往返时间的差值;
ρk为ABEA3C算法根据传输链路的往返时延、历史最优链路状态和当前链路状态动态计算的链路带宽增益,伴随着链路状态和时间进行动态变化。当链路进行建立连接时,发送端与接收端的连续ACK确认,链路中可能会存在一个RTT因此ρk的最小值为一个RTT。
链路带宽增益ρk的计算方法为:
;
本方法中定义的ρk能够实现对持续变化的动态性,仅与链路的状态相关,因此具备抗干扰性。其中,每一条链路对应一个子流,N为t时间段内的子流的总数,通常子流和链路是一一对应的,n和N的值相等;Qk i为链路i在k次传输时的网络状态实际值;Qmax i为链路i在数据传输过程的历史数据中,链路状态的计算最大值。
S9:基于A3C模型的critic,使用链路状态Q、当前链路的带宽BWk i和决策评价rt对Action模块的决策进行评判;
S10:Action模块基于critic的评价结果,决定链路的下一次传输速率,并采取改善action;
S11:循环执行步骤S4~S10,实现对异步网络的各个链路的调度。
综上,本方法中包括三个步骤:链路带宽估计、链路优劣准则和链路传输速率改善。
链路带宽估计:在数据包传输的过程中,抓取n条链路的链路信息,带宽、拥塞窗口、往返时延、空余带宽、丢包率,计算当前链路状态,作为A3C算法的REWARD,并使用REWARD结果,对ABEA3C-MPTCP Critic 网络进行策略更新。
链路优劣准则:根据链路带宽估计计算得到链路状态,评判当前链路是否处于拥塞状态,若处于拥塞状态,则降低传输速率,反之则增加或不改变传输速率。
链路传输速率改善:链路的拥塞控制过程中,通过深度强化学习A3C算法中的智能体对n条链路进行传输速率action,即提升链路传输速率、降低链路传输速率和不改变链路传输速率。
图10为算法的整体伪代码图。对算法的输入输出、链路Q值计算公式、BW值计算公式和A3C相关更新公式进行可视化的总结。本方法对应到图10中,1~17行为第一个线程的执行内容,其中,第1~7行,为ηk、ρk和Qk i的计算过程,第8行~16行为Qk i的归一化处理过程;第17行为BWk i计算过程。
18行之后,为第二个线程,深度学习算法A3C,基于BWk i、Qk i的结果,在Action模块中执行动作At(图中记作at)。BWk i、Qk i为基于上一时刻的传输状态和结果计算得到的数据,深度学习算法A3C的智慧体基于BWk i、Qk i的结果,根据子流编号i,选择对应链路i,对链路i的下一个时刻的发送速率进行调整。
18行之后,具体的A3C算法中的rt和at的计算过程,智能体执行过程,基于现有技术中A3C的方法实现,本处不再展开。
使用本发明的技术方案后,首先MPTCP sender端向MPTCP receiver端发送数据,数据被分成若干各数据包并放置在senderbuffer中,第一轮链路传输数据包结束后,MPTCPreceiver端接收到一轮发送数据包,并返回当前链路的状态参数:BWk i,Cwndk i,RTTk i,SEk i,PLRk i反应链路状态的数据;其次,PDAA3C算法根据已有数据,Critic对PDAA3C此次Action模块做的决策进行评判并返回Reward值,同时Reward模块计算当前链路的状态Q值并更新估计链路的带宽BW,Action模块根据Reward值、Q值和更新的链路带宽BW进行学习,并知晓本次决策的优劣;最后,ABEA3C中Action模块进行新一轮的链路传输速率改善的决策。
如图5和图6为链路1和链路2的带宽利用率在不同拥塞控制算法下的比对图,与MPTCP-Vegas和MPTCP-RL和理论最优值进行对比。为了获得更高的带宽利用率,在多径传输仿真实验中,MPTCP-ABEA3C结合子流质量评价标准和DRL的A3C来选择需要改善传输速率的链路。因此,MPTCP-ABEA3C能够正确的改善链路的传输速率,提升网络带宽的利用率,进而提升链路吞吐量。
仿真结果如图5和图6所示,MPTCP-ABEA3C算法的两条链路带宽利用率都优于MPTCP-RL 20%和MPTCP-Vegas45%,接近理论上的最优吞吐量。即,本发明提出的多路径协作传输数据调度算法ABEA3C相比于传统Vegas算法和RLDS人工智能算法,在相同的丢包率和数据包大小情况下,链路带宽的利用率增加了45%左右和20%左右,吞吐量在数据包为1KB和5KB时,增加40%左右,在数据包大小为10KB时增加5%。
图7和图8为链路1和链路2吞吐量在不同拥塞控制算法下的比对图。与MPTCP-Vegas和MPTCP-RL和理论最优值进行对比。为了获得更高的链路吞吐量,在多径传输仿真实验中,MPTCP-ABEA3C结合子流质量评价标准和DRL的A3C来选择需要改善传输速率的链路。仿真结果如图7和图8所示。由于采用了最优调度和最优子流质量评价标准,MPTCP-ABEA3C的链路吞吐量优于MPTCP-Vegas和MPTCP-RL。
图9分别在数据包大小为1KB,5KB,10KB的情况下的传输系统的总吞吐量,当数据包大小为1KB时,该算法的总吞吐量远远高于其它两种拥塞控制算法;当数据包大小为5KB时,该算法的总吞吐量与其余两种算法的吞吐量较为接近。