一种基于QoE的MPTCP数据包调度方法及装置
文献发布时间:2023-06-19 13:46:35
技术领域
本发明涉及通信和计算机网络技术领域,尤其涉及一种基于QoE的MPTCP数据包调度方法及装置。
背景技术
由于多路径传输控制协议(MultiPath Transmission Control Protocol,MPTCP)的目的是同时使用多个路径来最大化信道资源使用,因此,随着越来越多的基站(4G/5G)或公共场所WiFi接入点的建设,MPTCP的适用场景也越来越广泛,比如边缘无线网络和车联网中。
现有技术中,移动智能终端通过MPTCP连接到边缘无线网络时,基于各子流的平均拥塞窗口和往返时间预测的各子流的平均有效吞吐量调节拥塞窗口大小,以此实现数据包调度和拥塞控制。
然而,由于现有技术实现数据包调度和拥塞控制时只考虑了各子流的往返时间和平均拥塞窗口,并没有考虑移动智能终端上的各类应用程序对数据传输的不同需求,从而导致基于MPTCP进行数据包调度和拥塞控制的可靠性和准确性并不高。
发明内容
本发明提供一种基于QoE的MPTCP数据包调度方法及装置,用以解决现有技术中进行数据包调度和拥塞控制时只考虑各子流的往返时间和平均拥塞窗口而导致的数据包调度和拥塞控制的可靠性和准确性不高的问题,实现基于MPTCP进行拥塞控制和数据包调度能够同时满足不同类型应用程序的数据传输需求目的。
本发明提供一种基于QoE的MPTCP数据包调度方法,包括:
获取目标应用程序的QoE参数值;其中,所述QoE参数值用于表征所述目标应用程序的服务需求;
基于所述QoE参数值,控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序操作,得到排序结果;其中,所述特征参数至少包括往返时延、拥塞窗口值和带宽时延积;
基于所述QoE参数值和所述排序结果,将所述目标应用程序的数据包调度至目标MPTCP子流中;其中,所述目标MPTCP子流的特征参数与所述目标应用程序的服务需求的匹配度最高。
根据本发明提供的一种基于QoE的MPTCP数据包调度方法,所述基于所述QoE参数值,控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序操作,得到排序结果,包括:
建立与服务器之间的多个MPTCP子流;
检测到目标网络状态表征网络拥塞时,基于所述QoE参数值,控制执行针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作;
确定所述调整操作执行完成时,对每一MPTCP子流的特征参数分别进行排序,得到排序结果。
根据本发明提供的一种基于QoE的MPTCP数据包调度方法,所述检测到目标网络状态表征网络拥塞时,基于所述QoE参数值,控制执行针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作,包括:
检测到目标网络状态表征网络拥塞时,分别判断每一MPTCP子流中的拥塞窗口值与慢启动阈值之间的大小关系;
确定所述拥塞窗口值小于慢启动阈值且所述QoE参数值表征至少两种不同服务需求时,将所述慢启动阈值分别调整为第一预设倍数的拥塞窗口值;
确定所述拥塞窗口值大于等于慢启动阈值且所述QoE参数值表征至少两种不同服务需求时,将所述拥塞窗口值分别调整为带宽时延积和拥塞窗口值中的最大值。
根据本发明提供的一种基于QoE的MPTCP数据包调度方法,所述建立与服务器之间的多个MPTCP子流,包括:
获取服务器的公网IP地址列表;
确定所述公网IP地址列表中包括一个公网IP地址时,使用N个私有IP地址分别与所述公网IP地址之间建立N个MPTCP子流;
确定所述公网IP地址列表中包括M个公网IP地址时,使用N个私有IP地址分别与所述M个公网IP地址之间建立N*M个MPTCP子流;其中,N、M分别为大于1的整数。
根据本发明提供的一种基于QoE的MPTCP数据包调度方法,所述检测到目标网络状态表征网络拥塞时,基于所述QoE参数值,控制执行针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作,包括:
检测到目标网络状态表征网络拥塞且所述QoE参数值表征至少两种不同服务需求时,向服务器发送数据包;
确定预设时长内没有接收到所述服务器针对所述数据包反馈的确认包时,将每一MPTCP子流中的慢启动阈值分别调整为第二预设倍数的拥塞窗口值和预设拥塞窗口阈值中的最大值。
根据本发明提供的一种基于QoE的MPTCP数据包调度方法,在所述获取目标应用程序的QoE参数值的步骤之后,所述方法还包括:
确定所述QoE参数值表征一种服务需求的第一MPTCP子流时,判断通过所述第一MPTCP子流向服务器发送数据包的累计个数;
当所述累计个数超过预设个数阈值时,控制停止与服务器之间在所述第一MPTCP子流中的数据传输操作。
根据本发明提供的一种基于QoE的MPTCP数据包调度方法,所述获取目标应用程序的QoE参数值,包括:
获取预设套接字地址,并从所述预设套接字地址的预设字节处读取目标应用程序的QoE参数值。
本发明还提供一种基于QoE的MPTCP数据包调度装置,包括:
获取模块,用于获取目标应用程序的QoE参数值;其中,所述QoE参数值用于表征所述目标应用程序的服务需求;
控制模块,用于基于所述QoE参数值,控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序操作,得到排序结果;其中,所述特征参数至少包括往返时延、拥塞窗口值和带宽时延积;
调度模块,用于基于所述QoE参数值和所述排序结果,将所述目标应用程序的数据包调度至目标MPTCP子流中;其中,所述目标MPTCP子流的特征参数与所述目标应用程序的服务需求的匹配度最高。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于QoE的MPTCP数据包调度方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于QoE的MPTCP数据包调度方法的步骤。
本发明提供的一种基于QoE的MPTCP数据包调度方法及装置,其中基于QoE的MPTCP数据包调度方法,首先获取能够表征目标应用程序的服务需求的QoE参数值,然后基于QoE参数值控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序值,最后再基于排序结果和QoE参数值执行针对目标应用程序的数据包的调度操作;由于每一MPTCP子流的特征参数至少包括往返时延、拥塞窗口值和带宽时延积,因此通过基于目标应用程序的QoE参数值对目标网络状态下每一MPTCP子流的特征参数进行排序的方式,能够实现准确获知网络拥塞状态下每一MPTCP子流的传输优劣性能目的,从而也能够实现将目标应用程序的数据包快速且精准调度至与其服务需求最为匹配的MPTCP子流中的目的,以此使得基于MPTCP的网络拥塞控制和数据包调度能够同时满足不同类型应用程序的数据传输需求,大大加速了MPTCP协议应用于实际边缘无线网络中的深度和广度。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于QoE的MPTCP数据包调度方法的流程示意图;
图2是本发明提供的目标应用程序的QoE参数值的定义示意图;
图3是本发明提供的一个公网IP地址时建立MPTCP子流的过程示意图;
图4是本发明提供的多个公网IP地址时建立MPTCP子流的过程示意图;
图5是本发明实施例提供的QoE参数值传递给终端内核时所用的关键结构体示意图;
图6是本发明实施例提供的真实的测试环境示意图;
图7是本发明实施例提供的使用Android 11中的浏览器访问云服务器提供视频的过程示意图;
图8是本发明实施例提供的使用两个命令(iperf3和ping)测试从OnePlus 8T到云服务器的网络性能参数示意图;
图9是本发明实施例提供的使用scp命令向云服务器上传的文件夹drivers中包含的文件大小范围和文件数之间的对应关系示意图;
图10是本发明实施例提供的使用scp分别通过def-cubic、def-olia、QMS-QCC在QoE参数值=1、2、3、7、11时向云服务器发送160MB数据的性能比较示意图;
图11是本发明实施例提供的使用iperf3分别通过def-cubic、def-olia、QMS-QCC在QoE参数值=1、2、3、7、11时向云服务器发送160MB数据的性能比较示意图;
图12是本发明实施例提供的基于QoE的MPTCP数据包调度装置的结构示意图;
图13是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着越来越多的基站(4G/5G)或公共场所WiFi接入点的建设,MPTCP的应用场景越来越多,如边缘无线网络和车联网。
在边缘无线网络中,由于网络路径(即WiFi、蜂窝)的不对称性,将会导致MPTCP的性能恶化,良好的数据包调度可以显著提高MPTCP吞吐量,而错误的数据包调度会阻止用户从多子流聚合能力中受益,现有调度器虽然也会对数据包执行调度操作,但却不能在移动智能终端上运行的各类APP运行时进行有效合理的数据包调度,因为没有考虑到不同的APP对传输的数据量、实时性和可靠性有不同的要求,从而使得网络拥塞状态下进行数据包调度和拥塞控制的效率和可靠性都比较低。
基于上述问题,本发明提供了一种基于QoE的MPTCP数据包调度方法,旨在解决网络拥塞状态下有效进行拥塞控制和数据包调度时能够同时满足各类应用程序的不同服务需求,并且该基于QoE的MPTCP数据包调度方法的执行主体为移动智能终端的终端内核。图1为本发明提供的基于QoE的MPTCP数据包调度方法的流程示意图,如图1所示,该基于QoE的MPTCP数据包调度方法,包括:
步骤S110、获取目标应用程序的QoE参数值。
其中,QoE参数值可以用于表征目标应用程序的服务需求。
具体的,移动智能终端内的操作系统可以由用户空间和终端内核组成,用户空间包括各类应用程序,目标应用程序可以为各类应用程序中的一个,当目标应用程序接收到用户的启动触发指令时,可以基于自身对数据传输的服务需求生成体验质量(Quality ofExperience,QoE)参数值,然后再将该QoE参数值传送至终端内核;其中,启动触发指令可以为基于用户的触摸操作生成的指令。
如图2所示,关于目标应用程序生成的QoE参数值,可以采用一个8位字节来表示,每一位可以代表一个服务需求,每一位的值可以为0或1,如果值为1,表示需要提供该服务,如果值为0,表示不需要提供该服务;并且,8位字节可以表示成图2中的8个列,当采用8位字节中的低4位表示时,列WiFi可以表示MPTCP子流通过WiFi网络接口建立,列蜂窝网络(cellular)表示MPTCP子流通过蜂窝网络接口建立,大文件(bigfile)列表示目标应用程序倾向于传输大文件,列实时性(realtime)表示目标应用程序倾向于实时传输小文件且对延迟很敏感,不同服务需求可以组合成多个服务需求组,每个服务需求组的值即为QoE参数值,图2中的最后一列表示每个服务需求组的值,图2显示QoE参数值可以为1、2、3、7或11。
此外,在图2中,QoE参数值为1表示目标应用程序倾向于仅通过WiFi子流发送数据;QoE参数值为2表示目标应用程序倾向于仅通过蜂窝子流发送数据;QoE参数值3表示通过WiFi网络接口和蜂窝网络接口为MPTCP连接建立子流,目标应用程序可通过WiFi子流和蜂窝子流发送数据;QoE参数值7表示目标应用程序倾向于通过WiFi子流和蜂窝子流传输大文件,每个数据包发送通过的特定子流由拥塞控制和数据包调度确定,其目标是在无线边缘网络中提供更好的大文件传输性能;QoE参数值11表示目标应用程序倾向于通过WiFi子流和蜂窝子流传输小文件,每个数据包发送通过的特定子流也由拥塞控制和数据包调度确定,即使WiFi网络运行良好,也要基于对延迟非常敏感的要求调度出能够提供最低延迟的MPTCP子流。
需要说明的是,如果目标应用程序的服务需求超过八种,比如目标应用程序的服务需求除了图2中所示的几种服务需求之外,还可以包括价格、费用、耗电量等,此时可以直接对所有服务需求组进行编号,编号后所得到的值即为QoE参数值,QoE参数值的取值范围可以为1-254。
步骤S120、基于所述QoE参数值,控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序操作,得到排序结果。
其中,特征参数至少包括往返时延、拥塞窗口值和带宽时延积,目标网络状态可以至少包括网络拥塞发生时所处的状态。
具体的,移动智能终端的终端内核可以实时检测网络状态,以便于检测到网络拥塞发生时及时启动拥塞控制操作;当终端内核每次检测到网络拥塞发生时,可以先基于获取到的目标应用程序的QoE参数值,对每一MPTCP子流执行拥塞控制操作,比如可以基于QoE参数值对MPTCP子流的待维护参数进行调整,待维护参数可以包括表征可用资源的有效利用和带宽的正确使用的参数,使得每一MPTCP子流在网络拥塞状态下进入拥塞避免阶段或者慢启动阶段,然后再进一步对进入拥塞避免阶段或者慢启动阶段的每一MPTCP子流的特征参数分别进行排序操作,得到排序结果,当特征参数至少包括往返时延、拥塞窗口值和带宽时延积时,排序结果可以包括每一MPTCP子流的往返时延、拥塞窗口及带宽时延积的排序值(sort_RTT、sort_CWND、sort_BDP),如果某一MPTCP子流的往返时延是最小值,则将其sort_RTT设置为1,如果该MPTCP子流的往返时延不是最小值,则将其sort_RTT设置为0;如果某一MPTCP子流的拥塞窗口值是最大值,则将其sort_CWND设置为1,如果该MPTCP子流的拥塞窗口值不是最大值,则将其sort_CWND设置为0;如果某一MPTCP子流的带宽时延积是最大值,则将其sort_BDP设置为1,如果该MPTCP子流的带宽时延积不是最大值,则将其sort_BDP设置为0。因此,排序结果可以用于表征每一MPTCP子流基于QoE参数值执行拥塞控制操作后的性能优劣等级。
步骤S130、基于所述QoE参数值和所述排序结果,将所述目标应用程序的数据包调度至目标MPTCP子流中。
其中,目标MPTCP子流的特征参数可以与目标应用程序的服务需求的匹配度最高。
具体的,移动智能终端的终端内核可以基于QoE参数值以及每一MPTCP子流的往返时延、拥塞窗口及带宽时延积的排序值(sort_RTT、sort_CWND、sort_BDP),将目标应用程序的数据包调度至与其服务需求匹配度最高的目标MPTCP子流中,其调度过程可以包括:针对trigger的值为1的情况,当确定QoE参数值为1时,暂停4G子流使用且调度WIFI子流作为目标MPTCP子流进行数据传输;当QoE参数值为2时,暂停WIFI子流使用且调度4G子流作为目标MPTCP子流进行数据传输;当QoE参数值为3时,可在WiFi子流和蜂窝子流中首选带宽时延积最大且往返时延最小的子流,次之选择拥塞窗口最大的子流,再次之选择往返时延最小的MPTCP子流,然后将选定好的子流作为目标MPTCP子流向服务器发送数据包;当QoE参数值为7时可在WiFi子流和蜂窝子流中首选拥塞窗口最大的子流,再将选定好的子流作为目标MPTCP子流传输大文件;当QoE参数值为11时可在WiFi子流和蜂窝子流中首选往返时延最小的子流,再将选定好的子流作为目标MPTCP子流传输小文件。
针对trigger的值为0时的MPTCP子流调度过程可以基于传统调度算法调度子流进行数据传输,此处不再赘述。
本发明提供的基于QoE的MPTCP数据包调度方法,首先获取能够表征目标应用程序的服务需求的QoE参数值,然后基于QoE参数值控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序值,最后再基于排序结果和QoE参数值执行针对目标应用程序的数据包的调度操作;由于每一MPTCP子流的特征参数至少包括往返时延、拥塞窗口值和带宽时延积,因此通过基于目标应用程序的QoE参数值对目标网络状态下每一MPTCP子流的特征参数进行排序的方式,能够实现准确获知网络拥塞状态下每一MPTCP子流的传输优劣性能目的,从而也能够实现将目标应用程序的数据包快速且精准调度至与其服务需求最为匹配的MPTCP子流中的目的,以此使得基于MPTCP的网络拥塞控制和数据包调度能够同时满足不同类型应用程序的数据传输需求,大大加速了MPTCP协议应用于实际边缘无线网络中的深度和广度。
可选的,步骤S120可以通过下述过程实现:
首先建立与服务器之间的多个MPTCP子流;然后检测到目标网络状态表征网络拥塞时,基于所述QoE参数值,控制执行针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作;最后确定所述调整操作执行完成时,对每一MPTCP子流的特征参数分别进行排序,得到排序结果。
具体的,移动智能终端的终端内核在检测到目标应用程序生成QoE参数值时,可以进一步通过系统调用connect连接到云服务器,并通过MPTCP协议与云服务器之间建立多个MPTCP子流;然后可以实时检测网络状态,以便于出现网络拥塞状态时可以基于QoE参数值及时调整每一MPTCP子流的拥塞窗口值或者慢启动阈值,从而避免或阻止MPTCP子流受到网络阻塞影响。其中,慢启动阈值和拥塞窗口值可以为每一MPTCP子流的待维护参数。
进一步的,当终端内核检测到每一MPTCP子流的拥塞窗口值或慢启动阈值被调整后,可以确定针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作已执行完成,此时可以对每一MPTCP子流的特征参数分别进行排序操作,从而得到排序结果。
本发明提供的基于QoE的MPTCP数据包调度方法,先基于目标应用程序的QoE参数值调整网络拥塞状态下每一MPTCP子流的拥塞窗口值或慢启动阈值,并在调整操作执行完成时进一步对每一MPTCP子流的特征参数分别进行排序,以此实现提高每一MPTCP子流的带宽使用效率和可用资源的有效利用率的目的,并为后续调度出与目标应用程序的服务需求匹配度最高的MPTCP子流提供有力依据。
可选的,移动智能终端建立与服务器之间的多个MPTCP子流的过程包括:
获取服务器的公网IP地址列表;确定公网IP地址列表中包括一个公网IP地址时,使用N个私有IP地址分别与所述公网IP地址之间建立N个MPTCP子流;确定所述公网IP地址列表中包括M个公网IP地址时,使用N个私有IP地址分别与所述M个公网IP地址之间建立N*M个MPTCP子流;其中,N、M分别为大于1的整数。
具体的,移动智能终端的终端内核首先接收云服务器发送过来的公网IP地址列表,并判断公网IP地址列表中的公网IP地址数量为一个还是多个,当确定公网IP地址列表中包括一个公网IP地址时,可以如图3所示,使用多个网络接口与该公网IP地址之间建立多个MPTCP子流,其建立过程包括:
首先,终端内核的MPTCP多路径控制模块向云服务器发送具有MPTCP_CAPABLE选项的SYN分组;然后,如果云服务器支持MPTCP协议,则向MPTCP多路径控制模块发送带有MPTCP_CAPABLE选项的SYN+ACK数据包;最后,MPTCP多路径控制模块通过向云服务器发送带有MPTCP_CAPABLE选项的ACK数据包来确认MPTCP连接,以此启动MPTCP连接并建立第一个MPTCP子流(主子流)。在建立第一个MPTCP子流的过程中,MPTCP多路径控制模块和云服务器交换用于生成令牌的随机密钥,该令牌在添加新子流时用于身份验证。当MPTCP多路径控制模块与云服务器通过三次握手(包含MPTCP_CAPABLE选项)方式建立第一个MPTCP子流(主子流)后,MPTCP多路径控制模块使用移动智能终端的第二个私有IP地址通过MPTCP_JOIN选项的SYN数据包来与云服务器的公网IP地址建立连接,则会成功建立第二个子流(从属子流)。云服务器会向MPTCP多路径控制模块发送私有IP地址列表,此时,MPTCP多路径控制模块如果使用移动智能终端的私有IP地址通过MPTCP_JOIN选项的SYN数据包与云服务器的私有IP地址建立连接,将会失败。当移动智能终端有N个私有IP地址时,可以通过使用SYN数据包(包含MPTCP_CAPABLE选项或MPTCP_JOIN选项)方式与云服务器之间建立N个MPTCP子流,移动智能终端上的每个应用程序都可以同时使用N个MPTCP子流向云服务器发送数据。
此外,当确定公网IP地址列表中包括M个公网IP地址时,可以如图4所示,使用N个网络接口与M公网IP地址之间建立N*M个MPTCP子流,其建立过程包括:
当公网IP地址列表中包括M个公网IP地址时,云服务器可通过云服务器管理员执行用户空间程序的方式将包括M个公网IP地址的公网IP地址列表传送至云服务器的Linux内核中,再由Linux内核将包括M个公网IP地址的公网IP地址列表发送至移动智能终端的终端内核中,此时终端内核可以基于N个私有IP地址与M个公网IP地址之间建立N*M个MPTCP子流,比如蜂窝子流和WiFi子流等,每个MPTCP子流分别通过使用SYN数据包(包含MPTCP_CAPABLE选项或MPTCP_JOIN选项)方式建立。
需要说明的是,当终端内核已建立好与云服务器之间的多个MPTCP子流时,可以通过目标应用程序向云服务器发送数据包的方式验证每个MPTCP子流是否能够稳定传输数据,比如,目标应用程序通过每一MPTCP子流分别向云服务器发送一个数据包,终端内核都会接收到云服务器反馈的确认(Acknowledge,ACK)包,并基于接收到的每一个ACK包的时间点,终端内核都会计算一次每一MPTCP子流的往返时延并执行往返时延的更新操作,以将每一MPTCP子流的往返时延更新为最小往返时延,其更新操作可以包括:当计算出的某一MPTCP子流的往返时延小于该MPTCP子流的当前往返时时,将当前时延更新为计算出的往返时延。
然后,当目标应用程序通过每一MPTCP子流分别向云服务器发送L个数据包后,终端内核在每一MPTCP子流上分别接收到L个ACK包并分别执行了W次往返时延(Round-TripTime,RTT)更新操作时,可以确定每一MPTCP子流都能够稳定传输数据,且每一MPTCP子流的往返时延均为最小往返时延,并进一步将触发器trigger的值置为1,trigger的值为1可以表征目标应用程序向终端内核传递的QoE参数开始影响拥塞控制和数据包调度的行为。其中,L的值可以为30,W可以小于或等于30。
本发明提供的基于QoE的MPTCP数据包调度方法,通过使用移动智能终端的N个私有IP地址与服务器的一个公网IP地址或多个公网IP地址之间建立MPTCP子流的方式,实现灵活且可靠建立多个MPTCP子流的目的,也有效提高了MPTCP子流的多样性。
可选的,针对目标应用程序的QoE参数值为3、7或11的情况,终端内核检测到目标网络状态表征网络拥塞时,基于QoE参数值,控制执行针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作,包括:
检测到目标网络状态表征网络拥塞时,首先分别判断每一MPTCP子流中的拥塞窗口值与慢启动阈值之间的大小关系;然后确定所述拥塞窗口值小于慢启动阈值且所述QoE参数值表征至少两种不同服务需求时,将所述慢启动阈值分别调整为第一预设倍数的拥塞窗口值;最后确定所述拥塞窗口值大于等于慢启动阈值且所述QoE参数值表征至少两种不同服务需求时,将所述拥塞窗口值分别调整为带宽时延积和拥塞窗口值中的最大值。
具体的,终端内核检测到目标网络状态为网络拥塞状态时,可以先判断每一MPTCP子流的拥塞窗口值与慢启动阈值的大小关系,当某一MPTCP子流的拥塞窗口值小于慢启动阈值且QoE参数值为3、7或11时,控制该MPTCP子流进行慢启动阶段,并在trigger的值为1、slowone的值为1时,将该MPTCP子流的慢启动阈值(ssthresh)调整为9/8倍的拥塞窗口值(CWND),也即ssthresh=CWND*9/8,同时设置slowone的值为0;当trigger的值为1、slowone的值为0时,则将该MPTCP子流的ssthresh设置为CWND,也即ssthresh=CWND。其中,条件变量slowone的作用是每轮拥塞控制只对每一MPTCP子流的慢启动阈值分别执行一次更新操作。
当某一MPTCP子流的拥塞窗口值大于或等于慢启动阈值且QoE参数值为3、7或11时,控制该MPTCP子流进入拥塞避免阶段,然后基于该MPTCP子流的最小往返时延和瓶颈带宽估计值计算出该MPTCP子流的带宽时延积(bandwidth-delay product,BDP)的值,然后将该MPTCP子流的BDP和CWND中的最大值设置为该MPTCP子流的拥塞窗口值,也即CWND=max(CWND,BDP)。以此方式实现各个MPTCP子流的拥塞窗口值或慢启动阈值的调整操作。
可选的,针对目标应用程序的QoE参数值为3、7或11的情况,终端内核检测到目标网络状态表征网络拥塞时,基于QoE参数值,控制执行针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作,包括:
检测到目标网络状态表征网络拥塞且所述QoE参数值表征至少两种不同服务需求时,向服务器发送数据包;确定预设时长内没有接收到所述服务器针对所述数据包反馈的确认包时,将每一MPTCP子流中的慢启动阈值分别调整为第二预设倍数的拥塞窗口值和预设拥塞窗口阈值中的最大值。
具体的,终端内核检测到目标网络状态为网络拥塞状态且QoE参数值表征至少两种不同服务需求时,也即QoE参数值为3、7或11时,控制目标应用程序通过每一MPTCP子流分别向云服务器发送数据包且接收云服务器针对每一个数据包分别反馈的ACK包,当确定某一MPTCP子流发送数据包后预设时长内没有接收到云服务器针对该数据包反馈的ACK包时,则认为该MPTCP子流发生丢包,此时终端内核控制调整该MPTCP子流的慢启动阈值,可以将该MPTCP子流的慢启动阈值调整为0.7倍拥塞窗口值与2中的最大值,也即SSThresh=max((CWND*717)/1024,2);也可以以确保更好吞吐量及带宽最大利用率为目标将该MPTCP子流的慢启动阈值调整为0.9倍拥塞窗口值与2中的最大值,也即SSThresh=max((CWND*922)/1024,2)。其中,第二预设倍数可以为0.7或者0.9。
可选的,针对目标应用程序的QoE参数值为1或2的情况,终端内核检测到目标网络状态表征网络拥塞时,基于QoE参数值,控制执行针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作,包括:
首先确定所述QoE参数值表征一种服务需求的第一MPTCP子流时,判断通过所述第一MPTCP子流向服务器发送数据包的累计个数;然后确定当所述累计个数超过预设个数阈值时,控制停止与服务器之间在所述第一MPTCP子流中的数据传输操作。
具体的,基于QoE参数值为1或2的情况,可以设定移动智能终端包括两个网络接口且对应WIFI子流和4G子流,终端内核可以基于自身接收能力设置接收窗口值(RWND),并将接收窗口值写入TCP头部中的窗口字段中后发送至云服务器,云服务器的发送窗口上限值可以设置为拥塞窗口值和接收窗口值中的最小值,也即云服务器的发送窗口上限为min(CWND,RWND);并且,每次目标应用程序通过某一MPTCP子流向云服务器发送数据包时,属于该MPTCP子流的nif_sends的值将增加1,变量nif_sends表示通过该MPTCP子流发送的数据包数量。
进一步的,当终端内核确定QoE参数值为1且数据包通过4G子流与云服务器之间进行数据传输时,确定WiFi子流中发送的数据包数量nif_sends,当确定通过WiFi子流发送的数据包数量nif_sends大于J时,则通过4G子流向云服务器发送ZeroWindow数据包的方式停止移动智能终端和云服务器之间在4G子流中的数据传输;当终端内核确定QoE参数值为2且数据包通过WIFI子流与云服务器之间进行数据传输时,确定4G子流中发送的数据包数量nif_sends,当确定通过4G子流发送的数据包数量nif_sends大于J时,则通过WiFi子流向云服务器发送Zero Window数据包的方式停止移动智能终端和云服务器之间在WiFi子流中的数据传输。其中,J的取值可以基于抓包分析的信息量所包含的数据包个数确定,比如J的值可以为10。
此外,基于QoE参数值为1或2的情况,为保证云服务器及时获知移动智能终端再次接收数据的时间点,云服务器可以每隔一定时间分别通过WIFI子流或者4G子流向移动智能终端发送keepalive包,且当云服务器接收到移动智能终端基于keepalive包反馈的TCPZeroWindow数据包时,可继续维持WIFI子流或者4G子流连接;当当移动智能终端处于暂停状态时接收到数据传输启动指令时,可以在将暂态状态更新为数据传输状态,并进一步通过向云服务器发送TCP Window更新包的方式告知云服务器恢复数据流的时间点。以此避免云服务器在移动智能终端暂时不发送数据时关掉对应MPTCP子流连接或者云服务器长时间接收不到移动智能终端发送数据时关掉MPTCP子流连接。当QoE等于1或2时,移动智能终端还可以以不通过4G子流或WiFi子流发送任何数据包的方式节省一定带宽。
需要说明的是,针对云服务器的发送窗口上限为min(CWND,RWND),如果RWND小于CWND,移动智能终端的接收能力限制了云服务器发送窗口的最大值,如果CWND小于RWND,则网络拥塞限制了云服务器发送窗口的最大值;由于TCP头只为窗口段变量(RWND)分配16位且由移动智能终端维护,因此,移动智能终端可以通告2
本发明提供的基于QoE的MPTCP数据包调度方法,在目标应用程序的QoE参数值表征至少两种不同服务需求时通过执行针对每一MPTCP子流的慢启动阈值或拥塞窗口值的调整操作的方式,实现基于MPTCP进行拥塞控制或者丢包处理的目的,在目标应用程序的QoE参数值表征一种服务需求时,通过对两种MPTCP子流进行互斥使用的方式实现两种MPTCP子流的拥塞控制目的,不仅提高了移动智能终端针对每一MPTCP执行拥塞控制的灵活性和可靠性,也提高了移动智能终端与云服务器之间进行数据交互的多样性和准确性。
可选的,步骤S110的过程可以包括:先获取预设套接字地址,然后再进一步从预设套接字地址的预设字节处读取目标应用程序的QoE参数值。
具体的,当目标应用程序基于自身对数据传输的服务需求生成QoE参数值时,可以通过预设套接字地址将QoE参数值传递至终端内核,目标应用程序通过预设套接字地址将QoE参数值传递至终端内核的方式包括:如图5b所示,当目标应用程序使用IPv4连接云服务器时,目标应用程序可以使用struct sockaddr_in中的第16个字节向终端内核传递QoE参数值;如图5c所示,当目标应用程序使用IPv6连接云服务器时,目标应用程序可以使用struct sockaddr_in6中的第2个字节向终端内核发送QoE参数值。其中,sockaddr和sockaddr_in均为16字节,并且由于sockaddr_in中第9个字节至第16个字节均没有被使用,因此,这8个字节的任何一个字节都可以用来放置QoE参数值,本发明使用sockaddr_in和sockaddr中的第16个字节放置QoE参数值;其中,struct sockaddr和struct sockaddr_in分别表示IPv4套接字,sockaddr_in6表示IPv6套接字。
需要说明的是,如图5所述,sockaddr和sockaddr_in这两个预设套接字都是16个字节,struct sockaddr_in6这一预设套接字是28个字节,这三个预设套接字都包含2字节的sin_family。sockaddr使用剩余的14个字节表示sa_data,而sockaddr_in将14个字节拆分为sin_port(端口)、sin_addr(IP地址)和sin_zero,sin_zero用于填充字节,以便sockaddr_in和sockaddr保持相同的大小。并且,在用户空间中,sockaddr_in结构填充了协议族类型、IP地址和端口号,然后转换到终端内核中的sockaddr。
在struct sockaddr_in6中,成员sin6_family的类型是unsigned short int且其最大值为45(include/linux/socket.h)、远小于255(第一个字节),因此,成员sin6_family的第二个字节也可以用来表示QoE参数,如图5c所示。当然对于struct sockaddr_in,成员sin_family的第二个字节也可以用来表示QoE参数,如图5b所示。
本发明提供的基于QoE的MPTCP数据包调度方法,通过从预设套接字的预设字节处读取QoE参数值的方式,实现了简单且高效地向终端内核传递QoE参数值的目的,也有效提高了QoE参数值的传输可靠性。
为了说明本发明用于边缘无线网络的QoE参数值驱动的MPTCP数据包调度方法的可用性和有效性,可以设置图6所示的测试环境进行验证,在图6中,云服务器是一个远程云服务器,该远程云服务器具有2个CPU核、4GB内存、4Mbps下行链路带宽,安装了Fedora 32(5.4版Linux内核),使用一个以太网接口,在Linux内核中集成MPTCP v0.95,且使用默认LRF调度器;移动智能终端是运行Android 11的一加手机OnePlus 8T,使用4G和WiFi网络接口,Android 11内核中集成修改后的MPTCP v0.95(包括拥塞控制QCC和数据包调度QMS)。使用Android 11中的浏览器访问云服务器提供的视频(http://8.140.122.222/jdhl.mp4)的同时,在云服务器使用tcpdump命令进行抓包分析,可以确定是通过两条路径同时传输视频数据,如图7所示。Android11中使用了两个命令(iperf3和ping)来测试从OnePlus 8T到云服务器的网络性能,所测网络参数如图8所示。Android11的TTL(生存时间)默认值为64,因此OnePlus 8T通过WiFi和4G与云服务器之间的跳数分别为12(64-52)和14(64-50),RTT(往返时间)以毫秒为单位,ping命令输出中的mdev参数代表平均偏差(总体标准偏差),本质上是每个RTT距离RTT平均值的均值,mdev越高RTT的变化幅度越大。
接下来测试两种类型的数据:(1)一个160MB的单个文件(使用iperf3命令生成);(2)来自Linux内核的文件夹drivers,包括4749个文件,总计160MB,文件大小范围和文件数之间的对应关系如图9所示。
在Android 11中实现本发明方法,测试并比较了拥塞控制和数据包调度的三种组合:(1)def-cubic:默认LRF调度器和cubic拥塞控制器的组合;(2)def-olia:默认LRF调度器和olia拥塞控制器的组合;(3)QMS-QCC:QMS调度器和QCC拥塞控制器的组合。
下面以2轮实验为例:(1)使用scp向云服务器发送160MB数据(文件夹drivers);(2)使用iperf3向云服务器发送160MB数据。注:scp和iperf3的源代码已经被修改,用来支持QoE参数的传递。
用于边缘无线网络的QoE驱动的MPTCP数据包调度方法使用实例包括以下步骤:
步骤1.当QoE参数值分别为1、2、3、7和11时,使用scp通过def-cubic向云服务器发送160MB数据(文件夹drivers);
步骤2.当QoE参数值分别为1、2、3、7和11时,使用scp通过def-olia向云服务器发送160MB数据(文件夹drivers);
步骤3.当QoE参数值分别为1、2、3、7和11时,使用scp通过QMS-QCC向云服务器发送160MB数据(文件夹drivers);
步骤4.当QoE参数值分别为1、2、3、7和11时,使用iperf3通过def-cubic向云服务器发送160MB数据;
步骤5.当QoE参数值分别为1、2、3、7和11时,使用iperf3通过def-olia向云服务器发送160MB数据;
步骤6.当QoE参数值分别为1、2、3、7和11时,使用iperf3通过QMS-QCC向云服务器发送160MB数据。
步骤1中还包括:手机端设置数据包调度和拥塞控制(def-cubic)、手机端使用scp上传数据并计时,具体的,所述步骤1包括以下步骤:
步骤101.QoE参数值=1时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time scp-rQ 1drivers 8.140.122.222:/root/上传数据并计时;
步骤102.QoE参数值=2时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time scp-rQ 2drivers 8.140.122.222:/root/上传数据并计时;
步骤103.QoE参数值=3时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time scp-rQ 3drivers 8.140.122.222:/root/上传数据并计时;
步骤104.QoE参数值=7时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time scp-rQ 7drivers 8.140.122.222:/root/上传数据并计时;
步骤105.QoE参数值=11时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time scp-rQ 11drivers 8.140.122.222:/root/上传数据并计时;
至此,步骤1结束。
步骤2中还包括:手机端设置调度器和拥塞控制器(def-olia)、手机端使用scp上传数据并计时,具体的,所述步骤2包括以下步骤:
步骤201.QoE参数值=1时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time scp-rQ 1drivers 8.140.122.222:/root/上传数据并计时;
步骤202.QoE参数值=2时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time scp-rQ 2drivers 8.140.122.222:/root/上传数据并计时;
步骤203.QoE参数值=3时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time scp-rQ 3drivers 8.140.122.222:/root/上传数据并计时;
步骤204.QoE参数值=7时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time scp-rQ 7drivers 8.140.122.222:/root/上传数据并计时;
步骤205.QoE参数值=11时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time scp-rQ 11drivers 8.140.122.222:/root/上传数据并计时;
至此,步骤2结束。
步骤3中还包括:手机端设置调度器和拥塞控制器(QMS-QCC)、手机端使用scp上传数据并计时,具体的,所述步骤3包括以下步骤:
步骤301.QoE参数值=1时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time scp-rQ 1drivers 8.140.122.222:/root/上传数据并计时;
步骤302.QoE参数值=2时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time scp-rQ 2drivers 8.140.122.222:/root/上传数据并计时;
步骤303.QoE参数值=3时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time scp-rQ 3drivers 8.140.122.222:/root/上传数据并计时;
步骤304.QoE参数值=7时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time scp-rQ 7drivers 8.140.122.222:/root/上传数据并计时;
步骤305.QoE参数值=11时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time scp-rQ 11drivers 8.140.122.222:/root/上传数据并计时;
至此,步骤3结束。
步骤1-3的测试结果如图10所示。当QoE参数值等于1时,数据只在WiFi子流中传输,当QoE参数值等于2时,数据只(主要)在4G子流中传输,即当QoE等于1或2时,暂停4G子流和使用WiFi子流;反之亦然。如图8所示,WiFi接口的平均上行带宽为比4G接口大。如图10所示,当QoE参数值等于3、7和11时,对于QMS-QCC来说,WiFi子流传输数据的时间大约是4G子流的两倍。当def-cubic和def-olia的QoE参数值等于3和7、def-cubic的QoE参数值等于11时,虽然可以使用WiFi子流和4G子流从头到尾传输数据,但是其数据传输时间都比QMS-QCC要长,以此说明QCC和QMS具有更好的数据包调度性能。
步骤4中还包括:手机端设置调度器和拥塞控制器(def-cubic)、手机端使用iperf3上传数据并计时,具体的,所述步骤4包括以下步骤:
步骤401.QoE参数值=1时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 1-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤402.QoE参数值=2时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 2-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤403.QoE参数值=3时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 3-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤404.QoE参数值=7时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 7-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤405.QoE参数值=11时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=cubic设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 11-c 8.140.122.222-f K-n 160M上传数据并计时;
至此,步骤4结束。
步骤5中还包括:手机端设置调度器和拥塞控制器(def-olia)、手机端使用iperf3上传数据并计时,具体的,所述步骤5包括以下步骤:
步骤501.QoE参数值=1时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 1-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤502.QoE参数值=2时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 2-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤503.QoE参数值=3时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 3-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤504.QoE参数值=7时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 7-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤505.QoE参数值=11时,手机端使用sysctl net.mptcp.mptcp_scheduler=default&&sysctl net.ipv4.tcp_congestion_control=olia设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 11-c 8.140.122.222-f K-n 160M上传数据并计时;
至此,步骤5结束。
步骤6中还包括:手机端设置调度器和拥塞控制器(QMS-QCC)、手机端使用iperf3上传数据并计时,具体的,所述步骤6包括以下步骤:
步骤601.QoE参数值=1时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 1-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤602.QoE参数值=2时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 2-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤603.QoE参数值=3时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 3-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤604.QoE参数值=7时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 7-c 8.140.122.222-f K-n 160M上传数据并计时;
步骤605.QoE参数值=11时,手机端使用sysctl net.mptcp.mptcp_scheduler=QMS&&sysctl net.ipv4.tcp_congestion_control=QCC设置调度器和拥塞控制器;手机端执行命令time iperf3--qoe 11-c 8.140.122.222-f K-n 160M上传数据并计时;
至此,步骤6结束。
步骤4-6的测试结果如图11所示。当QoE参数值等于1时,数据只在WiFi子流中传输;当QoE参数值等于2时,数据只(主要)在4G子流中传输,即当QoE参数值等于1或2时,暂停4G子流和使用WiFi子流;反之亦然。如图8所示,WiFi接口的平均上行带宽为比4G接口大。如图11所示,当QoE参数值等于3、7、11时,对于def-cubic来说,WiFi子流传输数据的时间大约是4G子流传输数据的5倍;对于def-olia,QoE参数值等于3和11时,WiFi子流传输数据的时间比4G子流长,但QoE参数值等于11时,4G子流传输数据的时间比WiFi子流长。对于QMS-QCC,当QoE参数值等于3、7、11时,同时使用WiFi和4G子流从头到尾传输数据,数据传输完成时间小于def-cubic和def-olia,说明QCC和QMS具有更好的数据包调度性能。
综合步骤1-6的测试结果可知,无论是大块数据还是小块数据,在QoE参数值不同的取值情况下,QCC和QMS都具有更好的数据包调度性能。
下面对本发明提供的基于QoE的MPTCP数据包调度装置进行描述,下文描述的基于QoE的MPTCP数据包调度装置与上文描述的基于QoE的MPTCP数据包调度方法可相互对应参照。
本发明提供了一种基于QoE的MPTCP数据包调度装置,如图12所示,该基于QoE的MPTCP数据包调度装置1200,包括:
获取模块1201,用于获取目标应用程序的QoE参数值;其中,所述QoE参数值用于表征所述目标应用程序的服务需求;
控制模块1202,用于基于所述QoE参数值,控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序操作,得到排序结果;其中,所述特征参数至少包括往返时延、拥塞窗口值和带宽时延积;
调度模块1203,用于基于所述QoE参数值和所述排序结果,将所述目标应用程序的数据包调度至目标MPTCP子流中;其中,所述目标MPTCP子流的特征参数与所述目标应用程序的服务需求的匹配度最高。
可选的,控制模块1202,具体可以用于建立与服务器之间的多个MPTCP子流;检测到目标网络状态表征网络拥塞时,基于所述QoE参数值,控制执行针对每一MPTCP子流的拥塞窗口值或慢启动阈值的调整操作;确定所述调整操作执行完成时,对每一MPTCP子流的特征参数分别进行排序,得到排序结果。
可选的,控制模块1202,具体还可以用于检测到目标网络状态表征网络拥塞时,分别判断每一MPTCP子流中的拥塞窗口值与慢启动阈值之间的大小关系;确定所述拥塞窗口值小于慢启动阈值且所述QoE参数值表征至少两种不同服务需求时,将所述慢启动阈值分别调整为第一预设倍数的拥塞窗口值;确定所述拥塞窗口值大于等于慢启动阈值且所述QoE参数值表征至少两种不同服务需求时,将所述拥塞窗口值分别调整为带宽时延积和拥塞窗口值中的最大值。
可选的,控制模块1202,具体还可以用于获取服务器的公网IP地址列表;确定所述公网IP地址列表中包括一个公网IP地址时,使用N个私有IP地址分别与所述公网IP地址之间建立N个MPTCP子流;确定所述公网IP地址列表中包括M个公网IP地址时,使用N个私有IP地址分别与所述M个公网IP地址之间建立N*M个MPTCP子流;其中,N、M分别为大于1的整数。
可选的,控制模块1202,具体还可以用于检测到目标网络状态表征网络拥塞且所述QoE参数值表征至少两种不同服务需求时,向服务器发送数据包;确定预设时长内没有接收到所述服务器针对所述数据包反馈的确认包时,将每一MPTCP子流中的慢启动阈值分别调整为第二预设倍数的拥塞窗口值和预设拥塞窗口阈值中的最大值。
可选的,控制模块1202,具体还可以用于确定所述QoE参数值表征一种服务需求的第一MPTCP子流时,判断通过所述第一MPTCP子流向服务器发送数据包的累计个数;当所述累计个数超过预设个数阈值时,控制停止与服务器之间在所述第一MPTCP子流中的数据传输操作。
可选的,获取模块1201,具体还可以用于获取预设套接字地址,并从所述预设套接字地址的预设字节处读取目标应用程序的QoE参数值。
图13示例了一种电子设备的实体结构示意图,如图13所示,该电子设备1300可以包括:处理器(processor)1310、通信接口(Communications Interface)1320、存储器(memory)1330和通信总线1340,其中,处理器1310,通信接口1320,存储器1330通过通信总线1340完成相互间的通信。处理器1310可以调用存储器1330中的逻辑指令,以执行基于QoE的MPTCP数据包调度方法,该方法包括:获取目标应用程序的QoE参数值;其中,所述QoE参数值用于表征所述目标应用程序的服务需求;基于所述QoE参数值,控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序操作,得到排序结果;其中,所述特征参数至少包括往返时延、拥塞窗口值和带宽时延积;基于所述QoE参数值和所述排序结果,将所述目标应用程序的数据包调度至目标MPTCP子流中;其中,所述目标MPTCP子流的特征参数与所述目标应用程序的服务需求的匹配度最高。
此外,上述的存储器1330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于QoE的MPTCP数据包调度方法,该方法包括:获取目标应用程序的QoE参数值;其中,所述QoE参数值用于表征所述目标应用程序的服务需求;基于所述QoE参数值,控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序操作,得到排序结果;其中,所述特征参数至少包括往返时延、拥塞窗口值和带宽时延积;基于所述QoE参数值和所述排序结果,将所述目标应用程序的数据包调度至目标MPTCP子流中;其中,所述目标MPTCP子流的特征参数与所述目标应用程序的服务需求的匹配度最高。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的基于QoE的MPTCP数据包调度方法,该方法包括:获取目标应用程序的QoE参数值;其中,所述QoE参数值用于表征所述目标应用程序的服务需求;基于所述QoE参数值,控制执行针对目标网络状态下每一MPTCP子流的特征参数的排序操作,得到排序结果;其中,所述特征参数至少包括往返时延、拥塞窗口值和带宽时延积;基于所述QoE参数值和所述排序结果,将所述目标应用程序的数据包调度至目标MPTCP子流中;其中,所述目标MPTCP子流的特征参数与所述目标应用程序的服务需求的匹配度最高。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
- 一种基于QoE的MPTCP数据包调度方法及装置
- 一种基于时效性的数据包调度方法、装置及电子设备