一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种网络编码方法及装置与流程

2022-02-24 17:34:28 来源:中国专利 TAG:


1.本技术涉及通信技术领域,特别涉及一种网络编码方法及装置。


背景技术:

2.网络编码主要用于多播网络中,在节点进行编码以提高信息传输速率。目前,网络编码的收发端与网络节点要保持一致的在同一个有限域(如伽罗瓦域(galois field,gf))里进行编解码,例如,若发送端选择了在gf(28)的有限域进行编码,则要求所有参与网络编码的中间节点也要在gf(28)的有限域进行重编码(recoding),所有的接收端都要在gf(28)的有限域进行解码。所以,在数据传输过程中,各个网络节点需要针对每个流或每个应用配置成与收发端一致的编解码参数。
3.但是,各个网络节点针对每个流或每个应用配置成与收发端一致的编解码参数,会带来以下几个问题:
4.1)由于网络设备通常编码算力受限,因此可能会导致吞吐量瓶颈。
5.2)由于各个网络节点的编码算力不同,若各个网络节点均支持同一等级的编解码算法,则需要选择较低的编解码算法进行数据传输,从而可能导致不满足服务质量(quality of service,qos)需求。
6.3)网络节点针对每个流或每个应用配置成与收发端一致的编解码参数,一方面配置成本较高,另一方面,数据传输在切换路径时需要重新配置编解码参数,导致路径切换时延较大。


技术实现要素:

7.本技术实施例提供了一种网络编码方法及装置,用于解决数据传输性能较差的问题。
8.第一方面,本技术实施例提供的一种网络编码方法,该方法可以应用于发送端,该方法包括:对一个组中的k个源数据块进行编码,得到多个编码数据块,其中,k为大于0的整数,多个编码数据块中至少两个编码数据块采用的编码系数对应的有限域的阶不同;根据多个编码数据块生成一个或多个报文并发送,其中,每个报文中携带至少一个编码数据块以及编码数据块对应的编码系数。本技术实施例中,发送端通过在多个有限域内对源数据块进行编码,使得接收端可以接收不同有限域的报文,从而接收端可以根据自身算力和应用需求自主选择有限域进行编解码。
9.在一种可能的设计中,对一个组中的k个源数据块进行编码,得到多个编码数据块,包括:将k个源数据块与第一编码矩阵进行第一编码运算,得到多个编码数据块,其中,第一编码矩阵包括至少两种不同阶有限域的编码系数。上述设计中,通过包括至少两种不同阶有限域的编码系数的编码矩阵,可以实现在多个有限域内对源数据块进行编码。
10.在一种可能的设计中,根据k个源数据块生成h1个报文并进行发送,h1个报文中每个报文携带至少一个源数据块以及源数据块对应的编码系数,其中,k个源数据块对应的编
码系数构成对角线元素为1,且除对角线元素以外的其他元素为0的k
×
k矩阵,矩阵中的任一行元素为k个源数据块中一个源数据块对应的k个编码系数,h1为大于0且不大于k的整数。通过上述设计可以使发送端输出系统码。
11.在一种可能的设计中,对一个组中的k个源数据块进行编码,得到多个编码数据块,包括:将k个源数据块与第二编码矩阵进行第二编码运算,得到n1个编码数据块,其中,n1为大于0的整数,第二编码矩阵包括的第一编码系数对应的有限域的阶均高于第一有限域的阶,第一有限域为第三编码矩阵对应的有限域。将n1个编码数据块以及k个源数据块与第三编码矩阵进行第三编码运算,得到m个编码数据块,其中,m为大于0的整数,多个编码数据块包括n1个编码数据块以及m个编码数据块。
12.在一种可能的设计中,根据k个源数据块生成h2个报文并进行发送,h2个报文中每个报文携带至少一个源数据块以及源数据块对应的编码系数,h2为大于0且不大于k的整数;其中,k个源数据块对应的编码系数以及n1个编码数据块对应的第二编码系数构成对角线元素为1,且除对角线元素以外的其他元素为0的(k n1)
×
(k n1)矩阵,矩阵中的任一行元素为k个源数据块中一个源数据块对应的k n1个编码系数或者n1个编码数据块中一个编码数据块对应的k n1个编码系数,第二编码系数为n1个编码数据块对应的编码系数中除第二编码运算采用的第一编码系数以外的编码系数。
13.在一种可能的设计中,对一个组中的k个源数据块进行编码,得到多个编码数据块,包括:将k个源数据块与第四编码矩阵进行第四编码运算,得到n2个中间数据块,其中,n2为大于0的整数,第四编码矩阵包括的编码系数对应的有限域的阶均高于第二有限域的阶,第二有限域为第五编码矩阵对应的有限域;将n2个中间数据块以及k个源数据块与第五编码矩阵进行第五编码运算,得到多个编码数据块。
14.在一种可能的设计中,报文还携带指示信息,指示信息用于指示报文所携带源数据块对应的有限域的阶,或者,指示信息用于指示报文所携带编码数据块对应的有限域的阶。通过上述设计,使接收端可以直接确定数据块对应的有限域。
15.第二方面,本技术实施例提供的一种网络编码方法,该方法可以应用于中间节点,该方法包括:接收n个报文,其中,n为大于1的整数,一个报文中携带a1个数据块以及a1个数据块对应的编码系数,a1为大于0的整数,n个报文所携带编码系数对应的有限域为一个或多个;根据如下信息中的一项或多项确定重编码的有限域:网络节点的编码算力、n个报文所携带编码系数对应的有限域、网络负载;基于重编码的有限域将n个报文携带的数据块以及编码系数进行重编码,得到v个编码结果,v为大于0的整数;发送m1个重编码后的报文,一个重编码后的报文中携带至少一个编码结果,m1为大于0且不大于v的整数。
16.本技术实施例中,中间节点可以根据自身编码算力、接收的报文所携带编码系数对应的有限域、网络负载等确定重编码的有限域,而不需要受限于收发端的编码算力,从而可以重编码的灵活性,并且,中间节点可以根据自身编码算力、接收的报文所携带编码系数对应的有限域、网络负载等随时调整重编码的有限域,而不需要重新协商收发端与其他中间节点的编码算力,路径切换可以直接切换,路径切换时延小。
17.在一种可能的设计中,重编码的有限域包括一个或多个有限域。上述设计中,中间节点通过对发送端输出的报文进行重编码,从而发送端和中间节点可以构成一种分布式的编码,也就是说,发送端编码一部分,中间节点再编码另一部分,通过这种方式发送端可以
进行复杂度较低的编码,通过中间节点对发送端输出的报文进行进一步重编码,从而可以降低网络负载,提高传输效率。
18.在一种可能的设计中,基于重编码的有限域将n个报文携带的数据块以及编码系数进行重编码,包括:将n个报文携带的数据块与第七编码矩阵进行编码运算,得到v个重编码后的数据块,其中,第七编码矩阵包括的编码系数属于重编码的有限域;将n个报文携带的编码系数与第七编码矩阵进行编码运算,得到v组重编码后的编码系数,一个编码结果包括一个重编码后的数据块以及对应的一组重编码后的编码系数。通过上述设计,可以实现对发送端输出的报文的进一步重编码,从而发送端和中间节点可以构成一种分布式的编码,也就是说,发送端编码一部分,中间节点再编码另一部分,通过这种方式可以降低网络负载,提高传输效率。
19.在一种可能的设计中,根据n个报文所携带编码系数对应的有限域确定重编码的有限域,包括:确定n个报文所携带编码系数对应的有限域中最高阶的有限域为重编码的有限域。
20.第三方面,本技术实施例提供的一种网络编码方法,该方法可以应用于接收端,该方法包括:针对一个组中的k个源数据块,接收多个报文,其中,k为大于0的整数,一个报文携带至少一个数据块以及每个数据块对应的一组编码系数;采用第一译码方式或者第二译码方式或者第三译码方式或者第四译码方式或者第五译码方式对多个报文进行译码;
21.其中,第一译码方式为将多个报文在第一有限域内进行译码,第一有限域为网络中阶数最低的有限域;
22.第二译码方式为将多个报文在第二有限域内进行译码,第二有限域为多个报文携带的编码系数对应的有限域中最高阶的有限域;
23.第三译码方式为将多个报文在第三有限域内进行译码,第三有限域为多个报文携带的编码系数对应的有限域中除第一有限域以外的另一个有限域,第一有限域为网络中阶数最低的有限域;
24.第四译码方式为将多个报文在第一有限域和第四有限域内进行译码,第一有限域为网络中阶数最低的有限域,第四有限域为多个报文携带的编码系数对应的任一高阶有限域,高阶有限域为阶数高于第一有限域的有限域;
25.第五译码方式为多个报文在第一有限域和第五有限域内进行译码,第一有限域为网络中阶数最低的有限域,第五有限域为多个报文携带的编码系数对应的任意t个高阶有限域中阶数最高的有限域,高阶有限域为阶数高于第一有限域的有限域,t为大于1的整数。
26.本技术实施例中,接收端可先在高速的第一有限域进行大部分的译码,再尝试切到高阶有限域做剩余部分的译码,并且可以根据自身算力和应用需求自主选择有限域进行编解码,从而可以实现众口可调,且应用编码需求、有限域选择可随时任意自主调整。
27.在一种可能的设计中,采用第一译码方式对多个报文进行译码,包括:将多个报文在第一有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。通过上述方式,第一译码方式可以提高译码速度,并且第一译码方式具有计算复杂度小、吞吐量高等优点。
28.在一种可能的设计中,多个报文携带k个数据块,k个数据块对应的编码系数属于
第一有限域;或者,多个报文携带k n个数据块,k n个数据块对应的编码系数对应的有限域为第一有限域,其中,n为在高阶有限域进行编码的编码数据块的数量,高阶有限域为阶数高于第一有限域的有限域。通过上述方式,第一译码方式的传输开销较小。
29.在一种可能的设计中,采用第二译码方式对多个报文进行译码,包括:将多个报文在第二有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。通过上述方式,第二译码方式一方面可以提高译码速度,另一方面可以提高译码成功率,从而可以实现译码速度与译码成功率之间的均衡。
30.在一种可能的设计中,多个报文携带k个数据块,k个数据块对应的编码系数属于两个或两个以上的有限域。通过上述方式,第二译码方式的传输开销较小。
31.在一种可能的设计中,采用第三译码方式对多个报文进行译码,包括:将多个报文在第三有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素变换为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。上述设计中,第三译码方式中,数据块对应的编码系数出了第一有限域以外,只有一种有限域(即第三有限域),由于实际中k》》n,所以译码矩阵中大部分系数为来自第一有限域的编码系数1或0,因此第三有限域的译码操作极少,可以极大简化第三有限域的运算复杂度。
32.在一种可能的设计中,多个报文携带k个数据块,且k个数据块中至少一个数据块对应的编码系数属于第一有限域,k个数据块中除至少一个数据块以外的其他数据块对应的编码系数属于第三有限域。通过上述方式,第三译码方式的传输开销较小。
33.在一种可能的设计中,采用第四译码方式对多个报文进行译码,包括:将多个报文在第一有限域内进行第一译码运算;将第一译码运算得到的结果在第四有限域进行第二译码运算。通过上述方式,由于译码矩阵中大部分系数为来自第一有限域的编码系数1或0,因此第四有限域的译码操作极少,可以极大简化第四有限域的运算复杂度。
34.在一种可能的设计中,将第一译码运算得到的结果在第四有限域进行第二译码运算,包括:将第一译码运算得到的结果在第四有限域进行第二译码运算,使得第一译码矩阵经过第二译码运算后对角线元素为1,且除对角线元素以外的其他元素为0;其中,第一译码矩阵的上矩阵包括第二译码矩阵第i行第g列的元素,第一译码矩阵的下矩阵为第二译码矩阵第t行第g列的元素与第t行对应的编码系数中属于第四有限域的编码系数进行运算的结果,第二译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数经过第一次译码运算后的结果,i={1,2,
……
h-n},g={1,2,
……
,k},第二译码矩阵第t行为第四有限域的编码系数所对应的行,h为多个报文携带的数据块的数量,n为在高有限域进行编码的编码数据块的数量。上述设计中,由于第四有限域的译码成功率,因此在第四有限域进行一部分译码运算可以提高译码成功率。
35.在一种可能的设计中,将多个报文在第一有限域内进行第一译码运算,包括:将多个报文在第一有限域内进行第一译码运算,使得第五译码矩阵经过第一译码运算后第i行第j列的元素为0,第h行第k 1列至第h行第k n列的元素中第h行第h 1列的元素为1,第h行第k 1列至第h行第k n列的元素中除第h行第h 1列的元素以外的其他元素为0;
36.其中,第五译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数,i={1,2,
……
h-n},j={k 1,k 2,
……
,k n},第五译码矩阵经过第一
译码运算后的第h行为第四有限域的编码系数所对应的行,h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。上述设计中,由于第一有限域的译码复杂度比较低,译码速度比较快,因此在第一有限域进行一部分译码运算可以提高译码速度。
37.在一种可能的设计中,多个报文携带(k-1) n个数据块,且(k-1) n个数据块中至少一个数据块对应的编码系数属于第四有限域,其中,n为在高阶有限域进行编码的编码数据块的数量。通过上述方式,可以降低传输开销。
38.在一种可能的设计中,采用第五译码方式对多个报文进行译码,包括:将多个报文在第一有限域内进行第四译码运算;将第一译码运算得到的结果在第五有限域进行第三译码运算。通过上述方式,由于译码矩阵中大部分系数为来自第一有限域的编码系数1或0,因此第五有限域的译码操作极少,可以极大简化第五有限域的运算复杂度。
39.在一种可能的设计中,将第一译码运算得到的结果在第五有限域进行第三译码运算,包括:将第一译码运算得到的结果在第五有限域进行第三译码运算,使得第三译码矩阵经过第三译码运算后对角线元素为1,且除对角线元素以外的其他元素为0;其中,第三译码矩阵的上矩阵包括第四译码矩阵第i行第g列的元素,第一译码矩阵的下矩阵为第四译码矩阵第h-n 1行至第h行中任意t行的第g列的元素与任意t行对应的编码系数中属于高阶有限域的编码系数进行运算的结果,第四译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数经过第一次译码运算后的结果,i={1,2,
……
h-n},g={1,2,
……
,k},h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。上述设计中,从译码成功率或传输开销角度,可以利用高阶有限域来提升译码成功率。
40.在一种可能的设计中,将多个报文在第一有限域内进行第四译码运算,包括:将多个报文在第一有限域内进行第四译码运算,使得第五译码矩阵经过第四译码运算后第i行第j列的元素为0,第h行第k 1列至第h行第k n列的元素中第h行第h 1列的元素为1,第h行第k 1列至第h行第k n列的元素中除第h行第h 1列的元素以外的其他元素为0;其中,第五译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数,i={1,2,
……
h-n},j={k 1,k 2,
……
,k n},h取大于h-n且小于h 1的任意t个整数,h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。上述设计中,从译码速度或吞吐量角度,第五译码方式中在第一有限域进行大部分运算,相比于现有技术中在高阶有限域进行运算,可以有效降低计算复杂度,提高译码速度和吞吐量。
41.在一种可能的设计中,多个报文携带k n-t个数据块,且k n-t个数据块对应的编码系数属于至少t个不同的高阶有限域,其中,n为在高阶有限域进行编码的编码数据块的数量。通过上述方式,可以降低传输开销。
42.第四方面,本技术提供一种网络编码装置,该装置可以是通信设备,也可以是通信设备内的芯片或芯片组,其中,通信设备可以为发送端也可以是中间节点或者接收端。该装置可以包括处理单元和收发单元。当该装置是通信设备时,该处理单元可以是处理器,该收发单元可以是收发器;该装置还可以包括存储模块,该存储模块可以是存储器;该存储模块用于存储指令,该处理单元执行该存储模块所存储的指令,以使发送端执行上述第一方面中相应的功能,或者,以使中间节点执行上述第一方面中相应的功能,或者,以使接收端执
行上述第一方面中相应的功能。当该装置是通信设备内的芯片或芯片组时,该处理单元可以是处理器,该收发单元可以是输入/输出接口、管脚或电路等;该处理单元执行存储模块所存储的指令,以使发送端执行上述第一方面中相应的功能,或者,以使中间节点执行上述第一方面中相应的功能,或者,以使接收端执行上述第一方面中相应的功能。该存储模块可以是该芯片或芯片组内的存储模块(例如,寄存器、缓存等),也可以是位于该芯片或芯片组外部的存储模块(例如,只读存储器、随机存取存储器等)。
43.第五方面,提供了一种网络编码装置,包括:处理器、通信接口和存储器。通信接口用于该装置与其他装置之间传输信息、和/或消息、和/或数据。该存储器用于存储计算机执行指令,当该装置运行时,该处理器执行该存储器存储的该计算机执行指令,以使该装置执行如上述第一方面至第三方面中任一方面或任一方面中任一设计所述的方法。
44.第六方面,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面至第三方面中任一方面或任一方面中任一设计所述的方法。
45.第七方面,本技术还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面至第三方面中任一方面或任一方面中任一设计所述的方法。
46.第八方面,本技术实施例提供的一种芯片,所述芯片与存储器耦合,执行本技术实施例第一方面至第三方面中任一方面或任一方面中任一设计所述的方法。
47.需要说明的是,本技术实施例中“耦合”是指两个部件彼此直接或间接地结合。
附图说明
48.图1为本技术实施例提供的一种组播场景下通信系统的架构示意图;
49.图2为本技术实施例提供的一种单播场景下通信系统的架构示意图;
50.图3为本技术实施例提供的一种组播场景示意图;
51.图4为本技术实施例提供的一种单播场景示意图;
52.图5为本技术实施例提供的一种网络编码方法的流程示意图;
53.图6为本技术实施例提供的一种编码方式示意图;
54.图7为本技术实施例提供的一种编码过程示意图;
55.图8为本技术实施例提供的另一种编码方式示意图;
56.图9为本技术实施例提供的一种第二编码运算过程示意图;
57.图10为本技术实施例提供的一种第三编码运算过程示意图;
58.图11为本技术实施例提供的一种第四编码运算过程示意图;
59.图12为本技术实施例提供的一种第五编码运算过程示意图;
60.图13为本技术实施例提供的一种网络编码方法的流程示意图;
61.图14为本技术实施例提供的一种重编码方式示意图;
62.图15为本技术实施例提供的一种重编码过程示意图;
63.图16为本技术实施例提供的另一种重编码过程示意图;
64.图17为本技术实施例提供的一种网络编码方法的流程示意图;
65.图18为本技术实施例提供的一种第一译码方式示意图;
66.图19为本技术实施例提供的一种第二译码方式示意图;
67.图20为本技术实施例提供的另一种第二译码方式示意图;
68.图21为本技术实施例提供的另一种第二译码方式示意图;
69.图22为本技术实施例提供的一种第三译码方式示意图;
70.图23为本技术实施例提供的另一种第三译码方式示意图;
71.图24为本技术实施例提供的另一种第一译码方式示意图;
72.图25为本技术实施例提供的一种第四译码方式示意图;
73.图26为本技术实施例提供的一种在gf(2n)有限域进行加法运算的示意图;
74.图27为本技术实施例提供的另一种第四译码方式示意图;
75.图28为本技术实施例提供的另一种第四译码方式示意图;
76.图29为本技术实施例提供的另一种第四译码方式示意图;
77.图30为本技术实施例提供的一种第五译码方式示意图;
78.图31为本技术实施例提供的一种有限域加法表示意图;
79.图32为本技术实施例提供的一种编码系数运算示意图;
80.图33为本技术实施例提供的另一种第五译码方式示意图;
81.图34为本技术实施例提供的另一种第五译码方式示意图;
82.图35为本技术实施例提供的一种网络编码装置的结构示意图;
83.图36为本技术实施例提供的另一种网络编码装置的结构示意图。
具体实施方式
84.为了更好的理解本技术实施例,下面对本技术实施例中涉及的技术术语进行解释说明。
85.有限域(finite field):有限域是含有限的多个元素的域。有限域又可以称为伽罗瓦域(galois field,gf)。与其他域一样,有限域是进行加减乘除运算都有定义并且满足特定规则的集合。有限域的元素个数称为它的阶,有限域的阶通常是一个素数的幂。有限域是本领域技术人员公知的技术,具体描述可以参阅现有技术,这里不再展开叙述。
86.为了描述上的方便,本技术实施例根据有限域的阶数区分不同的有限域,例如,以素数为2为例,元素个数(阶数)为21的有限域可以称为gf(21),元素个数(阶数)为22的有限域可以称为gf(22),元素个数(阶数)为2n的有限域可以称为gf(2n),等等。应理解,这里仅以素数为2进行举例说明,并不对素数的取值进行具体限定。
87.为了使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施例作进一步地详细描述。
88.本技术提供的网络编码方法可以应用于各类通信系统中,例如,可以是物联网(internet of things,iot)、窄带物联网(narrow band internet of things,nb-iot)、长期演进(long term evolution,lte),也可以是第五代(5g)通信系统,还可以是lte与5g混合架构、也可以是5g新无线(new radio,nr)系统以及未来通信发展中出现的新的通信系统等。本技术所述的5g通信系统可以包括非独立组网(non-standalone,nsa)的5g通信系统、独立组网(standalone,sa)的5g通信系统中的至少一种。通信系统还可以是公共陆地移动网络(public land mobile network,plmn)网络、设备到设备(device-to-device,d2d)网
nodeb),还可以是新无线控制器(new radio controller,nr controller),可以是5g系统中的gnode b(gnb),可以是集中式网元(centralized unit,cu),可以是新无线基站,可以是射频拉远模块,可以是微基站,可以是中继(relay),可以是分布式网元(distributed unit,du),可以是家庭基站,可以是传输接收点(transmission reception point,trp)或传输点(transmission point,tp)或者任何其它无线接入设备,但本技术实施例不限于此。网络设备可以覆盖1个或多个小区。
94.本技术实施例描述的网络架构以及业务场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
95.网络编码主要用于多播网络中,在中间节点进行编码以提高信息传输速率。在网络编码中,发送端、接收端和中间节点要保持一致的在同一个有限域(gf)里进行编解码,例如若发送端选择了例如在阶数为28的有限域进行编码,则要求所有参与网络编码的中间节点也要在阶数为28的有限域进行重编码,所有的接收端都要在阶数为28的有限域进行解码;所以,所有参与网络编码的网络节点设备需要支持针对每个流或每个应用配置成与发送端、接收端一致的编解码参数。
96.但是,发送端、接收端与中间节点要保持一致的在同一个有限域里进行编解码,但中间节点通常编码算力受限,成为吞吐量瓶颈。
97.其次,终端计算能力相差甚远,可能导致组播或单播应用无法开展。例如,计算能力有限的低功耗iot设备、电视等家用设备,只能用阶数较小的有限域,如阶数为21的有限域,进行编解码,以减少开销和计算成本;而服务器、计算机或智能手机等高计算能力的设备,能处理gf(28)以上的有限域的编解码。所以,当考虑组播应用时,若发送端选择了例如在gf(28)的有限域进行编码,则要求所有的接收端都要在gf(28)的有限域进行解码,计算机或智能手机等接收设备计算能力可以满足解码要求顺畅解码,但同一个组播树下的电视等设备却因计算能力不足无法解码,从而导致组播应用无法开展,例如,如图3所示。当考虑单播应用时,中间节点往往为了消除编码算力受限而导致的吞吐量瓶颈而选择在低次有限域,如gf(21),进行编解码,而发送端和接收端也要在同一个有限域(即gf(21))里进行编解码,但由于gf(21)里进行编解码性能较差导致发送端与接收端间的通信不能满足上层应用的服务质量(quality of service,qos)需求,例如,如图4所示。
98.此外,中间节点需要支持针对每个流或每个应用配置的与收发端一致的编解码参数,每个流或每个应用都要配置成本很高,中间节点上的配置无法及时调整以适应每个流或每个应用的需求、有限域选择的变化。比如发现中间节点1故障,要切换到另一个路径,又要重新协商收发端与另一路径上中间节点2的有限域配置,路径切换时延大。
99.基于此,本技术实施例提供一种网络编码方法及装置,用于解决数据传输性能较差的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
100.应理解,本技术实施例中“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,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可以是单个,也可以是多个。
101.另外,需要理解的是,在本技术的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序,也不代表个数。
102.本技术实施例中涉及的“第一有限域”为网络中阶数最低的有限域,例如,目前网络中阶数最低的有限域为gf(21),则第一有限域可以为gf(21),若在未来通信发展为网络中阶数最低的有限域其他有限域,第一有限域也可以为其他有限域。
103.本技术实施例中涉及的“高阶有限域”为阶数高于第一有限域的有限域。
104.下面结合附图对本技术实施例提供的方法进行具体说明。
105.本技术提供一种网络编码方法,该方法可以应用于图1或图2所示的通信系统,在该通信系统中,在发送端和接收端之间可以存在中间节点对发送端发送的报文进行重编码,或者发送端和接收端之间也可以没有中间节点,或者发送端和接收端之间存在中间节点但是中间节点不进行重编码,本技术不做具体限定。下面对发送端侧、中间节点侧、接收端侧的方法分别进行描述。
106.参见图5,为本技术提供的一种网络编码方法的流程示意图,该方法可以应用于发送端,发送端可以是通信设备或者芯片或者芯片组等。该方法包括:
107.s501,发送端对一个组(generation)中的k个源数据块进行编码,得到多个编码数据块,其中,k为大于0的整数,多个编码数据块中至少两个编码数据块采用的编码系数对应的有限域的阶不同。
108.其中,一个组中可以包括一个待编码序列,也可以包括多个待编码序列。
109.一种实现方式中,发送端在对一个组中的k个源数据块进行编码,得到多个编码数据块时,可以将k个源数据块与第一编码矩阵进行第一编码运算,得到多个编码数据块,其中,第一编码矩阵包括至少两种不同阶有限域的编码系数。
110.需要说明的是,本技术实施例中涉及的编码矩阵(如第一编码矩阵、第二编码矩阵等)可以包括多组编码系数,其中,编码矩阵的一行元素为一组编码系数,或者,编码矩阵的一列元素为一组编码系数。将多个数据块与编码矩阵进行相乘时,可以将多个数据块与每组编码系数进行相乘,例如,若编码矩阵的一行元素为一组编码系数,将k个源数据块与第一编码矩阵进行第一编码运算时,可以将第一编码矩阵的每一行元素分别与k个源数据块相乘。若编码矩阵的一列元素为一组编码系数,将k个源数据块与第一编码矩阵进行第一编码运算时,可以将第一编码矩阵的每一列元素分别与k个源数据块相乘。为了描述上的方便,下面以编码矩阵的一行元素为一组编码系数为例进行说明。应理解,编码矩阵的一列元素为一组编码系数时发送端对源数据块进行编码的逻辑,与编码矩阵的一行元素为一组编码系数时发送端对源数据块进行编码的逻辑类似。
111.进一步的,发送端还可以根据k个源数据块生成h1个报文,并发送h1个报文。h1个报文中每个报文携带至少一个源数据块以及源数据块对应的编码系数,其中,k个源数据块对应的编码系数构成对角线元素为1,且除对角线元素以外的其他元素为0的k
×
k矩阵,矩阵中的任一行元素为k个源数据块中一个源数据块对应的k个编码系数,h1为大于0且不大
于k的整数。
112.换句话说,发送端输出的数据块包括:对一个组中的k个源数据块进行编码得到多个编码数据块,还可以包括该k个源数据块。
113.一种举例说明中,如图6所示,假设一个组包含k个源数据块即p1~pk,发送端根据p1~pk生成一系列在不同有限域的编码数据c1…cn
,其中,c1为p1~pk在gf(2
t
)有限域中进行编码得到的编码数据块,即发送端采用gf(2
t
)有限域中的编码系数a
1,1
~a
1,k
对p1~pk进行编码得到c1,其中,t可以为大于1的整数。c1可以满足如下公式:
[0114][0115]
其中,α
1,1

α
1,k
为gf(2
t
)有限域中的随机编码系数。
[0116]cn
为p1~pk在gf(2s)有限域中进行编码得到的编码数据块,即发送端采用gf(2s)有限域中的编码系数a
n,1
~a
n,k
对p1~pk进行编码得到cn,其中,s可以为大于1的整数。cn可以满足如下公式:
[0117][0118]
其中,α
n,1

α
n,k
为gf(2s)有限域中的随机编码系数。
[0119]
发送端还可以根据p1~pk生成m个在gf(21)有限域的编码数据b1…bm
,即发送端采用gf(21)有限域中的编码系数α

1,1
~α

1,k
对p1~pk进行编码得到b1,采用gf(21)有限域中的编码系数α

2,1
~α

2,k
对p1~pk进行编码得到b2,以此类推,采用gf(21)有限域中的编码系数α

m1
~α

mk
对p1~pk进行编码得到bm。以bm为例,bm可以满足如下公式:
[0120][0121]
其中,α

m,1

α

m,k
为gf(21)有限域中的随机编码系数。
[0122]
发送端输出的数据块包括:{p1…
pk}u{c1…cn
}u{b1…bm
}。为了描述上的方便,下面将发送端发送出去的数据块统一称为“输出数据块”。
[0123]
需要说明的是,本技术实施例中,发送端在编码时,无论采用何种方式进行编码,同一有限域的编码数据块的个数可以为1个或多个,例如gf(2
t
)有限域的编码数据块可以有1个,例如c1,也可以有多个,例如,c1…ch
。gf(2s)有限域的编码数据块也可以有1个,例如c
h 1
,也可以有多个c
h 1
…ch p
,h和p为大于1的整数,这里统一说明,下面不再重复赘述。
[0124]
示例性的,下面以一个组包括4个源数据块p1…
p4,发送端在gf(2n)有限域、gf(2
n-1
)有限域、gf(23)有限域、gf(22)有限域、gf(21)有限域进行编码,其中,gf(21)为网络中阶数最低的有限域,每个有限域得到一个编码数据块为例进行说明,如图7所示。
[0125]
发送端将第一编码矩阵与p1~p4进行相乘,其中,第一编码矩阵为9
×
4的矩阵,其中,第1~4行构成对角线元素为1,且除对角线元素以外的其他元素为0的4
×
4矩阵。第一编码矩阵中第1行编码系数与p1~p4进行相乘,得到p1。第一编码矩阵中第2行编码系数与p1~p4进行相乘,得到p2。第一编码矩阵中第3行编码系数与p1~p4进行相乘,得到p3。第一编码矩阵中第4行编码系数与p1~p4进行相乘,得到p4。需要说明的是,图7所示的第一编码矩阵中前4行编码系数也可以不与p1…
p4进行相乘,而是在发送p1~p4时携带相应的编码系数,例如,在发送p1时携带第一编码矩阵中第1行编码系数,在发送p2时携带第一编码矩阵中第2行编码系数等等。
[0126]
第一编码矩阵第5行为gf(2n)有限域的一组编码系数{α
1,1

α
1,4
},第一编码矩阵
中第5行编码系数与p1~p4进行相乘,得到c1。因此,c1对应的一组编码系数为{α
1,1

α
1,4
}。
[0127]
第一编码矩阵第6行为gf(2
n-1
)有限域的一组编码系数{α
2,1

α
2,4
},第一编码矩阵中第6行编码系数与p1~p4进行相乘,得到c2。因此,c2对应的一组编码系数为{α
2,1

α
2,4
}。
[0128]
第一编码矩阵第7行为gf(23)有限域的一组编码系数{α
3,1

α
3,4
},第一编码矩阵中第7行编码系数与p1~p4进行相乘,得到c3。因此,c3对应的一组编码系数为{α
3,1

α
3,4
}。
[0129]
第一编码矩阵第8行为gf(22)有限域的一组编码系数{α
4,1

α
4,4
},第一编码矩阵中第8行编码系数与p1~p4进行相乘,得到c4。因此,c4对应的一组编码系数为{α
4,1

α
4,4
}。
[0130]
第一编码矩阵第9行为gf(21)有限域的一组编码系数{β
m,1

β
m,4
}。第一编码矩阵中第9行编码系数与p1~p4进行相乘,得到b1。因此,b1对应的一组编码系数为{β
m,1

β
m,4
}。
[0131]
在该实现方式中,发送端发送的输出数据块包括p1~p4、c1~c4、b1,且在发送p1时携带第一编码矩阵中第1行编码系数{1000},在发送p2时携带第一编码矩阵中第2行编码系数{0100},在发送p3时携带第一编码矩阵中第3行编码系数{0010},在发送p4时携带第一编码矩阵中第4行编码系数{0001},在发送c1时携带第一编码矩阵中第5行编码系数{α
1,1

α
1,4
},在发送c2时携带第一编码矩阵中第6行编码系数{α
2,1

α
2,4
},在发送c3时携带第一编码矩阵中第7行编码系数{α
3,1

α
3,4
},在发送c4时携带第一编码矩阵中第8行编码系数{α
4,1

α
4,4
},在发送b1时携带第一编码矩阵中第9行编码系数{β
m,1

β
m,4
}。
[0132]
应理解,图7仅是一种示例性说明,并不多各有限域的编码系数在第一编码矩阵中的位置进行具体限定。
[0133]
另一种实现方式中,发送端在对一个组中的k个源数据块进行编码,得到多个编码数据块时,可以进行两步编码运算,通过第一步编码运算得到多个中间数据块,在第二步编码运算中对该多个中间数据块进行编码,得到输出数据块。
[0134]
一种举例说明中,如图8所示,假设一个组包含k个源数据块即p1~pk,发送端根据p1~pk生成一系列在不同有限域的编码数据c1…cn
,其中,c1为p1~pk在gf(2
t
)有限域中进行编码得到的编码数据块,即发送端采用gf(2
t
)有限域中的编码系数a
1,1
~a
1,k
对p1~pk进行编码得到c1,其中,t可以为大于1的整数。c1可以满足如下公式:
[0135][0136]
其中,α
1,1

α
1,k
为gf(2
t
)有限域中的随机编码系数。
[0137]cn
为p1~pk在gf(2s)有限域中进行编码得到的编码数据块,即发送端采用gf(2s)有限域中的编码系数a
n,1
~a
n,k
对p1~pk进行编码得到cn,其中,s可以为大于1的整数。cn可以满足如下公式:
[0138][0139]
其中,α
n,1

α
n,k
为gf(2s)有限域中的随机编码系数。
[0140]
发送端还可以根据p1~pk以及c1~cn生成m个在gf(21)有限域的编码数据b1…bm
,即发送端采用gf(21)有限域中的编码系数α

1,1
~α

1,k
、α

1,k 1
~α

1,k n
对p1~pk以及c1~cn进行编码得到b1,采用gf(21)有限域中的编码系数α

2,1
~α

2,k
~α

1,k
、α

2,k 1
~α

2,k n
对p1~pk以及c1~cn进行编码得到b2,以此类推,采用gf(21)有限域中的编码系数α

m,1
~α

m,k
、α

m,k 1
~α

m,k n
对p1~pk以及c1~cn进行编码得到bm。以bm为例,bm可以满足如下公式:
[0141]
[0142]
其中,α

m,1

α

m,k

α

m,k n
为gf(21)有限域中的随机编码系数。
[0143]
发送端输出的输出数据块包括:{p1…
pk}u{c1…cn
}u{b1…bm
},或者{c1…cn
}u{b1…bm
},或者{b1…bm
}。
[0144]
例如,一种可能的实施方式中,发送端在对一个组中的k个源数据块进行编码,得到多个编码数据块时,可以将k个源数据块与第二编码矩阵进行第二编码运算,得到n1个编码数据块,其中,n1为大于0的整数。然后,将n1个编码数据块以及k个源数据块与第三编码矩阵进行第三编码运算,得到m个编码数据块,其中,m为大于0的整数。这种实现方式中,发送端要输出的输出数据块包括n1个编码数据块以及m个编码数据块。
[0145]
其中,第二编码矩阵包括的第一编码系数对应的有限域的阶均高于第一有限域的阶,第一有限域为网络中阶数最低的有限域,例如,目前网络中阶数最低的有限域为gf(21),则第一有限域可以为gf(21),若在未来通信发展为网络中阶数最低的有限域其他有限域,第一有限域也可以为其他有限域。第三编码矩阵包括的编码系数均属于第一有限域。
[0146]
进一步的,发送端还可以根据k个源数据块生成h2个报文,h2个报文中每个报文携带至少一个源数据块以及源数据块对应的编码系数,h2为大于0且不大于k的整数。
[0147]
其中,k个源数据块对应的编码系数以及n1个编码数据块对应的第二编码系数构成对角线元素为1,且除对角线元素以外的其他元素为0的(k n1)
×
(k n1)矩阵,矩阵中的任一行元素为k个源数据块中一个源数据块对应的k n1个编码系数或者n1个编码数据块中一个编码数据块对应的k n1个编码系数,第二编码系数为n1个编码数据块对应的编码系数中除第二编码运算采用的第一编码系数以外的编码系数。
[0148]
换句话说,发送端输出的输出数据块包括m个编码数据块,或者包括n1个编码数据块以及m个编码数据块,还可以包括该k个源数据块、n1个编码数据块以及m个编码数据块。发送端在输出这些输出数据块时,可以采用一个报文携带一个数据块的方式进行发送,也可以采用一个报文携带多个数据块的方式进行发送,这里不做具体限定。
[0149]
示例性的,下面以一个组包括4个源数据块p1…
p4,发送端在gf(2n)有限域、gf(2
n-1
)有限域、gf(23)有限域、gf(22)有限域、gf(21)有限域进行编码,其中,gf(21)为网络中阶数最低的有限域,每个有限域得到一个编码数据块为例进行说明。
[0150]
如图9所示,第二编码运算过程为:发送端将第二编码矩阵与p1~p4进行相乘,其中,第二编码矩阵为8
×
4的矩阵,其中,第1~4行构成对角线元素为1,且除对角线元素以外的其他元素为0的4
×
4矩阵。第二编码矩阵中第1行编码系数与p1~p4进行相乘,得到p1。第二编码矩阵中第2行编码系数与p1~p4进行相乘,得到p2。第二编码矩阵中第3行编码系数与p1~p4进行相乘,得到p3。第二编码矩阵中第4行编码系数与p1~p4进行相乘,得到p4。需要说明的是,图9所示的第二编码矩阵中前4行编码系数也可以不与p1…
p4进行相乘,或者第二编码矩阵不包括该对角线元素为1,且除对角线元素以外的其他元素为0的4
×
4矩阵,而是在进行第三编码运算时根据p1~p4进行编码。
[0151]
第二编码矩阵第5行为gf(2n)有限域的一组编码系数{α
1,1

α
1,4
},第二编码矩阵中第5行编码系数与p1~p4进行相乘,得到c1。因此,c1对应的一组编码系数为{α
1,1

α
1,4
}。
[0152]
第二编码矩阵第6行为gf(2
n-1
)有限域的一组编码系数{α
2,1

α
2,4
},第二编码矩阵中第6行编码系数与p1~p4进行相乘,得到c2。因此,c2对应的一组编码系数为{α
2,1

α
2,4
}。
[0153]
第二编码矩阵第7行为gf(23)有限域的一组编码系数{α
3,1

α
3,4
},第二编码矩阵
中第7行编码系数与p1~p4进行相乘,得到c3。因此,c3对应的一组编码系数为{α
3,1

α
3,4
}。
[0154]
第二编码矩阵第8行为gf(22)有限域的一组编码系数{α
4,1

α
4,4
},第二编码矩阵中第8行编码系数与p1~p4进行相乘,得到c4。因此,c4对应的一组编码系数为{α
4,1

α
4,4
}。
[0155]
如图10所示,第三编码运算过程为:发送端将第三编码矩阵与p1~p4以及c1~c4进行相乘,其中,第三编码矩阵为9
×
8的矩阵,其中,第1~8行构成对角线元素为1,且除对角线元素以外的其他元素为0的8
×
8矩阵。第三编码矩阵中第1行编码系数与p1~p4以及c1~c4进行相乘,得到p1。第三编码矩阵中第2行编码系数与p1~p4以及c1~c4进行相乘,得到p2。第三编码矩阵中第3行编码系数与p1~p4以及c1~c4进行相乘,得到p3。第三编码矩阵中第4行编码系数与p1~p4以及c1~c4进行相乘,得到p4。第三编码矩阵中第5行编码系数与p1~p4以及c1~c4进行相乘,得到c1。第三编码矩阵中第6行编码系数与p1~p4以及c1~c4进行相乘,得到c2。第三编码矩阵中第7行编码系数与p1~p4以及c1~c4进行相乘,得到c3。第三编码矩阵中第8行编码系数与p1~p4以及c1~c4进行相乘,得到c4。需要说明的是,图10所示的第三编码矩阵中前8行编码系数也可以不与p1~p4以及c1~c4进行相乘,而是在发送p1~p4以及c1~c4时携带相应的编码系数,例如,在发送p1时携带第三编码矩阵中第1行编码系数,在发送p2时携带第三编码矩阵中第2行编码系数等等。
[0156]
第三编码矩阵第9行为gf(21)有限域的一组编码系数{β
m,1

β
m,4
}。第三编码矩阵中第9行编码系数与p1~p4以及c1~c4进行相乘,得到b1。因此,b1对应的一组编码系数为{β
m,1

β
m,8
}。
[0157]
在该实现方式中,发送端发送的输出数据块包括p1~p4、c1~c4、b1,且在发送p1时携带的一组编码系数为第三编码矩阵中第1行编码系数{10000000},在发送p2时携带的一组编码系数为第三编码矩阵中第2行编码系数{01000000},在发送p3时携带的一组编码系数为第三编码矩阵中第3行编码系数{00100000},在发送p4时携带的一组编码系数为第三编码矩阵中第4行编码系数{00010000}。在发送c1时携带的一组编码系数为第二编码矩阵中第5行编码系数{α
1,1

α
1,4
}以及第三编码矩阵中第5行编码系数{00001000},在发送c2时携带的一组编码系数为第二编码矩阵中第6行编码系数{α
2,1

α
2,4
}以及第三编码矩阵中第6行编码系数{00000100},在发送c3时携带的一组编码系数为第二编码矩阵中第7行编码系数{α
3,1

α
3,4
}以及第三编码矩阵中第7行编码系数{00000010},在发送c4时携带的一组编码系数为第二编码矩阵中第8行编码系数{α
4,1

α
4,4
}以及第三编码矩阵中第8行编码系数{00000001},在发送b1时携带的一组编码系数为第三编码矩阵中第9行编码系数{β
m,1

β
m,8
}。
[0158]
又例如,另一种可能的实施方式中,发送端在对一个组中的k个源数据块进行编码,得到多个编码数据块时,可以将k个源数据块与第四编码矩阵进行第四编码运算,得到n2个中间数据块,其中,n2为大于0的整数。然后,将n2个中间数据块以及k个源数据块与第五编码矩阵进行第五编码运算,得到多个编码数据块。这种实现方式中,发送端要输出的输出数据块包括第五编码运算得到的编码数据块。
[0159]
其中,第四编码矩阵包括的编码系数对应的有限域的阶均高于第一有限域的阶,第一有限域为网络中阶数最低的有限域,例如,目前网络中阶数最低的有限域为gf(21),则第一有限域可以为gf(21),若在未来通信发展为网络中阶数最低的有限域其他有限域,第一有限域也可以为其他有限域。第五编码矩阵包括的编码系数均属于第一有限域。
[0160]
示例性的,下面以一个组包括4个源数据块p1…
p4,发送端在gf(2n)有限域、gf(2
n-1
)有限域、gf(23)有限域、gf(22)有限域、gf(21)有限域进行编码,其中,gf(21)为网络中阶数最低的有限域,每个有限域得到一个编码数据块为例进行说明。
[0161]
如图11所示,第四编码运算过程为:发送端将第四编码矩阵与p1~p4进行相乘,其中,第四编码矩阵为8
×
4的矩阵,其中,第1~4行构成对角线元素为1,且除对角线元素以外的其他元素为0的4
×
4矩阵。第四编码矩阵中第1行编码系数与p1~p4进行相乘,得到p1。第四编码矩阵中第2行编码系数与p1~p4进行相乘,得到p2。第四编码矩阵中第3行编码系数与p1~p4进行相乘,得到p3。第四编码矩阵中第4行编码系数与p1~p4进行相乘,得到p4。需要说明的是,图9所示的第四编码矩阵中前4行编码系数也可以不与p1…
p4进行相乘,或者第四编码矩阵不包括该对角线元素为1,且除对角线元素以外的其他元素为0的4
×
4矩阵,而是在进行第三编码运算时根据p1~p4进行编码。
[0162]
第四编码矩阵第5行为gf(2n)有限域的一组编码系数{α
1,1

α
1,4
},第四编码矩阵中第5行编码系数与p1~p4进行相乘,得到c1。因此,c1对应的一组编码系数为{α
1,1

α
1,4
}。
[0163]
第四编码矩阵第6行为gf(2
n-1
)有限域的一组编码系数{α
2,1

α
2,4
},第四编码矩阵中第6行编码系数与p1~p4进行相乘,得到c2。因此,c2对应的一组编码系数为{α
2,1

α
2,4
}。
[0164]
第四编码矩阵第7行为gf(23)有限域的一组编码系数{α
3,1

α
3,4
},第四编码矩阵中第7行编码系数与p1~p4进行相乘,得到c3。因此,c3对应的一组编码系数为{α
3,1

α
3,4
}。
[0165]
第四编码矩阵第8行为gf(22)有限域的一组编码系数{α
4,1

α
4,4
},第四编码矩阵中第8行编码系数与p1~p4进行相乘,得到c4。因此,c4对应的一组编码系数为{α
4,1

α
4,4
}。
[0166]
如图12所示,第五编码运算过程为:发送端将第五编码矩阵与p1~p4以及c1~c4进行相乘,其中,第五编码矩阵为8
×
8的矩阵,且第五编码矩阵包括的编码系数属于gf(21)。
[0167]
第五编码矩阵中第1行编码系数为gf(21)有限域的一组编码系数{β
1,1

β
1,8
}。第五编码矩阵中第1行编码系数{β
1,1

β
1,8
}与p1~p4以及c1~c4进行相乘,得到b1。因此,b1对应的一组编码系数为{β
1,1

β
1,8
}。
[0168]
第五编码矩阵中第2行编码系数为gf(21)有限域的一组编码系数{β
2,1

β
2,8
}。第五编码矩阵中第2行编码系数{β
2,1

β
2,8
}与p1~p4以及c1~c4进行相乘,得到b2。因此,b2对应的一组编码系数为{β
2,1

β
2,8
}。
[0169]
第五编码矩阵中第3行编码系数为gf(21)有限域的一组编码系数{β
3,1

β
3,8
}。第五编码矩阵中第3行编码系数{β
3,1

β
3,8
}与p1~p4以及c1~c4进行相乘,得到b3。因此,b3对应的一组编码系数为{β
3,1

β
3,8
}。
[0170]
第五编码矩阵中第4行编码系数为gf(21)有限域的一组编码系数{β
4,1

β
4,8
}。第五编码矩阵中第4行编码系数{β
4,1

β
4,8
}与p1~p4以及c1~c4进行相乘,得到b4。因此,b4对应的一组编码系数为{β
4,1

β
4,8
}。
[0171]
第五编码矩阵中第5行编码系数为gf(21)有限域的一组编码系数{β
5,1

β
5,8
}。第五编码矩阵中第5行编码系数{β
5,1

β
5,8
}与p1~p4以及c1~c4进行相乘,得到b5。因此,b5对应的一组编码系数为{β
5,1

β
5,8
}。
[0172]
第五编码矩阵中第6行编码系数为gf(21)有限域的一组编码系数{β
6,1

β
6,8
}。第五编码矩阵中第6行编码系数{β
6,1

β
6,8
}与p1~p4以及c1~c4进行相乘,得到b6。因此,b6对应的一组编码系数为{β
6,1

β
6,8
}。
[0173]
第五编码矩阵中第7行编码系数为gf(21)有限域的一组编码系数{β
7,1

β
7,8
}。第五编码矩阵中第7行编码系数{β
7,1

β
7,8
}与p1~p4以及c1~c4进行相乘,得到b7。因此,b7对应的一组编码系数为{β
7,1

β
7,8
}。
[0174]
第五编码矩阵中第8行编码系数为gf(21)有限域的一组编码系数{β
8,1

β
8,8
}。第五编码矩阵中第8行编码系数{β
8,1

β
8,8
}与p1~p4以及c1~c4进行相乘,得到b8。因此,b8对应的一组编码系数为{β
8,1

β
8,8
}。
[0175]
在该实现方式中,发送端发送的输出数据块包括b1~b8,且在发送b1时携带的一组编码系数为第五编码矩阵中第1行编码系数{β
1,1

β
1,8
},在发送b2时携带的一组编码系数为第五编码矩阵中第2行编码系数{β
2,1

β
2,8
},在发送b3时携带的一组编码系数为第五编码矩阵中第3行编码系数{β
3,1

β
3,8
},在发送b4时携带的一组编码系数为第五编码矩阵中第4行编码系数{β
4,1

β
4,8
}。在发送b5时携带的一组编码系数为第四编码矩阵中第5行编码系数{α
1,1

α
1,4
}以及第五编码矩阵中第5行编码系数{β
5,1

β
5,8
},在发送b6时携带的一组编码系数为第四编码矩阵中第6行编码系数{α
2,1

α
2,4
}以及第五编码矩阵中第6行编码系数{β
6,1

β
6,8
},在发送b7时携带的一组编码系数为第四编码矩阵中第7行编码系数{α
3,1

α
3,4
}以及第五编码矩阵中第7行编码系数{β
7,1

β
7,8
},在发送b8时携带的一组编码系数为第四编码矩阵中第8行编码系数{α
4,1

α
4,4
}以及第五编码矩阵中第8行编码系数{β
8,1

β
8,8
}。
[0176]
s502,发送端根据多个编码数据块生成一个或多个报文,其中,每个报文中携带至少一个编码数据块以及编码数据块对应的编码系数。
[0177]
需要说明的是,本技术实施例中,发送端在发送输出数据块时,可以采用一个报文携带一个数据块的方式进行发送,也可以采用一个报文携带多个数据块的方式进行发送,这里不做具体限定。
[0178]
以发送端在通过一个报文携带一个输出数据块的方式发送数据块为例,发送端可以针对每个输出数据块添加报文头构成报文,并在报文头或报文尾添加相应的编码系数后随报文发送。
[0179]
可选的,发送端还可以在报文中携带指示信息,指示信息用于指示报文所携带输出数据块对应的有限域的阶。示例性的,指示信息可以是有限域对应的幂的取值,例如,假设有限域的阶数为22,则指示信息可以为2。
[0180]
s503,发送端发送一个或多个报文。
[0181]
本技术实施例中,发送端通过在多个有限域内对源数据块进行编码,使得接收端可以接收不同有限域的报文,从而接收端可以根据自身算力和应用需求自主选择有限域进行编解码。
[0182]
参见图13,为本技术提供的一种网络编码方法的流程示意图,该方法可以应用于中间节点,中间节点可以是通信设备或者芯片或者芯片组等。该方法包括:
[0183]
s1301,中间节点接收n个报文,其中,n为大于1的整数,一个报文中携带a1个数据块以及a1个数据块对应的编码系数,a1为大于0的整数,n个报文所携带编码系数对应的有限域为一个或多个。
[0184]
示例性的,中间节点可以接收上一跳节点发送的报文,上一跳节点可以是另一个中间节点,也可以是发送端。
[0185]
s1302,中间节点根据如下信息中的一项或多项确定重编码的有限域:中间节点的编码算力、n个报文所携带编码系数对应的有限域、网络负载。
[0186]
示例性的,中间节点根据中间节点的编码算力确定重编码的有限域时,若中间节点的编码算力比较强,可以确定一个或多个阶数较高的有限域作为重编码的有限域,若中间节点的编码算力比较弱,可以确定一个或多个阶数较低的有限域作为重编码的有限域。
[0187]
中间节点根据网络负载确定重编码的有限域时,若网络负载较小,可以确定一个或多个阶数较高的有限域作为重编码的有限域,若网络负载较大,可以确定一个或多个阶数较低的有限域作为重编码的有限域。
[0188]
中间节点根据n个报文所携带编码系数对应的有限域确定重编码的有限域时,可以确定n个报文所携带编码系数对应的有限域中最高阶的有限域为重编码的有限域。
[0189]
s1303,中间节点基于重编码的有限域将n个报文携带的数据块以及编码系数进行重编码,得到v个编码结果,v为大于0的整数。其中,重编码的有限域包括一个或多个有限域。
[0190]
在一些实施例中,中间节点可以将n个报文携带的数据块与第七编码矩阵进行编码运算,得到v个重编码后的数据块,将n个报文携带的编码系数与第七编码矩阵进行编码运算,得到v组重编码后的编码系数,一个编码结果包括一个重编码后的数据块以及对应的一组重编码后的编码系数。
[0191]
一种实现方式中,如图14所示,假设中间节点接收的报文为x1~xu,其中,一个报文可以包括一个数据块和该数据块对应的编码系数。中间节点将x1~xu与第七编码矩阵进行相乘,得到新报文y
u 1
~y
u v
。其中,第七编码矩阵包括的编码系数属于重编码的有限域,第七编码矩阵的第1行编码系数可以为{γ
1,1

γ
1,u
},x1~xu与{γ
1,1

γ
1,u
}相乘,得到y
u 1
,依次类推,第七编码矩阵的第v行编码系数可以为{γ
v,1

γ
v,u
},x1~xu与{γ
v,1

γ
v,u
}相乘,得到y
u v

[0192]
以y
u 1
为例,y
u 1
可以满足如下公式:
[0193][0194]
其中,γ
1,1

γ
1,u
为gf(2
t
)有限域中的随机编码系数。gf(2
t
)为中间节点确定的重编码的有限域。
[0195]
以y
u v
为例,y
u v
可以满足如下公式:
[0196][0197]
其中,γ
v,1

γ
v,u
为gf(2
t
)有限域中的随机编码系数。gf(2
t
)为中间节点确定的重编码的有限域。
[0198]
一种示例性说明中,假设u=2,v=1,若发送端采用图6所示的编码方式输出报文x1和x2,其中,x1携带的数据块包括f1~f4,x1携带的编码系数为α
1,1
和α
1,2
,x2携带的数据块包括e1~e4,x2携带的编码系数为α
2,1
和α
2,2
,第七编码矩阵包括随机重编码系数1和随机重编码系数2,中间节点将x1和x2进行重编码后得到新的编码数据和编码系数γ
11
和γ
12
,如图15所示。
[0199]
其中,γ
11
=d1α
1,1
d2α
2,1
,γ
12
=d1α
1,2
d2α
2,2
,x1=α
1,1
p1 α
1,2
p2,x2=α
2,1
p1 α
2,2
p2,其中,p1和p2为源数据块。
[0200]
所以,y
u 1
=d1x1 d2x2=d1α
1,1
p1 d1α
1,2
p2 d2α
2,1
p1 d2α
2,2
p2=γ
11
p1 γ
12
p2。可见,重编码报文y
u 1
是由源数据块p1和p2,按随机编码系数γ
11
和γ
12
编码后的新报文。中间网络节点将重编码报文y
u 1
报文头或报文尾携带相应域的编码系数γ
11
和γ
12
发送给下一跳。
[0201]
示例性的,α
1,1
和α
1,2
属于gf(2
t
)有限域,α
2,1
和α
2,2
属于gf(2s)有限域,若t≥s,x1和x2可以在gf(2
t
)有限域选择随机重编码系数进行有限域运算。
[0202]
在gf(21)有限域,每个报文有1/2的概率与其它报文重编码生成重编码报文,因此上述方式中通过在阶数更高的有限域中进行重编码,可以增加重编码的成功概率。
[0203]
另一种示例性说明中,假设u=2,v=1,若发送端采用图8所示的编码方式输出报文x1和x2,其中,x1携带的数据块包括f1~f4,x1携带的编码系数为β
1,1

β
1,4
,x2携带的数据块包括e1~e4,x2携带的编码系数为β
2,1

β
2,4
,第七编码矩阵包括随机重编码系数1和随机重编码系数2,中间节点将x1和x2进行重编码后得到新的编码数据,和编码系数γ
11

γ
14
,如图16所示。
[0204]
其中,γ
11
=d1β
1,1
d2β
2,1
,γ
12
=d1β
1,2
d2β
2,2
,γ
13
=d1β
1,3
d2β
2,3
,γ
14
=d1β
1,4
d2β
2,4
,x1=β
1,1
p1 β
1,2
p2 β
1,3
c1 β
1,4
c2,x2=β
2,1
p1 β
2,2
p2 β
2,3
c1 β
2,4
c2,其中,p1和p2为源数据块,c1和c2为发送端对p1和p2进行第四编码运算得到的中间数据块。
[0205]
所以,y
u 1
=d1x1 d2x2[0206]
=d1α

1,1
p1 d1α

1,2
p2 d1α

1,3
c1 d1α

1,4
c2 d2α

2,1
p1 d2α

2,2
p2 d2α

2,3
c1 d2α

2,4
c2[0207]
=γ
11
p1 γ
12
p2 γ
13
c1 γ
14
c2。
[0208]
可见,重编码报文y
u 1
是由源数据块p1和p2、中间数据块c1和c2,按随机编码系数γ
11

γ
14
编码后的新报文。中间网络节点将重编码报文y
u 1
报文头或报文尾携带相应域的编码系数γ
11
和γ
12
发送给下一跳。
[0209]
s1304,中间节点发送m1个重编码后的报文,一个重编码后的报文中携带至少一个编码结果,m1为大于0且不大于v的整数。
[0210]
一种实现方式中,中间节点在发送编码结果时,可以采用一个报文携带一个编码结果的方式进行发送,也可以采用一个报文携带多个编码结果的方式进行发送,这里不做具体限定。
[0211]
以中间节点在通过一个报文携带一个编码结果的方式发送编码结果为例,中间节点可以针对每个编码结果添加报文头构成报文,并在报文头或报文尾添加相应的编码系数后随报文发送。
[0212]
可选的,编码结果还可以在报文中携带指示信息,指示信息用于指示报文所携带编码结果对应的重编码的有限域的阶。示例性的,指示信息可以是有限域对应的幂的取值,例如,假设有限域的阶数为22,则指示信息可以为2。
[0213]
本技术实施例中,中间节点通过对发送端输出的报文进行重编码,从而发送端和中间节点可以构成一种分布式的编码,也就是说,发送端编码一部分,中间节点再编码另一部分,通过这种方式发送端可以进行复杂度较低的编码,通过中间节点对发送端输出的报文进行进一步重编码,从而可以降低网络负载,提高传输效率。
[0214]
并且,中间节点可以根据自身编码算力、接收的报文所携带编码系数对应的有限域、网络负载等确定重编码的有限域。例如,中间节点接收组播报文,低算力中间节点可在低次有限域做重编码,然后复制重编码后的报文,发送给所有加入组播组的接收端;高算力
中间节点可在更高次有限域做重编码,然后复制重编码后的报文,发送给所有加入组播组的接收端;或者,中间节点在计算负载重时,可先在低次有限域做recoding,当计算负载变轻时,可切到更高次有限域做recoding,然后复制重编码后的报文,发送给所有加入组播组的接收端。
[0215]
又例如,中间节点接收单播报文,低算力中间节点可在低次有限域(例如gf(21))做重编码,然后发送给接收端;高算力中间节点可在更高次有限域(例如gf(22))做重编码,然后发送给接收端;或者,中间节点在计算负载重时,可先在低次有限域(例如gf(21))做重编码,当计算负载变轻时,可切到更高次有限域(例如gf(24))做重编码,然后发送给接收端;或者,当中间节点1负载重时只能勉强可在低次有限域(例如gf(21))做重编码,用户业务体验不好,可以选择切换到轻载路径,在负载轻的中间节点2可在更高次有限域(例如gf(22))做重编码,提升用户业务体验。再如,发现中间节点1故障,要切换到另一个路径,不需要重新协商收发端与另一路径上中间节点2的有限域配置,路径切换可以直接切换,路径切换时延小。
[0216]
参见图17,为本技术提供的一种网络编码方法的流程示意图,该方法可以应用于接收端,接收端可以是通信设备或者芯片或者芯片组等。该方法包括:
[0217]
s1701,接收端针对一个组中的k个源数据块,接收多个报文,其中,k为大于0的整数,一个报文携带至少一个数据块以及每个数据块对应的一组编码系数。
[0218]
s1702,接收端采用第一译码方式或者第二译码方式或者第三译码方式或者第四译码方式或者第五译码方式对多个报文进行译码。
[0219]
一种实现方式中,若发送端采用图6所示的方式进行编码,接收端可以采用第一译码方式或者第二译码方式或者第三译码方式对多个报文进行译码。
[0220]
第一译码方式为将多个报文在第一有限域内进行译码,第一有限域为网络中阶数最低的有限域,例如,目前网络中阶数最低的有限域为gf(21),则第一有限域可以为gf(21),若在未来通信发展为网络中阶数最低的有限域其他有限域,第一有限域也可以为其他有限域。
[0221]
在一些实施例中,若发送端采用图6所示的方式进行编码,在第一译码方式中,多个报文可以携带k个线性无关数据块,k个数据块对应的编码系数属于第一有限域。
[0222]
一种实现方式中,接收端可以在接收k个线性无关数据块后,若该k个数据块对应的编码系数均属于第一有限域,则接收端采用第一译码方式进行译码。
[0223]
另一种实现方式中,若接收端采用第一译码方式进行译码,接收端可以接收k个线性无关数据块,该k个数据块对应的编码系数均属于第一有限域。
[0224]
一种可能的实施方式中,接收端采用第一译码方式对多个报文进行译码时,可以将多个报文在第一有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。
[0225]
一种示例性说明中,假设发送端采用图6所示的方式进行编码,以第一有限域为gf(21),一个组包括4个源数据块的数量为例,接收端可以接收4个线性无关数据块x1~x4,其中,一个数据块对应的4个编码系数属于第一有限域,x1~x4对应的编码系数组成一个4
×
4的译码矩阵,译码矩阵中任一行元素为一个数据块对应的一组编码系数(即对应的4个编码
系数)。接收端将该译码矩阵进行高斯消元操作,将译码矩阵的对角线元素变换为1、其余元素变换为0,在译码矩阵变换时,报文x1…
x4净荷也按位同步变化,从而可以译码得到p1、p2、p3、p4。
[0226]
例如,假设x1对应的一组编码系数为{1010},x2对应的一组编码系数为{1111},x3对应的一组编码系数为{0010},x4对应的一组编码系数为{β
m,1

β
m,4
}。x1~x4对应的编码系数组成一个4
×
4的译码矩阵,其中,该译码矩阵的第1行为1010,该译码矩阵的第2行为1111,该译码矩阵的第3行为0010,该译码矩阵的第4行为β
m,1

β
m,4
。接收端将该译码矩阵在第一有限域内进行高斯消元,进过译码后的译码矩阵的第1行为1000,该译码矩阵的第2行为0100,该译码矩阵的第3行为0010,该译码矩阵的第4行为0001,如图18所示。
[0227]
第一译码方式可以提高译码速度,并且第一译码方式具有计算复杂度小、吞吐量高等优点。
[0228]
第二译码方式为将多个报文在第二有限域内进行译码,第二有限域为多个报文携带的编码系数对应的有限域中最高阶的有限域。
[0229]
在一些实施例中,在第二译码方式中,多个报文可以携带k个线性无关数据块,k个数据块对应的编码系数属于两个或两个以上的有限域。
[0230]
一种实现方式中,接收端可以在接收k个线性无关数据块后,若该k个数据块对应的编码系数属于两个或两个以上的有限域,则接收端采用第二译码方式进行译码。
[0231]
一种可能的实施方式中,接收端用第二译码方式对多个报文进行译码时,可以将多个报文在第二有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。
[0232]
一种示例性说明中,以一个组包括4个源数据块的数量为例,接收端可以接收4个线性无关数据块x1~x4,其中,x1对应的4个编码系数属于gf(21),x2对应的4个编码系数属于gf(21),x3对应的4个编码系数属于gf(2n)有限域,x4对应的4个编码系数属于gf(2
n-1
)有限域。x1~x4对应的编码系数组成一个4
×
4的译码矩阵,译码矩阵中任一行元素为一个数据块对应的一组编码系数(即对应的4个编码系数),如图19所示。接收端将该译码矩阵在gf(2n)有限域进行高斯消元操作,将译码矩阵的对角线元素变换为1、其余元素变换为0,在译码矩阵变换时,报文x1…
x4净荷也按位同步变化,从而可以译码得到p1、p2、p3、p4。
[0233]
由于实际中k》》n,所以译码矩阵中大部分系数为来自第一有限域的编码系数1或0,因此第二有限域的译码操作极少,可以极大简化第二有限域的运算复杂度。例如,根据图19所示,接收端可以对译码矩阵的第3行和第4行进行变换,得到p1、p2、p3、p4。
[0234]
另一种示例性说明中,以一个组包括4个源数据块的数量为例,接收端可以接收4个线性无关数据块x1~x4,其中,x1对应的4个编码系数属于gf(2n)有限域,x2对应的4个编码系数属于gf(2
n-1
)有限域,x3对应的4个编码系数属于gf(23)有限域,x4对应的4个编码系数属于gf(22)有限域。x1~x4对应的编码系数组成一个4
×
4的译码矩阵,译码矩阵中任一行元素为一个数据块对应的一组编码系数(即对应的4个编码系数),如图20所示。接收端将该译码矩阵进行高斯消元操作,将译码矩阵的对角线元素变换为1、其余元素变换为0,在译码矩阵变换时,报文x1…
x4净荷也按位同步变化,从而可以译码得到p1、p2、p3、p4。
[0235]
又一种示例性说明中,以一个组包括4个源数据块的数量为例,接收端可以接收4
个线性无关数据块x1~x4,其中,x1对应的4个编码系数属于gf(21)有限域,x2对应的4个编码系数属于gf(2n)有限域,x3对应的4个编码系数属于gf(2
n-1
)有限域,x4对应的4个编码系数属于gf(23)有限域。x1~x4对应的编码系数组成一个4
×
4的译码矩阵,译码矩阵中任一行元素为一个数据块对应的一组编码系数(即对应的4个编码系数),如图21所示。接收端将该译码矩阵进行高斯消元操作,将译码矩阵的对角线元素变换为1、其余元素变换为0,在译码矩阵变换时,报文x1…
x4净荷也按位同步变化,从而可以译码得到p1、p2、p3、p4。
[0236]
示例性的,若多个报文携带的数据块属于m种高阶有限域,第二译码方式也可以称为“混合m域译码器”,例如,图19混合了两种高阶有限域(即gf(2n)有限域和gf(2
n-1
)有限域),所以相应的译码方式称为“混合2域译码器”。又例如,图20混合了4种高阶有限域(即gf(2n)有限域、gf(2
n-1
)有限域、gf(23)有限域和gf(22)有限域),所以相应的译码方式可以称为“混合4域译码器”。再例如,图21混合了3种高阶有限域(即gf(2n)有限域、gf(2
n-1
)有限域和gf(23)有限域),所以相应的译码方式可以称为“混合3域译码器”。
[0237]
第二译码方式一方面可以提高译码速度,另一方面可以提高译码成功率,从而可以实现译码速度与译码成功率之间的均衡。
[0238]
第三译码方式为将多个报文在第三有限域内进行译码,第三有限域为多个报文携带的编码系数对应的有限域中除第一有限域以外的另一个有限域,第一有限域为网络中阶数最低的有限域。
[0239]
在一些实施例中,在第三译码方式中,多个报文携带k个线性无关数据块,且k个数据块中至少一个数据块对应的编码系数属于第一有限域,k个数据块中除至少一个数据块以外的其他数据块对应的编码系数属于第三有限域,第三有限域为不同于第一有限域的有限域。也就是,在第三译码方式中,k个数据块属于两个不同的有限域,其中一个为第一有限域。
[0240]
一种实现方式中,接收端可以在接收k个线性无关数据块后,若该k个数据块对应的编码系数属于两个不同的有限域,且其中一个有限域为第一有限域,则接收端采用第三译码方式进行译码。
[0241]
另一种实现方式中,若接收端采用第三译码方式进行译码,接收端可以接收k个线性无关数据块,该k个数据块对应的编码系数属于两个不同的有限域,且其中一个有限域为第一有限域。
[0242]
一种可能的实施方式中,接收端用第三译码方式对多个报文进行译码时,可以将多个报文在第三有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素变换为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。
[0243]
一种示例性说明中,以一个组包括4个源数据块的数量为例,接收端可以接收4个线性无关数据块x1~x4,其中,x1~x3对应的编码系数属于gf(21),x4对应的4个编码系数属于gf(2n)有限域。x1~x4对应的编码系数组成一个4
×
4的译码矩阵,译码矩阵中任一行元素为一个数据块对应的一组编码系数(即对应的4个编码系数),如图22所示。接收端将该译码矩阵进行高斯消元操作,将译码矩阵的对角线元素变换为1、其余元素变换为0,在译码矩阵变换时,报文x1…
x4净荷也按位同步变化,从而可以译码得到p1、p2、p3、p4。
[0244]
另一种示例性说明中,以一个组包括4个源数据块的数量为例,接收端可以接收4
个线性无关数据块x1~x4,其中,x1~x3对应的编码系数属于gf(21),x4对应的4个编码系数属于gf(22)有限域。x1~x4对应的编码系数组成一个4
×
4的译码矩阵,译码矩阵中任一行元素为一个数据块对应的一组编码系数(即对应的4个编码系数),如图23所示。接收端将该译码矩阵进行高斯消元操作,将译码矩阵的对角线元素变换为1、其余元素变换为0,在译码矩阵变换时,报文x1…
x4净荷也按位同步变化,从而可以译码得到p1、p2、p3、p4。
[0245]
第三译码方式中,数据块对应的编码系数出了第一有限域以外,只有一种有限域(即第三有限域),由于实际中k》》n,所以译码矩阵中大部分系数为来自第一有限域的编码系数1或0,因此第三有限域的译码操作极少,可以极大简化第三有限域的运算复杂度。例如,根据图22所示,接收端可以对译码矩阵的第4行进行变换,得到p1、p2、p3、p4。例如,根据图23所示,接收端可以对译码矩阵的第4行进行变换,得到p1、p2、p3、p4。
[0246]
在一些实施例中,接收端可以根据译码策略选择使用的译码方式。例如,若译码策略为追求译码速度快、计算复杂度小,或吞吐量高,则接收端可以采用第一译码方式进行译码,若不成功,接收端采用第三译码方式进行译码,若还不成功,则可以采用第二译码方式进行译码。
[0247]
又例如,若译码策略为追求译码成功率高或传输开销小,则接收端可以采用第二译码方式进行译码。
[0248]
可选的,接收端可以根据自身编解码算力来接收报文,例如,接收端自身编解码算力最高支持gf(24)有限域,则接收端可以丢弃阶数高于24的有限域的报文,采用gf(24)有限域及阶数低于24的有限域的报文进行译码。
[0249]
假设发送端采用图6所示的方式进行编码,且一个组的源数据块有4个,接收端采用的各译码方式的特点可以如表1所示。
[0250]
表1
[0251][0252]
根据表1可以看出,本技术实施例可以兼顾译码速度和译码成功率,相比于传统译码方式,本技术实施例的译码速度进而吞吐量远远高于传统译码方式。
[0253]
另一种实现方式中,若发送端采用图8所示的方式进行编码,接收端可以采用第一译码方式或者第四译码方式或者第五译码方式对多个报文进行译码。
[0254]
其中,发送端采用图8所示的方式进行编码的场景下接收端采用的第一译码方式,与发送端采用图6所示的方式进行编码的场景下接收端采用的第一译码方式除了接收的数据块的数量不同,其它类似,发送端采用图6所示的方式进行编码的场景下接收端采用的第一译码方式中接收k个线性无关数据块,发送端采用图8所示的方式进行编码的场景下接收端采用的第一译码方式中接收k n个线性无关数据块,其中,n为在高阶有限域进行编码的编码数据块的数量。
[0255]
一种实现方式中,接收端可以在接收k n个线性无关数据块后,若该k n个数据块对应的编码系数均属于第一有限域,则接收端采用第一译码方式进行译码。
[0256]
另一种实现方式中,若接收端采用第一译码方式进行译码,接收端可以接收k n个线性无关数据块,该k个数据块对应的编码系数均属于第一有限域。
[0257]
一种示例性说明中,假设发送端采用图8所示的方式进行编码,且在高阶有限域进行编码的编码数据块的数量有4个,以第一有限域为gf(21),一个组包括4个源数据块的数量为例,接收端可以接收4 4即8个线性无关数据块x1~x8,其中,一个数据块对应的8个属于第一有限域的编码系数,x1~x8对应的编码系数组成一个8
×
8的译码矩阵,译码矩阵中任一行元素为一个数据块对应的一组编码系数(即对应的8个编码系数)。接收端将该译码矩阵进行高斯消元操作,将译码矩阵的对角线元素变换为1、其余元素变换为0,在译码矩阵变换时,报文x1…
x8净荷也按位同步变化,从而可以译码得到p1~p4以及c1~c4。
[0258]
例如,假设x1对应的一组编码系数为{10101010},x2对应的一组编码系数为{11100010},x3对应的一组编码系数为{00101011},x4对应的一组编码系数为{10000110},x5对应的一组编码系数为{01100011},x6对应的一组编码系数为{00110001},x7对应的一组编码系数为{10111110},x8对应的一组编码系数为{00011000}。x1~x8对应的编码系数组成一个8
×
8的译码矩阵,其中,该译码矩阵的第1行为10101010,该译码矩阵的第2行为11100010,该译码矩阵的第3行为00101011,该译码矩阵的第4行为10000110,该译码矩阵的第5行为01100011,该译码矩阵的第6行为00110001,该译码矩阵的第7行为10111110,该译码矩阵的第8行为00011000。接收端将该译码矩阵进行高斯消元,进过译码后的译码矩阵的第1行为10000000,该译码矩阵的第2行为01000000,该译码矩阵的第3行为00100000,该译码矩阵的第4行为00010000,该译码矩阵的第5行为00001000,该译码矩阵的第6行为00000100,该译码矩阵的第7行为00000010,该译码矩阵的第8行为00000001,图24所示。
[0259]
第四译码方式为将多个报文在第一有限域和第四有限域内进行译码,第一有限域为网络中阶数最低的有限域,第四有限域为多个报文携带的编码系数对应的任一高阶有限域,高阶有限域为阶数高于所述第一有限域的有限域。
[0260]
在一些实施例中,在第四译码方式中,多个报文携带(k-1) n个线性无关数据块,且(k-1) n个数据块中至少一个数据块对应的编码系数属于第四有限域,其中,n为在高阶有限域进行编码的编码数据块的数量。
[0261]
一种实现方式中,接收端可以在接收(k-1) n个线性无关数据块后,采用第四译码方式进行译码。
[0262]
另一种实现方式中,若接收端采用第四译码方式进行译码,接收端可以接收(k-1) n个线性无关数据块。
[0263]
一种可能的实施方式中,接收端采用第四译码方式对多个报文进行译码时,可以将多个报文在第一有限域内进行第一译码运算,然后将第一译码运算得到的结果在第四有限域进行第二译码运算。
[0264]
示例性的,第一译码运算可以为:将多个报文在第一有限域内进行第一译码运算,得到第二译码矩阵,使得第五译码矩阵经过第一译码运算后第i行第j列的元素(即第二译码矩阵第i行第j列的元素)为0,第h行第k 1列至第h行第k n列的元素中第h行第h 1列的元素(即第二译码矩阵第h行第k 1列至第h行第k n列的元素中第h行第h 1列的元素)为1,第h行第k 1列至第h行第k n列的元素中除第h行第h 1列的元素以外的其他元素(即第二译码矩阵第h行第k 1列至第h行第k n列的元素中除第h行第h 1列的元素以外的其他元素)为0。其中,第五译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于所述第一有限域的编码系数,i={1,2,
……
h-n},j={k 1,k 2,
……
,k n},h为大于h-n且小于h 1的整数,h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。
[0265]
第二译码运算可以为:将第一译码运算得到的结果在第四有限域进行第二译码运算,使得第一译码矩阵经过第二译码运算后对角线元素为1,且除对角线元素以外的其他元素为0。其中,第一译码矩阵的上矩阵包括第二译码矩阵第i行第g列的元素,第一译码矩阵的下矩阵为第二译码矩阵第t行第g列的元素与第t行对应的编码系数中属于第四有限域的编码系数进行运算的结果,第二译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数经过第一次译码运算后的结果,i={1,2,
……
h-n},g={1,
2,
……
,k},第二译码矩阵第t行为第四有限域的编码系数所对应的行,h为多个报文携带的数据块的数量,n为在高有限域进行编码的编码数据块的数量。
[0266]
一种示例性说明中,假设发送端采用图8所示的方式进行编码,以第一有限域为gf(21),一个组包括4个源数据块的数量即k等于4,在高有限域进行编码的编码数据块的数量为4即n等于4,高阶有限域分别为gf(2n)、gf(2
n-1
)、gf(23)、gf(22)为例,假设一个报文携带一个数据块,若第四有限域为gf(2n),如图25所示,接收端采用第四译码方式进行译码的过程可以为:
[0267]
s1,接收端可以接收k-1 n即7个线性无关报文x1~x7。
[0268]
s2,接收端将x1…
x7携带的属于gf(21)有限域的编码系数构成第五译码矩阵,第五译码矩阵为一个(k-1 n)
×
(k n)矩阵即7
×
8矩阵,其中,该7
×
8矩阵中任一行元素为一个报文携带的属于gf(21)有限域的编码系数。
[0269]
s3,第五译码矩阵包括上矩阵和下矩阵,上矩阵为(k-1)
×
(k n)的子矩阵,即3
×
8的子矩阵。下矩阵为下对角线元素值为1的n
×
(k n)子矩阵,即4
×
8矩阵,下对角线元素指第五译码矩阵中列号=行号 1的元素。接收端将第五译码矩阵在gf(21)有限域进行第一译码运算,得到第二译码矩阵,其中,第五译码矩阵的上矩阵经过第一译码运算后前k列元素即前4列元素为0,具体可以为上矩阵中后n列即后4列元素被下矩阵的下对角线元素高斯消元为0。假设携带gf(2n)有限域的编码系数的报文所对应的行为下矩阵的第1行,即第五译码矩阵的第5行,第五译码矩阵的下矩阵经过第一译码运算后第1行的后n个元素即后4个元素除下对角线元素外其余元素被译码操作为0,具体可以为第五译码矩阵的下矩阵第1行的后4个元素除下对角线元素外其余元素被下矩阵的下对角线元素高斯消元为0。
[0270]
即第二译码矩阵中第1~3行第5~8列的元素为0,第5行第5列至第5行第8列的元素中第5行5列的元素为1,其他元素为0,其中,第二译码矩阵的第5行为携带gf(2n)有限域的编码系数的报文所对应的行,例如,假设x4携带gf(2n)有限域的编码系数,经过第一译码运算,x4携带gf(21)有限域的编码系数变换到了第5行。在第一译码运算时,报文x1…
x7净荷也按位同步变化。
[0271]
s4,接收端将第二译码矩阵的第1~3行第1~4列的元素等价作为第一译码矩阵的第1~3行第1~4列,将第二译码矩阵的第5行第1~4列的元素与gf(2n)有限域的编码系数进行运算得到4个元素,该4个元素作为第一译码矩阵的第4行。例如,将第二译码矩阵的第5行第1~4列的元素与gf(2n)有限域的编码系数在gf(2n)有限域进行加法运算。
[0272]
示例性的,假设第二译码矩阵的第5行第1~4列的元素为1001,则可以表示为:1p1 0p2 0p3 1p4 1c1=x'4。假设gf(2n)有限域的编码系数为{14,3,2,7},则可以表示为c1=14p1 3p2 2p3 7p4,则15p1 3p2 2p3 6p4=x'4,因此,第一译码矩阵的第4行元素为{15,3,2,6},如图26所示。
[0273]
s5,接收端将第一译码矩阵在gf(2n)有限域进行第二译码运算,使得第一译码矩阵经过第二译码运算后对角线元素变换为1、其余元素变换为0。在第一译码矩阵变换时,报文x1…
x7净荷也按n位同步变化,则可以译码得到p1、p2、p3、p4。
[0274]
第四有限域为gf(22)时接收端采用第四译码方式进行译码的过程可以为如图27所示。第四有限域为gf(22)时接收端采用第四译码方式进行译码的过程,与第四有限域为gf(2n)时接收端采用第四译码方式进行译码的过程类似,区别在于第四有限域为gf(2n)时
步骤s3中选择的是第二译码矩阵的第5行,因为第二译码矩阵的第5行为携带gf(2n)有限域的编码系数的报文所对应的行,而第四有限域为gf(22)时步骤s3中选择的是第二译码矩阵的第8行,因为第二译码矩阵的第8行为携带gf(22)有限域的编码系数的报文所对应的行,并且,第四有限域为gf(2n)时步骤s4中将第二译码矩阵的第5行第1~4列的元素与gf(2n)有限域的编码系数进行运算,而第四有限域为gf(22)时步骤s4中将第二译码矩阵的第8行第1~4列的元素与gf(22)有限域的编码系数进行运算,以及,第四有限域为gf(2n)时步骤s5中在gf(2n)有限域进行第二译码运算,而第四有限域为gf(22)时步骤s5中在gf(22)有限域进行第二译码运算,具体可以参阅上述s1~s5,重复之处不再赘述。
[0275]
与上述逻辑类似,第四有限域为gf(23)时接收端采用第四译码方式进行译码的过程可以为如图28所示。第四有限域为gf(2
n-1
)时接收端采用第四译码方式进行译码的过程可以为如图29所示。
[0276]
第四译码方式一方面可以提高译码速度,另一方面可以提高译码成功率,从而可以实现译码速度与译码成功率之间的均衡,并且第四有限域的阶数增高,译码成功率会更高,第四有限域的阶数降低,译码速度会更快。
[0277]
并且,由于译码矩阵中大部分系数为来自第一有限域的编码系数1或0,因此第四有限域的译码操作极少,可以极大简化第四有限域的运算复杂度。
[0278]
第五译码方式为多个报文在第一有限域和第五有限域内进行译码,第一有限域为网络中阶数最低的有限域,第五有限域为多个报文携带的编码系数对应的任意t个高阶有限域中阶数最高的有限域,高阶有限域为阶数高于第一有限域的有限域,t为大于1的整数。
[0279]
在一些实施例中,在第五译码方式中,多个报文携带k n-t个数据块,且k n-t个数据块对应的编码系数属于至少t个不同的高阶有限域,其中,n为在高阶有限域进行编码的编码数据块的数量。
[0280]
一种实现方式中,接收端可以在接收k n-t个数据块后,采用第五译码方式进行译码,该k n-t个数据块对应的编码系数属于至少t个不同的高阶有限域。
[0281]
另一种实现方式中,若接收端采用第五译码方式进行译码,接收端可以接收k n-t个数据块,该k n-t个数据块对应的编码系数属于至少t个不同的高阶有限域。
[0282]
一种可能的实施方式中,接收端采用第四译码方式对多个报文进行译码时,可以将多个报文在第一有限域内进行第四译码运算,将第一译码运算得到的结果在第五有限域进行第三译码运算。
[0283]
示例性的,第四译码运算可以为:将多个报文在第一有限域内进行第一译码运算,得到第四译码矩阵,使得第五译码矩阵经过第一译码运算后第i行第j列的元素(即第四译码矩阵第i行第j列的元素)为0,第h行第k 1列至第h行第k n列的元素中第h行第h 1列的元素为1(即第四译码矩阵第h行第k 1列至第h行第k n列的元素中第h行第h 1列的元素),第h行第k 1列至第h行第k n列的元素中除第h行第h 1列的元素以外的其他元素(即第四译码矩阵第h行第k 1列至第h行第k n列的元素中除第h行第h 1列的元素以外的其他元素)为0。其中,第五译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数,i={1,2,
……
h-n},j={k 1,k 2,
……
,k n},h取大于h-n且小于h 1的任意t个整数,h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。
[0284]
第三译码运算可以为:将第一译码运算得到的结果在第五有限域进行第三译码运
算,使得第三译码矩阵经过第三译码运算后对角线元素为1,且除对角线元素以外的其他元素为0。其中,第三译码矩阵的上矩阵包括第四译码矩阵第i行第g列的元素,第一译码矩阵的下矩阵为第四译码矩阵第h-n 1行至第h行中任意t行的第g列的元素与任意t行对应的编码系数中属于高阶有限域的编码系数进行运算的结果,第四译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数经过第一次译码运算后的结果,i={1,2,
……
h-n},g={1,2,
……
,k},h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。
[0285]
一种示例性说明中,假设发送端采用图8所示的方式进行编码,以第一有限域为gf(21),一个组包括4个源数据块的数量即k等于4,在高阶有限域进行编码的编码数据块的数量为4即n等于4,高阶有限域分别为gf(2n)、gf(2
n-1
)、gf(23)、gf(22)为例,假设一个报文携带一个数据块,若t为2,如图30所示,接收端采用第五译码方式进行译码的过程可以为:
[0286]
a1,接收端可以接收(k-t n)个6个线性无关报文x1~x6。
[0287]
a2,接收端将x1…
x6携带的属于gf(21)有限域的编码系数构成第五译码矩阵,第五译码矩阵为一个(k-t n)
×
(k n)矩阵即6
×
8矩阵,其中,该6
×
8矩阵中任一行元素为一个报文携带的属于gf(21)有限域的编码系数。
[0288]
a3,第五译码矩阵包括上矩阵和下矩阵,上矩阵为(k-t)
×
(k n)的子矩阵,即2
×
8的子矩阵。下矩阵为下对角线元素值为1的n
×
(k n)子矩阵,即4
×
8矩阵,下对角线元素指第五译码矩阵中列号=行号 1的元素。接收端将第五译码矩阵在gf(21)有限域进行第四译码运算,得到第四译码矩阵,其中,第五译码矩阵的上矩阵经过第一译码运算后前k列元素即前4列元素为0,具体可以为上矩阵中后n列即后4列元素被下矩阵的下对角线元素高斯消元为0。选择第五译码矩阵的下矩阵中的任意t行,假设选择下矩阵中的前两行,即第五译码矩阵的第3~4行,第五译码矩阵的下矩阵经过第一译码运算后前两行的后k列即后4列中除下对角线元素外其余元素被译码操作为0,具体可以为第五译码矩阵的下矩阵第3~4行的后4列元素除下对角线元素外其余元素被下矩阵的下对角线元素高斯消元为0。
[0289]
即第四译码矩阵第1~2行第5~8列的元素为0,第四译码矩阵第3~4行第5~8列的元素中第3行第5列和第四行第6列的元素为1,其余元素为0。
[0290]
a4,接收端将第四译码矩阵的第1~2行第1~4列的元素等价作为第三译码矩阵的第1~2行第1~4列。将第四译码矩阵的第3行第1~4列的元素与相应高阶有限域的编码系数进行运算,假设第四译码矩阵的第3行为gf(2n)有限域的编码系数对应的行,则将第四译码矩阵的第3行第1~4列的元素与gf(2n)有限域的编码系数进行运算得到4个元素,该4个元素作为第三译码矩阵的第3行。例如,将第四译码矩阵的第3行第1~4列的元素与gf(2n)有限域的编码系数在gf(2n)有限域进行加法运算。
[0291]
将第四译码矩阵的第4行第1~4列的元素与相应高阶有限域的编码系数进行运算,假设第四译码矩阵的第4行为gf(2
n-1
)有限域的编码系数对应的行,则将第四译码矩阵的第4行第1~4列的元素与gf(2
n-1
)有限域的编码系数进行运算得到4个元素,该4个元素作为第三译码矩阵的第4行。例如,将第四译码矩阵的第4行第1~4列的元素与gf(2
n-1
)有限域的编码系数在gf(2
n-1
)有限域进行加法运算,然后将加法运算的结果等价到n次域,这里所应用的一个关键技术是低阶有限域加法可等价到高阶有限域加法,如图31所示,低阶有限域加法表是高阶有限域加法表的嵌套子集。其中,高阶有限域为gf(21)有限域由所选取的
下矩阵的相应的2行对应的报文携带的最高次域为gf(22)有限域决定,所以最后得gf(22)有限域译码2
×
k下矩阵。
[0292]
示例性的,如图32所示,第四译码矩阵的第3行第1~4列的元素与gf(2n)有限域的编码系数进行运算的过程、第四译码矩阵的第4行第1~4列的元素与gf(2
n-1
)有限域的编码系数进行运算的过程具体可以参阅步骤s4中第二译码矩阵的第5行第1~4列的元素与gf(2n)有限域的编码系数进行运算的过程,这里不再赘述。
[0293]
a5,由于步骤a3选择的任意2行为第四译码矩阵第3~4行,而第四译码矩阵第3~4行对应的高阶有限域为gf(2n)有限域和gf(2
n-1
)有限域,其中阶数最高的高阶有限域为gf(2n)有限域,则接收端将第三译码矩阵在gf(2n)有限域进行第三译码运算,使得第一译码矩阵经过第二译码运算后对角线元素变换为1、其余元素变换为0。在第三译码矩阵变换时,报文x1~x6净荷也按n位同步变化,则可以译码得到p1、p2、p3…
p4。
[0294]
一种示例性说明中,假设发送端采用图8所示的方式进行编码,以第一有限域为gf(21),一个组包括4个源数据块的数量即k等于4,在高阶有限域进行编码的编码数据块的数量为4即n等于4,高阶有限域分别为gf(2n)、gf(2
n-1
)、gf(23)、gf(22)为例,假设一个报文携带一个数据块,若t为4,如图33所示,接收端采用第五译码方式进行译码的过程可以为:
[0295]
b1,接收端可以接收(k-t n)个4个线性无关报文x1~x4。
[0296]
b2,接收端将x1…
x4携带的属于gf(21)有限域的编码系数构成第五译码矩阵,第五译码矩阵为一个(k-t n)
×
(k n)矩阵即4
×
8矩阵,其中,该4
×
8矩阵中任一行元素为一个报文携带的属于gf(21)有限域的编码系数。
[0297]
b3,当k≤n时,没有上矩阵,当k》n时,有上矩阵,因此,在本示例中,第五译码矩阵包括下矩阵,下矩阵为下对角线元素值为1的n
×
(k n)子矩阵,即4
×
8矩阵,下对角线元素指第五译码矩阵中列号=行号 1的元素。接收端将第五译码矩阵在gf(21)有限域进行第四译码运算,得到第四译码矩阵,其中,第五译码矩阵的下矩阵经过第一译码运算后下矩阵的后k列即后4列中除下对角线元素外其余元素被译码操作为0,具体可以为第五译码矩阵的下矩阵的后4列元素除下对角线元素外其余元素被下矩阵的下对角线元素高斯消元为0。
[0298]
即第四译码矩阵中第5~8列构成的矩阵中对角线元素为1,其他元素为0。在第四译码运算时,报文x1…
x4净荷也按位同步变化。
[0299]
b4,接收端将第四译码矩阵中每一行第5~8列与相应的高阶有限域的编码系数进行运算,得到第三译码矩阵的一行元素。
[0300]
第四译码矩阵中每一行第5~8列与相应的高阶有限域的编码系数进行运算的过程,具体可以参阅步骤s4中第二译码矩阵的第5行第1~4列的元素与gf(2n)有限域的编码系数进行运算的过程,这里不再赘述。
[0301]
b5,由于第四译码矩阵第1~4行对应的高阶有限域中阶数最高的高阶有限域为gf(2n)有限域,则接收端将第三译码矩阵在gf(2n)有限域进行第三译码运算,使得第一译码矩阵经过第二译码运算后对角线元素变换为1、其余元素变换为0。在第三译码矩阵变换时,报文x1~x6净荷也按n位同步变化,则可以译码得到p1、p2、p3…
p4。
[0302]
与上述逻辑类似,t等于3,第五有限域为gf(2n)时接收端采用第五译码方式进行译码的过程可以为如图34所示。
[0303]
第五译码方式,针对k=4个源数据块,只需接收k-t n个报文即可开始译码,从而
可以接收时延。
[0304]
在一些实施例中,接收端可以根据译码策略选择使用的译码方式。例如,若译码策略为追求译码速度快、计算复杂度小,或吞吐量高,则可以针对k个源数据块,至少接收k n个线性无关的数据块x1…
x
k n
采用第一译码方式。或者,若译码策略为追求译码速度(或计算复杂度、吞吐量)与译码成功率(或传输开销)取得一个均衡,则针对k个源数据块,至少接收(k-1) n个线性无关的数据块后采用第四译码方式。或者,若译码策略为追求译码成功率高或传输开销(即所需接收的编码报文数量)小,则可以针对一个组的k个源数据块,至少在接收到k个线性无关的报文x1…
xk后尝试t=n时的第五译码方式,或在至少接收到k 1个线性无关的报文x1…
x
k 1
后尝试t=n-1时的第五译码方式,或在至少接收到k-3 n个线性无关的报文后尝试t=3时的第五译码方式,或在至少接收到k-2 n个线性无关的报文后尝试t=2时的第五译码方式,t的值越高,译码成功率越高、传输开销越小。
[0305]
可选的,接收端可以根据自身编解码算力来接收报文,例如,接收端自身编解码算力最高支持gf(24)有限域,则接收端可以丢弃阶数高于24的有限域的报文,采用gf(24)有限域及阶数低于24的有限域的报文进行译码。
[0306]
假设发送端采用图8所示的方式进行编码,且一个组的源数据块有4个即k=4,且在高阶有限域进行编码的编码数据块的数量为4个即n等于4,接收端采用的各译码方式的特点可以如表2所示。
[0307]
表2
[0308][0309]
根据表2可以看出,本技术实施例第四译码方式和第五译码方式从译码成功率或传输开销角度,可以利用高阶有限域来提升译码成功率;并且从译码速度或吞吐量角度,第四译码方式和第五译码方式中在第一有限域进行大部分运算,相比于现有技术中在高阶有限域进行运算,本技术实施例可以有效降低计算复杂度,提高译码速度和吞吐量;而且判断线性无关是在第一有限域里完成的,而不是真正地切到高阶有限域再去判断,从而可以简化计算复杂度。因此,本技术实施例可以结合低维域译码速度快和高维域译码概率高的特点,使得译码速度和吞吐量远远高于传统的高阶有限域译码。
[0310]
接收端接收单播报文,可以先用高速的第一有限域(例如gf(21))进行大部分的译码(即解码),再尝试切到高阶有限域(例如gf(24))做剩余部分的译码,从而可以极大提升译码速度和吞吐量。其中,尝试切换到高次有限域是在第一有限域(例如gf(21))里完成的,
而不是真正地切到高阶有限域去做运算,只有在第一有限域尝试成功才会最终切换到一个选定的高阶有限域去做运算,所以总的译码速度不会下降。至于,发送端发的在高阶有限域(例如gf(25)、gf(26)、gf(28))编码的单播报文,如果接收端没有用到可以丢弃。
[0311]
本技术实施例中,发送端可以发送一系列层次化的分别在阶数较低的有限域、阶数中等的有限域、阶数较高的有限域进行编码的报文。中间节点可以根据自身编码算力、接收的报文所携带编码系数对应的有限域、网络负载等确定重编码的有限域,从而可以不依赖于收发端的编码算力和网络配置。而接收端可先在高速的第一有限域进行大部分的译码,再尝试切到高阶有限域做剩余部分的译码。
[0312]
收发端与中间节点可以在不同有限域上进行编解码,消除网络节点的吞吐量瓶颈;中间节点不需每个流或每个应用做配置,可以自适应地根据自身编码算力、接收的报文所携带编码系数对应的有限域、网络负载等进行重编码;接收端可根据自身算力和应用需求自主选择有限域进行编解码,从而可以实现众口可调,且应用编码需求、有限域选择可随时任意自主调整。
[0313]
基于与方法实施例的同一技术构思,本技术实施例提供一种网络编码装置。该装置的结构可以如图35所示,包括处理单元3501以及收发单元3502。
[0314]
一种实现方式中,网络编码装置具体可以用于实现图5至图12的实施例中发送端执行的方法,该装置可以是通信设备本身,也可以是通信设备中的芯片或芯片组或芯片中用于执行相关方法功能的一部分,其中,处理单元3501,用于对一个组中的k个源数据块进行编码,得到多个编码数据块,其中,k为大于0的整数,多个编码数据块中至少两个编码数据块采用的编码系数对应的有限域的阶不同;以及,据多个编码数据块生成一个或多个报文,其中,每个报文中携带至少一个编码数据块以及编码数据块对应的编码系数;收发单元3502,用于发送一个或多个报文。
[0315]
可选的,处理单元3501,在对一个组中的k个源数据块进行编码,得到多个编码数据块时,具体用于:将k个源数据块与第一编码矩阵进行第一编码运算,得到多个编码数据块,其中,第一编码矩阵包括至少两种不同阶有限域的编码系数。
[0316]
处理单元3501,还可以用于:根据k个源数据块生成h1个报文,h1个报文中每个报文携带至少一个源数据块以及源数据块对应的编码系数,其中,k个源数据块对应的编码系数构成对角线元素为1,且除对角线元素以外的其他元素为0的k
×
k矩阵,矩阵中的任一行元素为k个源数据块中一个源数据块对应的k个编码系数,h1为大于0且不大于k的整数。收发单元3502,还可以用于:发送h1个报文。
[0317]
在一些实施例中,处理单元3501,在对一个组中的k个源数据块进行编码,得到多个编码数据块时,具体用于:将k个源数据块与第二编码矩阵进行第二编码运算,得到n1个编码数据块,其中,n1为大于0的整数,第二编码矩阵包括的第一编码系数对应的有限域的阶均高于第一有限域的阶,第一有限域为第三编码矩阵对应的有限域;将n1个编码数据块以及k个源数据块与第三编码矩阵进行第三编码运算,得到m个编码数据块,其中,m为大于0的整数,多个编码数据块包括n1个编码数据块以及m个编码数据块。
[0318]
可选的,处理单元3501,还可以用于:根据k个源数据块生成h2个报文,h2个报文中每个报文携带至少一个源数据块以及源数据块对应的编码系数,h2为大于0且不大于k的整数;其中,k个源数据块对应的编码系数以及n1个编码数据块对应的第二编码系数构成对角
线元素为1,且除对角线元素以外的其他元素为0的(k n1)
×
(k n1)矩阵,矩阵中的任一行元素为k个源数据块中一个源数据块对应的k n1个编码系数或者n1个编码数据块中一个编码数据块对应的k n1个编码系数,第二编码系数为n1个编码数据块对应的编码系数中除第二编码运算采用的第一编码系数以外的编码系数。收发单元3502,还可以用于发送h2个报文。
[0319]
在一些实施例中,处理单元3501,在对一个组中的k个源数据块进行编码,得到多个编码数据块时,可以具体用于:将k个源数据块与第四编码矩阵进行第四编码运算,得到n2个中间数据块,其中,n2为大于0的整数,第四编码矩阵包括的编码系数对应的有限域的阶均高于第二有限域的阶,第二有限域为第五编码矩阵对应的有限域;将n2个中间数据块以及k个源数据块与第五编码矩阵进行第五编码运算,得到多个编码数据块。
[0320]
示例性的,报文还携带指示信息,指示信息用于指示报文所携带源数据块对应的有限域的阶,或者,指示信息用于指示报文所携带编码数据块对应的有限域的阶。
[0321]
一种实现方式中,网络编码装置具体可以用于实现图13至图16的实施例中发送端执行的方法,该装置可以是中间节点本身,也可以是通信设备中的芯片或芯片组或芯片中用于执行相关方法功能的一部分,其中,收发单元3502,用于接收n个报文,其中,n为大于1的整数,一个报文中携带a1个数据块以及a1个数据块对应的编码系数,a1为大于0的整数,n个报文所携带编码系数对应的有限域为一个或多个;处理单元3501,用于根据如下信息中的一项或多项确定重编码的有限域:网络节点的编码算力、n个报文所携带编码系数对应的有限域、网络负载;以及,基于重编码的有限域将n个报文携带的数据块以及编码系数进行重编码,得到v个编码结果,v为大于0的整数;收发单元3502,还用于发送m1个重编码后的报文,一个重编码后的报文中携带至少一个编码结果,m1为大于0且不大于v的整数。
[0322]
示例性的,重编码的有限域包括一个或多个有限域。
[0323]
可选的,处理单元3501,在基于重编码的有限域将n个报文携带的数据块以及编码系数进行重编码时,具体用于:将n个报文携带的数据块与第七编码矩阵进行编码运算,得到v个重编码后的数据块,其中,第七编码矩阵包括的编码系数属于重编码的有限域;将n个报文携带的编码系数与第七编码矩阵进行编码运算,得到v组重编码后的编码系数,一个编码结果包括一个重编码后的数据块以及对应的一组重编码后的编码系数。
[0324]
可选的,处理单元3501,在根据n个报文所携带编码系数对应的有限域确定重编码的有限域时,具体用于:确定n个报文所携带编码系数对应的有限域中最高阶的有限域为重编码的有限域。
[0325]
一种实现方式中,网络编码装置具体可以用于实现图17至图34的实施例中接收端执行的方法,该装置可以是通信设备本身,也可以是通信设备中的芯片或芯片组或芯片中用于执行相关方法功能的一部分,其中,收发单元3502,用于针对一个组中的k个源数据块,接收多个报文,其中,k为大于0的整数,一个报文携带至少一个数据块以及每个数据块对应的一组编码系数;处理单元3501,用于采用第一译码方式或者第二译码方式或者第三译码方式或者第四译码方式或者第五译码方式对多个报文进行译码。
[0326]
其中,第一译码方式为将多个报文在第一有限域内进行译码,第一有限域为网络中阶数最低的有限域;第二译码方式为将多个报文在第二有限域内进行译码,第二有限域为多个报文携带的编码系数对应的有限域中最高阶的有限域;第三译码方式为将多个报文在第三有限域内进行译码,第三有限域为多个报文携带的编码系数对应的有限域中除第一
有限域以外的另一个有限域,第一有限域为网络中阶数最低的有限域;第四译码方式为将多个报文在第一有限域和第四有限域内进行译码,第一有限域为网络中阶数最低的有限域,第四有限域为多个报文携带的编码系数对应的任一高阶有限域,高阶有限域为阶数高于第一有限域的有限域;第五译码方式为多个报文在第一有限域和第五有限域内进行译码,第一有限域为网络中阶数最低的有限域,第五有限域为多个报文携带的编码系数对应的任意t个高阶有限域中阶数最高的有限域,高阶有限域为阶数高于第一有限域的有限域,t为大于1的整数。
[0327]
可选的,处理单元3501,在采用第一译码方式对多个报文进行译码时,具体用于:将多个报文在第一有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。
[0328]
示例性的,多个报文携带k个数据块,k个数据块对应的编码系数属于第一有限域;或者,多个报文携带k n个数据块,k n个数据块对应的编码系数对应的有限域为第一有限域,其中,n为在高阶有限域进行编码的编码数据块的数量,高阶有限域为阶数高于第一有限域的有限域。
[0329]
可选的,处理单元3501,在采用第二译码方式对多个报文进行译码时,具体用于:将多个报文在第二有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。
[0330]
示例性的,多个报文携带k个数据块,k个数据块对应的编码系数属于两个或两个以上的有限域。
[0331]
可选的,处理单元3501,在采用第三译码方式对多个报文进行译码时,具体用于:将多个报文在第三有限域内进行译码,使得译码矩阵经过译码后对角线元素为1,且除对角线元素以外的其他元素变换为0,其中,译码矩阵中任一行元素为一个数据块对应的一组编码系数。
[0332]
示例性的,多个报文携带k个数据块,且k个数据块中至少一个数据块对应的编码系数属于第一有限域,k个数据块中除至少一个数据块以外的其他数据块对应的编码系数属于第三有限域。
[0333]
可选的,处理单元3501,在采用第四译码方式对多个报文进行译码时,具体用于:将多个报文在第一有限域内进行第一译码运算;将第一译码运算得到的结果在第四有限域进行第二译码运算。
[0334]
可选的,处理单元3501,在将第一译码运算得到的结果在第四有限域进行第二译码运算时,具体用于:将第一译码运算得到的结果在第四有限域进行第二译码运算,使得第一译码矩阵经过第二译码运算后对角线元素为1,且除对角线元素以外的其他元素为0。
[0335]
其中,第一译码矩阵的上矩阵包括第二译码矩阵第i行第g列的元素,第一译码矩阵的下矩阵为第二译码矩阵第t行第g列的元素与第t行对应的编码系数中属于第四有限域的编码系数进行运算的结果,第二译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数经过第一次译码运算后的结果,i={1,2,
……
h-n},g={1,2,
……
,k},第二译码矩阵第t行为第四有限域的编码系数所对应的行,h为多个报文携
带的数据块的数量,n为在高有限域进行编码的编码数据块的数量。
[0336]
可选的,处理单元3501,在将多个报文在第一有限域内进行第一译码运算时,具体用于:将多个报文在第一有限域内进行第一译码运算,使得第五译码矩阵经过第一译码运算后第i行第j列的元素为0,第h行第k 1列至第h行第k n列的元素中第h行第h 1列的元素为1,第h行第k 1列至第h行第k n列的元素中除第h行第h 1列的元素以外的其他元素为0。
[0337]
其中,第五译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数,i={1,2,
……
h-n},j={k 1,k 2,
……
,k n},第五译码矩阵经过第一译码运算后的第h行为第四有限域的编码系数所对应的行,h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。
[0338]
示例性的,多个报文携带(k-1) n个数据块,且(k-1) n个数据块中至少一个数据块对应的编码系数属于第四有限域,其中,n为在高阶有限域进行编码的编码数据块的数量。
[0339]
可选的,处理单元3501,在采用第五译码方式对多个报文进行译码时,具体用于:将多个报文在第一有限域内进行第四译码运算;将第一译码运算得到的结果在第五有限域进行第三译码运算。
[0340]
处理单元3501,将第一译码运算得到的结果在第五有限域进行第三译码运算时,可以具体用于:
[0341]
将第一译码运算得到的结果在第五有限域进行第三译码运算,使得第三译码矩阵经过第三译码运算后对角线元素为1,且除对角线元素以外的其他元素为0。
[0342]
其中,第三译码矩阵的上矩阵包括第四译码矩阵第i行第g列的元素,第一译码矩阵的下矩阵为第四译码矩阵第h-n 1行至第h行中任意t行的第g列的元素与任意t行对应的编码系数中属于高阶有限域的编码系数进行运算的结果,第四译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数经过第一次译码运算后的结果,i={1,2,
……
h-n},g={1,2,
……
,k},h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。
[0343]
处理单元3501,在将多个报文在第一有限域内进行第四译码运算时,可以具体用于:将多个报文在第一有限域内进行第四译码运算,使得第五译码矩阵经过第四译码运算后第i行第j列的元素为0,第h行第k 1列至第h行第k n列的元素中第h行第h 1列的元素为1,第h行第k 1列至第h行第k n列的元素中除第h行第h 1列的元素以外的其他元素为0。
[0344]
其中,第五译码矩阵中任一行元素为一个数据块对应的一组编码系数中属于第一有限域的编码系数,i={1,2,
……
h-n},j={k 1,k 2,
……
,k n},h取大于h-n且小于h 1的任意t个整数,h为多个报文携带的数据块的数量,n为在高阶有限域进行编码的编码数据块的数量。
[0345]
示例性的,多个报文携带k n-t个数据块,且k n-t个数据块对应的编码系数属于至少t个不同的高阶有限域,其中,n为在高阶有限域进行编码的编码数据块的数量。
[0346]
本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本技术各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。可以理解的是,
本技术实施例中各个模块的功能或者实现可以进一步参考方法实施例的相关描述。
[0347]
一种可能的方式中,资源复用装置可以如图36所示,该装置可以是第一节点或者第一节点中的芯片,其中,第一节点可以为通信设备,也可以为通信设备的上级节点或宿主节点。该装置可以包括处理器3601,通信接口3602,存储器3603。其中,处理单元3501可以为处理器3601。收发单元3502可以为通信接口3602。
[0348]
处理器3601,可以是一个中央处理单元(central processing unit,cpu),或者为数字处理单元等等。通信接口3602可以是收发器、也可以为接口电路如收发电路等、也可以为收发芯片等等。该装置还包括:存储器3603,用于存储处理器3601执行的程序。存储器3603可以是非易失性存储器,比如硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram)。存储器3603是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
[0349]
处理器3601用于执行存储器3603存储的程序代码,具体用于执行上述处理单元3501的动作,本技术在此不再赘述。通信接口3602具体用于执行上述收发单元3502的动作,本技术在此不再赘述。
[0350]
本技术实施例中不限定上述通信接口3602、处理器3601以及存储器3603之间的具体连接介质。本技术实施例在图36中以存储器3603、处理器3601以及通信接口3602之间通过总线3604连接,总线在图36中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图36中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0351]
本发明实施例还提供了一种计算机可读存储介质,用于存储为执行上述处理器所需执行的计算机软件指令,其包含用于执行上述处理器所需执行的程序。
[0352]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0353]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0354]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0355]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0356]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献