CN113852589A - 用于数据传输和数据接收的方法、设备和介质 - Google Patents
用于数据传输和数据接收的方法、设备和介质 Download PDFInfo
- Publication number
- CN113852589A CN113852589A CN202010598537.8A CN202010598537A CN113852589A CN 113852589 A CN113852589 A CN 113852589A CN 202010598537 A CN202010598537 A CN 202010598537A CN 113852589 A CN113852589 A CN 113852589A
- Authority
- CN
- China
- Prior art keywords
- data
- source device
- target device
- transmission
- data streams
- 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.)
- Granted
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 228
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000013507 mapping Methods 0.000 claims abstract description 118
- 238000003860 storage Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 18
- 230000015654 memory Effects 0.000 claims description 7
- 239000000284 extract Substances 0.000 claims description 5
- 239000002699 waste material Substances 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 37
- 230000008569 process Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 29
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000005538 encapsulation Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了用于数据传输和数据接收的方法、设备和介质。方法包括:源设备建立与目标设备的一个物理连接,物理连接包括至少n个逻辑连接,n为大于1的整数;源设备将待传输的n个数据流分别映射到n个逻辑连接;源设备基于n个数据流到n个逻辑连接的映射关系分别封装n个数据流各自的数据分组;以及源设备将n个数据流各自的数据分组经由物理连接顺序传输至目标设备。以此方式,对多个数据流的传输建立单个物理连接可以减少对传输资源的占用,避免资源浪费,从而提升系统的总体数据传输并发量。此外,从单个数据流的角度来看,多个逻辑连接彼此独立,这有助于简化对数据传输和接收的控制。
Description
技术领域
本公开涉及数据通信领域,并且更具体地,涉及用于数据传输和数据接收的方法、设备和介质。
背景技术
随着数据分布技术的发展,在设备之间进行数据传输变得越来越方便。一个示例场景是用户可以将手机上的多媒体内容传输到投影设备进行播放。在很多实际应用中,需要在设备间传输多个数据流。例如,在设备间传输多媒体内容时,需要从一个设备向另一设备传输多种类型的多媒体内容,包括视频、音频以及字幕等,其中不同多媒体内容对应不同数据流。此外,视频、音频和字幕可能还包括不同媒体轨道,每个媒体轨道将对应一个数据流。
多个数据流可以在设备之间顺序传输或并发传输。在顺序传输时,需要等待一个数据流的数据分组传输完成之后才继续传输下一个数据流的数据分组。在并发传输时,多个数据流中每个数据流的数据分组在较短时间内都有机会能够被传输到接收端。多个数据流的并发传输可以确保接收端的设备能够较快获得每个数据流的至少部分数据,因而特别适用于诸如实时播放之类的对不同数据流的同步有要求的应用场景。然而,当前用于实现多个数据流的并发传输的方案在资源利用和控制复杂度等方面仍有待改进。
发明内容
本公开的示例实施例提供了用于设备之间的数据传输和数据接收的方案。
在本公开的第一方面,提供了一种用于数据传输的方法。该方法包括:源设备建立与目标设备的一个物理连接,所述物理连接包括至少n个逻辑连接,n为大于1的整数;所述源设备将待传输的n个数据流分别映射到所述至少n个逻辑连接中的n个逻辑连接;所述源设备基于所述n个数据流到所述n个逻辑连接的映射关系分别封装所述n个数据流各自的数据分组;以及所述源设备将所述n个数据流各自的数据分组经由所述物理连接顺序传输至所述目标设备。以此方式,对n个数据流的传输建立单个物理连接可以减少对传输资源的占用,避免资源浪费,从而可以提高系统的总体数据传输并发量。此外,从单个数据流的角度来看,n个逻辑连接彼此独立,这有助于简化对数据传输和接收的控制。
在一些实施例中,所述源设备基于所述n个数据流到所述n个逻辑连接的映射关系分别封装所述n个数据流各自的数据分组包括:所述源设备基于所述映射关系,在所述n个数据流各自的数据分组的头部中分别封装相应数据流所映射的逻辑连接的逻辑连接标识。在一些实施例中,所述源设备基于所述n个数据流到所述n个逻辑连接的映射关系分别封装所述n个数据流各自的数据分组生成所述n个数据流各自的数据分组还包括:所述源设备还在所述n个数据流各自的至少部分数据分组的头部中分别封装相应数据流的流标识。将流标识和逻辑连接标识同时封装在同一个数据分组中,可以向目标设备指示对应的数据流与逻辑连接的映射关系,使目标设备可以基于所指示的映射关系来执行数据分组的接收。通过在部分数据分组中封装逻辑连接标识和流标识,可以有助于目标设备基于此来确定数据流到逻辑连接的映射关系,以用于执行数据分组的接收。此外,通过在一些数据分组中省略流标识,特别是在确保目标设备能够确定数据流到逻辑连接的映射关系之后,能够减少设备间的总传输流量,节省网络资源开销。
在一些实施例中,所述源设备将所述n个数据流各自的数据分组经由所述物理连接顺序传输至所述目标设备包括:所述源设备在将所述n个数据流中的第一数据流对应的第一数据分组存储到所述物理连接对应的传输缓存之后,所述源设备将所述n个数据流中的第二数据流对应的第二数据分组存储到所述传输缓存;所述源设备将所述传输缓存中的所述第一数据分组经由所述物理连接传输至所述目标设备;以及所述源设备将所述传输缓存中的所述第二数据分组经由所述物理连接传输至所述目标设备。通过控制数据分组到传输缓存的存储,可以有效控制n个数据流对应的数据分组的完整性和传输有序性。
在一些实施例中,第一方面的方法还包括:所述源设备经由控制连接从所述目标设备接收指示所述n个数据流中的至少一个数据流的剩余传输配额的信息,所述控制连接与所述物理连接不同;以及如果确定所述剩余传输配额不超过配额阈值,所述源设备停止向所述目标设备传输所述至少一个数据流对应的数据分组。源设备通过剩余传输配额来控制数据流的传输,在单个物理连接的场景中也能够实现逐个数据流的流量控制。
在一些实施例中,第一方面的方法还包括:所述源设备经由所述控制连接向所述目标设备发送指示所述n个数据流各自的传输配额的信息。源设备可以基于待传输的多个数据流来动态配置优选的传输配额。
在一些实施例中,所述源设备建立所述物理连接包括:所述源设备基于传输控制协议来建立所述物理连接。这样的物理连接可以确保所有数据以正确顺序被接收到,并且接收到的数据是正确的且与所传输的数据保持一致。
在一些实施例中,第一方面的方法还包括:通过为所述物理连接分配至少n个逻辑连接标识来将所述物理连接划分或虚拟化为至少n个逻辑连接,每个逻辑连接标识用于唯一标识一个逻辑连接。通过逻辑连接标识的分配,可以从逻辑上将一个物理连接划分为多个逻辑连接。在对物理连接的传输控制时,携带所分配的n个逻辑连接的任何数据分组均被认为将由该物理连传输。
在一些实施例中,所述源设备将待传输的n个数据流分别映射到所述至少n个逻辑连接中的n个逻辑连接包括:如果确定所述n个数据流中的第一数据流对应的起始数据部分已经准备好被传输,从n个逻辑连接中选择第一逻辑连接并且将所述第一数据流映射到所述第一逻辑连接。以此方式,可以实现动态的数据流到逻辑连接的映射,即,在数据流传输的起始阶段,每当一个数据流的起始数据部分准备好,就可以为该数据流分配对应的逻辑连接。在一些示例中,可以为每个数据流随机选择未被分配的逻辑连接,或者按一定规则(例如,按照逻辑连接标识的排列顺序)选择逻辑连接。
在一些实施例中,第一方面的方法还包括:所述源设备经由控制连接向所述目标设备传输指示所述映射关系的信息。在这种方式中,源设备可以直接向目标设备通知映射关系,使得目标设备无需再从接收到的数据分组中进行映射关系的确定。在一些实施例中,所述映射关系还可以被预先配置在所述源设备中。在这种方式中,源设备可以直接使用预先配置的映射关系来执行对应数据流的数据分组的接收,并且也无需再向目标设备通知该映射关系。
在本公开的第二方面,提供了一种用于数据接收的方法。该方法包括:所述目标设备建立与源设备的一个物理连接,所述物理连接包括至少n个逻辑连接,n为大于1的整数;所述目标设备经由所述物理连接,从所述源设备顺序接收多个数据分组;所述目标设备确定所述源设备的n个数据流到所述至少n个逻辑连接中的n个逻辑连接的映射关系;以及所述目标设备基于所述映射关系,将接收到的所述多个数据分组分别存储到所述n个数据流各自的接收队列。以此方式,对n个数据流的传输建立单个物理连接可以减少对传输资源的占用,避免资源浪费。这可以确保不会影响系统的总体数据传输并发量。此外,从单个数据流的角度来看,n个逻辑连接彼此独立,从而可以简化对数据传输和接收的控制。
在一些实施例中,所述目标设备确定所述源设备的n个数据流到所述至少n个逻辑连接中的n个逻辑连接的映射关系包括:所述目标设备从所述多个数据分组中的至少部分数据分组的头部分别提取所述n个逻辑连接的n个逻辑连接标识和所述n个数据流的n个流标识;以及所述目标设备基于提取的所述n个逻辑连接标识和所述n个流标识来确定所述n个数据流到所述n个逻辑连接的所述映射关系。将流标识和逻辑连接标识同时封装在同一个数据分组中可以向目标设备指示对应的数据流与逻辑连接的映射关系,使目标设备可以基于所指示的映射关系来执行数据分组的接收。
在一些实施例中,所述目标设备确定所述源设备的n个数据流到所述至少n个逻辑连接中的n个逻辑连接的映射关系包括:所述目标设备经由控制连接从所述源设备接收指示所述映射关系的信息。在这种方式中,源设备可以直接向目标设备通知映射关系,目标设备无需再从接收到的数据分组中进行映射关系的确定。在一些实施例中,所述映射关系还可以被预先配置在所述目标设备中。在这种方式中,目标设备可以直接使用预先配置的映射关系来执行对应数据流的数据分组的接收。
在一些实施例中,所述目标设备基于所述映射关系将接收到的所述多个数据分组分别存储到所述n个数据流各自的接收队列包括:所述目标设备从所述多个数据分组各自的头部分别提取多个逻辑连接标识;以及所述目标设备基于所述多个逻辑连接标识和所述映射关系,将所述多个数据分组分别存储到所述n个数据流各自的接收队列。从数据分组的头部提取的逻辑连接标识可以由目标设备用于分离不同数据流对应的数据分组。
在一些实施例中,第二方面的方法还包括:所述目标设备基于所述接收队列中各自存储的数据分组的量和所述n个数据流各自的传输配额,经由控制连接向所述源设备传输指示所述n个数据流中的至少一个数据流的剩余传输配额的信息,所述控制连接与所述物理连接不同。在一些实施例中,第二方面的方法还包括:所述目标设备经由所述控制连接从所述源设备接收指示所述n个数据流各自的所述传输配额的信息。由于n个独立且分离的逻辑连接被分配给n个数据流,在源设备与目标设备之间可以实现逐个数据流的流量控制。此外,还可以避免在目标设备处存储的某个数据流的数据量过大。
在一些实施例中,建立所述物理连接包括:所述目标设备基于传输控制协议来建立所述物理连接。这样的物理连接可以确保所有数据以正确顺序被接收到,并且接收到的数据是正确的且与所传输的数据保持一致。
在第三方面,提供了一种电子设备。该电子设备包括:一个或多个处理器;一个或多个存储器;一个或多个传感器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述一个或多个存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行第一方面的方法。
在第四方面,提供了一种电子设备。该电子设备包括:一个或多个处理器;一个或多个存储器;一个或多个传感器;以及一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述一个或多个存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行第二方面的方法。
在第五方面,提供了一种用于数据传输的装置。该装置包括:连接建立单元,被配置为建立与目标设备的一个物理连接,所述物理连接包括至少n个逻辑连接,n为大于1的整数;映射单元,被配置为将待传输的n个数据流分别映射到所述至少n个逻辑连接中的n个逻辑连接;分组封装单元,被配置为基于所述n个数据流到所述n个逻辑连接的映射关系分别封装所述n个数据流各自的数据分组;以及数据传输单元,被配置为将所述n个数据流各自的数据分组经由所述物理连接顺序传输至所述目标设备。
在一些实施例中,所述分组封装单元被配置为:基于所述映射关系,在所述n个数据流各自的数据分组的头部中分别封装相应数据流所映射的逻辑连接的逻辑连接标识。
在一些实施例中,所述分组封装单元还被配置为:在所述n个数据流各自的至少部分数据分组的头部中分别封装相应数据流的流标识。
在一些实施例中,所述数据传输单元被配置为:在将所述n个数据流中的第一数据流对应的第一数据分组存储到所述物理连接对应的传输缓存之后,将所述n个数据流中的第二数据流对应的第二数据分组存储到所述传输缓存;将所述传输缓存中的所述第一数据分组经由所述物理连接传输至所述目标设备;以及所述源设备将所述传输缓存中的所述第二数据分组经由所述物理连接传输至所述目标设备。
在一些实施例中,第五方面的装置还包括:配额接收单元,被配置为经由控制连接从所述目标设备接收指示所述n个数据流中的至少一个数据流的剩余传输配额的信息,所述控制连接与所述物理连接不同;以及传输控制单元,被配置为如果确定所述剩余传输配额不超过配额阈值,停止向所述目标设备传输所述至少一个数据流对应的数据分组。
在一些实施例中,第五方面的装置还包括:配额传输单元,被配置为经由所述控制连接向所述目标设备发送指示所述n个数据流各自的传输配额的信息。
在一些实施例中,所述连接建立单元被配置为基于传输控制协议来建立所述物理连接。
在一些实施例中,第五方面的装置还包括逻辑连接划分单元,被配置为通过为所述物理连接分配至少n个逻辑连接标识来将所述物理连接划分或虚拟化为至少n个逻辑连接,每个逻辑连接标识用于唯一标识一个逻辑连接。
在一些实施例中,所述映射关系单元被配置为:如果确定所述n个数据流中的第一数据流对应的起始数据部分已经准备好被传输,从n个逻辑连接中选择第一逻辑连接并且将所述第一数据流映射到所述第一逻辑连接。
在一些实施例中,第五方面的装置还包括:映射关系传输单元,被配置为经由控制连接向所述目标设备传输指示所述映射关系的信息。在一些实施例中,所述映射关系还可以被预先配置在所述源设备中。
在第六方面,提供了一种用于数据接收的装置。该装置包括:连接建立单元,被配置为建立与源设备的一个物理连接,所述物理连接包括至少n个逻辑连接,n为大于1的整数;数据接收单元,被配置为经由所述物理连接,从所述源设备顺序接收多个数据分组;确定单元,被配置为确定所述源设备的n个数据流到所述至少n个逻辑连接中的n个逻辑连接的映射;以及存储单元,被配置为基于所述映射关系,将接收到的所述多个数据分组分别存储到所述n个数据流各自的接收队列。
在一些实施例中,所述确定单元被配置为:从所述多个数据分组中的至少部分数据分组的头部分别提取所述n个逻辑连接的n个逻辑连接标识和所述n个数据流的n个流标识;以及基于提取的所述n个逻辑连接标识和所述n个流标识来确定所述n个数据流到所述n个逻辑连接的所述映射关系。
在一些实施例中,所述确定单元被配置为:经由控制连接从所述源设备接收指示所述映射关系的信息。在一些实施例中,所述映射关系还可以被预先配置在所述目标设备中。
在一些实施例中,所述存储单元被配置为:从所述多个数据分组各自的头部分别提取多个逻辑连接标识;以及基于所述多个逻辑连接标识和所述映射关系,将所述多个数据分组分别存储到所述n个数据流各自的接收队列。
在一些实施例中,第六方面的装置还包括:配额传输单元,被配置为基于所述接收队列中各自存储的数据分组的量和所述n个数据流各自的传输配额,经由控制连接向所述源设备传输指示所述n个数据流中的至少一个数据流的剩余传输配额的信息,所述控制连接与所述物理连接不同。
在一些实施例中,第六方面的装置还包括:配额接收单元,被配置为经由控制连接从所述源设备接收指示所述n个数据流各自的所述传输配额的信息。
在一些实施例中,连接建立单元被配置为基于传输控制协议来建立所述物理连接。
在一些实施例中,所述目标设备确定所述源设备的n个数据流到所述至少n个逻辑连接中的n个逻辑连接的映射关系包括:所述目标设备经由控制连接从所述源设备接收指示所述映射关系的信息。在这种方式中,源设备可以直接向目标设备通知映射关系,目标设备无需再从接收到的数据分组中进行映射关系的确定。在一些实施例中,所述映射关系还可以被预先配置在所述目标设备中。
在第七方面,提供了一种计算机可读存储介质。计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面或第二方面的方法。
附图说明
结合附图并参考以下详细说明,本公开各实施例的特征、优点及其他方面将变得更加明显。在此以示例性而非限制性的方式示出了本公开的若干实施例,在附图中:
图1A和图1B示出了在常规方案中的数据通信系统的示意框图;
图2A至图2C示出了根据本公开的一些实施例的数据通信系统的示意框图;
图3示出了根据本公开的一些实施例的在数据通信系统中多个数据流的数据分组的传输的示意框图;
图4和图5示出了根据本公开的一些实施例的数据分组的示例格式的示意图;
图6示出了根据本公开的另一些实施例的在数据通信系统中多个数据流的数据分组的传输的示意框图;
图7示出了根据本公开的另一些实施例的在数据通信系统中多个数据流的数据分组的传输的示意框图;
图8示出了根据本公开的一些实施例的在源设备处的多个数据分组的传输过程的流程图;
图9示出了根据本公开的一些实施例的在目标设备处的数据分组的接收过程的流程图;
图10示出了根据本公开的另一些实施例的数据通信系统的示意框图;
图11示出了根据本公开的一些实施例的在设备之间交互传输配额的示例交互信令图;
图12示出了根据本公开的一些实施例的用于数据传输的方法的流程图;
图13示出了根据本公开的一些实施例的用于数据接收的方法的流程图;
图14示出了根据本公开的一些实施例的用于数据传输的装置的框图;
图15示出了根据本公开的一些实施例的用于数据接收的装置的框图;以及
图16示出了示出了适合实现本公开的实施例的示例电子设备的简化框图。
在各个附图中,相同或相似参考数字表示相同或相似元素。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如以上提及的,在设备间传输数据时,期望实现多个数据流的并发传输。当前有一些方案能够支持设备之间多个数据流的并发传输。图1A和图1B示出了在一些常规方案中数据通信系统的示意框图。在图1A和图1B所示的示例中,源设备110被配置为要向目标设备120传输多个数据流。多个数据流可以来自源设备110启动的某个应用。
在图1A示出的系统100中,为了支持向目标设备120传输多个数据流,源设备110在相应端口(P)上建立与目标设备120的多个物理连接。图1A具体示出了在源设备110的端口131(由“P1”表示)至端口136(由“P6”表示)上分别建立与目标设备120的物理连接141至146。端口131至136可以是源设备110的通信单元上的端口。所建立的物理连接141至146中的每个物理连接分别用于传输一个数据流的数据分组。也就是说,在图1A的系统100中,为每个数据流建立单独的物理连接用于数据传输。
图1A的方案使得多个数据流的传输和接收的控制较为简单。然而,为每个数据流建立独享的物理连接会导致连接可控性差的问题,因为随着数据流的增加,需要不断增加建立物理连接来支持数据传输。这将会引起源设备、目标设备以及设备之间的网络传输的资源消耗大,造成资源浪费。为同一应用的不同数据流建立多个物理连接还会使源设备的端口占用不可控,降低系统的总体并发量,影响其他应用的使用。此外,不同数据流使用单独的物理连接进行传输还会使所传输的数据量难以被有效控制,导致接收端(即,目标设备)处的数据缓存量超过阈值。更多的物理连接的传输也会增加同一应用的丢包和连接中断的概率。
图1B示出了另一个方案。在图1B的系统102中,在源设备110的端口151上建立与目标设备120的单个物理连接161,用于支持数据流传输。也就是说,在图1B的系统102中,多个数据流共享单个物理连接。这也可以限制和控制源设备110的不同应用对端口和物理连接的占用。然而,使多个数据流直接共享单个物理连接会导致在接收端处数据流分离困难,增加了数据传输和接收的复杂性。因此,这个方案仅适合于逐个数据流的串行传输。如果源设备110要向目标设备120传输多个数据流,那么可能需要在一个数据流全部传输完成之后才能再调度另一个数据流。
由此可见,在多个数据流的并发传输中,期望在满足传输效率的同时,避免对传输资源的过度占用和浪费,同时不增加传输和接收控制的复杂度。
本申请提出了一种用于传输数据和接收数据的方案。在该方案中,针对要传输的n个数据流,在源设备和目标设备之间建立单个物理连接。该物理连接包括至少n个逻辑连接。源设备将n个数据流中的每个数据流映射到不同的逻辑连接上。以此方式,虽然多个数据流共享单个物理连接,但不同数据流可以对应于不同逻辑连接。源设备基于n个数据流到n个逻辑连接的映射关系,将n个数据流对应的数据分组经由物理连接顺序传输至目标设备。目标设备也能够基于n个数据流到n个逻辑连接的映射关系,将接收到的数据分组分别存储到n个逻辑连接各自对应的n个接收队列,以用于后续使用,诸如在解码数据分组之后用于播放、显示等。应理解:n为大于1的整数。
本申请公开的方案,为需并发传输的一组数据流建立单个物理连接可以减少对传输资源的占用,避免资源浪费,从而提高系统的总体数据传输并发量和设备之间传输的总吞吐量。虽然多个数据流对应的数据分组在物理连接上被顺序传输,但每个数据流总有机会可以传输自己的部分数据分组、而不需要等待一个数据流的全部数据分组传输完成之后再开始下一个数据流的传输。这总体上可以达到一定程度的数据流并发传输的效果。此外,从单个数据流的角度来看,多个逻辑连接彼此独立,这可以简化对不同数据流的传输和接收的控制,并且还可以使目标设备能够容易地分离不同数据流对应的数据分组。
下文将继续参考附图描述本公开的一些示例实施例。
图2A示出了根据本公开的一些实施例的数据通信系统200的示意框图。在图2A的示例中,源设备210要向目标设备220传输多个数据流。为执行数据流传输,源设备210与目标设备220建立一个物理连接240。
源设备指的是要传输数据的设备,目标设备220指的是从源设备接收数据的设备。因此,源设备有时也可以称为发送端或发送端设备,而目标设备有时可以称为接收端、接收端设备或宿(sink)设备。注意,术语“源设备”和“目标设备”仅用于区分在一个方向上的数据传输和接收时的两个设备。在一些实施例中,这两个设备可以实现双向的数据交互。也就是说,源设备在一些情况下也可以充当目标设备,而目标设备在一些情况下也可以充当源设备。
在图2A的系统200中,源设备210和目标设备220中的每一个可以是具有无线通信能力和/或无线通信能力的移动设备或有线设备。例如,源设备210和目标设备220中的每一个可以包括移动电话、具有无线通信卡的便携式计算机、个人数字助理(PDA)、便携式媒体播放器、台式计算机、膝上型计算机、笔记本计算机、平板计算机、个人通信系统(PCS)设备、个人导航设备、无线电广播接收器、电视、电子书设备、游戏设备、监视器、投影仪物联网(IoT)设备、车载设备、飞行器、虚拟现实(VR)设备、增强现实(AR)设备、可穿戴设备、可用于通信的其他设备、或者上述的任意组合。本申请对此并不做限定。
在一些实施例中,源设备210可以经由端口230来与目标设备220建立一个物理连接240。端口230例如可以被包括在用于支持源设备210的数据交换的通信单元(未示出)上。被包括在源设备210上的通信单元例如可以包括无线网卡(NIC)、以太网适配器、或者能够提供无线或有线通信的其他适当通信接口。经由所建立的物理连接240,源设备210可以向目标设备220传输数据。在一些实施例中,目标设备220也可以经由物理连接240向源设备210传输数据。
物理连接240可以是有线连接或无线连接。在一些实施例中,物理连接240可以基于传输控制协议(TCP)来建立。在这样的实施例中,物理连接240也被称为TCP连接。TCP是许多基于网络、特别是基于因特网的数据传输的常用协议。TCP可以确保所有数据以正确顺序被接收到,并且接收到的数据是正确的且与所传输的数据保持一致,因此基于TCP建立的物理连接240可以提供数据传输的高可靠性。应当理解,物理连接240还可以基于任何其他适当的传输协议来建立。本申请的方案可以具有广泛使用场景。物理连接240有时也称为物理通道或网络连接;物理连接240主要用于设备间的数据通信,因此物理连接240有时也称为数据通道或数据连接等。
在本申请的方案中,在建立一个物理连接240的基础上,为了更好地支持从源设备210向目标设备220传输多个数据流并且实现多个数据流的并发传输,该物理连接240在逻辑上被划分或虚拟化为多个逻辑连接,例如逻辑连接250-1、250-2、……、250-m,其中m是大于1的整数。因此,一个物理连接240被认为包括多个逻辑连接。在下文中,为便于讨论,逻辑连接250-1、250-2、……、250-m有时统称为或单独称为逻辑连接250。具体地,在物理连接240建立后,为物理连接240分配m个逻辑连接标识,每个逻辑连接标识用于唯一标识一个逻辑连接250。由于独立且互相区分的逻辑连接标识的分配,多个逻辑连接250可以认为是彼此分离和独立的,并且共同对应于同一个物理连接240。
通过在一个物理连接240上虚拟化一定数目的逻辑连接250,虽然在设备之间建立了单个物理连接,但多个逻辑连接的使用使得在数据流传输时能够达到让不同数据流能够占用各自的单独连接的效果。具体地,在执行数据传输时,源设备210将待传输的多个数据流分别映射到多个逻辑连接250上,每个数据流对应一个逻辑连接250。如图2B进一步示出的,假设源设备210要向目标设备220传输n个数据流260-1、260-2、……、260-n,其中n是大于1的整数。在图2B中,为了清楚图示,省略了端口230。n个数据流260-1、260-2、260-n中的每个数据流可以映射到一个不同的逻辑连接250。例如,数据流260-1被映射到逻辑连接250-1,数据流260-2被映射到逻辑连接250-2,数据流260-n被映射到逻辑连接250-n,等等。在下文中,为便于讨论,数据流260-1、260-2、260-n被统称为或单独称为数据流260。
在一些实施例中,从物理连接240虚拟化出的逻辑连接250的数目m可以基于要传输的数据流260的数目n,例如m可以大于等于n。也就是说,物理连接240包括至少n个逻辑连接250。在一些实施例中,逻辑连接250的数目可以不是固定的。随着要传输的数据流260的数目增加,例如同一个应用或进程中要传输的数据流260的数目增加,源设备210可以为物理连接240虚拟化出更多的逻辑连接250,并为这些逻辑连接250分配相应的逻辑连接标识进行区分。在一些实施例中,源设备210可以在初始阶段就将物理连接240在逻辑上划分或虚拟化出预定数目的逻辑连接250。预定数目可以根据实际应用设置,例如可以被设置为较大的值,从而在大多数情况下能够确保大于或等于要传输的数据流的数目。
在作为接收端的目标设备220处,目标设备220被配置有多个接收队列270-1、270-2、……、270-n,分别用于接收和存储在被映射到多个逻辑连接250-1、250-2、……、250-n的多个数据流260-1、260-2、……、260-n。在下文中,为便于讨论,接收队列270-1、270-2、……、270-n被统称为或单独称为接收队列270。每个接收队列270对应于一个数据流260,进而也对应于该数据流260映射到的逻辑连接250。接收队列270中的数据分组由于已经按数据流划分,因此可以由目标设备220用于后续使用,例如可以被播放或显示给用户,或者被传输到其他设备,等等。
源设备210要传输的不同数据流260可以分别包括源设备210中不同数据源的数据。例如,不同数据流260可以包括源设备210中不同文件的数据,或者可以包括源设备210从其他设备或经由网络实时获取的不同数据。在一些实施例中,不同数据流260可以包括不同类型的多媒体数据,例如不同数据流260分别对应于音频、视频、文本(例如,字幕)、图像等。在一些实施例中,某个或某些类型的多媒体数据还包括多个媒体轨道的数据。例如,音频数据可以包括不同音频轨道的音频,视频数据可以包括不同视频轨道的视频,字幕数据可以包括不同字幕轨道的文本等等。在这种情况下,不同数据流260分别包括不同媒体轨道的数据。
在一些实施例中,不同数据流260可以包括在源设备210上正在运行的应用要传输的数据。例如,源设备210上正在运行视频播放应用,该应用被操作为要向目标设备220传输所播放的内容,包括视频、音频和字幕等。目标设备220例如可以是显示器或投影仪,其被配置为显示从源设备210接收到的数据。
在一些实施例中,由于不同数据流260传输不同数据,因此可以由源设备210上运行的一个进程控制数据流260到物理连接240的递送。每个数据流260由该进程280的一个线程控制。如图2C所示,在源设备210处,n个数据流260-1、260-2、260-n可以由进程280控制,其中进程280中的n个线程282-1、282-2、……、282-n可以分别控制相应数据流260-1、260-2、……、260-n到物理连接240的传送。进程280有时可以被称为发送进程,该进程例如可以对应于源设备210上运行的应用或者任何其他运行单元。线程282-1、282-2、……、282-n有时可以被称为发送线程。在下文中,为讨论方便,线程282-1、282-2、……、282-n可以被统称为或单独称为线程282。
在源设备210处,不同数据流260到不同逻辑连接250的映射关系可以是任意的。也就是说,每个数据流260可以被映射到任意一条逻辑连接250。例如,在图2C所示的基于线程控制的示例中,被启动的每个线程282可以获得一个逻辑连接250用于对应数据流260的传输。不同线程282可以获得不同的逻辑连接250。在一些实施例中,线程282可以不用感知到用于传输数据流260是物理连接或是逻辑连接,因为多个逻辑连接250彼此分离和独立。从线程282的角度来看,不同数据流260看起来像是要在不同连接上被传输至目标设备220。
在一些实施例中,源设备210可以在要传输多个数据流260时动态地将不同逻辑连接250分配给不同数据流260。具体地,每当n个数据流260中的一个数据流260对应的起始数据部分已经准备好被传输,从n个逻辑连接250中选择一个逻辑连接250,并且将该数据流260映射到所选择的逻辑连接250。也就是说,在数据流260传输的起始阶段,每当一个数据流260的起始数据部分准备好,就可以为该数据流260分配一个逻辑连接250。在一些示例中,可以为每个数据流260随机选择未被分配的逻辑连接250,或者按一定规则(例如,按照逻辑连接250标识的排列顺序)来选择逻辑连接250。
在一些实施例中,不同数据流260到不同逻辑连接250的映射关系可以被预先配置。例如,在数据流260被传输之前,源设备210可以向目标设备220通知不同数据流260到不同逻辑连接250的映射关系。具体地,源设备210可以向目标设备220发送指示映射关系的信息,该信息包括不同数据流260的流标识和不同逻辑连接250的逻辑连接标识,并且还指示流标识到逻辑连接标识的映射关系。这样的信息例如可以作为控制数据被传输至目标设备220。在一些实施例中,除物理连接240之外,源设备210还可以建立与目标设备220的控制连接,用于传输控制数据。在传输数据流260时,源设备210将按先前发送的映射关系来将多个数据流260映射到对应的逻辑连接250。
在一些实施例中,源设备210还可以对逻辑连接250的状态进行管理。如果一个数据流260被映射到相应的逻辑连接250,源设备210可以将该逻辑连接250的状态从空闲状态标记为使用状态。其他数据流260可以被映射到处于空闲状态的逻辑连接250,而不是处于使用状态的逻辑连接250。
虽然不同数据流260被映射到不同逻辑连接250,但源设备210与目标设备220之间在物理上建立的是一个物理连接240。在向目标设备220传输数据时,源设备210基于多个数据流260到多个逻辑连接250的映射关系来分别封装多个数据流260各自的数据分组。源设备210经由物理连接240向目标设备220传输不同数据流260对应的数据分组。在传输过程中,源设备210顺序传输多个数据流260对应的数据分组,从而使每个数据流260对应的数据分组均能够被及时传输,而不需要等待在一个数据流传输完成之后再传输下一个数据流。
在目标设备220处,目标设备220经由物理连接240从源设备210顺序接收多个数据分组。目标设备220基于多个数据流260到多个逻辑连接250的映射关系,确定接收到的多个数据分组分别属于哪个数据流260,和/或与哪个逻辑连接250相对应。由于不同接收队列270对应于不同数据流260,因而也对应于不同逻辑连接250,目标设备220可以将不同数据流260对应的数据分组存储到对应的接收队列270。
相应地,在目标设备220处,n个数据流260-1、260-2、……、260-n的接收也可以由进程290控制,如图2B所示。具体地,进程290中的n个线程292-1、292-2、……、292-n可以分别控制将从物理连接240接收到的数据存储到相应的接收队列270-1、270-2、……、270-n。进程290有时可以被称为接收进程,该进程例如可以对应于源设备210上运行的应用或者任何其他运行单元。线程292-1、292-2、……、292-n有时可以被称为接收线程。在下文中,为讨论方便,线程292-1、292-2、……、292-n可以被统称为或单独称为线程292。
源设备210可以用多种方式在物理连接240上顺序传输被映射到不同逻辑连接250的数据流260对应的数据分组,并且可以使目标设备220能够区分接收到的不同数据流260对应的数据分组。为更好理解数据流260的传输和接收,以下将参考图3至图7的一些示例来详细说明。
图3示出了根据本公开的一些实施例的在数据通信系统200中传输多个数据流的数据分组的示意框图。源设备210在执行传输时,n个数据流260对应的数据分组可以按任何顺序经由物理连接240被传输给目标设备220。例如,n个数据流260对应的数据分组的实际传输顺序可以取决于各个数据流260对应的数据分组的可用性以及控制数据流260的线程282的运行。图3示出了数据流260-1至260-n对应的数据分组的传输的示例。应当理解,在图3以及后续描述的图6和图7中示出的数据分组的数目以及数据分组在物理连接上的传输顺序仅是示例,而不对本公开的范围有任何限制。
如图3所示,在传输时,源设备210首先经由物理连接240将数据流260-1的第一个数据分组310-1传输至目标设备220。从数据流260-1的角度看,特别是从控制数据流260-1的线程282-1的角度看,数据分组310-1在数据流260-1所映射的逻辑连接250-1上被传输至目标设备220。接下来,经由物理连接240,数据流260-2的第一个数据分组320-1在数据分组310-1之后被传输,然后数据流260-1的第二个数据分组310-2在数据分组320-1之后被传输。数据流260-n的数据分组330-1和330-2在数据分组310-2之后经由物理连接240被传输,然后数据流260-2的数据分组320-2又继续能够经由物理连接240被传输。从时间上看,在物理连接240上传输的数据分组可以被表示为如图3所示的数据分组序列302。虽然在物理连接240上数据分组是顺序传输,但由于逻辑连接250相互之间是独立且分离的,从单个数据流260的角度来看,单个数据流260对应的数据分组仍看起来像是要在不同连接上被传输至目标设备220。
为便于讨论,在下文中,数据流260-1的数据分组310-1、310-2等可以被统称为或单独称为数据分组310,数据流260-2的数据分组320-1、320-2等可以被统称为或单独称为数据分组320,数据流260-n的数据分组330-1、330-2等可以被统称为或单独称为数据分组330。
在接收端,目标设备220经由物理连接240从源设备210接收到多个数据分组。从时间上看,目标设备220接收到的数据分组序列与从源设备210传输的数据分组序列相同。目标设备220将确定接收到的数据分组属于哪个数据流260或对应于哪个逻辑连接250,从而将数据分组存储到对应的接收队列270。
为了使目标设备220能够区分不同数据分组对应的数据流260或逻辑连接250,在一些实施例中,数据流260-1、260-2、……、260-n的每个数据分组310、320、330可以被封装有该数据流260所映射的逻辑连接250的逻辑连接标识。图4和图5示出了根据本公开的一些实施例的数据分组的示例格式的示意图。
首先参考图4,其示出了数据分组的示例格式400。数据流260-1、260-2、……、260-n的数据分组310、320、……、330中的每一个可以被配置为数据分组的格式400。如图4所示,数据分组400包括头部410和有效载荷部分420。有效载荷部分420携带相应数据流260的实际数据422。头部410包括用于指示物理连接240的物理连接标识412的字段,用于指示分组400被映射到的逻辑连接250的逻辑连接标识414的字段,用于指示相应数据流260的流标识416的字段,以及用于指示数据422的数据长度418的字段。
在一些示例中,如果数据流260对应于多媒体数据的不同媒体轨道,流标识416可以包括媒体轨道标识,用于标识对应的媒体轨道。流标识416也可以被设置为任何能够区分不同数据流260的标识。在一些实施例中,数据长度418的字段是可选的。在一些实施例中,物理连接标识412的字段也可以是可选的,特别是在无需向目标设备220唯一标识所使用的物理连接240的情况下。
在一些实施例中,数据流260-1、260-2、……、260-n的数据分组310、320、……、330等均可以按图4所示的数据分组的格式400进行配置。相应地,源设备210可以基于各个数据流260到相应逻辑连接250的映射关系,在每个数据流260的每个数据分组的头部至少封装相应数据流260的流标识和该数据流所映射的逻辑连接250的逻辑连接标识。
目标设备220接收到数据分组310、320、……、330之后,可以从数据分组的头部中提取流标识和逻辑连接标识。在一些实施例中,如果目标设备220之前从源设备210直接接收到指示多个数据流260到多个逻辑连接250的映射关系的信息(例如,经由控制连接接收),目标设备220可以基于提取的流标识与逻辑连接标识,确定该流标识所标识的数据流260被映射到该逻辑连接标识所标识的逻辑连接250。目标设备220可以对初始接收到的多个数据分组执行这样的判断,从而确定出多个数据流260到多个逻辑连接250的映射关系。此外,目标设备220还可以根据提取的逻辑连接标识和/或流标识,确定每个数据分组310、320、……、330对应的接收队列270。由此,目标设备220可以将数据分组310、320、……、330存储到相应的接收队列270,如图3所示。
在一些实施例中,源设备210可以在数据流260的一些或全部数据分组310、320、……、330中省略流标识。图5示出了数据分组的示例格式500。与图4的格式400相比,区别在于,数据分组的格式500的头部410省略了流标识416的字段。流标识的省略可以减低数据分组的大小,进而减少设备间的总传输流量,节省网络资源开销。
在一些实施例中,源设备210可以将每个数据流260的第一个数据分组或起始的若干个数据分组配置为图4的格式400,即在头部中同时封装流标识和逻辑连接标识。然后,对于每个数据流260的后续数据分组中,源设备210可以利用图5的格式500进行配置,即在头部中封装逻辑连接标识,省略流标识,从而减少传输负荷。换言之,在从源设备210传输的多个数据流260对应的数据分组中,只有一部分数据分组的头部被同时封装有流标识和逻辑连接标识,另外一部分数据分组的头部封装有逻辑标识,但省略了流标识。例如,在图3的示例中,数据流260-1的数据分组310-1、数据流260-2的数据分组320-1和数据流260-n的数据分组330-3的头部被封装有对应的流标识和逻辑连接标识。数据流260-1至260-n的后续数据分组均可以按图5所示的格式500进行配置。
相应地,目标设备220可以利用每个数据流260的同时携带流标识和逻辑连接标识的那些数据分组来确定多个数据流260到多个逻辑连接250的映射关系,并且记录这样的映射关系。在接收到每个数据流260的后续数据分组时,如果后续数据分组不包括流标识,目标设备220仍然可以基于这些数据分组中携带的逻辑连接标识来将每个数据分组正确存储到对应的接收队列270。
在一些实施例中,如果源设备210向目标设备220直接传输指示多个数据流260到多个逻辑连接250的映射关系的信息(例如,经由控制连接接收),源设备210可以采用图5的格式500配置数据流260的所有数据分组310、320、……、330,包括每个数据流260的第一个数据分组。即,取决于具体映射情况,源设备210在每个数据分组310、320、……、330中封装相应数据流260所映射的逻辑连接250的逻辑连接标识,而不封装流标识。
由于目标设备220预先获知关于数据流260到逻辑连接250的映射关系,目标设备220接收到一个数据分组后,可以从该数据分组的头部提取逻辑连接标识,并根据该逻辑连接标识确定将该数据分组存储到哪个接收队列。参考图3的示例,目标设备220接收到数据分组310-1后,从数据分组310-1的头部提取逻辑连接标识,其标识逻辑连接250-1。根据预先获知的数据流260到逻辑连接250的映射关系,目标设备220确定逻辑连接250-1被映射到数据流260-1,因此将数据分组310-1存储到接收队列270-1。对于后续接收到的数据分组,目标设备220均可以按照类似的方式将接收到的每个数据分组310、320、……、330都存储到相应的接收队列270。
当然,应当理解,除讨论的数据流的数据分组的格式之外,数据分组还可以按其他方式来配置。在一些实施例中,源设备210可以在数据流260的每个数据分组中封装对应的流标识和逻辑连接标识。本公开的实施例在此方面不受限制。
在一些情况中,在一段时间内可能某个数据流260的数据与其他数据流260的数据没有对齐,或者某个数据流260的全部数据已经被传输而其他数据流260的数据未完全没传输。这在多媒体数据播放的应用中比较常见。例如,在一段时间的视频画面中可能不存在字幕或者不存在音频。在这种情况下,源设备210仍然能够将其他数据流260中需要传输的数据封装到数据分组中,并且基于与逻辑连接250的映射关系,经由物理连接240传输至目标设备220。图6示出了在这种情况下的在数据通信系统200中传输多个数据流的数据分组的一个示例。
在图6的示例中,假设数据流260-1的两个数据分组310-1、310-2被传输之后,数据流260-1暂时不再有数据分组要传输。源设备210可以继续将数据流260-2、……、260-n的后续数据分组经由物理连接240顺序传输至目标设备220。数据流260-2、……、260-n的后续数据分组也可以按任意顺序传输。从时间上看,在物理连接240上传输的数据分组可以被表示为如图6所示的数据分组序列602。在接收端,目标设备220仍然能够根据接收到的数据分组中携带的逻辑连接标识以及可能的流标识来确定每个数据分组属于哪个数据流260,从而将数据分组存储到对应的传输队列270,如图6所示。
在另外一些情况中,多个数据流260的数据被传输一段时间之后,同一个应用或进程可能会增加一个或多个新的数据流。例如,在多媒体数据播放的应用中,在一段时间的视频画面之后,可能开始呈现字幕或者音频。在这种情况下,源设备210将新的数据流映射到不同的逻辑连接250。源设备210可以基于当前所有数据流与逻辑连接250的映射关系,将新的数据流260对应的数据分组与先前已有的数据流260对应的数据分组一起经由物理连接240顺序传输至目标设备220。图7示出了在这种情况下的在数据通信系统200中传输多个数据流的数据分组的一个示例。
在图7的示例中,假设在多个数据流260-1至260-n的若干数据分组被传输至目标设备240后,源设备210还需要向目标设备250传输新的数据流260-4。源设备210可以将新数据流260-4映射到逻辑连接250-4。在数据分组的传输过程中,数据流260-1至260-n的后续数据分组和新数据流260-4的数据分组可以被继续顺序传输至目标设备220。如图7所示,源设备210可以在数据流360-2的数据分组320-3之后传输数据流360-4的数据分组340-1,其他数据分组也可以顺序传输310-3、330-3、340-2等。从时间上看,在物理连接240上传输的数据分组可以被表示为如图7所示的数据分组序列702。在接收端,目标设备220仍然能够根据接收到的数据分组中携带的逻辑连接标识以及可能的流标识来确定每个数据分组属于哪个数据流260,从而将数据分组存储到对应的传输队列270。目标设备220可以具有新的接收队列270-4,用于存储数据流260-4的数据分组。
在一些实施例中,源设备210可以通过对物理连接240加锁来控制多个数据流260对应的数据分组的完整性和传输有序性。具体地,源设备210在将某个数据流260的当前数据分组存储到物理连接240对应的传输缓存的同时,防止其他数据流260对应的数据分组被存储到物理连接240对应的传输缓存。由于物理连接240是在诸如网卡、以太网适配器等通信单元上建立,物理连接240对应的传输缓存对应于源设备210的内核缓存。控制数据流260的应用通常在源设备210内核的上层用户态空间运行,因此要经由物理连接240传输的数据分组将需要从用户态缓存存储到内核态缓存。为控制数据流260对应的数据分组的传输有序性,在将某个数据流260的当前数据分组被拷贝到物理连接240对应的传输缓存时,源设备210可以使物理连接240被锁定。由于这样的锁定,控制其他数据流260的进程需要等待对物理连接240的调用。
在当前数据分组被完全存储到传输缓存之后,物理连接240的锁定可以被解除。此时,另一个数据流260对应的数据分组可以继续被存储到传输缓存,并且已存储在传输缓存的数据分组可以经由物理连接240被传输。通过锁定物理连接240来控制数据分组到传输缓存的存储,源设备210可以有效控制数据分组的顺序传输,保证数据分组传输的有序性。此外,存储完成后即发起另一数据流对应的数据分组的存储,并且解除对物理连接240的锁定,可以保证最短的锁定时间。因此,这提高了多个数据分组在物理连接240上的传输效率,使传输带宽得到充分利用,提高设备间传输的吞吐量。
从源设备210的操作系统层面来看,控制当前数据流260的线程,例如图2C的线程282,将数据分组从用户态拷贝到内核态的过程中,对于控制其他数据流260的其他线程282,物理连接240处于锁定状态。因此,其他线程282无法将所控制的数据流260对应的数据分组拷贝到内核态。在当前数据分组拷贝完成后,物理连接240的锁定被解除,从而其他线程282可以继续将所控制的数据流260对应的数据分组从内核态拷贝到用户态。
图8示出了根据本公开的一些实施例的在源设备处的多个数据分组的传输过程800的流程图。过程800由源设备210执行。作为示例,过程800涉及源设备210顺序传输数据流260-1的数据分组310-1和数据流260-2的数据分组320-1。
在框810,源设备210为数据分组310-1获取逻辑连接250-1,该逻辑连接250-1被映射到数据流260-1。例如,在图2C的示例中,源设备210允许进程280中的线程282-1来获取逻辑连接250-1。在框812,源设备210将物理连接240锁定,从而防止其他数据流260-2、260-n的数据分组被存储到传输缓存,因此物理连接240仅可用于数据流260-1的数据分组310-1的传输。在物理连接240被锁定的同时,在框814,源设备814控制数据分组310-1存储到物理连接240对应的传输缓存。在这个过程中,数据分组310-1从用户态被拷贝到内核态。在完成存储,例如完成用户态到内核态的拷贝之后,在框816,源设备210解除对物理连接240的锁定。在框818,源设备210经由物理连接240向目标设备220传输数据分组310-1。
对于数据分组320-1的传输,在框820,源设备210为数据分组320-1获取逻辑连接250-2,该逻辑连接250-2被映射到数据流260-2。例如,在图2C的示例中,源设备210允许线程282-2来获取逻辑连接250-2。框820可以在框810之后或同时被执行。在一些示例中,框820也可以在框810之前被执行,例如由于数据分组310-1要比数据分组320-1先传输。在框822,由于物理连接240被锁定用于数据分组310-1的传输,对于数据分组320-1而言,需要等待物理连接240的解锁。例如,控制数据分组320-1的传输的线程282-2要等待物理连接240的解锁。
在物理连接240被解锁之后,在框824,源设备210继续将物理连接824锁定,从而防止除数据流260-2之外的其他数据流对应的数据分组被存储到物理连接240对应的传输缓存。被锁定的物理连接240仅可用于数据流260-2的数据分组320-1的传输。在物理连接240被锁定的同时,在框826,源设备814控制数据分组320-1存储到物理连接240对应的传输缓存。在这个过程中,数据分组320-1从用户态缓存被拷贝到内核态的传输缓存。在完成存储,例如完成用户态到内核态的拷贝之后,在框828,源设备210解除对物理连接240的锁定。在框829,源设备210经由物理连接240向目标设备220传输数据分组320-1。
在图8的过程800中,针对每个数据分组所描述的操作可以由控制对应数据流260的线程282来控制和执行。
在接收端处,无论多个数据流260对应的数据分组以何种顺序传输,目标设备220从物理连接240上接收端字节流,并从中分离出各个数据分组。图9示出了根据本公开的一些实施例的在目标设备220处的数据分组的接收过程900的流程图。过程900可以由目标设备220执行。过程900的执行可以确保各个数据分组的完整接收。
在框910,目标设备220经由物理连接240接收字节流。在一些示例中,接收到的字节流从内核态被拷贝到用户态。在框920,目标设备220确定是否已经接收到数据分组的完整头部,例如当前接收到的字节流是否对应于一个数据分组的完整头部。如果还未接收到一个数据分组的完整头部,目标设备220继续接收字节流。例如,目标设备220控制负责字节流的接收的线程继续接收字节流。
如果已经接收到一个数据分组的完整头部,在框930,目标设备220确定是否已经接收到数据分组的完整有效载荷部分,例如除组成头部的字节流之外的其他字节流是否对应于一个数据分组的完整有效载荷部分。如果还未接收到一个数据分组的完整有效载荷部分,目标设备220继续接收字节流。如果已经接收到一个数据分组的完整有效载荷部分,这意味着目标设备220已经接收到完整的数据分组,例如数据流260-1的某个数据分组310,数据流260-2的某个数据分组320,或数据流260-n的某个数据分组330等。对于接收到的每个数据分组,如以上已经讨论的,目标设备220可以将数据分组划分到数据流260对应的接收队列270。
在一些实施例中,由于从物理连接240上划分出彼此独立的逻辑连接250,在源设备210和目标设备220的多数据流传输过程中,可以实现对不同数据流260的传输量的监测和控制。对于传输量的控制可以通过由源设备210与目标设备220之间的控制通道的控制数据交互来实现。图10示出了根据本公开的一些实施例的数据通信系统200的另一个示例。与图2A相比,源设备210与目标设备220之间建立控制连接1020。控制连接1020有时也可以成为控制通道。在一些实施例中,源设备210可以经由端口1010来与目标设备220建立控制连接1020。控制连接1020也是一条物理连接,但不同于用于数据传输的物理连接240(其被称为数据通道)。控制连接1020可以用于在源设备210与目标设备220之间交互控制数据,以实现对被映射到不同逻辑连接250上的不同数据流260的流量控制。除此之外,在以上讨论的一些实施例中,如果需要源设备210在数据流的传输之前要向目标设备220通知不同数据流260到不同逻辑连接250的映射关系,指示该映射关系的信息也可以经由控制连接1020传输至目标设备220。
下面将参考图11来讨论如何对源设备210到目标设备220的数据流的传输执行流量控制。图11示出了在源设备210和目标设备220之间的交互信令图1100。在数据流的传输之前,源设备210向目标设备220传输1110指示一个或多个数据流260的传输配额的信息,并且目标设备220接收1120来自源设备210的指示一个或多个数据流260的传输配额的信息。每个数据流260的传输配额指示该数据流260在目标设备220处需要的缓存量。在一些实施例中,源设备210向目标设备220传输指示所有数据流260各自的传输配额的信息。指示传输配额的信息可以经由图10的控制连接1020传输至目标设备220。
传输配额的设置可以确保目标设备220对每个数据流接收到的数据量可控,这在实时内容传递和使用的场景中特别有利。在一些实施例中,对于不同类型的数据流(例如,视频、音频和文本),每个数据分组的数据大小可能不同。例如,承载视频的数据分组可能比承载文本的数据分组的尺寸更大。随着数据流对应的数据分组的顺序传输,某个数据流对应的数据分组在目标设备220处缓存的量可能远大于其余数据流对应的数据分组的缓存量。源设备210已知不同数据流260对应的数据分组的大小,因此可以为不同数据流260配置更合理的传输配额。
图11示出了为指示数据流260-1至260-n的传输配额的示例信息1102。作为一个具体示例,数据流260-1可以具有10M的传输配额,数据流260-2可以具有5M的传输配额,数据流260-n可以具有1M的传输配额,等等。当然,应当理解,这里所列举的数字仅仅是示例,而不对本公开的范围进行任何限制。
在过程1100中,源设备210和目标设备220经由物理连接240执行1130多个数据流260对应的数据分组的传输和接收。多个数据流260对应的数据分组的传输和接收例如可以根据以上讨论的一些示例实施例。目标设备220将多个数据流260对应的数据分组存储到接收队列270之后,随着每个数据流260的数据的消耗,例如相应数据被播放或者被传输到其他位置,接收队列270的数据分组会被移除。
目标设备220不断监测每个接收队列270中存储的数据分组的量,确定每个数据流260的剩余传输配额(或者也称为“可用传输配额”)。剩余传输配额可以被计算为数据流260的传输配额与对应接收队列中存储的数据分组的量之差。目标设备220可以向源设备210报告一个或多个数据流260的剩余传输配额。具体地,目标设备220向源设备210传输1140指示一个或多个数据流260的剩余传输配额的信息。该信息例如可以经由图10的控制连接1020被传输至源设备210。
图11具体示出了指示一个或多个数据流260的剩余传输配额的示例信息1104。作为一个具体示例,数据流260-1当前具有5M的剩余传输配额,数据流260-2当前具有2M的剩余传输配额,数据流260-n当前具有0M的剩余传输配额,等等。当然,应当理解,这里所列举的数字仅仅是示例,而不对本公开的范围进行任何限制。在一些实施例中,目标设备220可以周期性地向源设备210报告一个或多个数据流260的剩余传输配额,例如报告每个数据流260的剩余传输配额。在一些实施例中,目标设备220可以在发现一个或多个数据流260的剩余传输配额接近于0或者等于0时,向源设备210报告每个数据流260的当前剩余传输配额,或者仅包括接近于0或者等于0的剩余传输配额。
源设备210接收1150来自目标设备220的指示一个或多个数据流260的剩余传输配额的信息。如果源设备210发现某个或某些数据流260的剩余传输配额不超过配额阈值,源设备210停止1160向目标设备220传输该数据流260对应的数据分组。配额阈值可以根据需要设置。在一些实施例中,不同数据流260的配额阈值可以不同。在一个实施例中,不同数据流260的配额阈值基于相应数据流260的单个数据分组的大小来确定,例如被设置为等于单个数据分组的大小。如果某个数据流260的当前剩余传输配额不足以传输该数据流260对应的数据分组,源设备210停止该数据流的传输。通过动态监测数据流260的剩余传输配额,源设备210可以更多地向目标设备220传输剩余传输配额较大的其他数据流260对应的数据分组。通过传输配额和剩余传输配额的交互,源设备210可以实现对不同数据流260的流量控制。
在一些实施例中,如果目标设备220发送一个或多个数据流260的剩余传输配额增加,例如对应接收队列270中的数据分组被消耗(例如被播放或传输至其他设备等),目标设备220可以继续经由控制连接1020向源设备210指示这些数据流260的剩余传输配额。源设备210将可以恢复传输这些数据流260对应的数据分组。
应当理解,在以上实施例中描述的多个数据流的传输和接收可以是针对源设备210和目标设备220的同一个应用或进程的。源设备210可以存在需要传输一个或多个数据流的其他应用或进程。针对每个应用或进程,源设备210均可以与目标设备220或其他目标设备建立相应的物理连接。如果某个应用或进程需要传输多个数据流,特别是需要多个数据流的并发传输,源设备210也可以按照如上文所描述的一些示例实施例来实现数据传输,目标设备220或其他目标设备也可以按照如上文所描述的一些示例实施例来实现数据接收。
图12示出了根据本公开的一些实施例的用于数据传输的方法1200的流程图。方法1200可以被实现在源设备210处。应当理解,方法1200还可以包括未示出的附加动作和/或可以省略所示出的动作。本公开的范围在此方面不受限制。
在框1210,源设备210建立与目标设备220的一个物理连接240,该物理连接240包括至少n个逻辑连接250,n为大于1的整数。在框1220,源设备210将待传输的n个数据流260分别映射到至少n个逻辑连接中的n个逻辑连接250。在框1230,源设备210基于n个数据流260到n个逻辑连接250的映射关系分别封装n个数据流260各自的数据分组。在框1240,源设备210将n个数据流260各自的数据分组经由物理连接240顺序传输至目标设备220。
在一些实施例中,源设备210可以基于传输控制协议来建立物理连接240。这样的物理连接可以确保所有数据以正确顺序被接收到,并且接收到的数据是正确的且与所传输的数据保持一致。
在一些实施例中,在封装n个数据流260各自的数据分组时,源设备210基于n个数据流260到n个逻辑连接250的映射关系,在n个数据流260各自的数据分组的头部中分别封装相应数据流260所映射的逻辑连接250的逻辑连接标识。在一些实施例中,源设备210还在n个数据流各自的至少部分数据分组的头部中分别封装相应数据流的流标识。通过在一些数据分组中省略流标识,特别是在确保目标设备220能够确定数据流到逻辑连接的映射关系之后,能够减少设备间的总传输流量,节省网络资源开销。此外,将流标识和逻辑连接标识同时封装在同一个数据分组中可以向目标设备220指示对应的数据流与逻辑连接的映射关系,使目标设备220可以基于所指示的映射关系来执行数据分组的接收。
在一些实施例中,源设备210经由控制连接1020向目标设备220传输指示映射关系的信息。在这种方式中,源设备可以直接向目标设备通知映射关系,使得目标设备无需再从接收到的数据分组中进行映射关系的确定。在一些实施例中,映射关系还可以被预先配置在源设备210中。源设备210可以直接使用预先配置的映射关系来分离对应数据流的数据分组,并且也无需再向目标设备220通知该映射关系。
在一些实施例中,为了控制有效控制n个数据流对应的数据分组的完整性和传输有序性,在传输数据分组时,源设备210在将n个数据流260中的第一数据流260对应的第一数据分组存储到物理连接240对应的传输缓存之后,源设备210将n个数据流260中的第二数据流260对应的第二数据分组存储到传输缓存,并且将传输缓存中的第一数据分组经由物理连接240传输至目标设备220,并且将传输缓存中的第二数据分组经由物理连接240传输至目标设备220。
在一些实施例中,由于n个独立且分离的逻辑连接被分配给n个数据流,源设备210还可以实现逐个数据流的流量控制。具体地,源设备210可以经由控制连接1020向目标设备220发送指示n个数据流260各自的传输配额的信息。在向目标设备220传输一些数据分组后,源设备210经由控制连接1020从目标设备220接收指示n个数据流260中的至少一个数据流260的剩余传输配额的信息。如果确定剩余传输配额不超过配额阈值,源设备210停止向目标设备220传输至少一个数据流260对应的数据分组。
图13示出了根据本公开的一些实施例的用于数据接收的方法1300的流程图。方法1300可以被实现在目标设备220处。应当理解,方法1300还可以包括未示出的附加动作和/或可以省略所示出的动作。本公开的范围在此方面不受限制。
在框1310,目标设备220建立与源设备210的一个物理连接240,物理连接240包括至少n个逻辑连接250,n为大于1的整数。在框1320,目标设备220经由物理连接240,从源设备210顺序接收多个数据分组。在框1330,目标设备220确定源设备210的n个数据流260到至少n个逻辑连接中的n个逻辑连接250的映射关系。在框1340,目标设备220基于映射关系,将接收到的多个数据分组分别存储到n个数据流260各自的接收队列。
在一些实施例中,目标设备220基于传输控制协议来建立物理连接240。这样的物理连接可以确保所有数据以正确顺序被接收到,并且接收到的数据是正确的且与所传输的数据保持一致。
在一些实施例中,目标设备220从多个数据分组中的至少部分数据分组的头部分别提取n个逻辑连接250的n个逻辑连接标识和n个数据流260的n个流标识。基于提取的n个逻辑连接标识和n个流标识,目标设备220可以确定n个数据流260到n个逻辑连接250的映射关系。通过将流标识和逻辑连接标识同时封装在同一个数据分组中可以向目标设备指示对应的数据流与逻辑连接的映射关系,使目标设备可以基于所指示的映射来执行数据分组的接收。
在一些实施例中,目标设备220经由控制连接1020从源设备210接收指示映射关系的信息。由于从源设备直接获知映射关系,目标设备220可以无需再从接收到的数据分组中进行映射关系的确定。在一些实施例中,映射关系还可以被预先配置在目标设备220中,从而目标设备220可以直接使用预先配置的映射关系来控制对应数据流的数据分组的接收。
在一些实施例中,目标设备220从多个数据分组各自的头部分别提取多个逻辑连接标识。基于n个逻辑连接标识和映射关系,目标设备220将多个数据分组分别存储到n个数据流260各自的接收队列。在数据分组的头部包括逻辑连接标识可以有助于目标设备220分离不同数据流260对应的数据分组。在一些实施例中,多个数据分组中的至少一些数据分组的头部可能不封装有流标识。通过在一些数据分组中省略流标识,特别是在确保目标设备能够确定数据流到逻辑连接的映射关系之后,能够减少设备间的总传输流量,节省网络资源开销。
在一些实施例中,目标设备220经由控制连接1020从源设备210接收指示n个数据流260各自的传输配额的信息。在一些实施例中,目标设备220基于n个接收队列中各自存储的数据分组的量和n个数据流260各自的传输配额,经由控制连接1020向源设备210传输指示n个数据流260中的至少一个数据流260的剩余传输配额的信息。由于n个独立且分离的逻辑连接被分配给n个数据流,在源设备210与目标设备之间可以实现逐个数据流的流量控制。此外,还可以避免在目标设备处存储的某个数据流的数据量过大。
图14示出了根据本公开的一些实施例的用于数据传输的装置1400的框图。装置1400可以被实现为设备或者设备中的芯片,本公开的范围在此方面不受限制。装置1400可以被实现为源设备210或者被实现为源设备210的一部分。
装置1400包括连接建立单元1410,被配置为建立与目标设备的一个物理连接,物理连接包括至少n个逻辑连接,n为大于1的整数;映射单元1420,被配置为将待传输的n个数据流分别映射到至少n个逻辑连接中的n个逻辑连接;分组封装单元1430,被配置为基于n个数据流到n个逻辑连接的映射关系分别封装n个数据流各自的数据分组;以及数据传输单元1440,被配置为将n个数据流各自的数据分组经由物理连接顺序传输至目标设备。
在一些实施例中,分组封装单元1430被配置为:基于映射关系,在n个数据流各自的数据分组的头部中分别封装相应数据流所映射的逻辑连接的逻辑连接标识。
在一些实施例中,分组封装单元1430还被配置为:在n个数据流各自的至少部分数据分组的头部中分别封装相应数据流的流标识。
在一些实施例中,数据传输单元1440被配置为:在将n个数据流中的第一数据流对应的第一数据分组存储到物理连接对应的传输缓存之后,将n个数据流中的第二数据流对应的第二数据分组存储到传输缓存,将传输缓存中的第一数据分组经由物理连接传输至目标设备,以及将传输缓存中的第二数据分组经由物理连接传输至目标设备。
在一些实施例中,装置1400还包括:配额接收单元(未示出),被配置为经由控制连接从目标设备接收指示n个数据流中的至少一个数据流的剩余传输配额的信息,控制连接与物理连接不同;以及传输控制单元,被配置为如果确定剩余传输配额不超过配额阈值,停止向目标设备传输至少一个数据流对应的数据分组。
在一些实施例中,装置1400还包括:配额传输单元(未示出),被配置为经由控制连接向目标设备发送指示n个数据流各自的传输配额的信息。
在一些实施例中,连接建立单元1410被配置为基于传输控制协议来建立物理连接。
在一些实施例中,装置1400还包括逻辑连接划分单元(未示出),被配置为通过为物理连接分配至少n个逻辑连接标识来将物理连接划分或虚拟化为至少n个逻辑连接,每个逻辑连接标识用于唯一标识一个逻辑连接。
在一些实施例中,映射单元1420被配置为:如果确定n个数据流中的第一数据流对应的起始数据部分已经准备好被传输,从n个逻辑连接中选择第一逻辑连接并且将第一数据流映射到第一逻辑连接。
在一些实施例中,装置1400还包括:映射关系传输单元(未示出),被配置为经由控制连接向目标设备传输指示映射关系的信息。在一些实施例中,所述映射关系还可以被预先配置在所述源设备中。
图15示出了根据本公开的一些实施例的用于数据接收的装置1500的框图。装置1500可以被实现为设备或者设备中的芯片,本公开的范围在此方面不受限制。装置1500可以被实现为目标设备220或者被实现为目标设备220的一部分。
装置1500包括:连接建立单元1510,被配置为建立与源设备的一个物理连接,物理连接包括至少n个逻辑连接,n为大于1的整数;数据接收单元1520,被配置为经由物理连接,从源设备顺序接收多个数据分组;确定单元1530,被配置为确定源设备的n个数据流到至少n个逻辑连接中的n个逻辑连接的映射关系;以及存储单元1540,被配置为基于映射关系,将接收到的多个数据分组分别存储到n个数据流各自的接收队列。
在一些实施例中,确定单元1530被配置为:从多个数据分组中的至少部分数据分组的头部分别提取n个逻辑连接的n个逻辑连接标识和n个数据流的n个流标识;以及基于提取的n个逻辑连接标识和n个流标识来确定n个数据流到n个逻辑连接的映射关系。
在一些实施例中,确定单元1530被配置为:经由控制连接从源设备210接收指示映射关系的信息。在一些实施例中,映射关系还可以被预先配置在目标设备220中。
在一些实施例中,存储单元1540被配置为:从多个数据分组各自的头部分别提取多个逻辑连接标识;以及基于n个逻辑连接标识和映射关系,将多个数据分组分别存储到n个数据流各自的接收队列。
在一些实施例中,装置1500还包括:配额传输单元(未示出),被配置为基于n个接收队列中各自存储的数据分组的量和n个数据流各自的传输配额,经由控制连接向源设备传输指示n个数据流中的至少一个数据流的剩余传输配额的信息,控制连接与物理连接不同。
在一些实施例中,装置1500还包括:配额接收单元(未示出),被配置为经由控制连接从源设备接收指示n个数据流各自的传输配额的信息。
在一些实施例中,连接建立单元1510被配置为基于传输控制协议来建立物理连接。
图16示出了可以用来实施本公开的实施例的示例电子设备1600的示意性框图。设备1600可以用于实现源设备210或目标设备220。
如图所示,设备1600包括一个或多个处理器,诸如中央处理单元(CPU)1601,其可以根据存储在只读存储器(ROM)1602中的计算机程序指令或者从存储单元1608加载到随机访问存储器(RAM)1603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1603中,还可存储设备1600操作所需的各种程序和数据。CPU 1601、ROM 1602以及RAM 1603通过总线1604彼此相连。输入/输出(I/O)接口1605也连接至总线1604。
设备1600中的多个部件连接至I/O接口1605,包括:输入单元1606,例如键盘、鼠标等;输出单元1607,例如各种类型的显示器、扬声器等;存储单元1608,例如磁盘、光盘等;以及通信单元1609,例如网卡、以太网适配器、调制解调器、无线通信收发机等;以及各种类型的传感器1610。通信单元1609允许设备1600通过诸如因特网之类的计算机网络和/或各种电信网络来与其他设备交换信息/数据。
处理单元1601执行上文所描述的各个方法和过程。在一些实施例中,上文所描述的各个方法和过程可被实现为计算机软件程序或计算机程序产品,其被有形地包含于机器可读介质,诸如非瞬态计算机可读介质,诸如存储单元1608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1602和/或通信单元1609而被载入和/或安装到设备1600上。当计算机程序被加载到RAM 1603并由CPU 1601执行时,可以执行上文所描述的各个方法和过程的一个或多个步骤。备选地,在其他实施例中,CPU 1601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上文所描述的各个方法和处理。
根据本公开的示例性实施例,提供了一种计算机可读存储介质,其上存储有计算机可执行指令,其中计算机可执行指令被处理器执行以实现上文描述的方法。根据本公开的示例性实施例,还提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,而计算机可执行指令被处理器执行以实现上文描述的方法。
这里参照根据本公开实现的方法、装置、设备和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各个实施例。
Claims (13)
1.一种用于数据传输的方法,包括:
源设备建立与目标设备的一个物理连接,所述物理连接包括至少n个逻辑连接,n为大于1的整数;
所述源设备将待传输的n个数据流分别映射到所述至少n个逻辑连接中的n个逻辑连接;
所述源设备基于所述n个数据流到所述n个逻辑连接的映射关系分别封装所述n个数据流各自的数据分组;以及
所述源设备将所述n个数据流各自的数据分组经由所述物理连接顺序传输至所述目标设备。
2.根据权利要求1所述的方法,所述源设备基于所述n个数据流到所述n个逻辑连接的映射关系分别封装所述n个数据流各自的数据分组包括:
所述源设备基于所述映射关系,在所述n个数据流各自的数据分组的头部中分别封装相应数据流所映射的逻辑连接的逻辑连接标识。
3.根据权利要求2所述的方法,所述源设备基于所述n个数据流到所述n个逻辑连接的映射关系分别封装所述n个数据流各自的数据分组还包括:
所述源设备还在所述n个数据流各自的至少部分数据分组的头部中分别封装相应数据流的流标识。
4.根据权利要求1至3任一项所述的方法,所述源设备将所述n个数据流各自的数据分组经由所述物理连接顺序传输至所述目标设备包括:
所述源设备在将所述n个数据流中的第一数据流对应的第一数据分组存储到所述物理连接对应的传输缓存之后,
所述源设备将所述n个数据流中的第二数据流对应的第二数据分组存储到所述传输缓存;
所述源设备将所述传输缓存中的所述第一数据分组经由所述物理连接传输至所述目标设备;以及
所述源设备将所述传输缓存中的所述第二数据分组经由所述物理连接传输至所述目标设备。
5.根据权利要求1至4任一项所述的方法,还包括:
所述源设备经由控制连接从所述目标设备接收指示所述n个数据流中的至少一个数据流的剩余传输配额的信息,所述控制连接与所述物理连接不同;以及
如果确定所述剩余传输配额不超过配额阈值,所述源设备停止向所述目标设备传输所述至少一个数据流对应的数据分组。
6.根据权利要求5所述的方法,还包括:
所述源设备经由所述控制连接向所述目标设备发送指示所述n个数据流各自的传输配额的信息。
7.一种用于数据接收的方法,包括:
所述目标设备建立与源设备的一个物理连接,所述物理连接包括至少n个逻辑连接,n为大于1的整数;
所述目标设备经由所述物理连接,从所述源设备顺序接收多个数据分组;
所述目标设备确定所述源设备的n个数据流到所述至少n个逻辑连接中的n个逻辑连接的映射关系;以及
所述目标设备基于所述映射关系将接收到的所述多个数据分组分别存储到所述n个数据流各自的接收队列。
8.根据权利要求7所述的方法,所述目标设备确定所述源设备的n个数据流到所述至少n个逻辑连接中的n个逻辑连接的映射关系包括:
所述目标设备从所述多个数据分组中的至少部分数据分组的头部分别提取所述n个逻辑连接的n个逻辑连接标识和所述n个数据流的n个流标识;以及
所述目标设备基于提取的所述n个逻辑连接标识和所述n个流标识确定所述n个数据流到所述n个逻辑连接的所述映射关系。
9.根据权利要求7或8所述的方法,所述目标设备基于所述映射关系将接收到的所述多个数据分组分别存储到所述n个数据流各自的接收队列包括:
所述目标设备从所述多个数据分组各自的头部分别提取多个逻辑连接标识;以及
所述目标设备基于所述多个逻辑连接标识和所述映射关系,将所述多个数据分组分别存储到所述n个数据流各自的接收队列。
10.根据权利要求7至9中任一项所述的方法,还包括:
所述目标设备基于所述接收队列中各自存储的数据分组的量和所述n个数据流各自的传输配额,经由控制连接向所述源设备传输指示所述n个数据流中的至少一个数据流的剩余传输配额的信息,所述控制连接与所述物理连接不同。
11.根据权利要求10所述的方法,还包括:
所述目标设备经由所述控制连接从所述源设备接收指示所述n个数据流各自的所述传输配额的信息。
12.一种电子设备,包括:
一个或多个处理器;
一个或多个存储器;
一个或多个传感器;以及
一个或多个计算机程序,其中所述一个或多个计算机程序被存储在所述一个或多个存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行如权利要求1至6中任一项所述的方法,或如权利要求7至11中任一项所述的方法。
13.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1至6中任一项,或权利要求7至11中任一项的方法所述的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010598537.8A CN113852589B (zh) | 2020-06-28 | 2020-06-28 | 用于数据传输和数据接收的方法、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010598537.8A CN113852589B (zh) | 2020-06-28 | 2020-06-28 | 用于数据传输和数据接收的方法、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113852589A true CN113852589A (zh) | 2021-12-28 |
CN113852589B CN113852589B (zh) | 2023-10-24 |
Family
ID=78972119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010598537.8A Active CN113852589B (zh) | 2020-06-28 | 2020-06-28 | 用于数据传输和数据接收的方法、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113852589B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859077A (zh) * | 2005-04-30 | 2006-11-08 | 华为技术有限公司 | 一种基于分组交换的时分复用数据传输方法 |
CN102333003A (zh) * | 2010-07-12 | 2012-01-25 | 熊猫电子集团有限公司 | 数据广播分发网仿真测试系统 |
US20130250760A1 (en) * | 2012-03-22 | 2013-09-26 | Mellanox Technologies Ltd. | Communication link with intra-packet flow control |
CN103929284A (zh) * | 2014-04-09 | 2014-07-16 | 东南大学 | 一种无线传感器网络的高可靠传输方法 |
CN104022961A (zh) * | 2014-05-29 | 2014-09-03 | 华为技术有限公司 | 一种数据传输方法、装置及系统 |
CN104267946A (zh) * | 2014-09-23 | 2015-01-07 | 中国南方电网有限责任公司 | 一种基于soa大并发高性能工作流程服务器系统 |
CN107431688A (zh) * | 2015-03-12 | 2017-12-01 | 华为技术有限公司 | 数据传输方法、装置、处理器及移动终端 |
CN107683598A (zh) * | 2015-06-03 | 2018-02-09 | 桥联有限公司 | 传输数据 |
CN108092908A (zh) * | 2016-11-23 | 2018-05-29 | 华为技术有限公司 | 控制流量的方法和发送端设备 |
CN109547956A (zh) * | 2017-09-21 | 2019-03-29 | 中国移动通信集团天津有限公司 | 一种多业务并发处理方法 |
CN110389825A (zh) * | 2018-04-20 | 2019-10-29 | 伊姆西Ip控股有限责任公司 | 管理专用处理资源的方法、设备和计算机程序产品 |
CN110851288A (zh) * | 2019-10-17 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 消息处理方法及装置 |
CN111176569A (zh) * | 2019-12-27 | 2020-05-19 | 浪潮电子信息产业股份有限公司 | 一种流量配额方法、装置、系统和设备及可读存储介质 |
CN111209240A (zh) * | 2019-12-23 | 2020-05-29 | 深圳优地科技有限公司 | 数据传输的方法、电子设备及存储介质 |
-
2020
- 2020-06-28 CN CN202010598537.8A patent/CN113852589B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859077A (zh) * | 2005-04-30 | 2006-11-08 | 华为技术有限公司 | 一种基于分组交换的时分复用数据传输方法 |
CN102333003A (zh) * | 2010-07-12 | 2012-01-25 | 熊猫电子集团有限公司 | 数据广播分发网仿真测试系统 |
US20130250760A1 (en) * | 2012-03-22 | 2013-09-26 | Mellanox Technologies Ltd. | Communication link with intra-packet flow control |
CN103929284A (zh) * | 2014-04-09 | 2014-07-16 | 东南大学 | 一种无线传感器网络的高可靠传输方法 |
CN104022961A (zh) * | 2014-05-29 | 2014-09-03 | 华为技术有限公司 | 一种数据传输方法、装置及系统 |
CN104267946A (zh) * | 2014-09-23 | 2015-01-07 | 中国南方电网有限责任公司 | 一种基于soa大并发高性能工作流程服务器系统 |
CN107431688A (zh) * | 2015-03-12 | 2017-12-01 | 华为技术有限公司 | 数据传输方法、装置、处理器及移动终端 |
CN107683598A (zh) * | 2015-06-03 | 2018-02-09 | 桥联有限公司 | 传输数据 |
CN108092908A (zh) * | 2016-11-23 | 2018-05-29 | 华为技术有限公司 | 控制流量的方法和发送端设备 |
CN109547956A (zh) * | 2017-09-21 | 2019-03-29 | 中国移动通信集团天津有限公司 | 一种多业务并发处理方法 |
CN110389825A (zh) * | 2018-04-20 | 2019-10-29 | 伊姆西Ip控股有限责任公司 | 管理专用处理资源的方法、设备和计算机程序产品 |
CN110851288A (zh) * | 2019-10-17 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 消息处理方法及装置 |
CN111209240A (zh) * | 2019-12-23 | 2020-05-29 | 深圳优地科技有限公司 | 数据传输的方法、电子设备及存储介质 |
CN111176569A (zh) * | 2019-12-27 | 2020-05-19 | 浪潮电子信息产业股份有限公司 | 一种流量配额方法、装置、系统和设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113852589B (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107623646B (zh) | 数据流传输方法、发送设备及接收设备 | |
TWI430102B (zh) | 網路卡資源配置方法、儲存媒體、及電腦 | |
JP4150336B2 (ja) | 共有属性に基づいて圧縮キューペアから複数の仮想キューペアを作成する構成 | |
US5940600A (en) | Isochronous channel having a linked list of buffers | |
US20180367470A1 (en) | Network control to improve bandwidth utilization and parameterized quality of service | |
US10101955B2 (en) | Binding for audio/video streaming in a topology of devices | |
KR19990082226A (ko) | 버스 구조 위에서의 데이터 전달 및 버스 관리를 위한 응용 프로그래밍 인터페이스 | |
CN111107586B (zh) | 一种bbu前传数据的处理方法及系统 | |
EP3461086B1 (en) | Communication apparatus, communication method and computer-readable medium | |
KR20130107618A (ko) | Usb 디바이스 장치의 데이터를 클라이언트 단말을 통해 서버로 전송하는 데이터 처리 방법 및 클라이언트 단말 | |
CN108064086B (zh) | 一种带宽分配方法、装置、计算机设备及存储介质 | |
US20200167186A1 (en) | Container isolation method and apparatus for netlink resource | |
CN114745451B (zh) | 数据传输方法及装置、电子设备和计算机可读介质 | |
JP7309580B2 (ja) | 通信装置、通信方法及びプログラム | |
CN113535319A (zh) | 一种实现多rdma网卡虚拟化的方法、设备及存储介质 | |
JP2003501892A (ja) | 電子ネットワークにおけるコンテクストを切り換える装置及び方法 | |
US20240106763A1 (en) | Device and method for controlling traffic transmission/reception in network end terminal | |
CN113852589B (zh) | 用于数据传输和数据接收的方法、设备和介质 | |
WO2023221990A1 (zh) | Udp报文的分发方法、设备及可读存储介质 | |
JP7309579B2 (ja) | 通信装置、通信方法及びプログラム | |
TW201229751A (en) | Direct memory access engine physical memory descriptors for multi-media demultiplexing operations | |
US8514857B2 (en) | Virtualization-supporting programmable platform device and method of transferring packet | |
CN114911632A (zh) | 一种进程间通信的控制方法和系统 | |
CN111131081A (zh) | 一种支持多进程的高性能单向传输的方法和装置 | |
CN111245794B (zh) | 数据传输方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |