CN102916761B - 编解码方法及相关设备和通信系统 - Google Patents
编解码方法及相关设备和通信系统 Download PDFInfo
- Publication number
- CN102916761B CN102916761B CN201110217978.XA CN201110217978A CN102916761B CN 102916761 B CN102916761 B CN 102916761B CN 201110217978 A CN201110217978 A CN 201110217978A CN 102916761 B CN102916761 B CN 102916761B
- Authority
- CN
- China
- Prior art keywords
- packet
- dncp
- coefficient vector
- code coefficient
- module
- 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
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/0076—Distributed coding, e.g. network coding, involving channel coding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了编解码方法及相关设备和通信系统。本发明实施例方案中提出DNCP来支持两信源间的编解码,其中,编码设备对到达间隔小于设定时长且目的地址相同的两个IP数据包进行随机线性编码,这就有利于在一定程度上消除实际网络中的传输延迟及发送速率等不匹配问题的影响;同时DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及与编码系数矢量相关的编码系数矢量信息,这就为编码设备继续多次编码或为解码设备快速解码奠定了基础,有利于提高网络编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
Description
技术领域
本发明涉及通信技术领域,具体涉及编解码方法及相关设备和通信系统。
背景技术
2000年诞生的网络编码(NC,Network Coding)提出了通信网络中单信源或多信源对多个接收点组播或广播时,如何达到由“最大流最小割定理”确定的网络通信容量极限的一个思路。
传统通信网络节点上的路由交换机只完成“存储-转发”功能,将信息看作“货物”,因而认为信息是不可叠加的。而这一认知上的局限导致网络难以达到最大流传输。NC指出如果允许路由交换机对输入的多条信息流编码后再发送,则可以使得网络通信可以达到最大流传输。目前,业内提出了针对单信源对多个接收点场景的编码方案,其基于的思想是对数据包进行分割,将分割得到的数据包进行网络编码后发送。
研究和实践发现,现有技术主要针对单信源对多个接收点的场景,而实际网络中更多的存在多信源对多个接收点的场景,这使得现有技术无法满足实际网络的应用需要,并且,现有技术采用分割编码的机制,这较大的增加了网络节点的数据处理负荷。
发明内容
本发明实施例提供一种编解码方法及相关设备和通信系统,以期提高网络编解码的灵活性,降低网络节点编解码的复杂度。
一种编码方法,包括:
接收来自第一信源的第一网际协议IP数据包;
若在接收到所述第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且所述第一IP数据包和所述第二IP数据包的目的地址相同,则在有限域中分别为所述第一IP数据包和所述第二IP数据包随机选取编码系数矢量;
利用所述编码系数矢量对所述第一IP数据包和所述第二IP数据包进行随机线性编码得到第一线性编码数据包;
将所述第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包,其中,所述第一DNCP数据包的DNCP包头包含所述第一信源的标识、所述第二信源的标识、所述第一IP数据包的标识、所述第二IP数据包的标识以及与所述编码系数矢量相关的编码系数矢量信息;
将所述第一DNCP数据包进行IP封装得到第三IP数据包并发送。
一种编码方法,包括:
接收第五网际协议IP数据包;
若在接收到所述第五IP数据包后的设定时长内接收到第六IP数据包,且所述第六IP数据包和所述第五IP数据包的目的地址相同,且所述第六IP数据包和所述第五IP数据包的IP层载荷都包含双信源网络编码协议DNCP数据包,且所述第六IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与所述第五IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则在有限域中分别为所述第五IP数据包和所述第六IP数据包IP层载荷中DNCP数据包的载荷随机选取编码系数矢量;
利用所述编码系数矢量对所述第五IP数据包和所述第六IP数据包的IP层载荷中DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;
将所述第二线性编码数据包进行DNCP封装得到第三DNCP数据包,其中,所述第三DNCP数据包的DNCP包头包含所述两个信源标识、所述两个IP数据包标识以及与所述编码系数矢量相关的编码系数矢量信息;
将所述第三DNCP数据包进行IP封装得到第七IP数据包并发送。
一种解码方法,包括:
接收网际协议IP数据包;
若接收到的所述IP数据包的IP层载荷包含双信源网络编码协议DNCP数据包,则将该DNCP数据包存入到缓存区;
当存入到所述缓存区的DNCP数据包达到预设数目时,从所述缓存区读取出DNCP数据包;
若所述读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;
利用所述两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。
一种编码设备,包括:
第一接收模块,用于接收来自第一信源的第一网际协议IP数据包;
第一编码系数选取模块,用于若所述第一接收模块在接收到所述第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且所述第一IP数据包和所述第二IP数据包的目的地址相同,则在有限域中分别为所述第一IP数据包和所述第二IP数据包随机选取编码系数矢量;
编码模块,用于利用所述第一编码系数选取模块随机选取的编码系数矢量对所述第一IP数据包和所述第二IP数据包进行随机线性编码得到第一线性编码数据包;
DNCP封装模块,用于将所述第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包,所述第一DNCP数据包的DNCP包头包含所述第一信源的标识、所述第二信源的标识、所述第一IP数据包的标识、所述第二IP数据包的标识以及与所述编码系数矢量相关的编码系数矢量信息;
IP封装模块,用于将所述DNCP封装模块得到的第一DNCP数据包进行IP封装得到第三IP数据包并发送。
一种编码设备,包括:
第二接收模块,用于接收第五网际协议IP数据包;
第二编码系数选取模块,用于若所述第二接收模块在接收到第五IP数据包后的设定时长内接收到第六IP数据包,且所述第六IP数据包和所述第五IP数据包的目的地址相同,且所述第六IP数据包和所述第五IP数据包的IP层载荷都包含双信源网络编码协议DNCP数据包,且所述第六IP数据包IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与所述第五IP数据包IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则在有限域中分别为所述第五IP数据包和所述第六IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;
编码模块,用于利用所述编码系数选取模块随机选取的编码系数矢量,对所述第五IP数据包和所述第六IP数据包IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;
DNCP封装模块,用于将所述编码模块得到的第二线性编码数据包进行DNCP封装得到第三DNCP数据包,其中,所述第三DNCP数据包的DNCP包头包含所述两个信源标识、所述两个IP数据包标识以及与所述编码系数矢量相关的编码系数矢量信息;
IP封装模块,用于将所述DNCP封装模块得到的第三DNCP数据包进行IP封装得到第七IP数据包并发送。
一种编码设备,包括:
IP层模块,用于接收来自第一信源的第一网际协议IP数据包;
DNCP层模块,用于若所述IP层模块在接收到所述第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且所述第一IP数据包和所述第二IP数据包的目的地址相同,则在有限域中分别为所述第一IP数据包和所述第二IP数据包随机选取编码系数矢量;利用该编码系数矢量对所述第一IP数据包和所述第二IP数据包进行随机线性编码得到第一线性编码数据包;将所述第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包,其中,所述第一DNCP数据包的DNCP包头包含所述第一信源的标识、所述第二信源的标识、所述第一IP数据包的标识、所述第二IP数据包的标识以及与所述编码系数矢量相关的编码系数矢量信息;将所述第一DNCP数据包进行IP封装得到第三IP数据包;
所述IP层模块还用于,发送所述DNCP层模块得到的第三IP数据包。
一种解码设备,其特征在于,包括:
第三接收模块,用于接收网际协议IP数据包;
第一存储模块,用于当所述第三接收模块接收到的IP数据包的IP层载荷包含DNCP数据包时,将该DNCP数据包存入到缓存区;
第一读取模块,用于当存入到缓存区的DNCP数据包达到预设数目时,从所述缓存区读取出DNCP数据包;
第二读取模块,用于若所述第一读取模块读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;
解码模块,用于利用两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。
一种解码设备,包括:
IP层模块,用于接收网际协议IP数据包;
DNCP层模块,用于若所述IP层模块接收到的所述IP数据包的IP层载荷包含双信源网络编码协议DNCP数据包,则将该DNCP数据包存入到缓存区;当存入到所述缓存区的DNCP数据包达到预设数目时,从所述缓存区读取出DNCP数据包;若所述读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;利用所述两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码;
所述IP层模块还用于,发送所述DNCP层模块随机线性解码出的第七IP数据包。
一种通信系统,包括:
如上述实施例所述的编码设备和/或解码设备。
由上可见,本发明实施例提出DNCP来支持两信源间的编解码,由于编码设备是对到达间隔小于设定时长且目的地址相同的两个IP数据包进行随机线性编码,这就有利于在一定程度上消除实际网络中的传输延迟及发送速率等不匹配问题的影响;同时,DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及与编码系数矢量相关的编码系数矢量信息,这就为编码设备继续多次编码或为解码设备快速解码奠定了基础,有利于提高网络编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1-a是本发明实施例提供的一种扩展DNCP层后的数据包结构示意图;
图1-b是本发明实施例提供的一种DNCP数据包的包头结构示意图;
图1-c是本发明实施例提供的一种DNCP包头中的标志字段的取值与含义对比示意图;
图2是本发明实施例提供的一种蝶形网络的编解码示意图;
图3是本发明实施例提供的一种编码方法的流程示意图;
图4是本发明实施例提供的另一种编码方法的流程示意图;
图5是本发明实施例提供的另一种编码方法的流程示意图;
图6是本发明实施例提供的另一种编码方法的流程示意图;
图7是本发明实施例提供的一种解码方法的流程示意图;
图8-a是本发明实施例提供的另一种编码方法的流程示意图;
图8-b是本发明实施例提供的一种IP数据包编码结构示意图;
图9是本发明实施例提供的另一种解码方法的流程示意图;
图10是本发明实施例提供的一种编解码设备的硬件层级架构示意图;
图11是本发明实施例提供的一种编码设备的硬件模块架构示意图;
图12是本发明实施例提供的一种解编码设备的硬件模块架构示意图;
图13是本发明实施例提供的一种小区网络拓扑结构示意图;
图14是本发明实施例提供的一种编码设备示意图;
图15是本发明实施例提供的一种编码设备示意图;
图16是本发明实施例提供的一种解码设备示意图;
图17是本发明实施例提供的一种编码设备示意图;
图18是本发明实施例提供的一种解码设备示意图。
具体实施方式
本发明实施例提供一种编解码方法及相关设备和通信系统,以期提高网络编解码的灵活性,降低网络节点编解码的复杂度。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
其中,本发明说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为便于更好的规范和实施网络编解码,本发明实施例提出了一种双信源网络编码协议(DNCP,Doublesource Network Coding Protocol)。
下面首先介绍DNCP协议的相关内容。
来自不同信源的网际协议(IP,Internet Protocol)数据包的IP包头所携带的信息不同,当IP数据包在网络中传输时,网络中间节点可对其进行编码或者解码操作。为更好的规范和实施网络编解码,本发明实施例提出了支持双信源之间的编解码操作的DNCP,DNCP例如可添加到IP层和运输层之间,即DNCP包头插入到IP包头和运输层包头之间(例如图1-a所示)。
本发明实施例提供的一种DNCP包头的数据格式例如图1-b所示。
其中,图1-b所示DNCP包头各字段的含义可做如下定义:
版本字段:例如占4比特(或可占其它长度),可用于记录DNCP数据包格式的演进版本,以便于区分后续开发研究版本和此前版本。
首部长度字段:例如占4比特(或可占其它长度),可用于记录首部长度;
其中,首部长度是指DNCP数据包中除了有效数据载荷以外的部分,其单位是4字节,其最小值为3。例如当首部长度为3时,可能意味着该DNCP数据包的载荷没有被编码,只是添加了DNCP包头。
总长度字段:例如占16比特(或可占其它长度),可用于记录总长度;
其中,该总长度是指首部长度和有效载荷之和的长度,单位为字节。
标志字段:例如占2位(或可占其它长度),可用于标识DNCP数据包载荷的编码情况,标志字段不同取值对应的含义例如可如图1-c所示。
编码次数字段:例如占2位(或可占其它长度),可用于记录数据包被编码的次数,即从原始数据包算起,被编码的次数。
其中,在一个实际的网络中,数据包的编码可能是递归的,即可以多次被编码,有时也可能直接在某数据包前面加上DNCP包头而不进行编码。记录编码次数是为便于在多次编码后进行解码。其中,若DNCP数据包的载荷为原始IP数据包,则其编码次数为0,其它情况则编码次数≥1。例如当一个IP数据包和一个已编码的数据包进行编码时,参考编码次数,可以避免解码路由器将DNCP数据包误以为时IP数据包而交给目的节点。
原始包长度字段:例如占12位(或可占其它长度),可用于记录未编码的原始数据包的长度。
其中,原始包长度字段的作用是便于在解码的时候准确地恢复出原始数据包。因为不同数据源的数据包的长度可能不一样,为了便于编码计算,可能将其补0使得长度一致。由于一个典型的以太网数据包的长度在500~1500字节之间,所以填充长度一般不超过1000字节。另外,考虑待MAC层的最大传送单元(MTU)的限制,即编码后的MAC帧的长度不能超过1518字节。
编码系数字段:例如占8位(或可占8其它长度),可用于记录编码系数矢量,例如可以是在一个伽罗瓦域GF2n(该n的取值范围例如为4~16的整数,例如GF256)的有限域中随机选择编码系数矢量。而在多次编码的情况下,可将当前编码系数矢量和原来记录的编码系数矢量进行特定计算后得到的新编码系数填入该字段中;若是直接在某数据包前面加上DNCP包头而未对其进行编码,则DNCP包头的该字段可作为保留字段,此时该字段例如可填写为FF或其它值。
原始包标识字段:例如占10位(或占其它长度),可用于记录被编码的原始数据包的标识,其作用是便于解码,该标识例如可以是按照顺序产生的序编号或从原始IP数据包的IP包头的标识符(identifier)字段截取的10比特或更少比特,当然也可能是基于其它方式产生的用于标识原始包的标识。
信源标识字段:例如占4位(或其它长度),可用于记录原始数据包对应的信源的标识,其作用是为了方便解码。
保留字段:例如占30位(或其它长度),可用于多信源同时编码使用。
本领域技术人员可以理解,图1-b所示数据格式的DNCP包头中的部分字段并不是必须的,并且各个字段之间也可能采用其它排列方式,即DNCP包头的数据格式并不限于上述举例。
下面基于如图2所示蝶形网络(Butterfly Network)对NC的基本原理进行简单的介绍。在图1所示的无环、单向蝶形网络中,带箭头的实线表示单位信道。由“最大流最小割定理”可知,该网络的最大流为2,即若信宿R1、R2同时向信源S1、S2请求2比特信息a、b,其中,a来自S1,b来自S2,则在最大流传输的情况下只需一个单位时间便可完成通信。但是若使用传统的“存储-转发”方式,则会在节点M造成拥塞,因而完成上述通信目标最少需要两个单位时间。若使用NC,令M节点对同时输入的两比特信息a,b进行编码运算(例如异或运算),将其编码为1比特发送,这样,在一个单位时间内,R1收到两比特信息a和经过解码即可还原出原始信息a、b。R2同理。可见,引入NC可以最大限度利用网络资源,使网络通信更有效率(不需要增加链路资源就可以提高网络吞吐量)。
下面通过具体实施例进行详细说明。
本发明编码方法的一个实施例,本实施例主要针对将两个IP数据包进行编码的场景。一种编码方法可包括:编码设备接收来自第一信源的第一网际协议IP数据包;若在接收到第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且第一IP数据包和第二IP数据包的目的地址相同,则在有限域中分别为第一IP数据包和第二IP数据包随机选取编码系数矢量;利用该编码系数矢量对第一IP数据包和第二IP数据包进行随机线性编码得到第一线性编码数据包;将第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包,第一DNCP数据包的DNCP包头包含第一信源的标识、第二信源的标识、第一IP数据包的标识、第二IP数据包的标识以及与上述编码系数矢量相关的编码系数矢量信息;将第一DNCP数据包进行IP封装得到第三IP数据包并发送。
参见图3,具体步骤可包括:
301、编码设备接收来自第一信源的第一网际协议IP数据包;
302、若在接收到第一IP数据包后的设定时长(该设定时长可根据实际网络具体设定,例如可设置为1毫秒、5毫秒、10毫秒、50毫秒或其它值)内接收到来自第二信源的第二IP数据包,且第一IP数据包和第二IP数据包的目的地址相同,则编码设备在有限域中分别为第一IP数据包和第二IP数据包随机选取编码系数矢量;
在实际网络中,编码设备通常会从不同的链路分别接收来自第一信源和第二信源的IP数据包,当然其也可能从同一链路接收到来自第一信源和第二信源的IP数据包。
在实际应用中,编码设备例如可在伽罗瓦域(GF,Galois Field)2n中分别为第一IP数据包和第二IP数据包随机选取编码系数矢量,其中,该n的取值范围例如为4至16之间的整数(例如8~16间的整数),或n也可为大于16的整数,n越大,解码概率也就越大。
303、编码设备利用选取的该编码系数矢量对第一IP数据包和第二IP数据包进行随机线性编码得到第一线性编码数据包;
304、编码设备将第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包;
其中,第一DNCP数据包的DNCP包头包含第一信源的标识、第二信源的标识、第一IP数据包的标识、第二IP数据包的标识以及与上述编码系数矢量相关的编码系数矢量信息(其中,与上述编码系数矢量相关的编码系数矢量信息可能是该编码系数矢量本身,或者也可能是将上述编码系数矢量通过特定计算后得到的编码系数矢量信息,而解码设备例如可以通过该特定计算对应的逆运算,还原出该编码系数矢量)。
305、编码设备将第一DNCP数据包进行IP封装得到第三IP数据包并发送。
在实际应用中,第三IP数据包的IP包头中记录的源地址例如与第一IP数据包或第二IP数据包的IP包头中记录的源地址相同,第三IP数据包的IP包头中记录的目的地址例如可与第一IP数据包或第二IP数据包的IP包头中记录的目的地址相同(其中,第一IP数据包和第二IP数据包的IP包头中记录的是同一个目的地址)。此外,第三IP数据包的IP包头中还可包含有DNCP数据包标识(DNCP数据包标识例如可携带在第三IP数据包的IP包头的协议字段,例如可将其协议字段填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第三IP数据包的IP包头包含的DNCP数据包标识,获知第三IP数据包的IP层载荷包含DNCP数据包。
此外,编码设备若在接收到第一IP数据包后的设定时长内,未接收到来自第二信源的与第一IP数据包的目的地址相同的IP数据包,则编码设备可发送第一IP数据包,或将第一IP数据包进行DNCP封装得到第二DNCP数据包,将第二DNCP数据包进行IP封装得到第四IP数据包并发送,其中,第二DNCP数据包的DNCP包头可包含第一信源的标识和第一IP数据包的标识。此时,第四IP数据包的IP包头中记录的源地址与第一IP数据包的IP包头中记录的源地址相同,第四IP数据包的IP包头中记录的目的地址与第一IP数据包的IP包头中记录的目的地址相同。此外,第四IP数据包的IP包头还可包含有DNCP数据包标识(该DNCP数据包标识例如可携带在第四IP数据包的IP包头的协议字段,例如可将该协议字段填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第四IP数据包的IP包头包含的DNCP数据包标识,获知第四IP数据包的IP层载荷包含DNCP数据包。
由上可见,本实施例提出DNCP来支持两信源间的编解码,由于编码设备是对到达间隔小于设定时长且目的地址相同的两个IP数据包进行随机线性编码,这就有利于在一定程度上消除实际网络中的传输延迟及发送速率等不匹配问题的影响;同时,DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及与编码系数矢量相关的编码系数矢量信息,这就为编码设备继续多次编码或为解码设备快速解码奠定了基础,有利于提高网络编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
本发明编码方法的另一个实施例,本实施例主要针对将两个已被编码过的数据包进行编码的一种场景。一种编码方法可包括:编码设备接收第五网际协议IP数据包;若在接收到第五IP数据包后的设定时长内接收到第六IP数据包,且第六IP数据包和第五IP数据包的目的地址相同,且第六IP数据包和第五IP数据包的IP层载荷都包含DNCP数据包,且第六IP数据包的IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与第五IP数据包的IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则在有限域中分别为第五IP数据包和第六IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;利用该编码系数矢量,对第五IP数据包和第六IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;将第二线性编码数据包进行DNCP封装得到第三DNCP数据包,第三DNCP数据包的DNCP包头包含上述两个信源标识、上述两个IP数据包标识以及与上述编码系数矢量相关的编码系数矢量信息;将第三DNCP数据包进行IP封装得到第七IP数据包并发送。
参见图4、具体步骤可以包括:
401、编码设备接收第五网际协议IP数据包;
402、若编码设备在接收到第五IP数据包后的设定时长内接收到第六IP数据包,且第六IP数据包和第五IP数据包的目的地址相同,且第六IP数据包和第五IP数据包的IP层载荷都包含DNCP数据包,且第六IP数据包的IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与第五IP数据包的IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则编码设备在有限域中分别为第五IP数据包和第六IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;
在实际应用中,编码设备例如可检测第五IP数据包和第六IP数据包的IP包头是否包含DNCP数据包标识,若其IP包头包含DNCP数据包标识,则可据此获知其IP层载荷包含DNCP数据包,当然,编码设备亦可通过其它可能的方式获知其IP层载荷是否包含DNCP数据包,例如可通过检测第五IP数据包和第六IP数据包的IP层载荷,获知其IP层载荷是否包含DNCP数据包。
编码设备例如可在伽罗瓦域GF2n中,分别为第五IP数据包和第六IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量,其中,该n的取值范围例如为4至16之间的整数(例如8~16间的整数),或者,n也可为大于16的整数。
403、编码设备利用选取的该编码系数矢量,对第五IP数据包和第六IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;
404、编码设备将第二线性编码数据包进行DNCP封装得到第三DNCP数据包,第三DNCP数据包的DNCP包头包含上述两个信源标识、上述两个IP数据包标识以及与上述编码系数矢量相关的编码系数矢量信息(其中,与上述编码系数矢量相关的编码系数矢量信息可能是编码系数矢量本身,或者也可能是将上述编码系数矢量与DNCP数据包的DNCP包头包含的编码系数矢量信息通过特定计算后得到的数据)。
405、编码设备将第三DNCP数据包进行IP封装得到第七IP数据包并发送。
在实际应用中,第七IP数据包的IP包头中记录的源地址例如与第五IP数据包或第六IP数据包的IP包头中记录的源地址相同,第七IP数据包的IP包头中记录的目的地址例如可与第五IP数据包或第六IP数据包的IP包头中记录的目的地址相同(其中,第五IP数据包和第六IP数据包的IP包头中记录的是同一个目的地址);第七IP数据包的IP包头还可包含有DNCP数据包标识(DNCP数据包标识例如可携带在第七IP数据包的IP包头的协议字段,例如该协议字段可填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第七IP数据包的IP包头包含的DNCP数据包标识,获知第七IP数据包的IP层载荷包含DNCP数据包。
此外,编码设备若在接收到第五IP数据包后的设定时长内未接收到与其目的地址相同的第六IP数据包,或者,在设定时长接收到的第六IP数据包的IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与第五IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识不同,则编码设备可发送第五IP数据包。
由上可见,本实施例提出DNCP来支持两信源间的编解码,由于编码设备是对到达间隔小于设定时长,且目的地址相同的两个IP数据包的IP层载荷中DNCP数据包的载荷进行随机线性编码,这就有利于在一定程度上消除实际网络中的传输延迟及发送速率等不匹配问题的影响;且随机线性编码后封装的DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及与随机选取的编码系数矢量相关的编码系数矢量信息,这就为下游编码设备继续进行一次或多次编码或为解码设备快速解码奠定了基础,有利于提高网络编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
本发明编码方法的另一个实施例,本实施例主要对应将一个未被编码过的IP数据包和一个已被编码过的IP数据包进行编码的一种场景。其中,一种编码方法,可包括:编码设备接收第五网际协议IP数据包;若在接收到第五IP数据包后的设定时长内接收到第八IP数据包,且第八IP数据包和第五IP数据包的目的地址相同,且第八IP数据包和第五IP数据包其中一个的IP层载荷包含DNCP数据包,且另一个IP数据包为通过随机线性编码获得该DNCP数据包载荷的原始IP数据包中的其中一个,则在有限域中分别为该另一个IP数据包和该DNCP数据包的载荷随机选取编码系数矢量;利用该编码系数矢量对该DNCP数据包的载荷和该另一个IP数据包进行随机线性编码得到第三线性编码数据包;将第三线性编码数据包进行DNCP封装得到第四DNCP数据包,其中,第四DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及与选取的编码系数矢量相关的编码系数矢量信息,其中,该两个信源标识和两个IP数据包标识与上述IP层载荷中的DNCP数据包的包头所包含的两个信源标识和两个IP数据包标识相同;将第四DNCP数据包进行IP封装得到第八IP数据包并发送。
参见图5、具体步骤可包括:
501、编码设备接收第五网际协议IP数据包;
502、编码设备若在接收到第五IP数据包后的设定时长内接收到第八IP数据包,且第八IP数据包和第五IP数据包的目的地址相同,且第八IP数据包和第五IP数据包其中一个的IP层载荷包含DNCP数据包,且另一个IP数据包为通过随机线性编码获得该DNCP数据包载荷的原始IP数据包中的其中一个,则编码设备在有限域中分别为上述另一个IP数据包和上述DNCP数据包的载荷随机选取编码系数矢量;
在实际应用中,编码设备例如可检测第五IP数据包和第八IP数据包的IP包头是否包含DNCP数据包标识,若其IP包头包含DNCP数据包标识,则可据此获知其IP层载荷包含DNCP数据包,当然,编码设备亦可通过其它可能的方式获知其IP层载荷是否包含DNCP数据包,例如可通过检测第五IP数据包和第八IP数据包的IP层载荷,获知其IP层载荷是否包含DNCP数据包。
编码设备例如可在伽罗瓦域GF2n中,分别为上述DNCP数据包的载荷和上述另一个IP数据包随机选取编码系数矢量随机选取编码系数矢量,该n的取值范围例如为4至16之间的整数(例如8~16的整数),或者,n也可为大于16的整数。
503、编码设备利用随机选取的编码系数矢量对上述DNCP数据包的载荷和上述另一个IP数据包进行随机线性编码得到第三线性编码数据包;
504、编码设备将第三线性编码数据包进行DNCP封装得到第四DNCP数据包;其中,第四DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及与选取的编码系数矢量相关的编码系数矢量信息,其中,该两个信源标识和两个IP数据包标识,与上述IP层载荷中的DNCP数据包的包头所包含两个信源标识和两个IP数据包标识相同;
505、编码设备将第四DNCP数据包进行IP封装得到第九IP数据包并发送。
在实际应用中,第九IP数据包的IP包头中记录的源地址例如与第五IP数据包或第八IP数据包的IP包头中记录的源地址相同,第九IP数据包的IP包头中记录的目的地址例如可与第五IP数据包或第八IP数据包的IP包头中记录的目的地址相同(其中,第五IP数据包和第八IP数据包的IP包头中记录的是同一个目的地址);第九IP数据包的IP包头还可包含有DNCP数据包标识(DNCP数据包标识例如可携带在第九IP数据包的IP包头的协议字段,例如其协议字段可填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第九IP数据包的IP包头包含的DNCP数据包标识,获知第九IP数据包的IP层载荷包含DNCP数据包。
由上可见,本实施例提出DNCP来支持两信源间的编解码,若两个IP数据包到达间隔小于设定时长且目的地址相同,且两个IP数据包中的一个的IP层载荷包含DNCP数据包,且另一个IP数据包为通过随机线性编码获得该DNCP数据包载荷的原始IP数据包中的其中一个,编码设备对该另一个IP数据包和该DNCP数据包的载荷进行随机线性编码,这就有利于在一定程度上消除实际网络中的传输延迟及发送速率等不匹配问题的影响;同时,随机线性编码后封装的DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及编码系数矢量信息,这就为下游编码设备继续进行一次或多次编码或为解码设备快速解码奠定了基础,有利于提高网络编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
本发明编码方法的另一个实施例,本实施例主要对应将一个未被编码过的IP数据包和一个已被编码过的IP数据包进行编码的另一种场景。其中,一种编码方法,可包括:编码设备接收第五网际协议IP数据包;若在接收到第五IP数据包后的设定时长内接收到第十IP数据包,且第十IP数据包和第五IP数据包的目的地址相同,且第十IP数据包和第五IP数据包的IP层载荷都包含DNCP数据包,且第十IP数据包和第五IP数据包其中一个的IP层载荷中的DNCP数据包的DNCP包头包含两个信源标识和两个IP数据包标识,而另一个的IP层载荷中的DNCP数据包的DNCP包头包含该两个信源标识中的其中一个以及该两个IP数据包标识中的其中一个,则在有限域中分别为第五IP数据包和第十IP数据包IP层载荷中DNCP数据包的载荷随机选取编码系数矢量;利用该选取的编码系数矢量,对第五IP数据包和第十IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第四线性编码数据包;将第四线性编码数据包进行DNCP封装得到第五DNCP数据包,其中,第五DNCP数据包的DNCP包头包含上述两个信源标识和两个IP数据包标识,以及与随机选取的编码系数矢量相关的编码系数矢量信息;将第五DNCP数据包进行IP封装得到第十一IP数据包并发送。
参见图6,具体步骤可包括:
601、编码设备接收第五网际协议IP数据包;
602、编码设备若在接收到第五IP数据包后的设定时长内接收到第十IP数据包,且第十IP数据包和第五IP数据包的目的地址相同,且第十IP数据包和第五IP数据包的IP层载荷都包含DNCP数据包,且第十IP数据包和第五IP数据包其中一个的IP层载荷中的DNCP数据包的DNCP包头包含两个信源标识和两个IP数据包标识,而另一个的IP层载荷中的DNCP数据包的DNCP包头包含该两个信源标识中的其中一个以及该两个IP数据包标识中的其中一个,则编码设备在有限域中分别为第五IP数据包和第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;
在实际应用中,编码设备例如可检测第五IP数据包和第十IP数据包的IP包头是否包含DNCP数据包标识,若其IP包头包含DNCP数据包标识,则可据此获知其IP层载荷包含DNCP数据包,当然,编码设备亦可通过其它可能的方式获知其IP层载荷是否包含DNCP数据包,例如可通过检测第五IP数据包和第十IP数据包的IP层载荷,获知其IP层载荷是否包含DNCP数据包。
编码设备例如可在伽罗瓦域GF2n中,分别为第五IP数据包和第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量,该n的取值范围例如为4至16之间的整数,或者n也可为大于16的整数。
603、编码设备利用该编码系数矢量对第五IP数据包和第十IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第四线性编码数据包;
604、编码设备将第四线性编码数据包进行DNCP封装得到第五DNCP数据包,第五DNCP数据包的DNCP包头包含上述两个信源标识、上述两个IP数据包标识以及与上述编码系数矢量相关的编码系数矢量信息;
605、编码设备将第五DNCP数据包进行IP封装得到第十一IP数据包并发送。
在实际应用中,第十一IP数据包的IP包头中记录的源地址例如与第五IP数据包或第十IP数据包的IP包头中记录的源地址相同,第十一IP数据包的IP包头中记录的目的地址例如可与第五IP数据包或第十IP数据包的IP包头中记录的目的地址相同(其中,第五IP数据包和第十IP数据包的IP包头中记录的是同一个目的地址);第十一IP数据包的IP包头还可包含有DNCP数据包标识(DNCP数据包标识例如可携带在第十一IP数据包的IP包头的协议字段,例如协议字段可填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第十一IP数据包的IP包头包含的DNCP数据包标识,获知第十一IP数据包的IP层载荷包含DNCP数据包。
由上可见,本实施例提出DNCP来支持两信源间的编解码,若两个IP数据包到达间隔小于设定时长且目的地址相同,且两个IP数据包都包含DNCP数据包,且其中一个的IP层载荷中的DNCP数据包的DNCP包头包含两个信源标识和两个IP数据包标识,而另一个的IP层载荷中的DNCP数据包的DNCP包头包含该两个信源标识中的其中一个以及该两个IP数据包标识中的其中一个,则编码设备对该两个IP数据包IP层载荷中的DNCP数据包的载荷进行随机线性编码,这就有利于在一定程度上消除实际网络中的传输延迟及发送速率等不匹配问题的影响;同时,随机线性编码后封装的DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及与编码系数矢量相关的编码系数矢量信息,这就为下游编码设备继续进行一次或多次编码或为解码设备快速解码奠定了基础,有利于提高网络编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
本发明解码方法的一个实施例,一种解码方法,可包括:解码设备接收IP数据包;若接收到的IP数据包的IP层载荷包含DNCP数据包,则解码设备将该DNCP数据包存入到缓存区;当存入到缓存区的DNCP数据包达到预设数目时,从该缓存区读取出DNCP数据包;若读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含该两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;利用该两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。
参见图7,具体步骤可包括:
701、解码设备接收IP数据包;
其中,解码设备例如可从第一链路接收IP数据包,或者也可分别从第一链路和第二链路接收IP数据包。
702、若接收到的IP数据包的IP层载荷包含DNCP数据包,则解码设备将该DNCP数据包存入到缓存区;
在实际应用中,编码设备例如可检测接收到的IP数据包的IP包头是否包含DNCP数据包标识,若其IP包头包含DNCP数据包标识,则可据此获知其IP层载荷包含DNCP数据包,当然,编码设备亦可通过其它可能的方式获知其IP层载荷是否包含DNCP数据包,例如可通过检测接收到的IP数据包的IP层载荷来获知其IP层载荷是否包含DNCP数据包。
703、当存入到缓存区的DNCP数据包达到预设数目(该预设数目可根据具体网络场景和编码场景具体设置,例如可设置为32个、64个、128个、256或其它个数)时,解码设备从该缓存区读取出DNCP数据包;
在实际应用中,在将该DNCP数据包存入到缓存区之后,解码设备还可将该DNCP数据包的索引(该索引例如可包括:该DNCP数据包的DNCP包头中包含的至少一个IP数据包标识、或者包括该DNCP数据包的DNCP包头中包含的至少一个IP数据包标识和至少一个信源标识,或者也可包括其它能够索引到该DNCP数据包的信息)和该DNCP数据包在该缓存区的地址存入到内容可寻址存储器(CAM,Content Addressable Memory)中。
704、若读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则解码设备查找缓存区中是否存其DNCP包头包含该两个信源标识和两个IP数据包标识的另一个DNCP数据包;
其中,若读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组编码系数矢量信息,表示该DNCP数据包的载荷是经过随机线性编码的,当然,解码设备也可通过检测DNCP包头的标志字段(该标志字段指示该DNCP数据包的载荷的编码情况),来获知该DNCP数据包的载荷是否经过随机线性编码,若经过随机线性编码,则需要查找到与该DNCP数据包具有相同待解码数据的其它DNCP数据包(即,其DNCP包头包含该两个信源标识和两个IP数据包标识的DNCP数据包)来进行解码。
此外,若读取出的DNCP数据包的载荷未经过随机线性编码(即:该DNCP数据包可能是将原始IP数据包直接进行DNCP封装后得到的),则去除该DNCP数据包的DNCP包头得到IP数据包(该IP数据包为原始IP数据包)。
705、若存在,则解码设备从缓存区读取出该另一个DNCP数据包;
其中,该另一个DNCP数据包的DNCP包头可包含另一组与编码系数矢量相关的编码系数矢量信息(其中,该另一组与编码系数矢量相关的编码系数矢量信息,可能与此前读取的DNCP数据包的DNCP包头包含的一组与编码系数矢量相关的编码系数矢量信息相同,也可能与之不同)及上述两个信源标识和两个IP数据包标识。
在一种应用场景下,若解码设备是分别从第一链路和第二链路接收IP数据包的,则若从第一链路接收到的IP数据包的IP层载荷包含DNCP数据包,解码设备可将该DNCP数据包存入到第一缓存区;若从第二链路接收到的IP数据包的IP层载荷包含DNCP数据包,则解码设备可将该DNCP数据包存入到第二缓存区,其中,第一缓存区和第二缓存区可位于同一存储芯片,也可能位于不同的存储芯片。在此场景下,当存入到第一缓存区的DNCP数据包达到预设数目和/或存入到第二缓存区的DNCP数据包达到预设数目时,或者,存入到第一缓存区和第二缓存区的DNCP数据包的总和达到预设数目时,按照预定的读取顺序(例如可按照先存先取的原则读取,或者,可按照存储地址由低到高的顺序读取)从第一缓存区读取出DNCP数据包。若从第一缓存区读取出的DNCP数据包的DNCP包头包含有两个信源标识、两个IP数据包标识及与该两个IP数据包标识对应的一组编码系数矢量信息,则可根据该两个信源标识中的至少一个及该两个IP数据包标识中的至少一个,或,根据该两个IP数据包标识中的至少一个,查找第二缓存区中是否存在其DNCP包头包含上述两个信源标识和两个IP数据包标识的另一个DNCP数据包(即,具有相同待解码数据的另一个DNCP数据包),若不存在,解码设备可丢弃该读取出的DNCP数据包;若存在,则解码设备从缓存区读取出该另一个DNCP数据包。
706、解码设备利用两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。
在实际应用中,解码设备例如可运用矩阵相乘、高斯消元法或克莱默法则对读取出的DNCP数据包的载荷进行随机线性解码。其中,若随机线性解码成功,则解码设备可获得来自不同信源的两个原始IP数据包并可发送该原始IP数据包,若随机线性解码失败,则解码设备可丢弃该读取出的DNCP数据包,并可按照上述机制继续从缓存区继续读取其它DNCP数据包来进行解码。
由上可见,本实施例中解码设备接收IP数据包;若接收到的IP数据包的IP层载荷包含DNCP数据包,将该DNCP数据包存入到缓存区;当存入到缓存区的DNCP数据包达到预设数目时,从该缓存区读取出DNCP数据包;若读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找出缓存区中的其DNCP包头包含该两个信源标识和两个IP数据包标识的另一个DNCP数据包,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;解码设备利用该两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。由于编码设备在随机线性编码后封装的DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及与编码系数矢量相关的编码系数矢量信息,解码设备可据此快速解码,该机制有利于提高网络编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
为便于更好的理解实施本发明实施例的技术方案,下面以一种举例场景下的编解码过程为例,进行详细描述。
参见图8a,图8a为编码流程示意图,具体步骤可包括:
801、编码设备Ec1接收来自信源S1的数据包PS11;
802、编码设备Ec1判断接收到的该数据包是否为IP数据包;
若否,则执行步骤809;
若是,则执行步骤803;
803、编码设备Ec1为接收到的数据包PS11分配标识;
在实际应用中,为了便于在解码时容易区分相同信源的IP数据包,并在解码后能够容易的恢复出原始IP数据包的顺序,编码设备Ec1可为接收到的每个IP数据包分配标识(如顺序编号)。
为了方便表述,编码设备Ec1为IP数据包分配的标识定义如下:
假设在某个网络的拓扑图G=(V,E)中,例如有n个信源Si∈V,m个信宿Rj∈V,其中,i=1,2,…n,j=1,2,…m。
编码设备Ec1例如可将信源S1发出的第1个数据包记为S(1,0),第2个数据包记为S(1,1),依次类推,信源Sn的第x个数据包记为S(n,x-1)。依据实际应用需求,来自每个信源的IP数据包的序编号例如可从0开始至1024(或其它值)结束,并依此重复,即信源Sn的最大的序编号为S(n,1024)。
804、编码设备Ec1启动定时器;
其中,启动定时器的目的是为了确定在此后的设定时长内是否能接收到来自信源S2的数据包。
805、编码设备Ec1若在定时器时间到达前接收到来自信源S2的数据包(例如表示为数据包PS21),且该数据包PS21为IP数据包,则编码设备Ec1判断IP数据包PS11和IP数据包PS21的目的地址是否相同;
若相同,则执行步骤809;
若不同,则执行步骤806,
其中,若在定时器时间到达前接收到来自信源S2的数据包PS21,则可将IP数据包PS11和IP数据包PS21看做是“同时到达”。
806、编码设备Ec1在有限域内分别为IP数据包PS11和IP数据包PS21随机选取编码系数矢量,并利用随机选取的编码系数矢量对IP数据包PS11和IP数据包PS21进行线性编码得到线性编码数据包。
在实际应用中,编码设备Ec1例如可从GF256(或其它GF)中为IP数据包PS11和IP数据包PS21随机选择编码系数矢量。
例如,若为来自不同信源的IP数据包S(1,x)和IP数据包S(2,y)选取的编码系数矢量分别为α、β,则其线性编码后的输出out(e)可如下:
此外,考虑到多次编码的情形和实际的应用,编码的对象例如为整个IP数据包(IP包头+其有效载荷)。
807、编码设备Ec1将对IP数据包PS11和IP数据包PS21进行线性编码得到线性编码数据包得到的线性编码数据包进行DNCP封装得到DNCP数据包;
其中,giaDNCP数据包的DNCP包头可包含信源S1和信源S2的标识、IP数据包PS11和IP数据包PS11的标识,以及随机选取的编码系数矢量。
808、编码设备Ec1对得到的DNCP数据包进行IP封装得到IP数据包PDS11;
其中,编码设备Ec1对DNCP数据包进行IP封装后得到的IP数据包PDS11的格式可如图8-b所示。
在实际应用中,例如可将IP数据包PS11和IP数据包PS21的IP包头中的总长度字段中较大值填入IP数据包PDS11的IP包头的总长度字段,可将IP数据包PS11和IP数据包PS21的IP包头中的TTL字段中较大值填入IP数据包PDS11IP包头的TTL字段,且IP数据包PDS11的源IP地址和目的IP地址,与IP数据包PS11或IP数据包PS21的源IP地址和目的IP地址相同。
此外,IP数据包PDS11IP包头还可包含有DNCP数据包标识(该DNCP数据包标识例如可携带在IP数据包PDS11IP包头的协议字段,例如可将该协议字段填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据该IP数据包PDS11的IP包头包含的DNCP数据包标识,获知IP数据包PDS11的IP层载荷包含DNCP数据包。
809、编码设备Ec1的IP层查表转发数据包。
参见图9,图9为一种解码方法流程示意图,具体步骤可包括:
901、解码设备Dc1(例如解码路由器)分别从两条链路接收IP数据包;
902、解码设备Dc1判断接收到的IP数据包IP层载荷是否包含DNCP数据包;
若否,则执行步骤910;
若是,则执行步骤903;
在实际应用中,解码设备Dc1例如可检测接收到得IP数据包的IP包头是否包含DNCP数据包标识,若其IP包头包含DNCP数据包标识,则可据此获知其IP层载荷包含DNCP数据包,当然,解码设备Dc1亦可通过其它可能的方式获知其IP层载荷是否包含DNCP数据包,例如可通过检测接收到得IP数据包的IP层载荷,获知其IP层载荷是否包含DNCP数据包。
903、若接收到的IP数据包来自第一链路,则解码设备Dc1可将该IP数据包的IP层载荷中的DNCP数据包存入SRAM缓存SR1,若接收到的IP数据包来自第二链路,则解码设备Dc1可将该IP数据包的IP层载荷中的DNCP数据包存入SRAM缓存SR2;
在实际应用中,在将该DNCP数据包存入到缓存区之后,解码设备Dc1还可将该DNCP数据包的索引(该索引例如可包括:该DNCP数据包的DNCP包头中包含的至少一个IP数据包标识、或者,包括该DNCP数据包的DNCP包头中包含的至少一个IP数据包标识和至少一个信源标识,或者也可包括其它能够索引到该DNCP数据包的信息)和该DNCP数据包在缓存区的地址存入到内容可寻址存储器(CAM,Content Addressable Memory)。
其中,使用CAM和存入缓存SRAM的原因是,由于经过编码及网络环境非理想等,解码设备收到的编码数据包可能是乱序的、不同步的。因此需在解码设备中对输入的DNCP数据包先缓存起来。当收集到足够的信息量(例如缓存的DNCP数据包数量达到设定数目)时,进行解码操作。
DNCP数据包存入SRAM的顺序可以是从地址由低到高的顺序。
查询CAM的输出即可为对应DNCP数据包在SRAM中的地址。
904、解码设备Dc1读取其中一片SRAM中缓存的DNCP数据包;
其中,例如当存入到其中一片SRAM的DNCP数据包达到预设数目和/或存入到另一片SRAM的DNCP数据包达到预设数目时,或,存入到两片SRAM的DNCP数据包的总和达到预设数目时,解码设备Dc1可开始解码操作。
对于解码设备Dc1,其接收到的DNCP数据包分为两种情况:
a.DNCP数据包的载荷未经过随机线性编码(解码设备Dc1例如可根据DNCP数据包的DNCP包头中相关字段的内容获知DNCP数据包的载荷是否经过编码),但进行了DNCP封装;
此种数据包只需去掉DNCP包头即可得到原始IP数据包;
b.DNCP数据包的载荷经过随机线性编码,则DNCP数据包的载荷可表示为如以方程组(1)所描述的形式:
aX(0,i)+bY(1,j)=K
cX(0,i)+dY(1,j)=P (1)
解码时,例如可对接收到的DNCP数据包采取先入先解的策略,并可按解码顺序输出IP数据包。
在实际应用中,解码设备Dc1例如可按照地址大小顺序(例如存储时可按照地址由低到高的顺序存储),依次轮流读取两片SRAM中缓存的DNCP数据包,即可按照地址由低到高的顺序,先从缓存SR1中读取一DNCP数据包进行随机线性解码,再从缓存SR2中读取一DNCP数据包进行随机线性解码,然后再缓存SR1中读取一DNCP数据包进行随机线性解码,依此类推。
其中,轮流读取两片SRAM的目的在于“尽最大努力交付”到来的数据包。
905、解码设备Dc1判断读取的DNCP数据包的载荷是否经过随机线性编码;
若读取出的DNCP数据包的载荷未经过编码,则去除该DNCP数据包的去掉DNCP包头即可得到原始IP数据包,并执行步骤910;
若读取出的DNCP数据包的载荷经过编码,则执行步骤907;
906、解码设备Dc1判断读取出的该DNCP数据包是否已经被解码;
其中,在每个原始IP数据包被解码出来后,可在解码标志寄存器对应进行标记,因此,解码设备Dc1可查询解码标志寄存器来判断读取出的该DNCP数据包是否已经被解码;
其中,若读取出的该DNCP数据包已经被解码,解码设备Dc1可将对应解码标志位复位,并执行步骤904,继续读取下一DNCP数据包来进行解码。
若读取出的该DNCP数据包未被解码,则执行907;
其中,需要查询数据包是否解码的理由是:
经过编码的数据包形式总可由方程组(1)所示,即每块SRAM中均可能存储有对应原始IP数据包X(0,i),Y(1,j)的待解码数据。故,若以某一块SRAM为基准已经解出了原始IP数据包X(0,i),Y(1,j),而下一次读取到另一块SRAM时读取的待解码DNCP数据包时,依然可能读取出对应原始IP数据包X(0,i),Y(1,j)的待解码DNCP数据包,此时若查询到其已经被解码,则可无需再对其进行解码操作了。
907、解码设备Dc1根据已读取出的DNCP数据包的DNCP包头信息,查找另一块SRAM中是否存在与之具有相同待解码信息的另一DNCP数据包;
若存在,则解码设备Dc1读取出另一块SRAM存储的与已读取出的DNCP数据包具有相同待解码信息的另一DNCP数据包。
其中,具有相同待解码信息的两个DNCP数据包DNCP包头包含的两个信源标识和两个IP数据包标识是相同的。例如,某两个DNCP数据包DNCP包头都包含信源S1和信源S2的标识,IP数据包PS11和IP数据包PS21的标识,则可认为这两个两个DNCP数据包的载荷中具有相同待解码信息。
其中,这两个DNCP数据包的编码信息都包含在DNCP包头中(具体见DNCP包头格式说明)。例如以IP数据包X(0,i)的标识为索引,或者以IP数据包X(0,i)的标识和其对应信源的标识为索引,通过CAM可查出IP数据包X(0,i)对应的DNCP数据包在另一块SRAM中的存储地址,再依据此存储地址可读取出该另一个DNCP数据包,cX(0,i)+d Y(1,j)。
908、解码设备Dc1判断读取出的两个DNCP数据包中的待解码数据对应的编码系数矢量是否线性相关;
由方程组(1)所示,即判断系数矩阵是否为零。
若系数矩阵为零,则说明系数线性相关,当前无法解码此数据包,可丢弃该数据包,返回步骤904,继续解码下一DNCP数据包。
若系数矩阵不为零,则说明线性不相关,可以解码,执行步骤909。
909、解码设备Dc1运用克莱默法则解码读取出的两个DNCP数据包中的待解码数据得到的原始的IP数据包;
基于方程组的解码方法有多种,如矩阵相乘、高斯消元法等,考虑到硬件的实现,在此使用基于克莱默法则的解码算法。
对于如上方程组:若那么,
在解码完成后可将IP数据包X(0,i)、IP数据包Y(1,j)标志为已解。
910,解码设备Dc1在IP层查表转发IP数据包。
返回步骤904,继续解码下一DNCP数据包。
为便于更好的实施本发明实施例的方案,下面还提供具有网络编解码功能路由器DNCP层硬件结构。
要在网络中实现网络编解码功能(进而分别对应两种路由器),即改变普通路由器对数据流简单“存储-转发”的处理方式,需要在普通路由器上添加一DNCP层模块。
DNCP的层次位于网络层和运输层之间,即改变后的路由器体系结构框图如图10所示,整个DNCP层的硬件结构如图11、图12所示。
(1)实现编码功能的DNCP层模块说明如下:
输入仲裁模块(Input_Arbiter),设置于IP层。
由于编码操作只针对IP数据包进行,可在Input_Arbiter中对传输的数据包进行协议判断,如果是IP数据包,则传输至DNCP层模块,并在条件满足的情况下进行编码操作;
如果是非IP数据包,则在IP层模块直接转发。
编码控制模块(Control):
a.提取IP包头信息,为每一个信源分配一信源标识,为每一个IP数据包分配一IP数据包标识,(例如序号0至1024)。
b.判断是否需要进行编码:
①判断数据包到达的时间间隔是否小于设定时长。
②在①满足的情况下判断是否是发往同一目的IP地址的数据包。
若是,则发送至编码模块(EnCoding)进行随机线性编码运算,否则直接发送至打包模块(Packing)进行DNCP封装,加上DNCP包头。
编码模块(EnCoding)执行编码运算。
编码模块EnCoding可包括:
随机数产生模块,两个乘法器、两个全加器,以及随机数产生器(例如产生8bit的随机数)。其中,当有IP数据包到达时,随机数产生器可产生2个随机数,并分别与来自某一个信源的IP数据包相乘,最后将所得结果相加并输出至打包模块(Packing)。
打包模块(Packing):为随机线性编码得到的线性编码数据包封装DNCP包头得到DNCP数据包,再为该DNCP数据包封装一个新的IP包头得到IP数据包,封装的DNCP包头和IP包头携带的信息可参见上述实施例的描述。
输出队列模块(Output_Queue)将打包模块得到的IP数据包整理排队,并将其发往IP层进行查表转发。
(2)实现解码功能的DNCP层模块说明如下:
输入仲裁模块(Input_Arbiter):位于IP层。
由于解码操作只针对DNCP数据包进行,在Input_Arbiter中对传输的数据包进行协议判断,判断IP层接收的IP数据包的载荷是否包含DNCP数据包,例如当IP数据包IP包头协议字段为0X FE(指示该IP数据包的载荷包含DNCP数据包)时,输入仲裁模块传送该IP数据包载荷中的DNCP数据包至DNCP层;若IP数据包的载荷不包含DNCP数据包,则可直接在IP层查表转发。
SRAM_Control和CAM_Control,完成对SRAM和CAM的读写控制。
解码模块(Decoding):在缓存的信息量足够(例如当SRAM中缓存的DNCP数据包达到设定数量时)时进行解码运算。
解码标志模块(Decoded_flag),例如将解码出的原始IP数据包对应的解码标志位置1(或0),表示该原始IP数据包已经被解码。当被解码的数据包对应的解码标志位经查询过之后,则可复位为0(或1)。
输出队列模块(Output_Queue),将解码模块解码后获得的原始IP数据包整理排队,并发往IP层进行查表转发。
需要说明的是,上述举例硬件结构,只是能够实现本发明实施例的编解码功能的众多可能的编解码路由器硬件结构的其中一种,本领域技术人员基于该举例编解码路由器硬件结构,还可获得其它多种编解码路由器硬件结构,此处不再一一赘述。
本发明实施例还介绍在一种具体应用场景下的实施过程。
例如在小区网络中施行,考虑解码操作的困难程度,先只考虑2个信源间的编解码问题。小区树形网络的典型拓扑如附图13所示:
在同一时刻,信源S1和S2想将IP数据包(分别记为P1和P2)发送至同一广播网络。在图中,有2个信源(S1、S2)和10信宿节点DCi(1≤i≤10),很显然,若在中间节点ECj(1≤j≤5)不使用网络编码,则无法使10个信宿节点都能够同时接收到S1和S2的数据(只有部分节点可以),若使用网络编码后,在信宿节点可以通过解方程组,使得每个信宿节点都可以同时得到来自信源S1和S2的数据。
进一步的,考虑小区网络结构相对简单,为了提高解码的概率,消除信源发送数据包的速率差带来的影响,在每个编码路由器上开设一块缓存空间,对从来自该两信源来数据包进行一同步化,这样将编码的情况简单化,提高了解码的概率。其同步机制例如是:
例如在EC路由器DNCP层开辟两块RAM(如72bit×1024),分别顺序存储来自两信源的IP数据包,当其中一块RAM存满时,从最低地址开始同时读出两块RAM中的IP数据包,送至其DNCP层进行编码运算。
编码,S1和S2例如可通过一交换机,将数据包转发给ECj(1≤j≤5),在ECj(1≤j≤5)节点,对输入IP数据包的目的IP地址,输出路径进行判断,若发现是发往同一目的地址的IP数据包,且路由输出有瓶颈(即竞争一条输出通道),则发送至DNCP层进行随机线性编码。DNCP层用一个伪随机数产生模块生成一GF256域内的编码系数矢量,对同时到达(即,到达时间间隔小于设定时长)的两个IP数据包进行线性编码。
然后按要求产生DNCP包头和新的IP包头,新IP包头中,源地址例如为本地IP地址,而目的IP地址为组播地址,IP包头的协议字段为FF。
同时例如可将信源S1定义为1号信源,信源S2定义为2号信源,并将对应的信源标识填入DNCP包头相应字段中。
可以预见,ECj(1≤j≤5)节点编码操作完成后所得到的结果分别是:
ajP1+bjP2(1≤j≤5)。
解码设备采用两块SRAM分别存储从两条输入路径到来的数据包,并可采用CAM作为索引,当收集到一定信息量的数据包时(如32、64个、128个或其它个数),便可开始执行解码运算。以DC1节点为例,若其收到a1P1+b1P2以及a2P1+b2P2两条信息,可采用更有利于硬件实现的克莱默法则进行运算,恢复出信息P1和P2。由于编码时是对整个IP数据包进行编码,故可以直接将解码出的IP数据包(原始IP数据包)进行转发。
由上可见,本实施例提出DNCP来解决两信源间的编解码问题,由于编码设备是对到达间隔小于设定时长且目的地址相同的两个IP数据包进行随机线性编码,这就有利于在一定程度上消除实际网络中的传输延迟及发送速率等不匹配问题的影响;同时,DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及随机选取的编码系数矢量,解码设备可据此快速解码,该编解码机制有利于提高网络编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
参见图14、本发明实施例提供的一种编码设备1400,可包括:
第一接收模块1410,用于接收来自第一信源的第一网际协议IP数据包;
第一编码系数选取模块1420,用于若第一接收模块1410在接收到第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且第一IP数据包和第二IP数据包的目的地址相同,则在有限域中分别为第一IP数据包和第二IP数据包随机选取编码系数矢量;
在实际网络中,第一接收模块1410通常会从不同的链路分别接收来自第一信源和第二信源的IP数据包,当然其也可能从同一链路接收到来自第一信源和第二信源的IP数据包。
在实际应用中,第一编码系数选取模块1420例如可在GF2n中分别为第一IP数据包和第二IP数据包随机选取编码系数矢量,其中,该n的取值范围例如为4至16之间的整数(例如8~16间的整数),或n也可为大于16的整数,n越大,解码概率也就越大。
编码模块1430,用于利用第一编码系数选取模块1420随机选取的编码系数矢量对第一IP数据包和第二IP数据包进行随机线性编码得到第一线性编码数据包;
DNCP封装模块1440,用于将第一线性编码数据包进行DNCP封装得到第一DNCP数据包,第一DNCP数据包的DNCP包头包含第一信源的标识、第二信源的标识、第一IP数据包的标识、第二IP数据包的标识以及与上述编码系数矢量相关的编码系数矢量信息;
IP封装模块1450,用于将DNCP封装模块1440得到的第一DNCP数据包进行IP封装得到第三IP数据包并发送。
其中,第一DNCP数据包的DNCP包头可包含第一信源的标识、第二信源的标识、第一IP数据包的标识、第二IP数据包的标识以及与第一编码系数选取模块1420随机选取的编码系数矢量相关的编码系数矢量信息(其中,与上述编码系数矢量相关的编码系数矢量信息可能是该编码系数矢量本身,或者也可能是将上述编码系数矢量通过特定计算后得到的编码系数矢量信息,而解码设备例如可以通过该特定计算对应的逆运算,还原出该编码系数矢量)。
在实际应用中,第三IP数据包的IP包头中记录的源地址例如与第一IP数据包或第二IP数据包的IP包头中记录的源地址相同,第三IP数据包的IP包头中记录的目的地址例如可与第一IP数据包或第二IP数据包的IP包头中记录的目的地址相同(其中,第一IP数据包和第二IP数据包的IP包头中记录的是同一个目的地址)。此外,第三IP数据包的IP包头中还可包含有DNCP数据包标识(DNCP数据包标识例如可携带在第三IP数据包的IP包头的协议字段,例如可将其协议字段填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第三IP数据包的IP包头包含的DNCP数据包标识,获知第三IP数据包的IP层载荷包含DNCP数据包。
在一种应用场景下,IP封装模块1450还可用于,若第一接收模块1410在接收到第一IP数据包后的设定时长内,没有接收到来自第二信源的与第一IP数据包的目的地址相同的IP数据包,则发送第一IP数据包。
在另一种应用场景下,DNCP封装模块1440还可用于,若第一接收模块1410在接收到第一IP数据包后的设定时长内,没有接收到来自第二信源的与第一IP数据包的目的地址相同的IP数据包,则将第一IP数据包进行DNCP封装得到第二DNCP数据包;
IP封装模块1450还可用于,将第二DNCP数据包进行IP封装得到第四IP数据包并发送,其中,第二DNCP数据包的DNCP包头包含第一信源的标识和第一IP数据包的标识。此时,第四IP数据包的IP包头中记录的源地址可与第一IP数据包的IP包头中记录的源地址相同,第四IP数据包的IP包头中记录的目的地址与第一IP数据包的IP包头中记录的目的地址相同。此外,第四IP数据包的IP包头还可包含有DNCP数据包标识(该DNCP数据包标识例如可携带在第四IP数据包的IP包头的协议字段,例如可将该协议字段填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第四IP数据包的IP包头包含的DNCP数据包标识,获知第四IP数据包的IP层载荷包含DNCP数据包。
可以理解的是,本实施例中的编码设备1400可如上述方法实施例中的编码设备,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
参见图15、本发明实施例提供的一种编码设备1500,可包括:
第二接收模块1510,用于接收第五网际协议IP数据包;
第二编码系数选取模块1520,用于若第二接收模块1510在接收到第五IP数据包后的设定时长内接收到第六IP数据包,且第六IP数据包和第五IP数据包的目的地址相同,且第六IP数据包和第五IP数据包的IP层载荷都包含DNCP数据包,且第六IP数据包的IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与第五IP数据包的IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则在有限域中分别为第五IP数据包和第六IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;
在实际应用中,第二编码系数选取模块1520例如可在伽罗瓦域GF2n中,分别为第五IP数据包和第六IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量,其中,该n的取值范围例如为4至16之间的整数(例如8~16间的整数),或者,n也可为大于16的整数。
编码模块1530,用于利用第二编码系数选取模块1520随机选取的编码系数矢量,对第五IP数据包和第六IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;
DNCP封装模块1540,用于将第二线性编码数据包进行DNCP封装得到第三DNCP数据包,第三DNCP数据包的DNCP包头包含上述两个信源标识、上述两个IP数据包标识以及与编码模块1530随机选取的编码系数矢量相关的编码系数矢量信息;
IP封装模块1550,用于将DNCP封装模块1540得到的第三DNCP数据包进行IP封装得到第七IP数据包并发送。
在实际应用中,第七IP数据包的IP包头中记录的源地址例如与第五IP数据包或第六IP数据包的IP包头中记录的源地址相同,第七IP数据包的IP包头中记录的目的地址例如可与第五IP数据包或第六IP数据包的IP包头中记录的目的地址相同(其中,第五IP数据包和第六IP数据包的IP包头中记录的是同一个目的地址);第七IP数据包的IP包头还可包含有DNCP数据包标识(DNCP数据包标识例如可携带在第七IP数据包的IP包头的协议字段,例如该协议字段可填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第七IP数据包的IP包头包含的DNCP数据包标识,获知第七IP数据包的IP层载荷包含DNCP数据包。
此外,若第二接收模块1510在接收到第五IP数据包后的设定时长内未接收到与其目的地址相同的第六IP数据包,或者,在设定时长接收到的第六IP数据包的IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与第五IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识不同,则IP封装模块1550可发送第五IP数据包。
在一种应用场景下,第二编码系数选取模块1520还可用于,若第二接收模块1510在接收到第五IP数据包后的设定时长内接收到第八IP数据包,且第八IP数据包和第五IP数据包的目的地址相同,且第八IP数据包和第五IP数据包其中一个的IP层载荷包含DNCP数据包,并且另一个IP数据包为通过随机线性编码获得该DNCP数据包载荷的原始IP数据包中的其中一个,则在有限域中分别为该DNCP数据包的载荷和该另一个IP数据包随机选取编码系数矢量;
编码模块1530还可用于,利用第二编码系数选取模块1520在有限域中分别为上述DNCP数据包的载荷和另一个IP数据包随机选取的编码系数矢量,对该DNCP数据包的载荷和该另一个IP数据包进行随机线性编码得到第三线性编码数据包;
DNCP封装模块1540还可用于,将编码模块1530得到的第三线性编码数据包进行DNCP封装得到第四DNCP数据包,第四DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及与第二编码系数选取模块1520随机选取的编码系数矢量相关的编码系数矢量信息,其中,该两个信源标识和两个IP数据包标识与该IP层载荷中的DNCP数据包的DNCP包头所包含的两个信源标识和两个IP数据包标识相同;
IP封装模块1550还可用于,将DNCP封装模块1540得到的第四DNCP数据包进行IP封装得到第九IP数据包并发送。
在实际应用中,第九IP数据包的IP包头中记录的源地址例如与第五IP数据包或第八IP数据包的IP包头中记录的源地址相同,第九IP数据包的IP包头中记录的目的地址例如可与第五IP数据包或第八IP数据包的IP包头中记录的目的地址相同(其中,第五IP数据包和第八IP数据包的IP包头中记录的是同一个目的地址);第九IP数据包的IP包头还可包含有DNCP数据包标识(DNCP数据包标识例如可携带在第九IP数据包的IP包头的协议字段,例如其协议字段可填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第九IP数据包的IP包头包含的DNCP数据包标识,获知第九IP数据包的IP层载荷包含DNCP数据包。
在一种应用场景下,第二编码系数选取模块1520还可用于,若第二接收模块1510在接收到第五IP数据包后的设定时长内接收到第十IP数据包,且第十IP数据包和第五IP数据包的目的地址相同,且第十IP数据包和第五IP数据包的IP层载荷都包含DNCP数据包,且第十IP数据包和第五IP数据包其中一个的IP层载荷中的DNCP数据包的DNCP包头包含两个信源标识和两个IP数据包标识,而另一个的IP层载荷中的DNCP数据包的DNCP包头包含该两个信源标识中的其中一个以及该两个IP数据包标识中的其中一个,则在有限域中分别为第五IP数据包和第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;
编码模块1530还用于,利用第二编码系数选取模块1520在有限域中分别为第五IP数据包和第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取的编码系数矢量,对第五IP数据包和上述第十IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第四线性编码数据包;
DNCP封装模块1540还可用于,将编码模块1530得到的第四线性编码数据包进行DNCP封装得到第五DNCP数据包,其中,该第五DNCP数据包的DNCP包头包含上述两个信源标识、上述两个IP数据包标识以及与第二编码系数选取模块1520在有限域中分别为第五IP数据包和第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取的编码系数矢量相关的编码系数矢量信息;
IP封装模块1550还用于,将DNCP封装模块1540得到的第五DNCP数据包进行IP封装得到第十一IP数据包并发送。
在实际应用中,第十一IP数据包的IP包头中记录的源地址例如与第五IP数据包或第十IP数据包的IP包头中记录的源地址相同,第十一IP数据包的IP包头中记录的目的地址例如可与第五IP数据包或第十IP数据包的IP包头中记录的目的地址相同(其中,第五IP数据包和第十IP数据包的IP包头中记录的是同一个目的地址);第十一IP数据包的IP包头还可包含有DNCP数据包标识(DNCP数据包标识例如可携带在第十一IP数据包的IP包头的协议字段,例如协议字段可填充为FE或其它特定值以指示其IP层载荷包含DNCP数据包),如此,其它网络节点便可直接根据第十一IP数据包的IP包头包含的DNCP数据包标识,获知第十一IP数据包的IP层载荷包含DNCP数据包。
其中,上述有限域例如为伽罗瓦域GF2n,其中,该n的取值范围例如为4至16之间的整数(例如8~16间的整数),或者,n也可为大于16的整数。
可以理解的是,本实施例中的编码设备1500可如上述方法实施例中的编码设备,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
参见图16、本发明实施例提供的一种解码设备1600,可包括:
第三接收模块1610,用于接收IP数据包;
第一存储模块1620,用于当第三接收模块1610接收到的IP数据包的IP层载荷包含DNCP数据包时,将该DNCP数据包存入到缓存区;
第一读取模块1630,用于当存入到缓存区的DNCP数据包达到预设数目时,从该缓存区读取出DNCP数据包;
第二读取模块1640,用于若第一读取模块1630读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含上述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组编码系数矢量相关的编码系数矢量信息。
解码模块1650,用于利用两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。
在实际应用中,解码模块1650例如可运用矩阵相乘、高斯消元法或克莱默法则对读取出的DNCP数据包的载荷进行随机线性解码。
其中,若解码模块1650随机线性解码成功,则解码设备1600可获得来自不同信源的两个原始IP数据包并可发送该原始IP数据包,若解码模块1650随机线性解码失败,则其可丢弃该读取出的DNCP数据包。
在一种应用场景下,解码设备1600还可包括:
第二存储模块,用于在第一存储模块1620将DNCP数据包存入到缓存区后,将该DNCP数据包的索引和该DNCP数据包在上述缓存区中的地址存入到内容可寻址存储器CAM中,其中,该索引包括:该DNCP数据包的DNCP包头中包含的至少一个IP数据包标识。
在一种应用场景下,第三接收模块1610具体用于,分别从第一链路和第二链路接收IP数据包;
第一存储模块1620具体用于,若第三接收模块1610从第一链路接收到的IP数据包的IP层载荷包含DNCP数据包,则将该DNCP数据包存入到第一缓存区;若第三接收模块1610从第二链路接收到的IP数据包的IP层载荷包含DNCP数据包,则将该DNCP数据包存入到第二缓存区;
第一读取模块1630具体用于,当存入到第一缓存区的DNCP数据包达到预设数目和/或存入到第二缓存区的DNCP数据包达到预设数目时,或者,当存入到第一缓存区和第二缓存区的DNCP数据包的总和达到预设数目时,按照预定的读取顺序从第一缓存区读取出DNCP数据包。
在一种应用场景下,第二读取模块1640可具体体用于,若第一读取模块1630从第一缓存区读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识及一组与编码系数矢量相关的编码系数矢量信息,则根据该两个信源标识中的至少一个及该两个IP数据包标识中的至少一个,或,根据该两个IP数据包标识中的至少一个,查找第二缓存区中是否存在其DNCP包头包含上述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则可从该第二缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息。
可以理解的是,本实施例中的解码设备1600可如上述方法实施例中的解码设备,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
参见图17、本发明实施例提供的一种编码设备1700,可包括:IP层模块1710和DNCP层模块1720。
IP层模块1710,用于接收来自第一信源的第一网际协议IP数据包;
DNCP层模块1720,用于若IP层模块在接收到第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且第一IP数据包和第二IP数据包的目的地址相同,则在有限域中分别为第一IP数据包和第二IP数据包随机选取编码系数矢量;利用该编码系数矢量对第一IP数据包和第二IP数据包进行随机线性编码得到第一线性编码数据包;将第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包,其中,第一DNCP数据包的DNCP包头包含第一信源的标识、第二信源的标识、第一IP数据包的标识、第二IP数据包的标识以及与上述编码系数矢量相关的编码系数矢量信息;将第一DNCP数据包进行IP封装得到第三IP数据包;
上述IP层模块还用于,发送上述DNCP层模块得到的第三IP数据包。
在一种应用场景下,IP层模块1710还用于,接收第五网际协议IP数据包;
DNCP层模块1720还用于,若IP层模块1710在接收到第五IP数据包后的设定时长内接收到第六IP数据包,且第六IP数据包和第五IP数据包的目的地址相同,且第六IP数据包和第五IP数据包的IP层载荷都包含双信源网络编码协议DNCP数据包,且第六IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与第五IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则在有限域中分别为第五IP数据包和第六IP数据包IP层载荷中DNCP数据包的载荷随机选取编码系数矢量;利用在有限域中分别为第五IP数据包和第六IP数据包IP层载荷中DNCP数据包的载荷随机选取的上述编码系数矢量,对第五IP数据包和第六IP数据包的IP层载荷中DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;将第二线性编码数据包进行DNCP封装得到第三DNCP数据包,第三DNCP数据包的DNCP包头包含上述两个信源标识、上述两个IP数据包标识以及,与在有限域中分别为第五IP数据包和第六IP数据包IP层载荷中DNCP数据包的载荷随机选取的编码系数矢量相关的编码系数矢量信息;将第三DNCP数据包进行IP封装得到第七IP数据包;
IP层模块1710还用于,发送DNCP层模块1720得到的第七IP数据包。
在一种应用场景下,DNCP层模块1720还可用于,若IP层模块1710在接收到第五IP数据包后的设定时长内接收到第八IP数据包,且第八IP数据包和第五IP数据包的目的地址相同,且第八IP数据包和第五IP数据包其中一个的IP层载荷包含DNCP数据包,并且另一个IP数据包为通过随机线性编码获得该DNCP数据包载荷的原始IP数据包中的其中一个,则在有限域中分别为上述DNCP数据包的载荷和上述另一个IP数据包随机选取编码系数矢量;利用在有限域中分别为上述DNCP数据包的载荷和上述另一个IP数据包随机选取的上述编码系数矢量,对上述DNCP数据包的载荷和上述另一个IP数据包进行随机线性编码得到第三线性编码数据包;将第三线性编码数据包进行DNCP封装得到第四DNCP数据包,第四DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及与上述编码系数矢量相关的编码系数矢量信息,其中,上述两个信源标识和两个IP数据包标识与上述IP层载荷中的DNCP数据包的DNCP包头所包含的两个信源标识和两个IP数据包标识相同;将第四DNCP数据包进行IP封装得到第九IP数据包,
IP层模块1710还用于,发送DNCP层模块1720得到的第九IP数据包。
在一种应用场景下,DNCP层模块1720还可用于,若IP层模块1710在接收到第五IP数据包后的设定时长内接收到第十IP数据包,且第十IP数据包和第五IP数据包的目的地址相同,且第十IP数据包和第五IP数据包的IP层载荷都包含DNCP数据包,且第十IP数据包和第五IP数据包其中一个的IP层载荷中的DNCP数据包的DNCP包头包含两个信源标识和两个IP数据包标识,而另一个的IP层载荷中的DNCP数据包的DNCP包头包含上述两个信源标识中的其中一个以及上述两个IP数据包标识中的其中一个,则在有限域中分别为第五IP数据包和第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;利用在有限域中分别为第五IP数据包和第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取的上述编码系数矢量,对第五IP数据包和第十IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第四线性编码数据包;将第四线性编码数据包进行DNCP封装得到第五DNCP数据包,该第五DNCP数据包的DNCP包头包含上述两个信源标识、上述两个IP数据包标识以及与上述编码系数矢量相关的编码系数矢量信息;将第五DNCP数据包进行IP封装得到第十一IP数据包;
IP层模块1710还可用于,发送DNCP层模块1720得到的第十一IP数据包。
可以理解的是,本实施例中的编码设备1700可如上述方法实施例中的编码设备(例如图11所示硬件结构),其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
参见图17、本发明实施例提供的一种解码设备1800,可包括:IP层模块1810和DNCP层模块1820。
IP层模块1810,用于接收网际协议IP数据包;
DNCP层模块,用于若IP层模块1810接收到的上述IP数据包的IP层载荷包含双信源网络编码协议DNCP数据包,则将该DNCP数据包存入到缓存区;当存入到上述缓存区的DNCP数据包达到预设数目时,从上述缓存区读取出DNCP数据包;若上述读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含上述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;利用上述两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。
IP层模块1810还用于,发送DNCP层模块1820随机线性解码出的第七IP数据包。
可以理解的是,本实施例中的解码设备1800可如上述方法实施例中的解码设备(例如图12所示硬件结构),其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
本发明实施例还提供一种通信系统,包括:
上述实施例中编码设备和/或解码设备。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
综上,本发明实施例提出DNCP来支持两信源间的编解码,由于编码设备是对到达间隔小于设定时长且目的地址相同的两个IP数据包进行随机线性编码,这就有利于在一定程度上消除实际网络中的传输延迟及发送速率等不匹配问题的影响;同时,DNCP数据包的DNCP包头携带两个信源标识、两个IP数据包标识以及与编码系数矢量相关的编码系数矢量信息,这就为编码设备继续多次编码或为解码设备快速解码奠定了基础,而解码设备可据此快速解码,基于DNCP的该机制有利于提高编码在实际网络中的通用性;并且由于是基于网络编码技术来实施,因而能够充分利用网络资源,明显提高网络的吞吐率,达到更高的传输效率。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘或光盘等。
以上对本发明实施例所提供的网络编解码方法及相关设备和通信系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (26)
1.一种编码方法,其特征在于,包括:
接收来自第一信源的第一网际协议IP数据包;
若在接收到所述第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且所述第一IP数据包和所述第二IP数据包的目的地址相同,则在有限域中分别为所述第一IP数据包和所述第二IP数据包随机选取编码系数矢量;
利用所述编码系数矢量对所述第一IP数据包和所述第二IP数据包进行随机线性编码得到第一线性编码数据包;
将所述第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包,其中,所述第一DNCP数据包的DNCP包头包含所述第一信源的标识、所述第二信源的标识、所述第一IP数据包的标识、所述第二IP数据包的标识以及与所述编码系数矢量相关的编码系数矢量信息;
将所述第一DNCP数据包进行IP封装得到第三IP数据包并发送。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若在接收到所述第一IP数据包后的设定时长内,没有接收到来自第二信源的与所述第一IP数据包的目的地址相同的IP数据包,则发送所述第一IP数据包;或将所述第一IP数据包进行DNCP封装得到第二DNCP数据包,将所述第二DNCP数据包进行IP封装得到第四IP数据包并发送,所述第二DNCP数据包的DNCP包头包含所述第一信源的标识和所述第一IP数据包的标识。
3.根据权利要求1所述的方法,其特征在于,所述在有限域中分别为所述第一IP数据包和所述第二IP数据包随机选取编码系数矢量,包括:
在伽罗瓦域GF2n中分别为所述第一IP数据包和所述第二IP数据包随机选取编码系数矢量,其中,所述n的取值范围为8至16之间的整数。
4.根据权利要求1或3所述的方法,其特征在于,
所述第三IP数据包的IP包头中记录的源地址,与所述第一IP数据包或所述第二IP数据包的IP包头中记录的源地址相同,所述第三IP数据包的IP包头中记录的目的地址,与所述第一IP数据包或所述第二IP数据包的IP包头中记录的目的地址相同;
所述第三IP数据包的IP包头还包含有DNCP数据包标识。
5.一种编码方法,其特征在于,包括:
接收第五网际协议IP数据包;
若在接收到所述第五IP数据包后的设定时长内接收到第六IP数据包,且所述第六IP数据包和所述第五IP数据包的目的地址相同,且所述第六IP数据包和所述第五IP数据包的IP层载荷都包含双信源网络编码协议DNCP数据包,且所述第六IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与所述第五IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则在有限域中分别为所述第五IP数据包和所述第六IP数据包IP层载荷中DNCP数据包的载荷随机选取编码系数矢量;
利用所述编码系数矢量对所述第五IP数据包和所述第六IP数据包的IP层载荷中DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;
将所述第二线性编码数据包进行DNCP封装得到第三DNCP数据包,其中,所述第三DNCP数据包的DNCP包头包含所述两个信源标识、所述两个IP数据包标识以及与所述编码系数矢量相关的编码系数矢量信息;
将所述第三DNCP数据包进行IP封装得到第七IP数据包并发送。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若在接收到所述第五IP数据包后的设定时长内接收到第八IP数据包,且所述第八IP数据包和所述第五IP数据包的目的地址相同,且所述第八IP数据包和所述第五IP数据包其中一个的IP层载荷包含DNCP数据包,并且另一个IP数据包为通过随机线性编码获得该DNCP数据包载荷的原始IP数据包中的其中一个,则在有限域中分别为所述DNCP数据包的载荷和所述另一个IP数据包随机选取编码系数矢量;
利用在有限域中分别为所述DNCP数据包的载荷和所述另一个IP数据包随机选取的所述编码系数矢量,对所述DNCP数据包的载荷和所述另一个IP数据包进行随机线性编码得到第三线性编码数据包;
将所述第三线性编码数据包进行DNCP封装得到第四DNCP数据包,所述第四DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及与所述编码系数矢量相关的编码系数矢量信息,其中,所述两个信源标识和两个IP数据包标识与所述IP层载荷中的DNCP数据包的DNCP包头所包含的两个信源标识和两个IP数据包标识相同;
将所述第四DNCP数据包进行IP封装得到第九IP数据包并发送。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若在接收到所述第五IP数据包后的设定时长内接收到第十IP数据包,且所述第十IP数据包和所述第五IP数据包的目的地址相同,且所述第十IP数据包和所述第五IP数据包的IP层载荷都包含DNCP数据包,且所述第十IP数据包和所述第五IP数据包其中一个的IP层载荷中的DNCP数据包的DNCP包头包含两个信源标识和两个IP数据包标识,而另一个的IP层载荷中的DNCP数据包的DNCP包头包含所述两个信源标识中的其中一个以及所述两个IP数据包标识中的其中一个,则在有限域中分别为所述第五IP数据包和所述第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;
利用在有限域中分别为所述第五IP数据包和所述第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取的所述编码系数矢量,对所述第五IP数据包和所述第十IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第四线性编码数据包;
将所述第四线性编码数据包进行DNCP封装得到第五DNCP数据包,该第五DNCP数据包的DNCP包头包含所述两个信源标识、所述两个IP数据包标识以及与所述编码系数矢量相关的编码系数矢量信息;
将所述第五DNCP数据包进行IP封装得到第十一IP数据包并发送。
8.根据权利要求5至7任一项所述的方法,其特征在于,
所述有限域为伽罗瓦域GF2n,该n的取值范围为8至16之间的整数。
9.一种解码方法,其特征在于,包括:
接收网际协议IP数据包;
若接收到的所述IP数据包的IP层载荷包含双信源网络编码协议DNCP数据包,则将该DNCP数据包存入到缓存区;
当存入到所述缓存区的DNCP数据包达到预设数目时,从所述缓存区读取出DNCP数据包;
若所述读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;
利用所述两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述将该DNCP数据包存入到缓存区之后还包括:
将该DNCP数据包的索引和该DNCP数据包在所述缓存区中的地址存入到内容可寻址存储器CAM中,其中,所述索引包括:该DNCP数据包的DNCP包头中包含的至少一个IP数据包标识。
11.根据权利要求9或10所述的方法,其特征在于,包括:
所述接收IP数据包,包括:
分别从第一链路和第二链路接收IP数据包;
所述若接收到的所述IP数据包的IP层载荷包含DNCP数据包,则将该DNCP数据包存入到缓存区,包括:
若从所述第一链路接收到的IP数据包的IP层载荷包含DNCP数据包,将该DNCP数据包存入到第一缓存区;若从所述第二链路接收到的IP数据包的IP层载荷包含DNCP数据包,则将该DNCP数据包存入到第二缓存区;
所述当存入到所述缓存区的DNCP数据包达到预设数目时,从所述缓存区读取出DNCP数据包,包括:
当存入到所述第一缓存区的DNCP数据包达到预设数目和/或存入到所述第二缓存区的DNCP数据包达到预设数目时,或者,当存入到所述第一缓存区和所述第二缓存区的DNCP数据包的总和达到预设数目时,按照预定的读取顺序从所述第一缓存区读取出DNCP数据包。
12.根据权利要求11所述的方法,其特征在于,包括:
所述若所述读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包,包括:
若从所述第一缓存区读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识及一组与编码系数矢量相关的编码系数矢量信息,则根据该两个信源标识中的至少一个及该两个IP数据包标识中的至少一个,或,根据该两个IP数据包标识中的至少一个,查找所述第二缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包。
13.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若所述读取出的DNCP数据包的载荷未经过随机线性编码,则去除该DNCP数据包的DNCP包头得到IP数据包。
14.一种编码设备,其特征在于,包括:
第一接收模块,用于接收来自第一信源的第一网际协议IP数据包;
第一编码系数选取模块,用于若所述第一接收模块在接收到所述第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且所述第一IP数据包和所述第二IP数据包的目的地址相同,则在有限域中分别为所述第一IP数据包和所述第二IP数据包随机选取编码系数矢量;
编码模块,用于利用所述第一编码系数选取模块随机选取的编码系数矢量对所述第一IP数据包和所述第二IP数据包进行随机线性编码得到第一线性编码数据包;
DNCP封装模块,用于将所述第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包,所述第一DNCP数据包的DNCP包头包含所述第一信源的标识、所述第二信源的标识、所述第一IP数据包的标识、所述第二IP数据包的标识以及与所述编码系数矢量相关的编码系数矢量信息;
IP封装模块,用于将所述DNCP封装模块得到的第一DNCP数据包进行IP封装得到第三IP数据包并发送。
15.根据权利要求14所述的编码设备,其特征在于,
所述IP封装模块还用于,若所述第一接收模块在接收到所述第一IP数据包后的设定时长内,没有接收到来自第二信源的与所述第一IP数据包的目的地址相同的IP数据包,则发送所述第一IP数据包;
或,
所述DNCP封装模块还用于,若所述第一接收模块在接收到所述第一IP数据包后的设定时长内,没有接收到来自第二信源的与所述第一IP数据包的目的地址相同的IP数据包,则将所述第一IP数据包进行DNCP封装得到第二DNCP数据包;
所述IP封装模块还用于,将所述第二DNCP数据包进行IP封装得到第四IP数据包并发送,所述第二DNCP数据包的DNCP包头包含所述第一信源的标识和所述第一IP数据包的标识。
16.一种编码设备,其特征在于,包括:
第二接收模块,用于接收第五网际协议IP数据包;
第二编码系数选取模块,用于若所述第二接收模块在接收到第五IP数据包后的设定时长内接收到第六IP数据包,且所述第六IP数据包和所述第五IP数据包的目的地址相同,且所述第六IP数据包和所述第五IP数据包的IP层载荷都包含双信源网络编码协议DNCP数据包,且所述第六IP数据包IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与所述第五IP数据包IP层载荷中的DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则在有限域中分别为所述第五IP数据包和所述第六IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;
编码模块,用于利用所述编码系数选取模块随机选取的编码系数矢量,对所述第五IP数据包和所述第六IP数据包IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;
DNCP封装模块,用于将所述编码模块得到的第二线性编码数据包进行DNCP封装得到第三DNCP数据包,其中,所述第三DNCP数据包的DNCP包头包含所述两个信源标识、所述两个IP数据包标识以及与所述编码系数矢量相关的编码系数矢量信息;
IP封装模块,用于将所述DNCP封装模块得到的第三DNCP数据包进行IP封装得到第七IP数据包并发送。
17.根据权利要求16所述的编码设备,其特征在于,
所述第二编码系数选取模块还用于,若所述第二接收模块在接收到所述第五IP数据包后的设定时长内接收到第八IP数据包,且所述第八IP数据包和所述第五IP数据包的目的地址相同,且所述第八IP数据包和所述第五IP数据包其中一个的IP层载荷包含DNCP数据包,并且另一个IP数据包为通过随机线性编码获得该DNCP数据包载荷的原始IP数据包中的其中一个,则在有限域中分别为所述DNCP数据包的载荷和所述另一个IP数据包随机选取编码系数矢量;
所述编码模块还用于,利用所述第二编码系数选取模块在有限域中分别为所述DNCP数据包的载荷和所述另一个IP数据包随机选取的编码系数矢量,对所述DNCP数据包的载荷和所述另一个IP数据包进行随机线性编码得到第三线性编码数据包;
所述DNCP封装模块还用于,将所述编码模块得到的第三线性编码数据包进行DNCP封装得到第四DNCP数据包,所述第四DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及与所述编码系数矢量相关的编码系数矢量信息,其中,所述两个信源标识和两个IP数据包标识与所述IP层载荷中的DNCP数据包的DNCP包头所包含的两个信源标识和两个IP数据包标识相同;
所述IP封装模块还用于,将所述DNCP封装模块得到的第四DNCP数据包进行IP封装得到第九IP数据包并发送。
18.根据权利要求16所述的编码设备,其特征在于,
第二编码系数选取模块还用于,若所述第二接收模块在接收到所述第五IP数据包后的设定时长内接收到第十IP数据包,且所述第十IP数据包和所述第五IP数据包的目的地址相同,且所述第十IP数据包和所述第五IP数据包的IP层载荷都包含DNCP数据包,且所述第十IP数据包和所述第五IP数据包其中一个的IP层载荷中的DNCP数据包的DNCP包头包含两个信源标识和两个IP数据包标识,而另一个的IP层载荷中的DNCP数据包的DNCP包头包含所述两个信源标识中的其中一个以及所述两个IP数据包标识中的其中一个,则在有限域中分别为所述第五IP数据包和所述第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取编码系数矢量;
所述编码模块还用于,利用所述第二编码系数选取模块在有限域中分别为所述第五IP数据包和所述第十IP数据包IP层载荷中的DNCP数据包的载荷随机选取的编码系数矢量,对所述第五IP数据包和所述第十IP数据包的IP层载荷中的DNCP数据包的载荷进行随机线性编码得到第四线性编码数据包;
所述DNCP封装模块还用于,将所述编码模块得到的第四线性编码数据包进行DNCP封装得到第五DNCP数据包,其中,该第五DNCP数据包的DNCP包头包含所述两个信源标识、所述两个IP数据包标识以及与所述编码系数矢量相关的编码系数矢量信息;
所述IP封装模块还用于,将所述DNCP封装模块得到的所述第五DNCP数据包进行IP封装得到第十一IP数据包并发送。
19.一种编码设备,其特征在于,包括:
IP层模块,用于接收来自第一信源的第一网际协议IP数据包;
DNCP层模块,用于若所述IP层模块在接收到所述第一IP数据包后的设定时长内接收到来自第二信源的第二IP数据包,且所述第一IP数据包和所述第二IP数据包的目的地址相同,则在有限域中分别为所述第一IP数据包和所述第二IP数据包随机选取编码系数矢量;利用该编码系数矢量对所述第一IP数据包和所述第二IP数据包进行随机线性编码得到第一线性编码数据包;将所述第一线性编码数据包进行双信源网络编码协议DNCP封装得到第一DNCP数据包,其中,所述第一DNCP数据包的DNCP包头包含所述第一信源的标识、所述第二信源的标识、所述第一IP数据包的标识、所述第二IP数据包的标识以及与所述编码系数矢量相关的编码系数矢量信息;将所述第一DNCP数据包进行IP封装得到第三IP数据包;
所述IP层模块还用于,发送所述DNCP层模块得到的第三IP数据包。
20.根据权利要求19所述的编码设备,其特征在于,
所述IP层模块还用于,接收第五网际协议IP数据包;
所述DNCP层模块还用于,若所述IP层模块在接收到所述第五IP数据包后的设定时长内接收到第六IP数据包,且所述第六IP数据包和所述第五IP数据包的目的地址相同,且所述第六IP数据包和所述第五IP数据包的IP层载荷都包含双信源网络编码协议DNCP数据包,且所述第六IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识,与所述第五IP数据包的IP层载荷中DNCP数据包的DNCP包头包含的两个信源标识和两个IP数据包标识相同,则在有限域中分别为所述第五IP数据包和所述第六IP数据包IP层载荷中DNCP数据包的载荷随机选取编码系数矢量;利用在有限域中分别为所述第五IP数据包和所述第六IP数据包IP层载荷中DNCP数据包的载荷随机选取的所述编码系数矢量,对所述第五IP数据包和所述第六IP数据包的IP层载荷中DNCP数据包的载荷进行随机线性编码得到第二线性编码数据包;将所述第二线性编码数据包进行DNCP封装得到第三DNCP数据包,所述第三DNCP数据包的DNCP包头包含所述两个信源标识、所述两个IP数据包标识以及,与在有限域中分别为所述第五IP数据包和所述第六IP数据包IP层载荷中DNCP数据包的载荷随机选取的编码系数矢量相关的编码系数矢量信息;将所述第三DNCP数据包进行IP封装得到第七IP数据包;
所述IP层模块还用于,发送所述DNCP层模块得到的第七IP数据包。
21.一种解码设备,其特征在于,包括:
第三接收模块,用于接收网际协议IP数据包;
第一存储模块,用于当所述第三接收模块接收到的IP数据包的IP层载荷包含DNCP数据包时,将该DNCP数据包存入到缓存区;
第一读取模块,用于当存入到缓存区的DNCP数据包达到预设数目时,从所述缓存区读取出DNCP数据包;
第二读取模块,用于若所述第一读取模块读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;
解码模块,用于利用两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码。
22.根据权利要求21所述的解码设备,其特征在于,还包括:
第二存储模块,用于在第一存储模块将DNCP数据包存入到缓存区后,将该DNCP数据包的索引和该DNCP数据包在所述缓存区中的地址存入到内容可寻址存储器CAM中,其中,所述索引包括:该DNCP数据包的DNCP包头中包含的至少一个IP数据包标识。
23.根据权利要求21或22所述的解码设备,其特征在于,
所述第三接收模块具体用于,分别从第一链路和第二链路接收IP数据包;
所述第一存储模块具体用于,若所述第三接收模块从所述第一链路接收到的IP数据包的IP层载荷包含DNCP数据包,则将该DNCP数据包存入到第一缓存区;若所述第三接收模块从所述第二链路接收到的IP数据包的IP层载荷包含DNCP数据包,则将该DNCP数据包存入到第二缓存区;
所述第一读取模块具体用于,当存入到所述第一缓存区的DNCP数据包达到预设数目和/或存入到所述第二缓存区的DNCP数据包达到预设数目时,或者,当存入到所述第一缓存区和所述第二缓存区的DNCP数据包的总和达到预设数目时,按照预定的读取顺序从所述第一缓存区读取出DNCP数据包。
24.根据权利要求23所述的解码设备,其特征在于,
所述第二读取模块具体用于,若所述第一读取模块从所述第一缓存区读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识及一组与编码系数矢量相关的编码系数矢量信息,则根据该两个信源标识中的至少一个及该两个IP数据包标识中的至少一个,或,根据该两个IP数据包标识中的至少一个,查找所述第二缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从所述第二缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息。
25.一种解码设备,其特征在于,包括:
IP层模块,用于接收网际协议IP数据包;
DNCP层模块,用于若所述IP层模块接收到的所述IP数据包的IP层载荷包含双信源网络编码协议DNCP数据包,则将该DNCP数据包存入到缓存区;当存入到所述缓存区的DNCP数据包达到预设数目时,从所述缓存区读取出DNCP数据包;若所述读取出的DNCP数据包的DNCP包头包含两个信源标识、两个IP数据包标识以及一组与编码系数矢量相关的编码系数矢量信息,则查找缓存区中是否存在其DNCP包头包含所述两个信源标识和两个IP数据包标识的另一个DNCP数据包,若存在,则从缓存区读取出该另一个DNCP数据包,其中,该另一个DNCP数据包的DNCP包头还包含另一组与编码系数矢量相关的编码系数矢量信息;利用所述两组编码系数矢量信息对读取出的DNCP数据包的载荷进行随机线性解码;
所述IP层模块还用于,发送所述DNCP层模块随机线性解码出的第七IP数据包。
26.一种通信系统,其特征在于,包括:
如权利要求14至25任一项所述的设备。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110217978.XA CN102916761B (zh) | 2011-08-01 | 2011-08-01 | 编解码方法及相关设备和通信系统 |
PCT/CN2012/079469 WO2013017077A1 (zh) | 2011-08-01 | 2012-08-01 | 编解码方法及相关设备和通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110217978.XA CN102916761B (zh) | 2011-08-01 | 2011-08-01 | 编解码方法及相关设备和通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102916761A CN102916761A (zh) | 2013-02-06 |
CN102916761B true CN102916761B (zh) | 2015-04-15 |
Family
ID=47615008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110217978.XA Active CN102916761B (zh) | 2011-08-01 | 2011-08-01 | 编解码方法及相关设备和通信系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102916761B (zh) |
WO (1) | WO2013017077A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104917702B (zh) * | 2015-06-03 | 2020-04-28 | 香港中文大学深圳研究院 | 一种具有网络编码功能的代数交换系统及其预处理算法 |
CN113965294A (zh) * | 2021-10-22 | 2022-01-21 | 北京灵汐科技有限公司 | 数据包编码方法、数据包解码方法及装置 |
CN116505984A (zh) * | 2022-01-18 | 2023-07-28 | 维沃移动通信有限公司 | 解码方法、设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101325540A (zh) * | 2007-06-11 | 2008-12-17 | 华为技术有限公司 | 提高基于随机网络编码的多播传输效率的方法及装置 |
CN101621353A (zh) * | 2008-07-03 | 2010-01-06 | 华为技术有限公司 | 一种随机线性网络编码的方法、装置和系统 |
CN101667885A (zh) * | 2009-09-29 | 2010-03-10 | 天津大学 | Dtn或icn网络上利用网络编码技术减少冗余消息的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8081641B2 (en) * | 2006-09-27 | 2011-12-20 | Massachusetts Institute Of Technology | Methods and apparatus for network coding |
-
2011
- 2011-08-01 CN CN201110217978.XA patent/CN102916761B/zh active Active
-
2012
- 2012-08-01 WO PCT/CN2012/079469 patent/WO2013017077A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101325540A (zh) * | 2007-06-11 | 2008-12-17 | 华为技术有限公司 | 提高基于随机网络编码的多播传输效率的方法及装置 |
CN101621353A (zh) * | 2008-07-03 | 2010-01-06 | 华为技术有限公司 | 一种随机线性网络编码的方法、装置和系统 |
CN101667885A (zh) * | 2009-09-29 | 2010-03-10 | 天津大学 | Dtn或icn网络上利用网络编码技术减少冗余消息的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102916761A (zh) | 2013-02-06 |
WO2013017077A1 (zh) | 2013-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9137201B2 (en) | Apparatus and methods of routing with control vectors in a synchronized adaptive infrastructure (SAIN) network | |
US7027443B2 (en) | Reassembly engines for multilink applications | |
CN110545241B (zh) | 一种报文处理方法和装置 | |
EP1944925B1 (en) | Group communication in a mobile ad-hoc network | |
CN101188477B (zh) | 一种数据包序列接收的方法及设备 | |
US20100189105A1 (en) | Efficiency Improvement For Shared Communications Networks | |
CN105791169A (zh) | 软件定义网络中交换机转发控制、转发方法及相关设备 | |
CN103795655A (zh) | 数据传输方法及装置 | |
WO2012109910A1 (zh) | 链路聚合选路方法及装置 | |
CN102916761B (zh) | 编解码方法及相关设备和通信系统 | |
CN104158770A (zh) | 一种交换机数据包切分与重组的方法与装置 | |
CN105763375B (zh) | 一种数据包发送方法、接收方法及微波站 | |
CN113438182B (zh) | 一种基于信用的流量控制系统和流量控制方法 | |
CN111917458B (zh) | 一种基于ccsds规范的空间数据处理节点装置 | |
WO2016123975A1 (zh) | 数据传输方法及装置 | |
CN104917702B (zh) | 一种具有网络编码功能的代数交换系统及其预处理算法 | |
CN107426101B (zh) | 一种基于分层的量子簇分片传输方法 | |
JP3672517B2 (ja) | 通信装置 | |
WO2017088489A1 (zh) | 一种数据报文传输方法、系统及通信系统 | |
Chou et al. | Network coding for the internet | |
CN114095418A (zh) | 一种无线光纤混合网络场景下工业物联网数据可靠传输方法 | |
Zhang et al. | A general co/decoder of network coding in hdl | |
CN110582098A (zh) | 基于ZigBee和数据压缩的数字信息传输系统、方法及装置 | |
US5956348A (en) | Method and apparatus for reconstructing LAN frames following transfer through an asynchronous transfer mode system | |
CN107592188A (zh) | 一种ptn承载电路仿真业务无损切换的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210425 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |