1.本文涉及数据传输技术,尤指一种数据发送、传输方法、发送装置、传输系统和存储介质。
背景技术:2.目前广泛使用的数据重传协议(如infiniband网络标准使用的数据重传协议、roce网络协议使用的数据重传协议)大多基于简单的go-back-n实现,即当网络产生丢包时,接收端在没有接收到预期数据包序列号(packet sequence number,psn)指示的数据包时,将接收到的该预期psn指示的数据包之后的数据包丢弃,并发送nack数据包至发送端;发送端接收到nack数据包后,从所述预期psn指示的数据包开始,重新发送后续所有的数据包;接收端从所述预期psn指示的数据包开始重新接收数据包。
3.按照上述go-back-n重传机制,丢失数据包会导致大量的数据包重传,从而造成端到端的性能下降。为了避免丢失数据包后大量数据包的重传,接收端可以通过数据恢复手段恢复丢失的数据包,以此提高网络传输性能。
4.为了能够恢复丢失的数据包,本领域提出了一种编码方式,即纠删码 (erasure coding,ec)编码。发送端通过对k个原始数据包进行ec编码形成m个冗余数据包,发送端不仅发送k个原始数据包还发送m个冗余数据包,k个原始数据包和m个冗余数据包组成一组编码数据。当在网络传输过程中存在丢包时,接收端对接收到的存在原始数据包丢包的每组编码数据进行解码,利用每组编码数据中接收到的原始数据包以及接收到的冗余数据包恢复出丢失的原始数据包。采用ec编码时,冗余数据包的比例越高,丢包恢复能力越强,但冗余数据包比例越高不仅会占用更多的网络传输带宽,也降低了传输码率。
技术实现要素:5.本技术提供了一种数据发送、传输方法、发送装置、传输系统和存储介质,既可以支持数据包的恢复,又保证端到端的传输性能。
6.本技术实施例提供的数据发送方法,包括:获取表征当前数据传输质量的指标;根据所述指标,调整纠删码ec的编码参数k和m中的一种或多种,使得根据调整后的编码参数获得的编码数据的编码率为当前数据传输质量对应的最大值;其中,k为每组编码数据中包含的原始数据包的数量,m为每组编码数据中包含的冗余数据包的数量;根据调整后的编码参数k和m,将原始数据包进行ec编码后发送;其中,发送的k个原始数据包和m个冗余数据包组成一组编码数据。
7.作为一示例性实施例,获取表征当前数据传输质量的指标,包括:获取预设数量的分组编码数据的最大丢包数n,将所述最大丢包数n作为所述指标。
8.作为一示例性实施例,调整纠删码ec的编码参数k和m中的一种或多种,包括:
保持编码参数k不变,调整编码参数m。
9.作为一示例性实施例,调整编码参数m的方式包括:调整后的m为预设的可选冗余数据包数量中大于n的最小值。
10.作为一示例性实施例,调整纠删码ec的编码参数k和m中的一种或多种,包括:保持编码参数m不变,调整编码参数k。
11.作为一示例性实施例,调整编码参数k的方式包括:调整后的编码参数k记为,根据/(+m)获得的编码率为预设的可选编码率中小于根据调整前的编码参数和所述n获得的编码率/(+n)的最大值。
12.作为一示例性实施例,调整纠删码ec的编码参数k和m中的一种或多种,包括:调整编码参数m和编码参数k。
13.作为一示例性实施例,调整编码参数m和编码参数k的方式包括:调整后的编码参数k和编码参数m分别记为和,根据/(+)获得的编码率为预设的可选编码率中小于根据调整前的编码参数和所述n获得的编码率/(+n)的最大值。
14.本技术实施例还提供了一种数据传输方法,所述方法包括:发送端按照前述任一实施例所述的数据发送方法进行数据发送;接收端接收到至少一组编码数据后,对接收到的每组编码数据分别判断是否满足数据恢复条件;对于满足数据恢复条件的每组编码数据,根据该组编码数据的编码参数k和m对该组编码数据进行恢复,得到k个原始数据包。
15.作为一示例性实施例,所述对接收到的每组编码数据分别判断是否满足数据恢复条件,包括:判断接收到的每组编码数据中丢失的数据包的数量是否小于m且大于0,或每组编码数据中丢失的数据包的数量是否等于m,如果是,则该组编码数据满足数据恢复条件。
16.本技术实施例还提供了一种数据发送装置,所述装置包括存储器和处理器,所述存储器存储有程序,所述程序在被所述处理器读取执行时,实现如前任一实施例所述的数据发送方法。
17.本技术实施例还提供了一种数据传输系统,所述系统包括:如前实施例所述的数据发送装置;数据接收装置,设置为在接收到至少一组编码数据后,对接收到的每组编码数据分别判断是否满足数据恢复条件;对于满足数据恢复条件的每组编码数据,根据从该组编码数据中获得的所述编码参数k和m对该组编码数据进行恢复,得到k个原始数据包。
18.作为一示例性实施例,数据接收装置,设置为对接收到的每组编码数据分别判断是否满足数据恢复条件,包括:判断接收到的每组编码数据中丢失的数据包的数量是否小于m且大于0,或每组编码数据中丢失的数据包的数量是否等于m,如果是,则该组编码数据满足数据恢复条件。
19.本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储
有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如前任一实施例所述的数据发送方法。
20.与相关技术相比,本技术实施例中数据发送端根据当前网络的数据传输质量,调整编码参数,使得根据调整后的编码参数获得的编码数据的编码率为当前数据传输质量对应的最大值,即编码率随着数据传输质量变化而动态变化,确保了端到端的传输性能。
21.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
22.附图用来提供对本技术技术方案的理解,并且构成说明书的一部分,与本技术的实施例一起用于解释本技术的技术方案,并不构成对本技术技术方案的限制。
23.图1为本技术实施例提供的数据发送方法流程图;图2为本技术实施例提供的数据传输方法流程图;图3为本技术实施例提供的数据发送装置模块图;图4为本技术实施例提供的数据传输系统模块图。
具体实施方式
24.本技术描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本技术所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
25.本技术包括并设想了与本领域普通技术人员已知的特征和元件的组合。本技术已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本技术中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
26.此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本技术实施例的精神和范围内。
27.本技术实施例提供了一种数据发送方法,如图1所示,所述方法包括:步骤s101获取表征当前数据传输质量的指标;
所述指标可以为丢包率、信噪比等;所述指标的初始值可设定;步骤s102根据所述指标,调整纠删码ec的编码参数k和m中的一种或多种,使得根据调整后的编码参数获得的编码数据的编码率为当前数据传输质量对应的最大值;其中,k为每组编码数据中包含的原始数据包的数量,m为每组编码数据中包含的冗余数据包的数量;所述k和m的初始值可设定;除设定初始值外,还可根据当前网络可支持的编码率设定所述k和m的可选值;所述编码数据的编码率等于k/(k+m);所述编码数据的可恢复最大丢包率等于m/(k+m);在每组编码数据包含的总数据包的个数固定的情况下,编码率最大,可恢复最大丢包率最小;因此步骤s102的等价操作为:根据所述指标,调整纠删码ec的编码参数k和m中的一种或多种,使得根据调整后的编码参数获得的编码数据的可恢复最大丢包率为当前数据传输质量对应的最小值;步骤s103根据调整后的编码参数k和m,将原始数据包进行ec编码后发送;其中,发送的k个原始数据包和m个冗余数据包组成一组编码数据。
28.本技术实施例中,数据发送端根据当前网络的数据传输质量,调整编码参数,使得根据调整后的编码参数获得的编码数据的编码率为当前数据传输质量对应的最大值,即编码率随着数据传输质量变化而动态变化,确保了端到端的传输性能。
29.在一示例性实施例中,所述表征当前数据传输质量的指标可以为预设数量的分组编码数据的最大丢包数n;n的初始值可设定,如由本领域技术人员根据经验设定n的初始值,或根据已获取的本网络在之前预设时间段内的数据传输质量指标设定n的初始值。当发送端将原始数据包进行ec编码后向接收端发送后,所述发送端可以从接收端获取所述n。
30.在一示例性实施例中,调整纠删码ec的编码参数k和m中的一种或多种,包括:保持编码参数k不变,调整编码参数m。其中,调整编码参数m的方式可以包括:调整后的m为预设的可选冗余数据包数量中大于n的最小值。
31.在另一示例性实施例中,调整纠删码ec的编码参数k和m中的一种或多种,包括:保持编码参数m不变,调整编码参数k。其中,调整编码参数k的方式可以包括:调整后的编码参数k记为,根据/(+m) 获得的编码率为预设的可选编码率中小于根据调整前的编码参数和所述n获得的编码率/(+n)的最大值。
32.在另一示例性实施例中,调整纠删码ec的编码参数k和m中的一种或多种,包括:调整编码参数m和编码参数k。其中,调整编码参数m和编码参数k的方式包括:调整后的编码参数k和编码参数m分别记为和,根据/(+) 获得的编码率为预设的可选编码率中小于根据调整前的编码参数和所述n获得的编码率/(+n)的最大值。
33.本技术上述实施例记载的技术方案,通过自适应调整ec的编码率,实现了在数据传输质量变差、丢包数升高时,降低编码率;在数据传输质量变好、丢包数降低时,提升编码率的目的,确保了端到端的传输性能。
34.本技术实施例还提供了一种数据传输方法,如图2所示,所述方法包括:步骤s201 发送端按照前述任一实施例所述的数据发送方法进行数据发送;步骤s202接收端接收到至少一组编码数据后,对接收到的每组编码数据分别判断
是否满足数据恢复条件;如果满足数据恢复条件,执行步骤s203;步骤s203 接收端对于满足数据恢复条件的每组编码数据,根据该组编码数据的编码参数k和m对该组编码数据进行恢复,得到k个原始数据包。
35.所述编码数据的编码参数k和m可以由发送端写在发送数据包的包头(如,写在每个原始数据包和每个冗余数据包的包头可扩展字段)中发送给接收端;本技术实施例中,数据发送端根据当前网络的数据传输质量,调整编码参数,使得根据调整后的编码参数获得的编码数据的编码率为当前数据传输质量对应的最大值,即编码率随着数据传输质量变化而动态变化,确保了端到端的传输性能;数据接收端对接收的每组分组数据进行是否需要数据恢复的判断,仅对原始数据包丢包后可进行数据恢复的分组数据按照编码参数进行数据恢复,避免了对不需要恢复的数据还进行数据恢复的操作,进一步提高了数据接收效率。
36.在一示例性实施例中,所述对每组编码数据分别判断是否满足数据恢复条件,包括:判断每组编码数据中丢失的数据包的数量是否小于m且大于0,或每组编码数据中丢失的数据包的数量等于m,如果是,则该组编码数据满足数据恢复条件;在实际实施时,通常要求所述丢失的数据包中包含原始数据包,当丢失的数据包全部为冗余数据包时无需进行数据恢复。当每组编码数据中丢失的数据包的数量大于m时,丢失的原始数据包无法进行恢复,可直接透传该组编码数据中的原始数据包。当每组编码数据中丢失的数据包的数量等于0,即数据包无丢失,也可直接透传该组编码数据中的原始数据包,无需进行数据恢复操作。
37.下面以三个具体的应用示例对本技术上述实施例记载的技术方案进行说明。
38.应用示例一初始化时,分别在发、收端的网卡写入若干个对应不同码率的ec编、解码矩阵,所述编、解码矩阵均记录了参数k和m;所述编码矩阵用于发送端根据参数k和m产生冗余数据包;所述解码矩阵用于接收端根据参数k和m从接收的分组编码数据中恢复出原始数据包;步骤1,发送端网卡使用默认编码率(k1/(k1+m1))对应的编码矩阵,将连续k1个原始数据包编码出m1个冗余数据包;所述默认编码率为初始化时写入发送端网卡的若干个不同码率中的一种码率;步骤2,发送端网卡在k1个原始数据包及m1个冗余数据包中增加字段指示分组编码数据为k1+m1的编码方式,将k1个原始数据包及m1个冗余数据包发送至网络;步骤3,接收端将接收到的k1个原始数据包及m1个冗余数据包作为一组编码数据,统计接收到的每组编码数据中数据包的丢包个数,对于数据包的丢包个数小于m1且大于0,或数据包的丢包个数等于m1的每组编码数据,根据每组编码数据中数据包包头字段指示的编码参数k1和m1对该组编码数据进行ec解码(ec解码过程也即数据恢复的过程),恢复丢失的数据包;对于数据包的丢失个数等于0的每组编码数据,或数据包的丢失个数大于m1的每组编码数据,透传该组编码数据的原始数据包;步骤4,接收端统计预设数量的分组编码数据的丢包数,得到最大丢包数,记为n;步骤5,接收端向发送端返回通知数据包,所述通知数据包用于将所述n通知发送端;步骤6,发送端保持现有的参数k的值k1不变,调整m值,调整后的m记为
,
为预设的可选冗余数据包数量中大于n的最小值,将后续的原始数据包进行k1+ 编码;步骤7,接收端对接收到的每组编码数据分别判断是否满足数据恢复条件,对于满足数据恢复条件的每组编码数据,根据该组编码数据的编码参数k1和对该组编码数据进行恢复,得到k1个原始数据包,返回步骤4。
39.应用示例二初始化时,分别在发、收端的网卡写入若干个对应不同码率的ec编、解码矩阵,所述编、解码矩阵均记录了参数k和m;所述编码矩阵用于发送端根据参数k和m产生冗余数据包;所述解码矩阵用于接收端根据参数k和m从接收的分组编码数据中恢复出原始数据包;步骤1,发送端网卡使用默认编码率(k1/( k1+m1))对应的编码矩阵,将连续k1个原始数据包编码出m1个冗余数据包;所述默认编码率为初始化时写入发送端网卡的若干个不同码率中的一种码率;步骤2,发送端网卡在k1个原始数据包及m1个冗余数据包中增加字段指示分组编码数据为k1+m1的编码方式,将k1个原始数据包及m1个冗余数据包发送至网络;步骤3,接收端将接收到的k1个原始数据包及m1个冗余数据包作为一组编码数据,统计接收到的每组编码数据中数据包的丢包个数,对于数据包的丢包个数小于m1且大于0,或数据包的丢包个数等于m1的每组编码数据,根据每组编码数据中数据包包头字段指示的编码参数k1和m1对该组编码数据进行ec解码,恢复丢失的数据包;对于数据包的丢失个数等于0的每组编码数据,或数据包的丢失个数大于m1的每组编码数据,透传该组编码数据的原始数据包;步骤4,接收端统计预设数量的分组编码数据的丢包数,得到最大丢包数,记为n;步骤5,接收端向发送端返回通知数据包,所述通知数据包用于将所述n通知发送端;步骤6,发送端保持现有的参数m的值m1不变,调整k值,调整后的k记为,根据/(+m1) 获得的编码率为预设的可选编码率中小于根据调整前的编码参数和所述n获得的编码率/(+n)的最大值,将后续的数据包进行+m1编码;步骤7,接收端对接收到的每组编码数据分别判断是否满足数据恢复条件,对于满足数据恢复条件的每组编码数据,根据该组编码数据的编码参数和m1对该组编码数据进行恢复,得到个原始数据包,返回步骤4。
40.应用示例三初始化时,分别在发、收端的网卡写入若干个对应不同码率的ec编、解码矩阵,所述编、解码矩阵均记录了参数k和m;所述编码矩阵用于发送端根据参数k和m产生冗余数据包;所述解码矩阵用于接收端根据参数k和m从接收的分组编码数据中恢复出原始数据包;步骤1,发送端网卡使用默认编码率(k1/( k1+m1))对应的编码矩阵,将连续k1个原始数据包编码出m1个冗余数据包;所述默认编码率为初始化时写入发送端网卡的若干个不同码率中的一种码率;
步骤2,发送端网卡在k1个原始数据包及m1个冗余数据包中增加字段指示分组编码数据为k1+m1的编码方式,将k1个原始数据包及m1个冗余数据包发送至网络;步骤3,接收端将接收到的k1个原始数据包及m1个冗余数据包作为一组编码数据,统计接收到的每组编码数据中数据包的丢包个数,对于数据包的丢包个数小于m1且大于0,或数据包的丢包个数等于m1的每组编码数据,根据每组编码数据中数据包包头字段指示的编码参数k1和m1对该组编码数据进行ec解码,恢复丢失的数据包;对于数据包的丢失个数等于0的每组编码数据,或数据包的丢失个数大于m1的每组编码数据,透传该组编码数据的原始数据包;步骤4,接收端统计预设数量的分组编码数据的丢包数,得到最大丢包数,记为n;步骤5,接收端向发送端返回通知数据包,所述通知数据包用于将所述n通知发送端;步骤6,发送端调整编码参数m和编码参数k,调整后的编码参数k和编码参数m分别记为和,根据/(+) 获得的编码率为预设的可选编码率中小于根据调整前的编码参数和所述n获得的编码率/(+n)的最大值,将后续的数据包进行+ 编码;步骤7,接收端对接收到的每组编码数据分别判断是否满足数据恢复条件,对于满足数据恢复条件的每组编码数据,根据该组编码数据的编码参数和对该组编码数据进行恢复,得到个原始数据包,返回步骤4。
41.本技术实施例还提供了一种数据发送装置,如图3所述,所述装置包括存储器301和处理器302,所述存储器301存储有程序,所述程序在被所述处理器302读取执行时,实现如前任一实施例所述的数据发送方法。
42.本技术实施例所述的数据发送装置能够实现前述任一实施例所述的数据发送方法,因此也具备前述任一实施例所述的数据发送方法所能实现的技术效果。
43.本技术实施例还提供了一种数据传输系统,如图4所示,所述系统包括:如前实施例所述的数据发送装置401;数据接收装置402,设置为接收到至少一组编码数据后,对接收到的每组编码数据分别判断是否满足数据恢复条件;对于满足数据恢复条件的每组编码数据,根据从该组编码数据中获得的所述编码参数k和m对该组编码数据进行恢复,得到k个原始数据包。
44.本技术实施例所述的数据传输系统包含前述实施例所述的数据发送装置,因此也具备前述实施例所述的数据发送装置所能实现的技术效果。
45.在一示例性实施例中,数据接收装置402,设置为对接收到的每组编码数据分别判断是否满足数据恢复条件,包括:判断接收到的每组编码数据中丢失的数据包的数量是否小于m且大于0,或每组编码数据中丢失的数据包的数量是否等于m,如果是,则该组编码数据满足数据恢复条件。
46.本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如前任一实施例所述的数据发送方法。
47.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装
置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于 ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。