CN110943800B - 数据包的发送方法、装置及系统、存储介质、电子装置 - Google Patents

数据包的发送方法、装置及系统、存储介质、电子装置 Download PDF

Info

Publication number
CN110943800B
CN110943800B CN201911078234.7A CN201911078234A CN110943800B CN 110943800 B CN110943800 B CN 110943800B CN 201911078234 A CN201911078234 A CN 201911078234A CN 110943800 B CN110943800 B CN 110943800B
Authority
CN
China
Prior art keywords
data packet
packet
fec
original data
redundant
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911078234.7A
Other languages
English (en)
Other versions
CN110943800A (zh
Inventor
吴创豪
张惠荣
黄桂生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Yealink Network Technology Co Ltd
Original Assignee
Xiamen Yealink Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Yealink Network Technology Co Ltd filed Critical Xiamen Yealink Network Technology Co Ltd
Priority to CN201911078234.7A priority Critical patent/CN110943800B/zh
Publication of CN110943800A publication Critical patent/CN110943800A/zh
Application granted granted Critical
Publication of CN110943800B publication Critical patent/CN110943800B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

本发明提供了一种数据包的发送方法、装置及系统、存储介质、电子装置,上述方法包括:通过中转节点接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码,采用上述技术方案,解决了相关技术中数据经过多次中转后,每次中转所发生的丢包积累达到一定数量后,FEC编码可能就会失效等问题。

Description

数据包的发送方法、装置及系统、存储介质、电子装置
技术领域
本发明涉及通信领域,具体而言,涉及一种数据包的发送方法、装置及系统、存储介质、电子装置。
背景技术
前向纠错(Forward Error Correction,简称为FEC)是一项成熟的增加数据通讯可信度的方法。FEC是利用数据进行传输冗余信息的方法,当传输中出现错误时,接收端有机会可以重建数据。
在实时流媒体传输领域,FEC技术主要用于丢包重建。对于实时流媒体传输,由于有高实时性的要求,所以一般采用基于用户数据协议(User Date Protocol,简称为UDP)的网络传输,典型的如实时传输协议(Real-time Transport Protocol,简称为RTP)/实时传输控制协议Realtime Transport Control Protocol,简称为RTCP)技术。UDP传输的缺点就是不可靠,存在丢包的风险,所以出现了丢包重传与前向纠错技术。由于丢包重传技术会带来较大的时延,对于实时性要求比较苛刻的应用场景,前向纠错技术更具有价值。
纠删技术是前向纠错技术的其中一种。纠删码(Erasure coding,简称为EC)是一种冗余编码,它将数据分割成片段,并预先按一定的算法生成一个或多个冗余数据片段,在通过网络传输后,即使出现了丢包,接收端仍然有机会可以重建原始数据。
典型的纠删技术有RS编码,又称Reed-Solomon Codes(译为里德-所罗门码)。它的基本特征是给定K个数据块和一个正整数M,生成M个冗余块。对于任意的K和M,从K个原始数据块和M个冗余数据块中任意取出K块就能解码出所有的原始数据。该技术早期主要应用于存储领域,如磁盘阵列,也用于分布式存储,后来被广泛的应用到实时流媒体传输,作为抗丢包的一种技术。
随着实时视频应用需求的不断增加,发展出了多种类似“实时传输网络”的技术平台。技术提供方会在全球部署多个数据中转节点,通过适当的调度与路由算法,为用户提供高效的数据分发服务。
如图1所示,早期的实时音视频传输架构除了P2P模式外就是由单一服务器中转的技术架构;该架构最明显的缺点就是无法平衡服务器到各个客户端的网络质量问题。
如图2所示,随着云计算的发展,现在的实时音视频传输架构也朝着分布式方向演进,从而出现了多种实时传输网络平台。它的特征就是让客户端就近接入,数据传输会根据网络的实时状况经过一次或多次中转。实时传输网络平台会通过实时监控各链路的网络状态,为“端”到“端”的数据传输选择较佳的链路,从而使时延与丢包率降到最低级别。
传统的FEC方案是以“端”到“端”为基础的,即由数据发布者对数据进行FEC编码,由数据订阅者对收到的数据进行FEC解码,至于该数据流如何传输,并没有太多的关注。如果数据仅仅是在两点之间传输,传统的“端”到“端”方案并没有暴露太多的问题,但是如果经过多次中转后,每次中转所发生的丢包积累达到一定数量后,FEC可能就会失效,无法解码了。
针对相关技术中,数据经过多次中转后,每次中转所发生的丢包积累达到一定数量后,FEC编码可能就会失效等问题,尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据包的发送方法、装置及系统、存储介质、电子装置,以至少解决相关技术中数据经过多次中转后,每次中转所发生的丢包积累达到一定数量后,FEC编码可能就会失效等问题。
根据本发明的一个实施例,提供了一种数据包的发送方法,包括:通过中转节点接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;在检测到所述原始数据包发生丢包的情况下,进行FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码。
在本发明的可选实施例中,通过中转节点接收来自所述中转节点的上一节点的发送的数据包之后,所述方法还包括:检测所述数据包中是否包含有FEC编码参数,其中,所述FEC编码参数至少包括以下之一:所述原始数据包的数量K,所述冗余包的数量M,所述数据包在FEC分组内的索引号;根据所述FEC编码参数确定所述原始数据包或所述冗余包是否发生丢包。
在本发明的可选实施例中,检测所述数据包中是否包含有FEC编码参数,包括:检测所述数据包中的指定字段是否为1,如果为1,则所述数据包中携带有所述FEC编码参数,如果为0,则所述数据包中未携带有所述FEC编码参数。
在本发明的可选实施例中,所述数据包中是否包含有FEC编码参数,包括以下至少之一:所述原始数据包的最后一个原始数据包中是否包含有所述FEC编码参数;每一个所述冗余包中是否包含有所述FEC编码参数。
在本发明的可选实施例中,在检测到所述原始数据包或所述冗余包发生丢包的情况下,通过所述中转节点对所述丢包进行恢复,包括:根据所述数据包中检测到的FEC编码参数对所述丢包进行恢复。
根据本发明的另一个实施例,还提供了一种数据包的发送系统,包括:数据包的发送端,一个或多个中转节点,数据包的接收端,其中,所述发送端,用于向所述一个或多个中转节点发送数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;所述一个或多个中转节点,用于接收来自所述中转节点的上一节点的发送的数据包,并检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;以及将恢复后的数据包发送至所述数据包的接收端;所述接收端,用于能够成功对接收到的数据包进行FEC解码。
在本发明的可选实施例中,所述发送端,还用于确定所述数据包的FEC编码参数,并将所述FEC编码参数携带在所述数据包中发送至所述一个或多个中转节点,其中,所述FEC编码参数至少包括以下之一:所述原始数据包的数量K,所述冗余包的数量M,所述数据包在FEC分组内的索引号;所述一个或多个中转节点,用于根据所述FEC编码参数确定所述原始数据包或所述冗余包是否发生丢包。
在本发明的可选实施例中,所述一个或多个中转节点,还用于检测所述数据包中的指定字段是否为1,如果为1,则所述数据包中携带有所述FEC编码参数,如果为0,则所述数据包中未携带有所述FEC编码参数。
在本发明的可选实施例中,所述一个或多个中转节点,还用于检测所述原始数据包的最后一个原始数据包中是否包含有所述FEC编码参数;和/或检测每一个所述冗余包中是否包含有所述FEC编码参数。
在本发明的可选实施例中,所述一个或多个中转节点,还用于根据所述数据包中检测到的FEC编码参数对所述丢包进行恢复。
在本发明的可选实施例中,所述发送端,还用于获取编码缓冲区中最大的原始数据包的大小Max,将所述编码缓存区中所有原始数据包的大小均扩展至Max+P,并对扩展后的所有原始数据包进行FEC编码,得到大小均为Max+P的冗余包,其中,P为大于1的整数。
根据本发明的另一个实施例,还提供了一种数据包的发送装置,应用于中转节点,包括:接收模块,用于接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;恢复模块,用于在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;发送模块,用于通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,由于中转节点在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码,通过上述技术方案,即使数据包经过多次中转,由于每次在中转节点只要确定出有存在丢包,就对丢包进行恢复,解决了相关技术中,数据经过多次中转后,每次中转所发生的丢包积累达到一定数据后,FEC编码可能就会失效等问题,进而数据包经过多次中转后,在接收端仍然能够正确的进行FEC解码。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是相关技术中早期的实时音视传输架构示意图;
图2是相关技术中分布式的实时传输网络示意图;
图3是相关技术中两点直传的FEC编码示意图;
图4是相关技术中多点中转丢包累积后使得FEC失效的示意图;
图5是根据本发明实施例的数据包的发送方法的流程图;
图6是根据本发明实施例的数据包的发送系统的结构框图;
图7为根据本发明可选实施例的逐级恢复FEC编码方案示意图;
图8为根据本发明可选实施例的两点直传FEC编码参数示意图;
图9是根据本发明实施例的数据包的发送装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了更好的理解以下实施例或可选实施例的技术方案,以下对各个名词进行简单说明。
FEC:全称为Forward Error Correction,译为前向纠错。前向纠错技术是指数据在传输之前预先按一定的算法进行编码,加入适量的冗余数据,在接收端按照相应算法对接收到的数据进行解码,从而找出在传输过程中产生的错误码并将其纠正的技术。
EC:全称为(Erasure Coding),译为纠删码。它是一种数据保护方法,它将数据分割成片段,并预先按一定的算法生成一个或多个冗余数据片段,同时将原始数据与冗余数据进行存储或网络传输。当某个片段丢失或故障时,有机会可以重建数据。纠删技术是前向纠错技术的其中一个分支。
RS:全称为(Reed-Solomon Code),译为里德-所罗门码,是一种前向纠错的信道编码。对由校正过采样数据所产生的多项式有效。当接收器正确的收到足够的点后,它就可以恢复原来的多项式,即使接收到的多项式上有很多点被噪声干扰失真。
范德蒙矩阵:范德蒙矩阵是法国数学家范德蒙(Vandermonde,AlexandreTheophile,1735~1796)提出的一种各列为几何级数的矩阵。范德蒙矩阵应用之一就是在纠错编码中,常用的纠错码Reed-solomon编码中冗余块的编码采用的即为范德蒙矩阵。它的主要特征是输入K个数据包,生成M个冗余包,总包数为N=K+M。在经过网络传输后,即使出现丢包,只要收到任意K个包(无论是原始数据包还是冗余包),都可以重建出所有的数据。
RTP/RTCP:实时传输协议RTP是针对Internet上多媒体数据流的一个传输协议,由IETF(Internet工程任务组)作为RFC1889发布。实时传输控制协议RTCP负责管理传输质量在当前应用进程之间交换控制信息。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。
如图3所示,如果编码方采用了10个包冗余3个包的编码方案,则接收端只要收到13(10个原始包+3个冗余包)个包中的任意10个包,都能够解码出所有原始数据。
如图4所示,如果编码方同样采用了10个包冗余3个包的编码方案,在经过3次中转后,虽然每次中转过程中都只是丢了1个包,但到了终点接收端时却累计达到了4个包,超出了当前冗余度的FEC解码能力,导致数据无法还原了。
可以看出,数据经过多次中转后,每次中转所发生的丢包积累达到一定数据后,FEC编码可能就会失效,为了解决该技术问题,本发明以下实施例及可选实施例提供了以下技术方案。
在本实施例中提供了一种数据包的发送方法,图5是根据本发明实施例的数据包的发送方法的流程图,如图5所示,该流程包括如下步骤:
步骤S102,通过中转节点接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;
步骤S104,在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;
步骤S106,通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码。
通过上述技术方案,由于中转节点在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码,通过上述技术方案,即使数据包经过多次中转,由于每次在中转节点只要确定出有存在丢包,就对丢包进行恢复,解决了相关技术中,数据经过多次中转后,每次中转所发生的丢包积累达到一定数据后,FEC编码可能就会失效等问题,进而数据包经过多次中转后,在接收端仍然能够正确的进行FEC解码。
需要说明的是,在中转节点为一个时,中转节点的上一个节点为发送端,在中转节点为多个时,中转节点的上一个节点为发送端或者为其他中转节点,中转节点不论为一个或多个,中转节点都会对接收到的数据包进行检测是否存在丢包,并对丢包进行恢复的技术方案。
在本发明的可选实施例中,通过中转节点接收来自所述中转节点的上一节点的发送的数据包之后,所述方法还包括:检测所述数据包中是否包含有FEC编码参数,其中,所述FEC编码参数至少包括以下之一:所述原始数据包的数量K,所述冗余包的数量M,所述数据包在FEC分组内的索引号;根据所述FEC编码参数确定所述原始数据包或所述冗余包是否发生丢包,其中,检测到的FEC编码参数用于对所述丢包进行恢复。
进一步地,检测所述数据包中是否包含有FEC编码参数的技术方案可以有多种实现方式,在一个可选实施例中,检测所述数据包中的指定字段是否为1,如果为1,则所述数据包中携带有所述FEC编码参数,如果为0,则所述数据包中未携带有所述FEC编码参数,可选地,指定字段可以为has_fec_param,不过本发明实施例对此不作限定。
在本发明的可选实施例中,检测所述数据包中是否包含有FEC编码参数,包括以下至少之一:检测所述原始数据包的最后一个原始数据包中是否包含有所述FEC编码参数;检测每一个所述冗余包中是否包含有所述FEC编码参数,即可以在原始数据包的最后一个包或者所有的冗余包都携带有FEC编码,采用上述技术方案,即使在冗余包都丢失,或者丢了部分冗余包的情况下,均能够根据FEC编码对数据包进行恢复。
需要说明的是,接收端能够成功对数据包进行FEC编码,可以理解为接收端接收到的数据包的数量足够多到用于FEC编码。
在本实施例中提供了一种数据包的发送系统,图6是根据本发明实施例的数据包的发送系统的结构框图,如图6所示,包括:
数据包的发送端60,一个或多个中转节点62,数据包的接收端64,其中,
所述发送端60,用于向所述一个或多个中转节点发送数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;
所述一个或多个中转节点62,用于接收来自所述中转节点的上一节点的发送的数据包,并在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包,以及将恢复后的数据包发送至所述数据包的接收端;
所述接收端64,用于能够成功对接收到的数据包进行前向纠错FEC解码。
通过上述技术方案,由于中转节点在在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端对接收到的恢复后的数据包进行前向纠错FEC解码,通过上述技术方案,即使数据包经过多次中转,由于每次在中转节点只要确定出有存在丢包,就对丢包进行恢复,解决了相关技术中,数据经过多次中转后,每次中转所发生的丢包积累达到一定数据后,FEC编码可能就会失效等问题,进而数据包经过多次中转后,在接收端仍然能够正确的进行FEC解码。
可选地,所述发送端,还用于确定所述数据包的FEC编码参数,并将所述FEC编码参数携带在所述数据包中发送至所述一个或多个中转节点,其中,所述FEC编码参数至少包括以下之一:所述原始数据包的数量K,所述冗余包的数量M,所述数据包在FEC分组内的索引号;所述一个或多个中转节点,用于根据所述FEC编码参数确定所述原始数据包或所述冗余包是否发生丢包。
在本发明的可选实施例中,所述一个或多个中转节点,还用于检测所述数据包中的指定字段是否为1,如果为1,则所述数据包中携带有所述FEC编码参数,如果为0,则所述数据包中未携带有所述FEC编码参数。
在本发明的可选实施例中,所述一个或多个中转节点,还用于检测所述原始数据包的最后一个原始数据包中是否包含有所述FEC编码参数;和/或检测每一个所述冗余包中是否包含有所述FEC编码参数。
在本发明的可选实施例中,所述一个或多个中转节点,还用于根据所述数据包中检测到的FEC编码参数对所述丢包进行恢复。
在本发明的可选实施例中,所述发送端,还用于获取编码缓冲区中最大的原始数据包的大小Max,将所述编码缓存区中所有原始数据包的大小均扩展至Max+P,并对扩展后的所有原始数据包进行FEC编码,得到大小均为Max+P的冗余包,P为大于1的整数,P最优选择为2。
为了更好的理解上述数据包的发送流程,以下结合可选实施例的技术方案进行说明。
图7为根据本发明可选实施例的逐级恢复FEC编码方案示意图,如图7所示,在所有的中转节点中,均提供FEC校验与修复能力,从而使每一跳中转的丢包不发生累积效应。
需要说明的是,本发明可选实施例中的FEC编码算法采用基于范德蒙(Vandermonde)矩阵运算的RS码,具体的范德蒙矩阵算法实现不在本发明阐述范围内。此类编码算法的关键参数K为原始数据块的数量,M为待生成的冗余块数量,则N=K+M为当前分组的总包数。另外,在解码时,还需要知道当前分组内的数据包在当前分组内的索引号I,其中原始数据包的索引号从0开始到K-1结束,冗余包的索引号从K开始到M-1结束。本发明后续实施例中限定的FEC编码参数K、N、I的含义均已此处相同。
数据的发送端将冗余包与原始数据包作为同一个序列发送,包序号递增,冗余包跟随在原始数据包之后。
此外,本发明可选实施例中,未明确限定具体的网络封包报文协议,比如可以在RTP中使用扩展包头的方式,但要求至少包含以下字段:
seq:占用16个bit,用于指示当前包的序号,递增。如果采用RTP协议,可以复用RTP协议中的的sequence number字段,具体可参阅RFC3550。
is_fec:占用1个bit,用于指示当前包是原始数据包还是冗余包。
has_fec_param:占用1个bit,用于指示当前包的包头中是否包括FEC编码参数(上述实施例中提到的K/N/I三个参数)。在同一FEC分组中,最后一个原始包及所有的冗余包都携带有FEC编码参数。
当has_fec_param参数的值为1时,包头中还包括了以下三个FEC编码参数:
K:占用8个bit,指示当前FEC分组内的参与编码的原始数据包数量。
N:占用8个bit,指示当前FEC分组的总包数量。则当前FEC分组的冗余包数为N-K。
I:占用8个bit,指示当前包在当前FEC分组内的索引号,递增。其中原始数据包的索引号从0开始到K-1结束,冗余包的索引号从K开始到N-1结束。
is_rebuild:可选字段,占用1个bit,用于指示该包是发布者(数据发送的起点)生成的包,还是在中转节点或订阅者(最终接收节点)由于丢包而重建出来的包。该参数可用于丢包率或还原率统计。
is_first:可选字段,占用1个bit,用于指示该包是否当前数据流的第1个包。接收端一当接收到这个包,则需要重置所有与解码相关的参数,包括解码缓冲区等,防止出现串流情况。
group:可选字段,占用4个bit,递增,用于辅助在解码缓冲区中快速找到同一分组的包。但不能作为判断同一分组的唯一依据,因为它只占用4个bit,只能表达[0~15]共16个数,很容易就递归重复了。
发送端的FEC编码策略:
步骤1、为当前待发送的数据包分配一个递增的包序号、当前FEC分组号、分组内索引号,将数据包存入编码缓冲区,编码缓冲区按包序号升序排序,然后马上检查是否达到FEC编码条件。进行FEC编码需要满足下面的条件之一:
1)缓冲区中的包数量已达到预设值Max,Max值由开发人员根据需要自行定义;
2)距离上次编码的时间已超过预设值CacheTime,且此时缓冲区中的包数量已满足编码需要的最低数量Min,CacheTime与Min的值由开发人员根据需要自定义;
步骤2、如果未达到编码条件,则将当前原始数据包进行网络封包后发送出去。由于此时FEC编码参数K/N/I仍然未知,所以该包的报文头中的has_fec_param值为0,且没有携带FEC编码参数K/N/I。
步骤3、如果达到编码条件,则对缓冲区中的包进行FEC编码。其中K值即为缓冲区中的包数量。N值按照预设的公式进行计算(根据丢包率与FEC还原成功率动态计算冗余度,丢包率与FEC还原成功率的统计及汇报方式的具体细节不在本发明的阐述范围)。由于此时FEC编码参数K/N/I已确定,所以最后一个放入编码缓冲区的原始数据包以及FEC编码生成的冗余包在进行网络封包时,都携带有FEC编码参数K/N/I,且has_fec_param字段的值置为1。
步骤4、由于FEC编码算法要求同一分组的所有的原始数据包的大小是一样的,所以在编码前还需要对原始数据包进行如下所述的额外处理:
1)扫描编码缓冲区中的所有包,计算出最大的包的大小,设定值为Max(p)。
2)将所有包都扩展到Max(p)+2,多出来的内存空间用0填充。
3)在扩展后的最后两个字节保存当前包的原始大小。
4)对扩展后大小一样的包进行FEC编码。
由此可见,生成的冗余包的大小都是Max(p)+2。(未进行网络封包之前的大小),FEC编码时的数据包对齐方案,该方案避免了在所有报文头中增加表示荷载有效长度的字段,从而减少报文头的额外开销。
另外,原始包扩展出来的部份仅用于FEC编码,在网络传输时并不会发送出去,不会引入额外的码流。
步骤5、每次编码完成后,清空编码缓冲区,当前FEC分组序号group加1,FEC组内索引号I置为0,准备开始下一轮FEC编码。
中转结点的二次编解码策略
步骤1、中转节点在收到上一级节点发过来的数据包后,马上转发给下一节点,同时存入解码缓冲区。解码缓冲区中的包以包序号SEQ做好升序排序。
步骤2、以当前包(定义为P)作为参考,启动解码检测流程。
步骤3、如果当前包P携带有FEC编码参数K/N/I,则直接跳到步骤4,否则要先找到同一分组且具有FEC编码参数的包,方法如下:
1)从当前包P的插入点之后开始遍历,当碰到分组号(group)不同时结束。
2)找到第1个携带有FEC编码参数的包(定义为R,R.has_fec_param=1),从中提取K/N/I三个数据。
需要再次验证该包R是否与当前包P是否同一分组,检验依据是:
i)计算R包所属FEC分组的起始序号(first_seq=R.seq-R.I)与结束序号(last_seq=first_seq+R.N-1);
ii)判断包P的序号是否处于上述的序号区间,即(P.seq>=first_seq)且(P.seq<=last_seq),如果是则表示包P与包R属于同一FEC分组,这时包R中携带的FEC编码参数可作为参考数据。
iii)如果无法找到可用的携带有FEC编码参数的包,则无法继续,退出当前流程,等待接收下一个包。
步骤4、当拥有了携带有FEC编码参数的包R后,再从解码缓存区中找出与参考包R是同一FEC分组的包,方法如下所示:
1)计算R包所属FEC分组的起始序号(first_seq=R.seq-R.I)与结束序号(last_seq=first_seq+R.N-1);
2)从解码缓存区中找出所有序号在上述序号区间的包p,即(p.seq>=first_seq)且(p.seq<=last_seq);
步骤5、定义在步骤4中找到与包R是同一FEC分组的包的数量为Count,其中原始数据包的数量为Count(raw),冗余包的数量为Count(fec),Count=Count(raw)+Count(fec)。
步骤6、如果Count<K,则达不到FEC解码的条件,流程提前结束。
步骤7、如果Count(raw)=K,即原始数据包没有发生丢包,则无需解码,流程提前结束。
步骤8、如果Count(raw)<K且Count>=K,则表示原始数据包发生了丢包,但可以解码,则执行FEC解码。将解码后重建出来的原始数据包进行网络封包后转发给下一跳(需置is_rebuild字段为1),同时也放入解码缓存区。更新Count与Count(raw)的值。
步骤9、如果Count(raw)=K且Count<N,则表示原始数据包没有发生丢包,但冗余包丢失了,则对原始数据包用相同的FEC编码参数、同样的算法执行FEC编码,重新生成冗余包。将重建出来的冗余包进行网络封包后转发给下一跳(需置is_rebuild字段为1),同时也放入解码缓存区。
步骤10、对于步骤9,如果出现Count(raw)=K且Count(fec)=0的特殊情况,由于最后一个原始数据包也携带有FEC编码参数K/N/I,所以仍然可以对原始数据包用相同的FEC编码参数、同样的算法执行FEC编码,此外,由于在最后一个原始数据包及所有冗余包中附带FEC编码参数,从而使得在FEC编码参数未知之前可以先发送原始数据包,避免引入时延。同一FEC分组的最后一个原始数据包也附加FEC编码参数使得在出现“冗余包全部丢失但原始数据包未丢”的情况下,仍然可以进行二次FEC编码,重建冗余包。
步骤11、对于步骤9,为了减少不必要的二次编码,可以采用延迟编码的策略,即等到当前分组的最后一个包或下一分组的包已到达时才执行,这样可以降低CPU的运算压力。
可选地,该延迟编码策略,如果不考虑CPU的运算压力,可以在原始数据包齐全的情况下,马上执行二次FEC编码,这样可以加快冗余包的传输,即以运算能力换取时间。
最终结点的解码策略
最终结点的解码策略与中转结点类似,只是无需进行二次编码。
步骤1、最终节点在收到上一级节点发过来的数据包后,如果是原始数据包,则提交给上层应用,同时存入解码缓冲区;如果是冗余包,则只放入解码缓冲区。解码缓冲区中的包以包序号SEQ做好升序排序。
步骤2、以当前包(定义为P)作为参考,启动解码检测流程。
步骤3、如果当前包P携带有FEC编码参数K/N/I,则直接跳到步骤4,否则要先找到同一分组且具有FEC编码参数的包,方法如下:
1)从当前包P的插入点之后开始遍历,当碰到分组号(group)不同时结束。
2)找到第1个携带有FEC编码参数的包(定义为R,R.has_fec_param=1),从中提取K/N/I三个数据。
3)需要再次验证该包R是否与当前包P是否同一分组,检验依据是:
i)计算R包所属FEC分组的起始序号(first_seq=R.seq-R.I)与结束序号(last_seq=first_seq+R.N-1);
ii)判断包P的序号是否处于上述的序号区间,即(P.seq>=first_seq)且(P.seq<=last_seq),如果是则表示包P与包R需于同一FEC分组,这时包R中携带的FEC编码参数可作为参考数据。
如果无法找到可用的携带有FEC编码参数的包,则无法继续,退出当前流程,等待接收下一个包。
步骤4、当拥有了携带有FEC编码参数的包R后,再从解码缓存区中找出与参考包R是同一FEC分组的包,方法如下所示:
a)计算R包所属FEC分组的起始序号(first_seq=R.seq-R.I)与结束序号(last_seq=first_seq+R.N-1);
b)从解码缓存区中找出所有序号在上述序号区间的包p,即(p.seq>=first_seq)且(p.seq<=last_seq);
步骤5、定义在步骤4中找到与包R是同一FEC分组的包的数量为Count,其中原始数据包的数量为Count(raw),冗余包的数量为Count(fec),Count=Count(raw)+Count(fec)。
步骤6、如果Count<K,则达不到FEC解码的条件,流程提前结束。
步骤7、如果Count(raw)=K,即原始数据包没有发生丢包,则无需解码,流程提前结束。
步骤8、如果Count(raw)<K且Count>=K,则表示原始数据包发生了丢包,但可以解码,则执行FEC解码。将解码后重建出来的原始数据包也提交给上层应用。
需要说明的是,还可以采用传统的两点之间的FEC纠错方式,将多点续传拆解为两两之间的传输,FEC编码参数仅在相邻的两个节点之间有效,这样的优点有:
1)即使FEC编码算法不是采用范德蒙矩阵运算的RS码,没有“相同的编码输入总能得到相同的结果”这个特性,也可以实现逐级纠错功能;
2)当“上级节点”已出现无法恢复的丢包时,当前节点可以对剩下的数据包重新编码冗余包,对剩下的数据包进行保护。
3)可以对来自不同“上级节点”,但发向同一“下级节点”的数据包进行汇合后再重新编码,提高FEC的纠错能力,如图8所示。
本发明上述实施例以及可选实施例的技术方案,利用了的RS码(采用范德蒙矩阵运算)的特性(相同的编码输入总能得到相同的结果),在每个中转节点都执行FEC校验及修复,从而能够很好的解决FEC在经过多次中转后,丢包不断累积而最终失效的问题。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种数据包的发送装置,应用于中转节点,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图9是根据本发明实施例的数据包的发送装置的结构框图,如图9所示,该装置包括:
接收模块90,用于接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;
恢复模块92,用于在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;
发送模块94,用于通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码。
通过上述技术方案,由于中转节点在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端对接收到的恢复后的数据包进行前向纠错FEC解码,通过上述技术方案,即使数据包经过多次中转,由于每次在中转节点只要确定出有存在丢包,就对丢包进行恢复,解决了相关技术中,数据经过多次中转后,每次中转所发生的丢包积累达到一定数据后,FEC编码可能就会失效等问题,进而数据包经过多次中转后,在接收端仍然能够正确的进行FEC解码。
需要说明的是,在中转节点为一个时,中转节点的上一个节点为发送端,在中转节点为多个时,中转节点的上一个节点为发送端或者为其他中转节点,中转节点不论为一个或多个,中转节点都会对接收到的数据包进行检测是否存在丢包,并对丢包进行恢复的技术方案。
在本发明的可选实施例中,恢复模块92,还用于检测所述数据包中是否包含有FEC编码参数,其中,所述FEC编码参数至少包括以下之一:所述原始数据包的数量K,所述冗余包的数量M,所述数据包在FEC分组内的索引号;根据所述FEC编码参数确定所述原始数据包或所述冗余包是否发生丢包,其中,检测到的FEC编码参数用于对所述丢包进行恢复。
进一步地,检测所述数据包中是否包含有FEC编码参数的技术方案可以有多种实现方式,在一个可选实施例中,恢复模块92,还用于检测所述数据包中的指定字段是否为1,如果为1,则所述数据包中携带有所述FEC编码参数,如果为0,则所述数据包中未携带有所述FEC编码参数,可选地,指定字段可以为has_fec_param,不过本发明实施例对此不作限定。
在本发明的可选实施例中,恢复模块92,还用于执行以下至少之一:检测所述原始数据包的最后一个原始数据包中是否包含有所述FEC编码参数;检测每一个所述冗余包中是否包含有所述FEC编码参数,即可以在原始数据包的最后一个包或者所有的冗余包都携带有FEC编码,采用上述技术方案,即使在冗余包都丢失,或者丢了部分冗余包的情况下,均能够根据FEC编码对数据包进行恢复。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,通过中转节点接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;
S2,在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;
S3,通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,通过中转节点接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;
S2,在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;
S3,通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据包的发送方法,其特征在于,包括:
通过中转节点接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;
在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;
通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码;
其中,通过中转节点接收来自所述中转节点的上一节点的发送的数据包之后,所述方法还包括:
检测所述数据包中是否包含有FEC编码参数,其中,所述FEC编码参数至少包括以下之一:所述原始数据包的数量K,所述冗余包的数量M;
根据所述FEC编码参数确定所述原始数据包或所述冗余包是否发生丢包;
其中,通过中转节点接收来自所述中转节点的上一节点的发送的数据包之前,所述方法还包括:
发送端将所述原始数据分割为多个片段;
发送端通过预设算法对所述多个片段进行处理,以得到一个或多个冗余包;
其中,在检测到所述原始数据包或所述冗余包发生丢包的情况下,通过所述中转节点对所述丢包进行恢复,包括:
根据所述数据包中检测到的FEC编码参数对所述丢包进行恢复。
2.根据权利要求1所述的方法,其特征在于,检测所述数据包中是否包含有FEC编码参数,包括:
检测所述数据包中的指定字段是否为1,如果为1,则所述数据包中携带有所述FEC编码参数,如果为0,则所述数据包中未携带有所述FEC编码参数。
3.根据权利要求1所述的方法,其特征在于,所述数据包中是否包含有FEC编码参数,包括以下至少之一:
所述原始数据包的最后一个原始数据包中包含有所述FEC编码参数;
每一个所述冗余包中包含有所述FEC编码参数。
4.一种数据包的发送系统,其特征在于,包括:
数据包的发送端,一个或多个中转节点,数据包的接收端,其中,
所述发送端,用于向所述一个或多个中转节点发送数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;
所述一个或多个中转节点,用于接收来自所述中转节点的上一节点的发送的数据包,并在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;以及将恢复后的数据包发送至所述数据包的接收端;
所述接收端,用于能够成功对接收到的数据包进行FEC解码;
其中,所述发送端,还用于确定所述数据包的FEC编码参数,并将所述FEC编码参数携带在所述数据包中发送至所述一个或多个中转节点,其中,所述FEC编码参数至少包括以下之一:所述原始数据包的数量K,所述冗余包的数量M;
所述一个或多个中转节点,用于根据所述FEC编码参数确定所述原始数据包或所述冗余包是否发生丢包;
其中,所述发送端,还用于将所述原始数据分割为多个片段;通过预设算法对所述多个片段进行处理,以得到一个或多个冗余包;
其中,所述一个或多个中转节点,还用于根据所述数据包中检测到的FEC编码参数对所述丢包进行恢复。
5.根据权利要求4所述的系统,其特征在于,所述一个或多个中转节点,还用于检测所述数据包中的指定字段是否为1,如果为1,则所述数据包中携带有所述FEC编码参数,如果为0,则所述数据包中未携带有所述FEC编码参数。
6.根据权利要求4所述的系统,其特征在于,所述原始数据包的最后一个原始数据包中包含有所述FEC编码参数;每一个所述冗余包中包含有所述FEC编码参数。
7.根据权利要求4所述的系统,其特征在于,所述发送端,还用于获取编码缓冲区中最大的原始数据包的大小Max,将所述编码缓存区中所有原始数据包的大小均扩展至Max+P,并对扩展后的所有原始数据包进行FEC编码,得到大小均为Max+P的冗余包,其中,P为大于1的整数。
8.一种数据包的发送装置,应用于中转节点,其特征在于,包括:
接收模块,用于接收来自所述中转节点的上一节点的发送的数据包,其中,所述数据包包括:原始数据包、基于所述原始数据包生成的冗余包;
恢复模块,用于在检测到在检测到所述原始数据包发生丢包的情况下,进行前向纠错FEC解码,恢复丢失的原始数据包;在检测到所述冗余包发生丢包的情况下,再次进行FEC编码,重建所述冗余包;
发送模块,用于转发所述中转节点的上一节点的发送的数据包,以及通过所述中转节点将恢复后的数据包发送至所述数据包的接收端,以使所述接收端能够成功对接收到的数据包进行FEC解码;
其中,所述接收模块,还用于通过中转节点接收来自所述中转节点的上一节点的发送的数据包之后,检测所述数据包中是否包含有FEC编码参数,其中,所述FEC编码参数至少包括以下之一:所述原始数据包的数量K,所述冗余包的数量M;根据所述FEC编码参数确定所述原始数据包或所述冗余包是否发生丢包;
其中,所述接收模块,还用于发送端将所述原始数据分割为多个片段;发送端通过预设算法对所述多个片段进行处理,以得到一个或多个冗余包;
其中,所述恢复模块,还用于根据所述数据包中检测到的FEC编码参数对所述丢包进行恢复。
9.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至3任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至3任一项中所述的方法。
CN201911078234.7A 2019-11-06 2019-11-06 数据包的发送方法、装置及系统、存储介质、电子装置 Active CN110943800B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911078234.7A CN110943800B (zh) 2019-11-06 2019-11-06 数据包的发送方法、装置及系统、存储介质、电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911078234.7A CN110943800B (zh) 2019-11-06 2019-11-06 数据包的发送方法、装置及系统、存储介质、电子装置

Publications (2)

Publication Number Publication Date
CN110943800A CN110943800A (zh) 2020-03-31
CN110943800B true CN110943800B (zh) 2023-04-28

Family

ID=69907431

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911078234.7A Active CN110943800B (zh) 2019-11-06 2019-11-06 数据包的发送方法、装置及系统、存储介质、电子装置

Country Status (1)

Country Link
CN (1) CN110943800B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111464458B (zh) * 2020-04-03 2024-01-02 广州市百果园信息技术有限公司 抗丢包方法、装置、设备及存储介质
CN112804028B (zh) * 2020-10-22 2023-04-07 北京佳讯飞鸿电气股份有限公司 一种数据包的传输方法、设备及存储介质
CN112333470B (zh) * 2020-10-27 2022-05-27 杭州叙简科技股份有限公司 一种基于视频帧的fec纠错系统
CN112422235B (zh) * 2020-11-19 2022-11-11 广州科天视畅信息科技有限公司 一种基于冗余算法的网络丢包恢复方法
CN112671509B (zh) * 2020-12-18 2023-04-28 杭州叙简科技股份有限公司 一种基于fec冗余的数据包抗丢包方法和装置
WO2022266974A1 (zh) * 2021-06-24 2022-12-29 深圳市大疆创新科技有限公司 图像处理方法、装置、业务服务器及存储介质
CN113515584B (zh) * 2021-07-13 2023-11-24 禾多阡陌科技(北京)有限公司 局部地图数据分发方法、装置、电子设备和介质
CN116192767A (zh) * 2021-11-29 2023-05-30 华为技术有限公司 一种丢包管理方法及相关装置
CN114520738B (zh) * 2022-02-09 2023-12-05 北京电解智科技有限公司 数据处理方法、装置及存储介质
CN115037416A (zh) * 2022-06-07 2022-09-09 广州方硅信息技术有限公司 数据前向纠错处理方法、装置、电子设备和存储介质
CN116192341B (zh) * 2023-02-27 2024-04-26 东方空间技术(山东)有限公司 运载火箭遥测系统pcm/fm码流传输方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107276722A (zh) * 2017-06-21 2017-10-20 北京奇艺世纪科技有限公司 一种基于udp的数据传输方法和系统
CN108011686A (zh) * 2016-10-31 2018-05-08 腾讯科技(深圳)有限公司 信息编码帧丢失恢复方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008139882A1 (ja) * 2007-05-08 2008-11-20 Nec Corporation 通信システムおよび通信方法、並びに、プログラム
US20100198535A1 (en) * 2009-02-03 2010-08-05 Leviton Manufacturing Co., Inc. Power distribution unit monitoring network and components
CN101877620B (zh) * 2009-04-30 2013-08-14 华为技术有限公司 前向纠错方法、装置和系统
CN101646089B (zh) * 2009-09-03 2012-09-05 中兴通讯股份有限公司 建立中继频道中丢包补偿的方法、装置和系统
GB2480308A (en) * 2010-05-13 2011-11-16 Skype Ltd Data recovery for encrypted packet streams at relay nodes using correction data
CN108075859A (zh) * 2016-11-17 2018-05-25 中国移动通信有限公司研究院 数据传输方法及装置
CN109347604B (zh) * 2018-10-26 2021-01-19 香港中文大学(深圳) 一种基于分批稀疏码的多跳网络通信方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108011686A (zh) * 2016-10-31 2018-05-08 腾讯科技(深圳)有限公司 信息编码帧丢失恢复方法和装置
CN107276722A (zh) * 2017-06-21 2017-10-20 北京奇艺世纪科技有限公司 一种基于udp的数据传输方法和系统

Also Published As

Publication number Publication date
CN110943800A (zh) 2020-03-31

Similar Documents

Publication Publication Date Title
CN110943800B (zh) 数据包的发送方法、装置及系统、存储介质、电子装置
US10361810B2 (en) Data packet transmission/reception apparatus and method
JP3798387B2 (ja) Fec符号化方式に基づいた可変長パケット送信方法及び受信方法
EP2103026B1 (en) A method to support forward error correction for real-time audio and video data over internet protocol networks
US6609223B1 (en) Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter
JP4785836B2 (ja) デジタルデータパケットを伝送する方法および該方法を実装する装置
US6145109A (en) Forward error correction system for packet based real time media
CN101272495B (zh) 用于传输基于分组的图像帧的方法和装置
KR101286912B1 (ko) 3차원 저장장치를 이용한 가변길이 패킷의 fec 인코딩 및 fec 디코딩 방법
EP1241795A2 (en) Method and system for transmitting and receiving information using chain reaction codes
KR101118194B1 (ko) 손실된 패킷 재건을 위한 방법 및 상기 방법을 수행하기 위한 디바이스
US7215683B2 (en) Method and apparatus for protecting against packet losses in packet-oriented data transmission
JPWO2008139882A1 (ja) 通信システムおよび通信方法、並びに、プログラム
JP6305398B2 (ja) 送信機に関連する情報を用いたエラー回復のための方法及び装置
EP1758254A1 (en) Improved erasure correction scheme based on XOR operations for packet transmission
KR20100112151A (ko) 네트워크 카드 및 정보 처리 장치
WO2022105753A1 (zh) 网络数据编码传输方法及装置
JP2010034898A (ja) データ送信装置及びデータ送信方法
RU2711354C1 (ru) Способ передачи данных по асинхронным сетям связи с возможностью восстановления данных при их потере из-за наличия ошибок соединения в сетях связи
US6981194B1 (en) Method and apparatus for encoding error correction data
RU2706879C1 (ru) Способ передачи данных по пакетным сетям связи с возможностью восстановления данных при их потере из-за наличия ошибок соединения в сетях связи
JP2010109942A (ja) 情報処理装置及びその方法、プログラム、記録媒体
JP3638939B2 (ja) ヘッダ復元装置およびヘッダ復元方法
JP2010130472A (ja) 一方向伝送路に用いる送信端末、受信端末及び伝送システム
JP2004007799A (ja) データ伝送方法およびデータ処理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant