CN115276891A - 数据传输方法、装置及可读存储介质 - Google Patents

数据传输方法、装置及可读存储介质 Download PDF

Info

Publication number
CN115276891A
CN115276891A CN202110483034.0A CN202110483034A CN115276891A CN 115276891 A CN115276891 A CN 115276891A CN 202110483034 A CN202110483034 A CN 202110483034A CN 115276891 A CN115276891 A CN 115276891A
Authority
CN
China
Prior art keywords
data
packet
data packet
packets
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.)
Pending
Application number
CN202110483034.0A
Other languages
English (en)
Inventor
谭志远
董朋朋
刘菁
祝慧颖
朱元萍
徐小英
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110483034.0A priority Critical patent/CN115276891A/zh
Priority to PCT/CN2022/089568 priority patent/WO2022228467A1/zh
Publication of CN115276891A publication Critical patent/CN115276891A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • H04L1/0058Block-coded modulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0064Concatenated codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0079Formats for control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及移动通信领域,可以应用于LTE或NR等协议框架下,尤其涉及一种数据传输方法、装置及可读存储介质,该方法包括对SDU/PDU进行分割和/或级联后获得待编码的数据包,并对待编码的数据包进行编码以生成编码包,发送该编码包和指示前述分割和/或级联的信息。这样可以对SDU/PDU应用网络编码技术,从而可以在多个SDU/PDU丢失的情况下恢复出PDU/SDU,减少性能损失和重传,减少时延。本申请可以应用于XR业务和低时延业务。

Description

数据传输方法、装置及可读存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种数据传输方法、装置及可读存储介质。
背景技术
网络编码技术是一种通过对若干个大小相同的数据包进行编码获得编码数据包(简称为编码包),并通过对足够的编码数据包进行译码恢复原数据包的方法。因为编码数据包融合了若干个原数据包的信息,所以接收端可以用编码数据包来恢复原数据包。该技术是一种可以有效改善无线通信系统传输性能的方法。
现有通信系统中,虽然反馈重传实现了有效的差错控制,如媒体接入控制(mediaaccess control,MAC)层的混合自动重传请求(hybrid automatic repeat request,HARQ)机制和无线链路控制(radio link control,RLC)层的自动重传请求重传机制联合保证了传输的可靠性。但是随着通信技术的演进及发展,新一代无线接入技术(new radio accesstechnology,NR/5G)对系统的可靠性、有效性等提出了更高的需求,反馈重传机制也面临着诸多问题,比如多播或者广播场景中频繁的反馈导致的开销大及性能损失问题,突发连续错误场景、双连接或者多连接拥堵场景下的性能损失严重等问题。由于网络编码技术是一种前向纠错技术,其通过对原始数据包进行编码并预先增加冗余来对抗无线传输中的丢包或性能损失等问题,可以减少反馈开销,所以网络编码为新一代无线接入技术提供了一种保证传输可靠性的不同解决思路。
然而,因为网络编码技术要求原数据的大小均相同,而现有NR协议中,任何一层对应的业务数据单元(service data unit,SDU)或者协议数据单元(protocol data unit,PDU)大小都无法保证是相同的,所以现有NR协议无法支持网络编码技术。
如何使网络编码技术在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下获得应用是当前亟待解决的问题。
发明内容
本申请实施例提供一种数据传输方法、装置及可读存储介质,可以使网络编码技术在不依赖于SDU或PDU大小的场景下也可以获得应用。
下面从不同的方面介绍本申请,应理解的是,下面的不同方面的实施方式和有益效果可以互相参考。
第一方面,本申请提供一种数据传输方法,该方法包括:第一设备获取N个第一数据包,再传输获取到的该N个第一数据包;第一设备对获取到的该N个第一数据包进行编码并加编码包包头后得到M个第二数据包,传输该M个第二数据包。其中,该N个第一数据包的大小相等。每个第一数据包包括包头和数据。每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息。换句话说,每个第一数据包的包头中包括该第一数据包的数据与数据单元的映射关系。或者说,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。每个第一数据包的包头还包括数据包标识字段,用于指示该第一数据包的序列号。该编码包包头包括编码因子字段。其中,第一数据包是原数据包,第二数据包是编码包。N和M均为正整数,且M和N的大小关系不做限定,即M可以小于N,也可以大于N。
可选的,上述数据单元是PDU或SDU。
可选的,第一设备是编码端或发送端。第一设备既可以是网络设备,如基站;也可以是终端设备,如用户设备(user equipment,UE)。
可选的,该N个第一数据包和该M个第二数据包之间的对应关系可以是预定义的,或者,配置给第二设备(即,接收端)的。比如,可以通过将该对应关系携带在该N个第一数据包和/或该M个第二数据包来告知第二设备。具体的,该对应关系可以携带在该N个第一数据包的包头和/或该M个第二数据包的包头。
本申请中的预定义可以理解为定义、预先定义、存储、预存储、预协商、预配置、固化、或预烧制。
可见,本方案通过在获得原数据包(即上述第一数据包)后一方面直接发送原数据包来保证接收端的低延时。另一方面对原数据包进行网络编码,在网络编码后发送冗余编码包(即上述第二数据包),因为冗余编码包的编码数据可以恢复出原数据包(这是因为编码数据是由原数据包经过网络编码后得到),并且原数据包中有完整的包头信息,所以即使在传输过程中多个原数据包丢失,也可以根据冗余编码包恢复出原数据包,再根据原数据包的包头携带的分割和级联信息,对原数据包的数据进行分割和级联的逆处理,从而恢复出PDU/SDU数据。因此,本方案不仅可以使网络编码技术在不依赖于SDU或PDU大小的场景下也可以获得应用,从而在现有NR协议中支持网络编码技术,还可以降低时延。此外,即使在多个原数据包丢失的情况下也能恢复出PDU或SDU,减少性能损失和重传时延。
结合第一方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包的编码包包头还包括第二指示信息,用于指示该第二指示信息所在的第二数据包是编码包。
可见,本方案通过在包头中增加指示信息来指示该包头所在的数据包是原数据包还是编码包,有利于译码端/接收端区分接收到的数据包是原数据包还是编码包,从而采用不同的方式对接收到的数据包进行解析、译码等操作,以得到PDU/SDU。
第二方面,本申请提供一种数据传输方法,该方法包括:第二设备获取P个数据包,并对该P个数据包进行译码,获得译码后的N个第一数据包,该P个数据包中包括K个第一数据包和P-K个第二数据包。
其中,N个第一数据包的大小相等。每个第一数据包包括包头和数据。每个第一数据包的包头包括数据包标识字段,该数据包标识字段用于指示该第一数据包的序列号。每个第二数据包包括编码包包头和编码数据。该每个第二数据包的编码包包头包括编码因子字段。每个第一数据包的包头包括该第一数据包的数据部分对应的至少一个数据单元的分割和级联信息。换句话说,每个第一数据包的包头中包括该第一数据包的数据与数据单元的映射关系。或者说,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。其中,第一数据包是原数据包,第二数据包是编码包。P、K、以及N均为正整数,P大于或等于N,K小于或等于P,K小于或等于N。
进一步的,第二设备再根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将该N个第一数据包的数据还原成至少一个数据单元。
可选的,上述数据单元是PDU或SDU。
可选的,第二设备是译码端或接收端。第二设备既可以是网络设备,如基站;也可以是终端设备,如UE。
可选的,该N个第一数据包和该M个第二数据包之间的对应关系可以是预定义的,或者,从发送端获取的。比如,该对应关系可以携带在该N个第一数据包和/或该M个第二数据包中。具体的,该对应关系可以携带在该N个第一数据包的包头和/或该M个第二数据包的包头。
示例的,该对应关系携带在该M个第二数据包的包头。该对应关系通过用于指示编码得到该第二数据包的N个第一数据包的标识信息来指示。
本申请中的预定义可以理解为定义、预先定义、存储、预存储、预协商、预配置、固化、或预烧制。
结合第二方面,在一种可能的设计中,对该P个数据包进行译码,获得译码后的N个第一数据包,包括:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的序列号和该P-K个第二数据包的包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N-K个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。该译码后的N-K个第一数据包和该K个第一数据包属于N个第一数据包。
可选的,在该N个第一数据包和/或该M个第二数据包中携带该N个第一数据包和该M个第二数据包之间的对应关系。具体的,该对应关系可以携带在该N个第一数据包的包头和/或该M个第二数据包的包头。这样,可以基于该对应关系来获得上述系数因子矩阵。可选的,可以在该M个第二数据包的包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息来指示该对应关系。
可以理解的是,由于第二数据包较第一数据包多了包头,第二数据包的长度比第一数据包长。因而,可以基于数据包的长度来确定该数据包是第一数据包还是第二数据包。
具体的,可以通过长度阈值来确定。该长度阈值的设定可以区分出第一数据包和第二数据包即可。
可选的,上述长度阈值是编码包长度阈值L1。根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包,包括:比较该P个数据包中每个数据包的长度与该编码包长度阈值L1的大小关系;如果该P个数据包中某个数据包的长度等于该编码包长度阈值L1,则确定该数据包是第二数据包(编码包);如果该P个数据包中某个数据包的长度小于该编码包长度阈值L1,则确定该数据包是第一数据包(原数据包);从而从该P个数据包中确定出K个第一数据包和P-K个第二数据包。
可选的,上述长度阈值是原数据包长度阈值L2。根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包,包括:比较该P个数据包中每个数据包的长度与该原数据包长度阈值L2的大小关系;如果该P个数据包中某个数据包的长度小于或等于该原数据包长度阈值L2,则确定该数据包是第一数据包(原数据包);如果该P个数据包中某个数据包的长度大于该原数据包长度阈值L2,则确定该数据包是第二数据包(编码包);从而从该P个数据包中确定出K个第一数据包和P-K个第二数据包。
可见,本方案提供一种译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。
结合第二方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包包头包括第二指示信息,用于指示该第二指示信息所在的第二数据包是编码包。这样,以上译码步骤中可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码数据包,进而采用相对应的解析方式对该数据包的包头进行解析。
可见,本方案提供另一种译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少性能损失和重传时延。
第三方面,本申请提供一种数据传输装置,该数据传输装置可以是第一设备或第一设备中的芯片。该数据传输装置包括:获取模块,用于获取N个第一数据包,该N个第一数据包的大小相等,每个第一数据包包括包头和数据,该每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系,该每个第一数据包的包头还包括数据包标识字段,该数据包标识字段用于指示该第一数据包的序列号;传输模块,用于传输该获取模块获取到的N个第一数据包;编码模块,用于对该获取模块获取到的N个第一数据包进行编码并加编码包包头后得到M个第二数据包,该编码包包头包括编码因子字段;该传输模块,还用于传输该M个第二数据包。其中,第一数据包是原数据包,第二数据包是编码包。N和M均为正整数,且M和N的大小关系不做限定,即M可以小于N,也可以大于N。
可选的,上述数据单元是PDU或SDU。
结合第三方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包的编码包包头包括第二指示信息,用于指示该第二指示信息所在的第二数据包是编码包。
第四方面,本申请提供一种数据传输装置,该数据传输装置可以是第二设备或第二设备中的芯片。该数据传输装置包括:获取模块,用于获取P个数据包,该P个数据包中包括K个第一数据包和P-K个第二数据包,每个第一数据包包括包头和数据,该每个第一数据包的包头包括数据包标识字段,该数据包标识字段用于指示该第一数据包的序列号,每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包包头包括编码因子字段;译码模块,用于对该P个数据包进行译码,获得译码后的N个第一数据包,该N个第一数据包的大小相等,该每个第一数据包的包头还包括该第一数据包的数据部分对应的至少一个数据单元的分割和级联信息,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系;还原模块,用于根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将该N个第一数据包的数据还原成至少一个数据单元。其中,第一数据包是原数据包,第二数据包是编码包。P和K均为正整数,K小于或等于P。P大于或等于N。
可选的,上述数据单元是PDU或SDU。
结合第四方面,在一种可能的设计中,上述译码模块,具体用于:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的序列号和该P-K个第二数据包的包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N-K个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。该译码后的N-K个第一数据包和该K个第一数据包属于N个第一数据包。
如何根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包,可以参考第二方面中的描述,在此不予展开。
结合第四方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;每个第二数据包的编码包包头包括第二指示信息,用于指示该第二指示信息所在的第二数据包是编码包。这样,译码模块可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码包,进而采用相对应的解析方式对该数据包的包头进行解析。上述任一方面的一种实现方式中,一个第一数据包的数据包括一个或多个数据段,一个数据段包括一个PDU/SDU的全部或部分。换句话说,原数据包中的数据包括一个或多个数据段,每个数据段来自不同的PDU/SDU,一个数据段是一个PDU/SDU的全部或部分。
可选的,上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元是否被分割的信息,或者指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该第一数据包的数据包括的第i个数据段是否是该第一数据包的数据中的最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum。第一数据包的数据中数据段的排列方式可以按照PDU/SDU的序列号大小,从小到大排列,即序列号最小的PDU/SDU作为第一个数据段,中间数据段对应的PDU/SDU的序列号依次增加,序列号最大的PDU/SDU作为最后一个数据段。第一数据包的数据中数据段对应的PDU/SDU的序列号也可以乱序排列。
可选的,每个第一数据包的包头还可以包括类型(Type)字段和块标识(Block ID)字段中的一项或多项。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围,块标识(Block ID)字段用于指示数据块的标识,这个数据块包括该Block ID字段所在的第一数据包。
进一步的,通过在第二数据包的包头也携带该块标识,可以通过该块标识指示编码得到该第二数据包的多个第一数据包。
可见,本方案通过指示每个数据段是否是最后一个数据段,并为每一个数据段指示其长度,有利于译码端根据原数据包(即上述第一数据包)的包头的指示对原数据(即上述第一数据包的数据)进行分割和级联,以恢复出一个或多个PDU/SDU。
上述任一方面的一种实现方式中,上述分割和级联信息包括:该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元的序列号,或者该第一数据包的数据中数据段对应的数据单元的最大序列号和/或最小序列号;指示该第一数据包的数据包括的第i个数据段是否是最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
可见,本方案通过在包头中指示起始数据段和/或末尾数据段对应的PDU/SDU的序列号,可以指示出多个第一数据包的数据中数据段所来自的PDU/SDU,以使译码端能够将不同的数据段恢复成PDU/SDU。
上述任一方面的一种实现方式中,上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段是否是最后一个数据段(或者说,该第一数据包的数据中第一个数据段后是否存在下一个数据段)以及该第一个数据段对应的数据单元是否完整(完整即为未被分割,不完整即为被分割)的信息;指示该第一数据包的数据包括的第i个数据段是否是最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
可见,本方案通过指示第一数据包的数据中起始数据段和末尾数据段对应的数据单元是否完整,并为每个数据段都设置1bit的扩展比特字段来指示该数据段是否是最后一个数据段,并为每一个数据段设置一个长度字段来指示其长度,有利于译码端根据原数据包的包头的指示对原数据进行分割和级联,以恢复出一个或多个PDU/SDU。
上述任一方面的一种实现方式中,上述分割和级联信息包括:上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元是否被分割的信息,或者指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该第一数据包的数据中包括的数据段的个数的信息;以及指示每个数据段的长度的信息。
应理解,如果第一数据包的总长度可以确定,第一数据包的包头长度也可以确定,则上述分割和级联信息中可以只包括Dnum-1个数据段中每个数据段的长度,而不是包括Dnum个数据段中每个数据段的长度,剩下的一个数据段的长度可通过该第一数据包的总长度、该第一数据包的包头长度以及Dnum-1个数据段的长度计算得出。Dnum表示第一数据包的数据中包括的数据段总数。
可见,本方案通过指示第一数据包的数据中包括的数据段个数,无需针对每个数据段都指示其是否是最后一个数据段,可以节省开销。
上述任一方面的一种实现方式中,每个第二数据包的编码包包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息。该用于指示编码得到该第二数据包的N个第一数据包的标识信息是块标识(Block ID)字段或包括以下至少两项:指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。应理解,如果编码窗的窗长是半静态配置的,则用于指示编码得到该第二数据包的N个第一数据包的标识信息包括编码窗中第一个第一数据包的序列号、和编码窗中最后一个第一数据包的序列号中的至少一项即可。编码因子字段(如Coeff ID字段)的长度为8bit,用于指示码本的行索引,这里的码本可以是范德蒙码本、柯西码本、随机码本等。
可选的,上述编码包包头还可以包括类型(Type)字段和Packet ID字段中的一项或多项。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围。编码包包头中的Packet ID字段用于指示该Packet ID字段所在第二数据包(编码包)的SN。
可见,本方案提供的编码包包头既可以是重新设计的,其含义清晰;也可以是复用现有的编码包包头中的字段,不仅可以保证译码端的正确译码,还可以提高兼容性。
上述任一方面的一种实现方式中,第一数据包的序列号顺序递增。和/或,每个第二数据包的编码包包头中还包括该第二数据包的序列号。第二数据包的序列号也顺序递增。其中,因为原数据包(即第一数据包)的包头中携带有自己的序列号,编码包(即第二数据包)的编码包包头中既可以携带自己的序列号,也可以不携带自己的序列号,所以针对序列号的实现方式有以下几种:(1)编码包(即第二数据包)的编码包包头中不携带序列号,即编码包包头中不存在Packet ID字段,此时原数据包(即第一数据包)的序列号顺序编号。(2)编码包的序列号和原数据包的序列号都顺序编号(共用一套编号系统),且编码包的序列号与原数据包的序列号不重复。(3)编码包的序列号和原数据包的序列号分别有自己的一套编号系统,互不影响。(4)编码包的序列号和原数据包的序列号都顺序编号(共用一套序列号),且允许编码包的序列号与原数据包的序列号重复使用,可使用包头的指示信息来区分原数据包和编码包。
可见,本方案针对序列号设计不同的方案,灵活多样。
第五方面,本申请提供一种数据传输方法,该方法包括:第一设备获取N个第一数据包,并对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包,该编码包包头包括编码因子字段;第一设备传输该M个第二数据包。其中,该N个第一数据包的大小相等。每个第一数据包包括包头和数据。每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息。该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。第一数据包是原数据包,第二数据包是编码包。M大于N,N和M均为正整数。
可选的,上述数据单元是PDU或SDU。
可选的,第一设备是编码端或发送端。第一设备既可以是网络设备,如基站;也可以是终端设备,如UE。
可选的,用于编码的编码系数矩阵中前N行构成的子矩阵是单位阵,后M-N行构成的子矩阵可以包括码本中的一行或多行,这里的码本可以是范德蒙码本、柯西码本、随机码本等。也就是说,采用该编码系数矩阵编码得到的M个编码数据中前N个编码数据包只包含单个原数据包的信息,后M-N个编码数据融合了多个原数据包的信息。
可见,本方案通过不直接传输原数据包(即上述第一数据包),而是对原数据包进行编码,来保证第一设备传输的数据包的大小相等。本方案还通过在原数据包中携带包头信息,所以即使在传输过程中多个原数据包丢失,也可以根据编码包(即上述第二数据包)恢复出原数据包,再根据原数据包的包头携带的分割和级联信息,对原数据包的数据进行分割和级联的逆处理,从而恢复出PDU/SDU数据。因此,本方案可以在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下,比如现有NR协议中,支持网络编码技术,并且即使在多个原数据包丢失的情况下也能恢复出PDU或SDU,减少性能损失。
第六方面,本申请提供一种数据传输方法,该方法包括:第二设备获取P个数据包,并对该P个数据包进行译码,获得译码后的N个第一数据包,该P个数据包均是编码包,每个数据包包括编码包包头和编码数据,该编码包包头包括编码因子字段;其中,该N个第一数据包的大小相等,每个第一数据包包括包头和数据。每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息。该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。其中,第一数据包是原数据包,第二数据包是编码包。P、N、M均为正整数,P大于或等于N且小于或等于M,即N≤P≤M。
进一步的,第二设备根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将该N个第一数据包的数据还原成至少一个数据单元。
可选的,上述数据单元是PDU或SDU。
可选的,第二设备是译码端或接收端。第二设备既可以是网络设备,如基站;也可以是终端设备,如UE。
结合第六方面,在一种可能的设计中,对该P个数据包进行译码,获得译码后的N个第一数据包,包括:采用编码包的解析方式解析该P个数据包的编码包包头获得每个编码包包头携带的编码因子字段,利用该P个数据包的编码包包头中编码因子字段的指示构成系数因子矩阵;采用该系数因子矩阵对该P个数据包的编码数据进行译码,获得译码后的N个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。
可见,本方案提供一种译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。
第七方面,本申请提供一种数据传输装置,该数据传输装置可以是第一设备或第一设备中的芯片。该数据传输装置包括:获取模块,用于获取N个第一数据包,该N个第一数据包的大小相等;编码模块,用于对该获取模块获取到的N个第一数据包进行编码并加编码包包头后得到M个第二数据包,该编码包包头包括编码因子字段;传输模块,用于传输该M个第二数据包。其中,每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息。该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。第一数据包是原数据包,第二数据包是编码包。M大于N,N和M均为正整数。
可选的,上述数据单元是PDU或SDU。
第八方面,本申请提供一种数据传输装置,该数据传输装置可以是第二设备或第二设备中的芯片。该数据传输装置包括:获取模块,用于获取P个数据包,该P个数据包均是编码包,每个数据包包括编码包包头和编码数据,该编码包包头包括编码因子字段;译码模块,用于对该获取模块获取到的P个数据包进行译码,获得译码后的N个第一数据包;还原模块,用于根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将该N个第一数据包的数据还原成至少一个数据单元。其中,该N个第一数据包的大小相等。每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息。该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。其中,第一数据包是原数据包,第二数据包是编码包。P大于或等于N,N为正整数,P为正整数。
可选的,上述数据单元是PDU或SDU。
结合第八方面,在一种可能的设计中,上述译码模块,具体用于:采用编码包的解析方式解析该P个数据包的编码包包头获得每个编码包包头携带的编码因子字段,利用该P个数据包的编码包包头中编码因子字段的指示构成系数因子矩阵;采用该系数因子矩阵对该P个数据包的编码数据进行译码,获得译码后的N个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。
上述第五至第八任一方面的一种实现方式中,一个第一数据包的数据包括一个或多个数据段,一个数据段包括一个PDU/SDU的全部或部分。换句话说,原数据包中的数据包括一个或多个数据段,每个数据段来自不同的PDU/SDU,一个数据段是一个PDU/SDU的全部或部分。
可选的,上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元是否被分割的信息,或者指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该第一数据包的数据包括的第i个数据段是否是该第一数据包的数据中的最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum。第一数据包的数据中数据段的排列方式可以按照PDU/SDU的序列号大小,从小到大排列,即序列号最小的PDU/SDU作为第一个数据段,中间数据段对应的PDU/SDU的序列号依次增加,序列号最大的PDU/SDU作为最后一个数据段。第一数据包的数据中数据段对应的PDU/SDU的序列号也可以乱序排列。
上述第五至第八任一方面的一种实现方式中,上述分割和级联信息包括:该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元的序列号,或者该第一数据包的数据中数据段对应的数据单元的最大序列号和/或最小序列号;指示该第一数据包的数据包括的第i个数据段是否是最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
上述第五至第八任一方面的一种实现方式中,上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段是否是最后一个数据段(或者说,该第一数据包的数据中第一个数据段后是否存在下一个数据段)以及该第一个数据段对应的数据单元是否完整(完整即为未被分割,不完整即为被分割)的信息;指示该第一数据包的数据包括的第i个数据段是否是最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
上述第五至第八任一方面的一种实现方式中,上述分割和级联信息包括:上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元是否被分割的信息,或者指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该第一数据包的数据中包括的数据段的个数的信息;以及指示每个数据段的长度的信息。
应理解,如果第一数据包的总长度可以确定,第一数据包的包头长度也可以确定,则上述分割和级联信息中可以只包括Dnum-1个数据段中每个数据段的长度,而不是包括Dnum个数据段中每个数据段的长度,剩下的一个数据段的长度可通过该第一数据包的总长度、该第一数据包的包头长度以及Dnum-1个数据段的长度计算得出。Dnum表示第一数据包的数据中包括的数据段总数。
上述第五至第八任一方面的一种实现方式中,上述M个第二数据包中包括N个第一类编码包和M-N个第二类编码包。其中第一类编码包的编码系数子矩阵是单位阵,第二类编码包的编码系数子矩阵是非单位阵。第一类编码包的编码系数子矩阵和第二类编码包的编码系数子矩阵形成一个编码系数矩阵。编码系数矩阵用于对该N个第一数据包进行编码。上述M个第二数据包中每个第二数据包的编码包包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息。该用于指示编码得到该第二数据包的N个第一数据包的标识信息是块标识字段或包括以下至少两项:指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。
可选的,上述编码包包头还可以包括第二指示信息、类型(Type)字段以及PacketID字段中的一项或多项。第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围。编码包包头中的Packet ID字段用于指示该Packet ID字段所在第二数据包(编码包)的SN。
上述第五至第八任一方面的一种实现方式中,第一数据包的序列号顺序递增。和/或,每个第二数据包的编码包包头中还包括该第二数据包的序列号。第二数据包的序列号也顺序递增。其中,因为原数据包(即第一数据包)的包头中携带有自己的序列号,编码包(即第二数据包)的编码包包头中既可以携带自己的序列号,也可以不携带自己的序列号,所以针对序列号的实现方式有以下几种:(1)编码包(即第二数据包)的编码包包头中不携带序列号,即编码包包头中不存在Packet ID字段,此时原数据包(即第一数据包)的序列号顺序编号。(2)编码包的序列号和原数据包的序列号都顺序编号(共用一套编号系统),且编码包的序列号与原数据包的序列号不重复。(3)编码包的序列号和原数据包的序列号分别有自己的一套编号系统,互不影响。(4)编码包的序列号和原数据包的序列号都顺序编号(共用一套序列号),且允许编码包的序列号与原数据包的序列号重复使用,可使用包头的指示信息来区分原数据包和编码包。
可见,本方案针对序列号设计不同的方案,灵活多样。
第九方面,本申请提供一种数据传输方法,该方法包括:第一设备获取级联数据包,并根据该级联数据包生成N个第一数据包;第一设备传输该N个第一数据包;第一设备对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包;第二设备传输该M个第二数据包。其中,该级联数据包包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除起始数据段和末尾数据段外的每个数据段是一个数据单元。该级联包包头包括该级联数据包括的多个数据单元的级联信息。该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等。该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据。每个第一数据包包括包头和数据。每个第一数据包的包头包括该第一数据包的序列号。其中,第一数据包是原数据包,第二数据包是编码包。N和M均为正整数,且M和N的大小关系不做限定,j的取值为区间[1,N]中的整数。
可选的,上述数据单元是PDU或SDU。上述级联数据包的大小是原数据大小的整数倍。原数据是指原数据包中的数据。
可选的,第一设备是编码端或发送端。第一设备既可以是网络设备,如基站;也可以是终端设备,如UE。
可见,本方案对多个PDU/SDU进行级联,以获得一个级联数据,并添加级联包包头得到一个级联数据包,再对级联数据包进行等大小分割得到一定数量的原数据(第一数据包的数据),继而通过加包头获得原数据包(即上述第一数据包),并对原数据包进行编码和加编码包包头后获得编码包(即上述第二数据包),从而在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下,比如现有NR协议中,支持网络编码技术,并且在多个原数据包丢失的情况下也能恢复出PDU或SDU,减少性能损失。此外,本方案无需对每个原数据包都添加级联的字段指示,而是通过统一的级联包包头进行级联信息的指示,可以节省包头的开销。
结合第九方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包还包头包括第二指示信息,用于指示该第二指示信息所在的第二数据包是编码包。
第十方面,本申请提供一种数据传输方法,该方法包括:第二设备获取P个数据包,并对该P个数据包进行译码,获得译码后的N个第一数据包,该P个数据包中包括K个第一数据包和N-K个第二数据包;第二设备按照该N个第一数据包的序列号大小顺序,将该N个第一数据包的数据还原成一个级联数据包,并根据该级联包包头包括的该级联数据包括的多个数据单元的级联信息,将该级联数据分割成多个数据单元。其中,每个第一数据包包括包头和数据。每个第一数据包的包头包括该第一数据包的序列号。该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等。该N个第一数据包中第j个第一数据包的数据是级联数据包经过N等分后得到的第j份数据。该级联数据包包括该级联包包头和该级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除该起始数据段和该末尾数据段外的每个数据段是一个数据单元。其中,第一数据包是原数据包,第二数据包是编码包。K和P均为正整数,且K小于或等于P。P大于或等于N,j的取值为区间[1,N]中的整数。
可选的,上述数据单元是PDU或SDU。上述级联数据包的大小是原数据大小的整数倍。原数据是指原数据包中的数据。
可选的,第二设备是译码端或接收端。第二设备既可以是网络设备,如基站;也可以是终端设备,如UE。
结合第十方面,在一种可能的设计中,对该P个数据包进行译码,获得译码后的N个第一数据包,包括:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的序列号和该P-K个第二数据包的包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N-K个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。该译码后的N-K个第一数据包和该K个第一数据包属于N个第一数据包。
可选的,上述长度阈值是编码包长度阈值L1。或者,上述长度阈值是原数据包长度阈值L2。第一设备从P个数据包中确定出K个第一数据包和P-K个第二数据包的实现方式可参考第二方面的相应描述,此处不展开说明。
可选的,在该第一数据包和/或该第二数据包中携带该第一数据包和该第二数据包之间的对应关系。具体的,该对应关系可以携带在该第一数据包的包头和/或该第二数据包的包头。这样,可以基于该对应关系来获得上述系数因子矩阵。可选的,可以在该第二数据包的包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息来指示该对应关系。
可见,本方案提供一种译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。
结合第十方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包包头包括第二指示信息,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。这样,以上译码步骤中可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码数据包,进而采用相对应的解析方式对该数据包的包头进行解析。
可见,本方案提供一种译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。
第十一方面,本申请提供一种数据传输装置,该数据传输装置可以是第一设备或第一设备中的芯片。该数据传输装置包括:获取模块,用于获取级联数据包;生成模块,用于根据该获取模块获取到的该级联数据包生成N个第一数据包;传输模块,用于传输该生成模块生成的N个第一数据包;编码模块,用于对该生成模块生成的N个第一数据包进行编码并加编码包包头后得到M个第二数据包;该传输模块,还用于传输该M个第二数据包。其中,该级联数据包包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除该起始数据段和该末尾数据段外的每个数据段是一个数据单元。该级联包包头包括该级联数据包括的多个数据单元的级联信息。该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等。该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据。每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的序列号。其中,第一数据包是原数据包,第二数据包是编码包。N和M均为正整数。j的取值为区间[1,N]中的整数。
可选的,上述数据单元是PDU或SDU。上述级联数据包的大小是原数据大小的整数倍。原数据是指原数据包中的数据。
结合第十一方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包包头包括第二指示信息,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。
第十二方面,本申请提供一种数据传输装置,该数据传输装置可以是第二设备或第二设备中的芯片。该数据传输装置包括:获取模块,用于获取P个数据包,该P个数据包中包括K个第一数据包和P-K个第二数据包;译码模块,用于对该获取模块获取到的P个数据包进行译码,获得译码后的N个第一数据包,该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等;还原模块,用于按照该N个第一数据包的序列号大小顺序,将该N个第一数据包的数据还原成一个级联数据包;分割模块,还用于根据该级联包包头包括的该级联数据包括的多个数据单元的级联信息,将该级联数据分割成多个数据单元。其中,每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的序列号。该N个第一数据包中第j个第一数据包的数据是级联数据包经过N等分后得到的第j份数据。该级联数据包包括该级联包包头和该级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除该起始数据段和该末尾数据段外的每个数据段是一个数据单元。其中,第一数据包是原数据包,第二数据包是编码包。j的取值为区间[1,N]中的整数。P和K均为正整数,K小于或等于P。P大于或等于N。
可选的,上述数据单元是PDU或SDU。上述级联数据包的大小是原数据大小的整数倍。原数据是指原数据包中的数据。
结合第十二方面,在一种可能的设计中,上述译码模块,具体用于:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的序列号和该P-K个第二数据包的包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N-K个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。该译码后的N-K个第一数据包和该K个第一数据包属于N个第一数据包。
可选的,上述长度阈值是编码包长度阈值L1。或者,上述长度阈值是原数据包长度阈值L2。
结合第十二方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包包头包括第二指示信息,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。这样,译码模块可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码数据包,进而采用相对应的解析方式对该数据包的包头进行解析。
上述第九至第十二任一方面的一种实现方式中,上述级联信息包括:指示该级联数据的起始数据段(即第一个数据段)和/或末尾数据段(即最后一个数据段)对应的数据单元是否被分割的信息,或者指示该级联数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该级联数据包括的数据段的个数的信息;以及指示该级联数据包括的每个数据段的长度的信息。
应理解,如果级联数据包的总长度可以确定(如半静态配置)、级联包包头的长度也可以确定,则上述级联信息中可以只包括Dnum-1个数据段中每个数据段的长度,而不是包括Dnum个数据段中每个数据段的长度,剩下的一个数据段的长度可通过该级联数据包的总长度、该级联包包头的长度以及Dnum-1个数据段的长度计算得出。Dnum表示级联数据包括的数据段总数。
可见,本方案提供的级联包包头设计,在级联包包头内带Dnum(即级联数据包括的数据段个数)个长度字段,来指示每个数据段的长度,可以不在每个原数据包的包头中携带Dnum个长度字段,从而节省头开销。
上述第九至第十二任一方面的一种实现方式中,上述级联信息包括:指示该级联数据的起始数据段(即第一个数据段)和/或末尾数据段(即最后一个数据段)对应的数据单元是否被分割的信息,或者指示该级联数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该级联数据包括的第i个数据段是否是最后一个数据段的信息;以及指示该第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该级联数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
可见,本方案提供一种可能的级联包包头设计来携带级联信息,以支持在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下,比如现有NR协议中,应用网络编码技术。
上述第九至第十二任一方面的一种实现方式中,上述级联信息包括:指示该级联数据中起始数据段是否是最后一个数据段(或者说,该级联数据中第一个数据段后是否存在下一个数据段)以及该起始数据段对应的数据单元是否完整(完整即为未被分割,不完整即为被分割)的信息;指示该级联数据包括的第i个数据段是否是最后一个数据段(或者说,该级联数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该级联数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
可见,本方案在级联包包头中为每一个数据段都指示该数据段是否是最后一个数据段,并为每一个数据段指示其长度,有利于译码端根据级联包包头的指示对级联数据进行分割,以恢复出多个PDU/SDU。
上述第九至第十二任一方面的一种实现方式中,上述级联数据包括多个完整数据单元级联得到的数据以及填充比特。
可选的,上述级联包包头还包括填充信息,该填充信息包括该填充比特的长度。
可见,本方案的级联数据中每个数据段都是一个PDU/SDU,此时译码端获得级联数据包后,分割级联数据即可得到PDU/SDU。
上述第九至第十二任一方面的一种实现方式中,上述编码包包头还包括用于指示编码得到该第二数据包的N个第一数据包的标识信息。该用于指示编码得到该第二数据包的N个第一数据包的标识信息是块标识字段或包括以下至少两项:指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。
可见,本方案提供的编码包包头既可以是重新设计的,其含义清晰;也可以是复用原有编码包包头中的字段,并新增一个字段来指示数据包的种类(编码包还是原数据包),不仅可以保证译码端的正确译码,还可以提高兼容性。
上述第九至第十二任一方面的一种实现方式中,第一数据包的序列号顺序递增。和/或,每个第二数据包的编码包包头中还包括该第二数据包的序列号。第二数据包的序列号也顺序递增。其中,因为原数据包(即第一数据包)的包头中携带有自己的序列号,编码包(即第二数据包)的编码包包头中既可以携带自己的序列号,也可以不携带自己的序列号,所以针对序列号的实现方式有以下几种:(1)编码包(即第二数据包)的编码包包头中不携带序列号,即编码包包头中不存在Packet ID字段,此时原数据包(即第一数据包)的序列号顺序编号。(2)编码包的序列号和原数据包的序列号都顺序编号(共用一套编号系统),且编码包的序列号与原数据包的序列号不重复。(3)编码包的序列号和原数据包的序列号分别有自己的一套编号系统,互不影响。(4)编码包的序列号和原数据包的序列号都顺序编号(共用一套序列号),且允许编码包的序列号与原数据包的序列号重复使用,可使用包头的指示信息来区分原数据包和编码包。
可见,本方案针对序列号设计不同的方案,灵活多样。
第十三方面,本申请提供一种数据传输方法,该方法包括:第一设备获取级联数据包,并根据该级联数据包生成N个第一数据包,该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等;第一设备再对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包,该编码包包头包括编码因子字段;第一设备传输该M个第二数据包。其中,该级联数据包包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除起始数据段和末尾数据段外的每个数据段是一个数据单元。该级联包包头包括级联数据包括的多个数据单元的级联信息。该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据。每个第一数据包的包头中包括该第一数据包的序列号。第一数据包是原数据包,第二数据包是编码包。j的取值为区间[1,N]中的整数。M大于N,N和M均为正整数。
可选的,上述数据单元是PDU或SDU。上述级联数据包的大小是原数据大小的整数倍。原数据是指原数据包中的数据。
可选的,第一设备是编码端或发送端。第一设备既可以是网络设备,如基站;也可以是终端设备,如UE。
可选的,用于编码的编码系数矩阵中前N行构成的子矩阵是单位阵,后M-N行构成的子矩阵可以包括码本中的一行或多行,这里的码本可以是范德蒙码本、柯西码本、随机码本等。也就是说,采用该编码系数矩阵编码得到的M个编码数据中前N个编码数据包只包含单个原数据包的信息,后M-N个编码数据融合了多个原数据包的信息。
可见,本方案通过不直接传输原数据包(即上述第一数据包),而是对原数据包进行编码,来保证第一设备传输的数据包的大小相等。本方案还通过在原数据包中携带包头信息,所以即使在传输过程中多个原数据包丢失,也可以根据编码包(即上述第二数据包)恢复出原数据包,再根据原数据包的包头携带的分割和级联信息,对原数据包的数据进行分割和级联的逆处理,从而恢复出PDU/SDU数据,减少性能损失。此外,本方案无需对每个原数据包都添加级联的字段指示,而是通过统一的级联包包头进行级联信息的指示,可以节省包头的开销。
第十四方面,本申请提供一种数据传输方法,该方法包括:第二设备获取P个数据包,并对该P个数据包进行译码,获得译码后的N个第一数据包,该P个数据包均是编码包,每个数据包包括编码包包头和编码数据,该编码包包头包括编码因子字段,该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等;第二设备按照该N个第一数据包的序列号大小顺序,将该N个第一数据包的数据还原成一个级联数据包,并根据该级联包包头包括的该级联数据包括的多个数据单元的级联信息,将该级联数据分割成多个数据单元。其中,该级联数据包包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除起始数据段和末尾数据段外的每个数据段是一个数据单元。该级联包包头包括级联数据包括的多个数据单元的级联信息。该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据。每个第一数据包的包头中包括该第一数据包的序列号。第一数据包是原数据包,第二数据包是编码包。j的取值为区间[1,N]中的整数。P大于N,N和P均为正整数。
可选的,上述数据单元是PDU或SDU。上述级联数据包的大小是原数据大小的整数倍。原数据是指原数据包中的数据。
可选的,第二设备是译码端或接收端。第二设备既可以是网络设备,如基站;也可以是终端设备,如UE。
结合第十四方面,在一种可能的设计中,对该P个数据包进行译码,获得译码后的N个第一数据包,包括:采用编码包的解析方式解析该P个数据包的编码包包头获得每个编码包包头携带的编码因子字段,利用该P个数据包的编码包包头中编码因子字段的指示构成系数因子矩阵;采用该系数因子矩阵对该P个数据包的编码数据进行译码,获得译码后的N个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。
可见,本方案提供一种译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。
第十五方面,本申请提供一种数据传输装置,该数据传输装置可以是第一设备或第一设备中的芯片。该数据传输装置包括:获取模块,用于获取级联数据包;生成模块,用于根据该获取模块获取到的该级联数据包生成N个第一数据包;传输模块,用于传输该生成模块生成的N个第一数据包;编码模块,用于对该生成模块生成的N个第一数据包进行编码并加编码包包头后得到M个第二数据包,该编码包包头包括编码因子字段;该传输模块,还用于传输该M个第二数据包。其中,该级联数据包包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除该起始数据段和该末尾数据段外的每个数据段是一个数据单元。该级联包包头包括该级联数据包括的多个数据单元的级联信息。该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等。该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据。每个第一数据包的包头中包括该第一数据包的序列号。第一数据包是原数据包,第二数据包是编码包。M大于N,N和M均为正整数。j的取值为区间[1,N]中的整数。
可选的,上述数据单元是PDU或SDU。上述级联数据包的大小是原数据大小的整数倍。原数据是指原数据包中的数据。
第十六方面,本申请提供一种数据传输装置,该数据传输装置可以是第二设备或第二设备中的芯片。该数据传输装置包括:获取模块,用于获取P个数据包,该P个数据包中包括K个第一数据包和P-K个第二数据包;译码模块,用于对该获取模块获取到的P个数据包进行译码,获得译码后的N个第一数据包,该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等;还原模块,用于按照该N个第一数据包的序列号大小顺序,将该N个第一数据包的数据还原成一个级联数据包;分割模块,还用于根据该级联包包头包括的该级联数据包括的多个数据单元的级联信息,将该级联数据分割成多个数据单元。其中,该级联数据包包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除该起始数据段和该末尾数据段外的每个数据段是一个数据单元。该级联包包头包括该级联数据包括的多个数据单元的级联信息。该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等。该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据。每个第一数据包的包头中包括该第一数据包的序列号。第一数据包是原数据包,第二数据包是编码包。M大于N,N和M均为正整数。j的取值为区间[1,N]中的整数。
可选的,上述数据单元是PDU或SDU。上述级联数据包的大小是原数据大小的整数倍。原数据是指原数据包中的数据。
结合第十六方面,在一种可能的设计中,上述译码模块,具体用于:采用编码包的解析方式解析该P个数据包的编码包包头获得每个编码包包头携带的编码因子字段,利用该P个数据包的编码包包头中编码因子字段的指示构成系数因子矩阵;采用该系数因子矩阵对该P个数据包的编码数据进行译码,获得译码后的N个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。
上述第十三至第十六任一方面的一种实现方式中,上述级联信息包括:指示该级联数据的起始数据段(即第一个数据段)和/或末尾数据段(即最后一个数据段)对应的数据单元是否被分割的信息,或者指示该级联数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该级联数据包括的数据段的个数的信息;以及指示该级联数据包括的每个数据段的长度的信息。
应理解,如果级联数据包的总长度可以确定(如半静态配置)、级联包包头的长度也可以确定,则上述级联信息中可以只包括Dnum-1个数据段中每个数据段的长度,而不是包括Dnum个数据段中每个数据段的长度,剩下的一个数据段的长度可通过该级联数据包的总长度、该级联包包头的长度以及Dnum-1个数据段的长度计算得出。Dnum表示级联数据包括的数据段总数。
上述第十三至第十六任一方面的一种实现方式中,上述级联信息包括:指示该级联数据的起始数据段(即第一个数据段)和/或末尾数据段(即最后一个数据段)对应的数据单元是否被分割的信息,或者指示该级联数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该级联数据包括的第i个数据段是否是最后一个数据段的信息;以及指示该第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该级联数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
上述第十三至第十六任一方面的一种实现方式中,上述级联信息包括:指示该级联数据中起始数据段是否是最后一个数据段(或者说,该级联数据中第一个数据段后是否存在下一个数据段)以及该起始数据段对应的数据单元是否完整(完整即为未被分割,不完整即为被分割)的信息;指示该级联数据包括的第i个数据段是否是最后一个数据段(或者说,该级联数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该级联数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
上述第十三至第十六任一方面的一种实现方式中,上述级联数据包括多个完整数据单元级联得到的数据以及填充比特。
可选的,上述级联包包头还包括填充信息,该填充信息包括该填充比特的长度。
上述第十三至第十六任一方面的一种实现方式中,上述编码包包头还包括用于指示编码得到该第二数据包的N个第一数据包的标识信息。该用于指示编码得到该第二数据包的N个第一数据包的标识信息是块标识字段或包括以下至少两项:指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。
上述第十三至第十六任一方面的一种实现方式中,第一数据包的序列号顺序递增。和/或,每个第二数据包的编码包包头中还包括该第二数据包的序列号。第二数据包的序列号也顺序递增。
第十七方面,本申请提供一种数据传输方法,该方法包括:第一设备获取N个第一数据包,该N个第一数据包的大小不完全相等;第一设备传输该N个第一数据包;第一设备对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包;第一设备传输该M个第二数据包。其中,每个第一数据包包括包头和数据。每个第一数据包的包头中包括该第一数据包的数据对应的数据单元的分割信息。每个第一数据包的包头还包括数据包标识字段,该数据包标识字段用于指示该第一数据包的序列号。该N个第一数据包对应用于编码的Q个等效原数据包。该Q个等效原数据包的大小相等。每个第一数据包的包头还包括编码因子字段或偏移字段。该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。其中,第一数据包是原数据包,第二数据包是编码包。N、M以及Q均为正整数,Q小于或等于N。
可选的,上述数据单元是PDU或SDU。
可选的,第一设备是编码端或发送端。第一设备既可以是网络设备,如基站;也可以是终端设备,如UE。
可选的,原数据包(即上述第一数据包)的包头中编码因子字段指示的行向量中只有一个元素等于1,其他元素均为0。如果多个原数据包对应一个等效原数据包,则该多个原数据包的包头中Coeff ID字段的值相同。
可见,本方案提供一种纯分割场景下支持网络编码的数据传输方法,不仅可以在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下应用,比如可以兼容NR协议,还能在多个原数据包丢失的情况下也能恢复出PDU或SDU,减少性能损失。
结合第十七方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包的编码包包头还包括第二指示信息,用于指示该第二指示信息所在的第二数据包是编码包。
第十八方面,本申请提供一种数据传输方法,该方法包括:第二设备获取P个数据包,并对该P个数据包进行译码,获得译码后的N个第一数据包,该P个数据包中包括K个第一数据包和P-K个第二数据包,该N个第一数据包的大小不完全相等;第二设备根据该N个第一数据包中每个第一数据包的包头包括的分割信息,将该N个第一数据包的数据还原成一个或多个数据单元。其中,每个第一数据包包括包头和数据。每个第一数据包的包头中包括该第一数据包的数据对应的数据单元的分割信息。每个第一数据包的包头还包括数据包标识字段,该数据包标识字段用于指示该第一数据包的序列号。该N个第一数据包对应用于编码的Q个等效原数据包。该Q个等效原数据包的大小相等。每个第一数据包的包头还包括编码因子字段或偏移字段。该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。P大于或等于N,N大于或等于Q,P、N以及Q均为正整数。
可选的,上述数据单元是PDU或SDU。
可选的,第二设备是编码端或发送端。第二设备既可以是网络设备,如基站;也可以是终端设备,如UE。
结合第十八方面,在一种可能的设计中,上述每个第一数据包的包头包括编码因子字段。对该P个数据包进行译码,获得译码后的N个等效原数据包,包括:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的包头中编码因子字段的指示和该P-K个第二数据包的编码包包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。
可选的,原数据包(即上述第一数据包)的包头中编码因子字段指示的行向量中只有一个元素等于1,其他元素均为0。如果多个原数据包对应一个等效原数据包,则该多个原数据包的包头中Coeff ID字段的值相同。
可选的,在该第二数据包的包头携带该Q个等效原数据包和该第二数据包之间的对应关系。这样,可以基于该对应关系来获得上述系数因子矩阵。可选的,可以在该第二数据包的包头包括用于指示编码得到该第二数据包的Q个等效原数据包的标识信息来指示该对应关系。
可见,本方案针对第一数据包的包头包括编码因子字段的情况,提供一种可能的译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。
结合第十八方面,在一种可能的设计中,上述每个第一数据包的包头还包括偏移字段,该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。对该P个数据包进行译码,获得译码后的N个等效原数据包,包括:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号和偏移字段,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的包头中第一数据包的序列号和偏移字段以及该P-K个第二数据包的编码包包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N个第一数据包。
可选的,在该第二数据包的包头携带该Q个等效原数据包和该第二数据包之间的对应关系。这样,可以基于该对应关系来获得上述系数因子矩阵。可选的,可以在该第二数据包的包头包括用于指示编码得到该第二数据包的Q个等效原数据包的标识信息来指示该对应关系。
可选的,上述长度阈值是编码包长度阈值L1。或者,上述长度阈值是原数据包长度阈值L2。第一设备从P个数据包中确定出K个第一数据包和P-K个第二数据包的实现方式可参考第二方面的相应描述,此处不展开说明。
可见,本方案针对第一数据包的包头包括偏移字段的情况,提供一种可能的译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。
结合第十八方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包包头中包括第二指示信息,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。这样,以上译码步骤中可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码数据包,进而采用相对应的解析方式对该数据包的包头进行解析。
第十九方面,本申请提供一种数据传输装置,该数据传输装置可以是第一设备或第一设备中的芯片。该数据传输装置包括:获取模块,用于获取N个第一数据包,该N个第一数据包的大小不完全相等;传输模块,用于传输该N个第一数据包;编码模块,用于对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包;该传输模块,还用于传输该M个第二数据包。其中,每个第一数据包包括包头和数据。每个第一数据包的包头中包括该第一数据包的数据对应的数据单元的分割信息。每个第一数据包的包头还包括数据包标识字段,该数据包标识字段用于指示该第一数据包的序列号。该N个第一数据包对应用于编码的Q个等效原数据包。该Q个等效原数据包的大小相等。每个第一数据包的包头还包括编码因子字段或偏移字段。该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。N、M以及Q均为正整数,Q小于或等于N。
可选的,上述数据单元是PDU或SDU。
可选的,原数据包(即上述第一数据包)的包头中编码因子字段指示的行向量中只有一个元素等于1,其他元素均为0。如果多个原数据包对应一个等效原数据包,则该多个原数据包的包头中Coeff ID字段的值相同。
结合第十九方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包的编码包包头还包括第二指示信息,用于指示该第二指示信息所在的第二数据包是编码包。
第二十方面,本申请提供一种数据传输装置,该数据传输装置可以是第二设备或第二设备中的芯片。该数据传输装置包括:获取模块,用于获取P个数据包,该P个数据包中包括K个第一数据包和P-K个第二数据包;译码模块,用于对该获取模块获取到的P个数据包进行译码,获得译码后的N个第一数据包,该N个第一数据包的大小不完全相等;还原模块,用于根据该N个第一数据包中每个第一数据包的包头包括的分割信息,将该N个第一数据包的数据还原成一个或多个数据单元。其中,每个第一数据包包括包头和数据。每个第一数据包的包头中包括该第一数据包的数据对应的数据单元的分割信息。每个第一数据包的包头还包括数据包标识字段,该数据包标识字段用于指示该第一数据包的序列号。该N个第一数据包对应用于编码的Q个等效原数据包。该Q个等效原数据包的大小相等。每个第一数据包的包头还包括编码因子字段或偏移字段。该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。P大于或等于N,N大于或等于Q,P、N以及Q均为正整数。
可选的,上述数据单元是PDU或SDU。
结合第二十方面,在一种可能的设计中,上述每个第一数据包的包头包括编码因子字段。上述译码模块,具体用于:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的包头中编码因子字段的指示和该P-K个第二数据包的编码包包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。
可选的,原数据包(即上述第一数据包)的包头中编码因子字段指示的行向量中只有一个元素等于1,其他元素均为0。如果多个原数据包对应一个等效原数据包,则该多个原数据包的包头中Coeff ID字段的值相同。
结合第二十方面,在一种可能的设计中,上述每个第一数据包的包头还包括偏移字段,该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。上述译码模块,具体用于:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号和偏移字段,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的包头中第一数据包的序列号和偏移字段以及该P-K个第二数据包的编码包包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。
可选的,在该第二数据包的包头携带该Q个等效原数据包和该第二数据包之间的对应关系。这样,可以基于该对应关系来获得上述系数因子矩阵。可选的,可以在该第二数据包的包头包括用于指示编码得到该第二数据包的Q个等效原数据包的标识信息来指示该对应关系。
可选的,上述长度阈值是编码包长度阈值L1。或者,上述长度阈值是原数据包长度阈值L2。
结合第二十方面,在一种可能的设计中,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;和/或,每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包包头中包括第二指示信息,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。这样,上述译码模块可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码数据包,进而采用相对应的解析方式对该数据包的包头进行解析。
上述第十七至第二十任一方面的一种实现方式中,上述分割信息包括:该第一数据包的数据在该数据对应的数据单元中的位置信息,和指示该第一数据包的数据的长度的信息。
可见,本方案通过在第一数据包的包头中携带该第一数据包的数据在PDU/SDU的位置信息,和其长度,有利于译码端将多个第一数据包的数据级联起来以恢复PDU/SDU。
上述第十七至第二十任一方面的一种实现方式中,上述编码包包头还包括用于指示编码得到该第二数据包的Q个等效原数据包的标识信息。该用于指示编码得到该第二数据包的Q个等效原数据包的标识信息是块标识字段或包括以下至少两项:指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。
应理解,如果编码窗的窗长是半静态配置的,则用于指示编码得到该第二数据包的N个第一数据包的标识信息包括编码窗中第一个第一数据包的序列号、和编码窗中最后一个第一数据包的序列号中的至少一项即可。编码包包头中的编码因子字段(如Coeff ID字段)的长度为8bit,用于指示码本的行索引,这里的码本可以是范德蒙码本、柯西码本、随机码本等。
上述第十七至第二十任一方面的一种实现方式中,第一数据包的序列号顺序递增。和/或,每个第二数据包的编码包包头中还包括该第二数据包的序列号。第二数据包的序列号也顺序递增。
第二十一方面,本申请提供一种通信装置,该通信装置可以包括处理器和存储器,可选的包括收发器。其中,该存储器用于存储计算机程序,该收发器用于收发各种数据包或信号,该计算机程序包括程序指令,当该处理器运行该程序指令时,使得该通信装置执行上述第一方面、或上述第二方面、或上述第五方面、或上述第六方面、或上述第九方面、或上述第十方面、或上述第十三方面、或上述第十四方面、或上述第十七方面、或上述第十八方面、或其中任一方面的任意一种可能的实现方式描述的数据传输方法。其中,收发器可以为通信装置中的射频模块,或,射频模块和天线的组合,或,芯片或电路的输入输出接口。
第二十二方面,本申请提供一种可读存储介质,该可读存储介质上存储有程序指令,当其在计算机上运行时,使得计算机执行上述第一方面、或上述第二方面、或上述第五方面、或上述第六方面、或上述第九方面、或上述第十方面、或上述第十三方面、或上述第十四方面、或上述第十七方面、或上述第十八方面、或其中任一方面的任意一种可能的实现方式描述的数据传输方法。
第二十三方面,本申请提供一种包含程序指令的程序产品,当其运行时,使得上述第一方面、或上述第二方面、或上述第五方面、或上述第六方面、或上述第九方面、或上述第十方面、或上述第十三方面、或上述第十四方面、或上述第十七方面、或上述第十八方面、或其中任一方面的任意一种可能的实现方式描述的数据传输方法被执行。
第二十四方面,本申请提供一种装置,该装置可以以芯片的形式实现,也可以为设备的形式,该装置包括处理器。该处理器用于读取并执行存储器中存储的程序,以执行上述第一方面、第二方面、第五方面、第六方面、第九方面、第十方面、第十三方面、第十四方面、第十七方面、第十八方面中的一项或多项,或,其中任一方面的任意可能的实现方式中的一项或多项提供的数据传输方法。可选的,该装置还包括存储器,该存储器与该处理器通过电路连接。进一步可选的,该装置还包括通信接口,该处理器与该通信接口连接。该通信接口用于接收待处理的数据包和/或信息,该处理器从该通信接口获取该数据包和/或信息,并对该数据包和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。
可选的,上述的处理器与存储器可以是物理上相互独立的单元,或者,存储器也可以和处理器集成在一起。
第二十五方面,本申请提供一种通信系统,该通信系统包括上述任一方面中的第一设备和上述任一方面中的第二设备。
实施本申请实施例,可以在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下,比如现有NR协议中,支持网络编码技术,即使在多个原数据包丢失的情况下也能恢复出PDU或SDU,减少性能损失。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所使用的附图作简单地介绍。
图1a是本申请实施例提供的一种多个DU共用一个CU的网络架构示意图;
图1b是本申请实施例提供的一种CU和DU的协议层功能的示意图;
图2是本申请实施例提供的应用场景示意图;
图3是本申请实施例提供的通信系统的简化示意图;
图4是随机线性网络编码的示意图;
图5是本申请实施例提供的数据传输方法的第一种示意流程图;
图6是本申请实施例提供的协议栈的示意图;
图7是本申请实施例提供的编码端数据传输流程的第一种示意图;
图8是本申请实施例提供的PDU/SDU与第一数据包的数据的映射关系示意图;
图9是本申请实施例提供的PDU/SDU与第一数据包中的数据段的位置关系示意图;
图10a是本申请实施例提供的第一数据包的包头格式示意图一;
图10b是本申请实施例提供的第一数据包的包头格式示意图二;
图11是本申请实施例提供的第一数据包的包头格式示意图三;
图12是本申请实施例提供的第一数据包的包头格式示意图四;
图13是本申请实施例提供的第一数据包的包头格式示意图五;
图14是本申请实施例提供的编码包包头的第一种示意图;
图15是本申请实施例提供的编码包包头的第二种示意图;
图16是本申请实施例提供的译码端数据传输流程示意图;
图17是本申请实施例提供的数据传输方法的第二种示意流程图;
图18是本申请实施例提供的编码端数据传输流程的第二种示意图;
图19是本申请实施例提供的第一数据包的包头和编码包包头的示意图;
图20是本申请实施例提供的数据传输方法的第三种示意流程图;
图21是本申请实施例提供的编码端数据传输流程的第三种示意图;
图22是本申请实施例提供的级联数据包中级联包包头的位置示意图;
图23是本申请实施例提供的编码端数据传输流程的第四种示意图;
图24是本申请实施例提供的添加填充比特的级联数据包中级联包包头的位置示意图;
图25是本申请实施例提供的级联包包头的格式示意图一;
图26a是本申请实施例提供的级联包包头的格式示意图二;
图26b是本申请实施例提供的级联包包头的格式示意图三;
图27是本申请实施例提供的级联包包头的格式示意图四;
图28是本申请实施例提供的第一数据包的包头格式示意图六;
图29是本申请实施例提供的数据传输方法的第四种示意流程图;
图30是本申请实施例提供的编码端数据传输流程的第五种示意图;
图31a是本申请实施例提供的第一数据包的包头格式示意图七;
图31b是本申请实施例提供的第一数据包的包头格式示意图八;
图32是本申请实施例提供的一种构造系数因子矩阵的示意图;
图33是本申请实施例提供的数据传输装置1的一结构示意图;
图34是本申请实施例提供的数据传输装置1的另一结构示意图;
图35是本申请实施例提供的数据传输装置2的一结构示意图;
图36是本申请实施例提供的数据传输装置2的另一结构示意图;
图37是本申请实施例提供的通信装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一信息和第二信息仅仅是为了区分不同的信息,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c;a和b;a和c;b和c;或a和b和c。其中a,b,c可以是单个,也可以是多个。
可以理解,在本申请中,“当…时”、“若”以及“如果”均指在某种客观情况下装置会做出相应的处理,并非是限定时间,且也不要求装置实现时一定要有判断的动作,也不意味着存在其它限定。
本申请中的“同时”可以理解为在相同的时间点,也可以理解为在一段时间段内,还可以理解为在同一个周期内,具体可以结合上下文进行理解。
本申请中对于使用单数表示的元素旨在用于表示“一个或多个”,而并非表示“一个且仅一个”,除非有特别说明。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。
可以理解,在本申请各实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
为便于理解本申请实施例提供的数据传输方法,下面将对本申请实施例提供的数据传输方法的系统架构和应用场景进行说明。可理解的,本申请实施例描述的系统架构和应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定。
无线通信系统中包括通信设备,通信设备间可以利用空口资源进行无线通信。其中,通信设备可以包括网络设备和终端设备,网络设备还可以称为基站设备。空口资源可以包括时域资源、频域资源、码资源和空间资源中至少一个。
本申请实施例涉及到的网络设备包括接入网设备,例如基站(base station,BS),BS可以是网络侧的一种用于发射或接收信号的实体,也是一种部署在无线接入网中能够和终端进行无线通信的设备。基站(BS)可以是固定的,也可以是移动的。其中,基站可能有多种形式,比如宏基站、微基站、中继站和接入点等。示例性地,本申请实施例涉及到的基站可以是5G中的基站或LTE中演进的基站(Evolved Node B,eNB)。其中,5G中的基站还可以称为发送接收点(transmission reception point,TRP)或5G基站(Next-Generation Node B,gNB)。基站还可以与如下名称进行替换,比如:节点B(NodeB)、发射点(transmittingpoint,TP)、主站MeNB、辅站SeNB、多制式无线(MSR)节点、家庭基站、网络控制器、接入节点、无线节点、传输节点、收发节点、基带单元(baseband unit,BBU)、射频拉远单元(remoteradio unit,RRU)、有源天线单元(AAU)、射频头(RRH)、中心单元(CU)、分布单元(DU)、定位节点等。本申请实施例中,用于实现网络设备的功能的装置可以是网络设备;也可以是能够支持网络设备实现该功能的装置,例如芯片系统、或通信模块、或调制解调器等,该装置可以被安装在网络设备中。在本申请实施例提供的技术方案中,以用于实现网络设备的功能的装置是网络设备,以网络设备是基站为例,描述本申请实施例提供的技术方案。基站可以支持相同或不同接入技术的网络。本申请的实施例对网络设备所采用的具体技术和具体设备形态不做限定。
在一些部署中,接入网设备(例如:gNB)可以包括集中式单元(centralized unit,CU)和分布式单元(distributed unit,DU)。gNB还可以包括射频单元(radio unit,RU)。CU和DU可以理解为是对基站从逻辑功能角度的划分,CU和DU在物理上可以分离,也可以部署在一起。例如,多个DU可以共用一个CU或者一个DU也可以连接多个CU,CU和DU之间可以通过F1接口相连。示例性的,参见图1a,图1a是本申请实施例提供的一种多个DU共用一个CU的网络架构示意图。如图1a所示,核心网和RAN互连通信,RAN中的基站分离成CU和DU,多个DU共用一个CU。图1a所示的网络架构可以应用于5G通信系统,也可以与LTE系统共享一个或多个部件或资源。包括CU节点和DU节点的接入网设备将协议层拆分开,部分协议层的功能放在CU集中控制,剩下部分或全部协议层的功能分布在DU中,由CU集中控制DU。作为一种实现方式,参见图1b,图1b是本申请实施例提供的一种CU和DU的协议层功能的示意图。如图1b所示,CU部署有协议栈中的无线资源控制(radio resource control,RRC)层,分组数据汇聚协议(packet data convergence protocol,PDCP)层,以及业务数据适应协议(servicedata adaptation protocol,SDAP)层;DU部署有协议栈中的无线链路控制(radio linkcontrol,RLC)层,媒体接入控制(medium access control,MAC)层,以及物理层(physicallayer,PHY)。从而,CU具有RRC、PDCP和SDAP的处理能力。DU具有RLC、MAC和PHY的处理能力。可以理解的是,上述功能的切分仅为一个示例,不构成对CU和DU的限定。也就是说,CU和DU之间还可以有其他功能切分的方式,示例性的,将RLC层的部分功能和RLC层以上的协议层的功能设置在CU,将RLC层的剩余功能和RLC层以下的协议层的功能设置在DU。例如,还可以按照通话业务、语音业务或短信业务的业务类型或者其他系统需求对CU或者DU的功能进行划分。示例性的,CU或者DU的功能按照时延划分,可以将处理时间需要满足时延要求的功能设置在DU,不需要满足时延要求的功能设置在CU。例如,CU也可以具有核心网的一个或多个功能,一个或者多个CU可以集中设置,也可以分离设置。例如,CU可以设置在网络侧方便集中管理,DU可以具有多个射频功能,也可以将射频功能拉远设置。
CU的功能可以由一个实体来实现也可以由不同的实体实现。例如,可以对CU的功能进行进一步切分,例如,将控制面(controlplane,CP)和用户面(userplane,UP)分离,即CU的控制面(CU-CP)和CU的用户面(CU-UP)。例如,CU-CP和CU-UP可以由不同的功能实体来实现,该CU-CP和CU-UP可以与DU相耦合,共同完成基站的功能。一种可能的方式中,CU-CP负责控制面功能,主要包含RRC和PDCP控制面PDCP-C。PDCP-C主要负责控制面数据的加解密,完整性保护,数据传输等中的一项或多项。CU-UP负责用户面功能,主要包含SDAP和PDCP用户面PDCP-U。其中SDAP主要负责将核心网的数据进行处理并将数据流(flow)映射到承载。PDCP-U主要负责数据面的加解密,完整性保护,头压缩,序列号维护,数据传输等中的一项或多项。其中CU-CP和CU-UP通过E1接口连接。CU-CP代表接入网设备通过Ng接口和核心网连接。CU-CP通过F1-C(控制面)和DU连接。CU-UP通过F1-U(用户面)和DU连接。当然还有一种可能的实现是PDCP-C也在CU-UP。由于RRC层的信息最终会变成PHY层的信息,或者,由PHY层的信息转变而来,因而,在这种架构下,高层信令,如RRC层信令或PDCP层信令,也可以认为是由DU发送的,或者,由DU+RU发送的。可以理解的是,接入网设备可以为CU节点、或DU节点、或包括CU节点和DU节点的设备。
本申请实施例涉及的终端设备还可以称为终端、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等,其可以是用户侧的一种用于接收或发射信号的实体,如手机;其可以部署在陆地上,包括室内或室外、手持或车载;也可以部署在水面上(如轮船等);还可以部署在空中(例如飞机、气球和卫星上等)。终端设备可以是用户设备(user equipment,UE),其中,UE包括具有无线通信功能的手持式设备、车载设备、可穿戴设备或计算设备。示例性地,UE可以是手机(mobile phone)、平板电脑或带无线收发功能的电脑。终端设备还可以是虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制中的无线终端、无人驾驶中的无线终端、远程医疗中的无线终端、智能电网中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本申请实施例中,用于实现终端的功能的装置可以是终端;也可以是能够支持终端实现该功能的装置,例如芯片系统、或通信模块、或调制解调器等,该装置可以被安装在终端中。本申请实施例中,芯片系统可以由芯片构成,也可以包括芯片和其他分立器件。本申请实施例提供的技术方案中,以用于实现终端的功能的装置是终端,以终端是UE为例,描述本申请实施例提供的技术方案。本申请的实施例对终端设备所采用的具体技术和具体设备形态不做限定。
可选的,UE也可以用于充当基站。例如,UE可以充当调度实体,其在车辆外联(vehicle-to-everything,V2X)、设备到设备(device-to-device,D2D)或点对点(peer topeer,P2P)等中的UE之间提供侧行链路信号。
本申请实施例提供的技术方案可以应用于通信设备间的无线通信。通信设备间的无线通信可以包括:网络设备和终端间的无线通信、网络设备和网络设备间的无线通信以及终端和终端间的无线通信。在本申请实施例中,术语“无线通信”还可以简称为“通信”,术语“通信”还可以描述为“数据传输”、“信息传输”或“传输”。
本申请实施例提供的数据传输方法主要针对长期演进(long term evolution,LTE)或NR等协议框架,可应用于多种移动通信场景中。比如,基站和用户设备(UserEquipment,UE)之间、或UE和UE之间独立组网(Standalone,SA)场景的点对点传输、基站和用户设备的多跳/中继(relay)传输、多个基站和用户设备的双连接(Dual Connectivity,DC)或多连接等场景。参见图2,图2是本申请实施例提供的应用场景示意图。如图2所示,图2示出了四种应用场景,分别是点对点单连接、多跳单连接、双连接、以及多跳多连接。应理解的,本申请实施例提供的数据传输方法可以应用于图2所示的各种应用场景中,还应理解,图2仅是示例性的,从业务场景角度而言,本申请实施例提供的数据传输方法还适用于诸多场景,包括但不限于诸如扩展现实(extended reality,XR)业务中的数据编码、上行大容量场景等。此外,图2不对适用于本申请的网络架构产生限制,并且本申请不限制上行、下行、接入链路、回传(backhaul)链路、侧链路(Sidelink)等传输。
参见图3,图3是本申请实施例提供的通信系统的简化示意图。为了简单起见,图3仅示出了基站110、UE 120以及网络130。基站110包括接口111和处理器112。处理器112可选地可以存储程序114。基站110可选地可以包括存储器113。存储器113可选地可以存储程序115。UE 120包括接口121和处理器122。处理器122可选地可以存储程序124。UE 120可选地可以包括存储器123。存储器123可选地可以存储程序125。这些组件一起工作,以提供本申请中描述的各种功能。例如,处理器112和接口121一起工作以提供基站110与UE 120之间的无线连接。处理器122和接口121共同作用,实现UE 120的下行传输和/或上行传输。
网络130可以包括一个或多个网络节点130a、130b,以提供核心网功能。网络节点130a、130b可以是5G核心网节点,或更早一代(例如4G、3G或2G)核心网节点。例如,网络130a、130b可以是接入管理功能(AMF)、移动性管理实体(MME)等。网络130还可以包括公共交换电话网络(PSTN)、分组数据网络、光网络、互联网协议(IP)网络中的一个或多个网络节点。广域网(WAN)、局域网(LAN)、无线局域网(WLAN)、有线网络、无线网络、城域网和其他网络,以使UE 120和/或基站110之间能够进行通信。
处理器(例如,处理器112和/或处理器122)可包括一个或多个处理器并实现为计算设备的组合。处理器(例如,处理器112和/或处理器122)可分别包括以下一种或多种:微处理器、微控制器、数字信号处理器(DSP)、数字信号处理设备(DSPD)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、选通逻辑、晶体管逻辑、分立硬件电路、处理电路或其它合适的硬件、固件和/或硬件和软件的组合,用于执行本申请中所描述的各种功能。处理器(例如,处理器112和/或处理器122)可以是通用处理器或专用处理器。例如,处理器112和/或处理器122可以是基带处理器或中央处理器。基带处理器可用于处理通信协议和通信数据。中央处理器可用于使基站110和/或UE 120执行软件程序,并处理软件程序中的数据。
接口(例如,接口111和/或121)可包括用于实现与一个或多个计算机设备(例如,UE、BS和/或网络节点)之间的通信。在一些实施例中,接口可以包括用于耦合有线连接的电线、或用于耦合无线收发器的管脚、或用于无线连接的芯片和/或管脚。在一些实施例中,接口可以包括发射器、接收器、收发器和/或天线。接口可以被配置为使用任何可用的协议(例如3GPP标准)。
本申请中的程序在广义上用于表示软件。软件的非限制性示例是程序代码、程序、子程序、指令、指令集、代码、代码段、软件模块、应用程序、软件应用程序等。程序可以在处理器和/或计算机中运行,以使基站110和/或UE 120执行本申请中描述的各种功能和/或过程。
内存(例如存储器113和/或存储器123)可存储由处理器112、122在执行软件时操纵的数据。存储器113、123可以使用任何存储技术实现。例如,存储器可以是处理器和/或计算机能够访问的任何可用存储介质。存储介质的非限制性示例包括:RAM、ROM、EEPROM、CD-ROM、可移动介质、光盘存储器、磁盘存储介质、磁存储设备、闪存、寄存器、状态存储器、远程挂载存储器、本地或远程存储器组件,或能够携带或存储软件、数据或信息并可由处理器/计算机访问的任何其它介质。
内存(例如存储器113和/或存储器123)和处理器(例如处理器112和/或处理器122)可以分开设置或集成在一起。存储器可以用于与处理器连接,使得处理器能够从存储器中读取信息,在存储器中存储和/或写入信息。存储器113可以集成在处理器112中。存储器123可以集成在处理器122中。处理器(例如处理器113和/或处理器123)和存储器(例如处理器112和/或处理器122)可以设置在集成电路中(例如,该集成电路可以设置在UE或基站或其他网络节点中)。
上述内容简要阐述了本申请实施例的系统架构和可能的应用场景,为更好地理解本申请实施例的技术方案,下面将简要介绍网络编码。
常用的网络编码方案包括随机线性网络编码(random linear network coding,RLNC)、卷积网络编码(convolutional network coding,CNC)等。下面以RLNC为例进行简要说明。RLNC方案以数据块(一个数据块中包括若干个大小相同的原数据)为单元,通过构建编码系数矩阵对原数据进行编码得到一组编码数据包。编码数据包的大小与数据块中原数据包的大小相同。通常,编码系数矩阵中的系数在有限域,如伽罗华域(Galois Field,GF)中随机选取。参见图4,图4是随机线性网络编码的示意图。如图4所示,编码系数矩阵(即图4中的A(W+R)×W)大小为(W+R)×W,即(W+R)行W列,通过对一个包含W个原数据的数据块(图4中的XW×1)进行网络编码,得到W+R个编码数据(图4中的Y(W+R)×1),对应的码率(冗余)表示为W/(W+R)。其中,编码系数矩阵在GF(q)域中随机选择系数,q表示伽罗华域的大小,伽罗华域的取值为区间[0,q-1]。W和R均是正整数。应理解,RLNC方案中,编码数据块(这里的编码数据块是指对一个包含W个原数据的数据块进行网络编码得到W+R个编码数据)之间没有关联,即编码操作对每个独立的数据块进行,每个数据块的冗余(码率)可以相同,也可以不相同。编码端/发送端对生成的W+R个编码数据统一加包头信息后发送,译码端/接收端接收到W个正确且线性无关的编码数据包时,即可正确译码并恢复出W个原数据。这是因为编码数据包融合了若干个原数据的信息,所以接收端可以用编码数据包来恢复原数据。在本申请实施例中,术语“编码数据包”还可以简称为“编码包”,两者可替换使用。
由于干扰、噪声等因素,当译码端/接收端接收到的正确且线性无关的编码数据包个数小于W时,译码端/接收端无法进行译码,此时反馈给编码端/发送端正确译码还需要的编码数据包个数,编码端/发送端根据反馈信息发送对应个数的编码数据包,该编码数据包与下一个数据块的编码无关。
因为网络编码需要原数据的大小均相同,而NR协议中,任何一层对应的业务数据单元(service data unit,SDU)或者协议数据单元(protocol data unit,PDU)大小都无法保证是相同的,所以NR协议无法直接支持网络编码技术。
因此,本申请实施例提供一种数据传输方法,编码端通过对每个原数据添加包头,并将PDU或者SDU进行分割和级联后的信息添加到该包头中获得包括包头的原数据包,再对原数据包进行网络编码生成编码数据并对该编码数据添加编码包头后发送;译码端则根据接收正确的原数据包和编码包进行译码,通过包头携带的分割和级联信息,将原数据恢复出PDU/SDU信息;不仅可以使网络编码技术在不依赖于SDU或PDU大小的场景下也可以获得应用,从而可以在现有NR协议中支持网络编码技术,即使在多个原数据包丢失的情况下也能恢复出PDU或SDU,减少性能损失,提高传输的可靠性。
下面将结合更多的附图对本申请提供的技术方案进行详细说明。
本申请提供的技术方案通过四个实施例来详细说明。其中,实施例一阐述PDU/SDU经过分割和/或级联操作后得到的原数据非等大小情况下,如何进行网络编码并传输两类数据包(原数据包和编码包)、以及如何设计两类数据包的包头。实施例二阐述对PDU/SDU经过分割和/或级联操作后得到的原数据非等大小情况下,如何进行网络编码并保证传输的数据包的大小相等、以及如何设计包头。实施例三阐述对多个PDU/SDU先级联再加包头和填充操作,再等大小分割后,如何进行网络编码和数据传输、以及如何设计包头。实施例四阐述仅对PDU/SDU进行分割操作后,如何进行网络编码和数据传输、以及如何设计包头。可理解的,本申请实施例一至实施例四所描述的技术方案可以任一组合形成新的实施例且所涉及概念或方案相同或相似的部分可以相互参考或组合。下面分别对各个实施例进行详细说明。
可选的,本申请提供的技术方案可通过第一设备和第二设备来实现。其中,第一设备既可以是网络设备,如基站;也可以是终端设备,如UE;第二设备既可以是网络设备,如基站;也可以是终端设备,如UE。本申请的所有实施例均以第一设备作为编码端(或发送端)来描述,第二设备作为译码端(或接收端)来描述;但在实际应用中,第一设备也可以作为译码端(或接收端),第二设备作为编码端(或发送端);本申请对此不作限定。另外,在一次数据传输过程中,假设第一设备是编码端,第二设备是译码端;在另一次数据传输过程中,第一设备可以是译码端,第二设备是编码端,或者第一设备还是编码端,第二设备还是译码端。换句话说,编码端和译码端是针对通信双方而言,在一次通信过程中,通信的一方是编码端,另一方就是译码端。
实施例一
本申请实施例一主要介绍在NR协议中引入网络编码的一种可能的数据传输方法,该方法既传输原数据包也传输编码包,并且介绍PDU/SDU经过分割和/或级联操作后得到的原数据非等大小情况下,如何进行网络编码和数据传输、以及如何设计包头。
参见图5,图5是本申请实施例提供的数据传输方法的第一种示意流程图。如图5所示,该数据传输方法包括但不限于以下步骤:
S101,第一设备获取N个第一数据包,该N个第一数据包的大小相等,每个第一数据包包括包头和数据,每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系,每个第一数据包的包头还包括数据包标识字段,用于指示该第一数据包的序列号。
S102,第一设备传输该N个第一数据包。
S103,第一设备对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包。
S104,第一设备传输该M个第二数据包。
可选的,本申请实施例中的第一数据包可以称为原数据包,第二数据包可以称为编码包。原数据包可以理解为未经过网络编码的数据包,编码包可以理解为经过网络编码后的数据包。本申请实施例中的数据单元是PDU或SDU。
可选的,第一设备对至少一个数据单元(PDU或SDU)进行分割和/或级联等处理获得N个原数据,再对每个原数据加包头得到第一数据包(即原数据包),其中每个第一数据包的大小都相同。为了降低时延,第一设备可以每得到一个第一数据包就传输该第一数据包,并将该第一数据包缓存在存储器(这里的存储器是指存储空间,比如缓存)中。当该存储器中的第一数据包的个数达到网络编码所需的数据包个数(本申请实施例假设网络编码所需的数据包个数,即数据块大小为N)时,再对该存储器中缓存的N个第一数据包进行网络编码,生成M个编码数据。其中这N个第一数据包的大小相等,这M个编码数据的大小也相等,并且任一个编码数据的大小与任一个第一数据包的大小也相等。第一设备对每个编码数据加编码包包头,得到第二数据包(即编码包),并传输该第二数据包。M个编码数据加编码包包头后可得到M个第二数据包(即编码包)。其中,本申请对网络编码的方式不做限定,既可以是前述图4所示的随机线性网络编码,也可以是通过编码窗(编码窗的窗长为N)的窗头和窗尾指针的滑动,来实现的卷积网络编码或者块网络编码,这里不展开说明。N和M均为正整数,且M和N的大小关系不做限定,即M可以小于N,也可以大于N,还可以等于N。
可见,第二数据包(即编码包)比第一数据包(即原数据包)多一个编码包包头,即编码包的编码数据和原数据包大小相等,也就是说,本申请实施例传输的编码包(第二数据包)和原数据包(第一数据包)不等大小,一定程度上节约了原数据包的包头开销。
可选的,本申请实施例对上述步骤S102和上述步骤S103的执行顺序不做限定。比如上述步骤S102既可以在上述步骤S103之前执行,也可以在上述步骤S103之后执行,还可以与上述步骤S103同时/并行执行。
可选的,上述每个第一数据包(即原数据包)包括包头和数据(即上述原数据)。每个第一数据包的包头包括该第一数据包的数据(即上述原数据)对应的至少一个数据单元(PDU或SDU)的分割和级联信息,换句话说,每个原数据包的包头中包括该原数据包的数据与PDU/SDU的映射关系。或者说,该分割和级联信息用于指示该第一数据包的数据与至少一个数据单元(PDU或SDU)的对应关系。每个第一数据包的包头还可以包括第一指示信息和数据包标识(Packet ID)字段。第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包。数据包标识字段用于指示第一数据包的序列号。应理解,第一数据包的序列号可以按照从小到大顺序编号,或顺序递增。也就是说,第一设备获取到的第一个第一数据包的序列号为1,第二个第一数据包的序列号为2,以此类推。
可选的,上述每个第二数据包包括编码包包头和编码数据(这里的编码数据是多个第一数据包经过网络编码后得到)。每个第二数据包的编码包包头包括编码因子字段,还可以包括第二指示信息。第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。
可选的,上述步骤S101至步骤S104可以由第一设备中的网络编码(networkcoding,NC)功能子层实现,该NC功能子层还可以用来实现网络编码功能。其中,该NC功能子层可以位于分组数据汇聚协议(packet data convergence protocol,PDCP)层与无线链路控制(radio link control,RLC)层之间,也可以位于RLC层与媒体接入控制(media accesscontrol,MAC)层之间,还可以位于MAC层与物理层(physicallayer,PHY)之间。当考虑NC功能子层时,结合具体的场景,NC功能子层可以在gNB的CU侧,也可以在gNB的DU侧,本申请实施例对此不做限定。或者,可以将NC功能嵌入到具体的某一层中,如可以将NC功能嵌入到自适应回传协议(backhaul adaptation protocol,BAP)层、或PDCP层、或RLC层、或MAC层等,则上述步骤S101至步骤S104可以由第一设备中具有NC功能的层实现。第一设备中具有NC功能的层既可以对协议层的PDU进行网络编码,也可以对SDU进行网络编码。当NC功能嵌入到PDCP层时,该NC功能可以位于头压缩和完整性保护功能之间,也可以位于加密功能之后,添加PDCP头之前。
示例性的,以NC功能子层位于PDCP层和RLC层之间为例,参见图6,图6是本申请实施例提供的协议栈的示意图。如图6所示,在PDCP和RLC层引入了NC功能子层,来实现网络编码功能。NC功能子层接收PDCP层传输来的PDCP PDU,并将其拆分合并为NC层的SDU(即原数据包的数据),通过加包头H(即原数据包的包头),可以获得包括包头H的NC PDU(即原数据包),并传输到RLC层。对若干个NC PDU进行网络编码,可以得到编码数据,并加编码包头获得包括编码包头的编码包,作为不同于原数据包的NC PDU发送到RLC层。换句话说,RLC层可以接收到两种类型的数据包,一种是NC功能子层传下来的原数据包,另一种是NC功能子层传下来的编码包。NC功能子层传下来的两种NC PDU(或两种数据包)都可以完全兼容RLC层的功能,即RLC层将NC功能子层传下来的NC PDU视为PDCP PDU进行处理和操作。示例性的,协议栈中也可以不单独定义一个NC功能子层,而是对PDCP层的功能进行扩展,保证PDCP层具有NC的前述功能,即对PDCP PDU进行分割和/或级联等操作生成原数据包和编码数据包,均作为NC PDU向RLC层传输。应理解,NC功能子层位于其他层之间、与NC功能子层位于PDCP层和RLC层之间类似,而NC功能嵌入到某一层中时,NC功能与已有功能进行合并。
为更好地理解上述步骤S101至上述步骤S104所述的流程,下面以一个示例来说明上述步骤S101至上述步骤S104所示的编码端数据传输流程。
示例性的,参见图7,图7是本申请实施例提供的编码端数据传输流程的第一种示意图。如图7所示,以NC功能子层位于PDCP层和RLC层之间为例。假设NC功能子层依次接收到PDCP PDU1~4,根据NC功能子层中对原数据包的大小要求(其中原数据包的大小可以是半静态配置,也可以是收端(或译码端、或第二设备)提前告知发端(或编码端、或第一设备)的),对PDCP PDU1~4进行分割和/或级联操作,依次得到原数据包Pkt1~Pkt4的数据(如图7中的Data1~Data4)。再对得到的每个数据添加包头(如图7中的Header),获得包括包头的原数据包;一方面将原数据包作为NC功能子层的NC PDU直接传输至下一层,另一方面将原数据包缓存在NC功能子层的编码器的缓存区(buffer)中。当buffer中的原数据包达到编码器所需的数据包个数时(这里假设编码器所需的数据包个数为4),将buffer中的4个原数据包进行网络编码生成编码数据EData1和EData2。应理解,对4个原数据包进行网络编码生成的编码数据的个数可以小于或等于原数据包的个数,也可以大于原数据包的个数。对每个编码数据添加编码包包头(如图7中的NC_Header),得到包括包头的编码包(如图7中的EPkt1和EPkt2)并作为NC功能子层的PDU进行发送。应理解,发送编码包时可以只发送得到的部分编码包(比如发送EPkt1,不发送EPkt2),也可以发送得到的全部编码包。还应理解,这里分割和/或级联得到的原数据不一定是等大小的,但需要保证每个原数据包(包括数据Data和包头Header)的大小相等,也就是说原数据包的包头Header非等大小。
可见,本申请实施例提供了一种NR协议栈下的网络编码方案,保证了NC功能子层或NC功能与其他层的适配和兼容性,并通过在获得原数据包(即上述第一数据包)后一方面直接发送原数据包来保证接收端的低延时,即接收端可以基于接收到的原数据包恢复出NC功能子层的上一层PDU,即接收端正确接收。另一方面将原数据包缓存在编码器的buffer中等待进行网络编码(这是因为buffer中的原数据包需要达到编码器所需的数据包个数),在网络编码后发送冗余编码包,因为冗余编码包的编码数据可以恢复出原数据包(这是因为编码数据是由原数据包经过网络编码后得到),并且原数据包中有完整的包头信息,所以即使在传输过程中多个原数据包丢失,也可以根据冗余编码包恢复出原数据包,再根据原数据包的包头携带的分割和级联信息,对原数据包的数据进行分割和级联的逆处理,从而恢复出上一层的PDU/SDU数据。因此,本申请实施例不仅可以在现有NR协议中支持网络编码技术,还可以降低时延;此外,即使在多个原数据包丢失的情况下也能恢复出PDU或SDU,减少性能损失。
上述内容详细阐述了编码端的数据传输流程,为了保证译码端能够根据正确接收的原数据包和编码包恢复出PDU/SDU,下面将结合编码端的数据传输流程详细介绍第一数据包(即原数据包)的包头和第二数据包(即编码包)的编码包包头的实现方式。其中,第一数据包中包头的格式可采用下述实现方式1.1至实现方式1.4中任一种,实现方式1.1至实现方式1.4也可以任一组合形成新的实现方式且所涉及概念或方案相同或相似的部分可以相互参考或组合。第二数据包中编码包包头的格式可采用下述实现方式2.1和实现方式2.2中任一种,实现方式2.1至实现方式2.2也可以任一组合形成新的实现方式且所涉及概念或方案相同或相似的部分可以相互参考或组合。
1、第一数据包的包头
可选的,每个第一数据包包括包头和数据,为便于描述,下文将第一数据包中的数据称为原数据,也就是说本申请实施例中“原数据”与“第一数据包(原数据包)中的数据”可替换使用。一个第一数据包的数据包括一个或多个数据段,一个数据段包括一个PDU/SDU的全部或部分。换句话说,原数据包中的数据包括一个或多个数据段,每个数据段来自不同的PDU/SDU,一个数据段是一个PDU/SDU的全部或部分。参见图8,图8是本申请实施例提供的PDU/SDU与第一数据包的数据的映射关系示意图。如图8所示,图8示出了两种典型的PDU/SDU与原数据的映射关系。第一种典型的PDU/SDU与原数据的映射关系如图8的8a所示,一个PDU/SDU被分割成多个原数据;第二种典型的PDU/SDU与原数据的映射关系如图8的8b所示,多个PDU/SDU的全部或部分构成一个原数据。
可选的,图8示出的映射关系中第一数据包包括的数据段对应的PDU/SDU的序列号顺序递增,但实际应用中第一数据包包括的数据段对应的PDU/SDU的序列号也可以乱序。应理解,第一数据包包括的数据段对应的PDU/SDU的序列号顺序递减,与顺序递增的方式类似,此处不再展开说明。参见图9,图9是本申请实施例提供的PDU/SDU与第一数据包中的数据段的位置关系示意图。其中,图9针对上述图8的8b情况,即图9针对多个PDU/SDU的全部或部分构成一个原数据(第一数据包的数据)的情况。如图9的9a所示,第一数据包的数据中数据段的排列方式可以按照PDU/SDU的序列号大小,从小到大排列,即序列号最小的PDU/SDU作为第一个数据段,中间数据段对应的PDU/SDU的序列号依次增加,序列号最大的PDU/SDU作为最后一个数据段。应理解,图9的9a所示与上述图8的8b所示的映射关系相同。如图9的9b所示,第一数据包的数据中数据段对应的PDU/SDU的序列号可以乱序排列,比如第一数据包的数据中数据段对应的PDU/SDU的序列号分别是1,3,4,2。此时,第一数据包的数据中第一个数据段对应的PDU/SDU就是PDU/SDU 1,最后一个数据段对应的PDU/SDU就是PDU/SDU2。应理解,图9的9b仅是示例,第一数据包的数据中数据段对应的PDU/SDU的序列号还可以有其他排列方式,如3,1,4,2或1,4,2,3等等。
下面结合图8所示的映射关系和图9所示的位置关系,对第一数据包的包头的实现方式进行详细说明。
实现方式1.1
可选的,每个第一数据包的包头包括数据包标识(Packet ID)字段、以及分割和级联信息,可选的还包括第一指示信息。第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包,该第一指示信息在包头中的表现形式可以是原始/编码(original/coded,O/C)字段,应理解,第一指示信息也可以表现为其他名称的字段,本申请实施例对字段的名称不做限定。第一数据包的包头中Packet ID字段用于指示该Packet ID字段所在第一数据包(原数据包)的序列号(sequence number,SN)。可选的,每个第一数据包的包头还可以包括类型(Type)字段和块标识(Block ID)字段中的一项或多项。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围,比如1比特可以表示2种长度的SN(或Packet ID字段长度);2比特可以表示4种长度的SN(或Packet ID字段长度)。块标识(Block ID)字段用于指示数据块的标识,这个数据块包括该Block ID字段所在的第一数据包。
可选的,上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元是否被分割的信息,或者指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该第一数据包的数据包括的第i个数据段是否是该第一数据包的数据中的最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum。应理解,当第一数据包的数据包括多个数据段时,如果这多个数据段与数据单元(PDU/SDU)的位置关系如图9的9a所示,则该第一数据包的包头既可以选择指示该第一数据包的数据中第一个数据段和/或最后一个数据段对应的数据单元是否被分割,也可以选择指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割。当第一数据包的数据包括多个数据段时,如果这多个数据段与数据单元(PDU/SDU)的位置关系如图9的9b所示,则该第一数据包的包头选择指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割。
应理解,本申请中“指示…是否…的信息”可以通过若干个比特,如1比特,来指示,当这若干个比特所取的不同值可以分别指出“是”和“否”的情况。“指示……长度的信息”可以通过该长度的具体值,或者,通过和该长度对应的索引来指示,也即,本申请中的“指示”可以为显式指示,也可以为隐式指示,本申请不做限定。
下面通过几个示例来介绍在实现方式1.1下第一数据包中包头的几种可能格式。
示例1:参见图10a,图10a是本申请实施例提供的第一数据包的包头格式示意图一。如图10a所示,第一数据包的包头包括:Packet ID字段,开始分段(Segment_start,S_start)字段和/或结束分段(Segment_end,S_end)字段,一个或多个扩展比特(extensionbit,表示为E)字段,以及一个或多个长度(length,L)字段;可选的包括O/C字段,Type字段以及Block ID字段。
其中,因为编码端(上述第一设备)既传输了原数据包(即上述第一数据包)也传输了编码包(即上述第二数据包),所以为了区分原数据包和编码包,可以引入1bit的O/C字段。当该O/C字段的取值为0时,表示该O/C字段所在的数据包是原数据包,当该O/C字段的取值为1时,表示该O/C字段所在的数据包是编码包;或者,当该O/C字段的取值为1时,表示该O/C字段所在的数据包是原数据包,当该O/C字段的取值为0时,表示该O/C字段所在的数据包是编码包。应理解,本申请实施例中第一数据包的包头包括的O/C字段设置为第一值(比如0),用来指示该O/C字段所在的第一数据包是原数据包。
Type字段是可选字段,表示数据包的SN范围或Packet ID字段长度,比如,1bit可以表征两种长度的SN或Packet ID字段长度,2bit表征四种长度的SN或Packet ID字段长度。示例性的,以Type字段的长度为1比特为例,Type字段取值为0时,表示Packet ID字段的长度为6bit;Type字段取值为1时,表示Packet ID字段的长度为14bit。
Packet ID字段用于表示该Packet ID字段所在数据包的序列号,数据包的序列号范围可根据Type字段确定。当Packet ID字段的长度为n bit时,序列号范围是0~2n-1。
Block ID字段是可选字段,表示数据块的标识(identifier,ID)。这个数据块包括该Block ID字段所在的第一数据包。
一种实现方式中,S_start字段的长度为1bit,用于表示第一数据包的数据中第一个数据段对应的PDU/SDU是否被分割,或者用于表示第一数据包的数据中数据段对应的PDU/SDU中序列号最小的PDU/SDU是否被分割。换句话说,S_start字段可以用来判断原数据包的数据部分起始数据段对应的PDU/SDU是否被分割,以使接收端(或译码端,或第二设备)恢复时确定是否需要级联。其中,S_start字段取值为0,表示未被分割,S_start字段取值为1,表示被分割;或者,S_start字段取值为1,表示未被分割,S_start字段取值为0,表示被分割。
另一种实现方式中,S_start字段的长度为1bit,用于表示第一数据包的数据中第一个数据段对应的PDU/SDU是否完整(完整即未被分割,不完整即为被分割,被分割就表示第一个数据段是一个PDU/SDU的部分),或者用于表示第一数据包的数据中数据段对应的PDU/SDU中序列号最小的PDU/SDU是否完整。
一种实现方式中,S_end字段的长度为1bit,用于表示第一数据包的数据中最后一个数据段对应的PDU/SDU是否被分割,或者用于表示第一数据包的数据中数据段对应的PDU/SDU中序列号最大的PDU/SDU是否被分割。换句话说,S_end字段可以用来判断原数据包的数据部分末尾数据段对应的PDU/SDU是否被分割,以使接收端(或译码端,或第二设备)恢复时确定是否需要级联。其中,S_end字段取值为0,表示未被分割,S_start字段取值为1,表示被分割;或者,S_end字段取值为1,表示未被分割,S_end字段取值为0,表示被分割。应理解,第一数据包的包头中可以只存在S_start字段和S_end字段中的一个,也可以两个字段都存在。
另一种实现方式中,S_end字段的长度为1bit,用于表示第一数据包的数据中最后一个数据段对应的PDU/SDU是否完整(完整即未被分割,不完整即为被分割,被分割就表示最后一个数据段是一个PDU/SDU的部分且是该PDU/SDU的前部分),或者用于表示第一数据包的数据中数据段对应的PDU/SDU中序列号最大的PDU/SDU是否完整。
一个或多个扩展比特(extension bit,表示为E)字段表示为E1,E2,E3,…,EDnum。Dnum表示第一数据包的数据包括的数据段总数。E1表示第一数据包的数据中第1个数据段是否是最后一个数据段,或者第一数据包的数据中第1个数据段后是否存在下一个数据段;E2表示第一数据包的数据中第2个数据段是否是最后一个数据段,或者第一数据包的数据中第2个数据段后是否存在下一个数据段;E3表示第一数据包的数据中第3个数据段是否是最后一个数据段,或者第一数据包的数据中第3个数据段后是否存在下一个数据段;以此类推。Ei表示第一数据包的数据中第i个数据段是否是最后一个数据段,或者第一数据包的数据中第i个数据段后是否存在下一个数据段,i为正整数且1≤i≤Dnum。其中,每个扩展比特字段的长度为1bit。当该1bit取值为0时,表示是最后一个数据段或不存在下一个数据段,第一数据包的包头再累计一个长度字段后结束;当该1bit取值为1时,表示不是最后一个数据段或存在下一个数据段,第一数据包的包头也累计一个L字段,之后第一数据包的包头还会累计下一个E字段和对应的L字段。或者反之,即当该1bit取值为1时,表示是最后一个数据段或不存在下一个数据段,第一数据包的包头再累计一个长度字段后结束;当该1bit取值为0时,表示不是最后一个数据段或存在下一个数据段,第一数据包的包头也累计一个L字段,之后第一数据包的包头还会累计下一个E字段和对应的L字段。应理解,每个扩展比特(extension bit,表示为E)字段后都紧跟一个长度(length,L)字段。
一个或多个长度(length,L)字段表示为L1,L2,L3,…,LDnum。Dnum表示第一数据包的数据包括的数据段总数。L1表示第一数据包的数据中第1个数据段的长度;L2表示第一数据包的数据中第2个数据段的长度;L3表示第一数据包的数据中第3个数据段的长度;以此类推。Li表示第一数据包的数据中第i个数据段的长度,i为正整数且1≤i≤Dnum。应理解,如果第一数据包的总长度可以确定,第一数据包的包头长度也可以确定,则i的取值可以是1≤i≤Dnum-1,也就是说,第一数据包的包头中可以指示Dnum-1个数据段的长度,剩下的一个数据段的长度可通过该第一数据包的总长度、该第一数据包的包头长度以及Dnum-1个数据段的长度计算得出。可见,此种方式可以节省一个长度字段,节省开销。
应理解,图10a仅是示例,图10a中第一数据包的包头包括的各个字段还可以有其他名称,本申请实施例对此不做限定。图10a中第一数据包的包头包括的各个字段的长度和排列顺序也不做限定。
示例2:参见图10b,图10b是本申请实施例提供的第一数据包的包头格式示意图二。如图10b所示,第一数据包的包头包括:Packet ID字段,分段信息(segmentinformation,SI)字段,一个或多个扩展比特(extension bit,表示为E)字段,以及一个或多个长度(length,L)字段;可选的包括O/C字段,Type字段和Block ID字段。
其中,图10b中SI字段的长度为2bit,用于表示第一数据包的数据中第一个数据段和最后一个数据段对应的数据单元是否被分割,或者该第一数据包的数据中数据段对应的数据单元中序列号最大和序列号最小的数据单元是否被分割。比如,当SI字段为00(十进制0)时,表示第一个数据段和最后一个数据段对应的数据单元都没有被分割(或者表示序列号最大和序列号最小的数据单元都没有被分割);当SI字段为01(十进制1)时,表示第一个数据段对应的数据单元被分割(或序列号最小的数据单元被分割),最后一个数据段对应的数据单元没有被分割(或序列号最大的数据单元没有被分割);当SI字段为10(十进制2)时,表示第一个数据段对应的数据单元没有被分割(或序列号最小的数据单元没有被分割),最后一个数据段对应的数据单元被分割(或序列号最大的数据单元被分割);当SI字段为11(十进制3)时,表示第一个数据段和最后一个数据段对应的数据单元都被分割(或者表示序列号最大和序列号最小的数据单元都没有被分割)。又如,当SI字段为11(十进制3)时,表示第一个数据段和最后一个数据段对应的数据单元都没有被分割(或者表示序列号最大和序列号最小的数据单元都没有被分割);当SI字段为10(十进制2)时,表示第一个数据段对应的数据单元被分割(或序列号最小的数据单元被分割),最后一个数据段对应的数据单元没有被分割(或序列号最大的数据单元没有被分割);当SI字段为01(十进制1)时,表示第一个数据段对应的数据单元没有被分割(或序列号最小的数据单元没有被分割),最后一个数据段对应的数据单元被分割(或序列号最大的数据单元被分割);当SI字段为00(十进制0)时,表示第一个数据段和最后一个数据段对应的数据单元都被分割(或者表示序列号最大和序列号最小的数据单元都没有被分割)。应理解,本申请实施例对SI字段的取值和含义的对应关系不做限定。
第一数据包的包头中其他字段(O/C字段,Packet ID字段,一个或多个扩展比特(表示为E)字段,一个或多个长度字段,Type字段,Block ID字段)的含义参考前述图10a中相应字段的含义,此处不再赘述。
应理解,图10b仅是示例,图10b中第一数据包的包头包括的各个字段还可以有其他名称,本申请实施例对此不做限定。图10b中第一数据包的包头包括的各个字段的长度和排列顺序也不做限定。
可见,实现方式1.1中为每一个数据段都设置1bit的扩展比特字段来指示该数据段是否是最后一个数据段,并为每一个数据段设置一个长度字段来指示其长度,有利于译码端根据原数据包的包头的指示对原数据进行分割和级联,以恢复出一个或多个PDU/SDU。另外,实现方式1.1通过2个比特分别指示第一数据包的数据中起始数据段和末尾数据段对应的数据单元是否被分割,可以节省开销。
实现方式1.2
可选的,每个第一数据包的包头包括数据包标识(Packet ID)字段、以及分割和级联信息,可选的还包括第一指示信息。第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包,该第一指示信息在包头中的表现形式可以是O/C字段,应理解,第一指示信息也可以表现为其他名称的字段,本申请实施例对字段的名称不做限定。第一数据包的包头中Packet ID字段用于指示该Packet ID字段所在第一数据包(原数据包)的序列号(SN)。可选的,每个第一数据包的包头还可以包括类型(Type)字段和块标识(Block ID)字段中的一项或多项。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围,比如1比特可以表示2种长度的SN(或Packet ID字段长度);2比特可以表示4种长度的SN(或Packet ID字段长度)。块标识(Block ID)字段用于指示数据块的标识,这个数据块包括该Block ID字段所在的第一数据包。
可选的,上述分割和级联信息包括:该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元的序列号,或者该第一数据包的数据中数据段对应的数据单元的最大序列号和/或最小序列号;指示该第一数据包的数据包括的第i个数据段是否是该第一数据包的数据中最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum。应理解,当第一数据包的数据包括多个数据段时,如果这多个数据段与数据单元(PDU/SDU)的位置关系如图9的9a所示,则该第一数据包的包头既可以选择指示第一数据包的数据中第一个数据段和/或最后一个数据段对应的数据单元的序列号,也可以选择指示该第一数据包的数据中数据段对应的数据单元的最大序列号和/或最小序列号。当第一数据包的数据包括多个数据段时,如果这多个数据段与数据单元(PDU/SDU)的位置关系如图9的9b所示,则该第一数据包的包头选择指示该第一数据包的数据中数据段对应的数据单元的最大序列号和/或最小序列号。
参见图11,图11是本申请实施例提供的第一数据包的包头格式示意图三。如图11所示,第一数据包的包头包括:Packet ID字段,开始序列号(SN_begin)字段和/或结束序列号(SN_end)字段,一个或多个扩展比特(extension bit,表示为E)字段,以及一个或多个长度(length,L)字段;可选的包括O/C字段,Type字段和Block ID字段。
其中,SN_begin字段用于表示第一数据包的数据中第一个数据段对应的PDU/SDU的序列号,或者用于表示第一数据包的数据中数据段对应的数据单元的最小序列号。换句话说,SN_begin字段可以用来指示原数据包的数据部分起始段对应的PDU/SDU的SN。
SN_end字段用于表示第一数据包的数据中最后一个数据段对应的PDU/SDU的序列号,或者用于表示第一数据包的数据中数据段对应的数据单元的最大序列号。换句话说,SN_end字段可以用来指示原数据包的数据部分末尾段对应的PDU/SDU的SN。应理解,第一数据包的包头中可以只存在SN_begin字段和SN_end字段中的一个,也可以两个字段都存在。
可选的,SN_begin字段和SN_end字段可以替换成一个或多个序列号字段。这一个或多个序列号字段表示为SN1,SN2,SN3,…,SNDnum。Dnum表示第一数据包的数据包括的数据段总数。一个序列号字段表示第一数据包的数据中一个数据段对应的数据单元的序列号。SN1表示第一数据包的数据中第1个数据段对应的数据单元的序列号;SN2表示第一数据包的数据中第2个数据段对应的数据单元的序列号;SN3表示第一数据包的数据中第3个数据段对应的数据单元的序列号;以此类推。SNi表示第一数据包的数据中第i个数据段对应的数据单元的序列号,i为正整数且1≤i≤Dnum。换句话说,上述分割和级联信息包括的不再是第一数据包的数据中第一个数据段和/或最后一个数据段对应的数据单元的序列号,或者该第一数据包的数据中数据段对应的数据单元的最大序列号和/或最小序列号;而是第一数据包的数据中每个数据段对应的数据单元的序列号。
还应理解,第一数据包的包头中其他字段(O/C字段,Packet ID字段,一个或多个扩展比特(表示为E)字段,一个或多个长度字段,Type字段,Block ID字段)的含义可参考前述图10a中相应字段的描述,此处不再赘述。
应理解,图11仅是示例,图11中第一数据包的包头包括的各个字段还可以有其他名称,本申请实施例对此不做限定。图11中第一数据包的包头包括的各个字段的长度和排列顺序也不做限定。
可见,实现方式1.2通过在包头中指示起始数据段和/或末尾数据段对应的PDU/SDU的序列号,可以指示出多个第一数据包的数据中数据段是否来自不同的PDU/SDU,以使译码端能够将不同的数据段组合成完整的PDU/SDU。
实现方式1.3
可选的,每个第一数据包的包头包括数据包标识(Packet ID)字段、以及分割和级联信息,可选的还包括第一指示信息。第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包,该第一指示信息在包头中的表现形式可以是O/C字段,应理解,第一指示信息也可以表现为其他名称的字段,本申请实施例对字段的名称不做限定。第一数据包的包头中Packet ID字段用于指示该Packet ID字段所在第一数据包(原数据包)的序列号(SN)。可选的,每个第一数据包的包头还可以包括类型(Type)字段和块标识(Block ID)字段中的一项或多项。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围,比如1比特可以表示2种长度的SN(或Packet ID字段长度);2比特可以表示4种长度的SN(或Packet ID字段长度)。块标识(Block ID)字段用于指示数据块的标识,这个数据块包括该Block ID字段所在的第一数据包。
可选的,上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段是否是最后一个数据段(或者说,该第一数据包的数据中第一个数据段后是否存在下一个数据段)以及该第一个数据段对应的数据单元是否完整(完整即为未被分割,不完整即为被分割)的信息;指示该第一数据包的数据包括的第i个数据段是否是该第一数据包的数据中最后一个数据段(或者说,该第一数据包的数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该第一数据包的数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
参见图12,图12是本申请实施例提供的第一数据包的包头格式示意图四。如图12所示,第一数据包的包头包括:Packet ID字段,扩展比特0(extension bit 0,表示为E0)字段,一个或多个扩展比特(extension bit,表示为E)字段,以及一个或多个长度(length,L)字段;可选的包括O/C字段,Type字段和Block ID字段。
其中,扩展比特0(表示为E0)字段的长度为2bit,用于表示第一数据包的数据中第一个数据段是否是最后一个数据段和该第一个数据段对应的数据单元是否完整。换句话说,E0字段表示原数据包的数据部分起始数据段后是否存在下一个数据段以及该起始数据段是否完整。比如,当E0字段为00(十进制0)时,表示第一个数据段是最后一个数段段(即不包含下一个数据段),且该第一个数据段对应的数据单元完整;当E0字段为01(十进制1)时,表示表示第一个数据段是最后一个数段段(即不包含下一个数据段),且该第一个数据段对应的数据单元不完整;当E0字段为10(十进制2)时,表示表示第一个数据段不是最后一个数段段(即包含下一个数据段),且该第一个数据段对应的数据单元完整;当E0字段为11(十进制3)时,表示表示第一个数据段不是最后一个数段段(即包含下一个数据段),且该第一个数据段对应的数据单元不完整。应理解,本申请实施例对E0字段的取值和含义的对应关系不做限定,即E0字段的取值和含义可以有其他对应关系。又如,当E0字段为11(十进制3)时,表示第一个数据段是最后一个数段段(即不包含下一个数据段),且该第一个数据段对应的数据单元完整;当E0字段为10(十进制2)时,表示表示第一个数据段是最后一个数段段(即不包含下一个数据段),且该第一个数据段对应的数据单元不完整;当E0字段为01(十进制1)时,表示表示第一个数据段不是最后一个数段段(即包含下一个数据段),且该第一个数据段对应的数据单元完整;当E0字段为00(十进制0)时,表示表示第一个数据段不是最后一个数段段(即包含下一个数据段),且该第一个数据段对应的数据单元不完整。
应理解,因为E0字段已经指示了第一数据包的数据中第一个数据段是否是最后一个数据段,所以图12所示包头的扩展比特(表示为E)字段可从E2开始,长度字段仍然从L1开始,且L1字段位于E0字段后。还应理解,第一数据包的包头中其他字段(O/C字段,Packet ID字段,一个或多个扩展比特(表示为E)字段,一个或多个长度字段,Type字段,Block ID字段)的含义参考前述图10a中相应字段的含义,此处不再赘述。
应理解,图12仅是示例,图12中第一数据包的包头包括的各个字段还可以有其他名称,本申请实施例对此不做限定。图12中第一数据包的包头包括的各个字段的长度和排列顺序也不做限定。
可见,实现方式1.3通过2比特来指示第一数据包的数据中起始数据段和末尾数据段对应的数据单元是否完整,并为每个数据段都设置1bit的扩展比特字段来指示该数据段是否是最后一个数据段,并为每一个数据段设置一个长度字段来指示其长度,有利于译码端根据原数据包的包头的指示对原数据进行分割和级联,以恢复出一个或多个PDU/SDU。
实现方式1.4
可选的,每个第一数据包的包头包括数据包标识(Packet ID)字段、以及分割和级联信息,可选的还包括第一指示信息。第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包,该第一指示信息在包头中的表现形式可以是O/C字段,应理解,第一指示信息也可以表现为其他名称的字段,本申请实施例对字段的名称不做限定。第一数据包的包头中Packet ID字段用于指示该Packet ID字段所在第一数据包(原数据包)的序列号(SN)。可选的,每个第一数据包的包头还可以包括类型(Type)字段和块标识(Block ID)字段中的一项或多项。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围,比如1比特可以表示2种长度的SN(或Packet ID字段长度);2比特可以表示4种长度的SN(或Packet ID字段长度)。块标识(Block ID)字段用于指示数据块的标识,这个数据块包括该Block ID字段所在的第一数据包。
可选的,上述分割和级联信息包括:指示该第一数据包的数据中第一个数据段(或起始数据段)和/或最后一个数据段(或末尾数据段)对应的数据单元是否被分割的信息,或者指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该第一数据包的数据中包括的数据段的个数(记为Dnum)的信息;以及指示每个数据段的长度的信息。应理解,当第一数据包的数据包括多个数据段时,如果这多个数据段与数据单元(PDU/SDU)的位置关系如图9的9a所示,则该第一数据包的包头既可以选择指示该第一数据包的数据中第一个数据段和/或最后一个数据段对应的数据单元是否被分割,也可以选择指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割。当第一数据包的数据包括多个数据段时,如果这多个数据段与数据单元(PDU/SDU)的位置关系如图9的9b所示,则该第一数据包的包头指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割。还应理解,如果第一数据包的总长度可以确定,第一数据包的包头长度也可以确定,则上述分割和级联信息中可以只包括Dnum-1个数据段中每个数据段的长度,而不是包括Dnum个数据段中每个数据段的长度,剩下的一个数据段的长度可通过该第一数据包的总长度、该第一数据包的包头长度以及Dnum-1个数据段的长度计算得出。Dnum表示第一数据包的数据中包括的数据段总数。
参见图13,图13是本申请实施例提供的第一数据包的包头格式示意图五。如图13所示,第一数据包的包头包括:Packet ID字段,S_start字段和/或S_end字段,分段数(segmentnumber,表示为Seg_N)字段,以及一个或多个长度(length,L)字段;可选的包括O/C字段,Type字段和Block ID字段。
其中,Seg_N字段的长度可以为4bit,用于表示第一数据包的数据中包括的数据段个数(记为Dnum)。4bit可以表示十进制数值0-15,其最大可指示16个数据段。比如,Seg_N字段取值为0时,表示第一数据包的数据中包括的数据段个数为1(即Dnum=1);Seg_N字段取值为1时,表示第一数据包的数据中包括的数据段个数为2(即Dnum=2);Seg_N字段取值为2时,表示第一数据包的数据中包括的数据段个数为3(即Dnum=3),以此类推,Seg_N字段取值为15时,表示第一数据包的数据中包括的数据段个数为16(即Dnum=16),即Dnum=Seg_N字段的值+1。或者,Seg_N字段取值为0时,表示预留;Seg_N字段取值为1时,表示第一数据包的数据中包括的数据段个数为1(即Dnum=1);Seg_N字段取值为2时,表示第一数据包的数据中包括的数据段个数为2(即Dnum=2),以此类推,即Dnum=Seg_N字段的值。应理解,一个数据段来自于一个PDU/SDU,不同数据段来自于不同PDU/SDU,所以Seg_N字段还可以理解为第一数据包的数据所对应的PDU/SDU个数。还应理解,包头中长度字段的个数等于Seg_N字段指示的数据段个数。
应理解,O/C字段,Packet ID字段,S_start字段和S_end字段,一个或多个长度字段,Type字段,以及Block ID字段的含义参考前述图10a中相应字段的含义,此处不再赘述。
应理解,图13仅是示例,图13中第一数据包的包头包括的各个字段还可以有其他名称,本申请实施例对此不做限定。图13中第一数据包的包头包括的各个字段的长度和排列顺序也不做限定。
可见,实现方式1.4中通过Seg_N字段来指示第一数据包的数据中包括的数据段个数,无需针对每个数据段都设置一个扩展比特(表示为E)字段来指示其是否是最后一个数据段,可以节省开销。
2、第二数据包的编码包包头
实现方式2.1
可选的,每个第二数据包包括编码包包头和编码数据。编码数据是多个原数据包经过网络编码后得到。每个第二数据包的编码包包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息、以及编码因子字段(如系数标识(Coeff ID)字段),可选的还包括第二指示信息。其中,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。该第二指示信息在编码包包头中的表现形式可以是O/C字段,应理解,第二指示信息也可以表现为其他名称的字段,本申请实施例对字段的名称不做限定。该用于指示编码得到该第二数据包的N个第一数据包的标识信息可以包括以下至少两项:指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。应理解,如果编码窗的窗长是半静态配置的,则用于指示编码得到该第二数据包的N个第一数据包的标识信息包括编码窗中第一个第一数据包的序列号、和编码窗中最后一个第一数据包的序列号中的至少一项即可。编码因子字段(如Coeff ID字段)的长度为8bit,用于指示255行码本的行索引,这里的码本可以是范德蒙码本、柯西码本、随机码本等。应理解,本申请中编码因子字段与Coeff ID字段可相互替换使用。
可选的,上述编码包包头还可以包括类型(Type)字段和Packet ID字段中的一项或多项。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围,比如1比特可以表示2种长度的SN(或Packet ID字段长度);2比特可以表示4种长度的SN(或Packet ID字段长度)。编码包包头中的Packet ID字段用于指示该Packet ID字段所在第二数据包(编码包)的SN。
其中,因为原数据包(第一数据包)的包头中携带有自己的序列号,编码包(第二数据包)的编码包包头中既可以携带自己的序列号,也可以不携带自己的序列号,所以针对序列号的实现方式有以下几种:(1)编码包的编码包包头中不携带序列号,即编码包包头中不存在Packet ID字段,此时原数据包(第一数据包)的序列号顺序编号。(2)编码包的序列号和原数据包的序列号都顺序编号(共用一套编号系统),且编码包的序列号与原数据包的序列号不重复;比如原数据包的序列号为1-20,编码包的序列号从21开始顺序递增。(3)编码包的序列号和原数据包的序列号分别有自己的一套编号系统,互不影响。(4)编码包的序列号和原数据包的序列号都顺序编号(共用一套序列号),且允许编码包的序列号与原数据包的序列号重复使用,可使用O/C字段来区分原数据包和编码包。比如,原数据包的序列号为1-20,编码包的序列号为11-15。
参见图14,图14是本申请实施例提供的编码包包头的第一种示意图。如图14所示,编码包包头包括:系数标识(Coeff ID)字段,以及窗长(Window Length,表示为Win_L)字段、网络编码数据包开始(NC_Packet_Start)字段、网络编码数据包结束(NC_Packet_End)字段中至少两个;可选的包括O/C字段,Type字段和Packet ID字段。
其中,本申请实施例中编码包包头包括的O/C字段设置为第二值(比如1),用来指示该O/C字段所在的第二数据包是原数据包。Type字段和Packet ID字段的含义可参考前述图10a中的相应描述,此处不再赘述。如果编码包包头中不存在Type字段,则Packet ID字段的长度可以为8bit。Coeff ID字段的长度为8bit,用于表示255行码本的行索引,这里的码本可以是范德蒙码本、柯西码本、随机码本等。
窗长(表示为Win_L)字段的长度为8bit,用于表示编码窗的窗长,或者说表示用于网络编码的数据块的大小。其中,编码窗的窗长或用于网络编码的数据块的大小,以数据包为粒度,8bit最多表示255个数据包,即编码窗的窗长最大为255个数据包,或者用于网络编码的数据块的大小最大为255个数据包。
NC_Packet_Start字段的长度为8bit,用于表示编码窗中第一个第一数据包的序列号。
NC_Packet_End字段的长度为8bit,用于表示编码窗中最后一个第一数据包的序列号。
应理解,NC_Packet_Start字段、NC_Packet_End字段、Win_L字段中三者有其二即可唯一确定编码窗中的原数据包。如果Win_L字段半静态配置,则有NC_Packet_Start字段和NC_Packet_End字段中任一个即可。
还应理解,图14仅是示例,图14中编码包包头包括的各个字段还可以有其他名称,本申请实施例对此不做限定。图14中编码包包头包括的各个字段的长度和排列顺序也不做限定。
可见,实现方式2.1中重新设计一种编码包包头的格式,以支持译码端的正确译码。
实现方式2.2
可选的,每个第二数据包包括编码包包头和编码数据。编码数据是多个原数据包经过网络编码后得到。每个第二数据包的编码包包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息、以及编码因子字段(如系数标识(Coeff ID)字段),可选的还包括第二指示信息。其中,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。该第二指示信息在编码包包头中的表现形式可以是O/C字段,应理解,第二指示信息也可以表现为其他名称的字段,本申请实施例对字段的名称不做限定。该用于指示编码得到该第二数据包的N个第一数据包的标识信息在编码包包头中的表现形式可以是块标识(Block ID)字段。
可选的,上述编码包包头还可以包括类型(Type)字段和Packet ID字段中的一项或多项。类型(Type)字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围,比如1比特可以表示2种长度的SN(或Packet ID字段长度);2比特可以表示4种长度的SN(或Packet ID字段长度)。编码包包头中的Packet ID字段用于指示该Packet ID字段所在第二数据包(编码包)的SN。
参见图15,图15是本申请实施例提供的编码包包头的第二种示意图。如图15所示,编码包包头包括:系数标识(Coeff ID)字段,以及块标识(Block ID)字段;可选的包括O/C字段,Type字段和Packet ID字段。其中,O/C字段、Type字段、以及Packet ID字段的含义可参考前述图10a中的相应描述,此处不再赘述。Coeff ID字段的含义可参考前述图14中的相应描述,此处不再赘述。Block ID字段用于表示数据块的标识,这个数据块用于编码得到该Block ID字段所在的第二数据包。
还应理解,图15仅是示例,图15中编码包包头包括的各个字段还可以有其他名称,本申请实施例对此不做限定。图15中编码包包头包括的各个字段的长度和排列顺序也不做限定。
可见,实现方式2.2中通过复用原有编码包包头中的Coeff ID字段、Block ID字段、Type字段、以及Packet ID字段,并新增一个O/C字段来指示数据包的种类(编码包还是原数据包),不仅可以保证译码端的正确译码,还可以提高兼容性。
可选的,虽然第一设备分别传输了N个第一数据包(即原数据包)和M个第二数据包(即编码包),但因为干扰、噪声等因素,第一设备传输的数据包不一定都能被第二设备正确接收,也就是说,在传输过程中可能发生丢包的情况。所以,当第二设备接收到至少N个正确且线性无关的数据包时,才能正确译码并恢复出N个第一数据包。
下面详细介绍译码端的数据传输流程。
S105,第二设备获取P个数据包,该P个数据包中包括K个第一数据包和P-K个第二数据包。
S106,第二设备对该P个数据包进行译码,获得译码后的N个第一数据包。
S107,第二设备根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将该N个第一数据包的数据还原成至少一个数据单元。
可选的,第二设备接收到P个数据包,或从存储空间(如buffer)中读取到P个数据包,P是正整数,且大于或等于N。可见,当P等于N时,可以减少冗余开销。应理解,第二设备可以一次性接收到P个数据包,将其按序存储在存储空间中;也可以分多次接收,将每次接收到的数据包按序存储在存储空间中。在接收到的数据包个数等于P后,可执行译码操作,即步骤S106。
可选的,因为原数据包的包头和编码包包头的解析方式不相同,所以第二设备在解析原数据包的包头和编码包包头获得其中的信息之前,判断接收到的P个数据包中哪些是原数据包哪些是编码包。第二设备判断接收到的数据包是编码包还是原数据包的方式有两种:
一种实现方式中,第二设备比较P个数据包中每个数据包的长度与编码包长度阈值L1的大小关系。如果该P个数据包中某个数据包的长度等于该编码包长度阈值L1,则确定该数据包是第二数据包(即编码包)。如果该P个数据包中某个数据包的长度小于该编码包长度阈值L1,则确定该数据包是第一数据包(即原数据包)。或者,第二设备比较P个数据包中每个数据包的长度与该原数据包长度阈值L2的大小关系。如果该P个数据包中某个数据包的长度小于或等于该原数据包长度阈值L2,则确定该数据包是第一数据包(即原数据包)。如果该P个数据包中某个数据包的长度大于该原数据包长度阈值L2,则确定该数据包是第二数据包(即编码包)。其中,编码包长度阈值L1可以是预设的,也可以是半静态配置的,还可以收发双方提前协商的。同理,原数据包长度阈值L2可以是预设的,也可以是半静态配置的,还可以收发双方提前协商的。
另一种实现方式中,如果上述第一数据包的包头和上述第二数据包的编码包包头中均携带指示信息(即O/C字段),则第二设备针对P个数据包中的每个数据包,可以读取该数据包的第一个比特(即O/C字段),确定该数据包是第一数据包(即原数据包)还是第二数据包(即编码包)。
如果该数据包是第一数据包(即原数据包),则第二设备采用原数据包的解析方式解析该数据包的包头,获得该数据包的序列号。如果该数据包是第二数据包(即编码包),则第二设备采用编码包的解析方式解析该数据包的编码包包头,获得编码因子字段(即CoeffID字段)和用于指示编码得到该数据包的N个第一数据包的标识信息。其中,该P个数据包中包括K个第一数据包和P-K个第二数据包。每个第一数据包包括包头和数据,每个第二数据包包括编码包包头和编码数据。K和P均为正整数,且K小于或等于P。第二设备按照该K个第一数据包的序列号从小到大排序、该P-K个第二数据包的编码包包头中编码因子字段的指示、以及任一个第二数据包的包头中用于指示编码得到该第二数据包的N个第一数据包的标识信息,构成系数因子矩阵。该系数因子矩阵的秩(rank)等于N。第二设备采用该系数因子矩阵对P-K个第二数据包的编码数据和K个第一数据包进行联合译码,获得译码后的N-K个第一数据包。应理解,译码得到的N-K个第一数据包和K个第一数据包加起来就是N个第一数据包。每个第一数据包的包头包括该第一数据包的数据部分对应的至少一个数据单元的分割和级联信息,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。第二设备再根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将这N个第一数据包的数据还原成至少一个数据单元。其中,K小于或等于N。用于指示编码得到该数据包的N个第一数据包的标识信息是Block ID字段,或包括编码窗的窗长、编码窗中第一个第一数据包的序列号、以及编码窗中最后一个第一数据包的序列号中至少两项。
为更好地理解上述步骤S105至上述步骤S107所述的流程,下面以一个示例来说明上述步骤S105至上述步骤S107所示的译码端数据传输流程。
示例性的,参见图16,图16是本申请实施例提供的译码端数据传输流程示意图。当编码端(即第一设备)对N个原数据包进行编码并加编码包包头,得到M个编码包,发送给译码端(即第二设备)。这里假设由于信道衰落、干扰等因素,原数据包Pkt2和Pkt3丢失。相应地,译码端(即第二设备)可以判断出原数据包Pkt2和Pkt3错误被擦除或者丢失,其判断方式可以是译码端(即第二设备)未接收到序列号为2和3的原数据包。这里还假设M=2,P=N。因此,译码端(即第二设备)可以通过接收正确的原数据包和编码包进行联合译码,恢复出丢失的原数据包Pkt2和Pkt3。如图16所示,因为编码端(即第一设备)总共传输的原数据包个数为N,在传输过程中原数据包Pkt2和Pkt3错误被擦除,所以还需要接收正确的至少2个编码包(如图16中的EPkt1和EPkt2)来联合接收正确的N-2个原数据包进行译码。如果编码包包头按照前述实现方式2.1设计,假设编码包包头包括编码窗的窗长和编码窗中起始原数据包的序列号,则译码端(即第二设备)解析每个编码包(如图16中的EPkt1和EPkt2)的编码包包头,获取编码窗的窗长(即Win_L字段,可半静态配置,即不在编码包包头中携带)和编码窗中起始原数据包的序列号、以及Coeff ID字段。如果编码包包头按照前述实现方式2.2设计,包括Block ID字段,则译码端(即第二设备)解析每个编码包(如图16中的EPkt1和EPkt2)的编码包包头,获取Block ID字段以及Coeff ID字段。译码端(即第二设备)再解析每个原数据包获取每个原数据包的序列号,并根据N-2个原数据包的序列号和2个编码包的Coeff ID字段,构造系数因子矩阵(如图16所示的系数因子矩阵,该系数因子矩阵的列从左到右对应原数据包的序列号从小到大排列)。该系数因子矩阵的秩(rank)为N。译码端(即第二设备)再对每个编码包进行去编码包包头的操作,获取每个编码包的编码数据,再根据系数因子矩阵对编码包的编码数据和原数据包进行排序,保证系数因子矩阵与其的对应关系(如图16中接收正确的数据包)。译码端(即第二设备)采用高斯消元等典型译码算法译码,恢复出丢失的原数据包Pkt2和Pkt3。译码端(即第二设备)对译码后的原数据包(即图16中的Pkt2和Pkt3)解析包头获取分割和级联信息,并对接收正确的N-2个原数据包解析包头获取分割和级联信息,去除N个原数据包中每个原数据包的包头,根据每个原数据包的包头中的分割和级联信息,对N个原数据包的数据进行分割和级联的逆向操作,构成一个或多个PDCP PDU/SDU。图16中,Header表示原数据包的包头,Data表示原数据,NC_Header表示编码包包头,EData表示编码数据,Pkt表示原数据包,EPkt表示编码包。
可选的,由于传输过程中的丢包问题,译码端(即第二设备)可能译码成功,也可能译码失败,这里针对译码成功和译码失败这两种情况分别设计反馈消息。针对译码端译码成功(比如,译码端正确恢复出丢失的原数据包)的情况,译码端(即第二设备)可以采用1比特来反馈确认(acknowledge,ACK)信息。针对译码端译码失败(比如,译码端无法正确恢复出丢失的原数据包)的情况,译码端(即第二设备)反馈需要重传的编码包个数、和译码的原数据包范围。
其中,译码端(即第二设备)可通过反馈秩(rank)数,或者需要的rank数(比如,采用6bit来指示,可指示最多64个包)来指示需要重传的编码包个数。rank数,表示译码端(即第二设备)正确接收到的数据包个数,P减去rank数即为需要重传的编码包个数。需要的rank数可用于直接指示需要重传的编码包个数。
一种实现方式中,译码的原数据包范围可通过编码窗的窗长(该变量可半静态配置,可通过8bit进行指示)、编码窗中起始原数据包(即第一数据包)的序列号、编码窗中末尾原数据包(即第一数据包)的序列号中任意两项进行指示。应理解,如果编码窗的窗长是半静态配置的,译码的原数据包范围可通过编码窗中起始原数据包的序列号、编码窗中末尾原数据包的序列号中的任一项联合编码窗的窗长来指示,或者直接通过编码窗中起始原数据包和末尾原数据包的序列号来指示。还应理解,对于编码包的序列号和原数据包的序列号共用一套编号的情况,译码端(即第二设备)在反馈译码的原数据包范围时,将一串连续编号中编码包的序列号剔除,只指示原数据包的序列号。对于编码包的序列号和原数据包的序列号分别用一套编号的情况,译码端(即第二设备)在反馈译码的原数据包范围时,只需关注原数据包的编号范围即可。
另一种实现方式中,如果编码包包头中存在block ID字段,译码的原数据包范围可通过block ID字段进行反馈。此时可以省去编码窗的窗长、编码窗中起始原数据包和末尾原数据包的序列号。
可选的,如果编码包(即第二数据包)与原数据包(即第一数据包)分开独立编号,即编码包的序列号和原数据包的序列号采用两套编号系统,则编码端(即第一设备)仅允许原数据包进入编码器的缓存区(buffer)。此时,译码端(即第二设备)可以维护两个buffer,一个buffer用来存储原数据包,另一个buffer用来存储编码包。译码端(即第二设备)也可以仅维护一个buffer,通过O/C字段对数据包的类型进行区分。
如果编码包(即第二数据包)与原数据包(即第一数据包)联合顺序编号,即编码包的序列号和原数据包的序列号共用一套编号系统,则编码端(即第一设备)仅对原数据包进行编码。
可选的,编码端(即第一设备)既可以是基站,也可以是UE;译码端(即第二设备)既可以是UE,也可以是基站。当编码端(即第一设备)和译码端(即第二设备)中一端是基站,另一端是UE时,基站可在UE的上行传输之前,通过无线资源控制(radio resource control,RRC)消息或者MAC控制元素(MAC Control Element,MAC CE)消息指示UE上行传输的编码策略。该RRC消息或MAC CE消息可以指示UE的编码方式,如bit级编码还是包级编码;或者指示不同的编码方案,如块编码还是卷积网络编码。
可见,本申请实施例提供了原数据包(即第一数据包)的包头和编码包包头的字段设计,并通过译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并且根据原数据包的包头携带的分割和级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。
实施例二
本申请实施例二主要介绍在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下,比如NR协议中,引入网络编码的另一种可能的数据传输方法,该方法只传输编码包,并且介绍PDU/SDU经过分割和/或级联操作后得到的原数据非等大小情况下,如何进行网络编码和数据传输、以及如何设计包头。
应理解,本申请实施例二的整体流程与前述实施例一的整体流程类似,不同之处在于:本申请实施例二对原数据包进一步封装编码包包头,确保传输的所有数据包的大小相等。换句话说,本申请实施例二只传输编码包,不传输原数据包。
参见图17,图17是本申请实施例提供的数据传输方法的第二种示意流程图。如图17所示,该数据传输方法包括但不限于以下步骤:
S201,第一设备获取N个第一数据包,该N个第一数据包的大小相等,每个第一数据包包括包头和数据,每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。
S202,第一设备对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包,该编码包包头包括编码因子字段。
S203,第一设备传输该M个第二数据包,其中,第一数据包是原数据包,第二数据包是编码包。
可选的,本申请实施例中的第一数据包可以称为原数据包,第二数据包可以称为编码包。原数据包可以理解为未经过网络编码的数据包,编码包可以理解为经过网络编码后的数据包。本申请实施例中的数据单元是PDU或SDU。
可选的,第一设备对至少一个数据单元(PDU或SDU)进行分割和/或级联等处理获得N个原数据,再对每个原数据加包头得到第一数据包(即原数据包),其中每个第一数据包的大小都相同。一种实现方式中,为了降低时延,第一设备每得到一个第一数据包(即原数据包)就将其缓存在存储器(这里的存储器是指存储空间,如缓存)中,并对该第一数据包进行编码(比如,将该第一数据包乘以行向量,该行向量中只有一个元素为1,其余元素为0),得到一个编码数据(该编码数据就是该第一数据包),再对该编码数据加编码包包头,得到第二数据包(即编码包)并传输。当该存储器中的第一数据包的个数达到网络编码所需的数据包个数(本申请实施例假设网络编码所需的数据包个数,即数据块大小为N)时,再对该存储器中缓存的N个第一数据包进行网络编码,生成M-N个编码数据。第一设备对该M-N个编码数据中每个编码数据加编码包包头,得到第二数据包(即编码包)。第一设备可以每得到一个第二数据包就传输该第二数据包。其中这M-N个编码数据都融合了N个原数据包的信息。这N个第一数据包的大小相等,这M-N个编码数据的大小也相等,并且任一个编码数据的大小与任一个第一数据包的大小也相等。
另一种实现方式中,第一设备每得到一个第一数据包(即原数据包)就将其缓存在存储器(这里的存储器是指存储空间,如缓存)中。当该存储器中的第一数据包的个数达到网络编码所需的数据包个数(本申请实施例假设网络编码所需的数据包个数,即数据块大小为N)时,再对该存储器中缓存的N个第一数据包进行网络编码,生成M个编码数据,其中这N个第一数据包的大小相等,这M个编码数据的大小也相等,并且任一个编码数据的大小与任一个第一数据包的大小也相等。其中,对N个第一数据包进行网络编码可以理解为:将该N个第一数据包作为N行1列的矩阵,与编码系数矩阵做矩阵乘积。该编码系数矩阵中前N行构成的子矩阵是单位阵,后M-N行构成的子矩阵可以包括码本中的一行或多行,这里的码本可以是范德蒙码本、柯西码本、随机码本等。前N个编码数据中一个编码数据就是一个原数据包,后M-N个编码数据中每个编码数据都融合了N个原数据包的信息。本申请对网络编码的方式不做限定,既可以是卷积网络编码也可以是块网络编码等。第一设备对每个编码数据加编码包包头,得到第二数据包(即编码包)。第一设备可以每得到一个第二数据包就传输该第二数据包。
可选的,第一设备对N个第一数据包进行网络编码并加编码包包头后得到M个第二数据包,可以理解为:一方面,每得到一个第一数据包就直接加编码包包头,获得一个第二数据包,N个第一数据包加编码包包头就得到N个第二数据包。另一方面,将N个第一数据包作为N行1列的矩阵,与编码系数矩阵做矩阵乘积,得到M-N个第二数据包。该编码系数矩阵中的一行是码本中的一行,这里的码本可以是范德蒙码本、柯西码本、随机码本等。其中,N和M均为正整数,且M大于N。可见,第一设备传输的数据包(这里只有编码包)的大小相等。
可选的,上述步骤S201至步骤S203可以由第一设备中单独的NC功能子层实现,也可以由具有NC功能的层实现,具体可参考前述实施例一中的相应描述,此处不再赘述。
可选的,为更好地理解上述步骤S201至上述步骤S203所述的流程,下面以一个示例来说明上述步骤S201至上述步骤S203所示的编码端数据传输流程。
示例性的,参见图18,图18是本申请实施例提供的编码端数据传输流程的第二种示意图。如图18所示,以NC功能子层位于PDCP层和RLC层之间为例。假设NC功能子层依次接收到PDCP PDU1~4,根据NC功能子层中对原数据包的大小要求(其中原数据包的大小可以是半静态配置,也可以是收端(或译码端、或第二设备)提前告知发端(或编码端、或第一设备)的),对PDCP PDU1~4进行分割和/或级联操作,依次得到原数据包Pkt1~Pkt4的数据(如图18中的Data1~Data4)。再对得到的每个数据添加原数据包包头(如图18中的Header),获得原数据包,并将原数据包缓存在NC功能子层的编码器的缓存区(buffer)中等待编码。当buffer中的原数据包达到编码器所需的数据包个数时,假设编码器所需的数据包个数为4,然后将buffer中的4个原数据包进行网络编码并加编码包包头(如图18中的NC_Header),得到编码包并作为NC功能子层的PDU进行发送。因为网络编码所采用的编码系数矩阵中前N行构成的子矩阵是单位阵,后M-N行构成的子矩阵包括码本中的一行或多行,这里的码本可以是范德蒙码本、柯西码本、随机码本等。所以,图18所示的编码数据可分为两类,一类是只包含单个原数据包的信息(比如图18中的Data1~Data4),另一类是包含多个原数据包的信息(比如图18中的EData1和EData2)。应理解,发送编码包时可以只发送得到的部分编码包,也可以发送得到的全部编码包。还应理解,这里分割和/或级联得到的原数据不一定是等大小的,但需要保证每个原数据包(包括数据Data和包头Header)的大小相等,也就是说原数据包的包头Header非等大小。
可选的,上述每个第一数据包(即原数据包)包括包头和数据(即上述原数据)。每个第一数据包的包头包括该第一数据包的数据(即上述原数据)对应的至少一个数据单元(PDU或SDU)的分割和级联信息,换句话说,每个原数据包的包头中包括该原数据包的数据与PDU/SDU的映射关系。或者说,该分割和级联信息用于指示该第一数据包的数据与至少一个数据单元(PDU或SDU)的对应关系。
可选的,每个第二数据包(即编码包)包括编码包包头和编码数据(这里的编码数据是第一数据包经过网络编码后得到)。编码包包头包括编码因子字段(如Coeff ID字段),用于指示码本的行索引,这里的码本可以是范德蒙码本、柯西码本、随机码本等。因为编码系数矩阵中前N行构成的子矩阵是单位阵,所以前N个编码包的编码包包头中携带的CoeffID字段,指示的是该单位阵中的一行,也就是说,前N个编码包的编码包包头中Coeff ID字段指示行向量只有一个元素为1,其他元素为0。应理解,因为本申请实施例中仅传输一种类型的数据包,即只传输编码包,所以可以不通过指示信息来指示传输的数据包是原数据包还是编码包。也就是说,本申请实施例中编码包包头中可以不包括O/C字段。
可选的,虽然每个编码包都包括编码包包头和编码数据,但因为编码系数矩阵中前N行构成的子矩阵是单位阵,后M-N行构成的子矩阵包括码本中的一行或多行(这里的码本可以是范德蒙码本、柯西码本、随机码本等),所以编码数据可以理解为两类,一类是只包含单个原数据包的信息,另一类是融合了多个原数据包的信息。相应地,本申请实施例中的M个编码包(即第二数据包)也可以理解为两类,分别为第一类编码包和第二类编码包。第一类编码包的编码系数子矩阵是单位阵,第二类编码包的编码系数子矩阵是非单位阵,故M个编码包(即第二数据包)包括N个第一类编码包和M-N个第二类编码包。其中,第一类编码包的编码系数子矩阵和第二类编码包的编码系数子矩阵形成一个编码系数矩阵,该编码系数矩阵用于对N个第一数据包进行编码。
可选的,在本申请实施例中,由于第一设备对原数据包(即第一数据包)进一步添加了编码包包头来保证传输的所有数据包的大小一致,所以原数据包(即第一数据包)的包头中可以省去O/C字段、Type字段、Packet ID字段、Block ID字段中的部分或全部,通过其他字段指示分割和级联信息;而编码包包头的实现方式可以参考前述实施例一中实现方式2.1和实现方式2.2,此处不再赘述。换句话说,原数据包(即第一数据包)中包头携带的分割和级联信息可参考前述实施例一中实现方式1.1至实现方式1.4的相应描述,此处不再赘述。
示例性的,参见图19,图19是本申请实施例提供的第一数据包的包头和编码包包头的示意图。如图19所示,编码包包头(图19中的NC_Header)采用实现方式2.2的格式,其包括Coeff ID字段和Block ID字段;可选的包括O/C字段,Type字段以及Packet ID字段。其中,图19中的O/C字段用于表示该O/C字段所在的数据包中的数据是原数据包(即上述第一数据包)还是编码数据。第一数据包的包头(图19中的Header)包括分割和级联信息,该分割和级联信息可由S_start字段和/或S_end字段、一个或多个扩展比特(extension bit,表示为E)字段,以及一个或多个长度(length,L)字段携带。应理解,图19仅是示例,编码包包头还可以采用实现方式2.1的格式,第一数据包中包头包括的分割和级联信息还可以由其他字段携带,具体参考前述实施一中实现方式1.1至实现方式1.4的相应描述。还应理解,图19所示各个字段的含义可参考前述实施例一中的描述,此处不再赘述。其中,图19中的Data表示第一数据包的数据(或原数据),Pkt表示第一数据包(原数据包),EData表示编码数据,EPkt表示编码包。
可见,本申请实施例通过两层头信息(即NC_Header和Header)来封装原数据包,很好地包含了分割和级联信息。另外,由于中间会对一层头信息(即Header)的原数据包进行编码,因此两层头信息的添加是分步完成的,不能一次性完成。
可选的,虽然第一设备传输了M(M>N)个第二数据包(即编码包),但因为干扰、噪声等因素,第一设备传输的数据包不一定都能被第二设备正确接收,也就是说,在传输过程中可能发生丢包的情况。所以,当第二设备接收到至少N个正确且线性无关的数据包时,才能正确译码并恢复出N个第一数据包(即原数据包)。下述步骤S204至步骤S206将详细介绍译码端的数据传输流程。
S204,第二设备获取P个数据包,该P个数据包均是编码包,每个数据包包括编码包包头和编码数据,该编码包包头包括编码因子字段。
S205,第二设备对该P个数据包进行译码,获得译码后的N个第一数据包,该N个第一数据包的大小相等,每个第一数据包包括包头和数据,每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。
S206,第二设备根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将该N个第一数据包的数据还原成至少一个数据单元。
可选的,第二设备接收到P个数据包,或从存储空间(如buffer)中读取到P个数据包,这P个数据包均是编码包。P、N、M均为正整数,P大于或等于N且小于或等于M,即N≤P≤M。可见,当P等于N时,可以减少冗余开销。应理解,第二设备可以一次性接收到P个数据包,将其按序存储到存储空间中;也可以分多次接收,将每次接收到的数据包按序存储在存储空间中。在接收到的数据包个数等于P后,可执行译码操作,即步骤S205。
可选的,第二设备采用编码包的解析方式解析P个数据包中每个数据包的编码包包头,获得编码因子字段(即Coeff ID字段),再利用这P个数据包的编码包包头中编码因子字段的指示构成系数因子矩阵。该系数因子矩阵的秩(rank)等于N。第二设备去除该P个数据包的编码包包头,得到P个编码数据,采用该系数因子矩阵对这P个编码数据进行译码,获得译码后的N个第一数据包。每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息,该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。第二设备根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将这N个第一数据包的数据还原成至少一个数据单元。
可选的,译码端(即第二设备)可能译码成功,也可能译码失败,所以针对译码成功和译码失败这两种情况分别设计反馈消息。该反馈消息的具体实现方式可参考前述实施例一中的相应描述,此处不再赘述。
可选的,由于本申请实施例中只传输编码包,所以本申请实施例可以只对编码包进行编号。此时,只需保证编码包的序列号顺序编号即可,比如编码包的序列号顺序递增。
可选的,基站可通过RRC消息或者MAC CE消息指示UE上行传输的编码策略。该RRC消息或MAC CE消息可以指示UE的编码方式,或者指示不同的编码方案。
可见,本申请实施例通过对原数据包进一步添加编码包包头,来保证编码端(即第一设备)传输的数据包的大小相等。本申请实施例可以在物理层传输块(transport block,TB)大小为数据包整数倍的情况下,有利于分别识别出每个数据包的位置,并有利于通过循环冗余校验(cyclic redundancy check,CRC)判断每个数据包是否正确,如果正确即可向上层递交,最大化网络编码的效率和性能。
实施例三
本申请实施例三主要介绍在NR协议中引入网络编码的又一种可能的数据传输方法,该方法既传输原数据包也传输编码包,并且介绍在PDU/SDU进行级联操作和等大小分割后,如何进行网络编码和数据传输、以及如何设计包头。
应理解,本申请实施例三与前述实施例一和前述实施例二在流程上的区别是:本申请实施例三先将多个PDU/SDU进行级联,然后在等大小分割,得到的原数据(即原数据包的数据)等大小;而前述实施例一和前述实施例二是直接对一个或多个PDU/SDU进行非等大小分割和级联操作,其得到的原数据(即原数据包的数据)不一定等大小。
参见图20,图20是本申请实施例提供的数据传输方法的第三种示意流程图。如图20所示,该数据传输方法包括但不限于以下步骤:
S301,第一设备获取级联数据包,该级联数据包包括级联包包头和级联数据,该级联数据包括多个数据段级联得到的数据,其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分,该多个数据段中除起始数据段和末尾数据段外的每个数据段是一个数据单元,该级联包包头包括该级联数据包括的多个数据单元的级联信息。
S302,第一设备根据该级联数据包生成N个第一数据包,该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等,该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据,每个第一数据包包括包头和数据,每个第一数据包的包头包括该第一数据包的序列号。
S303,第一设备传输该N个第一数据包。
S304,第一设备对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包。
S305,第一设备传输该M个第二数据包。
可选的,本申请实施例中的第一数据包可以称为原数据包,第二数据包可以称为编码包。原数据包可以理解为未经过网络编码的数据包,编码包可以理解为经过网络编码后的数据包。本申请实施例中的数据单元是PDU或SDU。
可选的,第一设备获取级联数据包的方式有两种。一种实现方式中,第一设备对多个PDU/SDU的部分或全部进行级联,并添加级联包包头,保证得到的级联数据包的大小是原数据大小的整数倍,具体可以是N倍,N是正整数。第一设备在得到级联数据包后,对该级联数据包进行等大小分割,分成N份数据,并对该N份数据中的每份数据添加包头,得到第一数据包(即原数据包)。其中,级联包包头既可以位于级联数据的第一个比特之前,也可以位于级联数据的最后一个比特之后。也就是说,级联包包头既可以放在级联数据包的头部,也可以放在级联数据包的尾部。
针对级联包包头位于级联数据的最后一个比特后的情况,也就是说,级联包包头位于最后一个第一数据包中,上述步骤S304还可以为:第一设备每获得一个PDU/SDU,就判断该PDU/SDU的大小是否大于或等于原数据大小。如果该PDU/SDU的大小大于或等于原数据大小,则直接将该PDU/SDU按照原数据大小进行分割,得到一个原数据,再对原数据添加包头,得到第一数据包(即原数据包)。如果该PDU/SDU被分割后的剩余部分大小小于原数据大小,则当第一设备获得下一个PDU/SDU后,将该PDU/SDU被分割后的剩余部分与下一个PDU/SDU进行级联,然后再按照原数据大小进行分割,得到另一个原数据,再对该另一个原数据添加包头,得到第一数据包(即原数据包);依次类推。如果该PDU/SDU被分割后的剩余部分大小大于或等于小于原数据大小,则再次对该PDU/SDU被分割后的剩余部分按照原数据大小进行分割,直到该PDU/SDU经过一次或多次分割后的剩余部分大小小于原数据大小为止。一次分割可以得到一个原数据,对一个原数据添加包头可得到一个第一数据包。如果该PDU/SDU的大小小于原数据大小,则第一设备等待下一个PDU/SDU,在获得下一个PDU/SDU后,将该PDU/SDU与该下一个PDU/SDU进行级联,然后判断级联后的PDU/SDU的大小是否大于或等于原数据大小。如果级联后的PDU/SDU的大小大于或等于原数据大小,则第一设备将该级联后的PDU/SDU按照原数据大小进行分割,得到一个原数据,再对原数据添加包头,得到第一数据包(即原数据包)。如果级联后的PDU/SDU的大小小于原数据大小,则第一设备等待第三个PDU/SDU,然后在获得第三个PDU/SDU后,将该级联后的PDU/SDU与第三个PDU/SDU进行级联,直到经过一次或多次级联后的PDU/SDU的大小大于或等于原数据大小为止。也就是说,第一设备可以将级联和分割操作并行/同时执行。
其中,原数据大小可以半静态配置,或者可以半静态配置编码包大小和N(N是网络编码所需的数据包个数(即数据块大小)或者说计划编码的数据包个数)。原数据包的包头大小固定,则可以基于编码包大小、原数据包的包头大小、以及N,计算出原数据大小(原数据大小=编码包大小-原数据包的包头大小)和级联数据包的大小(级联数据包的大小=N*原数据大小)。
另一种实现方式中,第一设备对多个PDU/SDU的全部进行级联,并添加填充(padding)比特和级联包包头,保证得到的级联数据包的大小是原数据大小的整数倍,具体可以是N倍,N是正整数。换句话说,此实现方式中级联的PDU/SDU是完整的,边界的PDU/SDU不会被分割,而是通过填充比特的方式来补充缺少的bit数,从而构成一个级联数据,并通过对级联数据加级联包包头,获得一个包括级联包包头的级联数据包。也就是说,此种实现方式下的级联数据包括多个PDU/SDU以及填充比特。第一设备在得到级联数据包后,对该级联数据包进行等大小分割,分成N份数据,并对该N份数据中的每份数据添加包头,得到第一数据包(即原数据包)。第一设备在得到级联数据包后,对该级联数据包进行等大小分割,分成N份数据,并对该N份数据中的每份数据添加包头,得到第一数据包(即原数据包)。其中,级联包包头既可以位于级联数据的第一个比特之前,也可以位于级联数据的最后一个比特之后。也就是说,级联包包头既可以放在级联数据包的头部,也可以放在级联数据包的尾部。
针对级联包包头位于级联数据的最后一个比特后的情况,也就是说,级联包包头位于最后一个第一数据包中,上述步骤S304中第一设备也可以将级联和分割操作并行/同时执行。与前述实现方式不同之处在于:当第一设备获得N-1个第一数据包后,在确定第N个原数据时,该第N个原数据中包括一个PDU/SDU的全部或部分、和填充比特、以及级联包包头。也就是说,边界的PDU/SDU不会被分割,而是通过填充比特的方式来补充缺少的bit数。其中,原数据是指原数据包中的数据。
可选的,为了降低时延,第一设备可以每得到一个第一数据包就传输该第一数据包,并将该第一数据包缓存在存储器(这里的存储器是指存储空间,如缓存)中。N份数据添加包头后可得到N个第一数据包,每个第一数据包包括包头和数据,这N个第一数据包的数据大小相等,且这N个第一数据包的包头大小也相等。这N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据,j的取值为区间[1,N]中的整数。也就是说,该级联数据包经过N等分后得到的第1份数据至第N份数据分别添加包头后,得到第1个第一数据包至第N个第一数据包。当该存储器中的第一数据包的个数达到网络编码所需的数据包个数(本申请实施例假设网络编码所需的数据包个数,即数据块大小为N)时,再对该存储器中缓存的N个第一数据包进行网络编码,生成M个编码数据。其中这M个编码数据的大小相等,并且任一个编码数据的大小与任一个第一数据包的大小也相等。第一设备对每个编码数据加编码包包头,得到第二数据包(即编码包),并传输该第二数据包。M个编码数据加编码包包头后可得到M个第二数据包(即编码包)。其中,本申请对网络编码的方式不做限定。N和M均为正整数,且M和N的大小关系不做限定,即M可以小于N,也可以大于N,还可以等于N。
可见,第二数据包(即编码包)比第一数据包(即原数据包)多一个编码包包头,即编码包的编码数据和原数据包大小相等,也就是说,本申请实施例传输的编码包(即第二数据包)和原数据包(即第一数据包)不等大小,一定程度上节约了原数据包的包头开销。
可选的,本申请实施例对上述步骤S303和上述步骤S304的执行顺序不做限定。比如上述步骤S303既可以在上述步骤S304之前执行,也可以在上述步骤S304之后执行,还可以与上述步骤S304同时/并行执行。
可选的,上述级联数据包包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据,其中起始数据段和末尾数据段中的至少一个是一个数据单元(即PDU/SDU)的全部或部分,该多个数据段中除起始数据段和末尾数据段外的每个数据段是一个完整的数据单元(即PDU/SDU)。因为该级联数据对应的多个数据单元中第一个数据单元(如,序列号最小的数据单元)不一定放在该级联数据的起始位置,同理,最后一个数据单元(如,序列号最大的数据单元)也不一定放在该级联数据的末尾位置;具体放置位置,只要发端(或编码端,或第一设备)和收端(或译码端,或第二设备)双方均知晓即可,具体可通过协议预定义,或是,发端知会收端等方式,具体不予限定。所以,起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分,多个数据段中除起始数据段和末尾数据段外的每个数据段是一个完整的数据单元,可以理解为:该级联数据对应的多个数据单元中除序列号最小和序列号最大的数据单元外的每个数据单元都是完整的。序列号最小的数据单元和序列号最大的数据单元是否完整需根据实际情况判断。
可选的,上述级联数据包的级联包包头包括该级联数据包括的多个数据单元(即PDU/SDU)的级联信息。其中,针对级联数据包括多个完整的PDU/SDU以及填充比特的情况,可以在级联包包头中引入一个字段,来指示填充信息(比如填充比特的长度)。如果已知级联包包头的大小、每个完整PDU/SDU的大小、以及原数据大小,网络编码所需的数据包个数(N)半静态配置,则可以推算出填充比特的长度,此时可以不在级联包包头中引入字段来指示填充信息。
可选的,上述步骤S301至步骤S305可以由第一设备中单独的NC功能子层实现,也可以由具有NC功能的层实现,具体可参考前述实施例一中的相应描述,此处不再赘述。
可选的,为更好地理解上述步骤S301至上述步骤S305所述的流程,下面以两个示例来说明上述步骤S301至上述步骤S305所示的编码端数据传输流程。
示例性的,参见图21,图21是本申请实施例提供的编码端数据传输流程的第三种示意图。如图21所示,以NC功能子层位于PDCP层和RLC层之间为例。假设NC功能子层依次接收到PDCP PDU1~5。编码端(即第一设备)根据原数据大小和计划编码的数据包个数(即N),对PDCP PDU1、PDCP PDU2等依次级联,直到满足编码的长度需求(即满足N乘以原数据大小的值减去级联包包头的大小)。这里通过取PDCP PDU5的一部分联合PDCP PDU1~4级联构成级联数据,并通过加级联包包头(如图21中的H),构成级联数据包。从而保证得到的级联数据包的大小为原数据大小的整数倍。编码端(即第一设备)再按照原数据大小对级联数据包进行等大小分割,获得若干个原数据(如图21中的Data1~Data5)。编码端(即第一设备)再对获得的每个原数据添加原数据包包头(如图21中的Header),获得包括包头的原数据包(如图21中的Pkt1~Pkt5);一方面将原数据包作为NC功能子层的NC PDU直接传输至下一层,另一方面将原数据包缓存在NC功能子层的编码器的缓存区(buffer)中。当buffer中的原数据包达到编码器所需的数据包个数时,假设编码器所需的数据包个数为5,然后将buffer中的5个原数据包进行网络编码生成编码数据EData1和EData2。应理解,对5个原数据包进行网络编码生成的编码数据的个数可以小于或等于原数据包的个数,也可以大于原数据包的个数。对每个编码数据添加编码包包头(如图21中的NC_Header),得到编码包(如图21中的EPkt1和EPkt2)并作为NC功能子层的PDU进行发送。应理解,发送编码包时可以只发送得到的部分编码包(比如发送EPkt1,不发送EPkt2),也可以发送得到的全部编码包。
其中,级联包包头既可以位于级联数据的第一个bit之前,也可以位于级联数据的最后一个bit之后。也就是说,级联包包头既可以放在级联数据包的头部,也可以放在级联数据包的尾部。图21示出了级联包包头位于级联数据包头部的情况,相应地,译码端(或收端、或第二设备)可以对一个级联数据包,从左侧包头的第一个比特开始解析。
参见图22,图22是本申请实施例提供的级联数据包中级联包包头的位置示意图。如图22所示,级联数据位于级联包包头之前,译码端(或收端、或第二设备)通过反向解析级联包包头,可以更好地保证实时性。具体地,编码端(即第一设备)根据原数据大小和计划编码的数据包个数(即N),对PDCP PDU1、PDCP PDU2等依次级联,同时更新级联包包头(如图22中的H)中的信息。当级联到最后一个PDCP PDU(如图22中PDCP PDU5)时,结合级联包包头(如图22中的H)的大小,同步确定最后一个级联的PDCP PDU大小(如图22中PDCP PDU5的部分),最后级联构成一个级联数据包。该级联数据包的大小是原数据大小的整数倍。相应地,译码端(或收端、或第二设备)可以对级联数据包的末尾(即级联包包头H)进行解析,其中级联包包头H的数据是从级联数据包最后1bit开始反向解析。
示例性的,参见图23,图23是本申请实施例提供的编码端数据传输流程的第四种示意图。其中,图23与前述图21的主要区别在于级联设计,图23中级联的PDU/SDU是完整的(如图23中级联的PDCP PDU1~4),边界的PDU/SDU不会被分割,而缺少的bit数则通过填充比特的方式来补充(如图23中的P),获得一个级联数据,通过加级联包包头(如图23中的H),获得一个级联数据包,其大小等于原数据大小的整数倍,其倍数可以半静态配置。应理解,图23中编码端得到级联数据包后的操作与前述图21中编码端的操作相同,此处不再赘述。同理,为了不用等待获得所有的PDU/SDU之后才进行级联和分割操作,可以将级联包包头放在级联数据包的末尾,相应地,译码端从最后1bit开始反向解析级联包包头。
参见图24,图24是本申请实施例提供的添加填充比特的级联数据包中级联包包头的位置示意图。如图24所示,级联数据位于级联包包头之前,译码端(或收端、或第二设备)通过反向解析级联包包头,可以更好地保证实时性。具体地,编码端(即第一设备)根据原数据大小和计划编码的数据包个数(即N),对PDCP PDU1、PDCP PDU2等依次级联,同时更新级联包包头(如图24中的H)中的信息。当最后一个PDCP PDU(如图22中PDCP PDU4)级联后,结合级联包包头(如图24中的H)的大小,同步确定填充比特的大小(如图24中P),最后将填充比特添加到最后一个PDCP PDU后,并添加级联包包头(如图24中的H),构成一个级联数据包。该级联数据包的大小是原数据大小的整数倍。相应地,译码端(或收端、或第二设备)可以对级联数据包的末尾(即级联包包头H)进行解析,其中级联包包头H的数据是从级联数据包最后1bit开始反向解析。
可见,本申请实施例对多个PDU/SDU进行级联,并在边界处进行分割或填充比特,以获得一个级联数据,并添加级联包包头得到一个级联数据包,再对级联数据包进行等大小分割得到一定数量的原数据(第一数据包的数据),继而通过加包头获得原数据包,并对原数据包进行编码和加编码包包头后获得编码包,从而在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下,比如现有NR协议中,支持网络编码技术。此外,本申请实施例无需对每个原数据包都添加级联的字段指示,而是通过统一的级联包包头进行级联信息的指示,可以节省包头的开销。
上述内容详细阐述了编码端的数据传输流程,为了保证译码端能够根据正确接收的原数据包和编码包恢复出PDU/SDU,下面将结合编码端的数据传输流程详细介绍级联数据包的级联包包头、第一数据包(即原数据包)的包头、以及第二数据包(即编码包)的编码包包头的实现方式。其中,级联包包头的格式可采用下述实现方式3.1至实现方式3.3中任一种,实现方式3.1至实现方式3.3也可以任一组合形成新的实现方式且所涉及概念或方案相同或相似的部分可以相互参考或组合。
实现方式3.1
可选的,上述级联数据包包括级联包包头和级联数据。该级联包包头包括该级联数据包括的多个数据单元(即PDU/SDU)的级联信息。该级联信息包括:指示该级联数据的起始数据段(即第一个数据段)和/或末尾数据段(即最后一个数据段)对应的数据单元是否被分割的信息,或者指示该级联数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该级联数据包括的数据段的个数(记为Dnum)的信息;以及指示该级联数据包括的每个数据段的长度的信息。应理解,如果级联数据包的总长度可以确定(如半静态配置)、级联包包头的长度也可以确定,则上述级联信息中可以只包括Dnum-1个数据段中每个数据段的长度,而不是包括Dnum个数据段中每个数据段的长度,剩下的一个数据段的长度可通过该级联数据包的总长度、该级联包包头的长度以及Dnum-1个数据段的长度计算得出。
参见图25,图25是本申请实施例提供的级联包包头的格式示意图一。如图25所示,该级联包包头包括:开始分段(Segment_start,S_start)字段和/或结束分段(Segment_end,S_end)字段,分段数(segmentnumber,表示为Seg_N)字段,以及一个或多个长度(length,L)字段。图25中级联包包头的各个字段的含义可参考前述实施例一中相应字段的含义,此处不再赘述。
可见,实现方式3.1中级联包包头内的长度字段更少,可以节省头开销。这是因为因为分割会导致更多的数据段产生,而通常数据单元的个数比数据段的个数更少,所以节省开销;此外,等长的原数据包的包头和数据比变长情况更易处理,复杂度低。
实现方式3.2
可选的,上述级联数据包包括级联包包头和级联数据。该级联包包头包括该级联数据包括的多个数据单元(即PDU/SDU)的级联信息。该级联信息包括:指示该级联数据的起始数据段(即第一个数据段)和/或末尾数据段(即最后一个数据段)对应的数据单元是否被分割的信息,或者指示该级联数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;指示该级联数据包括的第i个数据段是否是该级联数据的最后一个数据段的信息;以及指示该第i个数据段的长度的信息。其中,i是正整数,且i的取值为1至该级联数据包括的数据段总数Dnum,即i为正整数且1≤i≤Dnum
参见图26a,图26a是本申请实施例提供的级联包包头的格式示意图二。参见图26a,该级联包包头包括:开始分段(Segment_start,S_start)字段和/或结束分段(Segment_end,S_end)字段,一个或多个扩展比特(extension bit,表示为E)字段,以及一个或多个长度(length,L)字段。图26a的各个子字段的含义可参考前述实施例一的图10a中相同字段的描述,此处不再赘述。参见图26b,图26b是本申请实施例提供的级联包包头的格式示意图三。参见图26b,该级联包包头包括:分段信息(segmentinformation,SI)字段,一个或多个扩展比特(extension bit,表示为E)字段,以及一个或多个长度(length,L)字段。其中,图26b的各个子字段的含义可参考前述实施例一的图10b中相同字段的描述,此处不再赘述。
实现方式3.3
可选的,上述级联数据包包括级联包包头和级联数据。该级联包包头包括该级联数据包括的多个数据单元(即PDU/SDU)的级联信息。该级联信息包括:指示该级联数据中起始数据段是否是最后一个数据段(或者说,该级联数据中第一个数据段后是否存在下一个数据段)以及该起始数据段对应的数据单元是否完整(完整即为未被分割,不完整即为被分割)的信息;指示该级联数据包括的第i个数据段是否是该级联数据的最后一个数据段(或者说,该级联数据包括的第i个数据段后是否存在下一个数据段)的信息;以及指示第i个数据段的长度的信息。
参见图27,图27是本申请实施例提供的级联包包头的格式示意图四。如图27所示,该级联包包头包括:扩展比特0(extension bit 0,表示为E0)字段,一个或多个扩展比特(extension bit,表示为E)字段,以及一个或多个长度(length,L)字段。其中,图27的各个子字段的含义可参考前述实施例一的图12中相应字段的描述,此处不再赘述。
可见,实现方式3.2和实现方式3.3在级联包包头中为每一个数据段都设置1bit的扩展比特字段来指示该数据段是否是最后一个数据段,并为每一个数据段设置一个长度字段来指示其长度,有利于译码端根据级联包包头的指示对级联数据进行分割,以恢复出多个PDU/SDU。
可选的,上述每个第一数据包包括包头和数据。每个第一数据包的包头包括该第一数据包的序列号,可选的还包括第一指示信息。该第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包。其中,该第一指示信息在包头中的表现形式可以是O/C字段,应理解,第一指示信息也可以表现为其他名称的字段,本申请实施例对字段的名称不做限定。第一数据包的序列号可以由Packet ID字段来指示。应理解,第一数据包的序列号可以按照从小到大顺序编号。也就是说,第一设备生成的第一个第一数据包的序列号为1,第二个第一数据包的序列号为2,以此类推。可选的,每个第一数据包的包头还可以包括Type字段和Block ID字段中的一项或多项。Type字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围,比如1比特可以表示2种长度的SN(或Packet ID字段长度);2比特可以表示4种长度的SN(或Packet ID字段长度)。Block ID字段用于指示数据块的标识,这个数据块包括该Block ID字段所在的第一数据包。
参见图28,图28是本申请实施例提供的第一数据包的包头格式示意图六。如图28所示,第一数据包的包头包括:Packet ID字段,可选的包括O/C字段,Type字段和Block ID字段。其中,第一数据包的包头中各个字段的含义可参考前述实施例一中相应字段的含义,此处不再赘述。
可选的,每个第二数据包包括编码包包头和编码数据(这里的编码数据是第一数据包经过网络编码后得到)。每个第二数据包的编码包包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息、以及编码因子字段(如Coeff ID字段),可选的还包括第二指示信息。第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。该第二指示信息在编码包包头中的表现形式可以是O/C字段,应理解,第二指示信息也可以表现为其他名称的字段,本申请实施例对字段的名称不做限定。该用于指示编码得到该第二数据包的N个第一数据包的标识信息是Block ID字段,或者包括以下至少两项:编码窗的窗长、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。还应理解,如果编码窗的窗长是半静态配置的,则用于指示编码得到该第二数据包的N个第一数据包的标识信息可以包括编码窗中第一个第一数据包的序列号、和编码窗中最后一个第一数据包的序列号中的至少一项即可。编码因子字段(如Coeff ID字段)的长度为8bit,用于指示255行码本的行索引,这里的码本可以是范德蒙码本、柯西码本、随机码本等。
可选的,上述编码包包头还可以包括Type字段和Packet ID字段中的一项或多项。编码包包头中的Packet ID字段用于指示该Packet ID字段所在第二数据包(编码包)的SN。其中,编码包和原数据包的序列号的实现方式可参考前述实施例一中相应描述,此处不再赘述。具体地,编码包包头的实现方式也可参考前述实施例一中实现方式2.1和实现方式2.2的相应描述,此处不再赘述。
可选的,虽然第一设备分别传输了N个第一数据包(即原数据包)和M个第二数据包(即编码包),但因为干扰、噪声等因素,第一设备传输的数据包不一定都能被第二设备正确接收,也就是说,在传输过程中可能发生丢包的情况。所以,当第二设备接收到至少N个正确且线性无关的数据包时,才能正确译码并恢复出N个第一数据包。
下面详细介绍译码端的数据传输流程。
S306,第二设备获取P个数据包,该P个数据包中包括K个第一数据包和N-K个第二数据包。
S307,第二设备对该P个数据包进行译码,获得译码后的N个第一数据包。
S308,第二设备按照该N个第一数据包的序列号大小顺序,将该N个第一数据包的数据还原成一个级联数据包,并根据该级联包包头包括的形成该级联数据的多个数据单元,即该级联数据包括的多个数据单元,的级联信息,将该级联数据分割成多个数据单元。
可选的,第二设备接收到P个数据包,或从存储空间(如buffer)中读取到P个数据包,P是正整数,且大于或等于N。可见,当P等于N时,可以减少冗余开销。应理解,第二设备可以一次性接收到P个数据包,将其按序存储在存储空间中;也可以分多次接收,将每次接收到的数据包按序存储在存储空间中。在接收到的数据包个数等于P后,可执行译码操作,即步骤S307。
可选的,第二设备判断接收到的数据包是编码包还是原数据包的方式参考前述实施例一中的相应描述,此处不再赘述。如果某个数据包是第一数据包(即原数据包),则第二设备采用原数据包的解析方式解析该数据包的包头,获得该数据包的序列号。如果某个数据包是第二数据包(即编码包),则第二设备采用编码包的解析方式解析该数据包的编码包包头,获得编码因子字段(即Coeff ID字段)和用于指示编码得到该数据包的N个第一数据包的标识信息。其中,该P个数据包中包括K个第一数据包和P-K个第二数据包。每个第一数据包包括包头和数据,每个第二数据包包括编码包包头和编码数据。K和P均为正整数,且K小于或等于P。第二设备按照该K个第一数据包的序列号从小到大排序、该P-K个第二数据包的包头中编码因子字段的指示、以及任一个第二数据包的包头中用于指示编码得到该第二数据包的N个第一数据包的标识信息,构成系数因子矩阵。该系数因子矩阵的秩(rank)等于N。第二设备采用该系数因子矩阵对P-K个第二数据包的编码数据和K个第一数据包进行联合译码,获得译码后的N-K个第一数据包。应理解,译码得到的N-K个第一数据包和K个第一数据包加起来就是N个第一数据包。第二设备按照该N个第一数据包的序列号大小顺序,将该N个第一数据包的数据还原成一个级联数据包。该级联数据包中包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据,其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分,该多个数据段中除起始数据段和末尾数据段外的每个数据段是一个数据单元。该级联包包头包括该级联数据包括的多个数据单元的级联信息。第二设备根据该级联包包头中的级联信息,将该级联数据分割成多个数据单元。应理解,由于级联数据中可能有部分数据段不是完整的数据单元,所以仅对该级联数据进行分割后得到的多个数据单元中也可能存在一个完整数据单元的部分,此时按照级联包包头的指示(比如,S_start字段和S_end字段的指示),将分割得到的不完整的数据单元与其他级联数据中不完整的数据单元进行级联,以恢复出完整的数据单元。
其中,K小于或等于N。用于指示编码得到该数据包的N个第一数据包的标识信息是Block ID字段,或包括编码窗的窗长、编码窗中第一个第一数据包的序列号、以及编码窗中最后一个第一数据包的序列号中至少两项。
可选的,译码端(即第二设备)可能译码成功,也可能译码失败,所以针对译码成功和译码失败这两种情况分别设计反馈消息。该反馈消息的具体实现方式可参考前述实施例一中的相应描述,此处不再赘述。
可选的,针对原数据包和编码包的分开独立编号方式和联合顺序编号方式,其在编码端(即第一设备)和译码端(即第二设备)的存储参考前述实施例一中的相应描述,此处不再赘述。
可选的,基站可通过RRC消息或者MAC CE消息指示UE上行传输的编码策略。该RRC消息或MAC CE消息可以指示UE的编码方式,或者指示不同的编码方案。
可见,本申请实施例提供了级联包包头、原数据包(即第一数据包)的包头、以及编码包包头的字段设计,并通过译码流程和操作,以期译码端接收到的数据包满秩(rank=N)的情况下能够正确译码出原数据包,并根据原数据包的序列号大小进行级联得到级联数据包,再根据级联数据包中级联包包头携带的级联信息,从而恢复出PDU/SDU,进而可以减少NR系统的性能损失。此外,本申请实施例仅在级联包包头中携带级联信息,可以节省包头的开销。
作为一个可选实施例,本申请实施例三还可以结合前述实施例二形成一个新的实施例。在前述实施例三的基础上结合前述实施例二得到的技术方案与前述实施例三所述技术方案的区别在于:(1)前述实施例三结合前述实施例二所得技术方案可以不传输原数据包,只传输编码包;(2)前述实施例三结合前述实施例二所得技术方案对原数据包进一步封装编码包包头,确保传输的所有数据包的大小相等。
具体地,前述实施例三的结合前述实施例二所得技术方案包括但不限于以下步骤:
S1,第一设备获取级联数据包,该级联数据包包括级联包包头和级联数据,该级联数据包括多个数据段级联得到的数据,其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分,该多个数据段中除起始数据段和末尾数据段外的每个数据段是一个数据单元,该级联包包头包括级联数据包括的多个数据单元的级联信息。其中,级联包包头的设计参考前述实施例三中相应的描述,此处不再赘述。
S2,第一设备根据该级联数据包生成N个第一数据包,每个第一数据包包括包头和数据,该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等,该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据。j的取值为区间[1,N]中的整数。其中,第一数据包的包头中包括该第一数据包的序列号。
S3,第一设备对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包,M大于N,N和M均为正整数,该编码包包头包括编码因子字段。此时,编码包包头的设计参考前述实施例二中相应描述,此处不再赘述。
S4,第一设备传输该M个第二数据包,其中,第一数据包是原数据包,第二数据包是编码包。
S5,第二设备获取P个数据包,该P个数据包均是编码包,每个数据包包括编码包包头和编码数据,该编码包包头包括编码因子字段,P为正整数。
S6,第二设备对该P个数据包进行译码,获得译码后的N个第一数据包。其中,译码方式参考前述实施例二中步骤S205的描述,此处不再赘述。
S7,第二设备按照该N个第一数据包的序列号大小顺序,将该N个第一数据包的数据还原成一个级联数据包,并根据该级联包包头包括的形成该级联数据的多个数据单元的级联信息,将该级联数据分割成多个数据单元。其中,步骤S7参考前述实施例三中步骤S308的描述,此处不再赘述。
可见,本申请实施例通过对原数据包进一步添加编码包包头,来保证编码端(即第一设备)传输的数据包的大小相等。本申请实施例可以在物理层传输块(TB)大小为数据包整数倍的情况下,有利于分别识别出每个数据包的位置,并有利于通过CRC判断每个数据包是否正确,如果正确即可向上层递交,最大化网络编码的效率和性能。此外,本申请实施例无需对每个原数据包都添加级联的字段指示,而是通过统一的级联包包头进行级联信息的指示,可以节省包头的开销。
实施例四
本申请实施例四主要介绍在NR协议中引入网络编码的再又一种可能的数据传输方法,该方法既传输原数据包也传输编码包,并且介绍仅对PDU/SDU进行分割操作后,如何进行网络编码和数据传输、以及如何设计包头。
应理解,本申请实施例四与前述实施例一至前述实施例三在流程上的区别是:本申请实施例四只对PDU/SDU进行分割,不级联;而前述实施例一至前述实施例三都可以对PDU/SDU进行分割和级联两个操作。
参见图29,图29是本申请实施例提供的数据传输方法的第四种示意流程图。如图29所示,该数据传输方法包括但不限于以下步骤:
S401,第一设备获取N个第一数据包,该N个第一数据包的大小不完全相等,每个第一数据包包括包头和数据,每个第一数据包的包头中包括该第一数据包的数据对应的数据单元的分割信息,每个第一数据包的包头还包括数据包标识字段,该数据包标识字段用于指示该第一数据包的序列号。
S402,第一设备传输该N个第一数据包。
S403,第一设备对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包,该N个第一数据包对应用于编码的Q个等效原数据包,该Q个等效原数据包的大小相等,每个第一数据包的包头还包括编码因子字段或偏移字段,该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。
S404,第一设备传输该M个第二数据包。
可选的,本申请实施例中的第一数据包可以称为原数据包,第二数据包可以称为编码包。原数据包可以理解为未经过网络编码的数据包,编码包可以理解为经过网络编码后的数据包。本申请实施例中的数据单元是PDU或SDU。
可选的,第一设备按照预设大小对至少一个数据单元(PDU或SDU)进行分割,得到N个原数据(原数据指原数据包中的数据)。如果某个数据单元的大小小于或等于该预设大小,则无需对其进行分割,直接作为一个原数据。如果某个数据单元经过一次或多次分割后剩余部分的大小小于该预设大小,则将该剩余部分作为一个原数据,并从下一个数据单元(PDU或SDU)中分割出一部分(该部分的大小也小于该预设大小),作为另一个原数据,使这两个原数据分别加上包头后的大小之和等于该预设大小与包头大小之和。因此,该N个原数据中有部分原数据是等大小的,另外部分原数据不等大小。第一设备再对每个原数据加包头得到第一数据包(即原数据包)。N个原数据分别加包头得到N个第一数据包,由于这N个原数据不等大小,所以这N个第一数据包也不等大小。为了降低时延,第一设备可以每得到一个第一数据包就传输该第一数据包,并将该第一数据包缓存在存储器(这里的存储器是指存储空间,也可以是缓存)中。当该存储器中第一数据包对应的等效原数据包的个数达到网络编码所需的数据包个数(本申请实施例假设网络编码所需的数据包个数,即数据块大小,为Q)时,再对该存储器中缓存的N个第一数据包进行网络编码,生成M个编码数据。其中,第一设备在对N个第一数据包进行网络编码时,将这N个第一数据包形成Q个等大小的等效原数据包,并对该Q个等效原数据包进行网络编码。一个等效原数据包包括一个或多个第一数据包。如果某个第一数据包的大小小于该预设大小与包头大小之和,则可以将相邻两个或多个小于该预设大小的第一数据包形成一个等效原数据包,一个等效数据包的大小等于该预设大小与包头大小之和。应理解,一个等效数据包中可能包括多个第一数据包的包头。第一设备对每个编码数据加编码包包头,得到第二数据包(即编码包),并传输该第二数据包。M个编码数据加编码包包头后可得到M个第二数据包(即编码包)。其中,本申请对网络编码的方式不做限定。N、M、Q均为正整数,Q小于或等于N,M和N的大小关系不做限定,即M可以小于N,也可以大于N,还可以等于N。
可见,第二数据包(即编码包)比等效原数据包多一个编码包包头,即编码包的编码数据和等效原数据包大小相等,也就是说,本申请实施例传输的编码包(第二数据包)和原数据包(第一数据包)不等大小,并且N个原数据包也不等大小,一定程度上节约了原数据包的包头开销。
可选的,本申请实施例对上述步骤S402和上述步骤S403的执行顺序不做限定。比如上述步骤S402既可以在上述步骤S403之前执行,也可以在上述步骤S403之后执行,还可以与上述步骤S403同时/并行执行。
可选的,上述步骤S401至步骤S404可以由第一设备中单独的NC功能子层实现,也可以由具有NC功能的层实现,具体可参考前述实施例一中的相应描述,此处不再赘述。
可选的,为更好地理解上述步骤S401至上述步骤S404所述的流程,下面以一个示例来说明上述步骤S401至上述步骤S404所示的编码端数据传输流程。
示例性的,参见图30,图30是本申请实施例提供的编码端数据传输流程的第五种示意图。如图30所示,以NC功能子层位于PDCP层和RLC层之间为例。假设NC功能子层依次接收到PDCP PDU1和PDCP PDU2。编码端(即第一设备)按照预设大小对PDCP PDU1和PDCP PDU2进行分割,得到6个原数据(如图30中的Data1~6)。其中,Data1~3以及Data6的大小相等,Data4和Data5的大小不等,但Data4和Data5分别加上包头(即图30中的Header)后与Data1~3和Data6中任一个加包头后的大小相等。Data4是PDCP PDU1经过前3次等大小分割后剩余的部分,Data5是PDCP PDU2的头部。再对每个原数据添加包头(即图30中的Header),获得包括包头的原数据包;一方面将原数据包作为NC功能子层的NC PDU直接传输至下一层,另一方面将原数据包缓存在NC功能子层的编码器的缓存区(buffer)中。6个原数据分别加包头得到6个原数据包(如图30中的Pkt1~6),这6个原数据包对应用于编码的5个等大小的等效原数据包。当buffer中缓存的原数据包对应的等效原数据包的个数达到编码器所需的数据包个数时(这里假设编码器所需的数据包个数为5),将buffer中的6个原数据包转换成5个等大小的等效原数据包后,对这5个等大小的等效原数据包进行网络编码,生成编码数据EData1和EData2。应理解,对这5个等效原数据包进行网络编码生成的编码数据的个数可以小于等效原数据包的个数,也可以大于等效原数据包的个数。最后对每个编码数据添加编码包包头(如图30中的NC_Header),得到包括包头的编码包(如图30中的EPkt1和EPkt2)并作为NC功能子层的PDU进行发送。应理解,发送编码包时可以只发送得到的部分编码包(比如发送EPkt1,不发送EPkt2),也可以发送得到的全部编码包。
可选的,上述每个第一数据包(即原数据包)包括包头和数据(即上述原数据)。每个第一数据包的包头包括该第一数据包的数据对应的数据单元(PDU或SDU)的分割信息。其中,一个第一数据包的数据对应一个PDU/SDU的全部或部分。该分割信息包括:第一数据包的数据在该数据对应的数据单元中的位置信息,和指示该第一数据包的数据的长度的信息。
可选的,每个第一数据包的包头还包括Packet ID字段,可选的还可以包括第一指示信息。第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包,该第一指示信息在包头中的表现形式可以是O/C字段。数据包标识字段用于指示第一数据包的序列号。应理解,第一数据包的序列号可以按照从小到大顺序编号,或顺序递增。也就是说,第一设备获取到的第一个第一数据包的序列号为1,第二个第一数据包的序列号为2,以此类推。每个第一数据包的包头还包括编码因子字段(如Coeff ID字段)或偏移(offset)字段,该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。可选的,每个第一数据包的包头还可以包括Type字段和Block ID字段中的一项或多项。Type字段用于指示数据包标识字段的长度,或者用于指示数据包的序列号的范围。Block ID字段用于指示数据块的标识,这个数据块包括该Block ID字段所在的第一数据包。
参见图31a,图31a是本申请实施例提供的第一数据包的包头格式示意图七。如图31a所示,该第一数据包的包头(Header)包括:Packet ID字段,分段信息(segmentinformation,SI)字段,长度(Length,L)字段,以及Coeff ID字段;可选的包括O/C字段,Type字段和Block ID字段。参见图31b,图31b是本申请实施例提供的第一数据包的包头格式示意图八。如图31b所示,该第一数据包的包头包括:Packet ID字段,SI字段,长度(Length,L)字段,以及偏移(offset)字段;可选的包括O/C字段,Type字段和Block ID字段。应理解,第一数据包的包头中O/C字段设置为第一值,用于指示该第一数据包是原数据包。第一值可以是1或0。
其中,原数据包的包头中Coeff ID字段指示的行向量中只有一个元素等于1,其他元素均为0。如果多个原数据包对应一个等效原数据包,则该多个原数据包的包头中CoeffID字段的值相同。图31b中offset字段的长度可以为8bit,用于表示原数据包的序列号相对于等效原数据包的序列号的偏移数。图31a和图31b中SI字段的长度为2bit,用于表示第一数据包的数据在该数据对应的数据单元中的位置信息,其取值和含义如下述表1所示。图31a和图31b中其他字段的含义,可参考前述实施例一中相同字段的含义。
表1
Figure BDA0003049146700000591
可选的,上述每个第二数据包(即编码包)包括编码包包头和编码数据(这里的编码数据是第一数据包经过网络编码后得到)。每个第二数据包的编码包包头包括用于指示编码得到该第二数据包的Q个等效原数据包的标识信息、以及编码因子字段(如Coeff ID字段),可选的还可以包括第二指示信息。第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。用于指示编码得到该第二数据包的Q个等效原数据包的标识信息是BlockID字段,或者包括以下至少两项:指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。应理解,如果编码窗的窗长是半静态配置的,则用于指示编码得到该第二数据包的N个第一数据包的标识信息包括编码窗中第一个第一数据包的序列号、和编码窗中最后一个第一数据包的序列号中的至少一项即可。编码包包头中的编码因子字段(如Coeff ID字段)的长度为8bit,用于指示255行码本的行索引,这里的码本可以是范德蒙码本、柯西码本、随机码本等。
可选的,上述编码包包头还可以包括Type字段和Packet ID字段中的一项或多项。编码包包头中的Packet ID字段用于指示该Packet ID字段所在第二数据包(编码包)的SN。其中,编码包和原数据包的序列号的实现方式可参考前述实施例一中相应描述,此处不再赘述。具体地,编码包包头的实现方式也可参考前述实施例一中实现方式2.1和实现方式2.2的相应描述,此处不再赘述。
可选的,虽然第一设备分别传输了N个第一数据包(即原数据包)和M个第二数据包(即编码包),但因为干扰、噪声等因素,第一设备传输的数据包不一定都能被第二设备正确接收,也就是说,在传输过程中可能发生丢包的情况。所以,当第二设备接收到至少N个正确且线性无关的数据包时,才能正确译码并恢复出N个第一数据包。下述步骤S405至步骤S407将详细介绍译码端的数据传输流程。
S405,第二设备获取P个数据包,该P个数据包中包括K个第一数据包和P-K个第二数据包。
S406,第二设备对该P个数据包进行译码,获得译码后的N个第一数据包。
S407,第二设备根据该N个第一数据包中每个第一数据包的包头包括的分割信息,将该N个第一数据包的数据还原成一个或多个数据单元。
可选的,第二设备接收到P个数据包,或从存储空间(如buffer)中读取到P个数据包,P是正整数,且大于或等于N。可见,当P等于N时,可以减少冗余开销。应理解,第二设备可以一次性接收到P个数据包,将其按序存储在存储空间中;也可以分多次接收,将每次接收到的数据包按序存储在存储空间中。在接收到的数据包个数等于P后,可执行译码操作,即步骤S406。
可选的,第二设备判断接收到的数据包是编码包还是原数据包的方式参考前述实施例一中的相应描述,此处不再赘述。
一种实现方式中,针对第一数据包的包头包括编码因子字段(即Coeff ID字段)的情况(即前述图31a所示包头格式),如果某个数据包是第一数据包(即原数据包),则第二设备采用原数据包的解析方式解析该数据包的包头获得编码因子字段(即Coeff ID字段)。如果某个数据包是第二数据包(即编码包),则第二设备采用编码包的解析方式解析该数据包的编码包包头,获得编码因子字段(即Coeff ID字段)和用于指示编码得到该数据包的Q个等效原数据包的标识信息。其中,该P个数据包中包括K个第一数据包和P-K个第二数据包。Q个等效原数据包的大小相等。如果多个原数据包对应一个等效原数据包,则该多个原数据包的包头中Coeff ID字段的值相同。对于这P个数据包(或K个第一数据包)中包长小于上述预设大小与原数据包的包头大小之和的数据包,判断这些数据包中编码因子字段的值是否相同,将编码因子字段的值相同的数据包进行等效级联(应理解,这里的等效级联并不是指真正的级联,而是将编码因子字段的值相同的多个数据包作为一个完整数据包,或者说,将编码因子字段的值相同的多个数据包与等效的第三数据包建立映射关系),得到等效的第三数据包。其中,能够等效级联成一个第三数据包的原数据包的序列号连续。如果该等效的第三数据包的长度小于上述预设大小与原数据包的包头大小之和,则认为该等效的第三数据包不完整,则丢弃等效级联成该第三数据包的所有第一数据包(即原数据包)。如果该等效的第三数据包的长度等于上述预设大小与原数据包的包头大小之和,则认为该等效的第三数据包完整,即正确接收。应理解,如果该等效的第三数据包的长度等于上述预设大小与原数据包的包头大小之和,则该等效的第三数据包就是等效原数据包。
另一种实现方式,针对第一数据包的包头包括偏移字段(即offset字段)的情况(即前述图31b所示包头格式),如果某个数据包是第一数据包(即原数据包),则第二设备采用原数据包的解析方式解析该数据包的包头该数据包的序列号和偏移字段。如果某个数据包是第二数据包(即编码包),则第二设备采用编码包的解析方式解析该数据包的编码包包头,获得编码因子字段(即Coeff ID字段)和用于指示编码得到该数据包的Q个等效原数据包的标识信息。其中,该P个数据包中包括K个第一数据包和P-K个第二数据包。对于这P个数据包(或K个第一数据包)中包长小于上述预设大小与原数据包的包头大小之和的数据包,判断这些数据包的序列号分别减去各自包头中offset字段的值所得差值是否相等,将差值相等的数据包进行等效级联(应理解,这里的等效级联并不是指真正的级联,而是将编码因子字段的值相同的多个数据包作为一个完整数据包,或者说,将编码因子字段的值相同的多个数据包与等效的第三数据包建立映射关系),得到等效的第三数据包。其中,能够等效级联成一个第三数据包的原数据包的序列号连续。如果该等效的第三数据包的长度小于上述预设大小与原数据包的包头大小之和,则认为该等效的第三数据包不完整,则丢弃等效级联成该第三数据包的所有第一数据包(即原数据包)。如果该等效的第三数据包的长度等于上述预设大小与原数据包的包头大小之和,则认为该等效的第三数据包完整,即正确接收。应理解,如果该等效的第三数据包的长度等于上述预设大小与原数据包的包头大小之和,则该等效的第三数据包就是等效原数据包。
可选的,假设K个第一数据包(即原数据包)等效级联成(或对应)T个等效原数据包,T小于或等于K且T为正整数。当第二设备正确接收到的等效原数据包和编码包(即第二数据包)的总个数(T+P-K)大于或等于N时,第二设备按照该T个等效原数据包的序列号从小到大排序、该P-K个第二数据包的编码包包头中编码因子字段的指示、以及任一个第二数据包的包头中用于指示编码得到该第二数据包的Q个等效原数据包的标识信息构成系数因子矩阵。该系数因子矩阵的秩(rank)等于N。第二设备采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包(或T个等效原数据包)进行联合译码,获得译码后的N个第一数据包。第二设备获得译码后的N个第一数据包(即原数据包)后,根据该N个第一数据包中每个第一数据包的包头包括的分割信息,将该N个第一数据包的数据还原成一个或多个数据单元。其中,该N个第一数据包对应用于编码的Q个等效原数据包,该Q个等效原数据包的大小相等。每个第一数据包包括包头和数据,每个第二数据包包括编码包包头和编码数据。K、P、以及Q均为正整数,K小于或等于P,N≤P≤N+M,Q小于或等于N。
为更好地理解上述步骤S406的译码流程,下面以一个示例来举例说明。
示例性的,参见图32,图32是本申请实施例提供的一种构造系数因子矩阵的示意图。假设序列号为3和4的原数据包(即Pkt3和Pkt4)对应一个等效原数据包,序列号为5和6的原数据包(即Pkt5和Pkt6)对应另一等效原数据包。这里假设由于信道衰落、干扰等因素,原数据包Pkt2和Pkt3丢失。一种实现方式中,Pkt3和Pkt4中Coeff ID字段的值相同,Pkt5和Pkt6中Coeff ID字段的值相同,Pkt3和Pkt5中Coeff ID字段的值不相同。数据块大小,即用于编码的等效原数据包个数Q为半静态配置。由于原数据包Pkt3丢失,而译码端(即第二设备)接收到的Pkt4的包长又小于上述预设大小与原数据包的包头大小之和,并且接收到的原数据包中没有与Pkt4的Coeff ID字段的值相同的原数据包,所以译码端(即第二设备)丢弃Pkt4,即译码端(即第二设备)认为Pkt3和Pkt4都丢失了,即Pkt3和Pkt4对应的等效原数据包丢失。也就是说,译码端(即第二设备)在构造系数因子矩阵时忽略Pkt4中携带的CoeffID字段。由于译码端(即第二设备)接收到的Pkt5和Pkt6的Coeff ID字段的值相同,且Pkt5和Pkt6的长度之和等于上述预设大小与原数据包的包头大小之和,则译码端(即第二设备)认为正确接收到Pkt5和Pkt6,或者认为Pkt5和Pkt6对应的等效原数据包未丢失。也就是说,译码端(即第二设备)在构造系数因子矩阵时将Pkt5和Pkt6视为一个完整数据包,只提取其中一个的Coeff ID字段。该系数因子矩阵的秩(rank)为Q。其中,因为图33中丢失了2个等效原数据包(即序列号为2和3的等效原数据包),则需要至少2个编码包来联合译码。
另一种实现方式中,数据块大小,即用于编码的等效原数据包个数Q为半静态配置。如图33所示,译码端(即第二设备)接收到的Pkt5中offset字段的值为1,Pkt6中offset字段的值为2。由于Pkt5的序列号(5)减去自己包头中offset字段的值(1)所得差值为4(5-1=4),Pkt6的序列号(6)减去自己包头中offset字段的值(2)所得差值为4(6-2=4),则译码端(即第二设备)认为正确接收到Pkt5和Pkt6,且Pkt5和Pkt6等效级联成一个序列号为4的等效原数据包。因为原数据包Pkt3丢失,而译码端(即第二设备)接收到的Pkt4的包长又小于上述预设大小与原数据包的包头大小之和,并且接收到的原数据包中没有原数据包的序列号减去自己包头中offset字段的值所得的差值与Pkt4的序列号(4)减去自己包头中offset字段的值(1)所得差值(4-1=3)相同,所以译码端(即第二设备)丢弃Pkt4,即译码端(即第二设备)认为Pkt3和Pkt4都丢失了,即Pkt3和Pkt4对应的等效原数据包(该等效原数据包的序列号为3)丢失。译码端(即第二设备)按照等效原数据包的序列号和编码包的Coeff ID字段构造系数因子矩阵(如图33所示的系数因子矩阵,该系数因子矩阵的列从左到右对应等效原数据包的序列号从小到大排列)。该系数因子矩阵的秩(rank)为Q。其中,因为图33中丢失了2个等效原数据包(即序列号为2和3的等效原数据包),则需要至少2个编码包来联合译码。
可选的,译码端(即第二设备)可能译码成功,也可能译码失败,所以针对译码成功和译码失败这两种情况分别设计反馈消息。该反馈消息的具体实现方式可参考前述实施例一中的相应描述,此处不再赘述。
可选的,针对原数据包和编码包的分开独立编号方式和联合顺序编号方式,其在编码端(即第一设备)和译码端(即第二设备)的存储参考前述实施例一中的相应描述,此处不再赘述。
可选的,基站可通过RRC消息或者MAC CE消息指示UE上行传输的编码策略。该RRC消息或MAC CE消息可以指示UE的编码方式,或者指示不同的编码方案。
可见,本申请实施例提供一种纯分割场景下支持网络编码的数据传输方法,不仅在不依赖于SDU或PDU大小,即不同SDU或PDU大小可以相同,也可以不同,的场景下可以应用,比如可以兼容NR协议,还能在多个原数据包丢失的情况下也能恢复出PDU或SDU,减少性能损失。
上述内容详细阐述了本申请的方法,为便于更好地实施本申请实施例的上述方案,本申请实施例还提供了相应的装置或设备。
本申请实施例可以根据上述方法示例对第一设备和第二设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。下面将结合图33至图37详细描述本申请实施例的数据传输装置。
在采用集成的单元的情况下,参见图33,图33是本申请实施例提供的数据传输装置1的一结构示意图。该数据传输装置1可以为第一设备或者可以设置于第一设备中的芯片或电路。如图33所示,该数据传输装置1包括:获取模块11、传输模块12、以及编码模块13。
第一种设计中,获取模块11,用于获取N个第一数据包;传输模块12,用于传输该获取模块11获取到的N个第一数据包;编码模块13,用于对该获取模块11获取到的N个第一数据包进行编码并加编码包包头后得到M个第二数据包;该传输模块12,还用于传输该M个第二数据包。其中,该N个第一数据包的大小相等。每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息。该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。该每个第一数据包的包头还包括数据包标识字段。该数据包标识字段用于指示该第一数据包的序列号。其中,第一数据包是原数据包,第二数据包是编码包。N和M均为正整数。
应理解,第一种设计中该数据传输装置1可对应执行前述实施例一,并且该数据传输装置1中的各个单元的上述操作或功能分别为了实现前述实施例一中第一设备的相应操作,其技术效果参见前述实施例一中的技术效果,为了简洁,在此不再赘述。
第二种设计中,获取模块11,用于获取N个第一数据包;编码模块13,用于对该获取模块11获取到的N个第一数据包进行编码并加编码包包头后得到M个第二数据包;传输模块12,用于传输该M个第二数据包。其中,该N个第一数据包的大小相等。每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息。该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。该编码包包头包括编码因子字段。第一数据包是原数据包,第二数据包是编码包。M大于N,N和M均为正整数。
应理解,第二种设计中该数据传输装置1可对应执行前述实施例二,并且该数据传输装置1中的各个单元的上述操作或功能分别为了实现前述实施例二中第一设备的相应操作,其技术效果参见前述实施例二中的技术效果,为了简洁,在此不再赘述。
第三种设计中,获取模块11,用于N个第一数据包;传输模块12,用于传输该获取模块11获取到的N个第一数据包;编码模块13,用于对该获取模块11获取到的N个第一数据包进行编码并加编码包包头后得到M个第二数据包;该传输模块12,还用于传输该M个第二数据包。其中,该N个第一数据包的大小不完全相等。每个第一数据包包括包头和数据。该每个第一数据包的包头中包括该第一数据包的数据对应的数据单元的分割信息。该每个第一数据包的包头还包括数据包标识字段。该数据包标识字段用于指示该第一数据包的序列号。该N个第一数据包对应用于编码的Q个等效原数据包,该Q个等效原数据包的大小相等。该每个第一数据包的包头还包括编码因子字段或偏移字段。该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。其中,第一数据包是原数据包,第二数据包是编码包。N、M以及Q均为正整数,Q小于或等于N。
应理解,第三种设计中该数据传输装置1可对应执行前述实施例四,并且该数据传输装置1中的各个单元的上述操作或功能分别为了实现前述实施例四中第一设备的相应操作,其技术效果参见前述实施例四中的技术效果,为了简洁,在此不再赘述。
其中,上述三种设计中,上述获取模块11和上述编码模块13可以集成为一个模块,例如处理模块。上述传输模块12还可以称为收发模块。
参见图34,图34是本申请实施例提供的数据传输装置1的另一结构示意图。该数据传输装置1可以为第一设备或者可以设置于第一设备中的芯片或电路。如图34所示,该数据传输装置1包括:获取模块21、生成模块22、传输模块23、以及编码模块24。
获取模块21,用于获取级联数据包;生成模块22,用于根据该获取模块21获取到的该级联数据包生成N个第一数据包;传输模块23,用于传输该生成模块22生成的N个第一数据包;编码模块24,用于对该N个第一数据包进行编码并加编码包包头后得到M个第二数据包;该传输模块23,还用于传输该M个第二数据包。其中,该级联数据包包括级联包包头和级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除该起始数据段和该末尾数据段外的每个数据段是一个数据单元。该级联包包头包括该级联数据包括的多个数据单元的级联信息。该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等。该N个第一数据包中第j个第一数据包的数据是该级联数据包经过N等分后得到的第j份数据。每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的序列号。其中,第一数据包是原数据包,第二数据包是编码包。N和M均为正整数。j的取值为区间[1,N]中的整数。
其中,上述获取模块21、上述生成模块22、以及上述编码模块24可以集成为一个模块,例如处理模块。上述传输模块23还可以称为收发模块。
应理解,该数据传输装置1可对应执行前述实施例三,并且该数据传输装置1中的各个单元的上述操作或功能分别为了实现前述实施例三中第一设备的相应操作,其技术效果参见前述实施例三中的技术效果,为了简洁,在此不再赘述。
参见图35,图35是本申请实施例提供的数据传输装置2的一结构示意图。该数据传输装置2可以为第二设备或者可以设置于第二设备中的芯片或电路。如图35所示,该数据传输装置2包括:获取模块31、译码模块32、以及还原模块33。
第一种设计中,获取模块31,用于获取P个数据包;译码模块32,用于对该P个数据包进行译码,获得译码后的N个第一数据包;还原模块33,用于根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将该N个第一数据包的数据还原成至少一个数据单元。其中,该P个数据包中包括K个第一数据包和P-K个第二数据包。每个第一数据包包括包头和数据。该每个第一数据包的包头包括数据包标识字段。该数据包标识字段用于指示该第一数据包的序列号。该N个第一数据包的大小相等。该每个第一数据包的包头包括该第一数据包的数据部分对应的至少一个数据单元的分割和级联信息。该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。其中,第一数据包是原数据包,第二数据包是编码包。P和K均为正整数,K小于或等于P。P大于或等于N。
可选的,上述译码模块32,具体用于:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的序列号和该P-K个第二数据包的包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N-K个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。该译码后的N-K个第一数据包和该K个第一数据包属于N个第一数据包。
可选的,在该N个第一数据包和/或该M个第二数据包中携带该N个第一数据包和该M个第二数据包之间的对应关系。具体的,该对应关系可以携带在该N个第一数据包的包头和/或该M个第二数据包的包头。这样,可以基于该对应关系来获得上述系数因子矩阵。可选的,可以在该M个第二数据包的包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息来指示该对应关系。
可选的,上述长度阈值是编码包长度阈值L1。上述译码模块32,还具体用于:比较该P个数据包中每个数据包的长度与该编码包长度阈值L1的大小关系;如果该P个数据包中某个数据包的长度等于该编码包长度阈值L1,则确定该数据包是第二数据包(编码包);如果该P个数据包中某个数据包的长度小于该编码包长度阈值L1,则确定该数据包是第一数据包(原数据包);从而从该P个数据包中确定出K个第一数据包和P-K个第二数据包。
可选的,上述长度阈值是原数据包长度阈值L2。上述译码模块32,还具体用于:比较该P个数据包中每个数据包的长度与该原数据包长度阈值L2的大小关系;如果该P个数据包中某个数据包的长度小于或等于该原数据包长度阈值L2,则确定该数据包是第一数据包(原数据包);如果该P个数据包中某个数据包的长度大于该原数据包长度阈值L2,则确定该数据包是第二数据包(编码包);从而从该P个数据包中确定出K个第一数据包和P-K个第二数据包。
可选的,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包。
可选的,每个第二数据包的编码包包头包括第二指示信息,用于指示该第二指示信息所在的第二数据包是编码包。
这样,以上译码模块32可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码数据包,进而采用相对应的解析方式对该数据包的包头进行解析。
应理解,该数据传输装置2可对应执行前述实施例一,并且该数据传输装置2中的各个单元的上述操作或功能分别为了实现前述实施例一中第二设备的相应操作,其技术效果参见前述实施例一中的技术效果,为了简洁,在此不再赘述。
第二种设计中,获取模块31,用于获取P个数据包;译码模块32,用于对该P个数据包进行译码,获得译码后的N个第一数据包;还原模块33,用于根据该N个第一数据包中每个第一数据包的包头包括的分割和级联信息,将该N个第一数据包的数据还原成至少一个数据单元。其中,该P个数据包均是编码包。每个数据包包括编码包包头和编码数据,该编码包包头包括编码因子字段。该N个第一数据包的大小相等。每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息。该分割和级联信息用于指示该第一数据包的数据与该至少一个数据单元的对应关系。其中,第一数据包是原数据包,第二数据包是编码包。P大于或等于N,N为正整数,P为正整数。
可选的,上述译码模块32,具体用于:采用编码包的解析方式解析该P个数据包的编码包包头获得每个编码包包头携带的编码因子字段,利用该P个数据包的编码包包头中编码因子字段的指示构成系数因子矩阵;采用该系数因子矩阵对该P个数据包的编码数据进行译码,获得译码后的N个第一数据包。
应理解,该数据传输装置2可对应执行前述实施例二,并且该数据传输装置2中的各个单元的上述操作或功能分别为了实现前述实施例二中第二设备的相应操作,其技术效果参见前述实施例二中的技术效果,为了简洁,在此不再赘述。
第三种设计中,获取模块31,用于获取P个数据包;译码模块32,用于对该P个数据包进行译码,获得译码后的N个第一数据包,该N个第一数据包的大小不完全相等;还原模块33,用于根据该N个第一数据包中每个第一数据包的包头包括的分割信息,将该N个第一数据包的数据还原成一个或多个数据单元。其中,该P个数据包中包括K个第一数据包和P-K个第二数据包。每个第一数据包包括包头和数据。该每个第一数据包的包头中包括该第一数据包的数据对应的数据单元的分割信息。该每个第一数据包的包头还包括数据包标识字段。该数据包标识字段用于指示该第一数据包的序列号。该N个第一数据包对应用于编码的Q个等效原数据包,该Q个等效原数据包的大小相等。该每个第一数据包的包头还包括编码因子字段或偏移字段。该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。其中,第一数据包是原数据包,第二数据包是编码包。P大于或等于N,N大于或等于Q,P、N以及Q均为正整数。
可选的,上述每个第一数据包的包头包括编码因子字段。上述译码模块32,具体用于:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的包头中编码因子字段的指示和该P-K个第二数据包的编码包包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。
可选的,上述每个第一数据包的包头还包括偏移字段,该偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数。上述译码模块32,具体用于:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号和偏移字段,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的包头中第一数据包的序列号和偏移字段、和该P-K个第二数据包的编码包包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N个第一数据包。上述长度阈值是编码包长度阈值L1。或者,上述长度阈值是原数据包长度阈值L2。
可选的,在该第二数据包的包头携带该Q个等效原数据包和该第二数据包之间的对应关系。这样,可以基于该对应关系来获得上述系数因子矩阵。可选的,可以在该第二数据包的包头包括用于指示编码得到该第二数据包的Q个等效原数据包的标识信息来指示该对应关系。
可选的,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包;每个第二数据包包括编码包包头和编码数据,该每个第二数据包的编码包包头中包括第二指示信息,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。这样,以上译码模块32可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码数据包,进而采用相对应的解析方式对该数据包的包头进行解析。
应理解,该数据传输装置2可对应执行前述实施例四,并且该数据传输装置2中的各个单元的上述操作或功能分别为了实现前述实施例四中第二设备的相应操作,其技术效果参见前述实施例四中的技术效果,为了简洁,在此不再赘述。
其中,上述三种设计中,上述获取模块31、上述译码模块32、以及上述还原模块33可以集成为一个模块,例如处理模块。上述获取模块31可以包括收发单元,用于收发数据包或信息等。
参见图36,图36是本申请实施例提供的数据传输装置2的另一结构示意图。该数据传输装置2可以为第二设备或者可以设置于第二设备中的芯片或电路。如图36所示,该数据传输装置2包括:获取模块41、译码模块42、还原模块43、以及分割模块44。
获取模块41,用于获取P个数据包;译码模块42,用于对该获取模块41获取到的P个数据包进行译码,获得译码后的N个第一数据包;还原模块43,用于按照该N个第一数据包的序列号大小顺序,将该N个第一数据包的数据还原成一个级联数据包;分割模块44,还用于根据该级联包包头包括的形成该级联数据的多个数据单元的级联信息,将该级联数据分割成多个数据单元。其中,该P个数据包中包括K个第一数据包和P-K个第二数据包。每个第一数据包包括包头和数据。该每个第一数据包的包头包括该第一数据包的序列号。该N个第一数据包的数据大小相等,且该N个第一数据包的包头大小相等。该N个第一数据包中第j个第一数据包的数据是级联数据包经过N等分后得到的第j份数据。该级联数据包包括该级联包包头和该级联数据。该级联数据包括多个数据段级联得到的数据。其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分。该多个数据段中除该起始数据段和该末尾数据段外的每个数据段是一个数据单元。其中,第一数据包是原数据包,第二数据包是编码包。j的取值为区间[1,N]中的整数。P和K均为正整数,K小于或等于P。P大于或等于N。
可选的,上述译码模块42,具体用于:根据该P个数据包中每个数据包的长度以及长度阈值,从该P个数据包中确定出K个第一数据包和P-K个第二数据包;采用原数据包的解析方式解析该K个第一数据包中每个第一数据包的包头,获得该第一数据包的序列号,并采用编码包的解析方式解析该P-K个第二数据包中第二数据包的编码包包头,获得编码因子字段;根据该K个第一数据包的序列号、和该P-K个第二数据包的包头中编码因子字段的指示,构成系数因子矩阵;采用该系数因子矩阵对该P-K个第二数据包的编码数据和该K个第一数据包进行联合译码,获得译码后的N-K个第一数据包。其中,该系数因子矩阵的秩(rank)等于N。该译码后的N-K个第一数据包和该K个第一数据包属于N个第一数据包。其中,该长度阈值是编码包长度阈值L1。或者,该长度阈值是原数据包长度阈值L2。
可选的,上述每个第一数据包的包头还包括第一指示信息,用于指示该第一指示信息所在的第一数据包是原数据包。
每个第二数据包包括编码包包头和编码数据,可选的,该每个第二数据包的编码包包头包括第二指示信息,该第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。
这样,以上译码模块32可以根据包头中的第一指示信息和/或第二指示信息来确定该数据包是原数据包还是编码数据包,进而采用相对应的解析方式对该数据包的包头进行解析。
其中,上述获取模块41、上述译码模块42、上述还原模块43、以及上述分割模块44可以集成为一个模块,例如处理模块。上述获取模块41可以包括收发单元,用于收发数据包或信息等。
应理解,该数据传输装置2可对应执行前述实施例三,并且该数据传输装置2中的各个单元的上述操作或功能分别为了实现前述实施例三中第二设备的相应操作,其技术效果参见前述实施例三中的技术效果,为了简洁,在此不再赘述。
可选的,以上各实施例的编码模块可以对应于编码器,译码模块可以对应于译码器。编码器或译码器可以由硬件电路或软件来实现。除编码模块和译码模块,以及和收发单元对应的模块之外的模块的功能可以由处理器来实现。
参见图37,图37是本申请实施例提供的通信装置的结构示意图。如图37所示,本申请实施例提供的通信装置1000可用于实现上述方法实施例中描述的方法,可以参见上述方法实施例中的说明。该通信装置1000可以是前述第一设备和前述第二设备中的任意一种。
通信装置1000包括一个或多个处理器1001。处理器1001可以是通用处理器或者专用处理器等。例如可以是基带处理器、或中央处理器。基带处理器可以用于对通信协议以及通信数据进行处理,中央处理器可以用于对装置(如,通信设备、基站或芯片等)进行控制,执行软件程序,处理软件程序的数据。该装置可以包括收发单元,用以实现信号的输入(接收)和输出(发送)。例如,装置可以为芯片,该收发单元可以是芯片的输入和/或输出电路,或者通信接口。该芯片可以用于通信设备或接入网设备(比如基站)。又如,装置可以为通信设备(比如UE)或接入网设备(比如基站),该收发单元可以为收发器,射频芯片等。
通信装置1000包括一个或多个处理器1001,该一个或多个处理器1001可实现前述任一实施例中第一设备、或第二设备的方法。
可选的,处理器1001除了实现前述任一实施例的方法,还可以实现其他功能。
可选的,一种设计中,处理器1001也可以包括指令1003,所述指令可以在所述处理器上被运行,使得通信装置1000执行上述任一方法实施例中描述的方法。
在又一种可能的设计中,通信装置1000也可以包括电路,所述电路可以实现前述任一方法实施例中第一设备或第二设备的功能。
在又一种可能的设计中,通信装置1000中可以包括一个或多个存储器1002,其上存有指令1004,所述指令可在所述处理器上被运行,使得通信装置1000执行上述任一方法实施例中描述的方法。可选的,所述存储器中还可以存储有数据。可选的处理器中也可以存储指令和/或数据。例如,所述一个或多个存储器1002可以存储上述实施例中所描述的第一数据包,或者上述实施例中所涉及的其他信息。所述处理器和存储器可以单独设置,也可以集成在一起。
在又一种可能的设计中,通信装置1000还可以包括收发单元1005以及天线1006,或者,包括通信接口。收发单元1005可以称为收发机、收发电路、或者收发器等,用于通过天线1006实现装置的收发功能。所述通信接口(图中未示出),可以用于核心网设备和接入网设备,或是,接入网设备和接入网设备之间的通信。可选的,该通信接口可以为有线通信的接口,比如光纤通信的接口。
处理器1001可以称为处理单元,对装置(比如通信设备)进行控制。
应理解,在本申请实施例中的处理器可以是中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
上述实施例,可以全部或部分地通过软件、硬件(如电路)、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线,例如光纤,或是无线,例如红外、无线、微波等,方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行前述实施例所描述的第一设备的方法步骤;或者当该计算机程序代码在计算机上运行时,使得该计算机执行前述实施例所描述的第二设备的方法步骤。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有程序指令,当其在计算机上运行时,使得该计算机执行前述实施例所描述的第一设备的方法步骤;或者当该计算机程序代码在计算机上运行时,使得该计算机执行前述实施例所描述的第二设备的方法步骤。
本申请实施例还提供一种装置,该装置可以为芯片。该芯片包括处理器。该处理器用于读取并执行存储器中存储的计算机程序,以执行前述任一实施例的任意可能的实现方式中的方法。可选的,该芯片还包括存储器,该存储器与该处理器通过电路或电线连接。进一步可选的,该芯片还包括通信接口,该处理器与该通信接口连接。该通信接口用于接收待处理的数据和/或信号,该处理器从该通信接口获取该数据和/或信号,并对该数据和/或信号进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。
可选的,上述的处理器与存储器可以是物理上相互独立的单元,或者,存储器也可以和处理器集成在一起。
本申请的另一实施例中,还提供一种通信系统,该通信系统包括第一设备和第二设备。该第一设备和该第二设备可以执行前述任一实施例中的方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (28)

1.一种数据传输方法,其特征在于,包括:
获取N个第一数据包,所述N个第一数据包的大小相等,每个第一数据包包括包头和数据,所述每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息,所述分割和级联信息用于指示该第一数据包的数据与所述至少一个数据单元的对应关系,所述每个第一数据包的包头还包括数据包标识字段,所述数据包标识字段用于指示该第一数据包的序列号;
传输所述N个第一数据包;
对所述N个第一数据包进行编码并加编码包包头后得到M个第二数据包,所述编码包包头包括编码因子字段,N和M均为正整数;
传输所述M个第二数据包,其中第一数据包是原数据包,第二数据包是编码包。
2.一种数据传输方法,其特征在于,包括:
获取N个第一数据包,所述N个第一数据包的大小相等,每个第一数据包包括包头和数据,所述每个第一数据包的包头包括该第一数据包的数据对应的至少一个数据单元的分割和级联信息,所述分割和级联信息用于指示该第一数据包的数据与所述至少一个数据单元的对应关系;
对所述N个第一数据包进行编码并加编码包包头后得到M个第二数据包,所述编码包包头包括编码因子字段,M大于N,N和M均为正整数;
传输所述M个第二数据包,其中,第一数据包是原数据包,第二数据包是编码包。
3.根据权利要求1所述的方法,其特征在于,所述每个第一数据包的包头还包括第一指示信息,所述第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包;和/或,
每个第二数据包的编码包包头还包括第二指示信息,所述第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。
4.根据权利要求1-3中任一项所述的方法,其特征在于,一个第一数据包的数据包括至少一个数据段,一个数据段包括一个数据单元的全部或部分;
所述分割和级联信息包括:
指示该第一数据包的数据中第一个数据段和/或最后一个数据段对应的数据单元是否被分割的信息,或者指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;
指示该第一数据包的数据包括的第i个数据段是否是该第一数据包的数据中的最后一个数据段的信息;
以及指示所述第i个数据段的长度的信息;
其中,i的取值为1至该第一数据包的数据包括的数据段总数。
5.根据权利要求1-3中任一项所述的方法,其特征在于,一个第一数据包的数据包括至少一个数据段,一个数据段包括一个数据单元的全部或部分;
所述分割和级联信息包括:
指示该第一数据包的数据中第一个数据段和/或最后一个数据段对应的数据单元是否被分割的信息,或者指示该第一数据包的数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;
指示该第一数据包的数据包括的数据段的个数的信息;
以及指示每个数据段的长度的信息。
6.根据权利要求1-3中任一项所述的方法,其特征在于,一个第一数据包的数据包括至少一个数据段,一个数据段包括一个数据单元的全部或部分;
所述分割和级联信息包括:
该第一数据包的数据中第一个数据段和/或最后一个数据段对应的数据单元的序列号,或者该第一数据包的数据中数据段对应的数据单元的最大序列号和/或最小序列号;
指示该第一数据包的数据包括的第i个数据段是否是最后一个数据段的信息;
以及指示所述第i个数据段的长度的信息;
其中,i的取值为1至该第一数据包的数据包括的数据段总数。
7.根据权利要求1或3-6中任一项所述的方法,其特征在于,所述编码包包头还包括用于指示编码得到该第二数据包的N个第一数据包的标识信息,所述用于指示编码得到该第二数据包的N个第一数据包的标识信息是块标识字段或包括以下至少两项:
指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。
8.根据权利要求2-6中任一项所述的方法,其特征在于,所述M个第二数据包中包括N个第一类编码包和M-N个第二类编码包,其中第一类编码包的编码系数子矩阵是单位阵,第二类编码包的编码系数子矩阵是非单位阵,所述第一类编码包的编码系数子矩阵和所述第二类编码包的编码系数子矩阵形成一个编码系数矩阵,所述编码系数矩阵用于对所述N个第一数据包进行编码;
所述M个第二数据包中每个第二数据包的编码包包头包括用于指示编码得到该第二数据包的N个第一数据包的标识信息,所述用于指示编码得到该第二数据包的N个第一数据包的标识信息是块标识字段或包括以下至少两项:
指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述数据单元为协议数据单元PDU或业务数据单元SDU。
10.根据权利要求1-9中任一项所述的方法,其特征在于,所述第一数据包的序列号顺序递增;和/或,
所述每个第二数据包的编码包包头中还包括该第二数据包的序列号,所述第二数据包的序列号顺序递增。
11.一种数据传输方法,其特征在于,包括:
获取级联数据包,所述级联数据包包括级联包包头和级联数据,所述级联数据包括多个数据段级联得到的数据,其中起始数据段和末尾数据段中的至少一个是一个数据单元的全部或部分,所述多个数据段中除所述起始数据段和所述末尾数据段外的每个数据段是一个数据单元,所述级联包包头包括所述级联数据包括的多个数据单元的级联信息;
根据所述级联数据包生成N个第一数据包,所述N个第一数据包的数据大小相等,且所述N个第一数据包的包头大小相等,所述N个第一数据包中第j个第一数据包的数据是所述级联数据包经过N等分后得到的第j份数据,每个第一数据包包括包头和数据,所述每个第一数据包的包头包括该第一数据包的序列号,j的取值为区间[1,N]中的整数;
传输所述N个第一数据包;
对所述N个第一数据包进行编码并加编码包包头后得到M个第二数据包,N和M均为正整数;
传输所述M个第二数据包。
12.根据权利要求11所述的方法,其特征在于,所述每个第一数据包的包头还包括第一指示信息,所述第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包;和/或,
每个第二数据包的编码包包头包括第二指示信息,所述第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。
13.根据权利要求11或12所述的方法,其特征在于,所述级联信息包括:
指示所述级联数据的起始数据段和/或末尾数据段对应的数据单元是否被分割的信息,或者,指示所述级联数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;
指示所述级联数据包括的数据段的个数的信息;
以及指示所述级联数据包括的每个数据段的长度的信息。
14.根据权利要求11或12所述的方法,其特征在于,所述级联信息包括:
指示所述级联数据的起始数据段和/或末尾数据段对应的数据单元是否被分割的信息,或者指示所述级联数据中数据段对应的数据单元中序列号最大和/或序列号最小的数据单元是否被分割的信息;
指示所述级联数据包括的第i个数据段是否是最后一个数据段的信息;
以及指示所述第i个数据段的长度的信息;
其中,i的取值为1至所述级联数据包括的数据段总数。
15.根据权利要求11-14中任一项所述的方法,其特征在于,所述编码包包头还包括用于指示编码得到该第二数据包的N个第一数据包的标识信息,所述用于指示编码得到该第二数据包的N个第一数据包的标识信息是块标识字段或包括以下至少两项:
指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。
16.根据权利要求11-15中任一项所述的方法,其特征在于,所述级联数据包括多个完整数据单元级联得到的数据以及填充比特。
17.根据权利要求16所述的方法,其特征在于,所述级联包包头还包括填充信息,所述填充信息包括所述填充比特的长度。
18.根据权利要求11-17中任一项所述的方法,其特征在于,所述数据单元为协议数据单元PDU或业务数据单元SDU。
19.根据权利要求11-18中任一项所述的方法,其特征在于,所述第一数据包的序列号顺序递增;和/或,
所述每个第二数据包的编码包包头中还包括该第二数据包的序列号,所述第二数据包的序列号顺序递增。
20.一种数据传输方法,其特征在于,包括:
获取N个第一数据包,所述N个第一数据包的大小不完全相等,每个第一数据包包括包头和数据,所述每个第一数据包的包头中包括该第一数据包的数据对应的数据单元的分割信息,所述每个第一数据包的包头还包括数据包标识字段,所述数据包标识字段用于指示该第一数据包的序列号;
传输所述N个第一数据包;
对所述N个第一数据包进行编码并加编码包包头后得到M个第二数据包,所述N个第一数据包对应用于编码的Q个等效原数据包,所述Q个等效原数据包的大小相等,所述每个第一数据包的包头还包括编码因子字段或偏移字段,所述偏移字段用于指示该第一数据包的序列号相对于该第一数据包对应的等效原数据包的序列号的偏移数,N、M以及Q均为正整数,Q小于或等于N;
传输所述M个第二数据包。
21.根据权利要求20所述的方法,其特征在于,所述每个第一数据包的包头还包括第一指示信息,所述第一指示信息用于指示该第一指示信息所在的第一数据包是原数据包;和/或,
每个第二数据包的编码包包头中包括第二指示信息,所述第二指示信息用于指示该第二指示信息所在的第二数据包是编码包。
22.根据权利要求20或21所述的方法,其特征在于,所述分割信息包括:该第一数据包的数据在该数据对应的数据单元中的位置信息,和指示该第一数据包的数据的长度的信息。
23.根据权利要求20-22中任一项所述的方法,其特征在于,所述编码包包头还包括用于指示编码得到该第二数据包的Q个等效原数据包的标识信息,所述用于指示编码得到该第二数据包的Q个等效原数据包的标识信息是块标识字段或包括以下至少两项:
指示编码窗的窗长的信息、编码窗中第一个第一数据包的序列号、编码窗中最后一个第一数据包的序列号。
24.根据权利要求20-23中任一项所述的方法,其特征在于,所述数据单元为协议数据单元PDU或业务数据单元SDU。
25.根据权利要求20-24中任一项所述的方法,其特征在于,所述第一数据包的序列号顺序递增;和/或,
每个第二数据包的编码包包头中还包括该第二数据包的序列号,所述第二数据包的序列号顺序递增。
26.一种数据传输装置,其特征在于,包括用于执行权利要求1-25中任一项所述方法的模块。
27.一种通信装置,其特征在于,包括:
一个或多个处理器,所述一个或多个处理器与一个或多个存储器耦合;
其中,所述一个或多个存储器用于存储计算机程序,所述一个或多个处理器用于执行存储于所述一个或多个存储器中的计算机程序,以使得所述通信装置执行如权利要求1-25中任一项所述的方法。
28.一种可读存储介质,其特征在于,用于存储程序,所述程序被一个或多个处理器执行,使得包括所述一个或多个处理器的装置执行如权利要求1-25中任一项所述的方法。
CN202110483034.0A 2021-04-30 2021-04-30 数据传输方法、装置及可读存储介质 Pending CN115276891A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110483034.0A CN115276891A (zh) 2021-04-30 2021-04-30 数据传输方法、装置及可读存储介质
PCT/CN2022/089568 WO2022228467A1 (zh) 2021-04-30 2022-04-27 数据传输方法、装置及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110483034.0A CN115276891A (zh) 2021-04-30 2021-04-30 数据传输方法、装置及可读存储介质

Publications (1)

Publication Number Publication Date
CN115276891A true CN115276891A (zh) 2022-11-01

Family

ID=83745621

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110483034.0A Pending CN115276891A (zh) 2021-04-30 2021-04-30 数据传输方法、装置及可读存储介质

Country Status (2)

Country Link
CN (1) CN115276891A (zh)
WO (1) WO2022228467A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023046029A1 (zh) * 2021-09-26 2023-03-30 华为技术有限公司 数据传输方法、装置及可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105991625B (zh) * 2015-03-06 2020-11-06 电信科学技术研究院 一种进行数据传输的方法和设备
JP2018520596A (ja) * 2015-07-08 2018-07-26 華為技術有限公司Huawei Technologies Co.,Ltd. データパケットの処理モードを判定するユーザ機器、ネットワークデバイス、および方法
US10034200B2 (en) * 2015-10-23 2018-07-24 Motorola Mobility Llc Iteratively transmitting random linear network encoded packets from multiple transmission nodes
WO2018133020A1 (zh) * 2017-01-20 2018-07-26 广东欧珀移动通信有限公司 数据传输方法、装置、发送端、接收端及系统
CN109691061A (zh) * 2017-02-10 2019-04-26 Oppo广东移动通信有限公司 一种传输数据的方法和装置
US11350305B2 (en) * 2019-01-09 2022-05-31 Samsung Electronics Co., Ltd. Method and apparatus for processing data in wireless communication system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023046029A1 (zh) * 2021-09-26 2023-03-30 华为技术有限公司 数据传输方法、装置及可读存储介质

Also Published As

Publication number Publication date
WO2022228467A1 (zh) 2022-11-03

Similar Documents

Publication Publication Date Title
WO2016165575A1 (zh) 一种实现码块分割的方法及装置
US8958330B2 (en) De-rate matching method and device for downlink traffic channel in long term evolution
CN109075899B (zh) 数据传输方法、设备及系统
CN110391870B (zh) 速率匹配的方法和装置,以及解速率匹配的方法和装置
CN109728877B (zh) 一种用于无线通信的用户设备、基站中的方法和装置
CN112636879B (zh) 基于混合自动重传请求的码块处理的方法和装置
JP7165954B2 (ja) チャネル符号化に用いるユーザー装置、基地局における方法及び装置
US11990919B2 (en) Method and device in UE and base station for channel coding
WO2017101023A1 (zh) 通信方法及网络设备、用户设备
CN111492607A (zh) 一种用于无线通信的通信节点中的方法和装置
CN109756299B (zh) 一种用于无线通信的用户设备、基站中的方法和装置
WO2022228467A1 (zh) 数据传输方法、装置及可读存储介质
US11539470B2 (en) Re-transmission control method, radio terminal, and radio base station
CN109756294B (zh) 一种用于无线通信的用户设备、基站中的方法和装置
EP3621234B1 (en) Method and device for determining whether data is damaged
KR20100081902A (ko) 랜덤선형부호화를 사용한 데이터 송수신 방법
CN115696435A (zh) 网络编码场景下的超时丢包方法、装置及可读存储介质
CN113316922B (zh) 用于传输数据分组的设备、方法、装置以及计算机可读存储介质
WO2023046029A1 (zh) 数据传输方法、装置及可读存储介质
WO2023236128A1 (en) Apparatus and methods for source coding and channel coding of low entropy signals
US11736120B2 (en) Method and device in UE and base station for wireless communication
CN115604760A (zh) 一种通信方法及通信装置
KR20230004238A (ko) 통신 시스템에서 트래픽 전송 방법 및 장치

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