Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
TCP-BASED ADAPTIVE NETWORK CONTROL TRANSMISSION METHOD AND SYSTEM
Document Type and Number:
WIPO Patent Application WO/2012/174763
Kind Code:
A1
Abstract:
A TCP-based adaptive network control transmission method. A network coding layer is added between a transmission layer and a network layer of each of a transmitting end and a receiving end in a conventional TCP/IP architecture of a network, network coding packet headers with specific variables are added to coding packets and ACK response packets in the network coding layers, the variables are transmitted and updated between the receiving end and the transmitting end by utilizing the coding packets and the ACK response packets, and a redundancy coefficient R is adjusted in the network coding layer of the transmitting end by utilizing the variables. By the method for dynamically adjusting the redundancy coefficient, the resistance of a protocol to burst loss can be enhanced, the redundancy coefficient R is kept at an optimal value as much as possible in a network environment with a constantly changing loss rate, and the throughput and link utilization rate of the network are increased.

Inventors:
LI HUI (CN)
SONG SICONG (CN)
PAN KAI (CN)
LI SHUOYAN (CN)
FAN XUDONG (CN)
LI RUIYUAN (CN)
Application Number:
PCT/CN2011/077329
Publication Date:
December 27, 2012
Filing Date:
July 19, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
UNIV PEKING SHENZHEN GRAD SCHO (CN)
SHENZHEN LI DE JIA IND CO LTD (CN)
LI HUI (CN)
SONG SICONG (CN)
PAN KAI (CN)
LI SHUOYAN (CN)
FAN XUDONG (CN)
LI RUIYUAN (CN)
International Classes:
H04L29/06
Foreign References:
CN101938334A2011-01-05
CN101026553A2007-08-29
CN101841479A2010-09-22
Attorney, Agent or Firm:
SHENZHEN KINDWALF INTELLECTUAL PROPERTY FIRM (CN)
深圳市科吉华烽知识产权事务所 (CN)
Download PDF:
Claims:
权利要求书

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禾 Bloss;

所述在发送端网络编码层调整冗余系数 R是指在发送端的网络编码层中还添加了如下变 量: R_old表示当前冗余系数; W表示上一次调整冗余系数 R值时 echo_pktID的理论最小值, 若 echo_pktID满足等于或者第一次大于 W + 10*R_old值这两个条件之一时, 则进行调整冗余 系数 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计算得出新的冗余系数1 _^\¥的值, 即1 _^\¥ = R_old+2*(diff_loss_new/10)+ (diff_loss_old/10);

其中 diff_loss_old表示上一次调整冗余系数 R时得出的 diff_loss_new的值;更新发送端网络 编码层中的参数变量, 即1 _01(1 = 1 _^\¥, loss_old = loss, diff_loss_old = diff_loss_new, W = W + 10*R_new。

3、 一种基于 TCP协议的自适应网络控制传输系统, 包括发送端和接收端, 该系统分 别在发送端和接收端的传输层和网络层中间设置了网络编码层, 其特征在于:

发送端的网络编码层包含的两个控制传输模块: 一个模块用于处理从发送端 TCP传输 层送来的数据包或者管理链接的包, 该控制传输模块给数据包进行网络编码并加入特定的变 量在网络编码包头中, 所述特定变量包含: 生成编码包的线性系数向量 Y和变量 pktID, 该变 量信息被接收端网络编码层的用于处理从发送端传来的编码数据包的控制传输模块提取, 其 中, 所述生成编码包的线性系数向量 Y被用于原始包的解码; 所述变量 pktID被赋值给接收端 网络编码层中的变量 echo_pktID;

另一个控制传输模块用于处理从接收端传来的 ACK应答包, 该模块对来自发送端下层 网络层传来的 ACK应答包剥去网络编码包头, 提取包头中的变量 echo_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值的差值; 利用变量 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的值,更新发送端网络编码层中的参数变量,即1 _01(1 = 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应答包交付予下层网络层。

Description:
一种基于 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。 其次, 在接收端, 弓 I入了 "看见 包"的概念。"看见包"机制解释为:如果一个节 点有足够的信息来计算一个线性组合 p k + q, 其中 q =∑i> fc a lPl , 且对于所有 1 > /c有 £ F q ,那么可以说这个节点看见了一个包 p k 。在这里, q是一个索引值大于 k的包的线性组合。 当在接收端判断看见一个包 p k 时, 可以立即发送这个 包对应的 ACK回发送端, 而不必等到将此包完全解码。 "看见包"概念的引入解决了可能因解 码时延而造成的 ACK应答包不能及时产生发出的缺点, 使网络编码理论很好地融入到了 TCP 协议中。

NC-TCP协议中还引入了节点知识和虚拟队列的概 念。 所谓节点知识就是一个节点所能 计算的收到所有原始数据包的线性组合的集合 , 同时这些线性组合的系数向量所形成的向量 空间称作该节点的知识空间。 虚拟队列的个数等于接收方的个数, 第 j条虚拟队列的长度被定 义为发送方知识空间的维数和第 j个接收方知识空间的维数之差。

所有思想在现有的 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协议不能很好地适应网络环境不断变化的 情况,特别是受外界干扰影响较 大的无线环境的情况。 【发明内容】

为了改进 NC-TCP协议的上述缺点, 本发明基于 TCP协议的网络编码理论提出一种基于 TCP协议的自适应网络控制传输方法; 本发明还提出一种基于 TCP协议的自适应网络控制传 输系统, 并进行了模拟仿真。

本发明所述的方法是通过加入网络编码层, 在数据包包头添加对当前网络环境的判断信 息, 在发送方网络编码层动态地对冗余系数 R进行调整。

一种基于 TCP协议的自适应网络控制传输方法, 包括在网络传统的 TCP/IP协议体系结构 中的发送端和接收端的传输层和网络层中间分 别添加网络编码层, 在网络编码层中给编码包 和 ACK应答包添加包含特定变量的网络编码包头, 利用编码包和 ACK应答包将这些变量在接收 端和发送端之间传递并更新, 并利用这些变量在发送端网络编码层调整冗余 系数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禾 Bloss。

本发明提出的基于 TCP协议的自适应网络控制传输方法的特点还包 括在发送端网络编码 层调整冗余系数 R, 具体方法是: 在发送端的网络编码层中还添加了如下变量: R_old表示当 前冗余系数; W表示上一次调整冗余系数 R值时 echo_pktID的理论最小值, 当 echo_pktID满足等 于或者第一次大于 (W+R_old) 值这两个条件之一时, 则进行调整冗余系数 R值:

利用从 ACK包头里提取出的 loss值计算得出当前发送端网络编码层中变量 diff_lo SS _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+2*(diff_loss_new/10)+ (diff_loss_old/10) ; 其中 diff_loss_old表示上一次调整冗余系数 R 时得出的 diff_loss_new的值;更新发送端网络编码层中的 数变量,即1 _01(1 = R_new, loss_old = loss, diff_loss_old = diff_loss_new, W = W + 10*R_new。

这种动态调整冗余系数的方法, 可以增强协议对突发丢失的抵抗力, 并在丢失率不断变 化的网络环境中, 使冗余系数 R尽可能维持在最优值, 提高网络吞吐率和链路利用率。 根据上述方法, 本发明提出一种基于 TCP协议的自适应网络控制传输系统, 包括发送端 和接收端, 该系统分别在发送端和接收端的传输层和网络 层中间设置了网络编码层, 其中: 发送端的网络编码层包含的两个控制传输模块 : 一个用于处理从发送端 TCP传输层送来 的数据包或者管理链接的包, 该控制传输模块给数据包进行网络编码并加入 特定的变量在网 络编码包头中。 加入的特定变量包含: 生成编码包的线性系数向量 Y和变量 pktID, 该变量信 息被接收端网络编码层的用于处理从发送端传 来的编码数据包的控制传输模块提取, 其中, 所述生成编码包的线性系数向量 Y被用于原始包的解码; 所述变量 pktID被赋值给接收端网络 编码层中的变量 echo_pktID。

另一个控制传输模块用于处理从接收端传来的 ACK应答包, 该模块对来自发送端下层网 络层传来的 ACK应答包剥去网络编码包头, 提取包头中的变量 echo_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值的差值; 利用变量 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的值,更新发送端网络编码层中的 数变量,即1 _01(1 = 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/IP协议体系结构中, 从上到下分别由应用层、 传输层、 网络层、 数据链路层、 物理层 组成。 为了添加控制处理模块, 本发明的技术方案是在发送端和接收端的传输 层和网络层中 间分别添加了网络编码层, 并给编码包和 ACK应答包添加包含特定变量的网络编码包头, 利 用编码包和 ACK应答包将这些变量在接收端和发送端之间传 递并更新, 用以接收实时网络环 境参数, 并做出相应的处理, 进而调整网络传输控制模式, 以适应实际网络需要。

在发送端的网络编码层中, 本发明将从上一层传输层收集到的数据包统一 编码后交给下 一层, 即网络层 (IP层) 。 其中, 在网络编码层中设有特定的网络编码缓冲区, 用以接收从 传输层中交付的数据包。 每一次编码时, 将缓冲区中所有的数据包进行线性组合, 并添加网 络编码包头, 生成编码包交付给网络层。

在所述的发送端添加的网络编码包头中包含特 定信息用以接收端网络编码层的解码处理 以及探测和记录当前网络环境。 所述特定信息包括: (1 )生成编码包的线性系数向量 Y。 因 为编码包是由编码缓冲区中所有的原始包经由 线性组合而成, 线性系数向量 Υ记录每一个原 始包前添加的随机系数。 (2) 变量 pktID。 用以唯一表示当前编码包的编码序号。

在接收端,网络编码层会收到由下层网络层交 付的网络编码数据包。当接收到编码包后, 网络编码层将剥去编码包中的网络编码包头, 提取网络编码包头中的信息, 并将此编码包加 入解码模块进行解码和 "看见包" 的判断。 若发现 "看见"新的原始包, 则生成相应的 ACK 交付给下层网络层; 若解码出新的原始包, 则将这个原始包交付给上层传输层, 并在解码矩 阵中删除相应的编码包。

在网络编码包头中提取的信息包括: (1 ) 生成编码包的线性系数向量 Y。 该向量被交予 解码模块用于原始包的解码。 (2) 变量 pktID。 该变量被赋值给接收端网络编码层中的变量 echo_pktID。 其中, echo_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。 当 echo_pktID等于或者第一次大 于 (W+R_old) 值时, 则进入调整冗余系数 R值的状态。 其中, R_old表示当前冗余系数, W 表示上一次调整冗余系数 R值时 echo_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计算得出新的冗余系数R_new 的值, 即1 _^\¥ = R_old + 2*(diff_loss_new/10) + (diff_loss_old/10)。其中 diff_loss_old表示上一 次调整冗余系数 R时得出的 diff_lo SS _ new 的值。更新发送端网络编码层中的参数变 量, 即1 _ 0 1(1 = R_new, loss_old = loss, diff_loss_old = diff_loss_new, W = W + 10*R_new。至此, 在发送端更 新冗余系数 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 + R。

205: 重复执行以下操作 L«U次:

1 ) 将编码缓冲区中所有原始数据包进行线性组合 编码, 生成所需的编码数据包。

2 )对编码数据包添加网络编码包头。 包头信息包括: (1 ) 生成编码包时的线性系数 向量 Y。 (2 ) 用于唯一指定此编码包序号的变量 pktID。

3 ) 将生成的编码包传递给下层网络层 104。

206: 设置变量值 NUM, 即 NUM = NUM的小数部分。 返回等待状态。

207:判断是否收到来自发送端下层网络层 104交付的 ACK应答包。若否,则继续等待状态。 208: 若收到 ACK应答包, 则剥去 ACK包中的网络编码包头, 提取出包头中存储的变量 echo_pktID。

209: 根据步骤 208提取出的变量 echo_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_lo SS _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:更新存储在发送端网络编码层中的变量值 ,即: R_new = R_old + 2*(diff_loss_new/10) + (diff_loss_old/10) o 其中 diff_loss_old表示上一次调整冗余系数 R时得出的 diff_loss_new的值。 更新完毕后, 进入步骤 210。

总的来说, 发送端网络编码层 103需要完成的主要工作既是: (1 ) 对数据包进行编码操 作。 (2 ) 根据 ACK包的信息, 自动更新冗余系数 R值。 通过这些操作, 完成本发明提出的自 适应网络传输控制方法。 在接收端, 同样的, 网络编码层 110需要对两种情况做出处理, gp : 来自接收端上层传输 层 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和变量 echo_pktID, 其中 loss表示当前在接收方还需要多少个线 性无关的编码包才能完全解码出所有的原始包 ; echo_pktID值等于收到信源数据包网络编码 包头中 pktID的值。

309: 将生成的 ACK交付予下层网络层 09, 并返回等待状态。

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】, 提出自适应理论, 通过在发送端网络编码层收集实时信息, 动态调整冗余系数 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, 这些流将争用中间的节点和链路。我们设置每 条链路的带宽为 1 MB, 传输时延 为 10ms, 节点容量设为 200, TCP接收窗口设置为 40个包, 每个包的大小设置为 1000比特。 Vegas参数 α、 β和 γ分别被设置为 28、 30和 2。公平性指的是当两条相似的流竞争同一段 路时, 他们会得到大致相似的链路利用率。 并且, 这样的特性不会因为流加入链路时间的不 同而改变。 众所周知, TCP-Vegas协议的公平性取决于变量 α和 β, 这两个变量选取的值不 同可以使 TCP-Vegas协议成为公平或者不公平的协议。 在我们的仿真过程中, 我们首先选取 一组特定的 α和 β值(即 α取 28, β取 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 .1 1, 在丢失率在 1 0%到 45%变化情况下, 比较 NC-TCP流和 SANC-TCP流的吞吐率情况。 从图 9 可以看出,当丢失率为 1 0%时, NC-TCP流的 R值处在最优情况,其获得的吞吐率和 SANC-TCP 流大致相同。 但随着丢失率的增加, 由于 NC-TCP流发送的冗余包数量无法掩盖包的丢失, 造成接收端不能解码以及大量的超时重传等待 , 导致吞吐率急剧下降。 而 SANC-TCP流则表 现出很好的鲁棒性, 证明其在丢失率不断变化的网络环境中有明显 的优势。 另外, 若网络环 境丢失率小于 10%, 此时的 NC-TCP流会发送大量多余的冗余包, 造成网络带宽的浪费; 而 SANC-TCP流则会及时调低 R值, 保证网络的高效利用。

最后, 在实际网络环境中, 特别是易受外界干扰的无线网络环境中, 突发丢失是一种很 常见的情况。 如何在突发丢失的情况下, 依然保持网络的畅通, 以及如何在网络恢复正常状 态后迅速提高吞吐率是一个重要的课题。 图 10即是对这样情况的仿真结果。 依然采用图 4所 示的拓扑结构, NC-TCP流的 R值固定为 1 .1 1。 在 0.6秒时, 中间链路的丢失率保持在 1 0%; 在 500秒时, 由于出现未知突发状况, 链路丢失率突然升至 30%, 直到 600秒时才重新恢复到 丢失率为 1 0%, 直至仿真结束。 从图 1 0可以看出, 在 500秒之前, NC-TCP流禾 BARNC-TCP 流都在链路理论极限吞吐率 0.9Mbs上下浮动。 但当到 500秒时, 链路丢失突然提高到 30%, NC-TCP流和 TCP-Vegas流的瞬时吞吐率都急速下降, 几乎降至 0, 而 ARNC-TCP流依然保 持很好的特性, 在链路理论极限吞吐率 0.7Mbs上下浮动。 由此可以证明, 在应对实际网络中 常常出现的突发丢失情况, 我们的 ARNC-TCP协议相对于其他两种协议有更好的抵抗 。 保 证了即使出现上述突发状况, 也能获得较高的网络链路利用率。

由此可见, 本发明的所提出的基于 TCP协议的自适应网络控制传输方法可形成一套 完整 的基于网络编码的自适应 TCP协议, 即我们称之为 SANC-TCP协议, 以及按照此方法构建的控 制传输系统通过发送冗余包并动态调整冗余系 数 R很好地解决了数据包的丢失问题。 该设计 对于之前协议栈的改动很小,能够将网络编码 理论与 TCP协议很好地结合,相比普通 NC-TCP 协议拥有更大的吞吐率和对突发性丢失更好的 鲁棒性。