基于网络编码的传输控制协议的改进方法

文档序号:7862819阅读:249来源:国知局
专利名称:基于网络编码的传输控制协议的改进方法
技术领域
本发明涉及传输控制协议的改进方法。
背景技术
网络编码(Network Coding)是网络通信领域的一项前沿科技,网络编码理论一经提出,就引起了学术界、工业界广泛的关注。网络编码是一种融合编码和路由的信息交换技术,在传统存储转发的路由方法基础上,接收节点对接收的多个数据包进行编码,增加单次传输的信息量,从而提高网络整体性能。网络编码可以广泛应用于Ad Hoc网络(自组织网络),传感器网络、P2P (端到端)内容分发、分布式文件存储和网络安全等领域。TCP (传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP在保证可靠性上,采用超时重传和捎带确认机制。 由于无线链路的网络状况比较差,丢包率比较高,应用传统的TCP协议,需要重传大量的数据包,有时某些数据包已经被信宿收到了,但是从信宿传到信源的ACK (确认字符)传输失败,信源需要重传同样的数据包,浪费了带宽。因此在无线网络中应用TCP协议效果并不好,为了改善TCP协议的质量,在传输层采用网络编码进行数据包的传输。通过在传输层增加一个编码窗口,可以改善网络吞吐量,减少网络传输的次数。

发明内容
为了解决现有技术中问题,本发明提供了一种基于网络编码的传输控制协议的改进方法。一种基于网络编码的传输控制协议的改进方法,包括协议模型和协议描述
协议模型
在传输层,修改TCP协议的反馈机制,提出一种传输层网络编码算法。该算法在传输层增加一个网络编码窗口,即传输层维护两个窗口 TCP窗口和网络编码窗口。网络编码窗口接受TCP窗口数据包将其缓存到缓存区。当网络编码窗口收到若干数据包后,产生指定数目编码数据包,将其传递到网络层。这样明显降低数据包重传的次数,从而提高了网络的吞吐量。编码数据包包括NCheader、TCP header>DATA mixed,其中,NC header为网络编码报头,TCP header为正常的TCP报头,DATA mixed为编码数据;
网络编码报头包括Start、End > Num> Coefficient,其中,Start表示参与编码的原始数据包的起始序列号,End表示参与编码的最后一个原始数据包的下一个数据包的序列号,Num表示这段数据已经发送编码数据包的次数,Coefficient表示编码向量;
二、协议描述
应用联合分块网络编码,定义编码窗口的大小为B,B=m*k,其中m表示数据块分成的小块的个数,k表示每个小块包含的数据包数,每个小块最多传输t次,其中t = n/m,规定η=Β/ρ,ρ为从信源到信宿的丢包率;信源端在网络编码窗口产生一个编码数据包传递给网络层,最终发送到信宿端,当信宿端收到了这个编码数据包,提取NC header,然后,计算编码矩阵的秩,并将秩作为Num域,连同start和end作为ACK的一部分发送出去,作为对刚收到的编码数据包的反馈;当信宿端网络编码窗口某些块的数据包能够解码时,传递给TCP窗口,同时清空网络编码窗口中的数据包,否则继续缓存编码数据包。作为本发明的进一步改进,当传输t次后,某小块仍然不能解码,令这个小块的数据包和下一个小块的数据包一起进行编码,当传输2t次后,如果这两个小块也不能解码,则将前三个小块的数据包一起进行编码,传输3t次,以此类推,直至m个小块也不能进行解码,以后就发送这m个小块的编码数据包。作为本发明的进一步改进,如果某个或某些小块能够解码,解码后,发送下一个数据块,此时,更新数据包序列号,设置Start=end, end = end+m, Num=O,重新发送新的数据块。作为本发明的进一步改进,信源端处理来自信源的数据包,来自接收端的ACK,`计算发送数据包的起始序列号SEQ和Start的差值为Differ ;
1.设置Start= O, End = k, Num = O, k是每个小块包含的数据包数;
2.当如下事件发生时,处理事件,否则,等待;
3.来自TCP源的要发送的数据;
(a)如果是请求连接的控制数据包,把它传递给网络层,继续等待;
(b)如果是要传输的原始数据包,将该原始数据包存储到网络编码窗口的缓存区;
4.如果网络编码窗口的缓存区中的数据包个数η彡End- Start,并且Num〈End-Start-I进行如下操作,否则等待;
(a)生成一个从Start到End的原始数据包的线性组合的编码数据包;
(b)Num++;并将Start、End和Num以及编码系数组成一个编码数据包报头,将该报头附到TCP报头上,作为一个TCP数据包传输到网络层;
5.如果网络编码窗口的缓存区中的数据包个数η彡End-Start,并且Num彡End-Start-I;
(a)Start 不变,End = End+k ;
(b)返回4;
6.如果是来自接收端的ACK,提取出Start,End和Num,查看接收端的系数矩阵的秩
Num;
(a)如果Num〈End- Start将TCP buffer中的序列号为Start + differ的原始数据包清除,返回4;
(b)如果Num = End - Start;
(i)清空网络编码窗口的缓存区中从Start到End的数据包;
(ii)清除TCPbuffer中的序列号为start + differ原始数据包;
(iii)Start = End , End =End + k,返回 4。作为本发明的进一步改进,信宿端
I.如果有来自信宿的ACK;
如果是控制数据包,用于连接管理,则直接传递给网络层,继续等待;2.如果是来自信源的packet;
(a)提取网络编码报头中的Start,End,编码向量;
(b)将编码向量加入到编码矩阵中,求出编码矩阵的秩;
(C)如果编码矩阵的秩不变,丢弃该数据包,同时从编码矩阵中将该数据包的编码系数删除,向信源发送一个ACK;
(d)如果编码矩阵的秩Num增加I; (i)如果Num〈End- Start,将编码数据包的数据部分加入到编码窗口;
(ii)如果Num= End - Start ,将编码数据包的数据部分加入到编码窗口,应用高斯消去法,获得原始数据包,将原始数据包传递给TCP窗口,然后清空编码窗口 ;
(iii)向网络层发送一个ACK,生成的ACK包括序列号和NCheader,其中Num域是编码矩阵的秩。本发明的有益效果是
I.当丢包率固定时,发送不同数目原始数据包,应用TCP和联合分块网络编码的重传数据包分布图,如图3所示可以看出,当丢包率固定时,应用网络编码明显能降低传输的次数。2.当发送节点发送原始数据包数目固定时,发送不同数目原始数据包,应用TCP和联合分块网络编码的重传数据包分布图,如图4所示可以看出,传输固定数目的原始数据包,应用网络编码明显能降低传输的次数。通过上述分析,应用网络编码后,能明显降低数据包重传的次数,从而提高了网络
的吞吐量。


图I是含网络编码窗口的网络模型;
图2是网络编码窗口传输数据模型;
图3是本发明固定丢包率,TCP和网络编码重传数目分布 图4是本发明固定原始数据包,TCP和网络编码重传数目分布图。
具体实施例方式下面结合附图对本发明做进一步说明。对传输层的传输和反馈机制进行了修改,在传输层嵌入了网络编码操作。具体修改如下
在传输层增加一个网络编码窗口(图1),即传输层维护两个窗口 TCP窗口和网络编码窗口。数据由应用层产生,并自上而下传递到TCP窗口,网络编码窗口接受TCP窗口数据包将其缓存到缓存区。当网络编码窗口收到若干(这个数字要根据具体网络环境确定)数据包后,产生指定数目(这个数字要根据具体网络环境确定)编码数据包,将其传递到网络层,直到底层发送。编码后数据包的格式如表I所示
表I编码数据包格式___
|NCheader TCPheader DATA—mixedNC header :网络编码报头;
TCP header :正常的TCP报头;
DATA mixed :编码数据。网络编码报头的格式如表2所示
表2编码数据包报头(NC header) _
[start |End|Num!Coefficient Start表示参与编码的原始数据包的起始序列号; End表示参与编码的最后一个原始数据包的下一个数据包的序列号;
Num表示这段数据已经发送编码数据包的次数;
Coefficient表不编码向量。协议描述
定义编码窗口的大小为B,B=m*k,其中m表示数据块分成的小块的个数,k表示每个小块包含的数据包数。每个小块最多传输t次,其中t = n/m.规定η = Β/ρ,ρ为从信源到信宿的丢包率。当传输t次后,某小块仍然不能解码,我们就让这个小块的数据包和下一个小块的数据包一起进行编码,当传输2t次后,如果这两个小块也不能解码,则将前三个小块的数据包一起进行编码,传输3t次,以此类推,直至m个小块也不能进行解码,以后就发送这m个小块的编码数据包。如果某个或某些小块能够解码,解码后,发送下一个数据块。此时,更新数据包序列号。设置Start=end, end = end+m, Num=O0重新发送新的数据块。信源端在网络编码窗口产生一个编码数据包传递给网络层,通过网络发送到信宿端。当信宿端收到了这个编码数据包,提取NC header,然后,计算编码矩阵的秩,并将秩作为Num域,连同start和end作为ACK的一部分发送出去,作为对刚收到的编码数据包的反馈。当信宿端网络编码窗口某些块的数据包能够解码时,传递给TCP窗口,同时清空网络编码窗口中的数据包。否则继续缓存编码数据包。具体伪代码如下
信源端信源端有两种类型的事件要处理来自信源的数据包,来自接收端的ACK。计算发送数据包的起始序列号(SEQ)和Start的差值为Differ (这是一个变量)。I.设置Start = O, End = k, Num = O, k是每个小块包含的数据包数;
2.当如下事件发生时,处理事件,否则,等待;
3.来自TCP源的要发送的数据;
(a)如果是请求连接的控制数据包,把它传递给网络层,继续等待;
(b)如果是要传输的原始数据包,将该原始数据包存储到网络编码窗口的缓存区;
4.如果网络编码窗口的缓存区中的数据包个数η彡End- Start,并且Num〈End-Start-I进行如下操作,否则等待。(a)生成一个从Start到End的原始数据包的线性组合的编码数据包;
(b)Num++ (这个是自增的意思,就是Num= Num+1);并将Start、End和Num以及编码系数组成一个编码数据包报头,将该报头附到TCP报头上,作为一个TCP数据包传输到网络层;
5.如果网络编码窗口的缓存区中的数据包个数η彡End-Start,并且Num彡End-Start-I;
(a)Start 不变,End = End+k ;
(b)返回4;
6.如果是来自接收端的ACK,提取出Start,End和Num,查看接收端的系数矩阵的秩
Num;
(a)如果Num〈End- Start将TCP buffer中的序列号为Start + differ的原始数据包清除,返回4;
(b)如果Num = End - Start;
(i)清空网络编码窗口的缓存区中从Start到End的数据包;
(ii)清除TCPbuffer中的序列号为start + differ原始数据包;
(iii)Start = End , End =End + k,返回 4; 目宿端
1.如果有来自信宿的ACK;
如果是控制数据包,用于连接管理,则直接传递给网络层,继续等待;
2.如果是来自信源的packet;
(a)提取网络编码报头中的Start,End,编码向量;
(b)将编码向量加入到编码矩阵中,求出编码矩阵的秩;
(C)如果编码矩阵的秩不变,丢弃该数据包,同时从编码矩阵中将该数据包的编码系数删除,向信源发送一个ACK;
(d)如果编码矩阵的秩Num增加I;
(i)如果Num〈End- Start,将编码数据包的数据部分加入到编码窗口;
(ii)如果Num= End - Start ,将编码数据包的数据部分加入到编码窗口,应用高斯消去法,获得原始数据包,将原始数据包传递给TCP窗口,然后清空编码窗口 ;
(iii)向网络层发送一个ACK,生成的ACK包括序列号和NCheader,其中Num域是编码矩阵的秩。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
权利要求
1.一种基于网络编码的传输控制协议的改进方法,其特征在于 在传输层修改TCP协议的反馈机制,增加一个网络编码窗口,即传输层维护两个窗口 TCP窗口和网络编码窗口 ;网络编码窗口接受TCP窗口数据包将其缓存到缓存区,当网络编码窗口收到若干数据包后,产生指定数目编码数据包,将其传递到网络层; 编码数据包包括NC header、TCP header>DATA mixed,其中,NC header为网络编码报头,TCP header为正常的TCP报头,DATA mixed为编码数据; 网络编码报头包括Start、End > Num> Coefficient,其中,Start表示参与编码的原始数据包的起始序列号,End表示参与编码的最后一个原始数据包的下一个数据包的序列号,Num表示这段数据已经发送编码数据包的次数,Coefficient表示编码向量; 编码窗口的大小为B,B=m*k,其中m表示数据块分成的小块的个数,k表示每个小块包含的数据包数,每个小块最多传输t次,其中t = n/m,规定η = Β/ρ,ρ为从信源到信宿的丢包率; 信源端在网络编码窗口产生一个编码数据包传递给网络层,通过网络发送到信宿端,当信宿端收到了这个编码数据包,提取NC header,然后,计算编码矩阵的秩,并将秩作为Num域,连同start和end作为ACK的一部分发送出去,作为对刚收到的编码数据包的反馈; 当信宿端网络编码窗口某些块的数据包能够解码时,传递给TCP窗口,同时清空网络编码窗口中的数据包,否则继续缓存编码数据包。
2.根据权利要求I所述的基于网络编码的传输控制协议的改进方法,其特征在于当传输t次后,某小块仍然不能解码,令这个小块的数据包和下一个小块的数据包一起进行编码,当传输2t次后,如果这两个小块也不能解码,则将前三个小块的数据包一起进行编码,传输3t次,以此类推,直至m个小块也不能进行解码,以后就发送这m个小块的编码数据包。
3.根据权利要求2所述的基于网络编码的传输控制协议的改进方法,其特征在于如果某个或某些小块能够解码,解码后,发送下一个数据块,此时,更新数据包序列号,设置Start=end, end = end+m, Num=O,重新发送新的数据块。
4.根据权利要求I所述的基于网络编码的传输控制协议的改进方法,其特征在于信源端处理来自信源的数据包,来自接收端的ACK,计算发送数据包的起始序列号SEQ和Start的差值为Differ ; 1.设置Start= O, End = k, Num = O, k是每个小块包含的数据包数;
2.当如下事件发生时,处理事件,否则,等待;
3.来自TCP源的要发送的数据; (a)如果是请求连接的控制数据包,把它传递给网络层,继续等待; (b)如果是要传输的原始数据包,将该原始数据包存储到网络编码窗口的缓存区;
4.如果网络编码窗口的缓存区中的数据包个数η彡End- Start,并且Num〈End-Start-I进行如下操作,否则等待; (a)生成一个从Start到End的原始数据包的线性组合的编码数据包; (b)Num++;并将Start、End和Num以及编码系数组成一个编码数据包报头,将该报头附到TCP报头上,作为一个TCP数据包传输到网络层;
5.如果网络编码窗口的缓存区中的数据包个数η彡End-Start,并且Num彡End-Start-1;(a)Start 不变,End = End+k ; (b)返回4;.6.如果是来自接收端的ACK,提取出Start, End和Num,查看接收端的系数矩阵的秩Num; (a)如果Num〈End- Start将TCP buffer中的序列号为Start + differ的原始数据包清除,返回4;(b)如果Num = End - Start; (i)清空网络编码窗口的缓存区中从Start到End的数据包; (ii)清除TCPbuffer中的序列号为start + differ原始数据包;(iii)Start = End , End =End + k,返回 4。 . 5.根据权利要求I所述的基于网络编码的传输控制协议的改进方法,其特征在于信宿端 .1.如果有来自信宿的ACK; 如果是控制数据包,用于连接管理,则直接传递给网络层,继续等待; . 2.如果是来自信源的packet; (a)提取网络编码报头中的Start,End,编码向量; (b)将编码向量加入到编码矩阵中,求出编码矩阵的秩; (C)如果编码矩阵的秩不变,丢弃该数据包,同时从编码矩阵中将该数据包的编码系数删除,向信源发送一个ACK; (d)如果编码矩阵的秩Num增加I; (i)如果Num〈End- Start,将编码数据包的数据部分加入到编码窗口; (ii)如果Num= End - Start ,将编码数据包的数据部分加入到编码窗口,应用高斯消去法,获得原始数据包,将原始数据包传递给TCP窗口,然后清空编码窗口 ; (iii)向网络层发送一个ACK,生成的ACK包括序列号和NCheader,其中Num域是编码矩阵的秩。
全文摘要
本发明提供了一种基于网络编码的传输控制协议的改进方法。在传输层修改了TCP协议的反馈机制,增加一个网络编码窗口,即传输层维护两个窗口TCP窗口和网络编码窗口。数据由应用层产生,并自上而下传递到TCP窗口,网络编码窗口接受TCP窗口数据包将其缓存到缓存区。当网络编码窗口收到若干数据包后,产生指定数目编码数据包,将其传递到网络层,最后底层发送。这样能明显降低数据包重传的次数,从而提高了网络的吞吐量。
文档编号H04L1/16GK102904689SQ20121038909
公开日2013年1月30日 申请日期2012年10月15日 优先权日2012年10月15日
发明者秦阳, 钟晓雄 申请人:哈尔滨工业大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1