CN118233671A - 一种基于多智能体深度强化学习的多路径视频传输方法 - Google Patents

一种基于多智能体深度强化学习的多路径视频传输方法 Download PDF

Info

Publication number
CN118233671A
CN118233671A CN202410252512.0A CN202410252512A CN118233671A CN 118233671 A CN118233671 A CN 118233671A CN 202410252512 A CN202410252512 A CN 202410252512A CN 118233671 A CN118233671 A CN 118233671A
Authority
CN
China
Prior art keywords
module
data
server
client
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410252512.0A
Other languages
English (en)
Inventor
韩彪
韩雪强
李金融
郦苏丹
赵锋
荀鹏
宋丛溪
计晓岚
梁观平
陈鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202410252512.0A priority Critical patent/CN118233671A/zh
Publication of CN118233671A publication Critical patent/CN118233671A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种基于多智能体深度强化学习的多路径视频传输方法,目的是解决当前多路径调度传输方法面对动态网络环境性能下降的问题;技术方案是构建基于多智能体强化学习驱动的MPQUIC视频传输系统;MPQUIC视频传输系统初始化并加载智能模型,在多路径调度视频过程中视频传输系统收集训练数据并综合应用对服务质量的多种需求进行模型训练;客户端的握手模块A和服务端的握手模块B进行握手,建立MPQUIC会话;客户端向服务端请求待播放的视频,服务端向客户端传输响应视频数据,客户端播放视频。采用本发明可使得调度策略更加趋向最优策略,极大提升传输的吞吐量,且在面对动态网络变化时,可以较好的满足应用需求。

Description

一种基于多智能体深度强化学习的多路径视频传输方法
技术领域
本发明涉及计算机网络传输控制领域,进一步地,本发明涉及一种基于多智能体深度强化学习的多路径视频传输方法。
背景技术
随着互联网的发展和带宽的提升,视频内容的传输需求日益增长。然而,由于网络拥塞、传输延迟和链路抖动等问题,视频流传输常常受到影响,导致视频的质量下降或者无法正常播放。传统的视频流传输采用单一路径进行传输。这种单一路径传输方式存在很多局限性,如网络拥塞时无法及时调整传输路径、传输效率低下等。为了提高视频传输的稳定性和质量,多路径传输协议应运而生。多路径传输协议通过同时利用多个传输路径来传输视频流数据,以提高传输效率和稳定性。通过在网络中建立多个传输路径,可以实现负载均衡,分散视频数据传输负荷,减轻单一路径的压力。
传统的多路径传输协议(MPTCP)已经在多个领域得到了广泛应用,但是它在某些方面仍存在一些挑战,如拥塞控制、延迟、丢包恢复等问题。为了进一步改进多路径传输协议的性能,引入了MultipathQUIC(简称MPQUIC)。MPQUIC是一种基于QUIC协议的多路径传输方案。QUIC(QuickUDPInternetConnections)是一种基于UDP的快速传输协议,它尝试通过减少握手延迟和实现更高的可靠性来改善传输性能。MPQUIC在QUIC的基础上扩展了多路径传输的能力,可以同时利用多条网络路径进行数据传输。相对于MPTCP,MPQUIC在多个方面具有独特的优势。首先,MPQUIC基于UDP协议,减少了协议开销和握手延迟,提高了传输效率。其次,MPQUIC采用了更加灵活的拥塞控制算法,可以更好地适应网络状况的变化,并且能够在不同路径上进行负载均衡,减轻网络拥塞问题。此外,MPQUIC还提供了更好的丢包恢复机制,可以快速恢复由于某个路径故障引起的丢失数据,并保证数据的完整性。在视频流传输领域,MPQUIC可以提供更好的传输性能和用户体验。通过同时利用多条网络路径,MPQUIC可以提高视频传输的带宽利用率,减少传输延迟,以及提供更好的抗丢包和抗拥塞能力。这些优势使得MPQUIC成为一种有潜力的多路径传输协议,可以用于改善视频流传输的质量和效率。
如图1所示,传统的基于MPQUIC协议的多路径调度传输架构由服务端、客户端构成,客户端上安装有视频播放器A和MPQUIC传输模块A;视频播放器A包括视频播放模块A、视频解码模块A和视频请求模块A;MPQUIC传输模块A包括握手模块A、数据发送模块A、乱序重排模块A和接收模块A;数据发送模块A包括数据流模块A、数据加密模块A、应答模块A、拥塞控制模块A和调度模块A;服务端上安装有视频播放器B和MPQUIC传输模块B;视频播放器B包括请求解析模块B、视频存取模块B和请求响应模块B;MPQUIC传输模块B包括握手模块B、数据发送模块B、乱序重排模块B和接收模块B;数据发送模块B包括数据流模块B、数据加密模块B、应答模块B、拥塞控制模块B和调度模块B。
客户端的视频请求模块A与数据流模块A相连。视频请求模块A向数据流模块A发送请求数据,请求所要播放的视频信息。
客户端的视频解码模块A与视频播放模块A、乱序重排模块A相连。视频解码模块A接收乱序重排模块A的视频数据,进行视频数据解码,将解码后的视频数据输出到视频播放模块A。
客户端的视频播放模块A与视频解码模块A相连。视频播放模块A接收视频解码模块A解码后的视频数据,进行视频播放,供用户观看。
客户端的握手模块A与服务端的握手模块B、客户端的数据加密模块A以及接收模块A相连。在传输请求数据前,客户端的握手模块A和服务端的握手模块B完成连接建立。客户端的握手模块A向服务器的握手模块B发送探测报文,探测报文包含连接参数,连接参数包括客户端支持的协议版本、连接ID、密钥。客户端的握手模块A还接收服务端的握手模块B的响应报文,验证服务端的证书和密钥的有效性。客户端的握手模块A向客户端的数据加密模块A和接收模块A发送会话信息A,会话信息A包含响应报文中的协议版本、连接ID、密钥。
服务端的握手模块B和客户端的握手模块A、服务端的数据加密模块B以及接收模块B相连。服务端的握手模块B在接收到客户端的的握手模块A发送的探测报文后,回复一个响应报文给客户端的握手模块A,该响应报文包含了确认信息、服务器证书和密钥等信息。服务端的握手模块B向数据加密模块B和接收模块B输出会话信息B。
数据流模块A与视频请求模块A、数据加密模块A相连。数据流模块A从视频请求模块A接收请求数据,根据MA个请求数据生成MA个数据流,并将MA个数据流中的数据切分成NA个数据段输出到数据加密模块A。
数据流模块B从请求响应模块B接收响应数据,根据MB个响应数据生成MB个数据流,并将MB个数据流中的数据切分成NB个数据段输出到数据加密模块B。
数据加密模块A与数据流模块A、握手模块A和调度模块A相连。数据加密模块A从数据流模块A接收切割后的数据段;数据加密模块A从握手模块A接收会话信息A;通过会话信息A中的密钥对切割后的数据段加密,之后封装成数据报文A输出到调度模块A。
数据加密模块B与数据流模块B、握手模块B和调度模块B相连。数据加密模块B从数据流模块B接收切割后的数据段;数据加密模块B从握手模块B接收会话信息B,通过会话信息B中的密钥对切割后的数据段加密,之后封装成数据报文B输出到调度模块B。
应答模块A与拥塞控制模块A和应答模块B相连。应答模块A将路径信息输出到拥塞控制模块A;应答模块A接收来自应答模块B的应答帧B,并输出应答帧A到应答模块B。应答帧A(B)的包含如下信息(如图3所示):
PathID:8位整型数,表示路径的ID号;
NUMBlock:8位整型数,表示ACK Block的个数;
NumTS:8位整型数,表示Timestamp的个数;
Largest Acknowledged:变长整型数,代表应答的最大数据包序号;
ACK Delay:变长整型数,表示应答帧的延迟;
ACK Block Section:可选字段;
TimeStamp Section:可选字段;
应答模块B与拥塞控制模块B和应答模块A相连。应答模块B将路径信息输出到拥塞控制模块B;应答模块B接收来自应答模块A的应答帧A,并输出应答帧B到应答模块A。
客户端的拥塞控制模块A与应答模块A、调度模块A相连。拥塞控制模块A从应答模块A接收路径信息,采用拥塞控制算法(如OLIA(opportunistic
linked-increasesalgorithm)拥塞控制算法,KhaliliR,GastN,PopovicM,etal.MPTCPisnotPareto-optimal:Performanceissuesandapossiblesolution[J].IEEE/ACMTransactionsOnNetworking,2013,21(5):1651-1665.译为:MPTCP的性能问题和一种可能的解决方案)决定路径的拥塞窗口,并将拥塞窗口输出到调度模块A。
服务端的拥塞控制模块B与应答模块B、调度模块B相连。拥塞控制模块B从应答模块B接收路径信息,采用拥塞控制算法决定路径的拥塞窗口,并将拥塞窗口输出到调度模块B。
客户端的调度模块A与数据加密模块A、拥塞控制模块A相连。调度模块A从数据加密模块A接收数据报文A,从拥塞控制模块A接收拥塞窗口,调度模块A使用调度算法(如ECF(EarliestCompletionFirst)调度算法,LimY,NahumEM,TowsleyD,etal.ECF:AnMPTCPpathschedulertomanageheterogeneouspaths[C]//Proceedingsofthe13thinternationalconferenceonemergingnetworkingexperimentsandtechnologies.2017:147-159.译为:支持异构多路径的MPTCP调度方法)决定如何将数据报文A分配给多条路径并传输到服务端的接收模块B。
服务端的调度模块B与数据加密模块B、拥塞控制模块B相连。调度模块B从数据加密模块B接收数据报文B,从拥塞控制模块B接收拥塞窗口,调度模块B使用调度算法决定如何将数据报文B分配给多条路径并传输到客户端的接收模块A。
客户端的接收模块A与服务端的调度模块B、客户端的握手模块A、乱序重排模块A相连。客户端的接收模块A从服务端的调度模块B接收数据报文B,从握手模块A接收密钥,使用密钥对数据报文B解密,取出客户端数据段,将取出的客户端数据段输出到乱序重排模块A。
服务端的接收模块B与客户端的调度模块A、服务端的握手模块B和乱序重排模块B相连。服务端的接收模块B从客户端的调度模块A接收数据报文A,从握手模块B接收密钥,使用密钥对数据报文A解密,取出服务端数据段,将取出的服务端数据段输出到乱序重排模块B。
客户端的乱序重排模块A与接收模块A、视频解码模块A相连。乱序重排模块A从接收模块A接收客户端数据段,将客户端数据段缓存下来并按序排列,拼装成视频数据,将视频数据输出到视频解码模块A。
服务端的乱序重排模块B与接收模块B、请求解析模块B相连。乱序重排模块B从接收模块B接收服务端数据段,将服务端数据段缓存下来并按序排列,拼装成请求数据,将请求数据输出到请求解析模块B。
服务端的请求解析模块B与乱序重排模块B、视频存取模块B相连。请求解析模块B接收乱序重排模块B的请求数据,解析出请求的视频信息,将请求的视频信息输出到视频存取模块B。
服务端的视频存取模块B与请求解析模块B、请求响应模块B相连。视频存取模块B从请求解析模块B接收请求的视频信息,取出相应的视频数据,将视频数据发送到请求响应模块B。
服务端的请求响应模块B与视频存取模块B、数据流模块B相连。请求响应模块B接收视频存取模块B的视频数据,将视频数据进行封装,打包成响应数据,将响应数据输出到数据流模块B。
传统的基于MPQUIC的视频传输方法首先使用握手模块进行握手,之后客户端的视频请求模块A发送请求数据,经过数据发送模块A将请求数据传输到服务端。服务端接收到来自客户端的请求数据后使用请求解析模块B进行解析,并从视频存取模块B获取视频数据,并通过请求响应模块B和服务端的数据发送模块B将视频数据发送给客户端,客户端接收到视频数据之后经视频解码模块A解码,再由视频播放模块A播放。方法如下:
第一步:客户端的握手模块A和服务端的握手模块B进行握手,尝试建立MPQUIC会话。
1.1客户端的握手模块A向服务器的握手模块B发送探测报文,探测报文包含了一些初始参数,比如客户端支持的协议版本、连接ID、密钥和一些连接参数。
1.2服务端的握手模块B从客户端的握手模块A接收探测报文。
1.3服务端的握手模块B回复一个响应报文给客户端的握手模块A。响应报文包含了确认信息、服务器证书、密钥和连接ID等信息并生成会话信息B。
1.4客户端的握手模块A从服务端的握手模块B接收响应报文。
1.5客户端握手模块A验证服务端的连接ID等信息,验证方法为:判断从握手模块B接收的响应报文中的连接ID是否和客户端握手模块A的探测报文携带的连接ID相同。如果相同,则客户端和服务端握手成功,并建立一条MPQUIC会话,生成会话信息A(含协议版本、连接ID、密钥和一些连接参数),客户端握手模块A将会话信息A发送给客户端的数据加密模块A和接收模块A,同时服务端握手模块B将会话信息B发送给服务端的接收模块B和服务端的数据加密模块B,转1.6。如果不同,则握手失败,转1.1。
1.6客户端和服务端握手成功,进入数据传输阶段,转第二步。
第二步,客户端按照2.1步所述流程向服务端发送含有请求数据的数据报文A,请求待播放的视频;同时服务端按照2.2步所述流程接收客户端发出的数据报文A,获得请求数据;
2.1客户端视频请求模块A、数据流模块A、数据加密模块A、调度模块A相互配合,按照2.1.1-2.1.7步所述方法向服务端发送含有请求数据的数据报文A,请求待播放的视频;同时客户端的接收模块A监控是否从某条路径接收到数据报文B,若未接收到数据报文B,转2.1等待;若接收到数据报文B,转第四步。
2.1.1客户端的视频请求模块A将用户要求播放的视频信息封装进请求数据,并将请求数据发送到数据流模块A。
2.1.2客户端的数据流模块A对请求数据生成一个数据流,并将请求数据切割成NA个属于该数据流的数据段,并按序为客户端数据段标记序号,将切割后的NA个客户端数据段发送到客户端的数据加密模块A。
2.1.3客户端的数据加密模块A从客户端的握手模块A获取会话信息A;
2.1.4客户端的数据加密模块A使用会话信息A中的密钥将从客户端的数据流模块A接收的NA个客户端数据段加密,并将多个数据段为一组封装成DA个客户端数据报文A,直到数据报文大小达到最大限制字节数,即1500字节,将DA个客户端数据报文A输出到调度模块A。
2.1.5令数据报文初始序号dA=1。
2.1.6客户端的调度模块A使用调度算法根据路径信息在多条路径中选择一条路径将第dA个数据报文A发出,若没有空闲的路径,则转2.1.6等待空闲路径;若有合适路径,转2.1.7。
2.1.7客户端的调度模块A通过选择的空闲路径将第dA个数据报文A发出给服务端的接收模块B,令dA=dA+1,如果dA≤DA,转2.1.6。如果dA>DA,说明该数据流的所有数据段发送完毕,转2.1.1发送下一个请求数据。
2.2,服务端按照2.2.1-2.2.3步所述方法接收客户端发出的数据报文A,获得请求数据:
2.2.1服务端的接收模块B等待从某条路径接收第dA个数据报文A,若未接收到数据报文A,转2.2.1等待;若接收到数据报文A,转2.2.2。
2.2.2服务端的应答模块B从接收模块B获取数据报文信息,生成一个应答帧B发送到应答模块A,表示已成功接收到第dA个数据报文A。
2.2.3服务端的接收模块B解封装收到的第dA个数据报文A,使用握手模块B中会话信息B中的密钥对数据报文A进行解密,取出数据段。若dA<DA,将解密后的数据段输出到乱序重排模块B,服务端的乱序重排模块B根据解密后的数据段的序号对解密后的数据段进行重排序,转2.2.1。若dA≥DA,说明来自客户端的NA个数据段已经全部接收完毕,得到请求数据,将请求数据交付给请求解析模块B,转第三步。
第三步,服务端获取客户端的请求数据,并响应视频数据,方法是:
3.1服务端请求解析模块B将请求数据解析成请求的视频信息,将请求的视频信息发送给服务端视频存取模块B。
3.2服务端视频存取模块B根据请求的视频信息调取存储在服务端的视频数据,将视频数据发送到请求响应模块B。
3.3服务端请求响应模块B将视频数据进行封装,形成响应数据,将响应数据发送到数据发送模块B的数据流模块B。
3.4服务端的数据发送模块B将响应数据发送到客户端的接收模块A,步骤如下:
3.4.1服务端的数据加密模块B从服务端的握手模块B获取会话信息B;
3.4.2服务端的数据流模块B从请求响应模块B接收响应数据,并对响应数据生成一个服务端数据流,将服务端数据流切割成NB个数据段,将切割后的NB个数据段发送到服务端的数据加密模块B。
3.4.3服务端的数据加密模块B从数据流模块B接收NB个数据段,数据加密模块B使用从握手模块B接收的会话信息B中的密钥将NB个数据段加密,并将多个数据段为一组封装成DB个数据报文B,直到数据报文大小达到最大限制字节数,即1500字节,将DB个数据报文B输出到调度模块B,DB<NB
3.4.4令数据报文B初始序号dB=1;
3.4.5服务端的调度模块B使用调度算法根据路径信息在多路径中选择一条路径将第dB个数据报文B发出,若没有空闲的路径,转3.4.5等待空闲路径;若有合适路径,转3.4.6;
3.4.6服务端的调度模块B通过选择的空闲路径将第dB个数据报文B发出,令dB=dB+1,如果dB≤DB,转3.4.5步。如果dB>DB,说明该数据流的所有数据段发送完毕,转3.4.2等待服务端发送下一个响应数据。
第四步,客户端接收服务端发出的数据报文并完成视频播放,方法是:
4.1客户端的接收模块A从某条路径接收第dB个数据报文B。
4.2客户端的应答模块A从接收模块A获取数据报文信息,生成一个应答帧A发送到应答模块B,表示已成功接收到第dB个数据报文B。
4.3客户端的接收模块A解封装收到的第dB个数据报文B,使用会话信息A的密钥对第dB个数据报文B进行解密,取出数据段。若dB<DB,将解密后的数据段输出到乱序重排模块A,乱序重排模块A根据解密后的数据段的序号对解密后的数据段进行重排序,转2.1继续接收来自服务端的响应数据。若dB≥DB,说明来自服务端的NB个数据段已经全部接收完毕,则得到视频数据,将视频数据交付给视频解码模块A,转4.4。
4.4视频解码模块A对视频数据进行视频解码,将解码之后的视频数据传送到视频播放模块A。视频播放模块A进行视频播放。
在多路径传输协议中,调度模块是一个关键性的组件。它决定了如何将数据包分配给多条路径。在上述方法中,客户端(服务端)发送的DA(DB)个数据报文A(B)按照报文序号dA(dB)从小到大的顺序发送。但由于网络环境的不确定性会导致数据报文乱序地到达服务端(客户端),这被称作队头阻塞问题。多路径传输协议存在严重的队头阻塞问题:高延迟路径上调度的数据包到达时间晚于低延迟路径上的数据包,导致数据包乱序到达。因此,低时延路径不得不等待。由于队头阻塞问题,接收端不得不分配较大的内存对乱序数据包进行排队。动态异构网络进一步加剧了这一问题。然而,具有有限接收缓冲区大小的终端设备将遭受吞吐量的急剧降低。同时在接收缓存大小足够时,调度模块无法检测队头阻塞并引入大量乱序数据包,降低用户体验。
因此,发送方的调度模块采用调度算法将数据报文调度到多条路径上,减少队首阻塞的发生以提高多路径的聚合效果,使得传输内容更快在接收方被接收。其中典型的调度算法有:minRTT(C.Raiciu,C.Paasch,etal.Howhardcanitbe?DesigningandimplementingadeployablemultipathTCP[C]//9thUSENIXsymposiumonnetworkedsystemsdesignandimplementation.2012:399–412.译为:设计并部署一种多路径TCP的可能性)调度算法,该算法检查拥塞窗口中的空间是否可用,优先考虑在具有最低往返时间的路径上进行数据包传输。CMT_BM算法,该算法针对基于丢包的拥塞控制算法与minRTT算法结合时出现缓冲区膨胀问题,限制路径发送数据的数据报文数量来缓解缓冲区膨胀。基于BLEST(FerlinS,AlayMehaniO,etal.BLEST:Blockingestimation-basedMPTCPschedulerforheterogeneousnetworks[C]//2016IFIPnetworkingconference(IFIPnetworking)andworkshops.IEEE,2016:431-439.译为:基于阻塞估计的异构网络MPTCP调度策略)调度算法引入了等待机制:当具有最高往返时延的路径是唯一可用时,如果其预测在最高往返时延路径上发送数据包可能会阻塞接收方,则其决定等待具有最低往返时延的路径再次可用,然后再进行数据包发送。ECF(LimY,NahumEM,TowsleyD,etal.ECF:AnMPTCPpathschedulertomanageheterogeneouspaths[C]//Proceedingsofthe13thinternationalconferenceonemergingnetworkingexperimentsandtechnologies.2017:147-159.译为:支持异构多路径的MPTCP调度方法)调度算法也应用了类似的等待机制。其为了充分使用快路,根据路径往返时延、带宽以及发送窗口中的数据综合判断是否在慢路上传输数据会引起快路空闲。如果快路会发生空闲,则该调度算法不使用慢路且等待快路可用。Peekaboo(H.Wu,/>Alay,A.Brunstrom,S.FerlinandG.Caso,"Peekaboo:Learning-BasedMultipathSchedulingforDynamicHeterogeneousEnvironments,"in IEEEJournalonSelectedAreasinCommunications,vol.38,no.10,pp.2295-2310,Oct.2020.译为:在动态异构环境下的基于学习的多路径调度算法)调度算法。其主要应对动态网络环境下调度器性能不佳的情况,通过监控路径的动态情况并相应地选择最佳的调度策略。但是上述算法均采用启发式方法应对动态变化的网络环境,难以做出最优决策,同时上述算法均针对特定目标进行优化,不能满足应用综合的服务质量。
综上所述,当前的多路径调度算法存在如下两个问题:
1)缺少适应网络动态变化的调度算法。
在复杂多样的网络环境下,传统的基于MPQUIC协议的多路径调度传输方法无法自适应地根据当前网络环境进行自主决策,因此面对动态网络环境调度模块并不能做出最优决策,造成性能下降。
2)缺少满足应用综合服务质量需求的调度算法。
不同的应用可能有不同的服务质量需求。但是传统的基于MPQUIC协议的多路径调度传输方法都是针对特定目标进行优化,不能适用于综合服务质量需求,多路径调度性能与应用需求仍不匹配。
发明内容
本发明要解决的技术问题是针对当前的多路径调度传输方法无法自适应地根据当前网络环境进行自主决策,面对动态网络环境不能做出最优决策,造成性能下降;不能适用于综合服务质量需求,多路径调度性能与应用需求仍不匹配的问题,提供一种基于多智能体深度强化学习的多路径视频传输方法,使得传输协议能够应对动态变化的网络环境,满足应用的不同需求。
本发明的技术方案是:
第一步:构建基于多智能体强化学习驱动的MPQUIC视频传输系统,方法是:
基于多智能体强化学习驱动的MPQUIC视频传输系统由服务端、客户端构成,客户端上安装有视频播放器A和MPQUIC传输模块A;视频播放器A与传统的基于MPQUIC协议的多路径调度传输架构中的视频播放器A相同,也由视频播放模块A、视频解码模块A和视频请求模块A组成;MPQUIC传输模块A除了包括传统的基于MPQUIC协议的多路径调度传输架构中MPQUIC传输模块A中的握手模块A、数据发送模块A、乱序重排模块A和接收模块A,还包括乱序队列长度计算模块A;其中,数据发送模块A与传统的基于MPQUIC协议的多路径调度传输架构中的一样,也由数据流模块A、数据加密模块A、应答模块A、拥塞控制模块A和调度模块A组成;服务端上除了安装有传统的基于MPQUIC协议的多路径调度传输架构中的视频播放器B和MPQUIC传输模块B,还安装有训练器;视频播放器B由请求解析模块B、视频存取模块B和请求响应模块B组成;MPQUIC传输模块B由握手模块B、数据发送模块B、乱序重排模块B和接收模块B组成;数据发送模块B除了包括数据流模块B、数据加密模块B、应答模块B、拥塞控制模块B和调度模块B,还包括路径状态收集模块B、智能模型加载模块B。训练器包括奖励计算模块B、训练数据存取模块B、模型训练模块B和模型存取模块B。
客户端的视频请求模块A与数据流模块A相连。视频请求模块A向数据流模块A发送请求数据,以请求所要播放的视频数据。
客户端视频解码模块A与乱序重排模块A和视频播放模块A相连。视频解码模块A从乱序重排模块A接收视频数据,进行视频数据解码,将解码后的视频数据输出到视频播放模块A。
客户端视频播放模块A接收来自视频解码模块A解码后的视频数据,进行视频播放,供用户观看。
客户端的握手模块A与服务端的握手模块B、客户端的数据加密模块A以及接收模块A相连。在传输请求数据前,客户端的握手模块A和服务端的握手模块B完成连接建立。客户端的握手模块A向服务器的握手模块B发送探测报文,探测报文包含连接参数,连接参数包括客户端支持的协议版本、连接ID、密钥。客户端的握手模块A还从服务端的握手模块B接收响应报文,验证服务端的证书和密钥的有效性。客户端的握手模块A根据响应报文生成会话信息A,将会话信息A发送给客户端的数据加密模块A和接收模块A,会话信息A包含响应报文中的协议版本、连接ID、密钥。
服务端的握手模块B和客户端的握手模块A、服务端的数据加密模块B和接收模块B相连。服务端的握手模块B在接收到客户端的探测报文后,回复一个响应报文给客户端的握手模块A。响应报文包含确认信息、服务器证书和密钥等信息。服务端的握手模块B根据探测报文生成会话信息B(包含协议版本、连接ID、密钥),并向数据加密模块B和接收模块B输出会话信息B。
客户端的数据流模块A与视频请求模块A、数据加密模块A相连。数据流模块A从视频请求模块A接收请求数据,将MA个请求数据生成MA个数据流,并将MA个数据流中的数据切分成NA个客户端数据段,将NA个客户端数据段输出到数据加密模块A。MA和NA均为正整数。
服务端的数据流模块B与请求响应模块B、数据加密模块B相连。数据流模块B从请求响应模块B接收响应数据,将MB个响应数据生成MB个数据流,并将MB个数据流中的数据切分成NB个服务端数据段,将NB个服务端数据段输出到数据加密模块B。MB和NB均为正整数。
客户端的数据加密模块A与数据流模块A、握手模块A、调度模块A相连,数据加密模块A从数据流模块A接收切割后的客户端数据段,使用从握手模块A接收到的会话信息A中的密钥对切割后的客户端数据段加密,之后封装成数据报文A输出到调度模块A。
服务端的数据加密模块B与数据流模块B、握手模块B和调度模块B相连,数据加密模块B接收数据流模块B发出的切割后的服务端数据段,使用从握手模块B接收到的会话信息B中的密钥对切割后的服务端数据段加密,封装成数据报文B输出到调度模块B。
客户端的应答模块A与乱序队列长度计算模块A、拥塞控制模块A和服务端应答模块B相连,应答模块A从乱序队列长度计算模块A接收乱序队列长度VOFO;从应答模块B接收应答帧B,形成路径信息,将路径信息输出到拥塞控制模块A。应答模块A将应答帧A输出到应答模块B,告知服务端数据报文B已成功接收。应答帧A相比背景技术所述方法中的应答帧A新增了乱序队列长度VOFO,VOFO为8个字节;
服务端的应答模块B与拥塞控制模块B和客户端应答模块A相连,应答模块B从应答模块A接收应答帧A,将应答帧B输出到应答模块A,告知客户端数据报文A已成功接收,将路径信息B输出到拥塞控制模块B。
客户端的拥塞控制模块A与应答模块A、调度模块A相连。拥塞控制模块A接收应答模块A的路径信息A,决定客户端路径的拥塞窗口,将客户端路径的拥塞窗口输出到调度模块A。
服务端的拥塞控制模块B与应答模块B、路径状态收集模块B相连。拥塞控制模块B接收应答模块B的路径信息B,决定服务端路径的拥塞控制窗口,并形成路径状态B,并将服务端路径的路径状态B输出到路径状态收集模块B。其中路径状态B包含如下信息:路径的往返时延、拥塞窗口、发送窗口、已经发送但未被确认的数据包数量以及缓冲区中待发送的字节数。
客户端的调度模块A与数据加密模块A、拥塞控制模块A相连。调度模块A接收数据加密模块发出的数据报文A,从拥塞控制模块A接收客户端路径的拥塞窗口,决定如何将数据报文分配给多条路径并传输到服务端的接收模块B。
服务端的路径状态收集模块B与拥塞控制模块B、调度模块B、训练器中的奖励计算模块B相连。路径状态收集模块B接收来自拥塞控制模块B的服务端路径的路径状态B,将服务端路径的路径状态B分别发送到调度模块B和奖励计算模块B。
服务端的智能模型加载模块B与调度模块B、训练器中的模型存取模块B、相连。智能模型加载模块B从模型存取模块B读取智能模型,将智能模型发送给调度模块B。
服务端的调度模块B与数据加密模块B、路径状态收集模块B、智能模型加载模块B和客户端的接收模块A相连。调度模块B接收数据加密模块B发出的数据报文B,从路径状态收集模块B接收路径状态B,从智能模型加载模块B接收智能模型,使用智能模型决定每条路径可以发送的数据包的数量,并采用调度算法决定如何将数据报文分配给多条路径并传输到客户端的接收模块A。
客户端的接收模块A与服务端的调度模块B、客户端握手模块A、乱序队列长度计算模块A和乱序重排模块A相连。客户端的接收模块A接收来自服务端调度模块B的数据报文B,使用从握手模块A接收的会话信息A中的密钥对数据报文B解密,取出数据段,从数据段收集数据报文信息,将数据报文信息输出到乱序队列长度计算模块A,同时将数据段输出到乱序重排模块A。
服务端的接收模块B与客户端的调度模块A、服务端握手模块B和乱序重排模块B相连。服务端的接收模块B接收来自客户端调度模块A的数据报文A,使用从握手模块B接收的会话信息B中的密钥对数据报文B解密,取出数据段,将数据段输出到乱序重排模块B。
客户端的乱序队列长度计算模块A与接收模块A、应答模块A相连。乱序队列长度计算模块A从接收模块A接收数据报文信息,计算接收模块A中乱序队列长度VOFO,将乱序队列长度VOFO输出到应答模块A。
客户端的乱序重排模块A与接收模块A、视频解码模块A相连。乱序重排模块A从接收模块A接收数据段,将数据段缓存下来并按序排列,拼装成完整的视频数据,将视频数据输出到视频解码模块A。
服务端的乱序重排模块B与接收模块B、请求解析模块B相连。乱序重排模块B从接收模块B接收数据段,将数据段缓存下来并按序排列,拼装成完整的请求数据,将请求数据输出到请求解析模块B。
服务端的请求解析模块B与乱序重排模块B、视频存取模块B相连。请求解析模块B从乱序重排模块B接收请求数据,从请求数据解析出请求的视频信息,将请求的视频信息输出到视频存取模块B。
服务端的视频存取模块B与请求解析模块B、请求响应模块B相连。视频存取模块B从请求解析模块B接收请求的视频信息,从请求的视频信息取出相应的视频数据,将相应的视频数据发送到请求响应模块B。
服务端的请求响应模块B与视频存取模块B、数据流模块B相连。请求响应模块B接收来自视频存取模块B的视频数据,将视频数据进行封装,打包成响应数据,将响应数据输出到数据流模块B。
服务端的奖励计算模块B与路径状态收集模块B和训练数据存取模块B相连。奖励计算模块B接收来自路径状态收集模块B的路径状态B,根据路径状态B中的信息计算奖励值,将奖励值和路径状态B封装成训练数据,将训练数据输出到训练数据存取模块B。
服务端的训练数据存取模块B与奖励计算模块B、模型训练模块B相连。训练数据存取模块B接收来自奖励计算模块B的训练数据,对训练数据进行缓存,供模型训练模块B读取。
服务端的模型训练模块B与训练数据存取模块B、模型存取模块B相连。模型训练模块B从训练数据存取模块B读取训练数据,训练智能模型,将训练完成的智能模型传输到模型存取模块B。智能模型是包含N个独立学习和做决策的智能体的集合,每个智能体包含一个Actor深度神经网络、一个Critic深度神经网络、一个目标Actor深度神经网络和一个目标Critic深度神经网络。每条路径对应一个Actor深度神经网络,其余神经网络均在训练过程使用。Actor深度神经网络和Critic深度神经网络结构相同,均拥有三层,包括输入层(64个神经元),隐藏层(32个神经元)和输出层(1个神经元);目标Actor深度神经网络的结构与Actor深度神经网络结构相同,目标Critic深度神经网络的结构与Critic深度神经网络结构相同。
服务端的模型存取模块B与模型训练模块B、智能模型加载模型B相连。模型存取模块B接收来自模型训练模块B的训练完成的智能模型,将训练完成的智能模型存储下来,为智能模型加载模块B提供训练完成的智能模型。
第二步:初始化并加载智能模型(注:智能模型只初始化一次,一旦被初始化会以文件的方式持久化存储,后续进行智能模型训练,训练完成后的模型也以文件的方式持久化保存供智能模型加载模块B进行加载,因此智能模型的初始化步骤只发生在系统初始化阶段),方法是:
2.1智能模型加载模块B检测模型存取模块B中是否存在智能模型,若不存在,则转到2.2进行智能模型初始化;若存在(说明系统已经进行过智能模型初始化),则直接转到2.3进行智能模型加载。
2.2为基于多智能体强化学习驱动的MPQUIC视频传输系统提供初始的神经网络结构和参数初始值(权重参数、学习率),并将神经网络结构和权重参数以文件形式保存到模型存取模块B中,供智能模型加载模块B加载。
将Actor深度神经网络和目标Actor深度神经网络的学习率初始化为10-5,将Critic深度神经网络和目标Critic深度神经网络的学习率初始化为10-4;将Actor深度神经网络、Critic深度神经网络、目标Actor深度神经网络、目标Critic深度神经网络的权重参数使用随机初始化方法进行随机初始化(数值范围在0.0001-0.001之间);
2.3智能模型加载模块B读取模型存取模块B中包含神经网络结构和权重参数的智能模型文件,加载智能模型。
第三步:客户端的握手模块A和服务端的握手模块B进行握手,尝试建立MPQUIC会话,方法是:
3.1客户端的握手模块A向服务端的握手模块B发送探测报文,探测报文包含了一些初始参数,比如客户端支持的协议版本、连接ID、密钥。
3.2服务端的握手模块B从客户端的握手模块A接收探测报文。
3.3服务端的握手模块B回复一个响应报文给客户端的握手模块A。响应报文包含了确认信息、服务器证书和密钥等信息并生成会话信息B。
3.4客户端的握手模块A从服务端的握手模块B接收响应报文。
3.5客户端的握手模块A验证服务端的连接ID,验证的方法为:判断从服务端收到的响应报文中的连接ID是否和客户端握手模块A探测报文携带的连接ID相同。如果相同,则客户端和服务端握手成功,并建立一条MPQUIC会话,生成会话信息A,将会话信息A发送给数据加密模块A和接收模块A,转第四步。如果不同,则握手失败,转3.1。
第四步,客户端按4.1的流程向服务端发送请求数据,请求待播放的视频;同时服务端按4.2的流程接收客户端发出的数据报文:
4.1客户端向服务端发送请求数据,请求待播放的视频,方法是:
4.1.1客户端的视频请求模块A将用户要求播放的视频信息封装进请求数据,将请求数据发送到数据流模块A。
4.1.2客户端的数据流模块A对请求数据生成一个数据流,并将请求数据切割成NA个属于该数据流的数据段,将切割后的NA个数据段发送到客户端的数据加密模块A。
4.1.3客户端的数据加密模块A从客户端的握手模块A获取会话信息A,并从数据流模块A接收NA个数据段;
4.1.4客户端的数据加密模块A使用会话信息A中的密钥将NA个数据段加密,并将多个数据段为一组封装成DA个数据报文A,直到数据报文A大小达到最大限制字节数,即1500字节,将DA个数据报文A输出到客户端的调度模块A,DA≤NA
4.1.5令数据报文初始序号dA=1;
4.1.6客户端的调度模块A使用调度算法(如ECF),在多条路径中选择一条路径将第dA个数据报文A发出,若没有空闲的路径,则转4.1.6等待空闲路径;若有合适路径,转4.1.7;
4.1.7客户端的调度模块A通过选择的空闲路径将第dA个数据报文A发送到服务端接收模块B,令dA=dA+1,客户端的应答模块A等待接收来自服务端应答模块B的应答帧B,形成路径信息A发送给拥塞控制模块A,使用拥塞控制算法(如OLIA拥塞控制算法)生成拥塞控制窗口。如果dA≤DA,转4.1.6。如果dA>DA,说明该数据流的所有数据段发送完毕,转4.1.1等待发送下一个请求数据。
4.2服务端接收客户端发出的数据报文,方法是:
4.2.1服务端的接收模块B等待从某条路径接收第dA个数据报文A,若服务端的接收模块B未接收到数据报文A,转4.2.1等待,若接收到数据报文A,转4.2.2;
4.2.2服务端的应答模块B从接收模块B获取数据报文信息,生成一个应答帧B发送到应答模块A,表示已成功接收到第dA个数据报文A。
4.2.3服务端的接收模块B解封装收到的第dA个数据报文A,使用握手模块B的会话信息B中的密钥对第dA个数据报文A进行解密,取出数据段。接收模块B将数据段输出到乱序重排模块B。
4.2.4服务端的乱序重排模块B根据数据段的序号对接收的数据段进行重排序。若dA<DA,转4.2.1等待接收后续的数据报文。若dA≥DA,则得到请求数据,将请求数据交付给请求解析模块B,结束数据报文的接收,转第五步。
第五步,服务端获取客户端的请求数据,形成响应数据,方法是:
5.1服务端的请求解析模块B从服务端的乱序重排模块B接收请求数据,将请求数据解析成请求的视频信息,将请求的视频信息发送给服务端视频存取模块B。
5.2服务端的视频存取模块B根据请求的视频信息调取存储在服务端的视频数据,将视频数据发送到请求响应模块B。
5.3服务端请求响应模块B从服务端视频存取模块B接收视频数据,将视频数据进行封装,形成响应数据,将响应数据发送到数据流模块B。
5.4服务端的数据流模块B从请求响应模块B接收响应数据。
第六步,服务端按6.1-6.4的流程向客户端发送响应数据;同时客户端按6.5的流程接收服务端发出的数据报文,方法是:
6.1服务端的数据流模块B对响应数据生成一个数据流,并将响应数据切割成NB个属于该数据流的数据段,将切割后的NB个数据段发送到服务端的数据加密模块B;
6.2服务端的数据加密模块B从握手模块B获取会话信息B,并从数据流模块B接收NB个数据段;
6.3服务端的数据加密模块B使用会话信息B中的密钥将NB个数据段加密,并将多个数据段为一组封装成DB个数据报文B,直到数据报文大小达到最大限制字节数,即1500字节,将DB个数据报文B输出到服务端的调度模块B,DB≤NB
6.4服务端调度模块B将DB个数据报文B发送到客户端接收模块A,方法是:
6.4.1初始化时间步t=1,初始化客户端和服务端之间的N条路径的拥塞控制窗口CWND1,...CWNDi,...CWNDN为1,1≤i≤N,CWNDi为路径i的拥塞控制窗口。初始化时间步t-1时的路径状态B即stotal(t-1)为MPQUIC连接建立时的初始状态信息,由MPQUIC协议提供,初始化时间步t-1时的智能模型的N个智能体产生决策集合
atotal(t-1)=(a1(t-1),a2(t-1),...,ai(t-1),...,aN(t-1))=(1,1,...,1,...,1);
6.4.2若t=1,服务端智能模型加载模块B从模型存取模块B中读取初始的智能模型,服务端智能模型加载模块B将初始的智能模型发送给调度模块B,转6.4.3;若t≥2,服务端智能模型加载模块B从模型存取模块B中读取训练后的智能模型,服务端智能模型加载模块B将训练后的智能模型发送给调度模块B,转6.4.3;
6.4.3服务端的调度模块B加载从服务端智能模型加载模块B接收的智能模型。
6.4.4服务端的调度模块B根据时间步t时的路径状态B即stotal(t),为所有路径输出一个决策。stotal(t)包含信息如下:
stotal(t)=(s1(t),s2(t),...,si(t),...,sN(t));si(t)为时间步t时客户端与服务端间第i条路径的信息,表示为五元组(di(t),ci(t),wi(t),pi(t),ui(t)),其中,
di(t)为时间步t时第i条路径的往返时延,该信息由本发明采用的MPQUIC协议生成;
ci(t)为时间步t时第i条路径的拥塞窗口,该信息由MPQUIC协议生成;
wi(t)为时间步t时第i条路径的发送窗口,该信息由MPQUIC协议生成;
pi(t)为时间步t时第i条路径中已经发送但未被确认的数据包数量,该信息由MPQUIC协议生成;
ui(t)为时间步t时发送缓冲区中待发送的字节数,该信息由MPQUIC协议生成。
对于时间步t,智能模型的N个智能体产生决策集合atotal(t),atotal(t)=(a1(t),a2(t),...,ai(t),...,aN(t));ai(t)是时间步t时第i个智能体通过智能模型输出的决策,根据经验指定ai(t)∈[1,4]。当t=1时,令atotal(t)=(1,1,...,1,...,1)。对于路径i,ai(t)用于限制路径i的拥塞控制窗口(CWNDi),限制后路径i的拥塞控制窗口大小为其中,RTTi为第i条路径上数据包往返时延,RTTmin i为RTTi的最小值;
6.4.5服务端的调度模块B执行智能模型中N个智能体的决策。
6.4.6服务端的调度模块B使用调度算法在N条路径中选择一条空闲路径,将第dB个数据报文发出,若没有空闲的路径,则转6.4.5等待空闲路径;若有合适路径,转6.4.7;
6.4.7服务端的调度模块B通过选择的空闲路径将第dB个数据报文发送给客户端的接收模块A,令dB=dB+1,令t=t+1,如果dB≤DB,转6.5。如果dB>DB,说明该数据流的所有数据段发送完毕,转6.1等待服务端发送下一个响应数据。
6.5客户端接收服务端发出的数据报文,方法是:
6.5.1客户端的接收模块A等待从某条路径接收第dB个数据报文B,若未接收到第dB个数据报文B,转6.5.1等待;若接收到第dB个数据报文B,转6.5.2。
6.5.2客户端的接收模块A解封装收到的第dB个数据报文B,使用会话信息A的密钥对第dB个数据报文B进行解密,取出数据段。若dB<DB,则将第dB个数据段输出到乱序重排模块A,转6.5.3。若dB≥DB,说明来自服务端的NB个数据段已经全部接收完毕,得到视频数据,客户端的视频解码模块A将解码之后的视频数据传送到视频播放模块A,转6.7。
6.5.3客户端的接收模块A记录不连续的数据段,形成数据报文信息,将数据报文信息输出到乱序队列长度模块A;
6.5.4乱序队列长度计算模块A将数据报文信息中的不连续数据段的个数累加形成乱序队列长度VOFO,将乱序队列长度VOFO发送给客户端的应答模块A。
6.5.5客户端的应答模块A从乱序队列计算模块A获取乱序队列长度,生成一个应答帧A发送到应答模块B,表示已成功接收到第dB个数据报文B。
6.5.6服务端的应答模块B接收到来自客户端应答模块A的应答帧A后,形成路径信息B发送给拥塞控制模块B;
6.5.7拥塞控制模块B将路径信息B打包成五元组形成路径状态B,将路径状态B发送给服务端路径状态收集模块B。
6.5.8服务端路径状态收集模块B从拥塞控制模块B获取路径状态B,将路径状态B发送给服务端的奖励计算模块B。
6.5.9服务端的奖励计算模块B从路径状态收集模块B接收路径状态B,根据路径状态B计算时间步t时的奖励,记为rtotal(t),rtotal(t)=(r1(t),r2(t),...,ri(t),...,rN(t)),其中ri(t)表示时间步t时第i个智能体(或第i条路径)的奖励,计算方法是:
6.5.9.1计算第i条路径的权重αi其中,/>为第i条路径的最小往返时延(该信息MPQUIC协议生成)。η是一个系数,η∈[-1,1]。η取为0,表示所有路径的权重相等。sigmod()是数学上常用的归一化函数,用于将αi放缩到0-1之间。
6.5.9.2计算所有路径的加权总吞吐量,记作Vth其中,1≤p≤N;thi,t表示第i条路径在时间步t时的吞吐量,thp,t表示第p条路径在时间步t时的吞吐量。
6.5.9.3计算其中di(t)为第i条路径在时间步t时的往返时延。
6.5.9.4计算时间步t时第i条路径的奖励ri,ri=Vth-βVRTT-ρVOFO,第一奖励参数β取2.5,第二奖励参数ρ取1.5,VOFO表示乱序队列长度。
6.6服务端的奖励计算模块B将当前时间步t时的stotal(t)和rtotal(t)与t-1个时间步的stotal(t-1),atotal(t-1)组成四元组(stotal(t-1),atotal(t-1),rtotal(t),stotal(t)),形成一条训练数据,并将该条训练数据发送到训练数据存取模块B,存储到训练数据集中,转第七步。
6.7视频播放模块A进行视频播放,若视频播放结束,转第八步,否则转第四步,发送下一个请求数据。
第七步,训练智能模型,方法如下:
7.1训练数据存取模块B判断存储的训练数据数量是否大于等于预设阈值A,A设置为5210,如果大于等于预设阈值A,转7.2;否则不进行模型训练,转7.1等待。
7.2令训练迭代次数k=1;令训练轮数阈值K为正整数,优选为100。
7.3模型训练模块B从训练数据存取模块B随机采样批量大小为batch_size个样本(batch_size取值为512),形成训练数据,记为BB={(sj total(t),aj total(t),rj total(t),sj +1 total(t))|j=1,...,batch_size};BB中第j个样本为(sj total(t),aj total(t),rj total(t),sj +1 total(t)),即步骤6.6中的一条训练数据;
7.4模型训练模块B从模型存取模块B读取智能模型,对智能模型进行训练。令第i个智能体的Actor深度神经网络在第k轮训练时为令Actor深度神经网络参数在第k轮训练时为/>令第i个智能体的Critic深度神经网络在第k轮训练时为/>令Critic深度神经网络参数在第k轮训练时为/>令/>为第k轮训练时第i个智能体的目标Actor深度神经网络,/>为第k轮训练时目标Actor深度神经网络参数;令/>为第k轮训练时第i个智能体的目标Critic深度神经网络,/>为第k轮训练时目标Critic深度神经网络参数;
7.5模型训练模块B使用梯度下降法更新智能模型中的智能体的Actor深度神经网络权值,更新过程如下:
其中a’i是第i个智能体Actor深度神经网络输入为时输出的动作,即 是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj+1 total(t))的第i条路径的路径状态;/>表示对Actor深度神经网络的参数求解梯度;/>表示对Critic深度神经网络的参数求解梯度;E[]表示期望平均函数。
7.6模型训练模块B计算第i个智能体的Critic深度神经网络的期望累计奖励值yi
其中,ri j是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj+1 total(t))的第i条路径的奖励函数值;是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj+1 total(t))所有路径的状态集合;γ是折扣因子,一般取值在[0,1),优选γ=0.99;是对深度Actor神经网络输入/>后的输出值。
7.7模型训练模块B计算Critic深度神经网络的损失函数的估计值
7.8模型训练模块B使用梯度下降方法将第k轮训练时的Critic深度神经网络权值更新为第k+1轮训练时的Critic深度神经网络权值/>
其中,表示求损失函数/>关于/>的梯度。
7.9模型训练模块B更新第i个智能体的目标Actor深度神经网络和目标Critic深度神经网络:
其中,τ是目标网络更新系数,优选τ=0.01;
7.10模型训练模块B将训练完成的智能模型发送到模型存取模块B;
7.11令k=k+1;
7.12模型训练模块B判断k是否大于训练轮数阈值K(K设置为100),若k≤K,转7.2。若k>K,结束训练,将训练后的模型保存到模型存取模块B,转6.4.2。
第八步,客户端和服务端之间一次视频传输和播放结束。
采用本发明可以达到以下技术效果:
1)本发明的第一步构建的基于多智能体强化学习驱动的MPQUIC视频传输系统中的奖励计算模块B中奖励函数ri的设计综合了应用对于服务质量的多种需求,能够更好地满足不同应用的需要。
2)本发明第六步的步骤6.5.3乱序队列长度计算模块对数据报文调度过程中乱序队列长度通过应答帧及时反馈,使得调度策略更加趋向最优策略,极大提升了传输的吞吐量。
3)本发明第六步和第七步采用异步的基于多智能体强化学习的运行和训练方法,能够不断根据当前网络环境不断调整调度策略,大大提高了调度算法的适应性,使得本发明在面对动态网络变化时,可以较好的满足应用需求。
附图说明
图1是背景技术所述传统的基于MPQUIC的视频传输方法采用的基于MPQUIC的视频传输系统逻辑结构图。
图2是本发明第一步所构建的基于MPQUIC的智能视频传输系统的逻辑结构图。
图3是传统的MPQUIC应答帧示意图。
图4是本发明设计的MPQUIC应答帧示意图。
图5是本发明的总体流程图。
图6是本发明系统有效吞吐率和乱序队列大小指标与传统的MPQUIC协议的对比图。图6(a)是不同调度算法在接收缓冲区为1、2、3、4和6MB时有效吞吐率的对比图,图6(b)是不同调度算法在接收缓冲区为1、2、3、4和6MB时乱序队列大小的对比图。
具体实施方式
为解决背景技术中提出的问题,本发明基于多智能体强化学习提供了一种针对在线视频流点播的智能化MPQUIC数据包调度方法和系统。为了详细的说明本发明所述的技术方案,下面结合实施例做进一步的说明。
如图5所示,本发明包括以下步骤:
第一步:构建基于多智能体强化学习驱动的MPQUIC视频传输系统,方法是:
基于多智能体强化学习驱动的MPQUIC视频传输系统如图2所示,由服务端、客户端构成,客户端上安装有视频播放器A和MPQUIC传输模块A;视频播放器A与传统的基于MPQUIC协议的多路径调度传输架构中的视频播放器A相同,也由视频播放模块A、视频解码模块A和视频请求模块A组成;MPQUIC传输模块A除了包括传统的基于MPQUIC协议的多路径调度传输架构中MPQUIC传输模块A中的握手模块A、数据发送模块A、乱序重排模块A和接收模块A,还包括乱序队列长度计算模块A;其中,数据发送模块A与传统的基于MPQUIC协议的多路径调度传输架构中的一样,也由数据流模块A、数据加密模块A、应答模块A、拥塞控制模块A和调度模块A组成;服务端上除了安装有传统的基于MPQUIC协议的多路径调度传输架构中的视频播放器B和MPQUIC传输模块B,还安装有训练器;视频播放器B由请求解析模块B、视频存取模块B和请求响应模块B组成;MPQUIC传输模块B由握手模块B、数据发送模块B、乱序重排模块B和接收模块B组成;数据发送模块B除了包括数据流模块B、数据加密模块B、应答模块B、拥塞控制模块B和调度模块B,还包括路径状态收集模块B、智能模型加载模块B。训练器包括奖励计算模块B、训练数据存取模块B、模型训练模块B和模型存取模块B。
客户端的视频请求模块A与数据流模块A相连。视频请求模块A向数据流模块A发送请求数据,以请求所要播放的视频数据。
客户端视频解码模块A与乱序重排模块A和视频播放模块A相连。视频解码模块A从乱序重排模块A接收视频数据,进行视频数据解码,将解码后的视频数据输出到视频播放模块A。
客户端视频播放模块A接收来自视频解码模块A解码后的视频数据,进行视频播放,供用户观看。
客户端的握手模块A与服务端的握手模块B、客户端的数据加密模块A以及接收模块A相连。在传输请求数据前,客户端的握手模块A和服务端的握手模块B完成连接建立。客户端的握手模块A向服务器的握手模块B发送探测报文,探测报文包含了一些初始参数,比如客户端支持的协议版本、连接ID、密钥等连接参数。客户端的握手模块A还从服务端的握手模块B接收响应报文,验证服务端的证书和密钥的有效性。客户端的握手模块A根据响应报文生成会话信息A,将会话信息A发送给客户端的数据加密模块A和接收模块A。
服务端的握手模块B和客户端的握手模块A、服务端的数据加密模块B和接收模块B相连。服务端的握手模块B在接收到客户端的探测报文后,回复一个响应报文给客户端的握手模块A。响应报文包含确认信息、服务器证书和密钥等信息。服务端的握手模块B根据探测报文生成会话信息B(包含协议版本、连接ID、密钥),并向数据加密模块B和接收模块B输出会话信息B。
客户端的数据流模块A与视频请求模块A、数据加密模块A相连。数据流模块A从视频请求模块A接收请求数据,将MA个请求数据生成MA个数据流,并将MA个数据流中的数据切分成NA个客户端数据段,将NA个客户端数据段输出到数据加密模块A。MA和NA均为正整数。
服务端的数据流模块B与请求响应模块B、数据加密模块B相连。数据流模块B从请求响应模块B接收响应数据,将MB个响应数据生成MB个数据流,并将MB个数据流中的数据切分成NB个服务端数据段,将NB个服务端数据段输出到数据加密模块B。MB和NB均为正整数。
客户端的数据加密模块A与数据流模块A、握手模块A、调度模块A相连,数据加密模块A从数据流模块A接收切割后的客户端数据段,使用从握手模块A接收到的会话信息A中的密钥对切割后的客户端数据段加密,之后封装成数据报文A输出到调度模块A。
服务端的数据加密模块B与数据流模块B、握手模块B和调度模块B相连,数据加密模块B接收数据流模块B发出的切割后的服务端数据段,使用从握手模块B接收到的会话信息B中的密钥对切割后的服务端数据段加密,封装成数据报文B输出到调度模块B。
客户端的应答模块A与乱序队列长度计算模块A、拥塞控制模块A和服务端应答模块B相连,应答模块A从乱序队列长度计算模块A接收乱序队列长度VOFO;从应答模块B接收应答帧B,形成路径信息,将路径信息输出到拥塞控制模块A。应答模块A将应答帧A输出到应答模块B,告知服务端数据报文B已成功接收。如图4所示,应答帧A相比背景技术所述方法中的应答帧A新增了乱序队列长度VOFO,VOFO为8个字节。
服务端的应答模块B与拥塞控制模块B和客户端应答模块A相连,应答模块B从应答模块A接收应答帧A,将应答帧B输出到应答模块A,告知客户端数据报文A已成功接收,将路径信息B输出到拥塞控制模块B。
客户端的拥塞控制模块A与应答模块A、调度模块A相连。拥塞控制模块A接收应答模块A的路径信息A,决定客户端路径的拥塞窗口,将客户端路径的拥塞窗口输出到调度模块A。
服务端的拥塞控制模块B与应答模块B、路径状态收集模块B相连。拥塞控制模块B接收应答模块B的路径信息B,决定服务端路径的拥塞控制窗口,并形成路径状态B,并将服务端路径的路径状态B输出到路径状态收集模块B。其中路径状态B包含如下信息:路径的往返时延、拥塞窗口、发送窗口、已经发送但未被确认的数据包数量以及缓冲区中待发送的字节数。
客户端的调度模块A与数据加密模块A、拥塞控制模块A相连。调度模块A接收数据加密模块发出的数据报文A,从拥塞控制模块A接收客户端路径的拥塞窗口,决定如何将数据报文分配给多条路径并传输到服务端的接收模块B。
服务端的路径状态收集模块B与拥塞控制模块B、调度模块B、训练器中的奖励计算模块B相连。路径状态收集模块B接收来自拥塞控制模块B的服务端路径的路径状态B,将服务端路径的路径状态B分别发送到调度模块B和奖励计算模块B。
服务端的智能模型加载模块B与调度模块B、训练器中的模型存取模块B、相连。智能模型加载模块B从模型存取模块B读取智能模型,将智能模型发送给调度模块B。
服务端的调度模块B与数据加密模块B、路径状态收集模块B、智能模型加载模块B和客户端的接收模块A相连。调度模块B接收数据加密模块B发出的数据报文B,从路径状态收集模块B接收路径状态B,从智能模型加载模块B接收智能模型,使用智能模型决定每条路径可以发送的数据包的数量,并采用调度算法决定如何将数据报文分配给多条路径并传输到客户端的接收模块A。
客户端的接收模块A与服务端的调度模块B、客户端握手模块A、乱序队列长度计算模块A和乱序重排模块A相连。客户端的接收模块A接收来自服务端调度模块B的数据报文B,使用从握手模块A接收的会话信息A中的密钥对数据报文B解密,取出数据段,从数据段收集数据报文信息,将数据报文信息输出到乱序队列长度计算模块A,同时将数据段输出到乱序重排模块A。
服务端的接收模块B与客户端的调度模块A、服务端握手模块B和乱序重排模块B相连。服务端的接收模块B接收来自客户端调度模块A的数据报文A,使用从握手模块B接收的会话信息B中的密钥对数据报文B解密,取出数据段,将数据段输出到乱序重排模块B。
客户端的乱序队列长度计算模块A与接收模块A、应答模块A相连。乱序队列长度计算模块A从接收模块A接收数据报文信息,计算接收模块A中乱序队列长度,将乱序队列长度输出到应答模块A。
客户端的乱序重排模块A与接收模块A、视频解码模块A相连。乱序重排模块A从接收模块A接收数据段,将数据段缓存下来并按序排列,拼装成完整的视频数据,将视频数据输出到视频解码模块A。
服务端的乱序重排模块B与接收模块B、请求解析模块B相连。乱序重排模块B从接收模块B接收数据段,将数据段缓存下来并按序排列,拼装成完整的请求数据,将请求数据输出到请求解析模块B。
服务端的请求解析模块B与乱序重排模块B、视频存取模块B相连。请求解析模块B从乱序重排模块B接收请求数据,从请求数据解析出请求的视频信息,将请求的视频信息输出到视频存取模块B。
服务端的视频存取模块B与请求解析模块B、请求响应模块B相连。视频存取模块B从请求解析模块B接收请求的视频信息,从请求的视频信息取出相应的视频数据,将相应的视频数据发送到请求响应模块B。
服务端的请求响应模块B与视频存取模块B、数据流模块B相连。请求响应模块B接收来自视频存取模块B的视频数据,将视频数据进行封装,打包成响应数据,将响应数据输出到数据流模块B。
服务端的奖励计算模块B与路径状态收集模块B和训练数据存取模块B相连。奖励计算模块B接收来自路径状态收集模块B的路径状态B,根据路径状态B中的信息计算奖励值,将奖励值和路径状态B封装成训练数据,将训练数据输出到训练数据存取模块B。
服务端的训练数据存取模块B与奖励计算模块B、模型训练模块B相连。训练数据存取模块B接收来自奖励计算模块B的训练数据,对训练数据进行缓存,供模型训练模块B读取。
服务端的模型训练模块B与训练数据存取模块B、模型存取模块B相连。模型训练模块B从训练数据存取模块B读取训练数据,训练智能模型,将训练完成的智能模型传输到模型存取模块B。智能模型是包含N个独立学习和做决策的智能体的集合,每个智能体包含一个Actor深度神经网络、一个Critic深度神经网络、一个目标Actor深度神经网络和一个目标Critic深度神经网络。每条路径对应一个Actor深度神经网络,其余神经网络均在训练过程使用。Actor深度神经网络和Critic深度神经网络结构相同,均拥有三层,包括输入层(64个神经元),隐藏层(32个神经元)和输出层(1个神经元);目标Actor深度神经网络的结构与Actor深度神经网络结构相同,目标Critic深度神经网络的结构与Critic深度神经网络结构相同。
服务端的模型存取模块B与模型训练模块B、智能模型加载模型B相连。模型存取模块B接收来自模型训练模块B的训练完成的智能模型,将训练完成的智能模型存储下来,为智能模型加载模块B提供训练完成的智能模型。
第二步:初始化并加载智能模型(注:智能模型只初始化一次,一旦被初始化会以文件的方式持久化存储,后续进行智能模型训练,训练完成后的模型也以文件的方式持久化保存供智能模型加载模块B进行加载。因此智能模型的初始化步骤只发生在系统初始化阶段。),方法是:
2.1智能模型加载模块B检测模型存取模块B中是否存在智能模型,若不存在,则转到2.2进行智能模型初始化;若存在(说明系统已经进行过智能模型初始化),则直接转到2.3进行智能模型加载。
2.2为基于多智能体强化学习驱动的MPQUIC视频传输系统提供初始的神经网络结构和参数初始值(权重参数、学习率),并将神经网络结构和权重参数以文件形式保存到模型存取模块B中,供智能模型加载模块B加载。
将Actor深度神经网络和目标Actor深度神经网络的学习率初始化为10-5,将Critic深度神经网络和目标Critic深度神经网络的学习率初始化为10-4;将Actor深度神经网络、Critic深度神经网络、目标Actor深度神经网络、目标Critic深度神经网络的权重参数使用随机初始化方法进行随机初始化(数值范围在0.0001-0.001之间);
2.3智能模型加载模块B读取模型存取模块B中包含神经网络结构和权重参数的智能模型文件,加载智能模型。
第三步:客户端的握手模块A和服务端的握手模块B进行握手,尝试建立MPQUIC会话,方法是:
3.1客户端的握手模块A向服务端的握手模块B发送探测报文,探测报文包含了一些初始参数,比如客户端支持的协议版本、连接ID、密钥。
3.2服务端的握手模块B从客户端的握手模块A接收探测报文。
3.3服务端的握手模块B回复一个响应报文给客户端的握手模块A。响应报文包含了确认信息、服务器证书和密钥等信息并生成会话信息B。
3.4客户端的握手模块A从服务端的握手模块B接收响应报文。
3.5客户端的握手模块A验证服务端的连接ID,验证的方法为:判断从服务端收到的响应报文中的连接ID是否和客户端握手模块A探测报文携带的连接ID相同。如果相同,则客户端和服务端握手成功,并建立一条MPQUIC会话,生成会话信息A,将会话信息A发送给数据加密模块A和接收模块A,转第四步。如果不同,则握手失败,转3.1。
第四步,客户端按4.1的流程向服务端发送请求数据,请求待播放的视频;同时服务端按4.2的流程接收客户端发出的数据报文:
4.1客户端向服务端发送请求数据,请求待播放的视频,方法是:
4.1.1客户端的视频请求模块A将用户要求播放的视频信息封装进请求数据,将请求数据发送到数据流模块A。
4.1.2客户端的数据流模块A对请求数据生成一个数据流,并将请求数据切割成NA个属于该数据流的数据段,将切割后的NA个数据段发送到客户端的数据加密模块A。
4.1.3客户端的数据加密模块A从客户端的握手模块A获取会话信息A,并从数据流模块A接收NA个数据段;
4.1.4客户端的数据加密模块A使用会话信息A中的密钥将NA个数据段加密,并将多个数据段为一组封装成DA个数据报文A,直到数据报文A大小达到最大限制字节数,即1500字节,将DA个数据报文A输出到客户端的调度模块A,DA≤NA
4.1.5令数据报文初始序号dA=1;
4.1.6客户端的调度模块A使用调度算法(如ECF),在多条路径中选择一条路径将第dA个数据报文A发出,若没有空闲的路径,则转4.1.6等待空闲路径;若有合适路径,转4.1.7;
4.1.7客户端的调度模块A通过选择的空闲路径将第dA个数据报文A发送到服务端接收模块B,令dA=dA+1,客户端的应答模块A等待接收来自服务端应答模块B的应答帧B,形成路径信息A发送给拥塞控制模块A,使用拥塞控制算法(如OLIA拥塞控制算法)生成拥塞控制窗口。如果dA≤DA,转4.1.6。如果dA>DA,说明该数据流的所有数据段发送完毕,转4.1.1等待发送下一个请求数据。
4.2服务端接收客户端发出的数据报文,方法是:
4.2.1服务端的接收模块B等待从某条路径接收第dA个数据报文A,若服务端的接收模块B未接收到数据报文A,转4.2.1等待,若接收到数据报文A,转4.2.2;
4.2.2服务端的应答模块B从接收模块B获取数据报文信息,生成一个应答帧B发送到应答模块A,表示已成功接收到第dA个数据报文A。
4.2.3服务端的接收模块B解封装收到的第dA个数据报文A,使用握手模块B的会话信息B中的密钥对第dA个数据报文A进行解密,取出数据段。接收模块B将数据段输出到乱序重排模块B。
4.2.4服务端的乱序重排模块B根据数据段的序号对接收的数据段进行重排序。若dA<DA,转4.2.1等待接收后续的数据报文。若dA≥DA,则得到请求数据,将请求数据交付给请求解析模块B,结束数据报文的接收,转第五步。
第五步,服务端获取客户端的请求数据,形成响应数据,方法是:
5.1服务端的请求解析模块B从服务端的乱序重排模块B接收请求数据,将请求数据解析成请求的视频信息,将请求的视频信息发送给服务端视频存取模块B。
5.2服务端的视频存取模块B根据请求的视频信息调取存储在服务端的视频数据,将视频数据发送到请求响应模块B。
5.3服务端请求响应模块B从服务端视频存取模块B接收视频数据,将视频数据进行封装,形成响应数据,将响应数据发送到数据流模块B。
5.4服务端的数据流模块B从请求响应模块B接收响应数据。
第六步,服务端按6.1-6.4的流程向客户端发送响应数据;同时客户端按6.5的流程接收服务端发出的数据报文,方法是:
6.1服务端的数据流模块B对响应数据生成一个数据流,并将响应数据切割成NB个属于该数据流的数据段,将切割后的NB个数据段发送到服务端的数据加密模块B;
6.2服务端的数据加密模块B从握手模块B获取会话信息B,并从数据流模块B接收NB个数据段;
6.3服务端的数据加密模块B使用会话信息B中的密钥将NB个数据段加密,并将多个数据段为一组封装成DB个数据报文B,直到数据报文大小达到最大限制字节数,即1500字节,将DB个数据报文B输出到服务端的调度模块B,DB≤NB
6.4服务端调度模块B将DB个数据报文B发送到客户端接收模块A,方法是:
6.4.1初始化时间步t=1,初始化客户端和服务端之间的N条路径的拥塞控制窗口CWND1,...CWNDi,...CWNDN为1,1≤i≤N,CWNDi为路径i的拥塞控制窗口。初始化时间步t-1时的路径状态B即stotal(t-1)为MPQUIC连接建立时的初始状态信息,由MPQUIC协议提供,初始化时间步t-1时的智能模型的N个智能体产生决策集合atotal(t-1)=
=(a1(t-1),a2(t-1),...,ai(t-1),...,aN(t-1))=(1,1,...,1,...,1);
6.4.2若t=1,服务端智能模型加载模块B从模型存取模块B中读取初始的智能模型,服务端智能模型加载模块B将初始的智能模型发送给调度模块B,转6.4.3;若t≥2,服务端智能模型加载模块B从模型存取模块B中读取训练后的智能模型,服务端智能模型加载模块B将训练后的智能模型发送给调度模块B,转6.4.3;
6.4.3服务端的调度模块B加载从服务端智能模型加载模块B接收的智能模型。
6.4.4服务端的调度模块B根据时间步t时的路径状态B即stotal(t),为所有路径输出一个决策。stotal(t)包含信息如下:
stotal(t)=(s1(t),s2(t),...,si(t),...,sN(t));si(t)为时间步t时客户端与服务端间第i条路径的信息,表示为五元组(di(t),ci(t),wi(t),pi(t),ui(t)),其中,
di(t)为时间步t时第i条路径的往返时延,该信息由本发明采用的MPQUIC协议生成;
ci(t)为时间步t时第i条路径的拥塞窗口,该信息由MPQUIC协议生成;
wi(t)为时间步t时第i条路径的发送窗口,该信息由MPQUIC协议生成;
pi(t)为时间步t时第i条路径中已经发送但未被确认的数据包数量,该信息由MPQUIC协议生成;
ui(t)为时间步t时发送缓冲区中待发送的字节数,该信息由MPQUIC协议生成。
对于时间步t,智能模型的N个智能体产生决策集合atotal(t),atotal(t)=(a1(t),a2(t),...,ai(t),...,aN(t));ai(t)是时间步t时第i个智能体通过智能模型输出的决策,根据经验指定ai(t)∈[1,4]。当t=1时,令atotal(t)=(1,1,...,1,...,1)。对于路径i,ai(t)用于限制路径i的拥塞控制窗口(CWNDi),限制后路径i的拥塞控制窗口大小为其中,RTTi为第i条路径上数据包往返时延,RTTmin i为RTTi的最小值;
6.4.5服务端的调度模块B执行智能模型中N个智能体的决策。
6.4.6服务端的调度模块B使用调度算法在N条路径中选择一条空闲路径,将第dB个数据报文发出,若没有空闲的路径,则转6.4.5等待空闲路径;若有合适路径,转6.4.7;
6.4.7服务端的调度模块B通过选择的空闲路径将第dB个数据报文发送给客户端的接收模块A,令dB=dB+1,令t=t+1,如果dB≤DB,转6.5。如果dB>DB,说明该数据流的所有数据段发送完毕,转6.1等待服务端发送下一个响应数据。
6.5客户端接收服务端发出的数据报文,方法是:
6.5.1客户端的接收模块A等待从某条路径接收第dB个数据报文B,若未接收到第dB个数据报文B,转6.5.1等待;若接收到第dB个数据报文B,转6.5.2。
6.5.2客户端的接收模块A解封装收到的第dB个数据报文B,使用会话信息A的密钥对第dB个数据报文B进行解密,取出数据段。若dB<DB,则将第dB个数据段输出到乱序重排模块A,转6.5.3。若dB≥DB,说明来自服务端的NB个数据段已经全部接收完毕,得到视频数据,客户端的视频解码模块A将解码之后的视频数据传送到视频播放模块A,转6.7。
6.5.3客户端的接收模块A记录不连续的数据段,形成数据报文信息,将数据报文信息输出到乱序队列长度模块A;
6.5.4乱序队列长度计算模块A将数据报文信息中的不连续数据段的个数累加形成乱序队列长度VOFO,将乱序队列长度VOFO发送给客户端的应答模块A。
6.5.5客户端的应答模块A从乱序队列计算模块A获取乱序队列长度,生成一个应答帧A发送到应答模块B,表示已成功接收到第dB个数据报文B。
6.5.6服务端的应答模块B接收到来自客户端应答模块A的应答帧A后,形成路径信息B发送给拥塞控制模块B;
6.5.7拥塞控制模块B将路径信息B打包成五元组形成路径状态B,将路径状态B发送给服务端路径状态收集模块B。
6.5.8服务端路径状态收集模块B从拥塞控制模块B获取路径状态B,将路径状态B发送给服务端的奖励计算模块B。
6.5.9服务端的奖励计算模块B从路径状态收集模块B接收路径状态B,根据路径状态B计算时间步t时的奖励,记为rtotal(t),rtotal(t)=(r1(t),r2(t),...,ri(t),...,rN(t)),其中ri(t)表示时间步t时第i个智能体(或第i条路径)的奖励,计算方法是:
6.5.9.1计算第i条路径的权重αi其中,/>为第i条路径的最小往返时延(该信息MPQUIC协议生成)。η是一个系数,η∈[-1,1]。η取为0,表示所有路径的权重相等。sigmod()是数学上常用的归一化函数,用于将αi放缩到0-1之间。
6.5.9.2计算所有路径的加权总吞吐量,记作Vth其中,1≤p≤N;thi,t表示第i条路径在时间步t时的吞吐量,thp,t表示第p条路径在时间步t时的吞吐量。
6.5.9.3计算其中di(t)为第i条路径在时间步t时的往返时延。
6.5.9.4计算时间步t时第i条路径的奖励ri,ri=Vth-βVRTT-ρVOFO,第一奖励参数β取2.5,第二奖励参数ρ取1.5,VOFO表示乱序队列长度。
6.6服务端的奖励计算模块B将当前时间步t时的stotal(t)和rtotal(t)与t-1个时间步的stotal(t-1),atotal(t-1)组成四元组(stotal(t-1),atotal(t-1),rtotal(t),stotal(t)),形成一条训练数据,并将该条训练数据发送到训练数据存取模块B,存储到训练数据集中,转第七步。
6.7视频播放模块A进行视频播放,若视频播放结束,转第八步,否则转第四步,发送下一个请求数据。
第七步,训练智能模型,方法如下:
7.1训练数据存取模块B判断存储的训练数据数量是否大于等于预设阈值A,A设置为5210,如果大于等于预设阈值A,转7.2;否则不进行模型训练,转7.1等待。
7.2令训练迭代次数k=1;令训练轮数阈值K为正整数,优选为100。
7.3模型训练模块B从训练数据存取模块B随机采样批量大小为batch_size个样本(batch_size取值为512),形成训练数据,记为BB={(sj total(t),aj total(t),rj total(t),sj +1 total(t))|j=1,...,batch_size};BB中第j个样本为(sj total(t),aj total(t),rj total(t),sj +1 total(t)),即步骤6.6中的一条训练数据;
7.4模型训练模块B从模型存取模块B读取智能模型,对智能模型进行训练。令第i个智能体的Actor深度神经网络在第k轮训练时为令Actor深度神经网络参数在第k轮训练时为/>令第i个智能体的Critic深度神经网络在第k轮训练时为/>令Critic深度神经网络参数在第k轮训练时为/>令/>为第k轮训练时第i个智能体的目标Actor深度神经网络,/>为第k轮训练时目标Actor深度神经网络参数;令/>为第k轮训练时第i个智能体的目标Critic深度神经网络,/>为第k轮训练时目标Critic深度神经网络参数;
7.5模型训练模块B使用梯度下降法更新智能模型中的智能体的Actor深度神经网络权值,更新过程如下:
其中a’i是第i个智能体Actor深度神经网络输入为时输出的动作,即 是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj+1 total(t))的第i条路径的路径状态;/>表示对Actor深度神经网络的参数求解梯度;/>表示对Critic深度神经网络的参数求解梯度;E[]表示期望平均函数。
7.6模型训练模块B计算第i个智能体的Critic深度神经网络的期望累计奖励值yi
其中,ri j是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj+1 total(t))的第i条路径的奖励函数值;是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj+1 total(t))所有路径的状态集合;γ是折扣因子,一般取值在[0,1),优选γ=0.99;是对深度Actor神经网络输入/>后的输出值。
7.7模型训练模块B计算Critic深度神经网络的损失函数的估计值
7.8模型训练模块B使用梯度下降方法将第k轮训练时的Critic深度神经网络权值更新为第k+1轮训练时的Critic深度神经网络权值/>
其中,表示求损失函数/>关于/>的梯度。
7.9模型训练模块B更新第i个智能体的目标Actor深度神经网络和目标Critic深度神经网络:
其中,τ是目标网络更新系数,优选τ=0.01;
7.10模型训练模块B将训练完成的智能模型发送到模型存取模块B;
7.11令k=k+1;
7.12模型训练模块B判断k是否大于训练轮数阈值K(K设置为100),若k≤K,转7.2。若k>K,结束训练,将训练后的模型保存到模型存取模块B,转6.4.2。
第八步,客户端和服务端之间一次视频传输和播放结束。
本发明通过利用网络虚拟化软件Mininet 2.3.0版本在Ubuntu系统18.04版本内搭建包含两条传输路径的实验环境来验证效果,在Mininet内构建虚拟客户端和虚拟服务器,服务器和客户端之间具有两条传输路径,两条传输路径具有的传输条件分别为:
路径一:33Mbps的带宽,0.01%的丢包率,53ms的传输延迟。
路径二:20Mbps的带宽,0.01%的丢包率,22ms的传输延迟。
其中,将本发明部署在如图2所示虚拟客户端和虚拟服务器上,二者以点对点的方式传输数据。构造视频传输场景,视频传输利用本发明所构建的多路径传输方法做视频传输测试,验证实验效果,其中服务器发送数据,客户端接收数据。
在本发明的实施例中,路径条数,即智能体个数,N为2;Actor深度神经网络包含3层:输入层、隐藏层和输出层,每层分别包含64、32、1个神经元,激活函数设置分别是relu、relu和tanh;Critic深度神经网络包含5层,分别是GRU层、最大池化层和3层全连接层(与Actor深度神经网络结构相同,唯一不同之处在于输出层激活函数设置为线性激活函数),奖励函数中的第一奖励参数β取2.5,第二奖励参数ρ取1.5;训练的batch_size设置为512,训练轮数阙值设置为100。
采用上述实验环境,模拟视频传输传输,本发明和其他使用了RR调度算法、BM调度算法、BLEST调度算法、ECF调度算法的传统的基于MPQUIC协议的多路径传输方法和基于在线强化学习算法的Peekaboo的多路径传输方法作比较,以验证本发明的有效吞吐率(有效吞吐率为传输的视频块大小除以视频传输延迟)和乱序队列大小(乱序队列长度为本发明乱序计算模块的所有输出值的平均)。通过改变接收端缓冲区大小(原MPQUIC中的组件),测试系统在各种设备存储能力下的性能。
图6(a)是不同调度算法在接收缓冲区为1、2、3、4和6MB时有效吞吐率的对比图,图6(b)是不同调度算法在接收缓冲区为1、2、3、4和6MB时乱序队列大小的对比图。从图6(a)可见,RR调度算法、BM调度算法、BLEST调度算法、ECF调度算法以及Peekaboo调度算法的有效吞吐率在接收缓冲区为1MB时分别为36.1、39.0、37.4、38.1和39.0Mbps;在接收缓冲区为2MB时分别为37.0、39.5、41.0、39.8和37.5Mbps;在接收缓冲区为3MB时分别为39.0、43.2、43.3、42.7和42.0Mbps;本发明的有效吞吐率在接收缓冲区为1、2和3MB时分别是41.9、44.7和45.2Mbps,可见本发明相比背景技术的有效吞吐率低约5-10%。从图6(b)可见,RR调度算法、BM调度算法、BLEST调度算法、ECF调度算法以及Peekaboo调度算法的在接收缓冲区为4MB时分别为980、640、850、1130和1125KB;在接收缓冲区为6MB时分别为995、650、920、1030和1080KB;本发明的乱序队列大小在接收缓冲区为4和6MB时分别是440和410KB,可见本发明相比背景技术的乱序队列大小要高约30%-70%。
以上对本发明所提供的基于多智能体深度强化学习的多路径视频传输方法进行了详细介绍。本文对本发明的原理及实施方式进行了阐述,以上说明用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通研究人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (7)

1.一种基于多智能体深度强化学习的多路径视频传输方法,其特征在于包括以下步骤:
第一步:构建基于多智能体强化学习驱动的MPQUIC视频传输系统,方法是:
基于多智能体强化学习驱动的MPQUIC视频传输系统由服务端、客户端构成,客户端上安装有视频播放器A和MPQUIC传输模块A;视频播放器A由视频播放模块A、视频解码模块A和视频请求模块A组成;MPQUIC传输模块A由握手模块A、数据发送模块A、乱序重排模块A和接收模块A、乱序队列长度计算模块A组成;其中,数据发送模块A由数据流模块A、数据加密模块A、应答模块A、拥塞控制模块A和调度模块A组成;服务端上安装有视频播放器B、MPQUIC传输模块B、训练器;视频播放器B由请求解析模块B、视频存取模块B和请求响应模块B组成;MPQUIC传输模块B由握手模块B、数据发送模块B、乱序重排模块B和接收模块B组成;数据发送模块B由数据流模块B、数据加密模块B、应答模块B、拥塞控制模块B、调度模块、B路径状态收集模块B、智能模型加载模块B组成;训练器包括奖励计算模块B、训练数据存取模块B、模型训练模块B和模型存取模块B;
客户端的视频请求模块A与数据流模块A相连;视频请求模块A向数据流模块A发送请求数据,以请求所要播放的视频数据;
客户端视频解码模块A与乱序重排模块A和视频播放模块A相连;视频解码模块A从乱序重排模块A接收视频数据,进行视频数据解码,将解码后的视频数据输出到视频播放模块A;
客户端视频播放模块A接收来自视频解码模块A解码后的视频数据,进行视频播放;
客户端的握手模块A与服务端的握手模块B、客户端的数据加密模块A以及接收模块A相连;在传输请求数据前,客户端的握手模块A和服务端的握手模块B完成连接建立;客户端的握手模块A向服务器的握手模块B发送探测报文,探测报文包含连接参数,连接参数包括客户端支持的协议版本、连接ID、密钥;客户端的握手模块A还从服务端的握手模块B接收响应报文,验证服务端的证书和密钥的有效性;客户端的握手模块A根据响应报文生成会话信息A,将会话信息A发送给客户端的数据加密模块A和接收模块A;会话信息A包含响应报文中的协议版本、连接ID、密钥;
服务端的握手模块B和客户端的握手模块A、服务端的数据加密模块B和接收模块B相连;服务端的握手模块B在接收到客户端的探测报文后,回复一个响应报文给客户端的握手模块A;响应报文包含确认信息、服务器证书和密钥等信息;服务端的握手模块B根据探测报文生成会话信息B,并向数据加密模块B和接收模块B输出会话信息B,会话信息B包含探测报文中的协议版本、连接ID、密钥;
客户端的数据流模块A与视频请求模块A、数据加密模块A相连;数据流模块A从视频请求模块A接收请求数据,将MA个请求数据生成MA个数据流,并将MA个数据流中的数据切分成NA个客户端数据段,将NA个客户端数据段输出到数据加密模块A;MA和NA均为正整数;
服务端的数据流模块B与请求响应模块B、数据加密模块B相连;数据流模块B从请求响应模块B接收响应数据,将MB个响应数据生成MB个数据流,并将MB个数据流中的数据切分成NB个服务端数据段,将NB个服务端数据段输出到数据加密模块B;MB和NB均为正整数;
客户端的数据加密模块A与数据流模块A、握手模块A、调度模块A相连,数据加密模块A从数据流模块A接收切割后的客户端数据段,使用从握手模块A接收到的会话信息A中的密钥对切割后的客户端数据段加密,之后封装成数据报文A输出到调度模块A;
服务端的数据加密模块B与数据流模块B、握手模块B和调度模块B相连,数据加密模块B接收数据流模块B发出的切割后的服务端数据段,使用从握手模块B接收到的会话信息B中的密钥对切割后的服务端数据段加密,封装成数据报文B输出到调度模块B;
客户端的应答模块A与乱序队列长度计算模块A、拥塞控制模块A和服务端应答模块B相连,应答模块A从乱序队列长度计算模块A接收乱序队列长度VOFO;从应答模块B接收应答帧B,形成路径信息,将路径信息输出到拥塞控制模块A;应答模块A将应答帧A输出到应答模块B,告知服务端数据报文B已成功接收;应答帧A新增了乱序队列长度VOFO,VOFO为8个字节;
服务端的应答模块B与拥塞控制模块B和客户端应答模块A相连,应答模块B从应答模块A接收应答帧A,将应答帧B输出到应答模块A,告知客户端数据报文A已成功接收,将路径信息B输出到拥塞控制模块B;
客户端的拥塞控制模块A与应答模块A、调度模块A相连;拥塞控制模块A接收应答模块A的路径信息A,决定客户端路径的拥塞窗口,将客户端路径的拥塞窗口输出到调度模块A;
服务端的拥塞控制模块B与应答模块B、路径状态收集模块B相连;拥塞控制模块B接收应答模块B的路径信息B,决定服务端路径的拥塞控制窗口,并形成路径状态B,并将服务端路径的路径状态B输出到路径状态收集模块B;
客户端的调度模块A与数据加密模块A、拥塞控制模块A相连;调度模块A接收数据加密模块发出的数据报文A,从拥塞控制模块A接收客户端路径的拥塞窗口,决定如何将数据报文分配给多条路径并传输到服务端的接收模块B;
服务端的路径状态收集模块B与拥塞控制模块B、调度模块B、训练器中的奖励计算模块B相连;路径状态收集模块B接收来自拥塞控制模块B的服务端路径的路径状态B,将服务端路径的路径状态B分别发送到调度模块B和奖励计算模块B;
服务端的智能模型加载模块B与调度模块B、训练器中的模型存取模块B、相连;智能模型加载模块B从模型存取模块B读取智能模型,将智能模型发送给调度模块B;
服务端的调度模块B与数据加密模块B、路径状态收集模块B、智能模型加载模块B和客户端的接收模块A相连;调度模块B接收数据加密模块B发出的数据报文B,从路径状态收集模块B接收路径状态B,从智能模型加载模块B接收智能模型,使用智能模型决定每条路径可以发送的数据包的数量,并采用调度算法决定如何将数据报文分配给多条路径并传输到客户端的接收模块A;
客户端的接收模块A与服务端的调度模块B、客户端握手模块A、乱序队列长度计算模块A和乱序重排模块A相连;客户端的接收模块A接收来自服务端调度模块B的数据报文B,使用从握手模块A接收的会话信息A中的密钥对数据报文B解密,取出数据段,从数据段收集数据报文信息,将数据报文信息输出到乱序队列长度计算模块A,同时将数据段输出到乱序重排模块A;
服务端的接收模块B与客户端的调度模块A、服务端握手模块B和乱序重排模块B相连;服务端的接收模块B接收来自客户端调度模块A的数据报文A,使用从握手模块B接收的会话信息B中的密钥对数据报文B解密,取出数据段,将数据段输出到乱序重排模块B;
客户端的乱序队列长度计算模块A与接收模块A、应答模块A相连;乱序队列长度计算模块A从接收模块A接收数据报文信息,计算接收模块A中乱序队列长度VOFO,将乱序队列长度VOFO输出到应答模块A;
客户端的乱序重排模块A与接收模块A、视频解码模块A相连;乱序重排模块A从接收模块A接收数据段,将数据段缓存下来并按序排列,拼装成完整的视频数据,将视频数据输出到视频解码模块A;
服务端的乱序重排模块B与接收模块B、请求解析模块B相连;乱序重排模块B从接收模块B接收数据段,将数据段缓存下来并按序排列,拼装成完整的请求数据,将请求数据输出到请求解析模块B;
服务端的请求解析模块B与乱序重排模块B、视频存取模块B相连;请求解析模块B从乱序重排模块B接收请求数据,从请求数据解析出请求的视频信息,将请求的视频信息输出到视频存取模块B;
服务端的视频存取模块B与请求解析模块B、请求响应模块B相连;视频存取模块B从请求解析模块B接收请求的视频信息,从请求的视频信息取出相应的视频数据,将相应的视频数据发送到请求响应模块B;
服务端的请求响应模块B与视频存取模块B、数据流模块B相连;请求响应模块B接收来自视频存取模块B的视频数据,将视频数据进行封装,打包成响应数据,将响应数据输出到数据流模块B;
服务端的奖励计算模块B与路径状态收集模块B和训练数据存取模块B相连;奖励计算模块B接收来自路径状态收集模块B的路径状态B,根据路径状态B中的信息计算奖励值,将奖励值和路径状态B封装成训练数据,将训练数据输出到训练数据存取模块B;
服务端的训练数据存取模块B与奖励计算模块B、模型训练模块B相连;训练数据存取模块B接收来自奖励计算模块B的训练数据,对训练数据进行缓存,供模型训练模块B读取;
服务端的模型训练模块B与训练数据存取模块B、模型存取模块B相连;模型训练模块B从训练数据存取模块B读取训练数据,训练智能模型,将训练完成的智能模型传输到模型存取模块B;智能模型是包含N个独立学习和做决策的智能体的集合,每个智能体包含一个Actor深度神经网络、一个Critic深度神经网络、一个目标Actor深度神经网络和一个目标Critic深度神经网络;每条路径对应一个Actor深度神经网络,其余神经网络均在训练过程使用;N等于客户端和服务端之间的路径条数;
服务端的模型存取模块B与模型训练模块B、智能模型加载模型B相连;模型存取模块B接收来自模型训练模块B的训练完成的智能模型,将训练完成的智能模型存储下来,为智能模型加载模块B提供训练完成的智能模型;
第二步:初始化并加载智能模型,方法是:
2.1智能模型加载模块B检测模型存取模块B中是否存在智能模型,若不存在,则转到2.2进行智能模型初始化;若存在,则直接转到2.3进行智能模型加载;
2.2为基于多智能体强化学习驱动的MPQUIC视频传输系统提供初始的神经网络结构和参数初始值,并将神经网络结构和权重参数以文件形式保存到模型存取模块B中,供智能模型加载模块B加载;
2.3智能模型加载模块B读取模型存取模块B中包含神经网络结构和权重参数的智能模型文件,加载智能模型;
第三步:客户端的握手模块A和服务端的握手模块B进行握手,尝试建立MPQUIC会话,方法是:
3.1客户端的握手模块A向服务端的握手模块B发送探测报文,探测报文包含客户端支持的协议版本、连接ID、密钥;
3.2服务端的握手模块B从客户端的握手模块A接收探测报文;
3.3服务端的握手模块B回复一个响应报文给客户端的握手模块A;响应报文包含确认信息、服务器证书和密钥,并生成会话信息B;
3.4客户端的握手模块A从服务端的握手模块B接收响应报文;
3.5客户端的握手模块A验证服务端的连接ID,验证的方法为:判断从服务端收到的响应报文中的连接ID是否和客户端握手模块A探测报文携带的连接ID相同;如果相同,则客户端和服务端握手成功,并建立一条MPQUIC会话,生成会话信息A,将会话信息A发送给数据加密模块A和接收模块A,转第四步;如果不同,则握手失败,转3.1;
第四步,客户端按4.1的流程向服务端发送请求数据,请求待播放的视频;同时服务端按4.2的流程接收客户端发出的数据报文:
4.1客户端向服务端发送请求数据,请求待播放的视频,方法是:
4.1.1客户端的视频请求模块A将用户要求播放的视频信息封装进请求数据,将请求数据发送到数据流模块A;
4.1.2客户端的数据流模块A对请求数据生成一个数据流,并将请求数据切割成NA个属于该数据流的数据段,将切割后的NA个数据段发送到客户端的数据加密模块A;
4.1.3客户端的数据加密模块A从客户端的握手模块A获取会话信息A,并从数据流模块A接收NA个数据段;
4.1.4客户端的数据加密模块A使用会话信息A中的密钥将NA个数据段加密,并将多个数据段为一组封装成DA个数据报文A,直到数据报文A大小达到最大限制字节数,即1500字节,将DA个数据报文A输出到客户端的调度模块A,DA≤NA
4.1.5令数据报文初始序号dA=1;
4.1.6客户端的调度模块A使用调度算法,在多条路径中选择一条路径将第dA个数据报文A发出,若没有空闲的路径,则转4.1.6等待空闲路径;若有合适路径,转4.1.7;
4.1.7客户端的调度模块A通过选择的空闲路径将第dA个数据报文A发送到服务端接收模块B,令dA=dA+1,客户端的应答模块A等待接收来自服务端应答模块B的应答帧B,形成路径信息A发送给拥塞控制模块A,使用拥塞控制算法(如OLIA拥塞控制算法)生成拥塞控制窗口;如果dA≤DA,转4.1.6;如果dA>DA,说明该数据流的所有数据段发送完毕,转4.1.1等待发送下一个请求数据;
4.2服务端接收客户端发出的数据报文,方法是:
4.2.1服务端的接收模块B等待从某条路径接收第dA个数据报文A,若服务端的接收模块B未接收到数据报文A,转4.2.1等待,若接收到数据报文A,转4.2.2;
4.2.2服务端的应答模块B从接收模块B获取数据报文信息,生成一个应答帧B发送到应答模块A,表示已成功接收到第dA个数据报文A;
4.2.3服务端的接收模块B解封装收到的第dA个数据报文A,使用握手模块B的会话信息B中的密钥对第dA个数据报文A进行解密,取出数据段;接收模块B将数据段输出到乱序重排模块B;
4.2.4服务端的乱序重排模块B根据数据段的序号对接收的数据段进行重排序;若dA<DA,转4.2.1等待接收后续的数据报文;若dA≥DA,则得到请求数据,将请求数据交付给请求解析模块B,结束数据报文的接收,转第五步;
第五步,服务端获取客户端的请求数据,形成响应数据,方法是:
5.1服务端的请求解析模块B从服务端的乱序重排模块B接收请求数据,将请求数据解析成请求的视频信息,将请求的视频信息发送给服务端视频存取模块B;
5.2服务端的视频存取模块B根据请求的视频信息调取存储在服务端的视频数据,将视频数据发送到请求响应模块B;
5.3服务端请求响应模块B从服务端视频存取模块B接收视频数据,将视频数据进行封装,形成响应数据,将响应数据发送到数据流模块B;
5.4服务端的数据流模块B从请求响应模块B接收响应数据;
第六步,服务端按6.1-6.4的流程向客户端发送响应数据;同时客户端按6.5的流程接收服务端发出的数据报文,方法是:
6.1服务端的数据流模块B对响应数据生成一个数据流,并将响应数据切割成NB个属于该数据流的数据段,将切割后的NB个数据段发送到服务端的数据加密模块B;
6.2服务端的数据加密模块B从握手模块B获取会话信息B,并从数据流模块B接收NB个数据段;
6.3服务端的数据加密模块B使用会话信息B中的密钥将NB个数据段加密,并将多个数据段为一组封装成DB个数据报文B,直到数据报文大小达到最大限制字节数,即1500字节,将DB个数据报文B输出到服务端的调度模块B,DB≤NB
6.4服务端调度模块B将DB个数据报文B发送到客户端接收模块A,方法是:
6.4.1初始化时间步t=1,初始化客户端和服务端之间的N条路径的拥塞控制窗口CWND1,...CWNDi,...CWNDN为1,1≤i≤N,CWNDi为路径i的拥塞控制窗口;初始化时间步t-1时的路径状态B即stotal(t-1)为MPQUIC连接建立时的初始状态信息,由MPQUIC协议提供,初始化时间步t-1时的智能模型的N个智能体产生决策集合atotal(t-1)==(a1(t-1),a2(t-1),...,ai(t-1),...,aN(t-1))=(1,1,...,1,...,1);
6.4.2若t=1,服务端智能模型加载模块B从模型存取模块B中读取初始的智能模型,服务端智能模型加载模块B将初始的智能模型发送给调度模块B,转6.4.3;若t≥2,服务端智能模型加载模块B从模型存取模块B中读取训练后的智能模型,服务端智能模型加载模块B将训练后的智能模型发送给调度模块B,转6.4.3;
6.4.3服务端的调度模块B加载从服务端智能模型加载模块B接收的智能模型;
6.4.4服务端的调度模块B根据时间步t时的路径状态B即stotal(t),为所有路径输出一个决策;stotal(t)包含信息如下:
stotal(t)=(s1(t),s2(t),...,si(t),...,sN(t));si(t)为时间步t时客户端与服务端间第i条路径的信息,表示为五元组(di(t),ci(t),wi(t),pi(t),ui(t)),其中,
di(t)为时间步t时第i条路径的往返时延,由MPQUIC协议生成;
ci(t)为时间步t时第i条路径的拥塞窗口,由MPQUIC协议生成;
wi(t)为时间步t时第i条路径的发送窗口,由MPQUIC协议生成;
pi(t)为时间步t时第i条路径中已经发送但未被确认的数据包数量,由MPQUIC协议生成;
ui(t)为时间步t时发送缓冲区中待发送的字节数,由MPQUIC协议生成;
对于时间步t,智能模型的N个智能体产生决策集合atotal(t),atotal(t)=(a1(t),a2(t),...,ai(t),...,aN(t));ai(t)是时间步t时第i个智能体通过智能模型输出的决策,ai(t)∈[1,4];当t=1时,令atotal(t)=(1,1,...,1,...,1);对于路径i,ai(t)用于限制路径i的拥塞控制窗口CWNDi,限制后路径i的拥塞控制窗口大小为其中,RTTi为第i条路径上数据包往返时延,RTTmin i为RTTi的最小值;
6.4.5服务端的调度模块B执行智能模型中N个智能体的决策;
6.4.6服务端的调度模块B使用调度算法在N条路径中选择一条空闲路径,将第dB个数据报文发出,若没有空闲的路径,则转6.4.5等待空闲路径;若有合适路径,转6.4.7;
6.4.7服务端的调度模块B通过选择的空闲路径将第dB个数据报文发送给客户端的接收模块A,令dB=dB+1,令t=t+1,如果dB≤DB,转6.5;如果dB>DB,说明该数据流的所有数据段发送完毕,转6.1等待服务端发送下一个响应数据;
6.5客户端接收服务端发出的数据报文,方法是:
6.5.1客户端的接收模块A等待从某条路径接收第dB个数据报文B,若未接收到第dB个数据报文B,转6.5.1等待;若接收到第dB个数据报文B,转6.5.2;
6.5.2客户端的接收模块A解封装收到的第dB个数据报文B,使用会话信息A的密钥对第dB个数据报文B进行解密,取出数据段;若dB<DB,则将第dB个数据段输出到乱序重排模块A,转6.5.3;若dB≥DB,说明来自服务端的NB个数据段已经全部接收完毕,得到视频数据,客户端的视频解码模块A将解码之后的视频数据传送到视频播放模块A,转6.7;
6.5.3客户端的接收模块A记录不连续的数据段,形成数据报文信息,将数据报文信息输出到乱序队列长度模块A;
6.5.4乱序队列长度计算模块A将数据报文信息中的不连续数据段的个数累加形成乱序队列长度VOFO,将乱序队列长度VOFO发送给客户端的应答模块A;
6.5.5客户端的应答模块A从乱序队列计算模块A获取乱序队列长度VOFO,生成一个应答帧A发送到应答模块B,表示已成功接收到第dB个数据报文B;
6.5.6服务端的应答模块B接收到来自客户端应答模块A的应答帧A后,形成路径信息B发送给拥塞控制模块B;
6.5.7拥塞控制模块B将路径信息B打包成五元组形成路径状态B,将路径状态B发送给服务端路径状态收集模块B;
6.5.8服务端路径状态收集模块B从拥塞控制模块B获取路径状态B,将路径状态B发送给服务端的奖励计算模块B;
6.5.9服务端的奖励计算模块B从路径状态收集模块B接收路径状态B,根据路径状态B计算时间步t时的奖励,记为rtotal(t),rtotal(t)=(r1(t),r2(t),...,ri(t),...,rN(t)),其中ri(t)表示时间步t时第i条路径的奖励;
6.6服务端的奖励计算模块B将当前时间步t时的stotal(t)和rtotal(t)与t-1个时间步的stotal(t-1),atotal(t-1)组成四元组(stotal(t-1),atotal(t-1),rtotal(t),stotal(t)),形成一条训练数据,并将该条训练数据发送到训练数据存取模块B,存储到训练数据集中,转第七步;
6.7视频播放模块A进行视频播放,若视频播放结束,转第八步,否则转第四步,发送下一个请求数据;
第七步,训练智能模型,方法是:
7.1训练数据存取模块B判断存储的训练数据数量是否大于等于预设阈值A,如果大于等于预设阈值A,转7.2;否则不进行模型训练,转7.1等待;
7.2令训练迭代次数k=1;令训练轮数阈值K为正整数;
7.3模型训练模块B从训练数据存取模块B随机采样批量大小为batch_size个样本,形成训练数据,记为BB={(sj total(t),aj total(t),rj total(t),sj+1 total(t))|j=1,...,batch_size};BB中第j个样本为(sj total(t),aj total(t),rj total(t),sj+1 total(t)),即步骤6.6中的一条训练数据;
7.4模型训练模块B从模型存取模块B读取智能模型,对智能模型进行训练;令第i个智能体的Actor深度神经网络在第k轮训练时为令Actor深度神经网络参数在第k轮训练时为/>令第i个智能体的Critic深度神经网络在第k轮训练时为/>令Critic深度神经网络参数在第k轮训练时为/>令/>为第k轮训练时第i个智能体的目标Actor深度神经网络,/>为第k轮训练时目标Actor深度神经网络参数;令/>为第k轮训练时第i个智能体的目标Critic深度神经网络,/>为第k轮训练时目标Critic深度神经网络参数;
7.5模型训练模块B使用梯度下降法更新智能模型中的智能体的Actor深度神经网络权值,更新过程如下:
其中a’i是第i个智能体Actor深度神经网络输入为时输出的动作,即/> 是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj+1 total(t))的第i条路径的路径状态;/>表示对Actor深度神经网络的参数求解梯度;/>表示对Critic深度神经网络的参数求解梯度;E[]表示期望平均函数;
7.6模型训练模块B计算第i个智能体的Critic深度神经网络的期望累计奖励值yi
其中,ri j是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj+1 total(t))的第i条路径的奖励函数值;是训练数据中第j个样本(sj total(t),aj total(t),rj total(t),sj +1 total(t))所有路径的状态集合;γ是折扣因子,取值在[0,1);/>是对深度Actor神经网络输入/>后的输出值;
7.7模型训练模块B计算Critic深度神经网络的损失函数的估计值
7.8模型训练模块B使用梯度下降方法将第k轮训练时的Critic深度神经网络权值更新为第k+1轮训练时的Critic深度神经网络权值/>
其中,表示求损失函数/>关于/>的梯度;
7.9模型训练模块B更新第i个智能体的目标Actor深度神经网络和目标Critic深度神经网络:
其中,τ是目标网络更新系数;
7.10模型训练模块B将训练完成的智能模型发送到模型存取模块B;
7.11令k=k+1;
7.12模型训练模块B判断k是否大于训练轮数阈值K,若k≤K,转7.2;若k>K,结束训练,将训练后的模型保存到模型存取模块B,转6.4.2;
第八步,客户端和服务端之间一次视频传输和播放结束。
2.如权利要求1所述的一种基于多智能体深度强化学习的多路径视频传输方法,其特征在于所述路径状态B包含的信息是:路径的往返时延、拥塞窗口、发送窗口、已经发送但未被确认的数据包数量以及缓冲区中待发送的字节数。
3.如权利要求1所述的一种基于多智能体深度强化学习的多路径视频传输方法,其特征在于所述智能体中的Actor深度神经网络和Critic深度神经网络结构相同,均拥有三层,包括输入层,含64个神经元;隐藏层,含32个神经元;输出层,含1个神经元;目标Actor深度神经网络的结构与Actor深度神经网络结构相同,目标Critic深度神经网络的结构与Critic深度神经网络结构相同。
4.如权利要求1所述的一种基于多智能体深度强化学习的多路径视频传输方法,其特征在于2.2步所述为基于多智能体强化学习驱动的MPQUIC视频传输系统提供初始的神经网络结构和参数初始值的方法是:将Actor深度神经网络和目标Actor深度神经网络的学习率初始化为10-5,将Critic深度神经网络和目标Critic深度神经网络的学习率初始化为10-4;将Actor深度神经网络、Critic深度神经网络、目标Actor深度神经网络、目标Critic深度神经网络的权重参数使用随机初始化方法进行随机初始化,数值范围在0.0001-0.001之间。
5.如权利要求1所述的一种基于多智能体深度强化学习的多路径视频传输方法,其特征在于6.5.9步所述服务端的奖励计算模块B根据路径状态B计算时间步t时的奖励rtotal(t)的方法是:
6.5.9.1计算第i条路径的权重αi其中,/>为第i条路径的最小往返时延,由MPQUIC协议生成;η是一个系数,η∈[-1,1];η取为0,表示所有路径的权重相等;sigmod()是归一化函数,用于将αi放缩到0-1之间;
6.5.9.2计算所有路径的加权总吞吐量,记作Vth其中,1≤p≤N;thi,t表示第i条路径在时间步t时的吞吐量,thp,t表示第p条路径在时间步t时的吞吐量;
6.5.9.3计算其中di(t)为第i条路径在时间步t时的往返时延;
6.5.9.4计算时间步t时第i条路径的奖励ri,ri=Vth-βVRTT-ρVOFO,第一奖励参数β取2.5,第二奖励参数ρ取1.5,VOFO表示乱序队列长度。
6.如权利要求1所述的一种基于多智能体深度强化学习的多路径视频传输方法,其特征在于7.1步所述预设阈值A设置为5210,7.2步所述训练轮数阈值K设置为100;7.3步所述batch_size取值为512。
7.如权利要求1所述的一种基于多智能体深度强化学习的多路径视频传输方法,其特征在于7.6步所述折扣因子γ=0.99,7.9步所述目标网络更新系数τ=0.01。
CN202410252512.0A 2024-03-06 2024-03-06 一种基于多智能体深度强化学习的多路径视频传输方法 Pending CN118233671A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410252512.0A CN118233671A (zh) 2024-03-06 2024-03-06 一种基于多智能体深度强化学习的多路径视频传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410252512.0A CN118233671A (zh) 2024-03-06 2024-03-06 一种基于多智能体深度强化学习的多路径视频传输方法

Publications (1)

Publication Number Publication Date
CN118233671A true CN118233671A (zh) 2024-06-21

Family

ID=91497280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410252512.0A Pending CN118233671A (zh) 2024-03-06 2024-03-06 一种基于多智能体深度强化学习的多路径视频传输方法

Country Status (1)

Country Link
CN (1) CN118233671A (zh)

Similar Documents

Publication Publication Date Title
US8180283B2 (en) Method of providing feedback to a media server in a wireless communication system
EP1720318B1 (en) Apparatus and method for transmitting a multimedia data stream
KR101399553B1 (ko) 멀티미디어 스트림 전송 장치 및 방법
US8072886B2 (en) Method and system for transmission control protocol (TCP) traffic smoothing
CN101030942B (zh) 控制无线数据流传输系统的参数的方法和设备
US7965639B2 (en) Dynamic adaptation of MAC-layer retransmission value
EP4161029A1 (en) System and method for adapting transmission rate computation by a content transmitter
US20050185581A1 (en) Active flow management with hysteresis
Wu et al. An enhanced structure of layered forward error correction and interleaving for scalable video coding in wireless video delivery
Matsufuji et al. Multipath TCP path schedulers for streaming video
CN118233671A (zh) 一种基于多智能体深度强化学习的多路径视频传输方法
Harcsik et al. Latency evaluation of networking mechanisms for game traffic
Takeuchi et al. Performance evaluations of dccp for bursty traffic in real-time applications
Kim et al. UDP-based extremely low latency streaming
JP2006303887A (ja) データ送信制御方法、通信装置、プログラムおよび記録媒体
Ameur et al. Evaluation of gateway-based shaping methods for HTTP adaptive streaming
Hisamatsu et al. Non bandwidth-intrusive video streaming over TCP
Hsiao et al. Streaming video over TCP with receiver-based delay control
WO2005081465A1 (en) Method, apparatus and computer program product for controlling data packet transmissions
Nagayama et al. Path switching schedulers for mptcp streaming video
CN115190072B (zh) 激进传输协议和保守传输协议之间公平性的速率调节方法
Zhang et al. An optimized BBR for multipath real time video streaming
Li Improving the Efficiency of Multipath Transport Protocols
JP2004048450A (ja) ストリーム配信方法、クライアント端末、装置、システム及びプログラム並びに該プログラムを記録した記録媒体
Chung et al. Mtp a streaming friendly transport protocol

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination