基于tcp协议的自适应网络传输控制方法和系统的制作方法

文档序号:7898948阅读:188来源:国知局
专利名称:基于tcp协议的自适应网络传输控制方法和系统的制作方法
技术领域
本发明涉及数据通信领域的TCP协议(TCP transmission Control Protocol), 特别涉及基于网络编码理论的TCP协议的网络传输控制领域。
背景技术
基于网络编码理论的TCP协议(Network Coding TCP,本文后面简称为NC-TCP)提出的算法是利用随机线性编码技术掩盖TCP数据包的丢失,有效提高吞吐量。NC-TCP协议为了引入网络编码技术,对现有的TCP协议进行一些修改。首先,在发送端,发送方发送的不是原始数据包,而是数据包的随机线性组合,每个随机线性组合的系数都是从一个很大的域中随机选取的元素,即使一个已发送的线性组合丢失了,下个成功接收的线性组合仍可使解码顺利完成,这样便可以掩盖TCP数据包的丢失,换句话说,链路的损失对于TCP就像是一个附加的时延,该时延将引起一个新的有效往返时间(RTT)。这里,原来TCP中的超时重传机制已被冗余度R所替代,R表明了发送方执行待发送数据包线性组合的次数。上述RTT在此有新的解释,其代表网络用于可靠传输一个自由度(信息线性组合向量空间的一个新维数,也可以这样理解,自由度表征收到线性组合的个数,当自由度大于等于未知数据包个数时便可利用类似解方程的方法解出所有数据包)所耗费的有效时间,即一个组合从发送方发出到收到接收方确认信号之间的时间。当然,链路损失越多,有效RTT就越大。 选择TCP-Vegas版本与网络编码理论相融合,发送方记下每个线性组合的发送时间,当确认到达时,就与对应的发送时间进行比较以计算RTT。其次,在接收端,引入了 “看见包”的概念。“看见包”机制解释为如果一个节点有足够的信息来计算一个线组合Pk+q,其中q = Σ 1>k Ci1P1,且对于所有l>k有Ci1 e Fq,那么可以说这个节点看见了一个包Pk。在这里,q 是一个索引值大于k的包的线性组合。当在接收端判断看见一个包Pk时,可以立即发送这个包对应的ACK回发送端,而不必等到将此包完全解码。“看见包”概念的引入解决了可能因解码时延而造成的ACK应答包不能及时产生发出的缺点,使网络编码理论很好地融入到了 TCP协议中。美国麻省理工学院(MIT)有人提出一种新的NC-TCP协议,即在发送方和接收方的 TCP层和IP层间嵌入单独的网络编码层(参见J. K. Sundararajan, D. Shah, Μ. Medard, Μ. Mitzenmacher, and J. Barros "Network Coding Meets TCP,,,in IEEE INF0C0M, Apr 2009),其中的操作描述如下
发送模块从TCP源端收到数据包并将它们保存在一个代表编码窗口的编码缓存中,直到收到接收方的确认。发送方在编码窗口中生成并发送数据包的随机线性组合,线性组合系数通过包头来传输。对于编码窗口中的数据包,将进行R次随机线性组合(R是冗余系数,为成功接收概率的倒数,其可能不是整数,故在运算时将向下取整)发送出去。如果R太小,将不足以掩盖数据包的丢失,因此,会出现大量的超时从而导致吞吐量低下;反之,发送速率会受到编码自身速率的限制,也会降低吞吐量,而且发送太多的线性组合也会阻塞网络。当接收模块收到一个线性组合时,模块便从包头中检索出编码系数向量,将其添加到知识空间的基矩阵中,当虚拟队列的长度为零,即发送方知识空间的维数和接收方知识空间的维数之差为零时,便可开始解码,解码使用高斯消元法。一旦解码完成,接收模块就将这些数据包传给TCP。此外,接收方还维持一个存储未解码数据包的线性组合的缓存。 另外,当接收方“看见”某一数据包时,其会通知发送方,发送方便将这一数据包丢弃。上述NC-TCP协议虽然解决了将网络编码理论与TCP协议融合的难题,但由于其思想是通过发送编码冗余包来掩盖传输中的包的丢失,因此需要通过冗余系数R的设置来确定编码冗余包发送的数量。当网络情况较为稳定,丢包率变化不大的情况下,可以通过设置固定最优的冗余系数R (最优冗余系数R等于成功接收率的倒数)来提高网络吞吐量和链路利用率。但在网络情况不明,丢包率经常变化的环境下,固定冗余系数的NC-TCP协议会出现以下两种情况(1)当设置的冗余系数R大于最优冗余系数值时,发送方会发送多余的无用编码冗余包,造成带宽的浪费;(2)当设置的冗余系数R小于最优冗余系数值时,发送方发送的编码冗余包不能很好地掩盖实际包的丢失,造成接收方因信息不足而无法解码出原始包。因此,固定冗余系数值的NC-TCP协议不能很好地适应网络环境不断变化的情况, 特别是受外界干扰影响较大的无线环境的情况。随后提出的SANC-TCP (专利号201110169536. 2)虽然实现了冗余系数R的动态调整,但由于使用较为激进的更新公式故R值明显偏大,虽然在效果上可以掩盖数据包的丢失,但实际上对接收方来说新信息并不多。此外,此前专利中R的更新不够及时,它需要通过一些判断条件在接收到一定数量的ACK时才执行更行,导致发送方无法根据网络的状况及时调整R而导致R偏大。

发明内容
为了改进SANC-TCP协议的上述缺点,本发明提出一种改进的基于TCP协议的自适应网络传输控制方法。本发明还提出一种改进的基于TCP协议的自适应网络传输控制系统,并进行了模拟仿真。本发明的一种基于TCP协议的自适应网络传输控制方法,包括在TCP/IP协议栈中的发送端和接收端的传输层和网络层中间分别添加网络编码层,在网络编码层中给编码包和ACK应答包添加包含特定变量的网络编码包头,利用编码包和ACK应答包将这些特定变量在接收端和发送端之间传递并更新,并利用这些特定变量在发送端网络编码层调整冗余系数,其中,在发送端,在网络编码层给网络编码包头中加入特定的变量包含生成编码包的线性系数向量Y和变量pktID,该变量信息被接收端的网络编码层提取,其中,生成编码包的线性系数向量Y被交予解码模块用于原始包的解码;变量PktID表示参与编码的原始包的最大序号,该值从1开始,与TCP包头中的sequence number无关,作为ACK应答的依据。在接收端,网络编码层给ACK应答包的网络编码包头加入特定的变量loss,loss = PktID - id,该值表示编码包的pktID序号和最新看见的原始包序号id之间的差值,依靠ACK应答包将loss和pktID传回发送端。
5
当发送端的网络编码层收到ACK应答包时,剥去ACK应答包的网络编码包头,提取变量信息PktID和loss。本发明所述在发送端网络编码层调整冗余系数R是指在发送端的网络编码层中还添加了变量R_old,该变量表示当前冗余系数,利用从ACK包头里提取出的loss值计算得出当前发送端网络编码层中变量diff_loss_new的值,S卩diff_loss_new = loss - loss_ old ;其中loSS_old表示上一次调整冗余系数R时收到的ACK包中loss的值,diff_loss_ new表示相邻两次调整冗余系数R值时收到ACK包中loss值的差值;利用变量difT_loSS_ new计算得出新的冗余系数1 _11冊的中间值,即R_new = R_old + diff_loSS_new ;待发送方根据此时的R_new值发送完相应数目的编码包后重新调整,即R_neW = R_old + diff_ loss_new / n,这里η表示在一个RTT内发送方发送的数据包个数。这种动态调整冗余系数的方法,可以增强协议对突发丢失的抵抗力,并在丢失率不断变化的网络环境中,使冗余系数R在不影响掩盖数据包丢失功能的同时,使R值尽可能小,提高网络吞吐率和链路利用率。根据上述方法,本发明提出一种基于TCP协议的自适应网络传输控制系统,包括发送端和接收端,该系统分别在发送端和接收端的传输层和网络层中间设置了网络编码层,其中发送端的网络编码层包含的两个传输控制模块一个传输控制模块用于处理从发送端TCP传输层送来的数据包或者管理链接的包,该传输控制模块给数据包进行网络编码并加入特定的变量在网络编码包头中。加入的特定变量包含生成编码包的线性系数向量Y和变量pktID,该变量信息被接收端网络编码层的用于处理从发送端传来的编码数据包的传输控制模块提取,其中,所述生成编码包的线性系数向量Y被用于原始包的解码;所述变量PktID表示参与编码的原始包的最大序号,该值从1开始,与TCP包头中的 sequence number无关,作为ACK应答的依据。另一个传输控制模块用于处理从接收端传来的ACK应答包,该模块对来自发送端下层网络层传来的ACK应答包剥去网络编码包头,提取包头中的变量pktID,更新冗余系数R值从ACK应答包的网络编码包头中提取变量loss值,利用从ACK包头里提取出的 loss值计算得出当前发送端网络编码层中变量diff_loSS_new的值,即diff_loSS_new = loss - loss_old ;其中loss_old表示上一次调整冗余系数R时收到的ACK包中loss的值,diff_loss_new表示相邻两次调整冗余系数R值时收到ACK包中loss值的差值;利用变量diff_loss_new计算得出新的冗余系的中间值,8卩R_new = R_old + diff_ loss_new ;待发送方根据此时的R_new值发送完相应数目的编码包后重新调整,即R_new = R_old + diff_loss_new / n,这里η表示在一个RTT内发送方发送的数据包个数。接收端的网络编码层同样包含的两个传输控制模块一个传输控制模块用于处理从接收端TCP传输层送来的ACK包,该模块判断从接收端TCP传输层送来的ACK包是否是将建立链接的控制包,若是则交付给接收端下层网络层,若不是,则将其丢弃并返回等待状态。
另一个传输控制模块用于处理从发送端传来的编码数据包,该模块若收到来自下层网络层交付的数据包,则剥去数据包中的网络编码包头,提取编码系数向量Y和变量pktID, 进行解码操作,得到原始包,并生成一个新的添加网络编码包头的ACK应答包,所添加的网络编码包头中包含变量loss和变量pktID,将新生成的ACK应答包交付予下层网络层。
为更清楚地表达本发明的内容,现对本发明的技术方案做进一步详细阐述在网络传统的TCP/IP协议体系结构中,从上到下分别由应用层、传输层、网络层、数据链路层、 物理层组成。为了添加控制处理模块,本发明的技术方案是在发送端和接收端的传输层和网络层中间分别添加了网络编码层,并给编码包和ACK应答包添加包含特定变量的网络编码包头,利用编码包和ACK应答包将这些变量在接收端和发送端之间传递并更新,用以接收实时网络环境参数,并做出相应的处理,进而调整网络传输控制模式,以适应实际网络需要。在发送端的网络编码层中,本发明将从上一层传输层收集到的数据包统一编码后交给下一层,即网络层(IP层)。其中,在网络编码层中设有特定的网络编码缓冲区,用以接收从传输层中交付的数据包。每一次编码时,将缓冲区中所有的数据包进行线性组合,并添加网络编码包头,生成编码包交付给网络层。在所述的发送端添加的网络编码包头中包含特定信息用以接收端网络编码层的解码处理以及探测和记录当前网络环境。所述特定信息包括(1)生成编码包的线性系数向量Y。因为编码包是由编码缓冲区中所有的原始包经由线性组合而成,线性系数向量Y 记录每一个原始包前添加的随机系数。(2)变量pktID。用以唯一表示当前编码包的编码序号,等于原始包的最大序号,该值从1开始,与TCP包头中的sequence number无关,作为 ACK应答的依据。在接收端,网络编码层会收到由下层网络层交付的网络编码数据包。当接收到编码包后,网络编码层将剥去编码包中的网络编码包头,提取网络编码包头中的信息,并将此编码包加入解码模块进行解码和“看见包”的判断。若“看见”新的原始包,则生成相应的 ACK交付给下层网络层;若解码出新的原始包,则将这个原始包交付给上层传输层,并在解码矩阵中删除相应的编码包。在网络编码包头中提取的信息包括(1)生成编码包的线性系数向量Y。该向量被交予解码模块用于原始包的解码。(2)变量pktID。该变量被赋值给接收端网络编码层中的变量PktID。在接收端网络编码层中生成的ACK包也添加了网络编码包头,其中包含的反馈信息用以接收端网络编码层调整控制参数。ACK包的网络编码包头中所包含的信息包括(1) 变量pktID。用以表示导致此ACK包产生的编码包的pktID。(2)变量loss。其中loss值是在解码模块的解码和判断“看见”包过程中产生的,表示编码包的PktID序号和最新看见的原始包序号id之间的差值。具体来说,每生成一个ACK包是因为在解码模块中看见了一个新的原始包。而每一个原始包都有自己唯一的原始序号标识id。在编码包的传输过程中,由于不可避免地存在包的丢失而导致原始包序号标识id总是小于或者等于编码包序号PktID的。而loss值表示这两个序号之间的差值,即loss = pktID - id。它指示了当前在接收端,网络编码层还需要收到多少个线性无关的编码包,才能完全“看见”或者解码出当前在解码模块中存在的原始包。在接收端,网络编码层还可能收到由上层传输层交付下来的原始的ACK包。若该 ACK是一个用于链接管理的控制包,则将它转发给下层网络层;否则,将它丢弃。在发送端,网络编码层除了收到上层传输层传来的原始数据包和管理控制包,还可能收到由下层网络层交付的ACK包。当发送端网络编码层收到ACK包时,剥去ACK包的网络编码包头,提取变量loss,利用从ACK包头里提取出的loss值计算得出当前发送端网络编码层中变量 diff_loss_new 的值,S卩 diff_loss_new = loss - loss_old。其中 loss_ old表示上一次调整冗余系数R时,收到的ACK包中loss的值。diff_loSS_new则表示相邻两次调整冗余系数R值时,收到ACK包中loss值的差值。进而利用变量difT_loSS_new 计算得出新的冗余系数R_new的中间值,即R_new = R_old + diff_loSS_new ;待发送方根据此时的R_new值发送完相应数目的编码包后重新调整,即R_new = R_old + diff_loss_ new / n,这里η表示在一个RTT内发送方发送的数据包个数。至此,在发送端更新冗余系数R过程结束,网络编码层将删去编码缓冲区中已确认的原始包,并将此ACK传递给上层传输层。


结合后面将要给出的描述,以及下述附图,将会对本发明的特点及优势有更透彻的理解。图1是加入网络编码层后系统的TCP/IP协议体系结构。图2是发送端网络编码层操作流程图。图3是接收端网络编码层操作流程图。图4是仿真结构拓扑图。图5是一条TCP-Reno流与一条ESANC-TCP流竞争仿真图。图6是一条ESANC-TCP流与一条ESANC-TCP流竞争仿真图。图7是ESANC-TCP与SANC-TCP及其他常用协议在固定丢失率下的吞吐量仿真示意图。图8是相同网络状况下ESANC-TCP冗余系数与SANC-TCP冗余系数的瞬时值。图9是丢失率时变情况下ESANC-TCP与SANC-TCP瞬时吞吐率仿真示意图。实施方式
在下面的描述中,给出了许多特殊的细节,以提供对于本发明的透彻理解。但是,本领域的熟练技术人员可以看出,本发明的实施并不依赖于这些特殊细节。在其它场合,为了避免引起不必要的混淆,对已有的方法、过程、元件将不再详细描述。自适应网络传输控制系统的具体算法描述和实现过程
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。本发明实施例提供了一种改进的基于TCP协议的自适应网络传输控制方案,在网络传输质量受外界影响较大,网络性能不稳定的无线网络中有其独特的优越性。我们考虑简单的点对点通信。在点对点通信中,每个节点既可以完成发送端的功能,也可以完成接收端的功能。为了把本发明的具体过程描述清楚,我们将一个节点只作为发送端处理,而将与之通信的另一个节点作为接收端处理。参见图1,在发送端,应用层101 产生数据交付给下层传输层102,传输层102添加TCP包头后将数据包交付下层网络编码层 103,编码层103将编码缓冲区中的原始包进行编码并添加网络编码包头后,再将生成的编码包交付给下一层网络层104。之后在发送端网络层104、数据链路层105、物理层106中的数据包处理对于我们的自适应系统来说是透明的。
数据经过网络传输发送至接收端。同样,在接收端中,物理层107、数据链路层 108、网络层109中对数据包的处理对于我们的自适应系统来说也是透明的。在接收端的网络编码层110中,系统对收到的编码包进行解码处理,生成相应的数据应答包ACK交付给下层网络层109。并将解码后得到的原始包交付给上层传输层111,再由传输层111将数据传给应用层112中的特定进程。接收端网络编码层110生成的ACK包经过网络传输传送到发送端。ACK包经物理层106、数据链路层105、网络层104,交付至发送端网络编码层103。在网络编码层103中, 根据收到的ACK包中的信息进行删去编码缓冲区已确认的原始包,更新冗余系数R,更新发送端网络编码层参数等一系列处理,并将剥去网络编码包头后的ACK包交付给上层传输层 102。至此,我们的系统完成了一个特定编码包从发送端传输至接收端,并返回ACK包给接收端的过程。下面,我们对在发送端网络编码层103中的处理过程做一个详细的说明。发送端网络编码层103需要对来自发送端上层传输层102的包以及通过下层网络层104交付的来自接收方的确认包ACK分别做出响应。参见图2,在发送端网络编码层103 具体执行过程步骤如下
200 一开始,当发送端网络编码层103既没有收到来自上层传输层102的包,也没有收到来自下层网络层104交付的ACK应答包时,系统处于等待状态。将编码层中变量NUM初始化为0。201 当有包进入网络编码层103时,系统判断此包的类型,进而执行相对应的操作。202 若收到来自发送端上层传输层102的包,判断此包是否为数据包,或是用于链接管理的控制包。203 如果在步骤202中收到的包是用于网络通信链接管理的控制包,则不做任何处理,直接将此包交付予下层网络层104,并返回等待状态。204 如果在步骤202中收到的包是来自上层传输层102的数据包,且该数据包没有在网络编码层103中的编码缓冲区中,则将这个数据包加入编码缓冲区。205 设置变量NUM = NUM + R,并重复执行以下操作<~匪」次
1)将编码缓冲区中所有原始数据包进行线性组合编码,生成所需的编码数据包。2)对编码数据包添加网络编码包头。包头信息包括(1)生成编码包时的线性系数向量Y。(2)用于唯一指定此编码包序号的变量pktID。3)将生成的编码包传递给下层网络层104。206 设置变量值NUM,即NUM = NUM的小数部分,重新更新R。返回等待状态。207 判断是否收到来自发送端下层网络层104交付的ACK应答包。若否,则继续等待状态。208 若收到ACK应答包,则剥去ACK包中的网络编码包头,提取出包头中存储的变量pktID。从编码缓冲区中删除已确认的包,并将此剥去网络编码包头后的ACK上传给上层传输层102。209 根据步骤208提取出的变量pktID值更新冗余系数R中间值,进入步骤205。总的来说,发送端网络编码层103需要完成的主要工作既是(1)对数据包进行编
9码操作。(2)根据ACK包的信息,自动更新冗余系数R值。通过这些操作,完成本发明提出的自适应网络传输控制方法。在接收端,同样的,网络编码层110需要对两种情况做出处理,即来自接收端上层传输层111交付的ACK包和来自下层网络层109交付的编码数据包。参见图3,在接收端网络编码层110具体执行过程步骤如下
300 当接收端网络编码层110既没有收到来自上层传输层111的ACK包,也没有收到来自下层网络层109的数据包时,系统处于等待状态。301 判断网络编码层110是否收到了来自接收端上层传输层111传来的ACK应答包。302 若在步骤301中判断网络编码层110收到来自上层传输层111传来的ACK应答包,则此时判断此ACK包是否是用于建立链接的控制包。303 若在步骤302中的ACK是用于建立链接的控制包,则将其交付给接收端下层网络层109,并返回等待状态。304:若在步骤302中的ACK不是用于建立链接的控制包,则将其丢弃,并返回等待状态。305 判断接收端网络编码层110是否收到来自下层网络层109交付的数据包。若否,则返回等待状态。306:若收到来自下层网络层109交付的数据包,则剥去数据包中的网络编码包头,提取出编码系数向量Y和变量pktID。307:将该编码向量作为新的一行添加到编码系数矩阵中,对编码系数矩阵进行高斯消元,得到新“看见”包的序号值。308 生成一个新的ACK,它的序号等于新“看见”的原始包的序号。添加网络编码包头,在包头中的信息包括变量loss和变量pktID,其中loss表示当前在接收方还需要多少个线性无关的编码包才能完全解码出所有的原始包;PktID值为收到信源数据包网络编码包头中PktID的值。309 将生成的ACK交付予下层网络层109,并返回等待状态。310 在步骤306中将数据包剥去网络编码包头后,将有效载荷添加到解码缓存中,对缓存中的内容进行高斯消元法操作。311 判断在解码缓存中是否有新的原始包被解码出来。若否,则返回等待状态。312 当在310中有新的原始包被解码出来时,则将它转发给接收端上层传输层, 并将相应载荷从缓存中删除。返回等待状态。总的来说,接收端网络编码层110需要完成的主要工作包括(1)进行解码操作, 得到原始包;(2)生成ACK应答包。至此,本发明实施例构建了一套完整的网络编码的自适应TCP协议。它以MIT 提出的 NC-TCP 协议为基础J. K. Sundararajan, D. Shah, Μ. Medard, Μ. Mitzenmacher, and J. Barros "Network Coding Meets TCP, " in IEEE INF0C0M, Apr 2009,并通过对 SANC-TCP (专利号201110169536.2)中冗余系数R更新公式的改进,在保证不影响掩盖数据包丢失功能的条件下使R尽可能小。所以,采用本发明的方法,我们的新协议可称为 Enhanced Self-Adaptive Network Coding TCP,简称 ESANC-TCP。
仿真结果证明其优越性
我们利用伯克利大学开发的开源仿真工具Network Simulator-2对三种不同的协议 TCP-Vegas、固定冗余系数值R的NC-TCP协议和动态调整R值的SANC-TCP协议在丢失率不同的网络环境中的表现进行了仿真。图4是仿真的拓扑图,它是一个包含8跳,9个节点的网络。我们首先论证了新协议SANC-TCP的公平性。在图4的拓扑中,分别有不同的FTP 应用程序产生的流。其中,从节点0产生的FTP流将发送数据到节点7;从节点1产生的 FTP流将发送数据到节点8,这些流将争用中间的节点和链路。我们设置每条链路的带宽为 1MB,传输时延为10ms,节点容量设为200,TCP接收窗口设置为100个包,每个包的大小设置为1000比特。此外,在仿真过程中R更新公式所使用的η我们取为10。公平性指的是当两条相似的流竞争同一段链路时,他们会得到大致相似的链路利用率。并且,这样的特性不会因为流加入链路时间的不同而改变。我们通过以下两种情况下进行仿真,验证协议的公平性。情况1 一条 TCP-Reno 流与一条 ESANC-TCP 流竞争。情况2 —条SANC-TCP流与另一条SANC-TCP流竞争。仿真结果分别如附图5-6所示,由此证明新协议ESANC-TCP是公平的。接下来,我们讨论在不同的丢失率的网络环境下,SANC-TCP、ESANC-TCP以及 TCP-Reno和TCP-Westwood控制的流的吞吐率表现情况。依然采取如图4所示的拓扑结构, 不过此时每次仿真时,分别只有一条FTP流从节点0发送数据到节点7。并在节点2到节点6 中间的链路中设置了随机丢失模型。图7比较了在不同丢失率情况下,不同协议控制的FTP 流的吞吐率表现。从图中可以看出,当丢失率为0时,FTP流的吞吐率都比较接近理论最优值。但随着丢失率的提高,TCP-Reno和TCP-Westwood流的吞吐率急剧下降,而SANC-TCP 和ESANC-TCP流表现出较好的鲁棒性。并且ESANC-TCP的性能要略高于SANC-TCP。图8表明在相同网络状况下,ESANC-TCP的R值明显优于SANC-TCP,此时R在保证掩盖数据包丢失的前提下,尽可能接近最优值。最后,在实际网络环境中,特别是易受外界干扰的无线网络环境中,丢失率并不是固定不变的,其随时间不断变化并且不可预知,下面模拟丢失率不断变化情况下协议的工作情况,依然采用图4所示的拓扑结构,丢失率和时间的关系如图9所示。ESANC-TCP由于 R的更新相对于SANC-TCP更加及时,故在性能上前者略高于后者。由此可以看出,在应对实际网络中的丢失情况,ESANC-TCP具有更好的抵抗力。由此可见,本发明的所提出的一种改进的基于TCP协议的自适应网络传输控制方法可形成一整套改进的基于网络编码的自适应TCP协议,我们称之为ESANC-TCP协议,以及按照此方法构建的传输控制系统,通过改进调整冗余系数R的方式很好地解决了数据包的丢失问题,相比之前SANC-TCP协议拥有更大的吞吐率和对实际传输情况下更好的鲁棒性。
权利要求
1.一种基于TCP协议的自适应网络传输控制方法,包括在收发双方TCP/IP协议栈中的发送端和接收端的传输层和网络层中间分别添加网络编码层,在网络编码层中给编码包和ACK应答包添加包含特定变量的网络编码包头,利用编码包和ACK应答包将这些特定变量在接收端和发送端之间传递并更新,并利用这些特定变量在发送端网络编码层调整冗余系数,其特征在于在发送端,网络编码层给网络编码包头中加入特定的变量包括生成编码包的线性系数向量Y和变量pktID,其变量信息被接收端的网络编码层提取,其中,所述生成编码包的线性系数向量Y用于原始包的解码,所述变量PktID表示参与编码的原始包的最大序号, 该值从1开始,与TCP包头中的sequence number无关,作为ACK应答的依据;在接收端,网络编码层给ACK应答包的网络编码包头加入特定的变量loss,loss = PktID - id,该值表示编码包的pktID序号和最新看见的原始包序号id之间的差值,依靠 ACK应答包将loss和pktID传回发送端;当发送端的网络编码层收到ACK应答包时,剥去ACK应答包的网络编码包头,提取变量信息 pktID 和 loss ;所述在发送端网络编码层调整冗余系数R是指在发送端的网络编码层中还添加了变量R_old,该变量表示当前冗余系数,利用从ACK包头里提取出的loss值计算得出当前发送端网络编码层中变量diff_loss_new的值,即diff_loss_new = loss - loss_old ;其中 loss_old表示上一次调整冗余系数R时收到的ACK包中loss的值,diff_loss_new表示相邻两次调整冗余系数R值时收到ACK包中loss值的差值;利用变量difT_loSS_new计算得出新的冗余系数R_new的中间值,即R_new = R_old + diff_loSS_new ;待发送方根据此时值发送完相应数目的编码包后重新调整,即R_neW = R_old + diff_loss_new / n,这里η表示在一个RTT内发送方发送的数据包个数。
2.一种基于TCP协议的自适应网络传输控制系统,包括发送端和接收端,该系统分别在发送端和接收端的传输层和网络层中间设置了网络编码层,其特征在于发送端的网络编码层包含的两个传输控制模块一个传输控制模块用于处理从发送端TCP传输层送来的数据包或者管理链接的包,该传输控制模块对数据包进行编码并在网络编码包头中加入特定的变量,所述特定变量包含生成编码包的线性系数向量Y和变量pktID,该变量信息被接收端网络编码层的用于处理从发送端传来的编码数据包的传输控制模块提取,其中,所述生成编码包的线性系数向量Y被用于原始包的解码;所述变量 pktID表示参与编码的原始包的最大序号,该值从1开始,与TCP包头中的sequence number 无关,作为ACK应答的依据;另一个传输控制模块用于处理从接收端传来的ACK应答包,该模块对来自发送端下层网络层传来的ACK应答包剥去网络编码包头,提取变量loss值,利用从ACK包头里提取出的loss值计算得出当前发送端网络编码层中变量diff_loSS_new的值,即diff_loSS_new =loss - loss_old ;其中loss_old表示上一次调整冗余系数R时收到的ACK包中loss 的值,diff_loss_new表示相邻两次调整冗余系数R值时收到ACK包中loss值的差值;利用变量diff_loSS_new计算得出新的冗余系数1 _11冊的中间值,即R_new = R_old + diff_ loss_new ;待发送方根据此时的R_neW值发送完相应数目的编码包后重新调整,即R_new = R_old + diff_loss_new / n,这里η表示在一个RTT内发送方发送的数据包个数;接收端的网络编码层包含的两个传输控制模块一个传输控制模块用于处理从接收端 TCP传输层送来的ACK包,该模块判断从接收端TCP传输层送来的ACK包是否是将建立链接的控制包,若是,则交付给接收端下层网络层,若不是,则将其丢弃并返回等待状态;另一个传输控制模块用于处理从发送端传来的编码数据包,该模块若收到来自下层网络层交付的数据包,则剥去数据包中的网络编码包头,提取变量pktID,进行解码操作,得到原始包,并生成一个新的添加网络编码包头的ACK应答包,所添加的网络编码包头中包含变量loss和变量pktID,将新生成的ACK应答包交付予下层网络层。
全文摘要
一种基于TCP协议的自适应网络传输控制方法,通过在TCP/IP协议栈中加入全新网络编码层,在该层包头中加入反映数据包丢失等情况的变量,结合改进的冗余系数R更新公式,确保其在起到向TCP层掩盖丢失效果的同时尽可能小,最终提高网络吞吐率和链路利用率。
文档编号H04L29/06GK102291226SQ20111025825
公开日2011年12月21日 申请日期2011年9月2日 优先权日2011年9月2日
发明者周敬邦, 张华宇, 李挥, 樊旭东, 潘凯, 陈畅民 申请人:北京大学深圳研究生院, 李挥
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1