多路径聚合调度方法及电子设备与流程

文档序号:31465531发布日期:2022-09-09 20:58阅读:78来源:国知局
多路径聚合调度方法及电子设备与流程
多路径聚合调度方法及电子设备
1.本技术要求于2021年03月04日提交中国专利局、申请号为2021102416454、申请名称为“一种设备间低时延聚合调度的方法”的中国专利申请的优先权,以及要求于2021年05月31日提交中国专利局、申请号为2021106033121、申请名称为“多路径聚合调度方法及电子设备”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及电子技术领域,尤其涉及多路径聚合调度方法及电子设备。


背景技术:

3.随着通信技术的发展以及智能设备的普及,万物互联的人工智能物联网(artificial intelligence&internet of things,aiot)时代正在到来。受益于操作系统的分布式互联能力的提高,智能穿戴设备、智能家居设备、移动终端等设备可以通过网络进行数据交互,并且基于该数据交互去协作实现特定的功能。
4.智能穿戴设备、智能家居设备、移动终端等电子设备已经可以通过无线网络实现数据交互。但是,相比于多个电子设备对通信资源的需求,空间中可以使用的通信资源是有限的。例如,当多个设备接入同一个接入设备提供的无线网络时,多个设备需要竞争有限的无线空口资源以进行数据交互。电子设备在竞争无线空口资源失败后,电子设备会将等待发送的数据临时存储在本地,等待下一次竞争成功。
5.为了保证客户端产生的数据可以及时被送到服务端,一种可行的解决方法为:当客户端的协议栈支持多路径传输控制协议(multipathtransmission control protocol,mptcp)时,客户端上的业务可以通过多条路径将数据传输到服务端时。在该情况下,当一条路径堵塞的概率为pa时,若客户端上的业务通过m条互相独立路径将完全相同的数据发送到服务端时,数据发送堵塞的概率为极大的降低了单条路径拥塞导致的影响。
6.虽然以mptcp为代表的多路径传输协议,利用多条路径增加了传输的稳健性,降低了数据拥塞的发生概率,但是并没有利用多条路径增加数据传输的速率,没有充分利用多路径资源。


技术实现要素:

7.本技术实施例提供了一种多路径聚合调度方法,该方法包括:客户端上的协议栈将网络报文按照特定的顺序分配到不同的路径上,使得在某条路径上在后发送的网络报文,在其他的某一条路径上可以在先发送,进而提高了网络报文传输的速率。
8.第一方面,本技术提供了一种多路径聚合调度方法,该方法包括:客户端与服务端之间存在n条路径,该n条路径包括第一路径和第二路径,该n为大于等于2的整数;该客户端以第一顺序在该第一路径上发送m个网络报文,该m大于等于2的整数;该客户段以第二顺序在该第二路径上发送该m个网络报文,该第一顺序与该第二顺序不同。
9.在上述实施例中,客户端可以在不同路径上以不同的顺序发送相同的多个网络报
文,必然存在至少一个网络报文,在第二路径上优先到达服务端,进而提高了该网络报文的传输速率。其次,由于不同路径上的网络报文你的传输顺序不同,从统计的角度看,有助于提高m个网络报文的平均传输速率。
10.结合第一方面的一些实施例,在一些实施例中,该方法还包括:该n条路径还包括第三路径;该客户端以第三顺序在该第三路径上发送该m个网络报文,该第三顺序与该第一顺序不同,该第三顺序与该第二顺序不同。
11.在上述实施例中,客户端与服务单可以存在多条路径,并不局限与两条路径或三条路径,不同路径上网络报文的传输顺序各不相同,则必然存在至少一个网络报文,在多条路径中的一条优先达到服务端,进而提高了该网络报文的传输速率。其次,由于不同路径上的网络报文你的传输顺序两两互不相同,从统计的角度看,有助于提高m个网络报文的平均传输速率。
12.结合第一方面的一些实施例,在一些实施例中,该第一顺序与该第二顺序的距离最大。
13.在上述实施例中,由于第一顺序与第二顺序的距离最大,所以第一路径上在后发送的网络报文会在第二路径上在前发送,且第一路径上在前发送的网络报文会在第二路径上在后发送,使得多个网络报文的平均传输速率等于两条路径传输速率之和。
14.结合第一方面的一些实施例,在一些实施例中,该第一顺序与该第二顺序的互相关最小。
15.在上述实施例中,由于第一顺序与第二顺序的互相关最小,所以第一路径上在后发送的网络报文会在第二路径上在前发送,且第一路径上在前发送的网络报文会在第二路径上在后发送,使得多个网络报文的平均传输速率等于两条路径传输速率之和。
16.结合第一方面的一些实施例,在一些实施例中,该第一顺序、该第二顺序、该第三顺序两两之间的距离和最大。
17.在上述实施例中,由于不同路径上网络报文的发送顺序的两两之间的距离和最大,使得多个网络报文的平均传输速率等于多条路径传输速率之和。
18.结合第一方面的一些实施例,在一些实施例中,该第一顺序、该第二顺序、该第三顺序两两之间的互相关的和最小。
19.在上述实施例中,由于不同路径上网络报文的发送顺序的两两之间的互相关的和最小,使得多个网络报文的平均传输速率等于多条路径传输速率之和。
20.结合第一方面的一些实施例,在一些实施例中,该方法还包括:该客户端接收到确认报文后,该客户端删除并停止发送该m个网络报文。
21.在上述实施例中,服务端在接收到m个网络报文后,可以发送确认报文给客户端,使得客户端删除并停止发送该m个网络报文,进而降低客户端的冗余发送。
22.结合第一方面的一些实施例,在一些实施例中,该m个网络报文组成一个数据块,该数据块用于完成特定的功能。
23.在上述实施例中,可以将一个具有多个网络报文的数据块作为基础的处理单元,使得提高的网络报文的平均传输速率能够直接的提升用户的体验。
24.结合第一方面的一些实施例,在一些实施例中,该m个网络报文没有重复。
25.在上述实施例中,由于多路径聚合调度方法本身是冗余发送,稳健性强,所以m个
网路报文可以不配置重复的网络报文。
26.第二方面,本技术提供了另一种多路径聚合调度方法,该方法包括:客户端与服务端之间存在n条路径,该n条路径包括第一路径和第二路径,该n为大于等于2的整数;该客户端在该第一路径上发送m个网络报文,该m个网络报文包括第一网络报文;该客户段在该第二路径上发送该m个网络报文;该第一网络报文位于该第一路径上m个网络报文中的前半段;该第一网络报文位于该第二路径上m个网络报文中的后半段。
27.在上述实施例中,客户端发送的网络报文可以不确定多个网络报文在不同路径上的发送顺序,在发送网络报文过程中,保证存在至少一个网络报文在第一路径上在先发送,而在第二路径上在后发送。
28.结合第二方面的一些实施例,在一些实施例中,该m个网络报文还包括第二网络报文;该第二网络报文位于该第一路径上m个网络报文中的前1/n段;该第二网络报文位于该第二路径上m个网络报文中的后(n-1)/n段。
29.在上述实施例中,当至少存在一个网络报文位于前1/n段,后一个网络报文位于后(n-1)/n段时,对于该一个或多个网络报文来说,可以提高该一个或多个网络报文的传输速率;其次,从统计意义上,有助于提高m个网络报文的平均传输速率。
30.结合第二方面的一些实施例,在一些实施例中,该m个网络报文还包括第二网络报文;该第二网络报文位于该第一路径上m个网络报文中的前1/n段;该第二网络报文位于该第二路径上m个网络报文中的后1/n段。
31.在上述实施例中,当至少存在一个网络报文位于前1/n段,后一个网络报文位于后1/n段时,对于该一个或多个网络报文来说,传输速率可以等价于较快路径上的传输速率;其次,从统计意义上,m个网络报文的平均传输速率等于两条路径之和。
32.结合第二方面的一些实施例,在一些实施例中,该m个网络报文组成至少一个数据块,该数据块用于完成特定的功能。
33.在上述实施例中,可以将一个具有多个网络报文的数据块作为基础的处理单元,使得提高的网络报文的平均传输速率能够直接的提升用户的体验。
34.结合第二方面的一些实施例,在一些实施例中,该m个网络报文没有重复。
35.在上述实施例中,由于多路径聚合调度方法本身是冗余发送,稳健性强,所以m个网路报文可以不配置重复的网络报文。
36.结合第二方面的一些实施例,在一些实施例中,该方法还包括:该客户端接收到确认报文后,该客户端删除并停止发送该m个网络报文。
37.服务端在接收到m个网络报文后,可以发送确认报文给客户端,使得客户端删除并停止发送该m个网络报文,进而降低客户端的冗余发送。
38.第三方面,本技术提供了另一种多路径聚合调度方法,该方法包括:客户端与服务端之间存在n条路径,该n条路径包括第一路径和第二路径,该n为大于等于2的整数;该客户端在n条路径上分别重复的发送m个网络报文;该第一路径上的前k个网络报文与该第二路径上的前l个网络报文之间没有重复的网络报文,该k与l的和等于m,该k为正整数,该l为正整数。
39.在上述实施例中,客户端在两条路径上重复发送m个网络报文,当第一条路径上的优先发送的多个网络报文与第二条路径上在前发送的多个网络报文之间能够构成完备的m
个网络报文时,统计意义上,这m个网络报文的传输速率等于两条路径传输速率之和。
40.结合第三方面的一些实施例,在一些实施例中,该第一路径上的前k个网络报文的排列顺序是该第二路径上的后k个网络报文的排列顺序的逆序。
41.在上述实施例中,若第一路径上在前发送的网络报文的排列顺序与第二路径上在后发送的网络报文之间的排列顺序为逆序关系时,这m个网络报文的传输速率等于两条路径传输速率之和。
42.结合第三方面的一些实施例,在一些实施例中,还包括:该n条路径还包括第三路径;该第一路径上的前r个网络报文、该第二路径上的前s个网络报文和该第三路径上前t个网络报文之间没有重复,该r、s和t的和等于m,该r为正整数,该s为正整数;该t为正整数。
43.在上述实施例中,不限于两条路径,在多条路径的情况下,在统计意义下,可以使得m个网络报文的平均传输速率等于多条路径的传输速率之和。
44.结合第三方面的一些实施例,在一些实施例中,该m个网络报文组成至少一个数据块,该数据块用于完成特定的功能。
45.在上述实施例中,可以将一个具有多个网络报文的数据块作为基础的处理单元,使得提高的网络报文的平均传输速率能够直接的提升用户的体验。
46.结合第三方面的一些实施例,在一些实施例中,该m个网络报文没有重复。
47.在上述实施例中,由于多路径聚合调度方法本身是冗余发送,稳健性强,所以m个网路报文可以不配置重复的网络报文。
48.结合第三方面的一些实施例,在一些实施例中,该方法还包括:该客户端接收到确认报文后,该客户端删除并停止发送该m个网络报文。
49.服务端在接收到m个网络报文后,可以发送确认报文给客户端,使得客户端删除并停止发送该m个网络报文,进而降低客户端的冗余发送。
50.第四方面,本技术提供了另一种多路径聚合调度方法,该方法包括:客户端与服务端之间存在n条路径,该n条路径包括第一路径和第二路径,该n为大于等于2的整数;当该客户端没有接收到该服务端发送的确认报文前,该客户端以第一顺序发送m个网络报文,该客户端以第二顺序发送该第二网络报文;当该客户端接收到该服务端发送的确认报文后,该客户端停止在该n条路径上发送该m个网络报文;该网络报文用于确认服务端收到了该m个网络报文。
51.在上述实施例中,客户端在不同路径上以不同的顺序发送m个网络报文,能够提高m个网络报文的平均传输速率。
52.结合第四方面的一些实施例,在一些实施例中,该方法还包括:该n条路径还包括第三路径;该客户端以第三顺序在该第三路径上发送该m个网络报文,该第三顺序与该第一顺序不同,该第三顺序与该第二顺序不同。
53.在上述实施例中,客户端与服务单可以存在多条路径,并不局限与两条路径或三条路径,不同路径上网络报文的传输顺序各不相同,则必然存在至少一个网络报文,在多条路径中的一条优先达到服务端,进而提高了该网络报文的传输速率。其次,由于不同路径上的网络报文你的传输顺序两两互不相同,从统计的角度看,有助于提高m个网络报文的平均传输速率。
54.结合第四方面的一些实施例,在一些实施例中,该第一顺序与该第二顺序的距离
最大。
55.在上述实施例中,由于第一顺序与第二顺序的距离最大,所以第一路径上在后发送的网络报文会在第二路径上在前发送,且第一路径上在前发送的网络报文会在第二路径上在后发送,使得多个网络报文的平均传输速率等于两条路径传输速率之和。
56.结合第四方面的一些实施例,在一些实施例中,该第一顺序与该第二顺序的互相关最小。
57.在上述实施例中,由于第一顺序与第二顺序的互相关最小,所以第一路径上在后发送的网络报文会在第二路径上在前发送,且第一路径上在前发送的网络报文会在第二路径上在后发送,使得多个网络报文的平均传输速率等于两条路径传输速率之和。
58.结合第四方面的一些实施例,在一些实施例中,该第一顺序、该第二顺序、该第三顺序两两之间的距离和最大。
59.在上述实施例中,由于不同路径上网络报文的发送顺序的两两之间的距离和最大,使得多个网络报文的平均传输速率等于多条路径传输速率之和。
60.结合第四方面的一些实施例,在一些实施例中,该第一顺序、该第二顺序、该第三顺序两两之间的互相关的和最小。
61.在上述实施例中,由于不同路径上网络报文的发送顺序的两两之间的互相关的和最小,使得多个网络报文的平均传输速率等于多条路径传输速率之和。
62.结合第四方面的一些实施例,在一些实施例中,该m个网络报文组成一个数据块,该数据块用于完成特定的功能。
63.在上述实施例中,可以将一个具有多个网络报文的数据块作为基础的处理单元,使得提高的网络报文的平均传输速率能够直接的提升用户的体验。
64.结合第四方面的一些实施例,在一些实施例中,该m个网络报文没有重复。
65.在上述实施例中,由于多路径聚合调度方法本身是冗余发送,稳健性强,所以m个网路报文可以不配置重复的网络报文。
66.第五方面,本技术提供一种电子设备,该电子设备包括:一个或多个处理器和存储器;该存储器与该一个或多个处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,该一个或多个处理器调用该计算机指令以使得该电子设备执行如第一方面、第二方面、第三方面以及第一方面、第二方面、第三方面中任一可能的实现方式描述的方法。
67.第六方面,本技术实施例提供了一种芯片,该芯片应用于电子设备,该芯片包括一个或多个处理器,该处理器用于调用计算机指令以使得该电子设备执行如第一方面、第二方面、第三方面以及第一方面、第二方面、第三方面中任一可能的实现方式描述的方法。
68.第七方面,本技术实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机如第一方面、第二方面、第三方面以及第一方面、第二方面、第三方面中任一可能的实现方式描述的方法。
69.第八方面,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如第一方面、第二方面、第三方面以及第一方面、第二方面、第三方面中任一可能的实现方式描述的方法。
70.可以理解的,上述第五方面提供的电子设备、第六方面提供的芯片、第七方面提供
的计算机程序产品和第八方面提供的计算机存储介质均用于执行本技术实施例所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
71.图1为客户端通过多条路径与服务端进行通信的一个示例性示意图;
72.图2为本技术涉及的多路径通信场景的一个示例性示意图;
73.图3为本技术涉及的无线信道的通信性能与用户体验关系的一个示例性示意图;
74.图4a为本技术涉及的封装过程的一个示例性示意图;
75.图4b为本技术涉及的封装过程的一个示例性示意图;
76.图5为本技术涉及的数据传输过程中网络报文变化的一个示例性示意图;
77.图6为本技术涉及的一种多路径聚合的数据发送方法;
78.图7为本技术涉及的另一种多路径聚合的数据发送方法;
79.图8a与图8b为图7所示的方法在不同情况下通信性能比较的一个示例性示意图;
80.图9a至图9b为本技术实施例提供的多路径聚合调度方法的一个示例性示意图;
81.图9c为在图3所示场景中实施本技术实施例中多路径聚合调度方法的一个示例性示意图;
82.图10为本技术实施例提供多路径聚合调度方法的协议栈架构的一个示例性示意图;
83.图11为本技术实施例提供的多路径聚合调度方法的一个示例性示意图;
84.图12a为本技术实施例提供的网络报文分配方法的一个示例性示意图;
85.图12b为本技术实施例提供的网络报文分配方法的另一个示例性示意图;
86.图13a与图13b为本技术实施例提供的数据矩阵的一个示例性示意图;
87.图14a与图14b为本技术实施例提供的网络报文分配方式的一个示例性示意图;
88.图15a为本技术实施例提供的远场场景下实施多路径聚合调度方法的一个示例性示意图;
89.图15b为本技术实施例提供的近场场景下实施多路径聚合调度方法的一个示例性示意图;
90.图16为本技术实施例提供的电子设备的一个示例性硬件结构框图;
91.图17为本技术实施例提供的电子设备100的一个示例性软件结构框图;
92.图18为本技术实施例提供的电子设备100的另一个示例性软件结构框图。
具体实施方式
93.本技术以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。如在本技术的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“该”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本技术中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
94.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者
隐含地包括一个或者更多个该特征,在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
95.为了便于理解,下面先对本技术实施例涉及的相关术语及相关概念进行介绍。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
96.(1)客户端、服务端
97.客户端为发起连接的端点,服务端为接受连接的端点。或者,客户端为发送数据的端点,服务端为接收数据的端点。
98.其中,客户端/服务端可以是终端设备,如手机、平板电脑、虚拟现实终端设备、增强现实终端设备、工业控制中的无线终端、无人驾驶中的无线终端、远程医疗中的无线终端、智能电网中的无线终端、运输安全中的无线终端、智慧城市中的无线终端、智慧家庭中的无线终端、可穿戴设备、车载设备等。
99.其中,服务端可以是为客户端服务的,服务端可以向客户端提供资源以及保存客户端数据等,并且服务端也可以称为服务器。
100.其中,连接为客户端与服务端之间共享的一种状态。连接上的数据流动可以是双向的,也可以是单向的。
101.(2)多路径(path)传输协议
102.当客户端上的协议栈支持多路径传输协议时,可以将数据通过多条路径将数据传输到服务端,进而提高客户端与服务端之间的传输性能,如降低延时、提高吞吐率等。
103.其中,多路径传输协议可以包括mptcp协议、多路径快速udp网络连接协议(multipath quick udp internet connection,mpquic)等。
104.其中,路径可以有多种标识,例如,可以以路径四元组作为标识以区分不同的路径,或者可以以路径id作为标识区分不同的路径,在此不做限定。其中,路径四元组的一种表现形式为[源ip,端口,目标ip,端口]。
[0105]
下面以图1所示的内容为例,示例性的介绍客户端通过多条路径与服务端进行通信的过程。
[0106]
图1为客户端通过多条路径与服务端进行通信的一个示例性示意图。
[0107]
如图1所示,客户端可以为移动终端,例如手机。手机同时通过基站以及路由器与服务端进行通信。示例性的,基站向手机分配的ip地址为ip1,路由器向手机分配的ip地址为ip2,手机上源端口为80。服务端的ip地址为ip3,服务端上目标端口为1314。在该情况下,手机可以通过第一物理路径:(ip1、80、ip3、1314)以及第二物理路径:(ip2、80、ip3、1314)与服务端进行通信。
[0108]
在图1所示的内容中,手机可以同时启用蜂窝移动通信功能(5g和/或4g)和wifi功能以实现多路径传输。
[0109]
在其他情况中,若客户端具备双蜂窝移动通信能力,分别通过4g基站和5g基站获得不同的源ip,进而实现多路径传输。
[0110]
在其他情况中,若客户端具备双wifi能力,可以同时接入同一个路由器的不同频段或者不同路由器的不同频段,如客户端同时接入路由器的2.4g频段和5g频段,进而实现多路径传输;或者,客户端同时接入路由器a的2.4g频段和路由器b的5g频段,进而实现多路
径传输;或者,客户端同时接入路由器的5g高频频段和5g低频频段,进而实现多路径传输;或者,客户端同时接入路由器a的5g高频频段和路由器b的5g低频频段,进而实现多路径传输。
[0111]
值得说明的是,客户端可以与服务端建立多条路径,不限于两条路径。例如,客户端具备双蜂窝移动通信能力以及双wifi能力,手机同时接入4g基站、5g基站、路由器的2.4g频段和5g频段,进而实现了四路径传输。
[0112]
在近场场景中,例如对等网络(peertopeer,p2p)场景中,客户端还可以利用近距离通信服务来进数据交互。其中,近距离通信服务可以包括:蓝牙、苹果无线直连连接(apple wireless direct link,awdl)、hilink、zigbee等。
[0113]
下面以图2所示的内容为例,示例性的介绍p2p场景中,客户端通过多条路径与服务端进行通信的过程。
[0114]
图2为本技术涉及的多路径通信场景的一个示例性示意图。
[0115]
如图2所示,手机分别通过蓝牙、路由器与投影仪建立连接。其中,路径1基于路由器提供的连接,路径1上的数据流向可以为手机发送数据给路由器,路由器转发数据给投影仪。其中,路径2基于蓝牙连接,路径2上的数据流向可以为手机发送数据给投影仪。
[0116]
值得说明的是,对于tcp协议,以及基于tcp协议的其他协议,一个连接上可以承载至少一条路径。对于udp协议,以及基于udp协议的其他协议,例如快速udp网络连接(quick udp internet connection,quic)协议,通过连接或单向流可以确定路径。
[0117]
(3)无线信道
[0118]
无线信道是指以无线信号作为传输载体,用于传输数据的通道。其中,频点和频宽可以用于描述无线信道,频点和频宽共同决定该信道上传输信号的频率范围。在p2p场景中,无线信道的可以用的频段包括:工业、科学和医用(industrial scientific and medical,ism)频段、unlicensed频段。
[0119]
无线信道的通信性能可以包括信道时延、通信速率等。其中,信道时延是该无线信道将数据从一端传到一端所需要耗费的时间;通信速率是该无线信道在单位时间内正确传输的信息比特数。
[0120]
在开放系统互联(open system interconnection,osi)模型中,无线信道位于物理层。其中,osi模型从上至下可以分为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
[0121]
值得说明的是,无线信道的通信性能具有时变性,即无法准确的确定未来某一段时间内或某一刻时间时的无线信道的通信性能。
[0122]
下面以图3所示的内容为例,示例性的介绍,无线信道的通信性能是如何影响数据传输以及用户体验的。
[0123]
图3为本技术涉及的无线信道的通信性能与用户体验关系的一个示例性示意图。
[0124]
用户使用手机观看60帧率(framespersecond,fps)的直播视频。其中,手机通过路由器提供的wifi功能连接至互联网。由于直播视频的帧率为60fps,当手机在时刻t1接收到某一帧画面的数据时,需要在时刻t2=t1+0.16时刻前接收到下一帧画面的数据,才能流畅播放,进而保障用户的体验。
[0125]
如图3所示,在第0秒时,手机与路由器建立连接,并基于此连接去接收服务器发送
的视频流数据。其中,视频数据由一串连续的帧画面的数据组成。服务器将视频数据发送到手机上时,需要依次发送帧画面的数据。其中,一帧画面的数据需要一个或多个网络报文承载。例如,一帧画面的数据需要3个网络报文承载。
[0126]
在图3所示的内容中,在第0秒至第0.16秒内,服务端成功将携带第一帧画面数据的三个网络报文发送到手机。在第0.16秒至第0.32秒内,服务端成功将携带第二帧画面数据的三个网络报文中的前两个发送到手机。此时由于手机没有完整收到第二帧画面的数据,视频会发生卡顿。在第0.34秒时,手机收到携带第二帧画面数据的三个网络报文。在第0.34秒至第0.5秒内,服务端成功将携带第二帧画面数据的三个网络报文发送到手机,此时视频不会发生卡顿。
[0127]
可以理解的是,对于大多数场景来说,相比于提高客户端与服务端之间数据的平均传输速率,或者提高客户端与服务端之间的数据的峰值传输速率,保证服务端与传输端之间数据传输速率最小值不低于阈值更能够提升用户的体验。
[0128]
(4)业务会话、网络报文
[0129]
业务会话可以为表示层实体或用户进程建立通信并在通信上数据传输的过程。根据客户端上协议栈(protocolstack)的能力不同,客户端可以将应用程序/业务会话的一个或多个数据帧合包生成协议报文,并将协议报文打包成网络报文进行发送。其中,协议栈又称为协议堆叠,是计算机网络协议的一个具体的软件实现。
[0130]
客户端/服务端将应用程序/业务会话产生的数据帧打包、合包成网络报文的过程可以称为封装。对应的,将网络报文解包成数据帧的过程可以称为解封装。
[0131]
下面以图4a和图4b所示的内容为例,示例性的介绍客户端/服务端依据不同协议将数据帧封装成网络报文的过程。
[0132]
图4a为本技术涉及的封装过程的一个示例性示意图。
[0133]
图4a所示的内容为客户端与服务端建立的连接为有线连接时,客户端/服务端将数据帧封装成网络报文的过程。图4b所示的内容为客户端与服务端建立的连接为无线连接时,客户端与服务端将数据封装成网络报文的过程。
[0134]
如图4a所示,客户端/服务端上的应用程序/业务会话不断的生成数据帧,并将数据帧写入本地的缓存中。在某一时刻,客户端/服务端上的缓冲中存储有数据帧1、数据帧2、数据帧3、数据帧4和数据帧5。客户端/服务端上的tcp协议栈,基于数据帧的大小,将数据帧1、数据帧2、数据帧3合包、打包成一个tcp报文。在生成tcp报文后,将该tcp报文打包成ip报文,并将该ip报文打包成以太网报文。该以太网报文可以称为网络报文。
[0135]
值得说明的是,为了降低tcp/ip协议等协议字段的开销,协议栈会在路径最大传输单元(path maximum transmission unit,pmtu)/最大传输单元(maximum transmission unit,pmtu)和剩余带宽允许的条件下,尽可能的将多个数据帧封装成一个报文。
[0136]
图4b为本技术涉及的封装过程的一个示例性示意图。
[0137]
如图4b所示,与图4a所示内容类似的,客户端/服务端上的缓存存储有数据帧1、数据帧2、数据帧3、数据帧4和数据帧5。客户端/服务端上的tcp协议栈,基于数据帧的大小,将数据帧1、数据帧2、数据帧3合包、打包成一个tcp报文。在生成tcp报文后,将该tcp报文打包成ip报文。与图4a所示内容不同的是,根据物理层/链路层遵守的协议,客户端上的协议栈将ip报文打包成802.11报文。该802.11报文可以称为网络报文。
[0138]
在图4a以及图4b所示的内容中,客户端/服务端将一个或多个数据帧合包、打包成网络报文的过程称为封装网络报文。
[0139]
值得说明的是,在p2p场景中,客户端与服务端建立近距离通信服务如蓝牙连接时,由于蓝牙连接并不基于tcp/udp协议,客户端/服务端将数据帧合包、打包成蓝牙网络报文的过程称为封装网络报文。
[0140]
下面以图5所示的内容为例,示例性的介绍客户端/服务端封装网络报文,以及网络报文在无线网络、有线网络中的传输过程。
[0141]
图5为本技术涉及的数据传输过程中网络报文变化的一个示例性示意图。
[0142]
如图5所示,作为客户端的手机将数据发送给作为服务端的服务器。首先,手机通过蜂窝移动通信将数据发送给基站。在该过程中,网络报文的表现形式可以是802.11网络报文。其次,基站收到802.11网络报文后,会对网络报文进行解封装、封装,使得网络报文的格式符合有线网传输的格式;基站可以将802.11网络报文解封装、封装为以太网网络报文,并将数据发送到服务器。
[0143]
其次,下面介绍利用多路径提高客户端与服务端之间通信性能的两种方法。
[0144]
当客户端与服务端建立的一个或多个连接支持多条路径传输数据时,客户端可以分配不同/相同的网络报文到不同的路径上进行传输,进而利用多条路径提高传输的稳健性或者提高传输的速率。
[0145]
其中,第一种利用多路径提高客户端与服务端之间通信性能的方法包括:
[0146]
客户端与服务端建立连接后,当客户端与服务店的协议栈支持mptcp协议时,可以认为客户端与服务端之间存在m条可用的路径。假设m条可用的路径之间互相独立。此时,客户端向服务端发送数据时,可以通过m条路径发送相同的数据。在该情况下,客户端与服务端之间的传输延时为m条路径中最小传输延时路径的传输延时。
[0147]
下面以图6所示的内容为例,示例性的介绍当客户端通过m条路径发送相同的数据时,客户端与服务端之间的通信性能。
[0148]
图6为本技术涉及的一种多路径聚合的数据发送方法。
[0149]
客户端与服务端通过多条路径进行数据传输时,以客户端发送数据为例,客户端可以在多条路径上发送相同的数据,以提高传输的稳健性。
[0150]
如图6所示,客户端与服务端均支持mptcp协议,且客户端与服务端之间通过两条路径进行数据传输。客户端发送的网络报文包括四个数据帧。结合图3所示的内容,可以认为当服务端成功接收到四个网络报文时,才能完成一帧画面的传输。
[0151]
数据在路径1上的传输过程中,当服务端接收到网络报文1以及网络报文2后,发现网络报文2中的部分数据帧丢失,需要重传网络报文2。此时即使网络报文3、网络报文4到达服务端也不会被服务端读取。在该情况下,认为四个网络报文成功被传输且被正确读取到服务端的延时为t
delay1
,且认为路径1上数据的平均传输速率为v1。
[0152]
数据在路径2上的传输过程中,当服务端接收并读取网络报文1、网络报文2、网络报文3后,网络报文4由于路径堵塞并没有被传输到服务端。在该情况下,认为四个网络报文成功被传输且被正确读取到服务端的延时为t
delay2
,且认为路径2上数据的平均传输速率为v2。
[0153]
结合数据在路径1、路径2上的传输过程,可以认为四个网络报文成功被传输且被
正确读取到服务端的延时为min(t
delay1
,t
delay2
)。其中,min()为取最小值。客户端与服务端之间数据传输的速率为max(v1,v2),其中max()为最大值。
[0154]
很显然的,若数据在某一条路径的通信性能在大部分时间内优于其他路径时,图6所示的方法相当于仅仅在该通信性能较为优良的路径上进行数据传输。
[0155]
其中,第二种利用多路径提高客户端与服务端之间通信性能的方法包括:
[0156]
客户端与服务端建立连接后,当客户端与服务店的协议栈支持mptcp协议时,可以认为客户端与服务端之间存在m条可用的路径。当服务端发送数据到客户端前,需要对不同路径的通信性能进行评估。服务端依据评估的结果,将待发送的数据分配到不同的路径上。
[0157]
下面以图7所示的内容为例,示例性的介绍当服务端依据评估的结果,将数据分配到m条可用的路径上,进行传输,以提高传输的速率和稳健性。
[0158]
图7为本技术涉及的另一种多路径聚合的数据发送方法。
[0159]
服务端通过多条路径将数据发送到客户端前,可以对各条路径的通信性能进行评估,根据评估的结果将待发送的数据分配到不同路径上进行传输。
[0160]
如图7所示,服务端与客户端之间有两条可供数据传输的路径。服务端对路径1和路径2进行通信性能的评估,预测未来一段时间内数据在路径2上传输速率为路径1上传输速率的0.6倍。结合图3所示的内容,当认为一帧画面的数据由8个网络报文承载,分别为网络报文1至网络报文8。
[0161]
在该情况下,服务端可以将网络报文1、网络报文2、网络报文3、网络报文4、网络报文5分配到路径1上进行传输;将网络报文6、网络报文7、网络报文8分配到路径2上进行传输。
[0162]
值得说明的是,图7所示的方法也可以称为基于最小传输时间延迟(min round-trip-time,minrtt)的方法。
[0163]
图8a与图8b为图7所示的方法在不同情况下通信性能比较的一个示例性示意图。
[0164]
如图8a所示,若在传输网络报文1至网络报文8时,路径1与路径2的实际通信性能与预测通信性能相同,则一帧画面的数据可以同时达到客户端。路径1上的数据每隔0.03秒被成功发送到客户端,在第0.15秒时服务端将网络报文1、网络报文2、网络报文3、网络报文4、网络报文5全部发送到客户端;路径2上的数据每隔0.05秒成功发送到客户端,在第0.15秒时,在第0.15秒时服务端将网络报文6、网络报文7、网络报文8全部发送到客户端。
[0165]
所以,在第0.15秒时,客户端接收到网络报文1至网络报文8,可以将网络报文解封装为数据帧,并交由客户端的上层业务处理。若路径1上数据的传输速率为v1,路径2上数据的传输速率为v2,则在图8a所示的情况中,服务端与客户端之间数据传输的速率为v1+v2。
[0166]
若在传输网络报文1至网络报文8时,路径1与路径2的实际通信性能与预测通信性能不同,则该方法会降低数据传输的速率。
[0167]
如图8b所示,若数据在路径1上的传输速率与数据在路径2上的传输速率相同,即服务端在路径1和路径2上均每隔0.05秒成功将一个网络报文发送到客户端。在该情况下,由于服务端将更多的数据分配到了路径1上进行传输,客户端收到网络报文1、网络报文2、网络报文3、网络报文6、网络报文7、网络报文8时,还需要等待接收网络报文4和网络报文5。
[0168]
进一步的,若路径1发生了严重的数据堵塞,则客户端在很长一段时间内都无法收到完整一帧画面的数据。
[0169]
可以理解的是,结合图6所示的内容,可以得知,客户端/服务端无需预测数据在不同路径上的通信性能,简单的通过多条路径传输数据仅仅可以提高传输的稳健性,相当于通过路径复用,不同的路径互为备份进而避免由于单条路径数据堵塞导致的数据传输延时过高。
[0170]
可以理解的是,结合图7、图8a、图8b所示的内容,若客户端/服务端可以准确预测一个或多个报文传输时刻时,多条路径的瞬时通信性能,则可以将网络报文分配到不同的路径上传输以提高传输速率。但是,客户端/服务端虽然可以预测一段时间内数据在不同路径上的平均传输速率,但是很难准确预测某个时刻时数据在不同路径上的瞬时传输速率,并且当路径的链路层/物理层包括无线信道时,进一步加剧了预测数据在路径上瞬时传输速率。当客户端/服务端依据不准确的数据传输速率对网络报文进行分配时,会降低客户端与服务端之间的数据传输速率,并且该数据传输速率有可能低于图6所示的方法。
[0171]
再次,对比图6、图7、图8a以及图8b所示的两种方法,下面以图9a、图9b、图9c为例,示例性的介绍本技术提供的多路径聚合调度方法。
[0172]
图9a至图9b为本技术实施例提供的多路径聚合调度方法的一个示例性示意图。
[0173]
对于客户端/服务端来说,可以将多个网络报文,分别以不同的顺序排列进行发送。例如,在与图6以及图7所示场景类似的场景中,服务端将承载一帧画面数据的8个网络报文发送给客户端,分别为网络报文1至网络报文8。客户端与服务端均支持mptcp协议,且客户端与服务端之间通过两条路径进行数据传输。
[0174]
如图9a所示,服务端按照网络报文1、网络报文2、网络报文3、网络报文4、网络报文5、网络报文6、网络报文7、网络报文8的顺序将网络报文分配到路径1上进行传输;对应的,服务端按照网络报文8、网络报文7、网络报文6、网络报文5、网络报文4、网络报文3、网络报文2、网络报文1的顺序将网络报文分配到路径2上进行传输。
[0175]
当客户端完整收到网络报文后,即客户端接收到网络报文1至网络报文8后,可以回复确认(ack)报文给服务端,使得客户端停止冗余发送。
[0176]
如图9b所示,由于数据在路径1的传输速率与数据在路径2上的传输速率不同,客户端在路径1上接收到网络报文1至网络报文5,在路径2上接收到网络报文8至网络报文6。在接收到网络报文1至网络报文8后,客户端通过发送确认报文告知服务端已经完整的接收到了网络报文1至网络报文8,服务端则会停止在路径1上发送网络报文6至网络报文8,并且服务端会停止在路径2上发送网络报文5至网络报文1。
[0177]
若路径1上数据的传输速率为v1,路径2上数据的传输速率为v2,则在图8a所示的情况中,服务端与客户端之间数据传输的速率为v1+v2。
[0178]
本技术实施例提供的多路径聚合调度方法使得不同路径上网络报文排列顺序的互相关最小化。其中,互相关可以用于衡量两个序列之间的相关性。若两个序列的相似度越高,则这两个序列的互相关越大;若两个序列的相似度越低,则这两个序列的互相关越小。当网络报文在不同路径上传输的顺序的互相关越小时,对于任一个网络报文,当该网络报文在任意一条路径的传输的顺序位于整体的后半段时,则必然在其他的某一条路径上该报文的传输顺序位于整体的前半段。
[0179]
对于图6所示的多路径聚合的数据发送方法,该方法中第一条路径上传输网络报文的顺序order1为:[1,2,3,4],该方法中第二条路径上传输网络报文的顺序order2为[1,2,
3,4]。此时,order1与order2的互相关为1,互相关最大。
[0180]
或者,本技术实施例提供的多路径聚合调度方法使得不同路径上网络报文排列顺序的距离最大化。即,可以认为不同路径上n个网络报文的排列顺序为n维空间中的一个坐标。例如,order1为:[1,2,3,4]时,order1对应的坐标为四维空间中的(1,2,3,4),则与之最远的坐标为(4,3,2,1),即order1为:[4,3,2,1]。又例如,order1为:[1,3,2,4]时,order1对应的坐标为四维空间中的(1,3,2,4),则与之最远的坐标为(4,2,3,1),即order1为:[4,2,3,1]。
[0181]
若将本技术提供过的多路径聚合调度方法实施在图6所示的场景中,当第一条路径上传输网络报文的顺序order1=[1,2,3,4]时,在该情况下,第二条路径上传输网络报文的顺序order2=[4,3,2,1]。或者,当第一条路径上传输网络报文的order1=[1,3,2,4]时,在该情况下,第二条路径上传输网络报文的顺序order2=[4,2,3,1]。或者,当第一条路径上传输的报文order1=[1,4,2,3]时,在该情况下,第二条路径上传输网络报文的顺序order2=[3,2,4,1]。或者,当第一条路径上传输的报文order1=[1,4,3,2]时,在该情况下,第二条路径上传输网络报文的顺序order2=[2,3,1,4]。
[0182]
值得说明的是,若客户端与服务端之间存在2条路径,则使得不同路径上网络报文排列顺序的互相关最小化的方式为:网络报文在第一条路径上的排列顺序为网络报文在第二条路径上的排列顺序的逆序。若客户端与服务端之间存在多条路径,则需要使不同路径上网络报文排列顺序的互相关的和最小化。
[0183]
可选的,在本技术一些实施例中,可以使不同路径上网络报文的排列顺序的互相关小于1;或者可以使不同路径上网络报文的排列顺序对应的距离大于1。
[0184]
可以理解的是,首先,本技术提供的多路径聚合调度方法不需要预测不同路径的通信性能,降低了预测路径通信性能的开销,也避免了预测路径通信性能不准确带来的负面影响。其次,本技术提供的多路径聚合调度方法避免了冗余发包,节省了网络带宽。
[0185]
结合图3所示的场景,对比图6所示的方法与本技术提供的多路径聚合调度方法。
[0186]
图9c为在图3所示场景中实施本技术实施例中多路径聚合调度方法的一个示例性示意图。
[0187]
考虑到上文中图6所示的方法相当于在一条通信性能较好的路径上传输网络报文,故可以认为图3所示的场景为实施图6所示多路径聚合数据发送方法下的场景。其中,图9c所示场景中,路径1上数据传输速率与图3场景中数据传输速率相同。
[0188]
当认为图3所示的场景中第二帧画面的数据三个网络报文分别为网络报文1、网络报文2、网络报文3时,实施本技术实施例提供的多路径聚合调度方法,使得网络报文2在路径2上进行传输。只要网络报文2的传输延时低于0.16秒,就可以保证在0.16秒内将网络报文1、网络报文2、网络报文3传输到手机。
[0189]
很明显的,使用本技术实施例提供的多路径聚合调度方法,相比于图6所示的方法,可以极大的提高网络报文的传输的速率。
[0190]
值得说明的是,在tcp协议以及基于tcp协议的其他协议中,网络报文的顺序可以是网络报文的tcp序号。
[0191]
值得说明的是,网络报文的顺序可以是客户端封装获取网络报文的顺序。
[0192]
再次,下面结合图10所示的内容,示例性的介绍本技术提供的多路径聚合调度方
法的协议栈架构。
[0193]
图10为本技术实施例提供多路径聚合调度方法的协议栈架构的一个示例性示意图。
[0194]
如图10所示,客户端上的应用程序产生数据后通过接口将多个数据帧发送给用户态协议栈以及内核态协议栈。用户态协议栈可以用l2缓冲暂时存储应用程序产生的多个数据帧。根据协议栈能力的不同,可以将数据帧封装为对应协议的网络报文。其中,用户态协议栈中主要负责将数据帧合包后的报文分配到不同的路径上,并将报文传输到内核态协议栈。内核态协议栈接收到报文后,依据协议进行打包成适合传输的格式,通过不同路径对应的网卡发送到服务端。
[0195]
其中,内核态协议栈中可以包括kcp协议/虚拟局域网中继协议(virtual local area network trunkiung protocol)。其中,用户态协议栈可以包括tcp/udp协议、ip协议等。其中,l2缓冲、l1缓冲、l0缓冲均可以从客户端上的内存中申请获取。
[0196]
如图10所示,路径1可以为wifi的2.4ghz频段所提供的无线信道,路径2可以为wifi的5ghz频段所提供用于p2p场景下点对点传输的5g信道。
[0197]
对应的,服务端通过不同路径对应的网卡上接收到数据后,网卡上的数据首先被送到内核态协议栈上开始进行解封装。内核态协议栈对数据进行初步解封装后,得到对应协议的报文,传输给用户态协议栈。用户态协议栈在接收内核态协议栈发送的数据过程中,会不断的确认是否已经完整的收到8个网络报文。当确认已经收到8个网络报文后,服务端可以向客户端发送确认报文报文,进而使得客户端停止发送网络报文,进而避免冗余发送。客户端可收到确认报文报文后,会及时丢弃l0缓冲池中的网络报文4、网络报文5、网络报文6、网络报文7、网络报文8;以及会及时丢弃l1缓冲池中的网络报文1、网络报文2、网络报文3。
[0198]
可以理解的是,支持多路径传输协议的客户端/服务端的协议栈均可以实施本技术提供的多路径聚合调度方法。
[0199]
再次,下面以图11所示的内容为例,以客户端向服务端发送数据为例,示例性的介绍本技术提供的多路径聚合调度方法。
[0200]
图11为本技术实施例提供的多路径聚合调度方法的一个示例性示意图。
[0201]
图11中步骤s1103为可选的步骤。
[0202]
如图11所示,本技术实施例提供的多路径聚合调度方法包括:
[0203]
s1101:客户端上的应用程序/业务会话产生数据帧,并将数据帧封装为网络报文。
[0204]
具体的,可以响应于用户的操作,客户端上的应用程序/业务会话产生一个或多个数据帧。根据客户端与服务端之间协议栈的能力,按照对应协议的规定将数据帧封装为网络报文。执行步骤s1102。
[0205]
其中,将数据帧封装为网络报文的过程可以参考术语解释中(4)业务会话、网络报文中的文字描述,此处不再赘述。
[0206]
其中,客户端与服务端上的协议栈均支持多路径传输协议。
[0207]
s1102:客户端将网络报文按照不同的顺序分配到不同的路径上。
[0208]
具体的,根据协议栈架构的不同,客户端可以将数据帧封装成网络报文后,将网络报文分配到不同的路径上;或者,客户端在将数据帧封装成网络报文的过程中,已经将网络
报文分配到不同的路径上。结束。
[0209]
可选的,在本技术一些实施例中,在执行步骤s1102后,可以执行步骤s1103。
[0210]
其中,客户端在将网络报文分配到不同的路径前,可以根据协议栈预先知道当前可用的路径的数量。若可用的路径数量为m,此时主要有两种将网络报文分配到不同路径上的方法。
[0211]
下面以图12a、图12b所示的内容为例,示例性的介绍如何将网络报文分配到不同的路径上。
[0212]
客户端将数据帧封装为网络报文后,将网络报文依次分配到不同路径上。由于客户端生产数据帧是有顺序的,所以客户端封装得到网络报文也是有顺序的。其中,对于tcp协议以及基于tcp协议的高层协议来说,网络报文的顺序可以是tcp序号。
[0213]
图12a为本技术实施例提供的网络报文分配方法的一个示例性示意图。
[0214]
如图12a所示,客户端依次封装得到网络报文1、网络报文2、网络报文3、网络报文4、网络报文5、网络报文6、网络报文7、网络报文8。客户端在封装得到网络报文的过程中,按照封装的顺序,依次将网络报文放在路径1所对应的缓冲l1中,即网络报文在路径1上传输的顺序order1=[1,2,3,4,5,6,7,8]。对应的,客户端在封装得到网络报文8后,逆序将网络报文放在路径2所对应的缓冲l2中,即网络报文在路径2上传输的顺序order2=[8,7,6,5,4,3,2,1]。
[0215]
值得说明的是,缓冲中的网络报文会被及时发送出来,在图12a所示的情况中,并不会积压8个网络报文。
[0216]
很显然的,当客户端实施如图12a所示的网络报文分配方法时,客户端需要封装一定数量的网络报文后,才能将网络报文分配到路径2上进行传输,有一定的延迟。虽然分配网络报文会造成一定的延迟,但是该延迟的数量级低于路径堵塞造成传输时延的数量级,可以忽略不计。
[0217]
进一步的,可以通过图12b所示的分配方法,降低客户端在分配网络报文上的延迟。
[0218]
图12b为本技术实施例提供的网络报文分配方法的另一个示例性示意图。
[0219]
如图12b所示,客户端将数据帧封装为网络报文后,交错的将网络报文分配在路径1和路径2上。即网络报文在路径1上的传输顺序order1=[1,3,5,7,8,6,4,2];网络报文在路径2上的传输顺序order2=[2,4,6,8,7,5,3,1]。
[0220]
可以理解的是,在图12b所示的情况下,客户端可以及时将缓冲l0中的网络报文下发到缓冲l1、l2中。
[0221]
在本技术一些实施例中,当服务端接收到网络报文1至网络报文8后,会回复确认报文给客户端,客户端清空缓冲l1中、缓冲l2中的剩余的网络报文1至网络报文8,避免了冗余发送。
[0222]
例如,在图12a所示的情况中,在路径1上实际被传输的网络报文的顺序可能是order1=[1,2,3,4,5,6],在路径2上实际被传输的网络报文的顺序可能是order2=[8,7];在图12b所示的情况中,在路径1上实际被传输的网络报文的顺序可能是order1=[1,3,5],在路径2上实际被传输的网络报文的顺序可能是order2=[2,4,6,8,7]。
[0223]
上文介绍了客户端将网络报文分配到不同路径上的两种主要方式。在本技术实施
例中,可以认为客户端如何分配网络报文到不同路径上决定了网络报文在不同路径上传输的顺序。或者,也可以认为网络报文在不同路径上传输的顺序决定客户端如何将网络分配到不同路径上。
[0224]
下面分别介绍客户端/服务端通过确定网络报文在不同路径上的传输的顺序,进而确定将网络报文分配到不同路径上的方式,以及介绍客户端通过确定网络报文分配到不同路径上的方式确定网络报文在不同路径上传输的顺序。
[0225]
其一,客户端通过确定网络报文在不同路径上的传输的顺序,进而确定将网络报文分配到不同路径上的方式包括:
[0226]
首先,客户端与服务端根据协议栈能力确定可以用来数据传输的路径的数量为m。
[0227]
其次,客户端确定一个数据块中网络报文数量为n,其中一个数据块为本技术提供的多路径聚合调度方法的最小可处理单元。其中,网络报文为组成数据块的最小单元,一个数据块由至少两个网络报文组成。服务端接收到数据块可以完成至少一个功能。例如,在流媒体传输领域,一个数据块可以为一帧或多帧画面的数据;或者,客户端向服务端传输多个文件时,一个数据块可以为一个或多个文件的数据。
[0228]
再次,客户端将数据块分为m块子数据块,分别记为mk,k=1,2,3,

,m。mk指代m个子数据块中的第k个子数据块。
[0229]
其中,当数据块对应于一帧画面的数据时,子数据块可以对应于一帧画面数据中的一部分。例如,将一帧画面从上到下分为等分或不等分的m块子画面,则每一块子画面对应的数据为一个子数据块。
[0230]
客户端可以建立一个m*m的数据矩阵a
m*m
,并借助数独算法将m个子数据块填入数据矩阵,使得数据矩阵a
m*m
每一行中的数据不会出现重复的子数据块,以及使得a
m*m
每一列中的数据不会出现重复的子数据块。在该情况下,数据矩阵a
m*m
中第i行中子数据块的顺序为第i条路径上数据传输的顺序。
[0231]
值得说明的是,数据矩阵a
m*m
中每一行以及每一列中的子数据块均能组成完整的数据块。
[0232]
在本技术实施例中,子数据块内部的网络报文的排列顺序不同时,仍然认为是相同的子数据块。例如,子数据块1若为[网络报文1,网络报文2],则数据块[网络报文2,网络报文1]与子数据块1相同。
[0233]
图13a与图13b为本技术实施例提供的数据矩阵的一个示例性示意图。
[0234]
当m=3时,数据矩阵a
m*m
如图13a所示,其中第一行依次为子数据块1、子数据块2、子数据块3;第二行依次为子数据块3、子数据块1、子数据块2;第二行依次为子数据块2、子数据块3、子数据块1。
[0235]
值得说明的是,m=2时,数据矩阵a
2*2
的第一行依次为子数据块1、子数据块2;第二行为子数据块2、子数据块1。其中,数据矩阵a
2*2
的每一行和每一列均组成完整的数据块,且没有冗余;数据矩阵a
2*2
的第一行的子数据块1与第二行的子数据块2组成完成的数据块,数据矩阵a
2*2
的第二行的子数据块1与第一行的子数据块2组成完成的数据块;数据矩阵a
2*2
的第一行的子数据块1可以是第二行子数据块1的逆序排列,并且数据矩阵a
2*2
的第一行的子数据块2可以是第二行子数据块2的逆序排列;每一行的子数据块的大小可以不一样。
[0236]
数据矩阵a中包含网络报文如图13b所示,其中,第一行对应于第一条路径上网络
报文传输的顺序为order1=[1,2,3,4,5,6,7,8];第二行所对应的第二条路径上网络报文传输的顺序为order2=[8,7,6,2,1,3,4,5],第三行所对应的第三条路径上网络报文传输的顺序为order3=[5,4,3,7,6,8,2,1]。
[0237]
在本技术实施例中,矩阵a
m*m
上不同行中子数据块内部网络报文的顺序可以相同,也可以不同,即在不同路径上传输的子数据块内部的网络报文的顺序可以相同,也可以不同。
[0238]
最后,客户端在确定网络报文在不同路径上的传输的顺序后,可以按照该顺序分配网络报文到不同的路径上。
[0239]
值得说明的是,任一子数据块内部的网络报文可以不连续。例如子数据1以为[网络报文1,网络报文2],也可以为[网络报文1,网络报文8]。
[0240]
其二,客户端通过确定网络报文分配到不同路径上的方法,进而确定将网络报文在不同路径上的传输的顺序包括:
[0241]
首先,客户端与服务端根据协议栈能力确定可以用来数据传输的路径的数量为m。
[0242]
其次,客户端将服务端按照封装得到网络报文的顺序依次将网络报文分配到不同的路径上。
[0243]
再次,客户端可以重复k次分配已经封装得到的网络报文,其中k为小于m大于等于0的整数。其中,重复的k次分配需要保证在任一条路径上的网络报文不会重复。
[0244]
图14a与图14b为本技术实施例提供的网络报文分配方式的一个示例性示意图。
[0245]
如图14a所示,客户端在第一次分配网络报文时,依次交错分配网络报文。客户端在第u次分配网络报文时,由于客户端协议栈的缓冲中存有多个网络报文,无需等待可以直接分配到各个路径上。其中,u为大于1小于等于m的整数。例如,第一次分配时,当协议栈封装得到网络报文1后,协议栈可以不等待网络报文2的封装就马上将网络报文1分配到路径1上进行传输;当协议栈封装得到网络报文2后,协议栈可以不等待网络报文3的封装就马上将网络报文2分配到路径2上进行传输。
[0246]
例如,当m=3时,客户端第一次分配后,路径1上网络报文的传输的顺序为order1=[1,4,7,2,5,8,3,6],路径2上网络报文的传输的顺序为order1=[2,5,8,3,6,1,4,7],路径3上网络报文的传输的顺序为order1=[3,6,1,4,5,7,2,5,8]。
[0247]
值得说明的是,若客户端与服务端之间的m条路径传输网络报文的速率相同,客户端第一次分配完网络报文后,不用重复分配网络报文;并且,考虑到至少有一条路径可以将数据成功从客户端传输到服务端,客户端第一次分配网络报文后,最多再分配m-1次网络报文即可以使得任一条路径上均传输有全部的网络报文,进而能够保证数据一定能够被传输到服务端。
[0248]
如图14b所示,客户端在第一次分配网络报文中,在分配第m+1个网络报文时,可以确定所有路径的对应缓冲中数据是否已经发送出去。若某个路径上的网络报文以及发送出去,则可以优先向该路径分配网络报文。
[0249]
例如,客户端在分配网络报文1、网络报文2、网络报文3后,在分配网络报文4前,可以判断路径1、路径2、路径3上的数据是否已经发送出去。当网络报文2已经发送出去时,客户端将网络报文4分配到路径2上进行传输;当网络报文1已经发送出去时,客户端将网络报文4分配到路径1上进行传输;当网络报文3已经发送出去时,客户端将网络报文4分配到路
径3上进行传输。
[0250]
s1103:服务端接收到完整数据后向客户端发送确认报文,客户端收到确认报文后将待发送的网络报文清空。
[0251]
具体的,服务端在收到多个网络报文后,可以向客户端发送确认报文,该确认报文用于告知客户端已经收到了一个数据块所对应的全部网络报文,或者该确认报文用于告知客户端收到了那些报文。客户端在收到确认报文后将该确认报文所对应的全部网络报文丢弃,以避免冗余发送,进而减少对网络带宽的占用。
[0252]
很显然的,在该情况下,客户端发送的网络报文的与实际传输的网络报文不完全相同。下文中,以发送顺序指代客户端对待发送网络报文的排序,以传输顺序指代客户端实际发送网络报文的顺序。
[0253]
值得说明的是,对于tcp协议,以及基于tcp协议的上层协议来说,服务端收到一个网络报文后向客户端发送确认报文用于告知客户端已经收到了该网络报文。为了实施本技术实施例提供的多路径聚合调度方法,可以通过修改确认报文中的字段,以实现确认报文能够同时实现确认单个网络报文以及实现确认一个数据块。
[0254]
当服务端的协议栈不能回复确认报文去告知客户端清空待发送的网络报文时,客户端可以选择降低冗余发送网络报文。
[0255]
客户端向服务端传输网络报文前,可以询问服务端是否具有回复确认报文的能力,若没有,则可以降低冗余发送网络报文。客户端降低冗余发送网络报文包括:当客户端与服务端之间存在m条路径时,客户端实际为m-1倍冗余发送,可以均匀或非均匀降低每条路径上传输的网络报文的数量,进而降低冗余发送。
[0256]
例如,客户端与服务端存在4条路径,待发送的网络报文为网络报文1至网络报文8。其中网络报文在不同路径上的发送顺序为order1=[1,2,3,4,5,6,7,8]、order2=[8,7,6,5,4,3,2,1]、order3=[3,4,7,8,1,2,5,6]、order4=[5,6,1,2,7,8,3,4]。客户端降低冗余发送后,网络报文在不同路径上的传输的顺序为order1=[1,2,3,4]、order2=[8,7,6,5]、order3=[3,4,7,8]、order4=[5,6,1,2]。在该情况下,客户端通过降低每条路径上传输报文的数量,从3倍冗余发送降低为1倍冗余发送。
[0257]
在本技术的一些实施例中,当服务端的协议栈不能恢复确认报文去告知客户端清空待发送的网络报文时,客户端可以降低冗余发送网路报文。
[0258]
可以理解的是,客户端可以通过降低冗余发送,降低传输的网络报文的冗余量。
[0259]
在本技术一些实施例中,当服务端的协议栈能够恢复确认报文去告知客户端已经接受到了哪些报文时,客户端可以不发送服务端已经接收到的网络报文。
[0260]
再次,下面以图15a、图15b所示的内容为例,示例性的介绍不同场景中本技术提供的多路径聚合调度方法的实施方式。
[0261]
其一,介绍远场场景中,本技术实施例提供的多路径聚合调度方法的实施方式。
[0262]
图15a为本技术实施例提供的远场场景下实施多路径聚合调度方法的一个示例性示意图。
[0263]
如图15a所示,当用户相隔万里进行视频通话时,可以使用本技术实施例提供的多路径聚合调度方法,降低视频通话的延迟,提高视频通话的流畅度,进而提高用户的体验。
[0264]
手机b与手机a之间存在至少两条可用的路径。其一为路由器的wifi对应的路径,
称为路径1;其二为蜂窝移动通信功能对应的路径,称为路径2。
[0265]
以手机b为例,当手机b作为客户端发送数据时,手机b通过摄像头获取连续的帧画面数据。例如,手机b每秒获取60帧画面数据,此时需要每16ms将一帧画面的数据从手机b传输到手机a。可以认为一帧画面的数据所对应的多个网络报文组成一个数据块。例如,一帧画面的数据对应为8个网络报文。
[0266]
在该情况下,实施本技术实施例提供的多路径聚合调度方法,客户端在不同路径分配网络报文的发送顺序可以是:order1=[1,2,3,4,5,6,7,8],order2=[8,7,6,5,4,3,2,1];order1=[1,3,5,7,8,6,4,2],order2=[2,4,6,8,7,5,3,1];order1=[1,4,7,2,5,8,3,6],order2=[6,3,8,5,2,4,7,1];order1=[1,5,2,6,3,7,4,8],order2=[8,4,7,3,6,2,5,1];order1=[1,6,2,7,3,8,4,5],order2=[5,4,8,3,7,2,6,1];order1=[1,7,2,8,3,4,5,6],order2=[6,5,4,3,8,2,7,1]等。
[0267]
在该情况下,实施本技术实施例提供的多路径聚合调度方法,由于服务端回复确认报文告知客户端清空未发送的网络报文,故网络报文在不同路径上的传输顺序可以是order1=[1],order2=[8,7,6,5,4,3,2,1];order1=[1,2],order2=[8,7,6,5,4,3];order1=[1,2,3],order2=[8,7,6,5,4];order1=[1,2,3,4],order2=[8,7,6,5];order1=[1,2,3,4,5],order2=[8,7,6];order1=[1,2,3,4,5,6],order2=[8,7];order1=[1,2,3,4,5,6,7],order2=[8];order1=[1],order2=[2,4,6,8,7,5,3]等。
[0268]
其中,客户端在不同路径上分配网络报文的顺序,以及实际网络报文在路径上传输的顺序可以参考图9b、图12a、图12b、图14a中的文字描述,此处不再赘述。
[0269]
其二,介绍近场场景中,本技术实施例提供的多路径聚合调度方法的实施方式。
[0270]
图15b为本技术实施例提供的近场场景下实施多路径聚合调度方法的一个示例性示意图。
[0271]
如图15b所示,在近场场景如p2p场景中,手机将屏幕上显示的内容投屏到到电视上。手机通过路由器提供的wifi功能与电视建立连接。若手机与电视具有2.4gh频段+5ghz频段双wi-fi能力,或者具有5ghz频段+5ghz频段双wi-fi能力,则手机与电视之间具有多条可以用于传输的路径。
[0272]
在该情况下,客户端可以实施本技术实施例提供的多路径聚合调度方法,使网络报文在不同路径上进行传输。
[0273]
最后,介绍本技术实施例提供的电子设备。该电子设备可以是本技术实施例中的服务端,或者可以是本技术实施例中的客户端。
[0274]
图16为本技术实施例提供的电子设备的一个示例性硬件结构框图。
[0275]
电子设备100可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,pda)、增强现实(augmented reality,ar)设备、虚拟现实(virtual reality,vr)设备、人工智能(artificial intelligence,ai)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备,本技术实施例对该电子设备的具体类型不作特殊限制。
[0276]
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池
142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
[0277]
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0278]
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0279]
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0280]
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
[0281]
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
[0282]
i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。i2s接口可以用于音频通信。pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。gpio接口可以通过软件配置。usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。
[0283]
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0284]
充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池
142,充电管理模块140与处理器110。
[0285]
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0286]
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0287]
移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
[0288]
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
[0289]
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0290]
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
[0291]
电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
[0292]
显示屏194用于显示图像,视频等。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
[0293]
电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。isp用于处理摄像头193反馈的数据。
[0294]
摄像头193用于捕获静态图像或视频。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的正整数。
[0295]
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
[0296]
视频编解码器用于对数字视频压缩或解压缩。
[0297]
npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。
[0298]
内部存储器121可以包括一个或多个随机存取存储器(random access memory,ram)和一个或多个非易失性存储器(non-volatile memory,nvm)。
[0299]
随机存取存储器可以包括静态随机存储器(static random-access memory,sram)、动态随机存储器(dynamic random access memory,dram)、同步动态随机存储器(synchronous dynamic random access memory,sdram)、双倍资料率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,ddr sdram,例如第五代ddr sdram一般称为ddr5 sdram)等;
[0300]
非易失性存储器可以包括磁盘存储器件、快闪存储器(flash memory)。
[0301]
快闪存储器按照运作原理划分可以包括nor flash、nand flash、3d nand flash等,按照存储单元电位阶数划分可以包括单阶存储单元(single-level cell,slc)、多阶存储单元(multi-level cell,mlc)、三阶储存单元(triple-level cell,tlc)、四阶储存单元(quad-level cell,qlc)等,按照存储规范划分可以包括通用闪存存储(英文:universal flash storage,ufs)、嵌入式多媒体存储卡(embedded multi media card,emmc)等。
[0302]
随机存取存储器可以由处理器110直接进行读写,可以用于存储操作系统或其他正在运行中的程序的可执行程序(例如机器指令),还可以用于存储用户及应用程序的数据等。
[0303]
非易失性存储器也可以存储可执行程序和存储用户及应用程序的数据等,可以提前加载到随机存取存储器中,用于处理器110直接进行读写。
[0304]
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展电子设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
[0305]
电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0306]
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频
输入转换为数字音频信号。扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口170d用于连接有线耳机。压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。陀螺仪传感器180b可以用于确定电子设备100的运动姿态。气压传感器180c用于测量气压。磁传感器180d包括霍尔传感器。加速度传感器180e可检测电子设备100在各个方向上(一般为三轴)加速度的大小。距离传感器180f,用于测量距离。
[0307]
接近光传感器180g可以包括例如发光二极管(led)和光检测器,例如光电二极管。环境光传感器180l用于感知环境光亮度。指纹传感器180h用于采集指纹。温度传感器180j用于检测温度。触摸传感器180k,也称“触控器件”。骨传导传感器180m可以获取振动信号。
[0308]
按键190包括开机键,音量键等。马达191可以产生振动提示。
[0309]
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0310]
sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nano sim卡,micro sim卡,sim卡等。同一个sim卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。sim卡接口195也可以兼容不同类型的sim卡。sim卡接口195也可以兼容外部存储卡。电子设备100通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用esim,即:嵌入式sim卡。esim卡可以嵌在电子设备100中,不能和电子设备100分离。
[0311]
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的android系统为例,示例性说明电子设备100的软件结构。
[0312]
图17为本技术实施例提供的电子设备100的一个示例性软件结构框图。
[0313]
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
[0314]
应用程序层可以包括一系列应用程序包。
[0315]
如图17所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。
[0316]
应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
[0317]
如图17所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
[0318]
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
[0319]
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
[0320]
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用
于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
[0321]
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
[0322]
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
[0323]
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
[0324]
android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
[0325]
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
[0326]
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
[0327]
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
[0328]
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
[0329]
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
[0330]
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
[0331]
2d图形引擎是2d绘图的绘图引擎。
[0332]
系统可还可以包括网络库,应用程序层的任意一个应用程序可以通过调用网络库的方法、函数、接口实施本技术实施例提供的多路径聚合调度方法。
[0333]
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。内核层还包括网卡驱动,应用程序通过调用网络库的方法、函数、接口,使得网卡驱动按照本技术实施例提供过的多路径聚合调度方法去在不同路径上分配网络报文,提高数据传输的速率。
[0334]
图18为本技术实施例提供的电子设备100的另一个示例性软件结构框图。
[0335]
在一些实施例中,将系统分为四层,从上至下分别为应用层,框架层,系统服务层,以及内核层。
[0336]
应用层包括系统应用和第三方非系统应用。
[0337]
框架层为应用层的应用程序提供java/c/c++/js等多语言的用户程序框架和能力框架,以及各种软硬件服务对外开放的多语言框架api。
[0338]
系统服务层包括:系统基本能力子系统集、基础软件服务子系统集、增强软件服务
子系统集、硬件服务子系统集。
[0339]
其中,系统基本能力子系统集支持操作系统在多设备上运行、调度、迁移等操作。系统基本能力子系统集可以包括:分布式软总线、分布式数据管理、分布式任务调度、公共基础子系统等。系统服务层和框架层联合实现了多模输入子系统、图形子系统等。本技术提供的多路径聚合调度方法可以位于分布式软总线中。
[0340]
其中,基础软件服务子系统集为操作系统提供公共的、通用的软件服务,可以包括:事件通知子系统、多媒体子系统等。
[0341]
其中,增强软件服务子系统集为不同设备提供差异化的软件服务,可以包括:iot专有业务子系统。
[0342]
其中,硬件服务子系统集为操作系统提供硬件服务,可以包括:iot专有硬件服务子系统。
[0343]
值得说明的是,根据不同设备形态的部署环境,上述系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集可以按照其他功能粒度进行重新划分。
[0344]
内核层包括内核抽象层和驱动子系统。其中,内核抽象层包括多种内核,并且通过屏蔽多内核差异,对上层提供基础的内核能力,例如,线程/进程管理、内存管理、文件系统、网络管理等。其中,驱动子系统为软件开发者提供统一外设访问能力和驱动开发、管理框架。
[0345]
在配置本技术提供的通信资源协作方法时,软件开发人员可以在分布式软总线、驱动子系统、iot专有业务子系统或iot专有硬件服务子系统中进行相关参数的配置。进而,应用层中的应用可以实施本技术提供的通信资源协作方法。
[0346]
值得说明的是,根据操作系统的不同以及未来可能的升级换代,电子设备的软件结构可以根据操作系统进行其他方式的划分。
[0347]
上述实施例中所用,根据上下文,术语“当

时”可以被解释为意思是“如果
…”
或“在

后”或“响应于确定
…”
或“响应于检测到
…”
。类似地,根据上下文,短语“在确定

时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定
…”
或“响应于确定
…”
或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
[0348]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如dvd)、或者半导体介质(例如固态硬盘)等。
[0349]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程
可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1