基于网络编码的传输控制协议的编译码方法与流程

文档序号:13391449阅读:260来源:国知局

本发明涉及网络编码的传输控制协议(tcp,transmissioncontrolprotocol)领域,特别是一种基于网络编码的传输控制协议的编译码方法。



背景技术:

传输控制协议(tcp)是一种面向连接的、可靠的、基于字节流的传输层通信协议,因其在有线网络场景下能够提供很好的可靠性传输服务,成为了互联网的基础传输协议。在设计之初,tcp协议就是专门针对有线网络设计的,tcp协议将网络中的丢包都认为是网络拥塞所造成的。但是在实际的无线网络应用中,网络中的丢包不仅仅是拥塞导致,更可能是由于无线传输特性不理想所引起的随机丢包。在无线网络中,一旦出现丢包,tcp协议就会把一些由无线链路造成的随机丢包统统归结为网络拥塞造成的,并通过减小拥塞窗口来降低发送速率。事实上,对于无线链路问题引起的非拥塞丢包,tcp协议一味通过降低发送速率并不能解决传输丢包问题。不能区分丢包是因为网络拥塞还是传输不可靠引起的,采用拥塞控制来应传输丢包时传统tcp协议在无线网络条件下传输性能下降的根本原因。因此,在丢包率高的无线网络场景中,如何提高tcp协议的传输性能就显得尤为重要。

网络编码(networkcoding)是由ahlswede等人在2000年提出的,其核心思想是网络中节点对接收到的多个数据分组进行编码融合,然后对编码后的数据进行转发,目的节点可根据编码系数实现译码,从而还原出原始数据,运用网络编码能够提升网络吞吐量,均衡网络负载和提高网络带宽利用率等。2011年,jksundararajan等人在文献“networkcodingmeetstcp:theoryandimplementation”中首先提出了将网络编码应用在tcp协议的一种通信传输协议,该协议能够显著提升在丢包率高的无线网络场景下网络的吞吐率。基于网络编码的传输控制协议(tcp)的核心思想是利用网络编码技术来掩盖数据报文的丢失,尽可能避免触发tcp协议的拥塞控制算法,改善无线网络条件下的传输吞吐率。

在现有的基于网络编码的传输控制协议中,采用的编码方式主要是随机线性网络编码,其编码原理可以看作为如下的的矩阵运算:

其中,pi表示第i个参与编码的原始tcp数据报文,qi表示第i个经过编码之后的编码数据报文,元素aij表示第i个编码数据报文中第j个原始tcp数据报文所对应的编码系数。上述例子是将原始的3个tcp报文编码成4个编码数据报文,其中q4即为冗余编码数据报文。对于接收端,只需保证接收端能够接收到3个编码数据报文并且所涉及的编码系数是线性无关的,则可以恢复原始tcp报文。这个例子较好地说明如何利用网络冗余编码的思想来抵抗网络报文丢失。

在译码端,对接收到的编码数据报文,对于每到达一个编码数据报文,提取其编码系数,然后根据编码系数对相应的编码数据报文执行高斯消元操作,如果此时有原始数据报文被译码,则直接将译码出来的数据报文传递给tcp层。然而,对于随机线性网络编码在传输控制协议中的应用,其主要存在以下问题:

1)在网络编码层,通过随机线性编码方式对原始数据进行编码,考虑到tcp协议是基于字节流的传输协议,其编码系数一般是在有限域gf(28)中随机产生的,假设当前每个编码窗口值为w,tcp数据报文的长度为l字节,则对于产生一个新的编码数据报文,需要进行wl次的有限域乘法和(w-1)l次有限域加法运算,这就增加了发送端的计算复杂度。

2)由于采用随机线性编码,需要在编码数据包的头部添加编码系数,导致编码头部较为复杂,冗余信息较多,降低了传输效率。

3)当采用随机线性编码方式时,接收端在每收到一个编码数据包后,都会执行一次高斯消元,这极大地增加了接收端的译码复杂度。

上述问题使得基于网络编码的传输控制协议实现复杂度较高,不利于实际实现。



技术实现要素:

本发明所要解决的技术问题是提供一种基于网络编码的传输控制协议的编译码方法,降低基于网络编码的传输控制协议的编码和译码复杂度,减少编码头部开销,提高网络的吞吐量。

为解决上述技术问题,本发明采用的技术方案是:

一种基于网络编码的传输控制协议的编译码方法,包括编码方法和译码方法,具体如下:

编码方法

步骤1:在编码端,位于传输控制协议tcp(transmissioncontrolprotocol,传输控制协议)层与网际协议ip(internetprotocol,网际协议)层之间的网络编码层设有一个网络编码缓存区,所述网络编码缓存区存放来自传输控制协议tcp层的数据包,设定初始值n=0,循环执行步骤2,直到传输控制协议tcp层没有数据抵达网络编码层为止;

步骤2:当有新的数据报文从传输控制协议tcp层抵达网络编码缓存区之后,根据传输控制协议tcp头部的字节序号按顺序存放在网络编码缓存区当中;发送端会对最近抵达的w个数据报文进行编码并发送;

编码数据包分为两类,分别为正常编码数据包和冗余编码数据包,冗余编码数据包是为了弥补网络中丢包,发送端额外多发出来的数据包;设定的冗余度r需满足r≥1/(1-pe),其中,pe为网络中实际的丢包率;

发送编码数据报文的具体步骤为:

步骤2.1:每当有新的数据包抵达网络编码缓存区之后,令n=n+r,然后执行操作:如果则构造一个正常编码数据包;如果则构造一个正常编码数据包和个冗余编码数据包,其中,表示向下取整运算;

步骤2.2:构造正常编码数据包和冗余编码数据包

如果传输控制协议tcp报文负载长度不一致,设该w个传输控制协议tcp数据报文中最长的数据报文长度为l,采用补零的方式使所有报文数据长度一致,具体如下:

步骤2.2.1:针对正常编码数据包,将编码缓存区中最近抵达的w个数据包全部进行异或操作,即产生新的编码数据包表示为

其中,pi(i=1,2,...,w)表示第i个就近到达的传输控制协议tcp数据报文;

步骤2.2.2:针对冗余编码数据包,将编码缓存区中最近抵达的w个数据包按如下方式进行编码运算

其中,k是从1~255中随机选取的整数,aik(i=1,2,...,w)为第i个数据包的编码系数,ai是从有限域gf(28)选出的,其加法和乘法运算都是在有限域gf(28)下完成的;

步骤2.3:填充编码头部,编码头部包括源端口、目的端口、编码窗口大小、系数指示位、起始报文的序列号start1,后w-1个原始传输控制协议tcp数据报文的相对序列号start2~startw;

步骤2.4:令将已编码的数据包发送到ip层;

译码方法

步骤1:在译码端,位于在传输控制协议tcp层与网络层之间的网络编码层设有译码缓存区,所述译码缓存区用于存放已收到的编码数据包;构建一个译码矩阵,用于对编码数据包的系数执行高斯消元运算;

步骤2:当有新的数据报文从网际协议ip层抵达网络编码层之后,将编码数据报文存放在译码缓冲区,并检查该数据包是否是用于建立连接的控制报文,如果是,则直接上交给传输控制协议tcp层;否则就执行以下操作:

步骤2.1:根据系数指示位,判断抵达的编码数据报文是正常编码数据包还是冗余编码数据包,若是正常编码数据包,则将其编码系数直接加入到译码矩阵中;若是冗余编码数据包,则判断其所涉及参与编码的原始传输控制协议tcp报文是否被全部译出,若是,则直接将该冗余编码包给丢掉;若否,则将冗余编码数据包的编码系数提取出来并加入到译码矩阵中;

步骤2.2:若有编码系数被添加到译码矩阵中,则根据这些编码系数执行高斯消元,将译码矩阵化成上三角矩阵,判断该编码数据包是否能有益于译出原始传输控制协议tcp数据报文,即判断矩阵的秩是否增加,若该数据包有益于译码,则构造一个应答报文ack(acknowledgement,确认)发送到网际协议ip层,对应的编码数据报文与译码矩阵做相同的操作;

步骤2.3:如果有数据包被译出,则将译码出的数据包立即发送到传输控制协议tcp层;

步骤2.4:根据当前译码矩阵的情况,在译码缓冲区中删除对后续译码操作无用的数据报文,即删除译码矩阵中最早数据包对应序号之前的数据报文。

与现有技术相比,本发明的有益效果是:

1、本发明结合了tcp层滑窗机制的特点,每有一个从tcp层抵达的数据报文都会使编码矩阵的维度增大,因此,对正常的编码数据报文的编码系数都设为1,即异或操作。这样与随机线性编码相比极大降低了编码复杂度,避免了有限域的乘法操作。对于冗余编码数据包,其系数都随机采用范德蒙行列式的某一行,尽可能的使得该数据包的编码系数与译码矩阵中数据包的编码系数是线性无关的。同时,在低丢包率时,降低了译码端的计算复杂度。

2、通过系数指示位,可直接判断接收到的数据报文是正常编码数据包还是冗余编码数据包。若是正常编码数据报文,则直接将其编码系数添加到译码矩阵中。若是冗余编码数据报文,则判断是否冗余编码数据包所涉及到的原始tcp报文被全部译码,若是,则可直接丢弃该冗余编码数据包,这样可以降低译码端的计算量。

3、由于编码系数都是在范德蒙矩阵中选取的某一行,该范德蒙矩阵可以在传输之前就被定义,因此,可以通过系数指示位来代替传统的编码系数,从而节约了编码头部开销。

附图说明

图1是本发明中的编码头部示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明。

本发明方法在网络编码层优化了编码方法,区分了正常数据包还是冗余包,对不同类型的数据报文,采用不同的编码方式,从而降低编码复杂度;在网络层优化编码数据包头部的设计,全面考虑了编码系数和译码所需的参数,缩短了编码头部开销,提高了传输效率;在网络编码层优化了译码算法,使得高斯消元过程更加简单,从而降低了译码复杂度。

在网络编码层区分了所发送的编码数据包是正常编码数据包还是冗余编码数据包,不同的数据包采用不同的编码方式。对于正常的编码数据包采用直接异或的方式实现编码;对于冗余数据报文,其编码系数随机选取自范德蒙矩阵中的某一行,然后根据编码系数利用线性编码方法获得冗余编码数据包。

本发明方法包括编码过程和译码过程,详述如下:

编码过程:

1、在tcp层与ip层之间,添加一个网络编码层,并且设有一个网络编码缓存区,存放来自于tcp层的数据包,设定初始值n=0,循环执行步骤2,直到tcp层没有数据抵达网络编码层为止。

2、当有新的数据报文从tcp层抵达网络编码缓存区之后,根据tcp头部的字节序号按顺序存放在网络编码缓存区当中。发送端会对最近抵达的w个数据报文进行编码并发送。编码数据包分为两类,分别为正常编码数据包和冗余编码数据包,冗余数据包是为了弥补网络中丢包,发送端额外多发出来的数据包。设定的冗余度r需满足r≥1/(1-pe),其中pe为网络中实际的丢包率。

发送编码数据报文的具体步骤为:

1)每当有新的数据包抵达网络编码缓存区之后,令n=n+r,然后执行以下操作:

如果则构造一个正常编码数据包;

如果则构造一个正常编码数据包和个冗余编码数据包;

2)构造正常编码数据包和冗余编码数据包的步骤为:

如果tcp报文负载长度不一致,设该w个tcp数据报文中最长的数据报文长度为l,采用补零的方式使所有报文数据长度一致,具体为:

a)对正常编码数据包:将编码缓存区中最近抵达的w个数据包全部进行异或操作,即产生新的编码数据包表示为

其中,pi表示第i个就近到达的tcp数据报文。

b)对冗余编码数据包:将编码缓存区中最近抵达的w个数据包按如下方式进行编码运算

其中,k是从1~255中随机选取的整数,aik(i=1,2,...,w)为第i个数据包的编码系数,ai是从有限域gf(28)选出的,其加法和乘法运算都是在有限域gf(28)下完成的。

3)填充编码头部;编码头部包括源端口、目的端口、编码窗口大小、系数指示位、起始报文的序列号start1,后w-1个原始tcp数据报文的相对序列号start2~startw。

如下范德蒙矩阵所示,正常编码数据包所填充的系数指示位为0,表示的是该范德蒙矩阵的第一行,即所有参与编码数据包的系数都是1,冗余编码数据包所填充的系数指示位为k,k是从1~255中随机选取的整数,表示其所选的系数为如下范德蒙矩阵第k+1行。

冗余编码数据包的系数正常编码数据包的系数

4)令将已编码的数据包发送到ip层。

译码过程:

1、在tcp层与网络层之间增加一层网络编码层,并且设有译码缓存区,用于存放已收到的编码数据包。同时,构建一个译码矩阵,用于对编码数据包的系数执行高斯消元运算。

2、当有新的数据报文从ip层抵达网络编码层之后,将编码数据报文存放在译码缓冲区,并检查该数据包是否是用于建立连接的控制报文,如果是,则直接上交给tcp层,否则就执行以下操作:

1)根据系数指示位,判断抵达的编码数据报文是正常编码数据包还是冗余编码数据包,若是正常编码数据包,则将其编码系数直接加入到译码矩阵中;若是冗余编码数据包,则判断其所涉及参与编码的原始tcp报文是否被全部译出,若是,则直接将该冗余编码包给丢掉;若否,则将冗余编码数据包的编码系数提取出来并加入到译码矩阵中。

2)若有编码系数被添加到译码矩阵中,则根据这些系数执行高斯消元,将译码矩阵化成上三角矩阵,判断该编码数据包是否能有益于译出原始tcp数据报文,即判断矩阵的秩是否增加,若该数据包有益于译码,则构造一个应答报文ack发送到ip层,对应的编码数据报文与译码矩阵做相同的操作;否则丢掉该数据报文。

3)如果有数据包被译出,则将译码出的数据包立即发送到tcp层。

4)根据当前译码矩阵的情况,在译码缓冲区中删除对后续译码操作无用的数据报文,即删除译码矩阵中最早数据包对应序号之前的数据报文。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1