CN102291226A - 基于tcp协议的自适应网络传输控制方法和系统 - Google Patents
基于tcp协议的自适应网络传输控制方法和系统 Download PDFInfo
- Publication number
- CN102291226A CN102291226A CN201110258254XA CN201110258254A CN102291226A CN 102291226 A CN102291226 A CN 102291226A CN 201110258254X A CN201110258254X A CN 201110258254XA CN 201110258254 A CN201110258254 A CN 201110258254A CN 102291226 A CN102291226 A CN 102291226A
- Authority
- CN
- China
- Prior art keywords
- loss
- packet
- new
- layer
- network code
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于TCP协议的自适应网络传输控制方法,通过在TCP/IP协议栈中加入全新网络编码层,在该层包头中加入反映数据包丢失等情况的变量,结合改进的冗余系数R更新公式,确保其在起到向TCP层掩盖丢失效果的同时尽可能小,最终提高网络吞吐率和链路利用率。
Description
技术领域
本发明涉及数据通信领域的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α1p1,且对于所有1>k有α1∈Fq,那么可以说这个节点看见了一个包pk。在这里,q是一个索引值大于k的包的线性组合。当在接收端判断看见一个包pk时,可以立即发送这个包对应的ACK回发送端,而不必等到将此包完全解码。“看见包”概念的引入解决了可能因解码时延而造成的ACK应答包不能及时产生发出的缺点,使网络编码理论很好地融入到了TCP协议中。
美国麻省理工学院(MIT)有人提出一种新的NC-TCP协议,即在发送方和接收方的TCP层和IP层间嵌入单独的网络编码层(参见【J.K.Sundararajan, D.Shah, M.Medard, M.Mitzenmacher, and J.Barros “Network Coding Meets TCP,” in IEEE INFOCOM, 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应答包将这些特定变量在接收端和发送端之间传递并更新,并利用这些特定变量在发送端网络编码层调整冗余系数,其中,在发送端,在网络编码层给网络编码包头中加入特定的变量包含:生成编码包的线性系数向量γ和变量pktID,该变量信息被接收端的网络编码层提取,其中,生成编码包的线性系数向量γ被交予解码模块用于原始包的解码;变量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值的差值;利用变量diff_loss_new计算得出新的冗余系数R_new的中间值,即R_new = R_old + diff_loss_new;待发送方根据此时的R_new值发送完相应数目的编码包后重新调整,即R_new = R_old + diff_loss_new / n,这里n表示在一个RTT内发送方发送的数据包个数。
这种动态调整冗余系数的方法,可以增强协议对突发丢失的抵抗力,并在丢失率不断变化的网络环境中,使冗余系数R在不影响掩盖数据包丢失功能的同时,使R值尽可能小,提高网络吞吐率和链路利用率。
根据上述方法,本发明提出一种基于TCP协议的自适应网络传输控制系统,包括发送端和接收端,该系统分别在发送端和接收端的传输层和网络层中间设置了网络编码层,其中:发送端的网络编码层包含的两个传输控制模块:一个传输控制模块用于处理从发送端TCP传输层送来的数据包或者管理链接的包,该传输控制模块给数据包进行网络编码并加入特定的变量在网络编码包头中。加入的特定变量包含:生成编码包的线性系数向量γ和变量pktID,该变量信息被接收端网络编码层的用于处理从发送端传来的编码数据包的传输控制模块提取,其中,所述生成编码包的线性系数向量γ被用于原始包的解码;所述变量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计算得出新的冗余系数R_new的中间值,即R_new = R_old + diff_loss_new;待发送方根据此时的R_new值发送完相应数目的编码包后重新调整,即R_new = R_old + diff_loss_new / n,这里n表示在一个RTT内发送方发送的数据包个数。
接收端的网络编码层同样包含的两个传输控制模块:一个传输控制模块用于处理从接收端TCP传输层送来的ACK包,该模块判断从接收端TCP传输层送来的ACK包是否是将建立链接的控制包,若是则交付给接收端下层网络层,若不是,则将其丢弃并返回等待状态。
另一个传输控制模块用于处理从发送端传来的编码数据包,该模块若收到来自下层网络层交付的数据包,则剥去数据包中的网络编码包头,提取编码系数向量γ和变量pktID,进行解码操作,得到原始包,并生成一个新的添加网络编码包头的ACK应答包,所添加的网络编码包头中包含变量loss和变量pktID,将新生成的ACK应答包交付予下层网络层。
为更清楚地表达本发明的内容,现对本发明的技术方案做进一步详细阐述:在网络传统的TCP/IP协议体系结构中,从上到下分别由应用层、传输层、网络层、数据链路层、物理层组成。为了添加控制处理模块,本发明的技术方案是在发送端和接收端的传输层和网络层中间分别添加了网络编码层,并给编码包和ACK应答包添加包含特定变量的网络编码包头,利用编码包和ACK应答包将这些变量在接收端和发送端之间传递并更新,用以接收实时网络环境参数,并做出相应的处理,进而调整网络传输控制模式,以适应实际网络需要。
在发送端的网络编码层中,本发明将从上一层传输层收集到的数据包统一编码后交给下一层,即网络层(IP层)。其中,在网络编码层中设有特定的网络编码缓冲区,用以接收从传输层中交付的数据包。每一次编码时,将缓冲区中所有的数据包进行线性组合,并添加网络编码包头,生成编码包交付给网络层。
在所述的发送端添加的网络编码包头中包含特定信息用以接收端网络编码层的解码处理以及探测和记录当前网络环境。所述特定信息包括:(1)生成编码包的线性系数向量γ。因为编码包是由编码缓冲区中所有的原始包经由线性组合而成,线性系数向量γ记录每一个原始包前添加的随机系数。(2)变量pktID。用以唯一表示当前编码包的编码序号,等于原始包的最大序号,该值从1开始,与TCP包头中的sequence number无关,作为ACK应答的依据。
在接收端,网络编码层会收到由下层网络层交付的网络编码数据包。当接收到编码包后,网络编码层将剥去编码包中的网络编码包头,提取网络编码包头中的信息,并将此编码包加入解码模块进行解码和“看见包”的判断。若 “看见”新的原始包,则生成相应的ACK交付给下层网络层;若解码出新的原始包,则将这个原始包交付给上层传输层,并在解码矩阵中删除相应的编码包。
在网络编码包头中提取的信息包括:(1)生成编码包的线性系数向量γ。该向量被交予解码模块用于原始包的解码。(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的值,即diff_loss_new = loss – loss_old。 其中loss_old表示上一次调整冗余系数R时,收到的ACK包中loss的值。diff_loss_new则表示相邻两次调整冗余系数R值时,收到ACK包中loss值的差值。进而利用变量diff_loss_new计算得出新的冗余系数R_new的中间值,即R_new = R_old + diff_loss_new;待发送方根据此时的R_new值发送完相应数目的编码包后重新调整,即R_new = R_old + diff_loss_new / n,这里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,并重复执行以下操作└NUM┘次:
1)将编码缓冲区中所有原始数据包进行线性组合编码,生成所需的编码数据包。
2)对编码数据包添加网络编码包头。包头信息包括:(1)生成编码包时的线性系数向量γ。(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)对数据包进行编码操作。(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交付的数据包,则剥去数据包中的网络编码包头,提取出编码系数向量γ和变量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, M.Medard, M.Mitzenmacher, and J.Barros “Network Coding Meets TCP,” in IEEE INFOCOM, 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更新公式所使用的n我们取为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协议拥有更大的吞吐率和对实际传输情况下更好的鲁棒性。
Claims (2)
1.一种基于TCP协议的自适应网络传输控制方法,包括在收发双方TCP/IP协议栈中的发送端和接收端的传输层和网络层中间分别添加网络编码层,在网络编码层中给编码包和ACK应答包添加包含特定变量的网络编码包头,利用编码包和ACK应答包将这些特定变量在接收端和发送端之间传递并更新,并利用这些特定变量在发送端网络编码层调整冗余系数,其特征在于:
在发送端,网络编码层给网络编码包头中加入特定的变量包括:生成编码包的线性系数向量γ和变量pktID,其变量信息被接收端的网络编码层提取,其中,所述生成编码包的线性系数向量γ用于原始包的解码,所述变量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值的差值;利用变量diff_loss_new计算得出新的冗余系数R_new的中间值,即R_new = R_old + diff_loss_new;待发送方根据此时的R_new值发送完相应数目的编码包后重新调整,即R_new = R_old + diff_loss_new / n,这里n表示在一个RTT内发送方发送的数据包个数。
2.一种基于TCP协议的自适应网络传输控制系统,包括发送端和接收端,该系统分别在发送端和接收端的传输层和网络层中间设置了网络编码层,其特征在于:
发送端的网络编码层包含的两个传输控制模块:一个传输控制模块用于处理从发送端TCP传输层送来的数据包或者管理链接的包,该传输控制模块对数据包进行编码并在网络编码包头中加入特定的变量,所述特定变量包含:生成编码包的线性系数向量γ和变量pktID,该变量信息被接收端网络编码层的用于处理从发送端传来的编码数据包的传输控制模块提取,其中,所述生成编码包的线性系数向量γ被用于原始包的解码;所述变量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计算得出新的冗余系数R_new的中间值,即R_new = R_old + diff_loss_new;待发送方根据此时的R_new值发送完相应数目的编码包后重新调整,即R_new = R_old + diff_loss_new / n,这里n表示在一个RTT内发送方发送的数据包个数;
接收端的网络编码层包含的两个传输控制模块:一个传输控制模块用于处理从接收端TCP传输层送来的ACK包,该模块判断从接收端TCP传输层送来的ACK包是否是将建立链接的控制包,若是,则交付给接收端下层网络层,若不是,则将其丢弃并返回等待状态;
另一个传输控制模块用于处理从发送端传来的编码数据包,该模块若收到来自下层网络层交付的数据包,则剥去数据包中的网络编码包头,提取变量pktID,进行解码操作,得到原始包,并生成一个新的添加网络编码包头的ACK应答包,所添加的网络编码包头中包含变量loss和变量pktID,将新生成的ACK应答包交付予下层网络层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110258254 CN102291226B (zh) | 2011-09-02 | 2011-09-02 | 基于tcp协议的自适应网络传输控制方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110258254 CN102291226B (zh) | 2011-09-02 | 2011-09-02 | 基于tcp协议的自适应网络传输控制方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102291226A true CN102291226A (zh) | 2011-12-21 |
CN102291226B CN102291226B (zh) | 2013-07-03 |
Family
ID=45337352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110258254 Expired - Fee Related CN102291226B (zh) | 2011-09-02 | 2011-09-02 | 基于tcp协议的自适应网络传输控制方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102291226B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103152359A (zh) * | 2013-03-25 | 2013-06-12 | 重庆大学 | 一种端到端无线传输控制协议线性网络编码的改进方法 |
CN103259865A (zh) * | 2013-05-23 | 2013-08-21 | 中国科学院计算机网络信息中心 | 一种基于网络编码的自适应dns区文件传输方法和系统 |
CN103391164A (zh) * | 2013-07-19 | 2013-11-13 | 中国人民解放军国防科学技术大学 | 一种基于线性网络编码的报文发送冗余度动态调整方法 |
WO2015074279A1 (zh) * | 2013-11-25 | 2015-05-28 | 北京大学深圳研究生院 | 一种基于udp协议的网络编码及传输方法 |
CN104683070A (zh) * | 2015-03-08 | 2015-06-03 | 西安电子科技大学 | 基于随机线性网络编码的传输控制方法 |
CN107508655A (zh) * | 2017-07-19 | 2017-12-22 | 西南交通大学 | 一种自适应端到端网络编码传输方法 |
CN109639684A (zh) * | 2018-12-17 | 2019-04-16 | 北京微吼时代科技有限公司 | 动态应用带宽的方法及系统 |
CN110024314A (zh) * | 2016-12-02 | 2019-07-16 | 哈曼国际工业有限公司 | 通信方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101394299A (zh) * | 2008-10-13 | 2009-03-25 | 北京邮电大学 | 网络编码与星座叠加编码的结合在移动通信中的应用 |
CN101938334A (zh) * | 2010-09-21 | 2011-01-05 | 上海大学 | 随机网络编码和自动重传请求联合的自适应差错控制方法 |
-
2011
- 2011-09-02 CN CN 201110258254 patent/CN102291226B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101394299A (zh) * | 2008-10-13 | 2009-03-25 | 北京邮电大学 | 网络编码与星座叠加编码的结合在移动通信中的应用 |
CN101938334A (zh) * | 2010-09-21 | 2011-01-05 | 上海大学 | 随机网络编码和自动重传请求联合的自适应差错控制方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103152359B (zh) * | 2013-03-25 | 2016-03-23 | 重庆大学 | 一种端到端无线传输控制协议线性网络编码的改进方法 |
CN103152359A (zh) * | 2013-03-25 | 2013-06-12 | 重庆大学 | 一种端到端无线传输控制协议线性网络编码的改进方法 |
CN103259865A (zh) * | 2013-05-23 | 2013-08-21 | 中国科学院计算机网络信息中心 | 一种基于网络编码的自适应dns区文件传输方法和系统 |
CN103391164A (zh) * | 2013-07-19 | 2013-11-13 | 中国人民解放军国防科学技术大学 | 一种基于线性网络编码的报文发送冗余度动态调整方法 |
CN103391164B (zh) * | 2013-07-19 | 2016-08-10 | 中国人民解放军国防科学技术大学 | 一种基于线性网络编码的报文发送冗余度动态调整方法 |
WO2015074279A1 (zh) * | 2013-11-25 | 2015-05-28 | 北京大学深圳研究生院 | 一种基于udp协议的网络编码及传输方法 |
CN107852398A (zh) * | 2013-11-25 | 2018-03-27 | 北京大学深圳研究生院 | 一种基于udp协议的网络编码及传输方法 |
CN104683070A (zh) * | 2015-03-08 | 2015-06-03 | 西安电子科技大学 | 基于随机线性网络编码的传输控制方法 |
CN110024314A (zh) * | 2016-12-02 | 2019-07-16 | 哈曼国际工业有限公司 | 通信方法和系统 |
CN110024314B (zh) * | 2016-12-02 | 2022-04-19 | 哈曼国际工业有限公司 | 通信方法和系统 |
CN107508655A (zh) * | 2017-07-19 | 2017-12-22 | 西南交通大学 | 一种自适应端到端网络编码传输方法 |
CN107508655B (zh) * | 2017-07-19 | 2020-08-07 | 西南交通大学 | 一种自适应端到端网络编码传输方法 |
CN109639684A (zh) * | 2018-12-17 | 2019-04-16 | 北京微吼时代科技有限公司 | 动态应用带宽的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102291226B (zh) | 2013-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102291226B (zh) | 基于tcp协议的自适应网络传输控制方法和系统 | |
CN102209079A (zh) | 一种基于tcp协议的自适应网络控制传输方法和系统 | |
EP1779606B1 (en) | System and method for higher throughput through a transportation network | |
CN101061659B (zh) | 自适应前向纠错的方法和设备 | |
ES2325317T3 (es) | Metodo y dispositivos para controlar las retransmisiones en el flujo de datos. | |
CN104243096B (zh) | 一种基于喷泉码的深空多文件传输方法 | |
CN102577267B (zh) | 使终端之间的通信高速化的通信装置及通信系统 | |
CN101588597B (zh) | 一种基于Kalman滤波的无线流媒体自适应混合FEC/ARQ控制方法 | |
CN107196746A (zh) | 实时通信中的抗丢包方法、装置和系统 | |
CN101826937B (zh) | 适用于下一代移动互联网的链路层差错控制系统及其方法 | |
CN107342848A (zh) | 一种自适应码流传输方法、装置及设备 | |
CN105450357A (zh) | 编码参数的调整、反馈信息的处理方法及装置 | |
CN107547436A (zh) | 基于网络编码的传输控制协议的编译码方法 | |
CN111314022B (zh) | 一种基于强化学习和喷泉码的屏幕更新传输方法 | |
CN114337928A (zh) | 一种基于arq与fec自适应选择的实时视频传输方法 | |
CN101616316A (zh) | 一种视频数据的发送、接收装置及发送、接收方法 | |
CN102904689A (zh) | 基于网络编码的传输控制协议的改进方法 | |
CN105450969B (zh) | 一种实时视频数据传输方法及电子设备 | |
CN106789427A (zh) | 一种网络传输量计算方法 | |
Su et al. | ORIT: A transport layer protocol design for underwater DTN sensor networks | |
CN100407696C (zh) | Ip传真网关传输报文数据的方法 | |
CN113612580B (zh) | 基于喷泉码编码策略和冗余自适应的屏幕更新传输方法 | |
CN105262643A (zh) | 一种基于td-lte移动网络传输特征的丢包区分方法 | |
CN104219164B (zh) | 基于无线局域网ap的自适应tcp数据流控制系统和方法 | |
CN113507467B (zh) | 一种基于区块链的隐蔽信息传输系统及方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130703 Termination date: 20150902 |
|
EXPY | Termination of patent right or utility model |