CN112804027B - 数据包生成方法及装置、数据读取方法及装置 - Google Patents
数据包生成方法及装置、数据读取方法及装置 Download PDFInfo
- Publication number
- CN112804027B CN112804027B CN201911113199.8A CN201911113199A CN112804027B CN 112804027 B CN112804027 B CN 112804027B CN 201911113199 A CN201911113199 A CN 201911113199A CN 112804027 B CN112804027 B CN 112804027B
- Authority
- CN
- China
- Prior art keywords
- data
- channel
- length
- packet
- packet header
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0083—Formatting with frames or packets; Protocol or part of protocol for error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0006—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
- H04L1/0007—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format by modifying the frame length
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/009—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location arrangements specific to transmitters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0091—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location arrangements specific to receivers, e.g. format detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及数据包生成方法及装置、数据读取方法及装置,所述数据包用于承载N个数据通道的数据,所述数据包包括数据包包头、所述N个数据通道的通道包头及所述N个数据通道的数据,N为大于1的整数,所述方法包括:在满足数据包生成条件的情况下,生成所述数据包包头;在所述数据包包头生成后,针对第i个数据通道,生成所述第i个数据通道的通道包头,并在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据。本公开实施例生成的数据包用于数据传输时,可以适应多源异构数据的高速、高效传输,具有比相关技术的各种传输方式更大的数据带宽、更低的传输延迟。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种数据包生成方法及装置、数据读取方法及装置。
背景技术
随着电子/通信技术的不断发展,现代的大型电子设备系统变得非常复杂。通常,这些系统在运行过程中,每个部件,每个子系统都会产生各种各样的海量的数据,这些数据对于系统的设计、优化、调试和测试都至关重要。但是由于这些数据的来源众多,数据接口各不相同,数据速率差别很大,实时性要求不一,因此很难对其进行统一处理。对于现代的大型电子设备来说,多源异构数据的管理、存储、挖掘和处理,是此类系统一个迫切需要解决的问题。
发明内容
有鉴于此,本公开提出了一种数据包生成方法,所述数据包用于承载N个数据通道的数据,所述数据包包括数据包包头、所述N个数据通道的通道包头及所述N个数据通道的数据,N为大于1的整数,所述方法包括:
在满足数据包生成条件的情况下,生成所述数据包包头,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
在所述数据包包头生成后,针对第i个数据通道,生成所述第i个数据通道的通道包头,并在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,i为整数且1≤i≤N,
其中,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包传输的第i个数据通道的数据长度,所述已传输数据数目表示所述第i个数据通道在所述数据包生成时间之前已被传输的数据长度。
在一种可能的实施方式中,所述方法还包括:
确定所有数据通道的缓存数据的总数据长度;
在所述总数据长度达到的总数据长度阈值的情况下,确定满足所述数据包生成条件。
在一种可能的实施方式中,在生成所述第i个数据通道的通道包头后,所述方法还包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示所述第i个数据通道的数据长度为0、且i<N时,生成第i+1个数据通道的通道包头。
在一种可能的实施方式中,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于0、且小于所述第i个数据通道的缓存数据的数据长度时,将所述第i个数据通道的通道数据长度设置为所述数据长度指示信息指示的数据长度;
在所述第i个数据通道的通道包头后写入所述第i个数据通道的缓存数据,并在i<N时生成第i+1个数据通道的通道包头,其中,写入的数据长度为所述数据长度指示信息指示的数据长度。
在一种可能的实施方式中,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于0、且大于所述第i个数据通道的缓存数据的数据长度时,将所述第i个数据通道的通道数据长度设置为所述第i个数据通道的缓存数据的数据长度;
在所述第i个数据通道的通道包头后写入所述第i个数据通道的所有缓存数据、进行比特填充,并在i<N时生成第i+1个数据通道的通道包头,其中,所述缓存数据的数据长度与比特填充的数据长度之和为所述数据长度指示信息指示的数据长度。
在一种可能的实施方式中,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于所述第i个数据通道的缓存数据长度、且所述第i个数据通道的缓存数据长度小于预设值时,将所述第i个数据通道的通道数据长度设置为0;
在所述第i个数据通道的通道包头后进行比特填充,并在i<N时生成第i+1个数据通道的通道包头,其中比特填充的数据长度为所述数据长度指示信息指示的数据长度。
在一种可能的实施方式中,所述方法还包括:
确定所述数据包中所有数据通道的数据长度之和;
当数据包中所有数据通道的数据长度之和小于预设的数据包的总数据长度时;
对第N个数据通道进行比特填充,使得数据包中所有数据通道的数据长度之和达到预设的数据包的总数据长度。
在一种可能的实施方式中,所述方法还包括:
根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定传输数据的有效数据长度;
根据每个数据通道的数据传输速率及所述有效数据长度确定每个数据通道的数据长度指示信息。
在一种可能的实施方式中,所述根据每个数据通道的数据传输速率及所述有效数据长度确定每个数据通道的数据长度指示信息,包括:
根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度;
根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定每个数据通道的数据长度指示信息。
在一种可能的实施方式中,所述根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度,包括:
通过如下公式确定所述待分配数据长度:
Sum([R])*Floor(有效数据长度/Sum([R])),其中,R表示各个数据通道的数据传输速率,Sum表示求和,Floor表示向下取整。
在一种可能的实施方式中,所述根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定每个数据通道的数据长度指示信息,包括:
通过如下公式确定每个数据通道的数据长度指示信息:
Floor(待分配数据长度/Sum([R])*当前数据通道的数据传输速率比例值)。
根据本公开的另一方面,提出了一种数据读取方法,所述方法包括:
根据数据包包头确定数据包,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
在数据包包头确定后,根据通道包头确定数据通道,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包需要传输的数据通道的数据长度,所述已传输数据数目表示所述数据通道已被传输的数据长度;
在确定的数据通道读取数据。
在一种可能的实施方式中,所述方法还包括:
根据所述数据包包头标识定位数据包包头;
根据所述数据包生成时间确定数据包的生成时间;
根据所述数据包编号及已存储的数据包编号判断数据传输完整性。
在一种可能的实施方式中,所述方法还包括:
根据所述通道包头标识定位通道包头;
根据所述通道编号确定数据通道;
根据所述通道数据长度确定所述数据通道的有效数据长度;
根据所述已传输数据数目判断是否丢包或是否错误传输。
在一种可能的实施方式中,所述方法还包括:
记录所述数据包包头的位置及每个数据通道的通道包头的位置。
在一种可能的实施方式中,所述方法还包括:
在下一次数据读取中,根据记录的数据包包头的位置确定数据包包头,根据记录的每个数据通道的通道包头的位置确定每个数据通道的通道包头。
根据本公开的另一方面,提出了一种数据包生成装置,所述数据包用于承载N个数据通道的数据,所述数据包包括数据包包头、所述N个数据通道的通道包头及所述N个数据通道的数据,N为大于1的整数,所述装置包括:
第一生成模块,用于在满足数据包生成条件的情况下,生成所述数据包包头,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
第二生成模块,用于在所述数据包包头生成后,针对第i个数据通道,生成所述第i个数据通道的通道包头,并在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,i为整数且1≤i≤N,
其中,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包传输的第i个数据通道的数据长度,所述已传输数据数目表示所述第i个数据通道在所述数据包生成时间之前已被传输的数据长度。
根据本公开的另一方面,提出了一种数据读取装置,所述装置包括:
第一确定模块,用于根据数据包包头确定数据包,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
第二确定模块,连接于所述第一确定模块,用于在数据包包头确定后,根据通道包头确定数据通道,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包需要传输的数据通道的数据长度,所述已传输数据数目表示所述数据通道已被传输的数据长度;
数据读取模块,连接于所述第二确定模块,用于在确定的数据通道读取数据。
根据本公开的另一方面,提出了一种数据包生成装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
执行所述的数据包生成方法。
根据本公开的另一方面,提出了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现所述的数据包生成方法。
根据本公开的另一方面,提供了一种数据读取装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述数据读取方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述数据读取方法。
本公开实施例的各个方面可以生成可以传输多个数据通道的数据的数据包,可以支持多通道数据 (多源数据)及多速率数据(异构数据)的高效传输,数据包格式简洁,可以降低传输的延迟,并有利于提高解包速度及解包效率。本公开实施例生成的数据包用于数据传输时,可以适应多源异构数据的高速、高效传输,具有比相关技术的各种传输方式更大的数据带宽、更低的传输延迟。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了根据本公开一实施方式的数据包生成方法的流程图。
图2a示出了根据本公开一实施方式的数据包格式示意图。
图2b示出了根据本公开一实施方式的数据包包头的示意图。
图2c示出了根据本公开一实施方式的通道包头的示意图。
图3示出了根据本公开一实施方式的数据包生成的示意图。
图4a示出了根据本公开一实施方式的生成数据包的示意图。
图4b示出了根据本公开一实施方式的数据包示意图。
图4c示出了根据本公开一实施方式的数据包示意图。
图4d示出了根据本公开一实施方式的数据包的示意图。
图4e示出了根据本公开一实施方式的数据包的示意图。
图5a示出了根据本公开一实施方式的参数配置示意图。
图5b示出了根据本公开一实施方式的数据长度指示信息分配示意图。
图5c示出了根据本公开一实施方式的数据长度指示信息分配示意图。
图6示出了根据本公开一实施方式的数据读取方法的流程图。
图7示出了根据本公开一实施方式的数据读取方法的示意图。
图8示出了根据本公开一实施方式的数据包生成装置的框图。
图9示出了根据本公开一实施方式的数据读取装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
为了同时针对多源数据和异构数据的传输进行优化,降低整个传输过程的软硬件开销和处理延迟,达到比传统的各种数据传输协议更大的数据带宽和更低的传输延迟的效果,以使得多源异构数据的传输更加高速高效,本公开提出一种新的技术方案。
本公开实施方式中提供的实施方式可适用于5G(5generation)通信系统,还可适用于4G、3G通信系统,还可适用于卫星通信系统,还可适用于后续演进的各种通信系统,例如6G、7G等。
本公开实施方式也适用于不同的网络架构,包括但不限于中继网络架构、双链接架构, Vehicle-to-Everything(车辆到任何物体的通信)架构。
本公开实施方式中所述的5G CN也可以称为新型核心网(new core)、或者5G NewCore、或者下一代核心网(next generation core,NGC)等。5G-CN独立于现有的核心网,例如演进型分组核心网(evolved packet core,EPC)而设置。
请参阅图1,图1示出了根据本公开一实施方式的数据包生成方法的流程图。
所述方法可以应用于终端、服务器、网元设备中。
其中,终端又称之为用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等,是一种向用户提供语音和/或数据连通性的设备,例如,具有无线连接功能的手持式设备、车载设备等。目前,一些终端的举例为:手机(mobile phone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobileinternetdevice,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmentedreality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(selfdriving) 中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home) 中的无线终端、车联网中的无线终端等。
所述网元设备是网络中将终端接入到无线网络的部分。所述网元设备可以是基站。目前,一些基站的举例为:gNB、传输接收点(transmission reception point,TRP)、演进型节点B(evolved Node B,eNB)、无线网络控制器(radio network controller,RNC)、节点B(Node B,NB)、基站控制器(base station controller,BSC)、基站收发台(basetransceiver station,BTS)、家庭基站(例如,home evolved NodeB,或home Node B,HNB)、基带单元(base band unit,BBU),或无线保真(wireless fidelity,Wifi)接入点(accesspoint,AP)等。
当然,本公开对终端、服务器、网元设备的具体实施方式、类型不做限定。
本公开实施例生成的所述数据包可以用于承载N个数据通道的数据,所述数据包包括数据包包头、所述N个数据通道的通道包头及所述N个数据通道的数据,N为大于1的整数,如图1所示,所述方法包括:
步骤S11,在满足数据包生成条件的情况下,生成所述数据包包头,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
步骤S12,在所述数据包包头生成后,针对第i个数据通道,生成所述第i个数据通道的通道包头,并在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,i为整数且1≤i≤N,
其中,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包传输的第i个数据通道的数据长度,所述已传输数据数目表示所述第i个数据通道在所述数据包生成时间之前已被传输的数据长度。
通过以上方法,本公开实施例可以生成可以传输多个数据通道的数据的数据包,可以支持多通道数据(多源数据)及多速率数据(异构数据)的高效传输,数据包格式简洁,可以降低传输的延迟,并有利于提高解包速度及解包效率。本公开实施例生成的数据包用于数据传输时,可以适应多源异构数据的高速、高效传输,具有比相关技术的各种传输方式更大的数据带宽、更低的传输延迟。
下面对数据包的数据包格式进行示例性介绍。
请参阅图2a,图2a示出了根据本公开一实施方式的数据包格式示意图。
如图2a所示,数据包可以包括数据包包头(Packet Header,PHDR)、多个数据通道的通道包头(Channel Header,CHDR)及每个数据通道的数据。
在一个示例中,数据包包头的数据长度可以为32、64、128、256、1024bits等。当然,本公开实施例对数据包包头的数据长度不做限定,本领域技术人员可以根据需要设定数据包包头的数据长度。
当然,应该明白的是,本公开实施例虽然介绍了数据包包头的数据长度可以包括多种,但是,在一次传输中,每个数据包的数据包包头的数据长度可以设置为相同,这样,便于接收端对数据包进行解包,减少解包时间。
应该说明的是,本公开实施例所说的“一次传输”可以指对多个数据源的任意数据量的数据的传输,本公开不限定传输的时间、数据量。
数据包包头可以包括整个数据包的描述信息,下面将对数据包包头进行示例性介绍。
请参阅图2b,图2b示出了根据本公开一实施方式的数据包包头的示意图。
如图2b所示,所述数据包包头包括数据包包头标识(PHDR Kcode)、数据包生成时间(Time ID)、数据包编号(Packet ID)。
数据包包头标识可以作为数据包包头的特征识别码,当发送端发送数据包后,接收端可以根据数据包包头对数据包进行定位,例如,可以根据数据包包头标识确定当前位置的数据是否为数据包包头。
在一个示例中,数据包包头标识可以包括128bits。
数据包生成时间的单位可以为秒、毫秒、纳秒等,对于数据包生成时间的单位,本公开不做限定。
在一个示例中,数据包生成时间可以包括64bits,如果以纳秒为单位,则本公开实施例可以保证持续运行580年而不重复,因此可以实现高精度的时间定位。
对于数据采集和处理应用来说,需要将采集和处理的数据传输到CPU(例如终端、服务器、网元设备的CPU,或其他处理器)进行汇总。一般来说,对于多源异构数据,可以将某一种数据源发送过来的某一种格式的数据称为1个通道。
在数据传输中,数据包可以包括多个,在一次传输中,多个数据包的数据包可以是连续的,例如,当前一个传输的数据包的编号为t时,当前数据包的数据包编号可以为t+1。
通过将数据包编号设置为连续的形式,接收端可以通过数据包编号判断传输的数据是否丢失,由于packet ID应该是顺序递增的,如果在数据传输过程中发生数据丢失或者数据错误,则可以定位到数据丢失或者错误的具体位置。因此,本公开实施例可以确保数据完整性。
在一个示例中,数据包编号的数据长度可以设置为64bits。
当然,以上对数据包包头中各个部分的数据长度的介绍是示例性的,不应视为是对本公开的限定,本领域技术人员可以根据数据传输的场景、数据类型对数据包包头各个部分的数据长度进行适应性设置。
请继续参阅图2a。
本公开实施例的数据包可以传输多源异构数据,即可以传输多个数据通道的数据,因此,在一个数据包中,可以包括多个数据通道的通道包头、及多个数据通道的数据。
其中,第一个数据通道的通道包头可以靠近数据包包头。
本公开实施例对通道包头的数据长度不做限定,在一个示例中,通道包头的数据长度可以与数据包包头的数据长度相同。
通道包头可以包括对应的数据通道的相关信息,下面将对通道包头进行示例性介绍。
请参与同图2c,图2c示出了根据本公开一实施方式的通道包头的示意图。
如图2c所示,所述通道包头包括通道包头标识(CHDR Kcode)、通道编号(ChannelID)、通道数据长度(Size)、已传输数据数目(Data Idx)。
本公开实施例利用通道包头指示数据通道的相关信息,可以方便接收端解包,从而得到正确的通道数据,并且,设置通道包头对每个数据通道进行标识,可以支持多源异构数据。
在一个示例中,所述通道包头标识可以包括两个部分,在通道包头最开始的部分及结尾的部分,如图2c所示,通道包头标识在通道包头的开始部分可以为64bits,在通道包头的结尾部分可以为128bits。
通道包头可以作为数据通道通道包头的特征识别码,以对通道包头进行定位。当接收端接收到数据包后,可以根据通道包头标识确定待识别位置的数据是否为通道包头。
在一个示例中,通道编号可以为8bits。
在一种可能的实施方式中,一个数据包中,通道编号可以是连续的。
本公开实施例通过将一个数据包中的通道编号设置为连续,可以便于接收端从数据包中解析出正确的通道数据,也可以利用通道编号判断数据数据包是否完整,是否存在数据丢失,结合数据包生成时间,如果数据发生丢失,可以判断是何时丢失的。因此,本公开实施例可以对传输的数据包的数据完整性进行监控。
在一个示例中,所述通道数据长度表示所述数据包传输的数据通道的数据长度,例如,如果数据包中传输的数据通道1的有效数据长度为A,则数据通道1的通道包头的通道数据长度的值为A。
当然,每个数据通道的通道数据长度可以适应性设置,即,数据包传输的每个数据通道的数据长度可以是不同的,以达到支持数据包的多速率传输数据的目的。
在一个示例中,如图2c所示,通道数据长度可以设置为16bits。
在一个示例中,所述已传输数据数目表示所述第i个数据通道在所述数据包生成时间之前已被传输的数据长度。
在一个示例中,当前数据包的第i个数据通道的已传输数据数目应该等于上一个数据包内的第i个数据通道的已传输数据数目加上上一个数据包内的第i个数据通道的通道数据长度。接收端在接收到数据包,并进行解包时,可以将当前数据包的第i个数据通道的已传输数据数目与上一个数据包内的第i个数据通道的已传输数据数目加上上一个数据包内的第i个数据通道的通道数据长度进行比较,从而判断是否存在丢包。例如,二者如果不等,则说明数据有丢包,或者传输错误的现象。
通过所述已传输数据数目,接收端可以结合已接收的数据包快速定位数据,可以对数据传输状态进行监控。
在一个示例中,如图2c所示,已传输数据数目的数据长度可以为32bits。
当然,通道包头还可以包括其他的信息,例如,可以在通道数据长度及已传输数据之间增加8bits 的预留数据,并根据需要进行定义。
当然,以上对通道包头中各个部分的数据长度的介绍是示例性的,不应视为是对本公开的限定,本领域技术人员可以根据数据传输的场景、数据类型对通道包包头各个部分的数据长度进行适应性设置。
请继续参阅图2a,如图2a所示,在每个通道包头后,可以包括各个数据通道的数据。
从上面的介绍可知,相对整个数据包来说,本公开实施例的数据包包头和通道包头的数据长度很短,因此不会明显的增加数据传输的带宽。而整个数据包格式在解包过程中,软件开销很低,因此可以实现多源异构数据的高效传输。
以上对数据包的格式进行了示例性介绍,下面将对生成数据包的过程进行示例性介绍。
请参阅图3,图3示出了根据本公开一实施方式的数据包生成的示意图。
在数据传输中,本公开实施例的数据包可以对多个数据通道的数据进行传输,如图3所示,数据通道可以包括数据通道CH 0-数据通道CH N,数据通道CH 0-数据通道CH N可以来自一个数据源,也可以来自多个数据源,本公开实施例的数据包可以对多源数据进行传递,因此,本公开实施例对数据的来源不做限定。
在一个示例中,发送端可以对多个数据通道的数据以先进先出FIFO(当然,也可以为后进先出 LIFO等其他缓存方式)的方式进行缓存,在生成数据包之前,本公开实施例可以对生成数据包的条件进行监测,在满足生成数据包的条件时,本公开实施例可以利用多个数据通道的数据生成数据包。
在一个示例中,本公开实施例可以通过如下方法判断是否开始数据包生成:
确定所有数据通道的缓存数据的总数据长度;
在所述总数据长度达到的总数据长度阈值的情况下,确定满足所述数据包生成条件。
如图3所示,当数据通道CH 0-数据通道CH N的FIFO缓存中的缓存数据的总数据长度达到总数据长度阈值时,本公开实施例可以确定满足数据包生成条件,并根据数据通道CH 0-数据通道CH N的数据生成数据包。
当数据包生成,发送端可以将数据包传输,对应的,可以将FIFO缓存中已经传输的数据清除,从而为数据通道CH 0-数据通道CH N的其他数据准备FIFO缓存空间。
本公开实施例对各个数据通道的FIFO缓存深度不做限定,对所述总数据长度阈值也不做限定,本领域技术人员可以根据需要设定。
如图3所示,本公开实施例在数据包生成过程中,可以按照数据通道的编号顺序(数据通道CH 0- 数据通道CH N的顺序)对各个数据通道的数据进行打包,例如,可以先对数据通道CH0进行打包,然后对数据通道1进行打包等等。按照这样的打包顺序进行数据包生成,较为简单,打包流程便捷。
当然,在其他实施方式中,也可以按照其他顺序进行打包,例如,可以按照每个数据通道的FIFO 缓存大小确定打包顺序(例如,FIFO缓存越大,则最先打包),或者按照预设的优先级顺序进行打包,对此,本公开不做限定。
请参阅图4a,图4a示出了根据本公开一实施方式的生成数据包的示意图。
如图4a所示,生成数据包的状态机的初始状态为空闲状态(IDLE),在空闲状态下,状态机等待使能信号。
当状态机接收到使能信号时,状态机可以同时读取各个数据通道上的FIFO缓存的总数据长度,在总数据长度满足数据包生成条件的情况下(达到总数据长度阈值),状态机开始进入生成数据包包头的状态(即生成PHDR),以启动数据传输。
在数据包包头生成后,状态机可以将数据包包头的内容发送到打包数据流中,以进入生成通道包头的流程。
状态机根据预先确定的打包顺序,进行数据通道的通道包头的生成,在通道包头生成后,在通道包头后写入该数据通道的数据,重复进行该过程,直到完成数据包的生成。
下面将结合图4b-图4e对数据包的生成过程进行示例性介绍。
请一并参阅图4b,图4b示出了根据本公开一实施方式的数据包示意图。
在一种可能的实施方式中,在生成所述第i个数据通道的通道包头后,所述方法还可以包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示所述第i个数据通道的数据长度为0、且i<N时,生成第i+1个数据通道的通道包头。
应该说明的是,所述数据长度指示信息由用户提前根据需要配置好,后面讲进行介绍。
假设当前处理的是第i个数据通道,在生成第i个数据通道的通道包头时,要对需要写入到数据包的第i个数据通道的缓存数据进行读取,需要打包到数据包的第i个数据通道的数据由数据长度指示信息、FIFO缓存中的数据长度共同决定。
当第i个数据通道的数据长度指示信息指示的数据长度为0时,表示指示不通过该数据包传输第i 个数据通道的数据,因此,本公开实施例可以直接放弃读取第i个数据通道的FIFO缓存中的数据,进入下一个数据通道的通道包头的生成。
如图4b所示,假设第i个数据通道为CH0,则CH0后的数据为空。
应该说明的是,本公开实施例虽然根据数据通道CH0的数据长度指示信息放弃传输该数据通道的数据,但是,本公开实施例可以保留该数据通道的通道包头(如图4b所示),这样,接收端在接收到数据包后,可据此判断数据包未传输该数据通道的数据的真实情况,避免造成丢包误判。
当然,在其他的实施方式中,本公开实施例也可以在判断该通道的数据长度指示信息指示的数据长度为0时,直接整体跳过该数据通道的流程,即,可以放弃对该数据通道的通道包头的生成,直接进行下一个数据通道的通道包头的生成,这样,可以节约数据包的带宽,提高数据传输效率。
当然,以上描述是示例性的,不应视为是对本公开的限制。
请参阅图4c,图4c示出了根据本公开一实施方式的数据包示意图。
在一种可能的实施方式中,步骤S12在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,可以包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于0、且小于所述第i个数据通道的缓存数据的数据长度时,将所述第i个数据通道的通道数据长度设置为所述数据长度指示信息指示的数据长度;
在所述第i个数据通道的通道包头后写入所述第i个数据通道的缓存数据,并在i<N时生成第i+1个数据通道的通道包头,其中,写入的数据长度为所述数据长度指示信息指示的数据长度。
假设第i个数据通道为数据通道CH0,状态机在生成数据通道CH0的通道包头时,会根据数据通道 CH0的数据长度指示信息及数据通道CH0的FIFO缓存的缓存数据的数据长度设置通道数据长度。假设数据通道CH0的缓存数据的数据长度大于数据指示信息指示的数据长度,表示该数据包可以将数据长度指示信息指示的该数据通道的数据长度全部传输,因此,该数据包实际传输的数据通道CH0的数据长度即为该数据长度指示信息指示的数据长度。在完成数据通道CH0的通道包头的生成后,状态机即可进入FIFO数据读取状态,从数据通道CH0的FIFO缓存中读取数据长度指示信息指示的数据长度的数据,并写入到数据通道CH0的通道包头之后(如图4c所示)。
请参阅图4d,图4d示出了根据本公开一实施方式的数据包的示意图。
在一种可能的实施方式中,步骤S12在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,还可以包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于0、且大于所述第i个数据通道的缓存数据的数据长度时,将所述第i个数据通道的通道数据长度设置为所述第i个数据通道的缓存数据的数据长度;
在所述第i个数据通道的通道包头后写入所述第i个数据通道的所有缓存数据、进行比特填充,并在i<N时生成第i+1个数据通道的通道包头,其中,所述缓存数据的数据长度与比特填充的数据长度之和为所述数据长度指示信息指示的数据长度。
假设第i个数据通道为数据通道CH0,状态机在生成数据通道CH0的通道包头时,会根据数据通道 CH0的数据长度指示信息及数据通道CH0的FIFO缓存的缓存数据的数据长度设置通道数据长度。假设数据通道CH0的缓存数据的数据长度小于数据指示信息指示的数据长度,表示该数据包可以将数据通道CH0的缓存数据全部传输,因此,该数据包实际传输的数据通道CH0的数据长度即为该数据通道CH0 的缓存数据的数据长度。在完成数据通道CH0的通道包头的生成后,状态机即可进入FIFO数据读取状态,从数据通道CH0的FIFO缓存中读取数据通道CH0的所有缓存数据,并写入到数据通道CH0的通道包头之后,然而,由于数据通道CH0的缓存数据的数据长度小于数据长度指示信息指示的数据长度,因此,为了保证最终数据包的大小的一致性,需要对数据包中该数据通道的数据进行比特填充(Kcode),以使得比特填充后的数据通道CH0的数据长度达到数据长度指示信息指示的数据长度(如图4d所示)。
应该说明的是,用于进行比特填充的数据可以是预先准备好的,可以区分于正常数据、通道包头标识、数据包包头标识等数据的数据(例如,数据包包头标识可以为64'hBC97_7C3E_FDA5_FB96,通道包头标识可以为
64'hBC95_7C3E_FDA5_FB96,进行比特填充的Kcode可以为
64'hBC91_7C3E_FDA5_FB96)。当然,本公开对用于进行比特填充的数据不作限定,本领域技术人员可以根据需要选择。
当然,以上描述了静态配置的方法,即,提前配置了第i个数据通道的数据长度指示信息后,数据包就以指示信息指示的数据长度传输该数据通道的数据,然而,本公开不限于此,在生成数据包的过程中,数据长度指示信息可以被动态指示,例如,当状态机读取到数据通道CH0的缓存数据的数据长度后,可以动态设置数据长度指示信息指示的数据长度为数据通道CH0的缓存数据的数据长度,这样,可以根据各个数据通道缓存数据的数据长度对实际传输通道数据长度进行实时配置,可以增加灵活性。
当然,为了便于接收端解包,减少接收端寻找通道包头的时间,提高解包的效率,本公开实施例可以采用静态配置的方法,提前根据每个数据通道的数据传输率配置每个数据通道的数据长度指示信息,这将在后文进行详细介绍。
请参阅图4e,图4e示出了根据本公开一实施方式的数据包的示意图。
在一种可能的实施方式中,步骤S12在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,还可以包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于所述第i个数据通道的缓存数据长度、且所述第i个数据通道的缓存数据长度小于预设值时,将所述第i个数据通道的通道数据长度设置为0;
在所述第i个数据通道的通道包头后进行比特填充,并在i<N时生成第i+1个数据通道的通道包头,其中比特填充的数据长度为所述数据长度指示信息指示的数据长度。
在一个示例中,所述预设值可以是一个较小的值,例如可以为4。
假设第i个数据通道为数据通道CH0,状态机在生成数据通道CH0的通道包头时,会根据数据通道 CH0的数据长度指示信息及数据通道CH0的FIFO缓存的缓存数据的数据长度设置通道数据长度。假设数据通道CH0的缓存数据的数据长度小于数据指示信息指示的数据长度、且数据通道CH0的缓存数据的数据长度小于预设值,表示数据通道CH0的缓存数据量太小,本公开实施例可以将数据通道CH0的通道数据长度设置为0,并跳过读FIFO数据的过程,即,在该数据包不传输数据通道CH0的缓存数据,然而,为了保证最终数据包的大小的一致性,需要对数据包中该数据通道的数据进行比特填充(Kcode),以使得比特填充后的数据通道CH0的数据的数据长度达到数据长度指示信息指示的数据长度(如图4e 所示)。
请继续参阅图4a,如果第i个通道(cur_ch)的缓存数据打包完成,状态机可以进入下一个数据通道(cur_ch++),如果下一个数据通道的通道编号小于一个数据包内总的通道数量,则进入“生成CHDR”状态;如果当前数据包打包完成,则使当前通道编号回到起始数值0,并进入“生成PHDR”状态,并开始进行下一个数据包的打包流程。
应该说明的是,以上对数据包生成的过程的介绍是示例性的,不应视为是对本公开的限定。
下面对生成数据包的各项参数的设置进行说明。
请参阅图5a,图5a示出了根据本公开一实施方式的参数配置示意图。
在一个示例中,一次数据传输可以包括多个数据包,本公开实施例提出的数据包可以支持多源异构数据,为了提高接收端的解包效率,本公开实施例在一次数据传输中,每个数据包的总数据长度可以设置为相同,例如,都为K*2M(数据包的数据长度单位可以根据需要设定),其中,M、K为大于0 的整数。在一次数据传输中,如果每个数据包的总数据长度相等,则可以设置每个数据包的N、K为相同。
当然,在其他的实施方式中,一次数据传输中,K的值也可以根据需要设置,即,每个数据包的总数据长度可以根据需要设置,当需要适应性、灵活地改变某个数据包的总数据长度时,可以改变K 的大小。
在一个示例中,数据包要传输的数据通道的数目也可以提前配置,即,可以提前配置M的大小。
在一个示例中,每个数据通道的数据长度指示信息好也可以提前配置。
在一种可能的实施方式中,如图5a所示,对于发送端,可以配置用于生成数据包的状态机的各个参数,例如,当状态机从空闲状态被启动后,可以包括:
设置数据包承载的数据通道的数目,并配置预设的数据包的总数据长度(即配置帧长度)。
在一个示例中,数据包的总数据长度可以为K*2M(Byte),对于一次数据传输的多个数据包,为了降低接收端解包的开销,每个数据包的总数长度可以设置为相同,例如,可以设置K=1或其他定值,在N被设定后,每个数据包的总数据长度都为2M。这样,接收端在解包时,可以避免在大数据流中寻找包头,可以节约计算资源。
当然,如前所述,为了增加一次数据传输中的灵活性,可以对某个数据包的总数据长度单独进行设置,例如可以通过改变K的大小改变数据包的总数据长度。
在数据包的总数据长度配置完成后,可以对数据包要传输的每个数据通道的数据长度指示信息进行配置,所述数据长度指示信息用于指示该数据通道的通道数据长度。
下面将对配置每个数据通道的数据长度指示信息进行示例性介绍。
在一种可能的实施方式中,配置每个数据通道的数据长度指示信息可以包括:
根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定传输数据的有效数据长度(图5a中的计算当前包的有效数据长度);
根据每个数据通道的数据传输速率及所述有效数据长度确定每个数据通道的数据长度指示信息。
其中,可以从所述预设的数据包的总数据长度减去数据包包头的数据长度、所有通道包头的数据长度作为传输数据的有效数据长度,即,可以通过如下公式确定传输数据的有效数据长度:
传输数据的有效数据长度=所述预设的数据包的总数据长度-PHDR的数据长度-N*CHDR的数据长度,其中,N为待打包的数据通道的数目。
在一种可能的实施方式中,所述根据每个数据通道的数据传输速率及所述有效数据长度确定每个数据通道的数据长度指示信息,可以包括:
根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度;
根据各个数据通道的数据传输速率之间的比例(图5a中的数据率比例)及所述待分配数据长度确定每个数据通道的数据长度指示信息。
所述数据传输速率可以用于表示单位时间内传输的数据的数目,各个数据通道的数据传输速率之间的比例可以表示为:
数据通道0:数据通道1:数据通道2:数据通道3…=r[0]:r[1]:r[2]:r[3]…。
本公开实施例通过各个数据通道的数据传输速率之间的比例确定数据包中每个数据通道的数据长度指示信息,可以针对多源异构数据分配资源,可以避免数据带宽的浪费,提高数据传输效率。
在一种可能的实施方式中,所述根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度,可以包括:
通过如下公式确定所述待分配数据长度:
Sum([R])*Floor(有效数据长度/Sum([R])),其中,R表示各个数据通道的数据传输速率,Sum表示求和,Floor表示向下取整。
在一种可能的实施方式中,所述根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定每个数据通道的数据长度指示信息,包括:
通过如下公式确定每个数据通道的数据长度指示信息:
Floor(待分配数据长度/Sum([R])*当前数据通道的数据传输速率比例值)。
通过以上方法,本公开可以对各个数据通道的数据长度指示信息进行分配,以适应多源异构数据的不同情况,可以提高数据传输效率。
当然,根据以上方法分配每个数据通道的数据长度指示信息,可能存在各个数据通道的数据长度指示信息指示的数据长度之和小于预设的数据包的总数据长度的情况,为了确保数据包的总数据长度保持固定,因此,本公开实施例可以对最后一个数据通道的数据进行比特填充,下面进行示例性介绍。
在一种可能的实施方式中,在确定了每个数据通道的数据长度指示信息后,所述方法还可以包括:
确定所述数据包中所有数据通道的数据长度之和;
当数据包中所有数据通道的数据长度之和小于预设的数据包的总数据长度时;
对第N个数据通道进行比特填充,使得数据包中所有数据通道的数据长度之和达到预设的数据包的总数据长度。
其中,在对第N个数据通道进行比特填充时,可以根据如下公式确定第N个数据通道的数据长度:
所述预设的数据包的总数据长度-PHDR的数据长度-N*CHDR的数据长度-(第1个数据通道至第 N-1个数据通道的数据长度之和),其中,N为待打包的数据通道的数目。
在确定最后一个数据通道的数据长度后,可以确定需要进行比特填充的数据长度。
通过以上方式,本公开实施例可以实现对执行数据包生成方法的终端或服务器的状态机的配置。
下面将结合具体的示例对以上配置方法进行示例性说明。
请参阅图5b,图5b示出了根据本公开一实施方式的数据长度指示信息分配示意图。
假设一个数据包用于传输4个数据通道(数据通道CH0-CH3)的数据,并假设预设的数据包的总数据长度为128个数据单位(可以根据具体情况设置),数据包包头PHDR占用一个数据单位,4个数据通道的通道包头占用4个数据单位,假设四个数据通道的数据传输速率分别为1、2、1、2(单位根据实际情况确定)。
则,“根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定传输数据的有效数据长度”,可以得到传输数据的有效数据长度为123个数据单位。
则,根据“Sum([R])*Floor(有效数据长度/Sum([R]))”,可得待分配数据长度为Sum([1,2,2,1])* Floor(123/Sum([1,2,2,1]))=120个数据单位。
则,根据“Floor(待分配数据长度/Sum([R])*当前数据通道的数据传输速率比例值)”,可得4个数据通道的数据长度指示信息指示的数据长度分别为40,20,40,20。
则,根据“所述预设的数据包的总数据长度-PHDR的数据长度-N*CHDR的数据长度-(第1个数据通道至第N-1个数据通道的数据长度之和)”,可以确定第4个数据通道(数据通道CH3)的数据长度为128-5-40-20-40=23,即需要比特填充3个数据单位。
如图5b所示,该数据包包括一个数据包包头、4个数据通道的通道包头,第一个数据通道(数据通道CH0)分配的数据长度指示信息指示的数据长度为40个数据单位,第二个数据通道(数据通道CH1) 分配的数据长度指示信息指示的数据长度为20个数据单位,第三个数据通道(数据通道CH2)分配的数据长度指示信息指示的数据长度为40个数据单位,第四个数据通道(数据通道CH3)分配的数据长度指示信息指示的数据长度为23个数据单位,其中第四个数据通道的3个数据单位需要进行比特填充 (最后两个框可以表示3个数据单位)。
请参阅图5c,图5c示出了根据本公开一实施方式的数据长度指示信息分配示意图。
假设一个数据包用于传输3个数据通道的数据(数据通道CH0、数据通道CH1、数据通道CH3,其中,数据通道CH2不传输),并假设预设的数据包的总数据长度为128个数据单位(可以根据具体情况设置),数据包包头PHDR占用一个数据单位,4个数据通道的通道包头占用4个数据单位,假设3个数据通道的数据传输速率分别为1,2,4(单位根据实际情况确定),且因为数据通道CH2不传输,可以设置其数据长度指示信息为0。
则,“根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定传输数据的有效数据长度”,可以得到传输数据的有效数据长度为123个数据单位。
则,根据“Sum([R])*Floor(有效数据长度/Sum([R]))”,可得待分配数据长度为Sum([4,2,0,1])* Floor(123/Sum([4,2,0,1]))=119个数据单位。
则,根据“Floor(待分配数据长度/Sum([R])*当前数据通道的数据传输速率比例值)”,可得数据通道CH0、数据通道CH1、数据通道CH3的数据长度指示信息指示的数据长度分别为68,24,17,其中数据通道CH2的数据长度指示信息指示的数据长度为0。
则,根据“所述预设的数据包的总数据长度-PHDR的数据长度-N*CHDR的数据长度-(第1个数据通道至第N-1个数据通道的数据长度之和)”,可以确定第4个数据通道(数据通道CH3)的数据长度为 128-5-68-34=21,即需要比特填充3个数据单位。
如图5c所示,该数据包包括一个数据包包头、4个数据通道的通道包头,第一个数据通道(数据通道CH0)分配的数据长度指示信息指示的数据长度为68个数据单位,第二个数据通道(数据通道CH1) 分配的数据长度指示信息指示的数据长度为34个数据单位,第三个数据通道(数据通道CH2)分配的数据长度指示信息指示的数据长度为0个数据单位,第四个数据通道数据通道(CH3)分配的数据长度指示信息指示的数据长度为21个数据单位,其中第四个数据通道的4个数据单位需要进行比特填充 (最后两个框可以表示4个数据单位)。
本公开提出的数据包生成方法生成的数据包结构能够在整个数据包的大小相对固定的情况下,保证一个包内每个通道的数据大小是不同的,从而满足同时处理多通道数据及多传输速率数据的需求,所需要的软硬件处理逻辑也并不复杂。因此在满足高速高效数据传输的要求的基础上,既能够缩小软硬件开销,也降低了系统的处理延迟。
相对于传统的数据包生成方式,本公开实施例针对多源异构数据的传输需求进行数据包生成,本公开实施例可以实现硬件打包和软件解包的优化,从而能有效的减少整个多源数据传输系统的软硬件开销和延迟.并且在此基础上,设计出了一套行之有效的数据包结构的配置逻辑,从而可以适应各种多源数据和异构数据的高速高效传输应用场合,可以达到比传统的各种数据传输协议更大的数据带宽和更低的传输延迟。
在对数据包的生成参数进行配置后,在此后的数据传输中,每个数据包的数据包格式可以被固定下来,这样,每个数据包的数据包包头可以在数据包的相同位置,由于每个数据包传输的数据通道的数目、数据长度也被固定下来,因此,每个数据通道的通道包头也可以在数据包的相同位置,这样,对于接收端来说,当得到一个数据包的数据包包头位置、通道包头位置后,即可根据数据包包头位置对其他数据包的数据包包头进行快速定位,可根据存储的通道包头位置对其他数据包的通道包头进行快速定位,这样可以提高解包效率,减少解包开销。
当然,应该明白的是,以上对数据包生成的状态机的配置介绍是示例性的,不应视为是对本公开的限定。
以上对生成数据包的过程进行介绍,下面将对接收端的数据读取过程,即解包过程进行示例性介绍。
请参阅图6,图6示出了根据本公开一实施方式的数据读取方法的流程图,所述方法可以应用于终端、服务器等中。
如图6所示,所述方法包括:
步骤S21,根据数据包包头确定数据包,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
步骤S22,在数据包包头确定后,根据通道包头确定数据通道,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包需要传输的数据通道的数据长度,所述已传输数据数目表示所述数据通道已被传输的数据长度;
步骤S23,在确定的数据通道读取数据。
通过以上方法,本公开可以根据数据包包头确定数据包,由于本公开实施例中的数据传输中各个数据包的大小固定,因此数据包包头的位置固定,可以接收端可以快速、准确对数据包进行定位,并开始通道头的识别、数据的读取,因此本公开实施例提出的数据读取方法,可以快速读取到数据包中的数据,具有较低的处理延迟、很高的处理带宽。
在一种可能的实时方式中,所述方法还可以包括:
根据所述数据包包头标识定位数据包包头;
根据所述数据包生成时间确定数据包的生成时间;
根据所述数据包编号及已存储的数据包编号判断数据传输完整性。
本公开实施例读取的数据包具有数据包包头、数据包生成时间、数据包编号,因此,接收端可以通过数据包包头标识确定当前读取的数据是否为数据包包头,可以实现数据包的快速定位,并且,根据数据包包头中的数据包生成时间,可以确定数据包的生成时间,以对数据包进行监控。并且,由于在数据传输中,本公开实施例可以设置各个数据包的数据包编号连续,因此,接收端可以根据当前数据包的数据包编号及已存储在接收端存储装置中的数据包编号判断是否发生丢包或错误传输,从而判断数据传输的完整性。
在一种可能的实施方式中,所述方法还可以包括:
根据所述通道包头标识定位通道包头;
根据所述通道编号确定数据通道;
根据所述通道数据长度确定所述数据通道的有效数据长度;
根据所述已传输数据数目判断是否丢包或是否错误传输。
本公开实施例提出的数据包读取方法,读取的数据包中包括通道包头标识、通道编号、通道数据长度、已传输数据数目,根据通道包头标识,接收端可以判断当前识别的数据是否为通道包头,通过通道编号,本公开实施例可以快速确定当前要读取的数据来源。通过通道数据长度,接收端可以知道当前数据通道要传输的数据长度,并和实际接收的数据长度进行比较,可以判断当前数据通道的数据是否发生丢包。且,由于已传输数据记录了该数据包之前所有数据包已传输的该数据通道的数据长度,通过已传输数据数目,接收端结合已存储的数据可以判断是否发生丢包。
在一种可能的实施方式中,所述方法还包括:
记录所述数据包包头的位置及每个数据通道的通道包头的位置。
在一种可能的实施方式中,所述方法还包括:
在下一次数据读取中,根据记录的数据包包头的位置确定数据包包头,根据记录的每个数据通道的通道包头的位置确定每个数据通道的通道包头。
在一次数据传输中,多个数据包的数据包格式可以相同,多个数据包的大小可以相同,因此,当确定了一个数据包的数据包包头的位置、数据通道的通道包头的位置后,在接下来的数据包的数据读取中,可以根据记录的数据包包头的位置快速识别数据包包头,可以根据记录的数据通道的通道包头的位置快速识别数据通通道的通道包头。
通过以上方法,本公开实施例可以提高每个数据包的数据包包头、通道包头的定位速度,从而提高数据包的解包效率,减少解包开销。
下面结合具体的示例对数据读取方法进行示例性介绍。
请参阅图7,图7示出了根据本公开一实施方式的数据读取方法的示意图。
如图7所示,解包状态机在初始时处于空闲状态IDLE。当有数据包到来时,状态机接收到启动信号,开始解包过程。
本公开实施例提出的数据读取方法,读取的数据包中,数据包包头PHDR一般会在传输的数据流中的固定位置。因此可以在这些固定的位置中寻找PHDR,PHDR中的数据包包头标识可以帮助判断是否为正确的PHDR。
随后,根据PHDR的位置,可以依次找到所有CHDR的位置,获取并记录他们的位置参数,通过记录PHDR,CHDR的位置,在下一个数据包的数据读取中,可以加快数据读取的速度。
本公开实施例的数据包生成中,设置数据包的数据大小保持一致,对于一次数据传输中,每个数据包的数据包包头、各个数据通道的通道包头可以在相同的位置,当PHDR和CHDR的位置不变时,对于数据流中的多个数据包,在解包时,可以避免频偏地对数据包包头、通道包头进行定位,从而可以显著的降低解包的时间和延迟,达到很高的处理带宽。
找到PHDR和CHDR的位置后,可以进入“校验PHDR”状态,对找到的PHDR进行校验。
校验PHDR:
本公开实施例可以根据包定义的数据包包头标识,校验该数据是否为PHDR,若识别信息无误,则进入“校验CHDR”状态;若识别信息有误,则表明接收到的数据包的通道数据长度被动态更新,或者发生了传输错误,因此进入“ERROR”状态(即错误状态)。“ERROR”状态会导致状态机进入“寻找PHDR和CHDR”状态,重新寻找PHDR和CHDR的位置。
校验CHDR:
根据包定义的通道包头标识位置,校验该数据是否为CHDR,若识别信息无误,则进入“读取数据”状态;若识别信息有误,则表明接收到的数据包的通道数据长度在传输的过程中被动态更新,或者发生了传输错误,因此进入“ERROR”状态。“ERROR”状态会导致状态机进入“寻找PHDR和CHDR”状态,重新寻找PHDR和CHDR的位置。
读取数据:
若PHDR及CHDR都校验通过,则从CHDR中提取当前数据包内通道数据长度,然后根据通道数据长度读取该数据通道的数据。
当前通道的数据读取完成之后,则进入“下一通道”状态,校验下一个通道的CHDR及读取下一个通道的数据,直到所有通道的数据都被读取完毕。
ERROR状态:
若在校验及读取数据的过程中出现错误,则表明接收到的数据包的通道数据长度被动态更新,或者发生了传输错误,因此进入“ERROR”状态。此时使PHDR及CHDR的位置参数和通道编号回到起始状态0,并令软件重新进入“寻找PHDR及CHDR”状态,重新寻找PHDR和CHDR的位置。
从上面的分析可以看出,解包过程中,只有“寻找PHDR和CHDR”这个状态比较耗费CPU计算时间。而其他的状态,包括“校验”和“读取数据”状态,示例性的,每个数据都可以在1个CPU操作时钟内完成,从而可以达到很低的处理延迟以及很高的处理带宽。
当然,应该说明的是,以上描述的数据读取方法为与数据包生成方法对应,对于数据包的具体介绍,请参照之前对数据包生成方法的说明,在此不再赘述。
请参阅图8,图8示出了根据本公开一实施方式的数据包生成装置的框图。
所述数据包用于承载N个数据通道的数据,所述数据包包括数据包包头、所述N个数据通道的通道包头及所述N个数据通道的数据,N为大于1的整数,如图8所示,所述装置包括:
第一生成模块10,用于在满足数据包生成条件的情况下,生成所述数据包包头,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
第二生成模块20,用于在所述数据包包头生成后,针对第i个数据通道,生成所述第i个数据通道的通道包头,并在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,i为整数且1≤i ≤N,
其中,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包传输的第i个数据通道的数据长度,所述已传输数据数目表示所述第i个数据通道在所述数据包生成时间之前已被传输的数据长度。
本公开实施例可以生成可以传输多个数据通道的数据的数据包,可以支持多通道数据(多源数据) 及多速率数据(异构数据)的高效传输,数据包格式简洁,可以降低传输的延迟,并有利于提高解包速度及解包效率。本公开实施例生成的数据包用于数据传输时,可以适应多源异构数据的高速、高效传输,具有比相关技术的各种传输方式更大的数据带宽、更低的传输延迟。
在一种可能的实施方式中,所述装置还包括配置模块,所述配置模块用于:
确定所有数据通道的缓存数据的总数据长度;
在所述总数据长度达到的总数据长度阈值的情况下,确定满足所述数据包生成条件。
在一种可能的实施方式中,在生成所述第i个数据通道的通道包头后,所述方法还包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示所述第i个数据通道的数据长度为0、且i<N时,生成第i+1个数据通道的通道包头。
在一种可能的实施方式中,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于0、且小于所述第i个数据通道的缓存数据的数据长度时,将所述第i个数据通道的通道数据长度设置为所述数据长度指示信息指示的数据长度;
在所述第i个数据通道的通道包头后写入所述第i个数据通道的缓存数据,并在i<N时生成第i+1个数据通道的通道包头,其中,写入的数据长度为所述数据长度指示信息指示的数据长度。
在一种可能的实施方式中,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于0、且大于所述第i个数据通道的缓存数据的数据长度时,将所述第i个数据通道的通道数据长度设置为所述第i个数据通道的缓存数据的数据长度;
在所述第i个数据通道的通道包头后写入所述第i个数据通道的所有缓存数据、进行比特填充,并在i<N时生成第i+1个数据通道的通道包头,其中,所述缓存数据的数据长度与比特填充的数据长度之和为所述数据长度指示信息指示的数据长度。
在一种可能的实施方式中,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于所述第i个数据通道的缓存数据长度、且所述第i个数据通道的缓存数据长度小于预设值时,将所述第i个数据通道的通道数据长度设置为0;
在所述第i个数据通道的通道包头后进行比特填充,并在i<N时生成第i+1个数据通道的通道包头,其中比特填充的数据长度为所述数据长度指示信息指示的数据长度。
在一种可能的实施方式中,所述配置模块还用于:
确定所述数据包中所有数据通道的数据长度之和;
当数据包中所有数据通道的数据长度之和小于预设的数据包的总数据长度时;
对第N个数据通道进行比特填充,使得数据包中所有数据通道的数据长度之和达到预设的数据包的总数据长度。
在一种可能的实施方式中,所述配置模块还用于:
根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定传输数据的有效数据长度;
根据每个数据通道的数据传输速率及所述有效数据长度确定每个数据通道的数据长度指示信息。
在一种可能的实施方式中,所述根据每个数据通道的数据传输速率及所述有效数据长度确定每个数据通道的数据长度指示信息,包括:
根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度;
根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定每个数据通道的数据长度指示信息。
在一种可能的实施方式中,所述根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度,包括:
通过如下公式确定所述待分配数据长度:
Sum([R])*Floor(有效数据长度/Sum([R])),其中,R表示各个数据通道的数据传输速率,Sum表示求和,Floor表示向下取整。
在一种可能的实施方式中,所述根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定每个数据通道的数据长度指示信息,包括:
通过如下公式确定每个数据通道的数据长度指示信息:
Floor(待分配数据长度/Sum([R])*当前数据通道的数据传输速率比例值)。
应该说明的是,所述数据包生成装置为所述数据包生成方法对应的装置,其具体介绍请参考之前对方法的描述,在此不再赘述。
请参阅图9,图9示出了根据本公开一实施方式的数据读取装置的框图。
如图9所示,所述装置包括:
第一确定模块30,用于根据数据包包头确定数据包,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
第二确定模块40,连接于所述第一确定模块30,用于在数据包包头确定后,根据通道包头确定数据通道,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包需要传输的数据通道的数据长度,所述已传输数据数目表示所述数据通道已被传输的数据长度;
数据读取模块50,连接于所述第二确定模块40,用于在确定的数据通道读取数据。
通过以上装置,本公开可以根据数据包包头确定数据包,由于本公开实施例中的数据传输中各个数据包的大小固定,因此数据包包头的位置固定,可以接收端可以快速、准确对数据包进行定位,并开始通道头的识别、数据的读取,因此本公开实施例提出的数据读取方法,可以快速读取到数据包中的数据,具有较低的处理延迟、很高的处理带宽。
在一种可能的实施方式中,所述第一确定模块30还用于:
根据所述数据包包头标识定位数据包包头;
根据所述数据包生成时间确定数据包的生成时间;
根据所述数据包编号及已存储的数据包编号判断数据传输完整性。
在一种可能的实施方式中,所述第二确定模块40还用于:
根据所述通道包头标识定位通道包头;
根据所述通道编号确定数据通道;
根据所述通道数据长度确定所述数据通道的有效数据长度;
根据所述已传输数据数目判断是否丢包或是否错误传输。
在一种可能的实施方式中,所述装置还包括记录模块,所述记录模块用于:
记录所述数据包包头的位置及每个数据通道的通道包头的位置。
在下一次数据读取中,根据记录的数据包包头的位置确定数据包包头,根据记录的每个数据通道的通道包头的位置确定每个数据通道的通道包头。
应该说明的是,所述数据读取装置为所述数据读取方法对应的装置,其具体介绍请参考之前对方法的描述,在此不再赘述。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (18)
1.一种数据包生成方法,其特征在于,所述数据包用于承载N个数据通道的数据,所述数据包包括数据包包头、所述N个数据通道的通道包头及所述N个数据通道的数据,N为大于1的整数,所述方法包括:
在满足数据包生成条件的情况下,生成所述数据包包头,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
在所述数据包包头生成后,针对第i个数据通道,生成所述第i个数据通道的通道包头,并在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,i为整数且1≤i≤N,
其中,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包传输的第i个数据通道的数据长度,所述已传输数据数目表示所述第i个数据通道在所述数据包生成时间之前已被传输的数据长度,
所述方法还包括:
根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定传输数据的有效数据长度,包括:从所述预设的数据包的总数据长度减去数据包包头的数据长度、所有通道包头的数据长度作为传输数据的有效数据长度,其中,所有通道包头的数据长度为所述通道包头的数据长度与待打包的数据通道的数目之积;
根据每个数据通道的数据传输速率及所述有效数据长度确定每个数据通道的数据长度指示信息,包括:根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度;根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定每个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所有数据通道的缓存数据的总数据长度;
在所述总数据长度达到的总数据长度阈值的情况下,确定满足所述数据包生成条件。
3.根据权利要求1所述的方法,其特征在于,在生成所述第i个数据通道的通道包头后,所述方法还包括:
获取所述第i个数据通道的数据长度指示信息;
在所述数据长度指示信息指示所述第i个数据通道的数据长度为0、且i<N时,生成第i+1个数据通道的通道包头。
4.根据权利要求1所述的方法,其特征在于,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息;
在所述数据长度指示信息指示的数据长度大于0、且小于所述第i个数据通道的缓存数据的数据长度时,将所述第i个数据通道的通道数据长度设置为所述数据长度指示信息指示的数据长度;
在所述第i个数据通道的通道包头后写入所述第i个数据通道的缓存数据,并在i<N时生成第i+1个数据通道的通道包头,其中,写入的数据长度为所述数据长度指示信息指示的数据长度。
5.根据权利要求1所述的方法,其特征在于,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息;
在所述数据长度指示信息指示的数据长度大于0、且大于所述第i个数据通道的缓存数据的数据长度时,将所述第i个数据通道的通道数据长度设置为所述第i个数据通道的缓存数据的数据长度;
在所述第i个数据通道的通道包头后写入所述第i个数据通道的所有缓存数据、进行比特填充,并在i<N时生成第i+1个数据通道的通道包头,其中,所述缓存数据的数据长度与比特填充的数据长度之和为所述数据长度指示信息指示的数据长度。
6.根据权利要求1所述的方法,其特征在于,所述在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,包括:
获取所述第i个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度;
在所述数据长度指示信息指示的数据长度大于所述第i个数据通道的缓存数据长度、且所述第i个数据通道的缓存数据长度小于预设值时,将所述第i个数据通道的通道数据长度设置为0;
在所述第i个数据通道的通道包头后进行比特填充,并在i<N时生成第i+1个数据通道的通道包头,其中比特填充的数据长度为所述数据长度指示信息指示的数据长度。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述数据包中所有数据通道的数据长度之和;
当数据包中所有数据通道的数据长度之和小于预设的数据包的总数据长度时;
对第N个数据通道进行比特填充,使得数据包中所有数据通道的数据长度之和达到预设的数据包的总数据长度。
8.根据权利要求1所述的方法,其特征在于,所述根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度,包括:
通过如下公式确定所述待分配数据长度:
Sum([R])*Floor(有效数据长度/Sum([R])),其中,R表示各个数据通道的数据传输速率,Sum表示求和,Floor表示向下取整。
9.根据权利要求8所述的方法,其特征在于,所述根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定每个数据通道的数据长度指示信息,包括:
通过如下公式确定每个数据通道的数据长度指示信息:
Floor(待分配数据长度/Sum([R])*当前数据通道的数据传输速率比例值)。
10.一种数据读取方法,其特征在于,所述方法包括:
根据数据包包头确定数据包,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
在数据包包头确定后,根据通道包头确定数据通道,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包需要传输的数据通道的数据长度,所述已传输数据数目表示所述数据通道已被传输的数据长度,其中,每个的数据通道的数据长度根据数据长度指示信息确定,所述数据长度指示信息根据每个数据通道的数据传输速率及传输数据的有效数据长度确定,所述传输数据的有效数据长度根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定,所述传输数据的有效数据长度为所述预设的数据包的总数据长度减去数据包包头的数据长度、所有通道包头的数据长度,所有通道包头的数据长度为所述通道包头的数据长度与待打包的数据通道的数目之积,每个数据通道的数据长度指示信息根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定,所述待分配数据长度根据每个数据通道的数据传输速率及所述有效数据长度确定;
在确定的数据通道读取数据。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据所述数据包包头标识定位数据包包头;
根据所述数据包生成时间确定数据包的生成时间;
根据所述数据包编号及已存储的数据包编号判断数据传输完整性。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据所述通道包头标识定位通道包头;
根据所述通道编号确定数据通道;
根据所述通道数据长度确定所述数据通道的有效数据长度;
根据所述已传输数据数目判断是否丢包或是否错误传输。
13.根据权利要求10所述的方法,其特征在于,所述方法还包括:
记录所述数据包包头的位置及每个数据通道的通道包头的位置。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
在下一次数据读取中,根据记录的数据包包头的位置确定数据包包头,根据记录的每个数据通道的通道包头的位置确定每个数据通道的通道包头。
15.一种数据包生成装置,其特征在于,所述数据包用于承载N个数据通道的数据,所述数据包包括数据包包头、所述N个数据通道的通道包头及所述N个数据通道的数据,N为大于1的整数,所述装置包括:
第一生成模块,用于在满足数据包生成条件的情况下,生成所述数据包包头,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
第二生成模块,用于在所述数据包包头生成后,针对第i个数据通道,生成所述第i个数据通道的通道包头,并在所述第i个数据通道的通道包头后写入所述第i个数据通道的数据,i为整数且1≤i≤N,
其中,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包传输的第i个数据通道的数据长度,所述已传输数据数目表示所述第i个数据通道在所述数据包生成时间之前已被传输的数据长度;
配置模块,所述配置模块用于:
根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定传输数据的有效数据长度,包括:从所述预设的数据包的总数据长度减去数据包包头的数据长度、所有通道包头的数据长度作为传输数据的有效数据长度,其中,所有通道包头的数据长度为所述通道包头的数据长度与待打包的数据通道的数目之积;
根据每个数据通道的数据传输速率及所述有效数据长度确定每个数据通道的数据长度指示信息,包括:根据每个数据通道的数据传输速率及所述有效数据长度确定待分配数据长度;根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定每个数据通道的数据长度指示信息,所述数据长度指示信息用于指示需要写入至所述数据包的所述第i个数据通道的数据长度。
16.一种数据读取装置,其特征在于,所述装置包括:
第一确定模块,用于根据数据包包头确定数据包,所述数据包包头包括数据包包头标识、数据包生成时间、数据包编号,所述数据包包头标识用于对数据包包头进行定位;
第二确定模块,连接于所述第一确定模块,用于在数据包包头确定后,根据通道包头确定数据通道,所述通道包头包括通道包头标识、通道编号、通道数据长度、已传输数据数目,所述通道包头标识用于对通道包头进行定位,所述通道数据长度表示所述数据包需要传输的数据通道的数据长度,所述已传输数据数目表示所述数据通道已被传输的数据长度,其中,每个的数据通道的数据长度根据数据长度指示信息确定,所述数据长度指示信息根据每个数据通道的数据传输速率及传输数据的有效数据长度确定,所述传输数据的有效数据长度根据预设的数据包的总数据长度、数据包包头的数据长度、通道包头的数据长度、待打包的数据通道的数目确定,所述传输数据的有效数据长度为所述预设的数据包的总数据长度减去数据包包头的数据长度、所有通道包头的数据长度,所有通道包头的数据长度为所述通道包头的数据长度与待打包的数据通道的数目之积,每个数据通道的数据长度指示信息根据各个数据通道的数据传输速率之间的比例及所述待分配数据长度确定,所述待分配数据长度根据每个数据通道的数据传输速率及所述有效数据长度确定;
数据读取模块,连接于所述第二确定模块,用于在确定的数据通道读取数据。
17.一种数据包生成装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
执行如权利要求1至9任一项所述的方法。
18.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911113199.8A CN112804027B (zh) | 2019-11-14 | 2019-11-14 | 数据包生成方法及装置、数据读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911113199.8A CN112804027B (zh) | 2019-11-14 | 2019-11-14 | 数据包生成方法及装置、数据读取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112804027A CN112804027A (zh) | 2021-05-14 |
CN112804027B true CN112804027B (zh) | 2023-04-18 |
Family
ID=75803676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911113199.8A Active CN112804027B (zh) | 2019-11-14 | 2019-11-14 | 数据包生成方法及装置、数据读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112804027B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117675967A (zh) * | 2022-08-26 | 2024-03-08 | 上海禾赛科技有限公司 | 数据传输方法及装置、数据解析方法及装置、激光雷达 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101674145A (zh) * | 2009-10-21 | 2010-03-17 | 中兴通讯股份有限公司 | 一种传输数据的方法及装置 |
CN101895364A (zh) * | 2010-06-25 | 2010-11-24 | 中兴通讯股份有限公司 | 一种传送时分复用业务的方法及装置 |
CN105471548A (zh) * | 2015-11-04 | 2016-04-06 | 中国直升机设计研究所 | 一种网络数据包解析及分发方法 |
WO2016197804A1 (zh) * | 2015-06-08 | 2016-12-15 | 中国移动通信集团公司 | 数据包的压缩方法和装置 |
CN109033003A (zh) * | 2018-08-07 | 2018-12-18 | 天津市滨海新区信息技术创新中心 | 数据流切片比对的方法、装置和异构系统 |
CN110086566A (zh) * | 2019-03-18 | 2019-08-02 | 深圳市元征科技股份有限公司 | 一种车载数据的传输方法及车载设备 |
-
2019
- 2019-11-14 CN CN201911113199.8A patent/CN112804027B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101674145A (zh) * | 2009-10-21 | 2010-03-17 | 中兴通讯股份有限公司 | 一种传输数据的方法及装置 |
CN101895364A (zh) * | 2010-06-25 | 2010-11-24 | 中兴通讯股份有限公司 | 一种传送时分复用业务的方法及装置 |
WO2016197804A1 (zh) * | 2015-06-08 | 2016-12-15 | 中国移动通信集团公司 | 数据包的压缩方法和装置 |
CN105471548A (zh) * | 2015-11-04 | 2016-04-06 | 中国直升机设计研究所 | 一种网络数据包解析及分发方法 |
CN109033003A (zh) * | 2018-08-07 | 2018-12-18 | 天津市滨海新区信息技术创新中心 | 数据流切片比对的方法、装置和异构系统 |
CN110086566A (zh) * | 2019-03-18 | 2019-08-02 | 深圳市元征科技股份有限公司 | 一种车载数据的传输方法及车载设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112804027A (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111818136B (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
US7313104B1 (en) | Wireless computer system with latency masking | |
CN109561464B (zh) | 一种上报缓存状态和分配资源的方法及设备 | |
US10225196B2 (en) | Apparatus, system and method for controlling packet data flow | |
CN112583477B (zh) | 一种延时测量方法、系统和存储介质 | |
CN109587732B (zh) | 一种服务质量流的传输方法及装置 | |
CN104424105A (zh) | 一种内存数据的读写处理方法和装置 | |
CN101877659A (zh) | 一种丢包监控的方法、设备和系统 | |
CN110740481A (zh) | 基于服务质量的数据处理方法、设备和计算机存储介质 | |
US20120320772A1 (en) | Communication devices for transmitting data based on available resources | |
CN103078919A (zh) | 一种二次封装的数据传输方法 | |
CN112804027B (zh) | 数据包生成方法及装置、数据读取方法及装置 | |
CN102238064B (zh) | 数据传输方法、装置和系统 | |
CN113676386B (zh) | 一种fc-ae-1553总线协议报文通讯系统 | |
CN110248379A (zh) | 无线局域网中基站的性能测试方法及装置 | |
CN107645747B (zh) | 一种发送和接收数据的方法及设备 | |
CN114125881A (zh) | 接口数据的处理方法、发送端设备和接收端设备 | |
CN110169023A (zh) | 一种数据传输方法、数据接收设备及数据发送设备 | |
US8477805B2 (en) | Wireless communication apparatus and wireless communication method | |
CN114079675B (zh) | 报文处理方法、装置、终端设备及移动宽带上网设备 | |
KR20210145833A (ko) | 기지국 장치, 단말 장치, 통신 방법 및 통신 시스템 | |
CN112970322B (zh) | 信息确定方法、装置、系统、设备及存储介质 | |
CN114401549A (zh) | 双模系统下的信标帧优化方法、装置及设备 | |
CN107371263A (zh) | 上行资源的调度方法和装置 | |
CN114513271A (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 |