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

文档序号:7701370阅读:122来源:国知局
专利名称:一种基于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>kalPl,且对于所有1 > k有α工e Fq,那么可以说这个节点看见了一个包Pk。在这里,q是一个索引值大于k的包的线性组合。当在接收端判断看见一个包Pk时,可以立即发送这个包对应的ACK回发送端,而不必等到将此包完全解码。“看见包”概念的引入解决了可能因解码时延而造成的ACK应答包不能及时产生发出的缺点,使网络编码理论很好地融入到了 TCP协议中。NC-TCP协议中还引入了节点知识和虚拟队列的概念。所谓节点知识就是一个节点所能计算的收到所有原始数据包的线性组合的集合,同时这些线性组合的系数向量所形成的向量空间称作该节点的知识空间。虚拟队列的个数等于接收方的个数,第j条虚拟队列的长度被定义为发送方知识空间的维数和第j个接收方知识空间的维数之差。所有思想在现有的TCP协议上的实现需要尽可能采用一种非强加的方式,因而美国麻省理工学院(MIT)有人提出一种新的NC-TCP协议,即在发送方和接收方的 TCP层和IP层间嵌入单独的网络编码层(参见J. K. Sundararajan, D. Shah, Μ. Medard, Μ. Mitzenmacher, and J. Barros "Network Coding Meets TCP, ,, in IEEE INF0C0M, Apr2009),其中的操作描述如下
发送模块从TCP源端收到数据包并将它们保存在一个代表编码窗口的编码缓存中,直到收到接收方的确认。发送方在编码窗口中生成并发送数据包的随机线性组合,线性组合系数通过包头来传输。对于编码窗口中的数据包,将进行R次随机线性组合(R是冗余系数,为成功接收概率的倒数,其可能不是整数,故在运算时将向下取整)发送出去。如果R太小,将不足以掩盖数据包的丢失,因此,会出现大量的超时从而导致吞吐量低下;反之,发送速率会受到编码自身速率的限制,也会降低吞吐量,而且发送太多的线性组合也会阻塞网络。当接收模块收到一个线性组合时,模块便从包头中检索出编码系数向量,将其添加到知识空间的基矩阵中,当虚拟队列的长度为零,即发送方知识空间的维数和接收方知识空间的维数之差为零时,便可开始解码,解码使用高斯消元法。一旦解码完成,接收模块就将这些数据包传给TCP。此外,接收方还维持一个存储未解码数据包的线性组合的缓存。 另外,当接收方“看见”某一数据包时,其会通知发送方,发送方便将这一数据包丢弃。上述NC-TCP协议虽然解决了将网络编码理论与TCP协议融合的难题,但由于其思想是通过发送编码冗余包来掩盖传输中的包的丢失,因此需要通过冗余系数R的设置来确定编码冗余包发送的数量。当网络情况较为稳定,丢包率变化不大的情况下,可以通过设置固定最优的冗余系数R (最优冗余系数R等于成功接收率的倒数)来提高网络吞吐量和链路利用率。但在网络情况不明,丢包率经常变化的环境下,固定冗余系数的NC-TCP协议会出现以下两种情况(1)当设置的冗余系数R大于最优冗余系数值时,发送方会发送多余的无用编码冗余包,造成带宽的浪费;(2)当设置的冗余系数R小于最优冗余系数值时,发送方发送的编码冗余包不能很好地掩盖实际包的丢失,造成接收方因信息不足而无法解码出原始包。因此,固定冗余系数值的NC-TCP协议不能很好地适应网络环境不断变化的情况, 特别是受外界干扰影响较大的无线环境的情况。

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


结合后面将要给出的描述,以及下述附图,将会对本发明的特点及优势有更透彻的理解。图1是加入网络编码层后系统的TCP/IP协议体系结构。图2是发送端网络编码层操作流程图。图3是接收端网络编码层操作流程图。图4是仿真结构拓扑图。图5是一条TCP-Vegas流同一条SANC-TCP流竞争仿真图。图6是一条SANC-TCP流同另一条SANC-TCP流竞争仿真图。图7是五条SANC-TCP流竞争一段链路仿真图。
图8是三个协议在不同丢失率下的吞吐率仿真示意图。图9是NC-TCP协议与SANC-TCP协议在不同丢失率下的吞吐率仿真示意图。图10是突发丢失情况下三种协议的瞬时吞吐率仿真示意图。
实施方式
在下面的描述中,给出了许多特殊的细节,以提供对于本发明的透彻理解。但是,本领域的熟练技术人员可以看出,本发明的实施并不依赖于这些特殊细节。在其它场合,为了避免引起不必要的混淆,对已有的方法、过程、元件将不再详细描述。1自适应网络传输控制系统的具体算法描述和实现过程
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。本发明实施例提供一种基于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中的编码缓冲区中,则将这个数据包加入编码缓冲区。并设置变量NUM =NUM + R0 205 重复执行以下操作NUM次
1)将编码缓冲区中所有原始数据包进行线性组合编码,生成所需的编码数据包。2)对编码数据包添加网络编码包头。包头信息包括(1)生成编码包时的线性系数向量Y。(2)用于唯一指定此编码包序号的变量pktID。3)将生成的编码包传递给下层网络层104。206 设置变量值NUM,即NUM = NUM的小数部分。返回等待状态。207 判断是否收到来自发送端下层网络层104交付的ACK应答包。若否,则继续等待状态。208 若收到ACK应答包,则剥去ACK包中的网络编码包头,提取出包头中存储的变量 echo_pktID。209 根据步骤208提取出的变量ech0_pktID值判断此时是否应该更新冗余系数 R 值。若 echo_pktID 等于 W + 10*R_old 或者 echo_pktID 第一次大于 W + 10*R_old,则开始更新冗余系数R值,进入步骤211。否则,不进行更新,直接进入步骤210。210 从编码缓冲区中删除已确认的包,并将此剥去网络编码包头后的ACK上传给上层传输层102。结束发送端网络编码层103处理过程,返回等待状态。211 从ACK的网络编码包头中提取出变量loss值,并利用其计算出当前diff_ loss_new 的值,艮口 diff_loss_new = loss - loss_old。其中,loss_old 为上一次更新冗余系数R值时,相应ACK包中提取出的loss值。212 更新冗余系数 R 的值,即R_new = R_old + 2*(diff_loss_new/10) + (diff_loss_old/10)。其中diff_loss_old表示上一次调整冗余系数时得出的diff_loss_ new的值。213 更新存储在发送端网络编码层中的变量值,S卩R_neW = R_old + 2*(diff_ loss_new/10) + (diff_loss_old/10)。其中 diff_loss_old 表示上一次调整冗余系数 R 时得出的diff_loSS_new的值。更新完毕后,进入步骤210。总的来说,发送端网络编码层103需要完成的主要工作既是(1)对数据包进行编码操作。(2)根据ACK包的信息,自动更新冗余系数R值。通过这些操作,完成本发明提出的自适应网络传输控制方法。在接收端,同样的,网络编码层110需要对两种情况做出处理,即来自接收端上层传输层111交付的ACK包和来自下层网络层109交付的编码数据包。参见图3,在接收端网络编码层110具体执行过程步骤如下
300 当接收端网络编码层110既没有收到来自上层传输层111的ACK包,也没有收到
10来自下层网络层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和变量ech0_pktID,其中loss表示当前在接收方还需要多少个线性无关的编码包才能完全解码出所有的原始包;ech0_pktID值等于收到信源数据包网络编码包头中PktID的值。309 将生成的ACK交付予下层网络层09,并返回等待状态。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,提出自适应理论,通过在发送端网络编码层收集实时信息,动态调整冗余系数R来改进固定冗余系数R的 NC-TCP协议在不稳定网络环境的传输性能。所以,采用本发明的方法,我们的新协议可称为 Self-Adaptive Network Coding TCP,简称 SANC-TCP。
2仿真结果证明其优越性
我们利用伯克利大学开发的开源仿真工具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接收窗口设置为40个包,每个包的大小设置为1000比特。Vegas参数α、β和Y分别被设置为观、30和2。公平性指的是当两条相似的流竞争同一段链路时,他们会得到大致相似的链路利用率。并且,这样的特性不会因为流加入链路时间的不同而改变。众所周知,TCP-Vegas协议的公平性取决于变量α和β, 这两个变量选取的值不同可以使TCP-Vegas协议成为公平或者不公平的协议。在我们的仿真过程中,我们首先选取一组特定的α和β值(即α取观,β取30),使其确保在未加入我们的机制之前,TCP-Vegas是公平的。接着,在我们的新协议ARNC-TCP中,我们选取相同的α和β值,在以下三种情况下进行仿真,验证协议的公平性。情况 1 一条 TCP-Vegas 流同一条 SANC-TCP 流竞争。
情况2 —条SANC-TCP流同另一条SANC-TCP流竞争。情况3 五条SANC-TCP流同时竞争一段链路。仿真结果分别如附图5-7所示,由此证明当选取合适的α值和β值时,我们的新协议SANC-TCP是公平的协议。接下来,我们讨论在不同的丢失率的网络环境下,TCP-Vegas协议、NC-TCP协议、 SANC-TCP协议控制的流的吞吐率表现情况。依然采取如图3所示的拓扑结构,不过此时每次仿真时,分别只有一条FTP流从节点0发送数据到节点7。并在节点2到节点6中间的链路中设置了随机丢失模型。图8比较了在不同丢失率情况下,三个协议控制的FTP流的吞吐率表现。需要说明的是,对于NC-TCP协议,在不同丢失率情况下,我们都人为将其冗余系数R设置为最优值。如在丢失率为20%的环境下,设置R值为1/(1-20%) =1.25。从图8 可以看出,当丢失率为0时,三个协议控制的FTP流的吞吐率都接近理论最优值。但随着丢失率的提高,TCP-Vegas流的吞吐率急剧下降,而将R值设置为最优值的NC-TCP流和我们的SANC-TCP流表现出很好的鲁棒性,即使丢失率增大到45%,其吞吐量也接近信道的理论最优值。而SANC-TCP流的吞吐率还略高于将R值设置为最优值的NC-TCP流的吞吐率。在图8中,相对于每一个丢失率,我们都将NC-TCP流中的R值设置成为了其对应的最优值。依然采用图4所示的拓扑结构,我们考虑这样一种情况。即将NC-TCP流的R值固定为1. 11,在丢失率在10%到45%变化情况下,比较NC-TCP流和SANC-TCP流的吞吐率情况。从图9可以看出,当丢失率为10%时,NC-TCP流的R值处在最优情况,其获得的吞吐率和 SANC-TCP流大致相同。但随着丢失率的增加,由于NC-TCP流发送的冗余包数量无法掩盖包的丢失,造成接收端不能解码以及大量的超时重传等待,导致吞吐率急剧下降。而SANC-TCP 流则表现出很好的鲁棒性,证明其在丢失率不断变化的网络环境中有明显的优势。另外,若网络环境丢失率小于10%,此时的NC-TCP流会发送大量多余的冗余包,造成网络带宽的浪费;而SANC-TCP流则会及时调低R值,保证网络的高效利用。最后,在实际网络环境中,特别是易受外界干扰的无线网络环境中,突发丢失是一种很常见的情况。如何在突发丢失的情况下,依然保持网络的畅通,以及如何在网络恢复正常状态后迅速提高吞吐率是一个重要的课题。图10即是对这样情况的仿真结果。依然采用图4所示的拓扑结构,NC-TCP流的R值固定为1. 11。在0.6秒时,中间链路的丢失率保持在10% ;在500秒时,由于出现未知突发状况,链路丢失率突然升至30%,直到600秒时才重新恢复到丢失率为10%,直至仿真结束。从图10可以看出,在500秒之前,NC-TCP流和 ARNC-TCP流都在链路理论极限吞吐率0. 9Mbs上下浮动。但当到500秒时,链路丢失突然提高到30%,NC-TCP流和TCP-Vegas流的瞬时吞吐率都急速下降,几乎降至0,而ARNC-TCP流依然保持很好的特性,在链路理论极限吞吐率0. 7Mbs上下浮动。由此可以证明,在应对实际网络中常常出现的突发丢失情况,我们的ARNC-TCP协议相对于其他两种协议有更好的抵抗力。保证了即使出现上述突发状况,也能获得较高的网络链路利用率。
由此可见,本发明的所提出的基于TCP协议的自适应网络控制传输方法可形成一套完整的基于网络编码的自适应TCP协议,即我们称之为SANC-TCP协议,以及按照此方法构建的控制传输系统通过发送冗余包并动态调整冗余系数R很好地解决了数据包的丢失问题。该设计对于之前协议栈的改动很小,能够将网络编码理论与TCP协议很好地结合,相比普通NC-TCP协议拥有更大的吞吐率和对突发性丢失更好的鲁棒性。
权利要求
1.一种基于TCP协议的自适应网络控制传输方法,包括在网络传统的TCP/IP协议体系结构中的发送端和接收端的传输层和网络层中间分别添加网络编码层,其特征在于在网络编码层中给编码包和ACK应答包添加包含特定变量的网络编码包头,利用编码包和ACK 应答包将所述特定变量在接收端和发送端之间传递并更新,并利用所述特定变量在发送端网络编码层调整冗余系数。
2.根据权利要求1所述的基于TCP协议的自适应网络控制传输方法,其特征在于所述给编码包和ACK应答包添加包含特定变量的网络编码包头,利用编码包和ACK应答包将这些变量在接收端和发送端之间传递并更新,是按照如下方法进行在发送端,在网络编码层给网络编码包头中加入特定的变量包括生成编码包的线性系数向量Y和变量pktID,该变量信息被接收端的网络编码层提取,其中,所述生成编码包的线性系数向量Y被交予解码模块用于原始包的解码,所述变量PktID被赋值给接收端网络编码层中的变量echo_pktID ;在接收端,在网络编码层给ACK应答包的网络编码包头加入特定的变量包括变量 echo_pktID和变量loss,loss = pktID - id,其中echo_pktID用以表示导致此ACK包产生的编码包的唯一编码序号,loss值表示编码包的pktID序号和最新看见的原始包序号id 之间的差值,依靠ACK应答包将这两个变量传回发送端;当发送端的网络编码层收到ACK应答包时,剥去ACK应答包的网络编码包头,提取变量信息 echo_pktID 禾口 loss ;所述在发送端网络编码层调整冗余系数R是指在发送端的网络编码层中还添加了如下变量R_old表示当前冗余系数;W表示上一次调整冗余系数R值时ech0_pktID的理论最小值,若echo_pktID满足等于或者第一次大于W + 10*R_old值这两个条件之一时,则进行调整冗余系数R值利用从ACK包头里提取出的loss值计算得出当前发送端网络编码层中变量diff_ loss—new 的值,艮P diff—loss—new = loss - loss_old ;其中 loss_old表示上一次i周整冗余系数R时收到的ACK包中loss的值,diff_loss_new表示相邻两次调整冗余系数R值时收到ACK包中loss值的差值;利用变量diff_loSS_new计算得出新的冗余系数R_new的值,即 R_new = R_old+2* (diff_loss_new/10) + (diff_loss_old/10);其中 diff_loss_old 表示上一次调整冗余系数R时得出的diff_loSS_new的值;更新发送端网络编码层中的参数变量,艮口 R_old = R_new, loss_old = loss, diff_loss_old = diff_loss_new, W = W + 10*R_newo
3.一种基于TCP协议的自适应网络控制传输系统,包括发送端和接收端,该系统分别在发送端和接收端的传输层和网络层中间设置了网络编码层,其特征在于发送端的网络编码层包含的两个控制传输模块一个模块用于处理从发送端TCP传输层送来的数据包或者管理链接的包,该控制传输模块给数据包进行网络编码并加入特定的变量在网络编码包头中,所述特定变量包含生成编码包的线性系数向量Y和变量pktID, 该变量信息被接收端网络编码层的用于处理从发送端传来的编码数据包的控制传输模块提取,其中,所述生成编码包的线性系数向量Y被用于原始包的解码;所述变量PktID被赋值给接收端网络编码层中的变量ech0_pktID ;另一个控制传输模块用于处理从接收端传来的ACK应答包,该模块对来自发送端下层网络层传来的ACK应答包剥去网络编码包头,提取包头中的变量echo_pktID,根据提取出的变量echo_pktID值判断此时是否应该更新冗余系数R值,若ech0_pktID等于W + 10*R_ old或者ech0_pktID第一次大于W + 10*R_old,则开始更新冗余系数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值的差值;利用变量difT_loSS_new计算得出新的冗余系数 R_new 的值,即 R_new = R_old + 2* (diff_loss_new/10) + (diff_ loss_old/10);其中diff_loss_old表示上一次调整冗余系数R时得出的diff_loss_new 的值,更新发送端网络编码层中的参数变量,即R_old = R_new, loss_old = loss, diff_ loss_old = diff_loss_new, W = W+ 10*R_new ;接收端的网络编码层包含的两个控制传输模块一个模块用于处理从接收端TCP传输层送来的ACK包,该模块判断从接收端TCP传输层送来的ACK包是否是将建立链接的控制包,若是则交付给接收端下层网络层,若不是,则将其丢弃并返回等待状态;另一个控制传输模块用于处理从发送端传来的编码数据包,该模块若收到来自下层网络层交付的数据包,则剥去数据包中的网络编码包头,提取编码系数向量Y和变量pktID, 进行解码操作,得到原始包,并生成一个新的添加网络编码包头的ACK应答包,所添加的网络编码包头中包含变量loss和变量echo_pktID,将新生成的ACK应答包交付予下层网络层。
全文摘要
一种基于TCP协议的自适应网络控制传输方法,通过在网络传统的TCP/IP协议体系结构中的发送端和接收端的传输层和网络层中间分别添加网络编码层,在网络编码层中给编码包和ACK应答包添加包含特定变量的网络编码包头,利用编码包和ACK应答包将这些变量在接收端和发送端之间传递并更新,并利用这些变量在发送端网络编码层调整冗余系数R。这种动态调整冗余系数的方法,可以增强协议对突发丢失的抵抗力,并在丢失率不断变化的网络环境中,使冗余系数R尽可能维持在最优值,提高网络吞吐率和链路利用率。
文档编号H04L29/06GK102209079SQ20111016953
公开日2011年10月5日 申请日期2011年6月22日 优先权日2011年6月22日
发明者宋思聪, 李挥, 李硕彦, 李锐源, 樊旭东, 潘凯 申请人:北京大学深圳研究生院, 深圳市利德嘉实业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1