1.本技术实施例涉及通信技术,尤其涉及一种编码数据包的传输方法、装置、电子设备和存储介质。
背景技术:2.信道编码技术,是源节点将原始数据包和根据原始数据包产生的纠错码进行编码后生成编码数据包,且将编码数据包发送给目标节点的编码技术。其中,在编码数据包的传输过程中,编码数据包可能存在丢失或错误,目标节点可以根据接收到的编码数据包中的纠错码,尝试恢复原始数据包,但由于信道编码技术的差异,不同的信道编码技术可以恢复传输损伤的程度不同。编码数据包的丢失或错误是因为电磁干扰产生的比特丢失或错误引起的,或者是由负责转发的中间节点出现拥塞或闪断引起的。
3.现有技术中的信道编码中,可以预估节点之间的丢包率,以预先确定源节点需要形成的一个编码数据包集合中的编码数据包的个数m,进而源节点采用分批稀疏编码方式对原始数据包进行分批编码,生成多个编码数据包集合传输至目标节点,每个编码数据包集合中的编码数据包的个数为m。现有技术中在考虑到预估的丢包率的前提下,能够向目标节点传输足够多的编码数据包,即使在编码数据包的传输过程中存在丢包现象,目标节点仍可以根据接收到的编码数据包集合中的编码数据包,对该编码数据包集合进行解码获取该编码数据包集合对应的原始数据包。
4.但该种方式中,需要预先编码足够多的编码数据包,编码效率低,且会占用较大的传输带宽。
技术实现要素:5.本技术实施例提供一种编码数据包的传输方法、装置、电子设备和存储介质,能够提高编码效率且降低传输带宽的占用。
6.第一方面,本技术实施例提供一种编码数据包的传输方法,第一节点采用第一编码参数对源数据生成第一编码数据包集合后,向第二节点发送第一编码数据包集合,第一节点可以确定在第一编码数据包集合的传输过程中存在丢包。若所述第一节点确定所述第一编码数据包集合的传输过程中存在丢包,则采用与第一编码参数不同的第二编码参数对所述源数据进行编码,生成第二编码数据包集合,进而第一节点向所述第二节点发送所述第二编码数据包集合。
7.本技术实施例中,在第一节点和第二节点之间传输第一编码数据包集合发生丢包时,对源数据进行编码生成新的编码数据包集合发送给第二节点,而不是预先生成足够多的数量的编码数据包,本技术实施例中根据实时发生的丢包,可以避免预先生成编码数据包的方法所造成的编码效率低和占用传输带宽的问题,且本实施例中采用与生成第一编码数据包集合不同的编码参数对源数据进行编码,能够提高第二节点接收丢包的编码数据包或丢包的编码数据包中包含的数据的概率,进而达到丢包的编码数据包或丢包的编码数据
包中包含的数据重新传输的目的。
8.在一种可能的实现方式中,本技术实施例中采用第二编码参数生成的所述第二编码数据包集合中的编码数据包的发送顺序与所述第一编码数据包集合中的编码数据包的发送顺序不同,或者,所述第二编码数据包集合中包含的编码数据包的个数大于所述第一编码数据包集合中的编码数据包的个数。应理解,在该种实现方式中,可以增加第二节点接收第一编码数据包集合中丢包的编码数据包的概率。
9.本技术实施例中,第一节点确定第一编码数据包集合的传输过程中存在丢包的方式可以包括如下三种方式,且在每种方式下第一节点采用的第二编码参数可以不同。下面针对每种不同的方式,以及在每种方式下第一节点编码的方法进行说明。
10.第一种方式:所述第一编码数据包集合中包括m个编码数据包,所述m为大于等于1的整数,第一节点根据第二节点反馈的第一响应信息,确定第一编码数据包集合的传输过程中存在丢包。其中,所述第一响应信息用于指示所述第二节点接收到的所述第一编码数据包集合中的n个编码数据包,所述n为大于等于0且小于m的整数。
11.应理解,本技术实施例中的编码方式应用在分批稀疏编码中。其中,所述第一编码参数包括第一生成矩阵和第一传输矩阵,所述第二编码参数包括所述第一生成矩阵和第二传输矩阵。其中,所述第一生成矩阵用于对所述源数据编码生成所述m个编码数据包,传输矩阵用于确定所述m个编码数据包的发送顺序。也就是说,第一传输矩阵用于确定m个编码数据包的发送顺序,第二传输矩阵用于确定m个编码数据包的发送顺序,但应注意,所述第二传输矩阵与所述第一传输矩阵不同。
12.对应的,本技术实施例中,第一节点可以在采用第一生成矩阵生成m个编码数据包后,可以采用所述第二传输矩阵,调整所述m个编码数据包的发送顺序,生成所述第二编码数据包集合。
13.在一种可能的实施方式中,因为第一节点接收到第一响应信息,该所述第一响应信息包括:所述n个编码数据包的序列标识,所述序列标识用于指示编码数据包的发送顺序,第一节点可以确定第一编码数据包集合中丢包的编码数据包,以及第二节点接收到的编码数据包,因此第一节点可以根据所述n个编码数据包的序列标识,确定所述第二传输矩阵。其中,所述第二传输矩阵使能调整所述m-n个编码数据包的发送顺序至所述m个编码数据包的发送顺序,进而第一节点在采用第一生成矩阵生成m个编码数据包后,可以采用所述第二传输矩阵,调整所述m-n个编码数据包的发送顺序至所述n个编码数据包的发送顺序。
14.该种方式中,第二节点可以向第一节点响应接收到的第一编码数据包集合中的编码数据包,使得第一节点确定第一编码数据包集合中丢包的编码数据包,进而第一节点可以调整编码数据包的发送顺序,将丢包的编码数据包的发送顺序调整至未丢包的编码数据包的发送顺序上,以增加第二节点接收丢包的编码数据包的概率。
15.应注意,在该种方式中,第一节点为源节点,所述第二节点为所述源节点和目标节点之间的中间节点。第二节点可以为中间节点或目标节点。相应的,当所述第一节点为所述源节点时,所述源数据为原始数据包,当所述第一节点为所述中间节点时,所述源数据为编码数据包,该作为源数据的编码数据包可以是中间节点采用随机线性网络编码生成的,或者从上一节点接收到的。
16.第二种方式:所述第一编码数据包集合中包括x个子编码数据包集合,所述x为大
于等于1的整数,若在所述第一节点向第二节点发送第一编码数据包集合后的预设时间段内,所述第一节点未接收到来自所述第二节点的第二响应信息,则确定所述第一编码数据包集合的传输过程中存在丢包。其中,所述第二响应信息用于指示所述第二节点接收到所述第一编码数据包集合中的y个子编码数据包集合,所述y为大于等于0且小于x的整数。
17.在该方式中,针对第一节点为源节点或中间节点采用不同的编码方式。其中,当所述第一节点为中间节点时,所述第一编码参数包括第一生成矩阵,所述第二编码参数包括第二生成矩阵,第一编码参数用于对所述源数据进行编码,生成x个子编码数据包集合,使得每个子编码数据包集合包含m个编码数据包。所述第二生成矩阵用于对所述源数据进行编码,生成x个子编码数据包集合,使得每个子编码数据包集合包含o个编码数据包,所述o为大于所述m的整数。应理解,该种方式中和下述第三种方式中,第一编码参数包括传输矩阵,或不包括传输矩阵。对应的,在第一编码参数包括传输矩阵时,第二编码参数中包括与第一编码参数中相同的传输矩阵,在第一编码参数不包括传输矩阵时,第二编码参数中也不包括传输矩阵。
18.其中,第一节点可以采用第二生成矩阵对所述源数据进行编码,生成x个子编码数据包集合,使得每个子编码数据包集合包含o个编码数据包,以获取所述第二编码数据包集合。应理解,因为该方式中第一节点未接收到来自第二节点的第二响应信息,因此本技术实施例中的源数据为第一编码数据包集合中的x个子编码数据包集合。
19.其中,在第一节点为源节点时,所述源数据为所述第一编码数据包集合中丢包的子编码数据包集合对应的原始数据包,因为该方式中第一节点未接收到来自第二节点的第二响应信息,因此本技术实施例中的源数据为第一编码数据包集合中的x个子编码数据包集合对应的原始数据包。应理解,所述第一编码参数包括第一生成矩阵,所述第二编码参数包括第二生成矩阵,第一生成矩阵与上述第一节点为中间节点时的第一生成矩阵的作用相同,且传输矩阵可以参照上述第一节点为中间节点时的传输矩阵的相关描述。
20.本技术实施例中的所述第二生成矩阵用于对丢包的每个子编码数据包集合对应的原始数据包编码,以生成z个子编码数据包集合,所述z为大于x的整数,应理解,第一节点采用所述第二生成矩阵对丢包的每个子编码数据包集合对应的原始数据包编码,生成z个子编码数据包集合,以得到所述第二编码数据包集合。该第二编码数据包集合中包括的z个子编码数据包集合为第一节点采用所述第二生成矩阵对丢包的每个子编码数据包集合对应的原始数据包编码总共生成的子编码数据包集合。应注意,第一节点采用所述第二生成矩阵对丢包的每个子编码数据包集合对应的原始数据包编码,生成的子编码数据包集合的个数可以相同或不同。
21.在该种方式中,第一节点未接收到来自第二节点的响应信息时,第一节点可以根据源数据生成更多的子编码数据包集合,每个子编码数据包集合中包括的编码数据包个数不变,或者第一节点可以根据源数据生成与第一编码数据包集合中的子编码数据包集合的个数相同的子编码数据包集合,但每个子编码数据包集合中包括更多的编码数据包,两种方式均是为了在与第一编码数据包集合相同的丢包率下,使得第二节点能够接收到更多的编码数据包,增加第二节点接收丢包的数据包中的数据的概率。
22.第三种方式:所述第一编码数据包集合中包括x个子编码数据包集合,所述x为大于等于1的整数,若在所述第一节点向第二节点发送第一编码数据包集合后的预设时间段
内,所述第一节点接收到来自所述第二节点的第二响应信息,则确定所述第一编码数据包集合的传输过程中存在丢包。
23.其中,与上述第二种方式不同的是,第一节点可以根据第二节点反馈的第二响应信息,确定第二节点接收到的子编码数据包集合,以及第一编码数据包集合中丢包的子编码数据包集合,进而第一节点可以针对第一编码数据包集合中丢包的子编码数据包集合进行编码,以提高编码效率。
24.应理解,第一节点根据第一节点编码数据包集合中包括的子编码数据包集合的个数x、第二节点接收到的子编码数据包集合的个数y,以及所述第一编码数据包集合中每个子编码数据包集合包含的编码数据包的个数,确定所述第一编码数据包集合的丢包率,进而根据该丢包率,确定所述第二生成矩阵。也就是说,第一节点可以根据丢包率,确定第二编码数据包集合中包括的编码数据包的个数。一方面,在子编码数据包集合的个数不变时,可以确定第二编码数据包集合中每个子编码数据包集合中包括的编码数据包。或者,另一方面,在每个子编码数据包集合中包括的编码数据包的个数不变时,可以确定第二编码数据包集合中子编码数据包集合的个数。
25.其中,第一节点为中间节点或源节点时的编码方式可以参照上述第二种方式中的编码方式的相关描述。与上述第二种方式中不同的是,当第一节点为中间节点时,第一节点采用第二编码数据对x-y个子编码数据包集合进行编码,当第一节点为源节点时,第一节点采用第二编码数据对x-y个子编码数据包集合对应的原始数据包进行编码。
26.应理解,在上述第一种方式中,第一节点为中间节点时,第一节点采用第二编码参数生成第二编码数据包集合的方式为再编码方式,即仅改变编码数据包的发送方式;而在第二种方式和第三种方式中,第一节点为中间节点时,第二节点采用第二编码数据包集合的方式为双层编码方式,即在编码数据包的技术上生成了更多的编码数据包。所述第二编码数据包集合中还包括编码类型,以对第二节点进行提醒,使得第二节点为目标节点时可以采用对应的解码方式对第二编码数据包集合进行解码。
27.在该种方式中,第一节点能够根据自第二节点的响应信息,因此可以针对丢包的子编码数据集合进行编码。且本技术实施例中还可以确定第一编码数据包集合的丢包率,进而第一节点可以根据丢包率确定需要生成的更多的子编码数据包集合的个数,或者每个子编码数据包集合中更多的编码数据包的个数,能够使得第一节点确定更为准确的第二编码参数,进而增加第二节点接收丢包的数据包中的数据的概率。
28.第二方面,本技术实施例提供一种编码数据包的传输方法,包括:第二节点接收来自第一节点的第一编码数据包集合,所述第一编码数据包集合是所述第一节点采用第一编码参数对源数据编码生成的;所述第二节点接收来自所述第一节点的第二编码数据包集合,所述第二编码数据包集合是所述第一节点确定所述第一编码数据包集合的传输过程中存在丢包时发送的,所述第二编码数据包集合是所述第一节点采用第二编码参数对所述源数据进行编码生成的,所述第一编码参数和所述第二编码参数不同。
29.在一种可能的实现方式中,本技术实施例中采用第二编码参数生成的所述第二编码数据包集合中的编码数据包的发送顺序与所述第一编码数据包集合中的编码数据包的发送顺序不同,或者,所述第二编码数据包集合中包含的编码数据包的个数大于所述第一编码数据包集合中的编码数据包的个数。
30.在一种可能的实施方式中,所述第二节点为目标节点,或所述目标节点和源节点之间的中间节点。
31.在一种可能的实施方式中,所述第一编码数据包集合中包括m个编码数据包,所述m为大于等于1的整数,所述第二节点接收来自第一节点的第一编码数据包集合之后,还包括:所述第二节点向所述第一节点发送第一响应信息,所述第一响应信息用于指示所述第二节点接收到的所述第一编码数据包集合中的n个编码数据包,所述n为大于等于0且小于m的整数。
32.在一种可能的实施方式中,所述第一编码数据包集合中包括x个子编码数据包集合,所述x为大于等于1的整数,所述第二节点接收来自第一节点的第一编码数据包集合之后,还包括:在预设时间段内,所述第二节点向所述第一节点发送第二响应信息,所述第二响应信息用于指示所述第二节点接收到所述第一编码数据包集合中的y个子编码数据包集合,所述y为大于等于0且小于x的整数。
33.在一种可能的实施方式中,所述第一编码数据包集合中包括x个子编码数据包集合,所述x为大于等于1的整数,所述第二节点接收来自第一节点的第一编码数据包集合之后,还包括:在预设时间段内,所述第二节点不向所述第一节点发送第二响应信息,所述第二响应信息用于指示所述第二节点接收到所述第一编码数据包集合中的y个子编码数据包集合,所述y为大于等于0且小于x的整数。
34.在一种可能的实施方式中,所述第二节点向所述第一节点发送第一响应信息,包括:若所述第二节点为所述目标节点,且所述第二节点根据所述n个编码数据包不能解码,则向所述第一节点发送所述第一响应信息;或者,若所述第二节点为所述中间节点,且所述第二节点确定所述n个编码数据包的矩阵的秩小于所述第一编码数据包集合对应的原始数据包的个数,则向所述第一节点发送所述第一响应信息。
35.在一种可能的实施方式中,所述第二节点向所述第一节点发送第二响应信息,包括:若所述第二节点为所述目标节点,且所述第二节点根据所述y个子编码数据包集合不能解码,则向所述第一节点发送所述第二响应信息;或者,若所述第二节点为所述中间节点,且所述第二节点确定所述y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合对应的原始数据包的个数,则向所述第一节点发送所述第二响应信息。
36.在一种可能的实施方式中,所述第二节点向所述第一节点发送第二响应信息,包括:若所述第二节点为所述目标节点,且所述第二节点根据所述y个子编码数据包集合不能解码,则不向所述第一节点发送所述第二响应信息;或者,若所述第二节点为所述中间节点,且所述第二节点确定所述y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合对应的原始数据包的个数,则不向所述第一节点发送所述第二响应信息。
37.应理解,本技术实施例中的编码方式应用在分批稀疏编码中。针对第二节点为中间节点或目标节时,可以采用不同的方式确定是否向第一节点反馈第一响应信息、或者第一响应信息。其中,在第二节点为中间节点时,中间节点可以子编码数据包集合的编码数据包的矩阵的秩与子编码数据包集合对应的原始数据包的个数比较的方式,确定是否向第一节点反馈第一响应信息、或者第一响应信息。若子编码数据包集合的编码数据包的矩阵的
秩大于等原因子编码数据包集合对应的原始数据包的个数,则确定目标节点根据子编码数据包集合的编码数据包可以解码,进而可以向第一节点反馈成功接收信息。若子编码数据包集合的编码数据包的矩阵的秩小于子编码数据包集合对应的原始数据包的个数,则确定目标节点根据子编码数据包集合的编码数据包不能解码,进而可以向第一节点反馈第一响应信息、或者第一响应信息,或者不向第一节点反馈第二响应信息。应理解,该成功接收信息用于指示第二节点接收到足够多的编码数据包,不影响目标节点的解码。
38.同理的,在第二节点为目标节点时,目标节点可以根据子编码数据包集合的编码数据包的是否能够解码方式,确定是否向第一节点反馈第一响应信息、或者第一响应信息。若目标节点可以根据子编码数据包集合的编码数据包的能够解码,进而可以向第一节点反馈成功接收信息。若目标节点可以根据子编码数据包集合的编码数据包的不能解码,进而可以向第一节点反馈第一响应信息、或者第一响应信息,或者不向第一节点反馈第二响应信息。
39.在一种可能的实施方式中,所述第一响应信息中包括所述n个编码数据包的序列标识,所述序列标识用于指示编码数据包的发送顺序。
40.在一种可能的实施方式中,当所述第一节点为所述源节点时,所述源数据为原始数据包,当所述第一节点为所述中间节点时,所述源数据为编码数据包。
41.在一种可能的实施方式中,所述第二编码数据包集合中还包括编码类型。
42.本技术实施例提供的编码数据包的传输方法的原理和技术效果,可以参考上述第一方面的相关描述,此处不再赘述。
43.第三方面,本技术实施例提供一种编码数据包的传输装置,包括:收发模块,用于向第二节点发送第一编码数据包集合,所述第一编码数据包集合是所述第一节点采用第一编码参数对源数据编码生成的。
44.处理模块,用于若确定所述第一编码数据包集合的传输过程中存在丢包,则采用第二编码参数对所述源数据进行编码,生成第二编码数据包集合,所述第二编码参数与所述第一编码参数不同。
45.所述收发模块,还用于向所述第二节点发送所述第二编码数据包集合。
46.在一种可能的实施方式中,所述第一编码数据包集合中包括m个编码数据包,所述m为大于等于1的整数。相应的,所述处理模块,具体用于若接收到来自所述第二节点的第一响应信息,则确定所述第一编码数据包集合的传输过程中存在丢包,所述第一响应信息用于指示所述第二节点接收到的所述第一编码数据包集合中的n个编码数据包,所述n为大于等于0且小于m的整数。
47.在一种可能的实施方式中,所述第一编码数据包集合中包括x个子编码数据包集合,所述x为大于等于1的整数,相应的,所述处理模块,具体用于若在向第二节点发送第一编码数据包集合后的预设时间段内,未接收到来自所述第二节点的第二响应信息,则确定所述第一编码数据包集合的传输过程中存在丢包,所述第二响应信息用于指示所述第二节点接收到所述第一编码数据包集合中的y个子编码数据包集合,所述y为大于等于0且小于x的整数。
48.在一种可能的实施方式中,所述处理模块,具体用于若在所述预设时间段内接收到来自所述第二节点的所述第二响应信息,则确定所述第一编码数据包集合的传输过程中
存在丢包。
49.在一种可能的实施方式中,所述第一编码参数包括第一生成矩阵和第一传输矩阵,所述第二编码参数包括所述第一生成矩阵和第二传输矩阵,所述第一生成矩阵用于对所述源数据编码生成所述m个编码数据包,传输矩阵用于确定所述m个编码数据包的发送顺序,所述第二传输矩阵与所述第一传输矩阵不同。相应的,所述处理模块,具体用于采用所述第二传输矩阵,调整所述m个编码数据包的发送顺序,生成所述第二编码数据包集合。
50.在一种可能的实施方式中,所述第一响应信息包括:所述n个编码数据包的序列标识,所述序列标识用于指示编码数据包的发送顺序。相应的,所述处理模块,具体用于根据所述n个编码数据包的序列标识,确定所述第二传输矩阵,所述第二传输矩阵使能调整所述m-n个编码数据包的发送顺序至所述m个编码数据包的发送顺序;采用所述第二传输矩阵,调整所述m-n个编码数据包的发送顺序至所述n个编码数据包的发送顺序。
51.在一种可能的实施方式中,所述第一节点为源节点和目标节点之间的中间节点,所述第一编码数据包集合中每个子编码数据包集合中包括m个编码数据包,所述m为大于等于1的整数,所述第一编码参数包括第一生成矩阵,所述第二编码参数包括第二生成矩阵,所述第二生成矩阵用于对所述源数据进行编码,使得每个子编码数据包集合包含o个编码数据包。相应的,所述处理模块,具体用于采用所述第二生成矩阵对所述源数据进行编码,使得每个子编码数据包集合包含o个编码数据包,以获取所述第二编码数据包集合。
52.相应的,所述源数据为:所述x个子编码数据包集合,或者x-y个子编码数据包集合。
53.在一种可能的实施方式中,所述第一节点为源节点,所述源数据为所述第一编码数据包集合中丢包的子编码数据包集合对应的原始数据包,所述第一编码参数包括第一生成矩阵,所述第二编码参数包括第二生成矩阵,所述第二生成矩阵用于对丢包的每个子编码数据包集合对应的原始数据包编码,以生成z个子编码数据包集合,所述z为大于x的整数。相应的,所述处理模块,具体用于采用所述第二生成矩阵对丢包的每个子编码数据包集合对应的原始数据包编码,生成z个子编码数据包集合,以得到所述第二编码数据包集合。
54.在一种可能的实施方式中,所述处理模块,还用于根据所述x、所述y,以及所述第一编码数据包集合中每个子编码数据包集合包含的编码数据包的个数,确定所述第一编码数据包集合的丢包率,且根据所述丢包率,确定所述第二生成矩阵。
55.在一种可能的实施方式中,所述第一节点为源节点,所述第二节点为所述源节点和目标节点之间的中间节点。
56.在一种可能的实施方式中,当所述第一节点为所述源节点时,所述源数据为原始数据包,当所述第一节点为所述中间节点时,所述源数据为编码数据包。
57.在一种可能的实施方式中,所述第二编码数据包集合中还包括编码类型。
58.本技术实施例提供的编码数据包的传输装置,可用于执行上述方法实施例中第一节点执行的编码数据包的传输方法。其实现原理和技术效果似,此处不再赘述。
59.第四方面,本技术实施例提供一种编码数据包的传输装置,包括:收发模块,用于接收来自第一节点的第一编码数据包集合,所述第一编码数据包集合是所述第一节点采用第一编码参数对源数据编码生成的。
60.所述收发模块,还用于接收来自所述第一节点的第二编码数据包集合,所述第二
编码数据包集合是所述第一节点确定所述第一编码数据包集合的传输过程中存在丢包时发送的,所述第二编码数据包集合是所述第一节点采用第二编码参数对所述源数据进行编码生成的,所述第一编码参数和所述第二编码参数不同。
61.在一种可能的实施方式中,所述第二节点为目标节点,或所述目标节点和源节点之间的中间节点。
62.在一种可能的实施方式中,所述第一编码数据包集合中包括m个编码数据包,所述m为大于等于1的整数。相应的,所述收发模块,还用于所述第二节点向所述第一节点发送第一响应信息,所述第一响应信息用于指示所述第二节点接收到的所述第一编码数据包集合中的n个编码数据包,所述n为大于等于0且小于m的整数。
63.在一种可能的实施方式中,所述第一编码数据包集合中包括x个子编码数据包集合,所述x为大于等于1的整数。相应的,所述收发模块,还用于在预设时间段内,向所述第一节点发送第二响应信息,所述第二响应信息用于指示所述第二节点接收到所述第一编码数据包集合中的y个子编码数据包集合,所述y为大于等于0且小于x的整数。
64.在一种可能的实施方式中,所述第一编码数据包集合中包括x个子编码数据包集合,所述x为大于等于1的整数。相应的,所述收发模块,还用于在预设时间段内,所述第二节点不向所述第一节点发送第二响应信息,所述第二响应信息用于指示所述第二节点接收到所述第一编码数据包集合中的y个子编码数据包集合,所述y为大于等于0且小于x的整数。
65.在一种可能的实施方式中,处理模块,用于根据所述n个编码数据包确定是否能解码;或者,所述处理模块,用于确定所述n个编码数据包的矩阵的秩小于所述第一编码数据包集合对应的原始数据包的个数。
66.相应的,所述收发模块,还用于若根据所述n个编码数据包不能解码,则向所述第一节点发送所述第一响应信息;或者,所述收发模块,还用于确定所述n个编码数据包的矩阵的秩小于所述第一编码数据包集合对应的原始数据包的个数,则向所述第一节点发送所述第一响应信息。
67.在一种可能的实施方式中,处理模块,用于根据所述y个子编码数据包集合确定是否能解码;或者,所述处理模块,用于确定所述y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合对应的原始数据包的个数。
68.在该种可能的实施方式中,所述收发模块,还用于若根据所述y个子编码数据包集合不能解码,则向所述第一节点发送所述第二响应信息;或者,所述收发模块,还用于若确定所述y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合对应的原始数据包的个数,则向所述第一节点发送所述第二响应信息。
69.在该种可能的实施方式中,所述收发模块,还用于若根据所述y个子编码数据包集合不能解码,则不向所述第一节点发送所述第二响应信息;或者所述收发模块,还用于若确定所述y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合对应的原始数据包的个数,则不向所述第一节点发送所述第二响应信息。
70.在一种可能的实施方式中,所述第一响应信息中包括所述n个编码数据包的序列标识,所述序列标识用于指示编码数据包的发送顺序。
71.在一种可能的实施方式中,当所述第一节点为所述源节点时,所述源数据为原始
数据包,当所述第一节点为所述中间节点时,所述源数据为编码数据包。
72.在一种可能的实施方式中,所述第二编码数据包集合中还包括编码类型。
73.本技术实施例提供的编码数据包的传输装置,可用于执行上述方法实施例中第二节点执行的编码数据包的传输方法。其实现原理和技术效果似,此处不再赘述。
74.第五方面,本技术实施例提供一种芯片,包括:包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得安装有所述芯片的设备执行上述方法实施例中第一方面和第二方面所执行的方法。
75.第六方面,本技术实施例提供一种电子设备,包括,所电子设备上存储有计算机程序,在所述计算机程序被所述电子设备执行时,实现如上述第一方面和第二方面所执行的方法。
76.第七方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现如上述第一方面和第二方面所执行的方法。
77.本技术实施例提供了一种编码数据包的传输方法、装置、电子设备和存储介质,在第一节点和第二节点之间传输第一编码数据包集合时,第一节点可以确定该第一编码数据包集合是否发生丢包,且还可以采用与生成第一编码数据包集合不同的编码参数对源数据进行编码,以提高第二节点接收丢包的编码数据包或丢包的编码数据包中包含的数据的概率,进而达到丢包的编码数据包或丢包的编码数据包中包含的数据重新传输的目的。本技术实施例中的编码数据包的传输方法,可以避免预先生成编码数据包的方法所造成的编码效率低和占用传输带宽的问题,依据第一编码数据包集合中真实存在的丢包进行重新编码传输,能够提高编码效率且降低传输带宽的占用。
附图说明
78.图1为本技术实施例提供的分批稀疏编码的原理示意图;
79.图2为本技术实施例提供的编码数据包的传输方法适用的场景示意图;
80.图3为本技术实施例提供的编码数据包的传输方法的网络架构示意图一;
81.图4为本技术实施例提供的编码数据包的传输方法的网络架构示意图二;
82.图5为本技术实施例提供的编码数据包的传输方法的流程示意图一;
83.图6为本技术实施例提供的编码数据包的传输方法的流程示意图二;
84.图7为本技术实施例提供的编码数据包的发送顺序的变化示意图;
85.图8为本技术实施例提供的编码数据包的传输方法的流程示意图三;
86.图9为本技术实施例提供的生成第二编码数据包集合的示意图一;
87.图10为本技术实施例提供的生成第二编码数据包集合的示意图二;
88.图11为本技术实施例提供的编码数据包的传输方法的流程示意图四;
89.图12为本技术实施例提供的生成第二编码数据包集合的示意图三;
90.图13为本技术实施例提供的生成第二编码数据包集合的示意图四;
91.图14为本技术实施例提供的编码数据包的传输装置的结构示意图一;
92.图15为本技术实施例提供的编码数据包的传输装置的结构示意图二;
93.图16为本技术实施例提供的电子设备的结构示意图。
具体实施方式
94.分批稀疏编码(batched sparse codes,bats codes)是针对编码数据包在传输过程中发生丢包现象而设计的信道编码技术。通过结合低密度奇偶校验编码(low density parity check code,ldpc)和随机线性网络编码(random linear network code,rnlc)这两种编码技术,分批稀疏编码可以继承ldpc中无需节点反馈,以及rnlc中允许中间节点参与再编码的处理的优势。下面首先结合图1对分批稀疏编码的编解码原理进行说明:
95.图1为本技术实施例提供的分批稀疏编码的原理示意图。如图1所示,如待编码的原始数据包的个数为9个,分别为b1、b2,
……
,b9。分批(batch)的个数为3,每个batch中包括m个编码数据包,m如为4。源节点采用低密度奇偶校验编码的方式对该9个编码数据包进行编码时,如可以将b1、b2、b3、b4、b5和b7进行编码,生成batch1中的四个编码数据包,将b2、b3、b6和b7进行编码,生成batch2中的四个编码数据包,将b6、b7和b9进行编码,生成batch3中的四个编码数据包。图1中以1、2和3表征batch1、batch2和batch3。
96.b
i
表示原始数据包中的部分原始数据包的集合,i表征原始数据包的分批个数,i与batch的个数相等。如在上述编码过程中,b1={b1,b2,b3,b4,b5,b7},b2={b2,b4,b6,b8},b3={b6,b7,b9},对应的,编码后得到的batch可以表示为x
i
,上述编码得到的3个batch可以分别为x1、x2和x3。其中,x
i
可以由下式公式一得到:
97.x
i
=b
i
g
i
ꢀꢀ
公式一
98.其中,令d
i
=|b
i
|,即bi中包括d
i
个原始数据包,将d
i
称为x
i
的度。度d
i
是独立分布的随机变量,将其分布称为度分布(degree distribution)。g
i
是d
i
×
m的随机矩阵,称为生成矩阵。生成矩阵用于对原始数据包进行编码生成m个编码数据包,如图1中所示,g1可以将原始数据包b1、b2、b3、b4、b5和b7进行编码,生成batch1中的4个编码数据包。
99.其中,源节点在生成batch1中的4个编码数据包后,可以使用传输矩阵,生成batch1。传输矩阵用于确定batch1中的4个编码数据包的发送顺序,以确定最终向下一节点发送的batch1为{m1,m2,m3,m4}。m1、m2、m3和m4为batch1中的4个编码数据包,batch1中的4个编码数据包的发送顺序可以分别为m1、m2、m3、m4。
100.如下一节点为中间节点,则中间节点接收到的batch可以如下公式二表示:
101.y
i
=x
i
h
i
=b
i
g
i
h
i
ꢀꢀ
公式二
102.h
i
是一个m行的随机矩阵,称为传输矩阵。对传输矩阵h
i
,其秩分布能够反映出网络的丢包特性。
103.在源节点向中间节点传输batch的过程中,其中的编码数据包可能存在丢包现象,因此到达中间节点的batch中的编码数据包的个数可能小于m。中间节点可以使用随机线性网络编码,重新生成m个编码数据包,并转发给下一节点。如图1所示,在到达中间节点时,batch1中的第三个编码数据包丢包,batch2中的第二个编码数据包丢包,batch3中未发生丢包。中间节点可以使用网络随机线性网络编码,对batch1和batch2重新生成m个编码数据包。
104.应注意,中间节点不对编码数据包进行解码,且若中间节点为多个时,每个中间节点均是使用网络随机线性网络编码,重新生成m个编码数据包,并转发给下一节点。
105.目标节点在接收到上一节点发送的batch后,可以对接收到的batch中的编码数据包进行解码。其中,编码数据包的头信息中包含有传输矩阵h
i
,以及源节点和目标节点协商得到的g
i
,目标节点使用传输矩阵和生成矩阵可以进行解码。应注意,对于一个batch,rank
(gh),即生成矩阵和传输矩阵的秩等于这个batch包含的原始数据包的个数时,该batch可解。
106.目前的分批稀疏编码技术中,目标节点常用的解码方式是置信传输(belief propagation,bp)解码和置活(inactivation)解码。本技术实施例中对目标节点如何采用上述解码方式进行解码不做赘述,具体可以参照现有技术中的相关描述。
107.在batch传输的过程中,各节点采用的传输协议如下表一所示:
108.表一
[0109][0110]
其中,source ip address是源节点地址,destination ip address是目标节点地址,next hop ip address是中间节点地址,packet size是原始数据包长度,packet id是原始数据包编号,如上述的b1等。batch id是batch的编号,如上述的batch1等;m是每个batch内编码包的个数,k是每个batch中原始数据包的个数,如batch1中为6个原始数据包,vector是传输矩阵,payload是编码数据包。应理解,上述表一中所示的信息可以携带在一个batch中每个编码数据包的头信息中。
[0111]
示例性的,如源节点向目标节点发送的batch1中包括4个编码数据包,即上述的payload。每个编码数据包的头信息中包括该batch1的源节点地址、目标节点地址、中间节点地址(如中间节点1和中节点2)、原始数据包长度、原始数据包编号(如b1、b2、b3、b4、b5和b7)、batch的编号(如batch1)、该batch1中包括的编码数据包的个数m为4、batch1中原始数据包的个数k为6,以及传输该batch1时的传输矩阵。
[0112]
现有的分批稀疏编码中,可以预估节点之间的丢包率,预先确定源节点需要形成的一个编码数据包集合中的编码数据包的个数m,进而预先生成多个batch,在每个batch中生成m个编码数据包。图2为本技术实施例提供的编码数据包的传输方法适用的场景示意图。该场景中包括:源节点、中间节点1、中间节点2和接收节点,本技术实施例中对中间节点的个数不做限制。
[0113]
如图2所示,源节点至目标节点能够支持10%的丢包率(即10%的丢包率对目标节点的解码不造成影响),假设预估的源节点与中间节点1的之间的丢包率为10%,中间节点1与中间节点2的之间的丢包率为10%,中间节点3与目标节点之间的丢包率为70%。若目标节点在接收到一个batch中的16个编码数据包时可以成功解码,则源节点在进行编码时,需要在一个batch中编码64个编码数据包,才能使得目标节点能够接收到足够多个数的编码数据包进行解码。但该方法中,需要在一个batch中预先编码足够多的编码数据包,编码效率低,且会占用较大的传输带宽。示例性的,如假设n是解码成功需要的batch的个数,t为每个batch中m个编码数据包的单位长度,其中的传输带宽需要32*t*n。
[0114]
一方面,通过预估的方式确定的节点之间的丢包率不准确,为了能够使得目标节点成功解码,可能还需要编码比64更多的编码数据包,占用传输带宽。另一方面,即使预估
的节点之间的丢包率准确,对于丢包率较小的节点,不需要传输上述预先编码的编码数据包,就能够弥补丢包造成的传输损伤。如,对于源节点和中间节点1,以及中间节点1和中间节点2之间的丢包率为10%,根本不需要传输64个的编码数据包,就能够弥补丢包造成的传输损伤,因此造成丢包率较小的节点的传输带宽的占用。
[0115]
为了解决现有技术中的问题,本技术实施例提供了一种编码数据包的传输方法,在确定相邻两个节点之间传输的编码数据包发生丢包时,再对产生丢包的编码数据包或上一次发送的编码数据包进行编码再传输,以避免预先生成编码数据包的方式造成的编码效率低和占用传输带宽的问题,本技术实施例能够依据真实存在的丢包进行重传,能够提高编码效率且降低传输带宽的占用。
[0116]
应理解,本技术实施例提供的编码数据包的传输方法,可以应用在任意两个传输数据的节点之间,节点可以包括源节点、目标节点,以及源节点和目标节点之间的中间节点。源节点和目标节点可以为终端设备、服务器、基站等电子设备,中间节点可以为传统的网络设备,如路由设备、网关设备等。在核心网中,中间节点可以为还可以为接入网(access network,an)节点、以及多个网络功能(network function,nf)网元。其中,多个nf网元可以包括:用户面功能(user plane function,upf)网元、接入和移动性管理功能(access and mobility management function,amf)网元、会话管理功能(session management function,smf)网元、策略控制功能(policy control function,pcf)网元、网络切片选择功能(network slice selection function,nssf)网元、统一数据管理(unified data management,udm)网元、网络仓库功能(network repository function,nrf)网元、网络开放功能(network exposure function,nef)网元、网络数据分析功能(network data analytics function,nwdaf)网元、数据存储功能网元(unified data repository,udr)等。另外,网络架构还可以包括:数据网(data network,dn)节点、应用功能(application function,af)网元等。另外,中间节点还可以为传统的ipx等数据转发路径上的各个节点。
[0117]
其中,上述的终端设备可以为终端terminal、用户设备(user equipment,ue)、移动台(mobile station,ms)、移动终端(mobile terminal,mt)等。终端设备可以是手机(mobile phone)、平板电脑(pad)、带无线收发功能的电脑、虚拟现实(virtual reality,vr)终端设备、增强现实(augmented reality,ar)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。
[0118]
图3为本技术实施例提供的编码数据包的传输方法的网络架构示意图一。图4为本技术实施例提供的编码数据包的传输方法的网络架构示意图二。如图3所示,其中以源节点和目标节点均为终端设备,中间节点为路由设备进行示例说明。如图4所示,其中以源节点为终端设备,目标节点均为服务器,中间节点为an节点和upf节点进行示例说明。
[0119]
下面结合具体的实施例对本技术实施例提供的编码数据包的传输方法进行说明。下面这几个实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0120]
图5为本技术实施例提供的编码数据包的传输方法的流程示意图一。如图5所示,
本技术实施例提供的编码数据包的传输方法可以包括:
[0121]
s501,第一节点向第二节点发送第一编码数据包集合,第一编码数据包集合是第一节点采用第一编码参数对源数据编码生成的。
[0122]
s502,若第一节点确定第一编码数据包集合的传输过程中存在丢包,则采用第二编码参数对源数据进行编码,生成第二编码数据包集合,第二编码参数与第一编码参数不同。
[0123]
s503,第一节点向第二节点发送第二编码数据包集合。
[0124]
上述s501中,第一节点可以为源节点或中间节点,第二节点可以为中间节点或目标节点。应理解,本技术实施例中的编码数据包的传输方法应用在分批稀疏编码的场景中,上述的第一编码数据包集合中可以包括至少一个batch,其中的batch的具体释义可以参照上述的相关描述。
[0125]
第一编码数据包集合是第一节点采用第一编码参数对源数据编码生成的。其中,当第一节点为源节点时,源数据可以为原始编码包,对应的,第一编码参数可以为生成矩阵,或者生成矩阵和传输矩阵。应理解,源节点在采用生成矩阵生成第一编码数据包集合后,可以采用默认的发送顺序发送第一编码数据包集合中的编码数据包,该种情况下第一编码参数中可以不包括传输矩阵。或者,源节点在采用生成矩阵生成第一编码数据包集合后,可以采用传输矩阵确定第一编码数据包集合中的编码数据包的发送顺序后,以该发送顺序发送第一编码数据包集合中的编码数据包。
[0126]
其中,当第一节点为中间节点时,源数据可以为来自上一节点的编码数据包,或者中间节点采用随机线性网络编码生成的编码数据包。对应的,第一编码参数可以为生成矩阵,或者生成矩阵和传输矩阵,其中中间节点采用第一编码参数对源数据编码的原理与上述源节点类似,在此不做赘述。但与上述源节点不同的是,第一节点为中间节点时,源数据为编码数据包。
[0127]
可选的,本技术实施例中,在源节点第一次对原始数据包采用分批稀疏编码的方式编码时,可以预估源节点与下一节点的丢包率,进而确定编码形成的batch的个数,以及每个batch中的编码数据包的个数。
[0128]
上述s502中,本技术实施例中可以在现有的分批稀疏编码的方式中增加反馈机制。示例性的,第二节点可以在接收到第一编码数据包集合中的所有的编码数据包时,向第一节点反馈接收成功信息,以使第一节点确定第一编码数据包集合的传输过程中不存在丢包。若第一节点未接收到第二节点反馈的接收成功信息,则可以确定第一编码数据包集合的传输过程中存在丢包。或者,第二节点还可以向第一节点反馈接收到的编码数据包,以使第一节点根据第二节点是否接收到第一编码数据包集合中所有的编码数据包,以确定第一编码数据包集合的传输过程中是否存在丢包。
[0129]
或者,本技术实施例中还可以在现有的分批稀疏编码的方式中设置定时器,如源节点可以根据原始数据包的时延敏感性设置编码数据包传输的定时器t。如,源节点可以根据原始数据包的网络协议(internet protocol,ip)报文的头部的差分服务代码点(differentiated service code point,dscp)值(ef/af/be),或者媒体访问控制(media access control)报文中的虚拟局域网标签(virtual local area network,vlan tag)包含的性能保持指数(property retention index,pri)信息,为以该原始数据包生成的编码
数据包设置定时器t。
[0130]
其中,在第一节点向第二节点发送第一编码数据包集合后,若定时器t超时,第一节点未接收到来自第二节点的反馈信息,则第一节点确定第一编码数据包集合的传输过程中存在丢包。
[0131]
本技术实施例中,若第一节点确定第一编码数据包集合的传输过程中存在丢包,则采用第二编码参数对源数据进行编码,生成第二编码数据包集合。其中,第二编码参数与上述第一编码参数不同。
[0132]
本技术实施例中,可以采用与第一编码参数不同的第二编码参数对源数据编码生成的第二编码数据包集合,目的是为了增加第二节点接收第一编码数据包集合中丢包的编码数据包对应的源数据的概率,进而提高目标节点成功解码的可能性。
[0133]
可选的,第二编码数据包集合中的编码数据包的发送顺序与第一编码数据包集合中的编码数据包的发送顺序不同,或者,第二编码数据包集合中包含的编码数据包的个数大于第一编码数据包集合中的编码数据包的个数。应理解,在这种可选的方式中,第二编码数据包集合中的编码数据包的发送顺序与第一编码数据包集合中的编码数据包的发送顺序不同,可以增加第二节点接收第一编码数据包集合中丢包的编码数据包,进而增加接收到编码数据包对应的源数据的概率。在第二编码数据包集合中包含的编码数据包的个数大于第一编码数据包集合中的编码数据包的个数时,可以增加第二节点接收第一编码数据包集合中丢包的编码数据包对应的源数据的概率,这两种方式均能够提高目标节点成功解码的可能性。
[0134]
可选的,第二编码参数与第一编码参数不同,可以为与第一编码参数中的生成矩阵和/或传输矩阵不同。
[0135]
其中,当第二编码参数中的传输矩阵与第一编码参数中的传输矩阵不同时,第二编码数据包集合中包含的编码数据包与第一编码数据包集合中包含的编码数据包相同,但第二编码数据包集合中包含的编码数据包的发送顺序与第一编码数据包集合中包含的编码数据包的发送顺不同。本技术实施例中,采用与第一编码参数中不同的传输矩阵,可以增加第二节点接收到第一编码数据包集合中丢包编码数据包的概率。
[0136]
当第二编码参数中的生成矩阵与第一编码参数中的生成矩阵不同时,第二编码数据包集合中包含的编码数据包与第一编码数据包集合中包含的编码数据包不同。本技术实施例中,采用与第一编码参数中不同的生成矩阵对源数据进行编码,生成与第一编码数据包集合中不同的编码数据包。对应的,第二节点可以接收到与上一次不同的编码数据包,进而增加第二节点接收到第一编码数据包集合中丢包的编码数据包中包含的数据的概率。
[0137]
当第二编码参数中的传输矩阵、生成矩阵均与第一编码参数中的传输矩阵、生成矩阵不同时,第二编码数据包集合中包含的编码数据包与第一编码数据包集合中包含的编码数据包不同,且编码数据包的发送顺序也不相同。如此设置,也可以增加第二节点接收到第一编码数据包集合中丢包编码数据包中包含的数据的概率。
[0138]
应理解,本技术实施例中第二编码数据包集合可以包括一个batch。示例性的,第一节点为源节点,第一编码数据包集合中包括batch1时,第二编码数据包集合是源节点根据第二编码参数对b1、b2、b3、b4、b5和b7进行编码生成的batch1′
。若第一编码数据包集合中包括batch1和batch2时,第二编码数据包集合包括源节点根据第二编码参数对b1、b2、b3、b4、
b5和b7进行编码生成的batch1′
,以及对b2、b4、b6、b8进行编码生成的batch2
′
。若第一节点为中间节点,第一编码数据包集合中包括batch1中的3个编码数据包时,第二编码数据包集合是中间节点根据第二编码参数对该3个编码数据包进行编码生成的batch1′
。
[0139]
上述s503中,在第一节点生成第二编码数据包集合后,可以向第二节点发送第二编码数据包集合。
[0140]
本技术实施例提供的编码数据包的传输方法中,在第一节点和第二节点之间传输第一编码数据包集合时,第一节点可以确定该第一编码数据包集合是否发生丢包,且还可以采用与生成第一编码数据包集合不同的编码参数对源数据进行编码,以提高第二节点接收丢包的编码数据包或丢包的编码数据包中包含的数据的概率,进而达到丢包的编码数据包或丢包的编码数据包中包含的数据重新传输的目的。本技术实施例中的编码数据包的传输方法,可以避免预先生成编码数据包的方法所造成的编码效率低和占用传输带宽的问题,依据第一编码数据包集合中真实存在的丢包进行重新编码传输,不仅能够提高编码效率且降低传输带宽的占用,还能够提高目标节点成功解码的概率。
[0141]
在上述实施例的基础上,下面从第一节点和第二节点交互的角度,对本技术实施例中第二节点采用的三种反馈响应的方式,以及在对应的反馈响应方式下的编码数据包的传输方法进行说明:
[0142]
第一种方式:第二节点向第一节点反馈第一响应信息,第一响应信息用于指示第二节点接收到的第一编码数据包集合中的n个编码数据包。
[0143]
图6为本技术实施例提供的编码数据包的传输方法的流程示意图二。如图6所示,本技术实施例提供的码数据包的传输方法可以包括:
[0144]
s601,第一节点向第二节点发送第一编码数据包集合,第一编码数据包集合是第一节点采用第一编码参数对源数据编码生成的,第一编码参数包括第一生成矩阵和第一传输矩阵。
[0145]
s602,第二节点向第一节点发送第一响应信息,第一响应信息用于指示第二节点接收到的第一编码数据包集合中的n个编码数据包。
[0146]
s603,第一节点确定第一编码数据包集合的传输过程中存在丢包,且采用第二编码参数对源数据进行编码,生成第二编码数据包集合,第二编码参数包括第一生成矩阵和第二传输矩阵。
[0147]
s604,第一节点向第二节点发送第二编码数据包集合。
[0148]
上述s601中的实施方式可以参照上述实施例中s501中的相关描述。第一编码数据包集合中包括一个batch,第一节点采用第一编码参数生成第一编码数据包集合。第一编码参数包括第一生成矩阵和第一传输矩阵,其中,第一节点采用第一生成矩阵对源数据进行编码,生成m个编码数据包,第一传输矩阵用于确定该m个编码数据包的发送顺序,m为大于等于1的整数。该种方式下,第一编码数据包集合中包括m个编码数据包。
[0149]
上述s602中,第二节点在接收到第一编码数据包集合中的编码数据包后,可以确定是否向第一节点发送第一响应信息,第一响应信息用于指示第二节点接收到的第一编码数据包集合中的n个编码数据包,n为大于等于1且小于m的整数。本技术实施例中,第二节点可以为中间节点或目标节点。
[0150]
当第二节点为目标节点时,目标节点可以根据接收到的n个编码数据包进行解码,
若目标节点根据该n个编码数据包能够成功解码,则向第一节点反馈成功接收信息,该成功接收信息用于指示第一编码数据包集合在传输的过程中未丢包。若目标节点根据该n个编码数据包不能解码,则向第一节点发送第一响应信息。
[0151]
当第二节点为中间节点时,中间节点确定接收到的n个编码数据包的矩阵的秩,其中,矩阵的秩为rank(gh),即第一生成矩阵和第一传输矩阵的乘积的秩。中间节点确定n个编码数据包的矩阵的秩大于等于第一编码数据包集合中包含的原始数据包的个数时,则向第一节点反馈成功接收信息,该成功接收信息用于指示第一编码数据包集合在传输的过程中未丢包。若中间节点确定n个编码数据包的矩阵的秩小于第一编码数据包集合中包含的原始数据包的个数时,则向第一节点发送第一响应信息。应理解,第一传输矩阵、第一编码数据包集合中包含的原始数据包的个数的信息可以携带在第一编码数据包集合中每个编码数据包的头信息中,第一生成矩阵为第一节点和第二节点进行协商的生成矩阵。
[0152]
上述s603中,第一节点接收到来自第二节点的第一响应信息,则确定第一编码数据包集合的传输过程中存在丢包。
[0153]
第二编码参数包括第一生成矩阵和第二传输矩阵,第一生成矩阵用于对源数据编码生成m个编码数据包,该m个编码数据包与第一编码数据包集合中的m个编码数据包相同。本技术实施例中的第二传输矩阵与第一传输矩阵不同,即第二编码数据包集合中的m个编码数据包的发送顺序与第一编码数据包集合中的m个编码数据包的发送顺序不同。也就是说,本实施例中,第一节点采用第二编码参数对源数据进行编码,即为根据第二传输矩阵,调整m个编码数据包的发送顺序,生成第二编码数据包集合。
[0154]
应理解,本技术实施例中的第一传输矩阵和第二传输矩阵均可以为随机单位矩阵。
[0155]
本技术实施例中,第一响应信息包括:n个编码数据包的序列标识,序列标识用于指示编码数据包的发送顺序。其中的编码数据包的序列标识可以为编码数据包的sequence id。示例性的,第一编码数据包集合为batch1,batch1中包括4个编码数据包,分别为m1、m2、m3、m4。其中,m
1-m4为编码数据包的序列标识,1表明m1是第一个发送的编码数据包,以此类推。若第一响应信息包括:m1、m3、m4,则确定m2丢包。
[0156]
为了增加第二节点对第一编码数据包集合中的丢包的编码数据包的接收的概率,本技术实施例中可以根据第一响应信息中的n个编码数据包的序列标识,确定第二传输矩阵,第二传输矩阵使能调整m-n个编码数据包的发送顺序至n个编码数据包的发送顺序。其中,m-n个编码数据包即为第一编码数据包集合中丢包的编码数据包,n个编码数据包即为第二节点接收到的第一编码数据包集合中的编码数据包。也就是说,第二传输矩阵使能将第一编码数据包集合中丢包的编码数据包的发送顺序调整至未丢包的编码数据包的发送顺序上,以增加第二节点接收丢包的编码数据包的概率。对应的,本技术实施例中,第一节点可以采用上述确定的第二传输矩阵,调整m-n个编码数据包的发送顺序至n个编码数据包的发送顺序,以生成第二编码数据包集合。
[0157]
图7为本技术实施例提供的编码数据包的发送顺序的变化示意图。如图7所示,第一编码数据包集合中的编码数据包的发送顺序为m1、m2、m3、m4,在第二编码数据包集合中的编码数据包的顺序为m2、m1、m3、m4,将丢包的m2的发送顺序调整至未丢包的m1的发送顺序上,以使第二节点可以接收到丢包的m2。
[0158]
应注意,该种方法对于第一节点是源节点或中间节点均适用,不同的是,当第一节点为源节点时,源数据为原始数据包,如batch1对应的b1、b2、b3、b4、b5和b7。当第一节点为中间节点时,源数据为编码数据包,如batch1中的m1、m2、m3、m4,应理解,batch1中的m1、m2、m3、m4可以是中间节点采用随机线性网络编码生成的,或者从上一节点接收到的。
[0159]
上述s604中的实施方式可以参照上述实施例中s503中的相关描述。
[0160]
在该种方式中,第一编码数据包集合也可以包括多个batch,第一节点和第二节点对每个batch的处理方式于上述相同。在该种情况下,第一编码数据包集合中包括x个子编码数据包集合,x为大于等于1的整数,每个子编码数据包集合中包括m个编码数据包。
[0161]
上述s602可以替换为:第二节点向第一节点发送第一响应信息,第一响应信息用于指示第二节点接收到的每个子编码数据包集合中的n个编码数据包。上述s603对应替换为:第一节点确定每个子编码数据包集合的传输过程中存在丢包,则第一节点采用第二编码参数对每个子编码数据包集合对应的源数据进行编码,生成第二编码数据包集合。
[0162]
在该方式中,第二节点可以向第一节点响应接收到的第一编码数据包集合中的编码数据包,使得第一节点确定第一编码数据包集合中丢包的编码数据包,进而第一节点可以调整编码数据包的发送顺序,将丢包的编码数据包的发送顺序调整至未丢包的编码数据包的发送顺序上,以增加第二节点接收丢包的编码数据包的概率。
[0163]
第二种方式:第二节点不向第一节点反馈第二响应响应信息,第二响应信息用于指示第二节点接收到第一编码数据包集合中的y个子编码数据包集合。
[0164]
图8为本技术实施例提供的编码数据包的传输方法的流程示意图三。如图8所示,本技术实施例提供的码数据包的传输方法可以包括:
[0165]
s801,第一节点向第二节点发送第一编码数据包集合,第一编码数据包集合是第一节点采用第一编码参数对源数据编码生成的,第一编码参数包括第一生成矩阵。
[0166]
s802,第二节点不向第一节点发送第二响应信息。
[0167]
s803,第一节点向第二节点发送第一编码数据包集合后的预设时间段内,若未接收到来自第二节点的第二响应信息,则确定第一编码数据包集合的传输过程中存在丢包。
[0168]
s804,第一节点采用第二编码参数对源数据进行编码,生成第二编码数据包集合,第二编码参数包括第二生成矩阵。
[0169]
s805,第一节点向第二节点发送第二编码数据包集合。
[0170]
上述s801中的实施方式可以参照上述实施例中s501中的相关描述。第一编码数据包集合中包括x个子编码数据包集合,每个子编码数据包集合中包括m个编码数据包,x为大于等于1的整数,m为大于等于1的整数。其中,子编码数据包集合为一个batch。
[0171]
示例性的,第一编码数据包集合中可以包括batch1、batch2和batch3。第一编码参数包括第一生成矩阵,其中,第一节点根据第一生成矩阵对源数据进行编码,生成x个子编码数据包集合。示例性的,第一节点为源节点,源数据为batch1对应的原始数据包b1、b2、b3、b4、b5和b7,batch2对应的原始数据包b2、b4、b6、b8,以及batch3对应的原始数据包b6、b7、b9,x个子编码数据包集合分别为batch1、batch2和batch3。
[0172]
第一编码参数中包括第一生成矩阵,第一节点采用第一生成矩阵对原始数据包编码,可以生成x个子编码数据包集合。应理解,本技术实施例中的第一编码参数或第二编码参数中可以包括相同的传输矩阵、或者不包括传输矩阵均可以,本技术实施例中对此不做
限制。
[0173]
上述s802中,与上述s602类似的,第二节点在接收到第一编码数据包集合中的子编码数据包集合后,可以确定是否向第一节点发送第二响应信息。第二响应信息中可以包括第二节点接收到的y个子编码数据包集合的标识,如batch id。其中,第二节点可以为中间节点或目标节点,y为大于等于1且小于x的整数。
[0174]
对应的,当第二节点为目标节点时,目标节点可以根据接收到的y个子编码数据包进行解码,若目标节点根据该y个子编码数据包能够成功解码,则向第一节点反馈成功接收信息,该成功接收信息用于指示第一编码数据包集合在传输的过程中未丢包。若目标节点根据该y个子编码数据包不能解码,则不向第一节点发送第二响应信息。
[0175]
当第二节点为中间节点时,中间节点确定接收到的y个子编码数据包集合中每个子编码数据包集合中的编码数据包的矩阵的秩(即每个batch的秩),其中,矩阵的秩为rank(g),即第一生成矩阵的秩。中间节点确定y个子编码数据包集合中每个子编码数据包集合中的编码数据包的矩阵的秩大于等于每个子编码数据包集合中包含的原始数据包的个数时,则向第一节点反馈成功接收信息,该成功接收信息用于指示第一编码数据包集合在传输的过程中未丢包。若中间节点确定y个子编码数据包集合中每个子编码数据包集合中的编码数据包的矩阵的秩小于每个子编码数据包集合中包含的原始数据包的个数时,则不向第一节点发送第二响应信息。
[0176]
示例性的,如中间节点接收到的y个子编码数据包集合分别为batch1、batch2和batch3,且确定batch1中编码数据包的矩阵的秩大于等于batch1包含的原始数据包的个数6,batch2中编码数据包的矩阵的秩大于等于batch2包含的原始数据包的个数4,以及batch3中编码数据包的矩阵的秩大于等于batch3包含的原始数据包的个数3,则向第一节点反馈成功接收信息。若确定batch1中编码数据包的矩阵的秩小于batch1包含的原始数据包的个数6,batch2中编码数据包的矩阵的秩小于batch2包含的原始数据包的个数4,以及batch3中编码数据包的矩阵的秩小于batch3包含的原始数据包的个数3,则不向第一节点发送第二响应信息。
[0177]
应理解,因为第二节点未向第一节点发送第二响应信息,因此图8中未示出该步骤。
[0178]
上述s803中,本技术实施例中在现有的分批稀疏编码的基础上设置定时器,相关介绍可以参照上述s502中的相关描述。
[0179]
若定时器超时,第一节点未接收到来自第二节点的第二响应信息,则第一节点确定第一编码数据包集合的传输过程中存在丢包。也就是说,若在第一节点向第二节点发送第一编码数据包集合后的预设时间段内,第一节点未接收到来自第二节点的第二响应信息,则确定第一编码数据包集合的传输过程中存在丢包。其中,该预设时间段即为定时器对应的时间。
[0180]
上述s804中,第二节点可以采用第二编码参数对源数据进行编码,生成第二编码数据包集合。第二编码参数包括第二生成矩阵,第一节点可以为源节点或中间节点,下面针对第一节点为源节点,以及第一节点为中间节点时采用第二编码参数对源数据进行编码,生成第二编码数据包集合的过程分开进行说明:
[0181]
1、当第一节点为源节点时,所述源数据为丢包的子编码数据包集合对应的原始数
据包,所述第二生成矩阵用于对丢包的每个子编码数据包集合对应的原始数据包编码,以生成z个子编码数据包集合,所述z为大于x的整数。对应的,第一节点采用第二生成矩阵对丢包的每个子编码数据包集合对应的原始数据包编码,生成z个子编码数据包集合,以获取第二编码数据包集合,该第二编码数据包集合包括z个子编码数据包集合。应理解,本技术实施例中丢包的子编码数据包集合为第一编码数据包集合中包括的x个子编码数据包集合。
[0182]
本技术实施例中,第一节点可以根据源数据重新生成比第一编码数据包集合中更多的子编码数据包集合,是为了在与第一编码数据包集合相同的丢包率下,使得第二节点能够接收到更多的编码数据包,增加第二节点接收丢包的数据包中的数据的概率。应理解,第二节点对每个子编码数据包集合对应的原始数据包编码生成的子编码数据包集合的个数相等。
[0183]
图9为本技术实施例提供的生成第二编码数据包集合的示意图一。如图9所示,第一编码数据包集合中丢包的子编码数据包集合包括batch1、batch2以及batch3。对应的,源数据包括batch1对应的原始数据包b1、b2、b3、b4、b5和b7,batch2对应的原始数据包b2、b4、b6、b8,以及batch3对应的原始数据包b6、b7、b9。本技术实施例中第一节点采用第二生成矩阵对batch1对应的原始数据包b1、b2、b3、b4、b5和b7进行编码,生成batch1′
、batch2′
,第一节点采用第二生成矩阵对batch2对应的原始数据包b2、b4、b6、b8进行编码,生成batch3′
、batch4′
,第一节点采用第二生成矩阵对batch3对应的原始数据包b6、b7、b9进行编码,生成batch5′
和batch6′
。最终生成的z个子编码数据包集合包括batch1′
、batch2′
、batch3′
、batch4′
、batch5′
和batch6′
,对应的,第二编码数据包集合包括batch1′
、batch2′
、batch3′
、batch4′
、batch5′
和batch6′
。图9中分别1
′
、2
′
、3
′
、4
′
、5
′
、6
′
表示batch1′
、batch2′
、batch3′
、batch4′
、batch5′
和batch6′
。
[0184]
2、当第一节点为中间节点时,第二编码参数包括第二生成矩阵,第二生成矩阵用于对源数据进行编码,使得每个子编码数据包集合包含o个编码数据包,o为大于m的整数。鉴于本技术实施例中第一节点未接收到第二响应信息,因此第一节点不能确定第二节点接收到x个子编码数据包集合中的哪些子编码数据包集合。本技术实施例中第一采用第二生成矩阵生成x个子编码数据包集合,且每个子编码数据包集合包含o个编码数据包,o为大于m的整数。本技术实施例中,第二节点可以根据源数据重新生成第一编码数据包集合中相同的子编码数据包集合,但每个子编码数据包集合中的编码数据包的个数增加。同样的,如此设置,可以在与第一编码数据包集合相同的丢包率下,使得第二节点能够接收到更多的编码数据包,增加第二节点接收丢包的数据包中的数据的概率。应理解,此处的源数据为x个子编码数据包集合。
[0185]
图10为本技术实施例提供的生成第二编码数据包集合的示意图二。如图10所示,示例性的,若第一节点为中间节点,中间节点向第二节点发送的为batch1、batch1和batch3中的编码数据包,对应的,源数据包括batch1、batch1和batch3中编码数据包。下面以第一节点采用第二生成矩阵对batch1中编码数据包m1、m2、m3、m4进行编码作为示例说明。本技术实施例中第一节点采用第二生成矩阵对m1、m2、m3、m4进行编码,生成m1′
、m2′
、m3′
、m4′
、m5′
、m6′
、m7′
、m8′
8个编码数据包。其中,第一编码数据包集合中包括的其他batch,按照相同的方法生成对应的batch
′
。
[0186]
上述s805中的实施方式可以参照上述实施例中s503中的相关描述。
[0187]
应注意,在该第二种方式中,若第一节点在向第二节点发送第二编码数据包集合之后,采用s802-s803中的方式确定第二编码数据包集合的传输过程中存在丢包,则可以采用第三编码参数对源数据进行编码,生成第三编码数据包集合。其中,第三编码参数包括第三生成矩阵,当第一节点为源节点时,第三生成矩阵用于对源数据进行编码,生成mz个子编码数据包集合,m为大于1的整数。当第一节点为中间节点时,第三生成矩阵用于对源数据进行编码,在每个子编码数据包集合中生成mz个编码数据包。
[0188]
在第二编码数据包集合传输的过程中,各节点采用的传输协议如下述表二所示:
[0189]
表二
[0190][0191][0192]
其中,相较于上表一,该传输协议中增加了第二节点接收的原始数据包的编号acknowledge packet id、第二节点接收的编码数据包集合的编号acknowledge batch id,以及第二节点接收的编码数据包集合中的编码数据包的编号sequence id。
[0193]
示例性的,如在该方式中,第二节点接收到batch1中的m1、m3、m4,则该传输协议中的acknowledge packet id则为b1、b2、b3、b4、b5和b7,acknowledge batch id为batch1,以及sequence id为batch1中的m1、m3、m4。
[0194]
应注意,本技术实施例的中当第一节点为中间节点时,第二编码数据包集合中还包括编码类型,具体的,可以在传输协议中增加type表征编码类型。如该第二种方式中第一节点为中间节点时,采用的是双层编码类型,第一种方式中第一节点为中间节点时采用的是再编码类型。本技术实施例中可以预先约定双层编码类型和再编码类型的标识,如双层编码类型的标识为1,再编码类型的标识为0。对应的,该第二种方式中,上述表二中的1表征中间节点采用的是双层编码类型。
[0195]
在该方式中,第一节点未接收到来自第二节点的响应信息时,第一节点可以根据源数据生成更多的子编码数据包集合,每个子编码数据包集合中包括的编码数据包个数不变,或者第一节点可以根据源数据生成与第一编码数据包集合中的子编码数据包集合的个数相同的子编码数据包集合,但每个子编码数据包集合中包括更多的编码数据包,两种方式均是为了在与第一编码数据包集合相同的丢包率下,使得第二节点能够接收到更多的编码数据包,增加第二节点接收丢包的数据包中的数据的概率。
[0196]
第三种方式:第二节点向第一节点反馈第二响应响应信息,第二响应信息用于指示第二节点接收到第一编码数据包集合中的y个子编码数据包集合。
[0197]
图11为本技术实施例提供的编码数据包的传输方法的流程示意图四。如图11所
示,本技术实施例提供的码数据包的传输方法可以包括:
[0198]
s1101,第一节点向第二节点发送第一编码数据包集合,第一编码数据包集合是第一节点采用第一编码参数对源数据编码生成的,第一编码参数包括第一生成矩阵。
[0199]
s1102,第二节点向第一节点发送第二响应信息,第二响应信息用于指示第二节点接收到第一编码数据包集合中的y个子编码数据包集合。
[0200]
s1103,第一节点确定第一编码数据包集合的传输过程中存在丢包,则采用第二编码参数对源数据进行编码,生成第二编码数据包集合,第二编码参数包括第二生成矩阵。
[0201]
s1104,第一节点向第二节点发送第二编码数据包集合。
[0202]
上述s1101中的实施方式可以参照上述实施例中s901中的相关描述。
[0203]
上述s1102中,与上述s802类似的,第二节点在接收到第一编码数据包集合中的子编码数据包集合后,可以确定是否向第一节点发送第二响应信息。第二响应信息中可以包括第二节点接收到的y个子编码数据包集合的标识,如batch id,y为大于等于1且小于x的整数。其中,第二节点可以为中间节点或目标节点。
[0204]
对应的,当第二节点为目标节点时,目标节点可以根据接收到的y个子编码数据包进行解码,若目标节点根据该y个子编码数据包能够成功解码,则向第一节点反馈成功接收信息,该成功接收信息用于指示第一编码数据包集合在传输的过程中未丢包。若目标节点根据该y个子编码数据包不能解码,则向第一节点发送第二响应信息。
[0205]
当第二节点为中间节点时,中间节点确定接收到的y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩,其中,矩阵的秩为rank(g),即第一生成矩阵的秩。中间节点确定y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩大于等于每个子编码数据包集合中包含的原始数据包的个数时,则向第一节点反馈成功接收信息,该成功接收信息用于指示第一编码数据包集合在传输的过程中未丢包。若中间节点确定y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合中包含的原始数据包的个数时,则向第一节点发送第二响应信息。
[0206]
示例性的,如中间节点接收到的y个子编码数据包集合分别为batch1、batch2和batch3,且确定batch1中编码数据包的矩阵的秩大于等于batch1包含的原始数据包的个数6,batch2中编码数据包的矩阵的秩大于等于batch2包含的原始数据包的个数4,以及batch3中编码数据包的矩阵的秩大于等于batch3包含的原始数据包的个数3,则向第一节点反馈成功接收信息。若确定batch1中编码数据包的矩阵的秩小于batch1包含的原始数据包的个数6,batch2中编码数据包的矩阵的秩小于batch2包含的原始数据包的个数4,以及batch3中编码数据包的矩阵的秩小于batch3包含的原始数据包的个数3,则向第一节点发送第二响应信息,该第二响应信息指示y个子编码数据包集合。应理解,第二响应信息指示的是编码数据包的矩阵的秩小于包含的原始数据包的个数的子编码数据包集合。
[0207]
上述s1103中,因为第一节点接收到的第二响应信息中指示第二节点接收到的子编码数据包集合的个数y小于第一编码数据包集合中包含的子编码数据包集合的个数x,则第一节点可以确定第一编码数据包集合的传输过程中存在丢包。
[0208]
第一节点采用第二编码参数对源数据进行编码,生成第二编码数据包集合。其中,第二编码参数包括第二生成矩阵。与上述s904类似的,第二节点生成第二编码数据包集合的过程也分为源节点和目标节点,但与上述s904不同的是,因为第一节点接收到了第二响
应信息,能够确定哪些子编码数据包集合发送丢包,以及哪些子编码数据包被第二节点接收到,因此可以针对丢包的子编码数据包集合进行编码。
[0209]
同理的,下面针对第二节点为源节点,以及第二节点为中间节点时采用第二编码参数对源数据进行编码,生成第二编码数据包集合的过程分开进行说明:
[0210]
1、当第一节点为源节点时,第二生成矩阵用于对源数据进行编码,以生成z个子编码数据包集合,所述z为大于x的整数。第一节点接收到第二响应信息后,可以根据x、y以及每个子编码数据包集合中包含的编码数据包m,得到第一编码数据包集合的丢包率,根据丢包率,确定第二生成矩阵,即确定z。应理解,该处的源数据指的是丢包的子编码数据包集合中每个子编码数据包集合对应的原始数据包,即x-y个子编码数据包集合中每个子编码数据包集合对应的原始数据包。应理解,第一节点采用第二生成矩阵生成第二编码数据包集合的方式与上述s904中的1中的方式相同。
[0211]
图12为本技术实施例提供的生成第二编码数据包集合的示意图三。如图12所示,如第二节点接收到batch1,则第二响应信息中包括batch1。对应的,第一节点编码的源数据batch2对应的原始数据包b2、b4、b6、b8,以及batch3对应的原始数据包b6、b7、b9。第一节点可以根据x、y以及每个子编码数据包集合中包含的编码数据包m,得到第一编码数据包集合的丢包率,根据丢包率,确定z。如确定第一编码数据包集合的丢包率为2/3,则可以确定需要生成36个编码数据包,才能抵抗该丢包率,使得第二节点接收到12个编码数据包,因此在一个子编码数据包集合中的编码数据包的个数为4时,需要编码9个batch,才能抵抗该丢包率,因此确定z为9。
[0212]
本技术实施例中第一节点采用第二生成矩阵对batch2对应的原始数据包b2、b4、b6、b8进行编码,生成batch2′
、batch3′
、batch4′
、batch5′
、batch6′
,第一节点采用第二生成矩阵对batch3对应的原始数据包b6、b7、b9进行编码,生成batch7′
、batch8′
、batch9′
、batch
10
′
。最终生成的z个子编码数据包集合包括batch2′
、batch3′
、batch4′
、batch5′
、batch6′
、batch7′
、batch8′
、batch9′
、batch
10
′
,对应的,第二编码数据包集合包括batch2′
、batch3′
、batch4′
、batch5′
、batch6′
、batch7′
、batch8′
、batch9′
、batch
10
′
。图9中分别1
′
、2
′
、3
′
、4
′
、5
′
、6
′
、7
′
、8
′
、9
′
、10
′
表示batch2′
、batch3′
、batch4′
、batch5′
、batch6′
、batch7′
、batch8′
、batch9′
、batch
10
′
。
[0213]
2、当第一节点为中间节点时,第二编码参数包括第二生成矩阵,第二生成矩阵用于对源数据进行编码,使得每个子编码数据包集合包含o个编码数据包,o为大于m的整数。鉴于本技术实施例中第一节点接收到第二响应信息,因此第一节点能够确定第二节点接收到x个子编码数据包中的y个编码数据包集合,因此第一及节点采用第二生成矩阵生成x-y个子编码数据包集合,且每个子编码数据包集合包含o个编码数据包,o为大于m的整数。
[0214]
且因为第一节点接收到第二响应信息,因此可以根据x、y以及每个子编码数据包集合中包含的编码数据包m,得到第一编码数据包集合的丢包率。第一节点可以根据丢包率,确定第二生成矩阵,即确定o。应理解,该处的源数据指的是丢包的子编码数据包集合中的编码数据包,即x-y个子编码数据包集合中的编码原始数据包。应理解,第一节点采用第二生成矩阵生成第二编码数据包集合的方式与上述s904中的2中的方式相同。
[0215]
图13为本技术实施例提供的生成第二编码数据包集合的示意图四。如图13所示,如第二节点接收到batch1,则第二响应信息中包括batch1。对应的,第一节点编码的源数据
为batch2中的编码数据包m5、m6、m7、m8,以及batch3中的编码数据包m9、m
10
、m
11
、m
12
。第一节点可以根据x、y以及每个子编码数据包集合中包含的编码数据包m,得到第一编码数据包集合的丢包率,根据丢包率,确定o。如确定第一编码数据包集合的丢包率为2/3,则可以确定需要生成24个编码数据包,才能抵抗该丢包率,使得第二节点接收到batch2和batch3中8个编码数据包,因此在子编码数据包集合的个数为2时,需要在每个子编码数据包集合中编码生成12个编码数据包,才能抵抗该丢包率,因此确定o为12。
[0216]
对应的,第一节点采用第二生成矩阵对m5、m6、m7、m8,以及m9、m
10
、m
11
、m
12
进行编码,分别生成2个新的batch,分别为batch2′
、batch3′
,其中,batch2′
中包括m5′
、m6′
、m7′
、m8′
、m9′
、m
10
′
、m
11
′
、m
12
′
、m
13
′
、m
14
′
、m
15
′
、m
16
′
12个编码数据包,以及batch3′
中包括m
17
′
、m
18
′
、m
19
′
、m
20
′
、m
21
′
、m
22
′
、m
23
′
、m
24
′
、m
25
′
、m
26
′
、m
27
′
、m
28
′
12个编码数据包。图13中以2、3分别表示batch2、batch3,2
′
、3
′
分别表示batch2′
、batch3′
。
[0217]
上述s1104中的实施方式可以参照上述实施例中s503中的相关描述。
[0218]
在第二编码数据包集合传输的过程中,各节点采用的传输协议如上述表二所示,如在该种方式中,第二节点接收到batch1,则该传输协议中的acknowledge packet id则为b1、b2、b3、b4、b5和b7,acknowledge batch id为batch1,以及sequence id为batch1中的m1、m2、m3、m4。
[0219]
应注意,在该第三种方式中,若第一节点在向第二节点发送第二编码数据包集合之后,采用s1102-s1103中相同的方式确定第二编码数据包集合的传输过程中存在丢包,则可以采用第三编码参数对源数据进行编码,生成第三编码数据包集合。其中,第三编码参数包括第三生成矩阵,当第一节点为源节点时,第三生成矩阵用于对源数据进行编码,生成mz个子编码数据包集合,m为大于1的整数。当第一节点为中间节点时,第三生成矩阵用于对源数据进行编码,在每个子编码数据包集合中生成mz个编码数据包。
[0220]
在该方式中,第一节点能够根据自第二节点的响应信息,确定第一编码数据包集合中哪些子编码数据包集合丢包,哪些子编码数据包集合被第二节点接收,因此可以针对丢包的子编码数据集合进行编码。且本技术实施例中还可以确定第一编码数据包集合的丢包率,进而第一节点可以根据丢包率确定需要生成的更多的子编码数据包集合的个数,或者每个子编码数据包集合中更多的编码数据包的个数,能够使得第一节点确定更为准确的第二编码参数,进而增加第二节点接收丢包的数据包中的数据的概率。
[0221]
图14为本技术实施例提供的编码数据包的传输装置的结构示意图一。如图14所示,该编码数据包的传输装置可以包括:收发模块1401和处理模块1402。
[0222]
收发模块1401,用于向第二节点发送第一编码数据包集合,第一编码数据包集合是第一节点采用第一编码参数对源数据编码生成的。
[0223]
处理模块1402,用于若确定第一编码数据包集合的传输过程中存在丢包,则采用第二编码参数对源数据进行编码,生成第二编码数据包集合,第二编码参数与第一编码参数不同。
[0224]
收发模块1401,还用于向第二节点发送第二编码数据包集合。
[0225]
在一种可能的实施方式中,第一编码数据包集合中包括m个编码数据包,m为大于等于1的整数。相应的,处理模块1402,具体用于若接收到来自第二节点的第一响应信息,则确定第一编码数据包集合的传输过程中存在丢包,第一响应信息用于指示第二节点接收到
的第一编码数据包集合中的n个编码数据包,n为大于等于0且小于m的整数。
[0226]
在一种可能的实现方式中,本技术实施例中采用第二编码参数生成的第二编码数据包集合中的编码数据包的发送顺序与第一编码数据包集合中的编码数据包的发送顺序不同,或者,第二编码数据包集合中包含的编码数据包的个数大于第一编码数据包集合中的编码数据包的个数。
[0227]
在一种可能的实施方式中,第一编码数据包集合中包括x个子编码数据包集合,x为大于等于1的整数,相应的,处理模块1402,具体用于若在向第二节点发送第一编码数据包集合后的预设时间段内,未接收到来自第二节点的第二响应信息,则确定第一编码数据包集合的传输过程中存在丢包,第二响应信息用于指示第二节点接收到第一编码数据包集合中的y个子编码数据包集合,y为大于等于0且小于x的整数。
[0228]
在一种可能的实施方式中,处理模块1402,具体用于若在预设时间段内接收到来自第二节点的第二响应信息,则确定第一编码数据包集合的传输过程中存在丢包。
[0229]
在一种可能的实施方式中,第一编码参数包括第一生成矩阵和第一传输矩阵,第二编码参数包括第一生成矩阵和第二传输矩阵,第一生成矩阵用于对源数据编码生成m个编码数据包,传输矩阵用于确定m个编码数据包的发送顺序,第二传输矩阵与第一传输矩阵不同。相应的,处理模块1402,具体用于采用第二传输矩阵,调整m个编码数据包的发送顺序,生成第二编码数据包集合。
[0230]
在一种可能的实施方式中,第一响应信息包括:n个编码数据包的序列标识,序列标识用于指示编码数据包的发送顺序。相应的,处理模块1402,具体用于根据n个编码数据包的序列标识,确定第二传输矩阵,第二传输矩阵使能调整m-n个编码数据包的发送顺序至m个编码数据包的发送顺序;采用第二传输矩阵,调整m-n个编码数据包的发送顺序至n个编码数据包的发送顺序。
[0231]
在一种可能的实施方式中,第一节点为源节点和目标节点之间的中间节点,第一编码数据包集合中每个子编码数据包集合中包括m个编码数据包,m为大于等于1的整数,第一编码参数包括第一生成矩阵,第二编码参数包括第二生成矩阵,第二生成矩阵用于对源数据进行编码,使得每个子编码数据包集合包含o个编码数据包。相应的,处理模块1402,具体用于采用第二生成矩阵对源数据进行编码,使得每个子编码数据包集合包含o个编码数据包,以获取第二编码数据包集合。
[0232]
相应的,源数据为:x个子编码数据包集合,或者x-y个子编码数据包集合。
[0233]
在一种可能的实施方式中,第一节点为源节点,源数据为第一编码数据包集合中丢包的子编码数据包集合对应的原始数据包,第一编码参数包括第一生成矩阵,第二编码参数包括第二生成矩阵,第二生成矩阵用于对丢包的每个子编码数据包集合对应的原始数据包编码,以生成z个子编码数据包集合,z为大于x的整数。相应的,处理模块1402,具体用于采用第二生成矩阵对丢包的每个子编码数据包集合对应的原始数据包编码,生成z个子编码数据包集合,以得到第二编码数据包集合。
[0234]
在一种可能的实施方式中,处理模块1402,还用于根据x、y,以及第一编码数据包集合中每个子编码数据包集合包含的编码数据包的个数,确定第一编码数据包集合的丢包率,且根据丢包率,确定第二生成矩阵。
[0235]
在一种可能的实施方式中,第一节点为源节点,第二节点为源节点和目标节点之
间的中间节点。
[0236]
在一种可能的实施方式中,当第一节点为源节点时,源数据为原始数据包,当第一节点为中间节点时,源数据为编码数据包。
[0237]
在一种可能的实施方式中,第二编码数据包集合中还包括编码类型。
[0238]
本技术实施例提供的编码数据包的传输装置,可用于执行上述方法实施例中第一节点执行的编码数据包的传输方法,例如:收发模块1401可以实现上述方法实施例中第一节点的收发操作。处理模块1402可以实现上述方法实施例中第一节点的处理操作。其实现原理和技术效果似,此处不再赘述。
[0239]
图15为本技术实施例提供的编码数据包的传输装置的结构示意图二。如图15所示,该编码数据包的传输装置1500可以包括:收发模块1501、处理模块1502。
[0240]
收发模块1501,用于接收来自第一节点的第一编码数据包集合,第一编码数据包集合是第一节点采用第一编码参数对源数据编码生成的。
[0241]
收发模块1501,还用于接收来自第一节点的第二编码数据包集合,第二编码数据包集合是第一节点确定第一编码数据包集合的传输过程中存在丢包时发送的,第二编码数据包集合是第一节点采用第二编码参数对源数据进行编码生成的,第一编码参数和第二编码参数不同。
[0242]
在一种可能的实现方式中,本技术实施例中采用第二编码参数生成的第二编码数据包集合中的编码数据包的发送顺序与第一编码数据包集合中的编码数据包的发送顺序不同,或者,第二编码数据包集合中包含的编码数据包的个数大于第一编码数据包集合中的编码数据包的个数。
[0243]
在一种可能的实施方式中,第二节点为目标节点,或目标节点和源节点之间的中间节点。
[0244]
在一种可能的实施方式中,第一编码数据包集合中包括m个编码数据包,m为大于等于1的整数。相应的,收发模块1501,还用于第二节点向第一节点发送第一响应信息,第一响应信息用于指示第二节点接收到的第一编码数据包集合中的n个编码数据包,n为大于等于0且小于m的整数。
[0245]
在一种可能的实施方式中,第一编码数据包集合中包括x个子编码数据包集合,x为大于等于1的整数。相应的,收发模块1501,还用于在预设时间段内,向第一节点发送第二响应信息,第二响应信息用于指示第二节点接收到第一编码数据包集合中的y个子编码数据包集合,y为大于等于0且小于x的整数。
[0246]
在一种可能的实施方式中,第一编码数据包集合中包括x个子编码数据包集合,x为大于等于1的整数。相应的,收发模块1501,还用于在预设时间段内,第二节点不向第一节点发送第二响应信息,第二响应信息用于指示第二节点接收到第一编码数据包集合中的y个子编码数据包集合,y为大于等于0且小于x的整数。
[0247]
在一种可能的实施方式中,处理模块1502,用于根据n个编码数据包确定是否能解码;或者,处理模块1502,用于确定n个编码数据包的矩阵的秩小于第一编码数据包集合对应的原始数据包的个数。
[0248]
相应的,收发模块1501,还用于若根据n个编码数据包不能解码,则向第一节点发送第一响应信息;或者,收发模块1501,还用于确定n个编码数据包的矩阵的秩小于第一编
码数据包集合对应的原始数据包的个数,则向第一节点发送第一响应信息。
[0249]
在一种可能的实施方式中,处理模块1502,用于根据y个子编码数据包集合确定是否能解码;或者,处理模块1502,用于确定y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合对应的原始数据包的个数。
[0250]
在该种可能的实施方式中,收发模块1501,还用于若根据y个子编码数据包集合不能解码,则向第一节点发送第二响应信息;或者,收发模块1501,还用于若确定y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合对应的原始数据包的个数,则向第一节点发送第二响应信息。
[0251]
在该种可能的实施方式中,收发模块1501,还用于若根据y个子编码数据包集合不能解码,则不向第一节点发送第二响应信息;或者收发模块1501,还用于若确定y个子编码数据包集合中每个子编码数据包集合的编码数据包的矩阵的秩小于每个子编码数据包集合对应的原始数据包的个数,则不向第一节点发送第二响应信息。
[0252]
在一种可能的实施方式中,第一响应信息中包括n个编码数据包的序列标识,序列标识用于指示编码数据包的发送顺序。
[0253]
在一种可能的实施方式中,当第一节点为源节点时,源数据为原始数据包,当第一节点为中间节点时,源数据为编码数据包。
[0254]
在一种可能的实施方式中,第二编码数据包集合中还包括编码类型。
[0255]
本技术实施例提供的编码数据包的传输装置,可用于执行上述方法实施例中第二节点执行的编码数据包的传输方法,例如:收发模块1501可以实现上述方法实施例中第二节点的收发操作。处理模块1502可以实现上述方法实施例中第二节点的处理操作。其实现原理和技术效果类似,此处不再赘述。
[0256]
图16为本技术实施例提供的电子设备的结构示意图。如图16所示,本实施例的电子设备1600可以包括:处理器1601、存储器1602和收发器1603。
[0257]
其中,存储器1602,用于存储计算机程序;处理器1601,用于执行存储器1602存储的计算机程序,以实现上述实施例中的第一节点或第二节点所执行的方法。收发器1603,用于在执行上述第一节点所执行的方法时与第二节点通信,或者在执行上述第二节点所执行的方法时与第一节点通信。
[0258]
可选地,存储器1602既可以是独立的,也可以跟处理器1601集成在一起。当所述存储器1602是独立于处理器1601之外的器件时,所述电子设备1600还可以包括:总线1604,用于连接所述存储器1602和处理器1601。
[0259]
在一种可能的实施方式中,处理模块可以集成在处理器1601中实现,收发模块可以集成在收发器1603中实现。
[0260]
在一种可能的实施方式中,电子设备1600可以包括:显示器1605,该显示器用于执行上述实施例中车载终端显示界面的动作。同理的,该显示器1605可以连接在总线1604上。
[0261]
本技术实施例提供的电子设备可以为上述实施例中的第一节点或第二节点。其实现原理和技术效果类似,此处不再赘述。
[0262]
本技术实施例提供一种存储介质,所述存储介质包括计算机程序,所述计算机程序用于实现上述方法实施例中第一节点或第二节点执行的编码数据包的传输方法。
[0263]
本技术实施例还提供一种芯片,包括存储器和处理器,所述存储器用于存储计算
机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得安装有所述芯片的设备执行上述方法实施例中第一节点或第二节点执行的编码数据包的传输方法。
[0264]
本技术实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述方法实施例中第一节点或第二节点执行的编码数据包的传输方法。
[0265]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0266]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0267]
另外,在本技术各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0268]
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本技术各个实施例所述方法的部分步骤。
[0269]
应理解,上述处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0270]
存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。
[0271]
总线可以是工业标准体系结构(industry standard architecture,isa)总线、外部设备互连(peripheral component,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本技术附图中的总线并不限定仅有一根总线或一种类型的总线。
[0272]
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0273]
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信
息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
[0274]
本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
[0275]
可以理解的是,在本技术实施例的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术实施例的实施例的范围。
[0276]
可以理解的是,在本技术实施例的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术实施例的实施例的范围。
[0277]
可以理解的是,在本技术实施例的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施例的实施过程构成任何限定。