CN112422235B - 一种基于冗余算法的网络丢包恢复方法 - Google Patents
一种基于冗余算法的网络丢包恢复方法 Download PDFInfo
- Publication number
- CN112422235B CN112422235B CN202011306078.8A CN202011306078A CN112422235B CN 112422235 B CN112422235 B CN 112422235B CN 202011306078 A CN202011306078 A CN 202011306078A CN 112422235 B CN112422235 B CN 112422235B
- Authority
- CN
- China
- Prior art keywords
- redundancy
- packet
- linked list
- network
- coding
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0071—Use of interleaving
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明属于音视频通信行业和IP通信行业,具体来说,是一种基于冗余算法的网络丢包恢复方法。一种基于冗余算法的网络丢包恢复方法,包括编码和解码两个步骤,编码过程:A1、分组:在内存池中申请一个单元,填入并加入逻辑链表;A2、计算冗余:当每一个分组的逻辑链表链表长度为GrpLen时,计算并填入冗余;A3、交织:当缓存的分组数达到iMixGrpNum时,重新构造输出网络发送链表;A4、输出:依次输出两个上一分组交织后的包;A5、将链表指针清空。该发明的有益效果在于:编码时保存每个应用层包和冗余包的结构,编码过程只需传递地址,不需内存拷贝类型,提高效率;只需要简单的关注冗余头的数据结构本身,灵活性强。
Description
技术领域
本发明属于音视频和IP通信技术领域,具体涉及一种基于冗余算法的网络丢包恢复方法。
背景技术
随着5G时代的到来,基于5G网络的音视频应用越来越普遍,在5G趋势下,音视频应用会只增不减,尤其是视频应用更是会大幅度提高,尤其是2020年疫情爆发之后,视频的传输应用增长迅猛,比如视频会议、小视频、云游戏等等。而在网络传输过程中,经常会发生数据丢包的情况,尤其是在弱网的环境下,对于数据的传输质量更是没有办法得到保证。现有技术中,也有一些算法来对丢失的数据包进行恢复,这些算法大都是通过FEC和NACK相结合的方式进行实现,这些算法大都存着在:关联逻辑复杂,耦合性强的问题,在编码时需要需要传递整个应用层包和冗余包的结构,包括地址及内存类型数据,效率较低,且本身已经在弱网的条件下,又要占用大量的网络资源来进行算法的计算,对视频的正常处理造成影响,造成丢包越来越多。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于冗余算法的网络丢包恢复方法,该种恢复算法只需要关注冗余头数据结构本身;可以根据不同的应用进行不同的参数初始化,灵活性强。同时,该算法并不关心应用层的具体数据,只要数据长度符合要求,都可以运用此算法进行数据包恢复。
为解决现有技术问题,本发明公开了一种基于冗余算法的网络丢包恢复方法,该方法采用FEC前向纠错算法,并加入相关的业务逻辑处理,实现网络接收端的相关数据恢复,包括冗余编码和冗余解码两个步骤;
所述冗余编码的具体过程为:
步骤A1、分组:每次接收到传入的应用层包时,先在内存池中申请一个单元,将应用层包内容填入,并加入逻辑链表;
步骤A2、计算冗余:当每一个分组的逻辑链表链表长度为编码参数设定的数值时,申请单元,计算并填入冗余;
步骤A3、交织:当缓存的分组数达到编码参数设定的数值时,交织,重新构造输出网络发送链表;
步骤A4、输出:在每次编码函数调用时,依次输出两个上一分组交织后的包,即网络发送链表中的包;
步骤A5、网络发送链表中包输出完时,释放所有链表中所有内存单元,将链表指针清空;
所述冗余解码的具体过程为:
步骤B1、包序重排,根据编码内存单元的数据项参数中的实际输出的序列号进行包序重排,包序重排队列深度要适中;
步骤B2、重组,将重排后的包按组号和包号重组;
步骤B3、数据恢复,重组后对每个分组进行恢复;
步骤B4、输出。
上述的一种基于冗余算法的网络丢包恢复方法,所述冗余编码和冗余解码的具体过程中的冗余头数据结构包括以下字段:
Rdn_H:冗余头协议标识;
C:定长标识;
R:是否冗余包标识;
M:Mark标识;
GrpLen:分组中应用层包的个数;
MixNum:交织时的组数;
PktLen:包长;
GrpNo:分组的组号;
PktNo:分组中的包号;
Reserve:预留字段;
Reserve:预留字段;
NetSeqNum:实际输出的序列号;
SessionID:会话编号。
上述的一种基于冗余算法的网络丢包恢复方法,所述冗余编码和冗余解码的具体过程中每个内存编码单元长度=应用层包最大长度+64。
上述的一种基于冗余算法的网络丢包恢复方法,其特征在于:所述冗余编码和冗余解码的具体过程中所有内存单元以两种方式组织:逻辑链表和网络发送链表,逻辑链表按照交织前顺序,即应用层包序;网络发送链表按照交织后顺序,即冗余编码后的输出顺序。
本发明的有益效果在于:
1、编码时保存每个应用层包和冗余包的结构,编码过程只需传递地址,不需内存拷贝类型,提高效率;
2、只需要简单的关注冗余头的数据结构本身,并可以根据不同的应用进行不同的参数初始化,灵活性强。同时,该算法并不关心应用层的具体数据,只要数据长度符合要求,都可以运用此算法进行数据包恢复。
附图说明
图1是本发明的算法原理图;
图2是本发明的内存池结构图;
图3是本发明的内存单元链表组织形式;
图4是本发明的内存单元示意图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的结构。
一种基于冗余算法的网络丢包恢复方法,该方法采用FEC前向纠错算法,并加入相关的业务逻辑处理,实现网络接收端的相关数据恢复,包括冗余编码和冗余解码两个步骤;
所述编码算法中包括冗余头,所述冗余头的数据结构主要包括以下一些字段,方便在冗余算法中,保存必要的相关数据信息,其数据头RdnHeader如下表所示:
其中冗余头说明为:
(1)Rdn_H:冗余头协议标识,固定5bit,如:11011或11101等;
(2)C:定长标识,1bit;1表示定长,0表示变长;
(3)R:是否冗余包标识,1bit;1表示冗余包,0表示正常数据包;
(4)M:Mark标识,1bit;1表示一组分组和交织中的最后一个包;
(5)GrpLen:分组中应用层包的个数,4bit;范围:1-15;
(6)MixNum:交织时的组数,4bit;范围:1-15;
(7)PktLen:包长,16bit;对于数据包,为应用层的包长,对于冗余包,为冗余包的包长;
(8)GrpNo:分组的组号,8bit;0-255循环;
(9)PktNo:分组中的包号,4bit;从0开始,冗余包也排号;
(10)Reserve:预留字段,4bit;
(11)Reserve:预留字段,4bit;
(12)NetSeqNum:实际输出的序列号,16bit;
(13)SessionID:会话编号,用于区分不同会话,由编码侧产生,16bit;
所述内部数据结构包括编码内存单元,所述编码内存单元的数据项说明如下:
数据类型 | 数据项定义 | 数据项描述 |
Void * | pNetPre | 网络发送链表前指针 |
Void * | pNetNext | 网络发送链表后指针 |
Void * | pLogicPre | 逻辑链表前指针 |
Void * | pLogicNext | 逻辑链表后指针 |
RDN_HEAD | rdnHead | RDN头 |
Unsigned Char[] | szPkt | 有效数据。冗余包为包长段+冗余数据,应用层包为实际应用层数据。长度变长 |
所述多个内存编码单元组成内存池,每个单元长度=应用层包最大长度+64,由表构造,每个编码句柄单独维护一个内存池;
所述内存编码单元以两种方式交织:逻辑链表和网络发送链表。逻辑链表按照交织前顺序,即应用层包序;网络发送链表按照交织后顺序,即冗余编码后的输出顺序;
所述编码上下文设计的方法及相关参数如下表所示:
序号 | 数据类型 | 数据项定义 | 数据项描述 |
1 | Int | SESSID | 会话ID,由编码器分配 |
2 | Int | iGrpLen | 分组包数(1 ~ 15) |
3 | Int | iMixGrpNum | 交织组数(1 ~ 15) |
4 | Bool | blIsConst | 是否定长 |
5 | Int | iPktLen | 最大包长 |
6 | Int | iCurGrpNo | 当前组号(1 ~ 255),该组号填在RDN头中 |
7 | Int | iCurPktNo | 当前在本组中的包号 |
8 | Int | iCurNetSeqNum | 当前输出的序列号 |
9 | Handle | Handle | 本会话的内存池,单元长度为(iPktLen + 64),单元个数为3 * iGrpLen * iMixGrpNum |
10 | void * | p逻辑链表Head[16] | 逻辑链表头指针,每个分组一个逻辑链表 |
11 | void * | p逻辑链表Tail[16] | 逻辑链表尾指针,每个分组一个逻辑链表 |
12 | void * | pNetListHead | 发送链表头指针 |
13 | void * | pNetListTail | 发送链表尾指针 |
14 | Void * | pLastOutCell | 上一次输出的单元 |
所述冗余编码的具体过程为:
步骤A1、分组:每次接收到传入的应用层包时,先在内存池中申请一个单元,将应用层包内容填入,并加入逻辑链表;
步骤A2、计算冗余:当每一个分组的逻辑链表链表长度为编码参数设定的数值时,申请单元,计算并填入冗余;
步骤A3、交织:当缓存的分组数达到编码参数设定的数值时,交织,重新构造输出网络发送链表;
步骤A4、输出:在每次编码函数调用时,依次输出两个上一分组交织后的包,即网络发送链表中的包;
步骤A5、网络发送链表中包输出完时,释放所有链表中所有内存单元,将链表指针清空;
所述冗余解码的具体过程为:
步骤B1、包序重排,根据编码内存单元的数据项参数中的实际输出的序列号进行包序重排,包序重排队列深度要适中;
步骤B2、重组,将重排后的包按组号和包号重组;
步骤B3、数据恢复,重组后对每个分组进行恢复;
步骤B4、输出。
本发明中涉及到的算法原理为:使用FEC前向纠错算法,同时加入相关的业务逻辑处理,从而实现网络接收端的相关数据恢复。算法原理图如说明书附图1所示:
其实现原理为:
1、对于定长会话,直接将分组中的应用层包异或得到冗余包,恢复时将冗余包与其余包异或得到丢失的包;即:A ^ B = C,则A = B ^ C;
2、对于变长会话,首先找到本分组的最大包长。小于最大包长的包后面补零再异或得到冗余包。恢复时将冗余包与其余包补零后异或得到丢失包,再去掉多余部分即可。
在编码时保存每个应用层包和冗余包的结构,编码过程只需传递地址, 不需内存拷贝类型;
内存池(BufCell_POOL)的结构如说明书附图2所示:
内存单元的链表组织形式如说明书附图3所示:
内存单元的链表组织形式如说明书附图4所示:
在编码的时候:
1、iGrpLen:决定抗丢包能力和由于冗余导致带宽的增加。如iGrpLen = 5,丢包率在20%以内可恢复,同时带宽增加20%(即1/iGrpLen)。iGrpLen越大,运算量越大;
2、iMixGrpNum:即:冗余头中的MixNum,交织时的组数;决定抗连续丢包能力。iMixGrpNum = 5,则连续丢包在5以内,可恢复。
3、2 * iGrpLen * iMixGrpNum为冗余编解码导致缓存的包数,即额外增加的延时。
4、编码时应用层包一个一个依次传入,每次编码输出一个或多个包。为了防止突发码流太大,在编本组时,将编码产生的上一组包以每次函数调用输出两个包的方式输出。
5、编码输出包实际占用的内存空间由本函数自行维护,应用层只需分配指针本身的空间,即指针数组ppEncodedPkt中指针的空间。
本发明的有益效果在于:
1、编码时保存每个应用层包和冗余包的结构,编码过程只需传递地址, 不需内存拷贝类型,提高效率;
2、只需要简单的关注冗余头的数据结构本身,并可以根据不同的应用进行不同的参数初始化,灵活性强。同时,该算法并不关心应用层的具体数据,只要数据长度符合要求,都可以运用此算法进行数据包恢复。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何限制,凡是根据本发明技术实质对以上实施例所作的任何简单修改、变更以及等效结构变化,均仍属于本发明技术方案的保护范围内。
Claims (4)
1.一种基于冗余算法的网络丢包恢复方法,其特征在于,该方法采用FEC前向纠错算法,并加入相关的业务逻辑处理,实现网络接收端的相关数据恢复,包括冗余编码和冗余解码两个步骤;
所述冗余编码的具体过程为:
步骤A1、分组:每次接收到传入的应用层包时,先在内存池中申请一个单元,将应用层包内容填入,并加入逻辑链表;
步骤A2、计算冗余:当每一个分组的逻辑链表链表长度为编码参数设定的数值时,申请单元,计算并填入冗余;
步骤A3、交织:当缓存的分组数达到编码参数设定的数值时,交织,重新构造输出网络发送链表;
步骤A4、输出:在每次编码函数调用时,依次输出两个上一分组交织后的包,即网络发送链表中的包;
步骤A5、网络发送链表中包输出完时,释放所有链表中所有内存单元,将链表指针清空;
所述冗余解码的具体过程为:
步骤B1、包序重排,根据编码内存单元的数据项参数中的实际输出的序列号进行包序重排,包序重排队列深度要适中;
步骤B2、重组,将重排后的包按组号和包号重组;
步骤B3、数据恢复,重组后对每个分组进行恢复;
步骤B4、输出。
2.根据权利要求1所述的一种基于冗余算法的网络丢包恢复方法,其特征在于:所述冗余编码和冗余解码的具体过程中的冗余头数据结构包括以下字段:
Rdn_H:冗余头协议标识;
C:定长标识;
R:是否冗余包标识;
M:Mark标识;
GrpLen:分组中应用层包的个数;
MixNum:交织时的组数;
PktLen:包长;
GrpNo:分组的组号;
PktNo:分组中的包号;
Reserve:预留字段;
NetSeqNum:实际输出的序列号;
SessionID:会话编号。
3.根据权利要求2所述的一种基于冗余算法的网络丢包恢复方法,其特征在于:所述冗余编码和冗余解码的具体过程中每个内存编码单元长度=应用层包最大长度+64。
4.根据权利要求3所述的一种基于冗余算法的网络丢包恢复方法,其特征在于:所述冗余编码和冗余解码的具体过程中所有内存单元以两种方式组织:逻辑链表和网络发送链表,逻辑链表按照交织前顺序;网络发送链表按照交织后顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011306078.8A CN112422235B (zh) | 2020-11-19 | 2020-11-19 | 一种基于冗余算法的网络丢包恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011306078.8A CN112422235B (zh) | 2020-11-19 | 2020-11-19 | 一种基于冗余算法的网络丢包恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112422235A CN112422235A (zh) | 2021-02-26 |
CN112422235B true CN112422235B (zh) | 2022-11-11 |
Family
ID=74774691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011306078.8A Active CN112422235B (zh) | 2020-11-19 | 2020-11-19 | 一种基于冗余算法的网络丢包恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112422235B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114244475A (zh) * | 2021-12-22 | 2022-03-25 | 中国人民解放军海军潜艇学院 | 数据传输方法、装置和计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017157303A1 (zh) * | 2016-03-15 | 2017-09-21 | 中兴通讯股份有限公司 | 实时通信中的抗丢包方法、装置和系统 |
CN110943800A (zh) * | 2019-11-06 | 2020-03-31 | 厦门亿联网络技术股份有限公司 | 数据包的发送方法、装置及系统、存储介质、电子装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102143367B (zh) * | 2010-01-30 | 2013-01-30 | 华为技术有限公司 | 一种纠错校验方法、设备和系统 |
US9172506B2 (en) * | 2013-03-12 | 2015-10-27 | Cellco Partnership | Packet loss recovery |
CN108183774B (zh) * | 2018-03-26 | 2021-07-27 | 浙江齐聚科技有限公司 | 一种流媒体传输的前向纠错方法和系统 |
-
2020
- 2020-11-19 CN CN202011306078.8A patent/CN112422235B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017157303A1 (zh) * | 2016-03-15 | 2017-09-21 | 中兴通讯股份有限公司 | 实时通信中的抗丢包方法、装置和系统 |
CN110943800A (zh) * | 2019-11-06 | 2020-03-31 | 厦门亿联网络技术股份有限公司 | 数据包的发送方法、装置及系统、存储介质、电子装置 |
Non-Patent Citations (1)
Title |
---|
"基于非对等保护的音乐包丢失恢复的研究与实现";高冬伟;《中国优秀硕士学位论文全文数据库信息科技辑》;20160515;I136-95 * |
Also Published As
Publication number | Publication date |
---|---|
CN112422235A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9906326B2 (en) | Device and method for transmitting/receiving a packet in communication system | |
CN100362782C (zh) | 对丢失数据单元进行恢复的方法 | |
JP5442816B2 (ja) | 可変fecオーバヘッド及び保護期間を利用したストリーミング及びバッファリング | |
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 | |
CN102143367B (zh) | 一种纠错校验方法、设备和系统 | |
CN101359981B (zh) | 一种数据包冗余编解码的方法、装置及系统 | |
CN101662335B (zh) | 前向纠错编码方法、前向纠错译码方法及其装置 | |
CN101834700A (zh) | 一种基于数据包的单向可靠传输方法及收发装置 | |
CN101656593B (zh) | 前向纠错编码方法、前向纠错译码方法及其装置 | |
CN100568744C (zh) | 一种卷积码速率匹配的方法和装置 | |
CN110943800A (zh) | 数据包的发送方法、装置及系统、存储介质、电子装置 | |
CN101166273A (zh) | 实现视频数据传送的方法、装置及系统 | |
CN1937631A (zh) | 用户数据报协议报文的处理方法及装置 | |
WO2010139265A1 (zh) | 基于前向纠错的重传方法、设备和通信系统 | |
US11831434B2 (en) | Data sending and receiving method and device | |
CN101222297A (zh) | 交织码和网络编码结合的数据分发方法 | |
CN104104727B (zh) | 一种基于Raptor码的大文件传输方法 | |
CN100446452C (zh) | 一种基于纠删码的数据传输保护方法 | |
CN112422235B (zh) | 一种基于冗余算法的网络丢包恢复方法 | |
KR20190133294A (ko) | 일종 미디어 컨텐츠에 기반한 fec 메커니즘 | |
CN107947902A (zh) | 一种高速接口芯片的数据差错处理系统及方法 | |
WO1997038549A1 (en) | Method and apparatus for forward error correction of transmitted digital signals in networks | |
CN101662339B (zh) | 一种对前向纠错恢复的数据进行校验的方法及装置 | |
WO2008141582A1 (fr) | Procédé et appareil de codage/décodage d'information | |
Macker | Reliable multicast transport and integrated erasure-based forward error correction |
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 |