一种基于反馈的网络编码tcp解码方法及装置的制造方法

文档序号:10660557阅读:456来源:国知局
一种基于反馈的网络编码tcp解码方法及装置的制造方法
【专利摘要】本发明提供了一种基于反馈的网络编码TCP解码方法及装置,所述方法包括:当接收到TCP层发送的TCP数据包时,发送端根据当前链路丢包率对当前需要发送的编码包数量Sn进行更新;根据当前时刻接收到的由接收端发送的应答消息中携带的反馈信息确定当前的编码窗口锁的次数Ln;若当前的编码窗口锁的次数Ln不为0,则固定编码窗口,并将编码窗口内的W个TCP数据包按照编码包数量进行预设编码,将编码好的个数据包发送至接收端。本发明不仅能够根据网络环境产生主动补偿,并且可以基于反馈做出相应调整以加速解码矩阵满秩,减少解码等待时延。
【专利说明】
一种基于反馈的网络编码TCP解码方法及装置
技术领域
[0001] 本发明涉及通信技术领域,具体涉及一种基于反馈的网络编码TCP解码方法及装 置。
【背景技术】
[0002] 网络编码TCP是一类可以有效提高TCP在无线网络中的传输吞吐量和可靠性的通 信技术。在无线网络中,由于终端移动,物体遮挡等原因,常出现大量随机丢包。而当今使用 最为广泛的传输协议TCP最初却是为普通的有线网络设计,TCP的拥塞控制算法仅仅考虑了 拥塞造成的丢包。网络编码TCP通过在TCP数据包中添加冗余信息来补偿无线网络中的随机 丢包。然而,当网络编码TCP应用到在线应用中时(比如实时多媒体应用),解码引起的解码 时延却是一个不得不考虑的挑战。网络编码TCP通过将不同的TCP原始数据包混合编码发 出,接收端只有接受到足够多的线性无关的编码包才能使解码矩阵达到满秩状态,只有满 秩了才能成功解码。而网络中不可控的丢包会使得解码端等待满秩的时间不可控。在这段 时间内无法成功解码所有缓冲区内收到的编码包,也无法向上层交付任何数据包。从而造 成巨大的解码时延以及交付抖动。而在线应用需要一个平滑的接收速率以及严格的时延控 制。根据有关文献记载,亚马逊估计时延每增加 looms就会损耗1%的利润所得。所以降低解 码时延对于网络编码TCP性能的提升起着重要的作用。
[0003] 网络编码TCP中的解码时延是指当一个TCP原始数据包第一次被编码发出到最终 被成功解码交付给应用层所经历的时间。解码时延主要包含三个部分:传输时延,等待时延 和计算时延。其中,传输时延有链路本身的参数所控制,无法改变。等待时延即等待满秩的 时延,这部分可以通过调整冗余信息来协同链路丢包来得以控制最大程度上逼近完全消除 的理想效果。因为这部分时延基本决定了整个解码时延的大小。计算时延是指当解码矩阵 满秩后到成功解码的时间,目前针对随机线性编码,采用最广泛的解码算法是高斯-约旦消 元。这部分时延与解码矩阵的大小成〇(n 2)关系。
[0004] 综上所述可知,控制网络编码TCP解码时延的根本在于根据网络情况正确调整冗 余加速解码矩阵快速满秩。
[0005] 现有的在线网络编码TCP解码方法通过合理的控制编码窗口大小来选择每次参与 编码的原始包数目。编码窗口的大小代表了它掩盖丢包的能力。以TCP/NC为代表的这类算 法以只掩盖无线丢包而不掩盖拥塞丢包为目的,合理的控制重传和冗余来达到在线编解码 的目的。TCP/NC每次都将最新到达网络编码层的W个TCP原始数据包进行编码发出,其中W为 编码窗口大小。这类网络编码TCP算法可以同时兼容基于丢包和RTT的TCP拥塞控制机制。然 而,这类算法采用一个预设的固定的冗余值R:
[0007]其中,P为平均丢包率。在具体的解码过程中,当每次有新的TCP原始数据包到达网 络编码层时,TCP/NC的编码窗口总会滑动以使编码窗口中总是包含最新到达的W个TCP原始 数据包,并通过预设的冗余值R来对通信中的无线随机丢包进行补偿。然而这个固定的预设 的冗余值R很难适应实时变化的信道丢包率。从而导致丢包与冗余补偿不匹配,最终导致解 码矩阵变得非常大,解码时延失控。

【发明内容】

[0008] 针对现有技术中的缺陷,本发明提供一种基于反馈的网络编码TCP解码方法及装 置,不仅能够根据基本的网络环境产生主动补偿,并且可以基于反馈做出相应调整以加速 解码矩阵满秩,减少解码等待时延,平滑数据交付抖动。
[0009] 为解决上述技术问题,本发明提供以下技术方案:
[0010] 第一方面,本发明提供了一种基于反馈的网络编码TCP解码方法,包括:
[0011] 当接收到上层传输控制协议TCP层发送的TCP数据包时,发送端根据当前链路丢包 率对当前需要发送的编码包数量Sn进行更新:
[0012] Sn = Sn+R
[0013] 其中,R为根据当前链路丢包率确定的冗余系数,1?=1八1-?),?为当前链路丢包 率;
[0014] 根据当前时刻接收到的由接收端发送的应答消息中携带的反馈信息确定当前的 编码窗口锁的次数Ln;
[0015] 若当前的编码窗口锁的次数Ln不为0,则固定编码窗口,并将编码窗口内的W个TCP 数据包按照所述编码包数量b&」进行预设编码,以及将编码好的个数据包发送至接收 端;
[0016] 其中,W为编码窗口的大小。
[0017] 优选地,若当前的编码窗口锁的次数Ln为0,则滑动编码窗口使之包含最近接收到 的不超过W个TCP数据包,并将编码窗口内的TCP数据包按照所述编码包数量进行预设 编码,以及将编码好的|_办」个数据包发送至接收端。
[0018]优选地,所述根据当前时刻接收到的由接收端发送的应答消息中携带的反馈信息 确定当前的编码窗口锁的次数Ln,包括:
[0019] 根据当前时刻接收到的应答消息中携带的反馈信息中所包含的接收端欲成功解 码所缺少的数据包数量Ack. loss、上一时刻接收到的应答消息中携带的反馈信息中所包含 的接收端欲成功解码所缺少的数据包数量last, loss以及根据当前时刻接收到的应答消息 中携带的反馈信息中所包含的用于触发当前时刻的应答信息产生的数据包的序列号 Ack. trigSeq计算得到的发送端在发送拥有序列号Ack. trigSeq的数据包之后发送的冗余 包数量Rn,采用下述公式一确定当前的编码窗口锁的次数Ln:
[0020] Ln=max{Ln+Ack. loss-last · loss_Rn,0} 公式一
[0021] 其中,Ack. loss-last, loss表示在两个应答消息之间出现的新的丢包数。
[0022] 优选地,在将编码好的个数据包发送至接收端之后,所述方法还包括更新Ln 为:
[0023] Ln - Ln - |_S/?J 〇
[0024] 优选地,在将编码好的b&」个数据包发送至接收端之后,所述方法还包括更新Sn 为:
[0025] 5? = 5)? -。
[0026] 优选地,如果接收到的上层TCP层发送的TCP数据包为重传包,则直接将该TCP数据 包向接收端发送[_&」次。
[0027]第二方面,本发明还提供了一种基于上述任一种方法的网络编码TCP解码方法,包 括:
[0028] 当接收端接收到一个编码包C时,接收端从编码包C中提取编码系数向量V,并将编 码系数向量V加入解码矩阵,对编码系数向量V进行高斯-约旦消元;
[0029] 若消元后的编码系数向量V变成全零向量,则丢弃编码包C,否则将编码包C的负载 部分加入解码缓冲区;其中,编码包C的负载部分为编码包C除去头部信息的数据信息部分;
[0030] 对编码包C的负载部分执行高斯-约旦消元,若有数据包被顺序成功解码,将成功 解码的数据包发送给上层TCP层;
[0031] 向发送端发送应答消息,所述应答消息中携带有反馈信息,所述反馈信息用于使 得发送端确定所述编码窗口锁的次数Ln。
[0032]优选地,所述应答消息中携带的反馈信息中包括最老的不可见包的序列号 Ack.Seq和接收端当前欲成功解码所缺少的数据包数量Ack. loss,以及触发当前时刻的应 答信息产生的数据包的序列号Ack.trigSeq;
[0033]其中,最老的不可见包的序列号Ack.Seq用于告知发送端哪些数据包不需要再参 与编码和重传;对于一个C = Pi+q,且= 的编码包,Pi为可见包,Pi (l>i)为不可见 包,P1+1为最老的不可见包,3,为编码系数。
[0034]第三方面,本发明还提供了一种基于反馈的网络编码TCP解码装置,包括:
[0035]更新单元,用于在接收到上层传输控制协议TCP层发送的TCP数据包时,根据当前 链路丢包率对当前需要发送的编码包数量Sn进行更新:
[0036] Sn = Sn+R
[0037] 其中,R为根据当前链路丢包率确定的冗余系数,1?=1八1-?),?为当前链路丢包 率;
[0038] 确定单元,用于根据当前时刻接收到的由接收端发送的应答消息中携带的反馈信 息确定当前的编码窗口锁的次数Ln;
[0039] 判断单元,用于判断当前的编码窗口锁的次数Ln是否为0;
[0040] 处理单元,用于在所述判断单元确定当前的编码窗口锁的次数Ln不为0的情况下, 固定编码窗口,并将编码窗口内的W个TCP数据包按照所述编码包数量L&?」进行预设编码, 以及将编码好的[_&」个数据包发送至接收端;其中W为编码窗口的大小。
[0041] 第四方面,本发明还提供了一种基于上面所述装置的基于反馈的网络编码TCP解 码装置,包括:
[0042] 第一消元单元,用于在接收到一个编码包C时,从编码包C中提取编码系数向量V, 并将编码系数向量V加入解码矩阵,对编码系数向量V进行高斯-约旦消元;
[0043] 判断单元,用于判断消元后的编码系数向量V是否为全零向量;
[0044] 丢弃单元,用于在所述判断单元确定消元后的编码系数向量V为全零向量时,丢弃 编码包C;
[0045] 第二消元单元,用于在所述判断单元确定消元后的编码系数向量V不为全零向量 时,将编码包C的负载部分加入解码缓冲区,并对编码包C的负载部分执行高斯-约旦消元;
[0046] 发送单元,用于在第二消元单元成功解码出数据包时,将成功解码出的数据包发 送给上层TCP层;
[0047] 所述发送单元,还用于向如上面所述的装置发送应答消息,所述应答消息中携带 有反馈信息,所述反馈信息用于使得如上面所述的装置确定所述编码窗口锁次数Ln。
[0048] 由上述技术方案可知,本发明所述的基于反馈的网络编码TCP解码方法,不仅能够 根据基本的网络环境产生主动补偿,并且可以基于反馈做出相应调整以加速解码矩阵满 秩,减少解码等待时延,平滑数据交付抖动。能够在无线网络中保证通信吞吐量的同时降低 解码时延,满足用户应用的实时性需求。
【附图说明】
[0049] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。
[0050] 图1是本发明第一个实施例提供的一种基于反馈的网络编码TCP解码方法的流程 图;
[0051] 图2是本发明第一个实施例提供的另一种基于反馈的网络编码TCP解码方法的流 程图;
[0052] 图3是本发明第二个实施例提供的基于反馈的网络编码TCP解码方法的流程图; [0053]图4是本发明第三个实施例提供的基于反馈的网络编码TCP解码装置的结构示意 图;
[0054] 图5是本发明第四个实施例提供的基于反馈的网络编码TCP解码装置的结构示意 图。
【具体实施方式】
[0055] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056]现有的解码方法大致是这样的:每次有新的TCP原始数据包到达网络编码层时, TCP/NC的编码窗口总会滑动以使编码窗口中总是包含最新到达的W个TCP原始数据包,并通 过预设的冗余来对通信中的无线随机丢包进行补偿。然而预设的冗余常常不足以补偿动态 变化的无线随机丢包,从而造成巨大的解码时延。本发明中基于反馈的在线网络编码TCP解 码方法,以下简称为FNC方案,当通过预设的冗余不能完全补偿通信中的随机无线丢包时, 使用反馈带来解码矩阵的信息,在恰当的时候固定编码窗口,阻止其产生滑动,以选取合适 的TCP原始数据包参与编码来加速接收端解码矩阵满秩。为了与现有的TCP/IP架构保持良 好的兼容性,本发明保留了 TCP/NC中的框架。而在其网络编码层的编码发送端与解码接收 端实现了本申请提供的方法。下面分别介绍了 FNC方案在TCP网络编码层发送端和接收端的 详细步骤,并添加了一个FNC方案实例以展现FNC方案中固定编码窗口的优势。
[0057]本发明第一个实施例提供了一种基于反馈的网络编码TCP解码方法,参见图1,该 方法包括如下步骤:
[0058]步骤101:当接收到上层传输控制协议TCP层发送的TCP数据包时,发送端根据当前 链路丢包率对当前需要发送的编码包数量Sn进行更新:
[0059] Sn = Sn+R
[0060] 其中,R为根据当前链路丢包率确定的冗余系数,1?=1八1_?),?为当前链路丢包 率。
[0061] 在本步骤中,根据当前链路丢包率P计算冗余系数R,然后再根据冗余系数R计算当 前需要发送的编码包数量Sn。
[0062] 此外,由于本步骤的操作在是网络编码层,因此需要接收上层TCP层发送的TCP数 据包。
[0063] 步骤102:根据当前时刻接收到的由接收端发送的应答消息中携带的反馈信息确 定当前的编码窗口锁的次数Ln。
[0064] 在本步骤中,根据当前时刻接收到的由接收端发送的应答消息中携带的反馈信息 确定当前的编码窗口锁的次数Ln,包括:
[0065] 根据当前时刻接收到的应答消息中携带的反馈信息中所包含的接收端欲成功解 码所缺少的数据包数量Ack. loss、上一时刻接收到的应答消息中携带的反馈信息中所包含 的接收端欲成功解码所缺少的数据包数量last, loss以及根据当前时刻接收到的应答消息 中携带的反馈信息中所包含的用于触发当前时刻的应答信息产生的数据包的序列号 Ack. trigSeq计算得到的发送端在发送拥有序列号Ack. trigSeq的数据包之后发送的冗余 包数量Rn,采用下述公式一确定当前的编码窗口锁的次数Ln:
[0066] Ln=max{Ln+Ack. loss-last. loss_Rn,0} 公式一
[0067] 其中,Ack. loss-last, loss表示在两个应答消息之间出现的新的丢包数。
[0068]其中,在根据Ack. trigSeq计算得到Rn时,还需要根据发送端发送的数据包序列, 该数据包序列中包含了发送端发送的各个数据包的序列号。
[0069] 例如假设根据当前链路丢包率P计算得到的冗余系数R=l. 2,假设发送端发送序 列为1,2,3,4,5,(:,6,7,8,9,10,(:,11,12,其中(:代表增加的冗余包。这里用一个队列记录如 上发送端的包发送情况,则一个应答消息ACK返回时,若反馈信息告诉它是由5号包触发的, 则通过这个队列可知截止到此刻5号包后发送了两个冗余包,那么Rn = 2。
[0070] 进一步地,当前时刻接收到的应答消息中携带的反馈信息中还包含最老的不可见 包的序列号Ack. Seq,其中,最老的不可见包的序列号Ack. Seq用于告知发送端哪些数据包 不需要再参与编码和重传。因此发送端根据最老的不可见包的序列号Ack. Seq可以获知哪 些数据包不需要再参与编码和重传,这对后续步骤l〇3a进行编码时具有指导意义。
[0071] 其中,对于一个C = Pi+q,且ν = 的编码包,pi为可见包,ρια>?)为不可见 包,Pi+i为最老的不可见包。为编码系数。
[0072]步骤103:判断当前的编码窗口锁的次数Ln是否为0;若否,则执行步骤103a。
[0073] 步骤103a:固定编码窗口,并将编码窗口内的W个TCP数据包按照所述编码包数量 [/?」进行预设编码,以及将编码好的个数据包发送至接收端;w为编码窗口的大小。
[0074] 在本步骤中,在当前的编码窗口锁的次数Ln不为0的情况下,采用了固定编码窗口 的方式,将编码窗口内的W个TCP数据包按照所述编码包数量[_&」进行预设编码,以及将编 码好的个数据包发送至接收端,这里所述进行预设编码可以采用补偿编码中常用的编 码方法进行编码,由于这部分知识对于本领域技术人员来说较为熟知,因此不再赘述。其 中,L」为向下取整的符号。
[0075] 本步骤中采用的固定编码窗口的方式相对于现有技术中滑动编码窗口的方式,具 有减少接收数据包投递速度的优势。下面通过一个具体的例子详细分析固定编码窗口具有 这种优势的原因。
[0076] 例如,对于一个编码窗口 W = 3的编码TCP方案TCP/NC,TCP/NC发送端采用滑动编码 窗口方式,每次将数目不大于W的原始包进行编码发出,其总共发送7个编码包CS1,(0< i < 7),如下:
[0078] 其中,Cs3 = 9P47P2+3P3,CS4 = 2P2+8P3+3P4。如果没有包丢失,则接收端收到7个线 性无关的编码包,解码矩阵满秩,经过高斯消元后,解码矩阵变换成7行7列的单位矩阵,Pi, P2,P3,P4,P5,P 6,P7 均被解出。
[0079] 假设,在传输过程中CS4丢失,接收端只能收到6个包,经过高斯消元,接收端只能成 功解出Pi,P2,p 3。按照滑动窗口方式的编码方案将导致P4,p5,p6,P7不能被解出。除去单位矩 阵部分,TCP/NC方案解码矩阵形式如下:
[0081]假设当准备发送第6个包时,Cs5触发的ACK带回了丢包信息。由于当接收端收到编 码包Cs5时,经过高斯消元Cs5转化为Cr5 = P4+q,q = 4P5,则当前最新的可见包为4,最老的不可 见包为5。所以Cs5触发的ACK中的反馈信息Ack. loss = 1,Ack. Seq = 5,Ack. trigSeq = 5。由于 该ACK是CS5触发的,所以Ack. trigSeq = 5。经过计算,FNC方案中编码窗口锁的次数Ln = 1, FNC将锁住当前编码窗口,使之不向前滑动,此时编码窗口内的原始包分别为P3,P4,P5,而非 滑动窗口方式下的最新到达的W个包P4,P5,P 6,从而使得发送的包为C ' s6= 11P3+2P4+3P5,而 非Cs6 = 2P4+9P5+15P6。当成功接收到C ' s6接收端经过高斯消元可成功解码Pi,P2,P3,P4,P5。只 有P6,P7不能被解出。除去单位矩阵部分,FNC方案解码矩阵形式如下:
[0083] 由以上例子可以看出本实施例提供的FNC基于反馈的编码窗口锁方案比滑动窗口 编码方案能够更快的解出原始包。由于数据包只有被顺序解出才能被交付给应用层,因此 本实施例提供的FNC有利于减少接收数据包的投递速度。
[0084] 当然,若当前的编码窗口锁的次数Ln为0,则会采用普通的滑动编码窗口方式。参 见图2,若当前的编码窗口锁的次数Ln为0,那么将会执行步骤103b,即滑动编码窗口使之包 含最近接收到的不超过W个TCP数据包,并将编码窗口内的TCP数据包按照所述编码包数量 bs?」进行预设编码,以及将编码好的[你」个数据包发送至接收端。
[0085] 优选地,在将编码好的[_Sk」个数据包发送至接收端之后,所述方法还包括更新Ln 为:
[0086] Ln ~ Ln - \βη\ "
[0087] 优选地,在将编码好的pn」个数据包发送至接收端之后,所述方法还包括更新Sn 为:
[0088] Sn = Sn. - \_Sn.j 〇
[0089] 优选地,如果接收到的上层TCP层发送的TCP数据包为重传包,则直接将该TCP数据 包向接收端发送bsw」次,然后更新Sn为:汾二&-bs?」。否则,将该TCP数据包加入缓冲区等 待编码。
[0090] 其中,对于是否为重传包,可以根据该数据包上带的序列号进行判断。例如还是上 述步骤102举的例子,发送端由目前为止发送的最大序列号的包的信息,该例子中为12,则 如果TCP来的数据包的序列号小于等于12则该包为重传包。
[0091 ] 综上可知,网络编码层的发送端的数据处理过程如下所示:
[0092] (A)在TCP网络编码层发送端,用一个队列来记录发送的冗余包的序列号信息(即 该编码冗余包中参与编码的最大序号的TCP原始数据包的序列号)。当接收到由接收端发送 的应答信息,如ACK包时,发送端按如下步骤执行:
[0093] 1)在ACK包中提取相应的反馈信息:接收端解码矩阵满秩所需的数据包数 Ack. loss,即成功解码所需的数据包数,以及触发这个ACK产生的数据包序列号 Ack.trigSeq〇
[0094] 2)根据Ack. trigSeq来计算出发送端在发送拥有序列号Ack. trigSeq的数据包之 后发送的冗余包数目Rn。
[0095] 3)用last. loss来记录上一个ACK带来的信息Ack. loss,Ln来表示编码窗口锁的次 数,根据最新的反馈信息更新Ln:
[0096] Ln=max{Ln+Ack. loss-last. Ioss-Rn,0}
[0097] 其中Ack. loss-last. loss代表在两个ACK之间出现的新的丢包数
[0098] 4)更新last · loss
[0099] last. loss=Ack. loss
[0100] (B)当收到一个来自上层TCP层发送的TCP数据包时,发送端按如下步骤执行:
[0101 ] 1)更新本次的应该发送的编码包数目Sn:
[0102] Sn = Sn+R
[0103] 其中,冗余系数R=1/(1-P),P为当前链路丢包率。
[0104] 若果该数据包是一个重传包,直接发送该数据包[汾」次。跳转到步骤4),否则将该 数据包加入缓冲区。
[0105] 2)检查Ln,若果Ln不为零,则固定编码窗口。否则,滑动编码窗口使之包含最新的 不超过W个TCP数据包,并更新Ln:
[0106] = /.,?-L5."」
[0107] 3)将编码窗口内的TCP数据包编码生成|_办」个编码包,并依次将其发出。
[0108] 4)更新 Sn:
[0109] S/? = 5V? -- |_5ν?」
[0110] 从上面的描述可知,本实施例提供的基于反馈的网络编码TCP解码方法,不仅能够 根据基本的网络环境产生主动补偿(例如根据当前的链路丢包率获取冗余系数R,然后根据 冗余系数R获取当前应该发送的编码包数目Sn:),并且可以基于反馈做出相应调整以加速 解码矩阵满秩(例如当满足一定条件时,固定编码窗口进行编码),减少解码等待时延,平滑 数据交付抖动。能够在无线网络中保证通信吞吐量的同时降低解码时延,满足用户应用的 实时性需求。
[0111] 本发明第二个实施例提供了另一种基于反馈的网络编码TCP解码方法,与上述第 一个实施例不同的是,上述第一个实施例提供基于反馈的网络编码TCP解码方法应用在网 络编码层的发送端,而本实施例提供的基于反馈的网络编码TCP解码方法应用在网络编码 层的接收端,两者相互呼应。具体地,参见图3,本实施例提供的基于反馈的网络编码TCP解 码方法,包括如下步骤:
[0112] 步骤201:当接收端接收到一个编码包C时,接收端从编码包C中提取编码系数向量 V,并将编码系数向量V加入解码矩阵,对编码系数向量V进行高斯-约旦消元。
[0113] 步骤202:判断消元后的编码系数向量V是否变成全零向量,若是,则执行步骤 202a;否则,执行步骤202b。
[0114] 步骤202a:丢弃编码包C。
[0115] 步骤202b:将编码包C的负载部分加入解码缓冲区;其中,编码包C的负载部分为编 码包C除去头部信息的数据信息部分。
[0116]步骤203 :对编码包C的负载部分执行高斯-约旦消元,若有数据包被顺序成功解 码,将成功解码的数据包发送给上层TCP层。
[0117] 步骤204:向发送端发送应答消息,所述应答消息中携带有反馈信息,所述反馈信 息用于使得发送端确定所述编码窗口锁的次数Ln。
[0118] 在本步骤中,优选地,所述应答消息中携带的反馈信息中包括最老的不可见包的 序列号Ack. Seq和接收端当前欲成功解码所缺少的数据包数量Ack. loss,以及触发当前时 刻的应答信息产生的数据包的序列号Ack. tr i gSeq;
[0119] 其中,最老的不可见包的序列号Ack.Seq用于告知发送端哪些数据包不需要再参 与编码和重传。
[0120] 其中,对于一个C = Pi+q,且^ = 丨的编码包,pi为可见包,pi(i>i)为不可见 包,Pi+i为最老的不可见包。
[0121] 其中,所述反馈信息用于使得发送端确定所述编码窗口锁的次数Ln,包括:
[0122] 发送端根据反馈信息中所包含的接收端欲成功解码所缺少的数据包数量 Ack. loss、以及根据上一时刻接收到的应答消息中携带的反馈信息中所包含的接收端欲成 功解码所缺少的数据包数量last, loss,以及根据反馈信息中所包含的用于触发当前时刻 的应答信息产生的数据包的序列号Ack. trigSeq计算得到的发送端在发送拥有序列号 Ack. trigSeq的数据包之后发送的冗余包数量Rn,采用下述公式一确定当前的编码窗口锁 的次数Ln:
[0123] Ln=max{Ln+Ack. loss-last. loss_Rn,0} 公式一
[0124] 其中,Ack. loss-last, loss表示在两个应答消息之间出现的新的丢包数。
[0125] 综上可知,网络编码层的接收端的数据处理过程如下所示:
[0126] (A)当接收端接收到一个编码包C时,接收端将按照以下的步骤执行:
[0127] 1)从编码包C中提取编码系数向量V,并将编码系数向量V加入解码矩阵,做高斯-约旦消元。如果,消元后的编码系数向量V变成全零向量,则编码包C为线性相关的数据包, 丢弃编码包C。否则将编码包C的负载部分加入解码缓冲区。
[0128] 2)对负载部分执行高斯-约旦消元,若果有包被顺序解出,将其交付给上层TCP层。 同时产生一个反馈ACK包含最老的不可见包的序列号Ack.Seq、当前解码矩阵满秩所缺的编 码包的数量Ack. loss(即接收端当前欲成功解码所缺少的数据包数量Ack. loss),以及触发 当前时刻的应答信息(反馈ACK包)产生的数据包的序列号Ack. tr i gSeq。
[0129] 其中,最老的不可见包的序列号Ack. Seq用于告知发送端哪些数据包不需要再参 与编码和重传。对于一个C = Pi+q,且^ = 丨的编码包,Pi为可见包,为不可见 包,Pi+i为最老的不可见包。
[0130] (B)当收到来自上层TCP层的ACK时,丢弃该TCP层发送的ACK。由于ACK由网络编码 层产生并返回,由于网络编码层产生的ACK包含了所有需要的信息,因此TCP层的ACK就不需 要了。
[0131]为了验证本发明提供的基于反馈的网络编码TCP解码方法(简称FNC算法)的性能, 这里在NS2仿真平台上进行了对比试验,将本发明中的FNC算法和其他相关文献中的只基于 预设补偿的TCP/NC算法以及只基于反馈的V0N算法进行了对比。因为V0N只适用于基于RTT 的TCP拥塞控制算法,所以只在Vegas下进行了 V0N的实验测量,而TCP-FNC和TCPNC均在 Vegas和Reno下作了实验对比。
[0132] 为了对比分析,首先在Vegas下比较了FNC和TCP/NC以及V0N的应用层吞吐量 goodput以及平均解码时延average decoding delay两个性能指标。之后在Reno下对FNC和 TCP/NC比较了相应的指标。这三个详细的方案特性如下表1:
[0133] 表1方案特性
[0135] 实验的拓扑结构是一个两跳的无线网络,一个发送端一个接收端以及一个路由 器,每条链路容量均为C。第一条链路是有线链路并且传播实验为10ms。最后一条链路是无 线链路,这条链路的丢包率为P。这里首先研究了丢包率解码时延的影响,此时设定带宽为 固定值1Mbps。最后改变带宽为10Mbps和20Mbps来研究带宽对解码时延的影响。根据相关文 献,冗余系数R的理论值为1/(1-P)。但是根据有些文献的实验结果表明实际最优的冗余应 该微微高于其理论值,所以在实验时的时延中引入了一个冗余调整因子a来设置本次实验 时延中的预设冗余值为l+a(R_l)。参数设置如下表2:
[0136] 表2参数设置
[0138] 多带宽下实验结果如表3所示:
[0139] 表3平均解码时延(s)_10M/20M
[0140]
[0141] 从表3可以看出,本发明提供的基于反馈的网络编码TCP解码方法(简称FNC算法) 在解码时延方面相对于其他解码方法(TCPNC算法和V0N算法)具有明显的优势。
[0142] 基于上面的分析可知,本申请提供的基于反馈的网络编码TCP解码方法具有如下 优势:
[0143] 1、本发明提供的基于反馈的网络编码TCP解码方法结合了前向预设冗余以及基于 反馈的编码窗口调整。不仅能够根据基本的网络环境产生主动补偿,还可以基于反馈做出 合理编码窗口调整以加速解码矩阵满秩,完成解码。
[0144] 2、本发明提供的基于反馈的网络编码TCP解码方法能够很好地应对网络状况的动 态变化,预设的冗余因子用来抵抗网络的平均丢包,另外,接收端能够将网络的真实丢包信 息实时地反馈给发送方。即便网络的丢包信息是波动的,本发明也可以根据实时丢包信息 调整编码,加速接收方解码。
[0145] 3、在现有的一种基于反馈的解码方法中,ACK将丢包信息即解码端满秩所需的数 据包数目N告知发送端。发送端通过此反馈信息动态的额外补偿N个数据包给解码端。这类 技术的编码窗口包含了所有没有被ACK的数据包。因此所有的丢包均被编码所掩盖。所以这 类技术只适用于基于RTT的TCP拥塞控制机制。另外,不像TCP/NC的预设补偿,这种网络编码 TCP机制对丢包的补偿必须至少经过一个RTT。而且一旦在一个RTT内出现丢包,哪怕是只有 一个丢包,都会导致这一轮的补偿对成功解码失效。从而导致更大的解码时延。而发明提供 的基于反馈的网络编码TCP解码方法,并非是单纯的添加冗余。它能够在补偿真实丢包的情 况下,又不影响接收方对拥塞的判断。不仅可以适用于基于RTT的TCP拥塞控制算法,又可以 上适用于基于丢包的拥塞控制算法。
[0146] 本发明第三个实施例还提供了一种基于反馈的网络编码TCP解码装置,参见图4, 包括:更新单元41、确定单元42、判断单元43和处理单元44;
[0147] 更新单元41,用于在接收到上层传输控制协议TCP层发送的TCP数据包时,根据当 前链路丢包率对当前需要发送的编码包数量Sn进行更新:
[0148] Sn = Sn+R
[0149] 其中,R为根据当前链路丢包率确定的冗余系数,1?=1八1-?),?为当前链路丢包 率;
[0150] 确定单元42,用于根据当前时刻接收到的由接收端发送的应答消息中携带的反馈 信息确定当前的编码窗口锁的次数Ln;
[0151] 判断单元43,用于判断当前的编码窗口锁的次数Ln是否为0;
[0152] 处理单元44,用于在所述判断单元43确定当前的编码窗口锁的次数Ln不为0的情 况下,固定编码窗口,并将编码窗口内的W个TCP数据包按照所述编码包数量Lsw」进行预设 编码,以及将编码好的b&」个数据包发送至接收端;其中,W为编码窗口的大小。
[0153] 本实施例所述的装置可以用于执行上述第一个实施例所述的方法,其原理和技术 效果类似,此处不再详述。
[0154] 本发明第四个实施例还提供了另一种基于反馈的网络编码TCP解码装置,参见图 5,包括:第一消元单元51、判断单元52、丢弃单元53、第二消元单元54和发送单元55;
[0155] 第一消元单元51,用于在接收到一个编码包C时,从编码包C中提取编码系数向量 V,并将编码系数向量V加入解码矩阵,对编码系数向量V进行高斯-约旦消元;
[0156] 判断单元52,用于判断消元后的编码系数向量V是否为全零向量;
[0157] 丢弃单元53,用于在所述判断单元确定消元后的编码系数向量V为全零向量时,丢 弃编码包C;
[0158] 第二消元单元54,用于在所述判断单元确定消元后的编码系数向量V不为全零向 量时,将编码包C的负载部分加入解码缓冲区,并对编码包C的负载部分执行高斯-约旦消 元;
[0159] 发送单元55,用于在第二消元单元成功解码出数据包时,将成功解码出的数据包 发送给上层TCP层;
[0160]所述发送单元55,还用于向如第三个实施例所述的装置发送应答消息,所述应答 消息中携带有反馈信息,所述反馈信息用于使得如第三个实施例所述的装置确定所述编码 窗口锁的次数Ln。
[0161] 本实施例所述的装置可以用于执行上述第二个实施例所述的方法,其原理和技术 效果类似,此处不再详述。
[0162] 以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例 对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施 例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替 换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1. 一种基于反馈的网络编码TCP解码方法,其特征在于,包括: 当接收到上层传输控制协议TCP层发送的TCP数据包时,发送端根据当前链路丢包率对 当前需要发送的编码包数量Sn进行更新: Sn = Sn+R 其中,R为根据当前链路丢包率确定的冗余系数,R=l/(1-P),P为当前链路丢包率; 根据当前时刻接收到的由接收端发送的应答消息中携带的反馈信息确定当前的编码 窗口锁的次数Ln; 若当前的编码窗口锁的次数Ln不为O,则固定编码窗口,并将编码窗口内的W个TCP数据 包按照所述编码包数量b&」进行预设编码,以及将编码好的个数据包发送至接收端; 其中,W为编码窗口的大小。2. 根据权利要求1所述的方法,其特征在于,若当前的编码窗口锁的次数Ln为0,则滑动 编码窗口使之包含最近接收到的不超过W个TCP数据包,并将编码窗口内的TCP数据包按照 所述编码包数量[_办」进行预设编码,以及将编码好的bSk」个数据包发送至接收端。3. 根据权利要求1或2所述的方法,其特征在于,所述根据当前时刻接收到的由接收端 发送的应答消息中携带的反馈信息确定当前的编码窗口锁的次数Ln,包括: 根据当前时刻接收到的应答消息中携带的反馈信息中所包含的接收端欲成功解码所 缺少的数据包数量Ack. loss、上一时刻接收到的应答消息中携带的反馈信息中所包含的接 收端欲成功解码所缺少的数据包数量last, loss以及根据当前时刻接收到的应答消息中携 带的反馈信息中所包含的用于触发当前时刻的应答信息产生的数据包的序列号 Ack. trigSeq计算得到的发送端在发送拥有序列号Ack. trigSeq的数据包之后发送的冗余 包数量Rn,采用下述公式一确定当前的编码窗口锁的次数Ln: Ln=max{Ln+Ack. loss-last. Ioss-RnjOl 公式一 其中,Ack. loss-last, loss表示在两个应答消息之间出现的新的丢包数。4. 根据权利要求1或2所述的方法,其特征在于,在将编码好的个数据包发送至接收 端之后,所述方法还包括更新Ln为:5. 根据权利要求1或2所述的方法,其特征在于,在将编码好的L&7」个数据包发送至接收 端之后,所述方法还包括更新Sn为: Sn - 〇6. 根据权利要求1所述的方法,其特征在于,如果接收到的上层TCP层发送的TCP数据包 为重传包,则直接将该TCP数据包向接收端发送[_*&」次。7. -种基于权利要求1~6中任一种方法的网络编码TCP解码方法,其特征在于,包括: 当接收端接收到一个编码包C时,接收端从编码包C中提取编码系数向量V,并将编码系 数向量V加入解码矩阵,对编码系数向量V进行高斯-约旦消元; 若消元后的编码系数向量V变成全零向量,则丢弃编码包C,否则将编码包C的负载部分 加入解码缓冲区;其中,编码包C的负载部分为编码包C除去头部信息的数据信息部分; 对编码包C的负载部分执行高斯-约旦消元,若有数据包被顺序成功解码,将成功解码 的数据包发送给上层TCP层; 向发送端发送应答消息,所述应答消息中携带有反馈信息,所述反馈信息用于使得发 送端确定所述编码窗口锁的次数Ln。8. 根据权利要求7所述的方法,其特征在于,所述应答消息中携带的反馈信息中包括最 老的不可见包的序列号Ack. Seq和接收端当前欲成功解码所缺少的数据包数量Ack. loss, 以及触发当前时刻的应答信息产生的数据包的序列号Ack. trigSeq; 其中,最老的不可见包的序列号Ack. Seq用于告知发送端哪些数据包不需要再参与编 码和重传;对于一个C = Pi+q,fA编码包,Pi为可见包,Pi (l>i)为不可见包,Pi+i 为最老的不可见包,3,为编码系数。9. 一种基于反馈的网络编码TCP解码装置,其特征在于,包括: 更新单元,用于在接收到上层传输控制协议TCP层发送的TCP数据包时,根据当前链路 丢包率对当前需要发送的编码包数量Sn进行更新: Sn = Sn+R 其中,R为根据当前链路丢包率确定的冗余系数,R=l/(1-P),P为当前链路丢包率; 确定单元,用于根据当前时刻接收到的由接收端发送的应答消息中携带的反馈信息确 定当前的编码窗口锁的次数Ln; 判断单元,用于判断当前的编码窗口锁的次数Ln是否为0; 处理单元,用于在所述判断单元确定当前的编码窗口锁的次数Ln不为0的情况下,固定 编码窗口,并将编码窗口内的W个TCP数据包按照所述编码包数量1/?」进行预设编码,以及 将编码好的个数据包发送至接收端;其中W为编码窗口的大小。10. -种基于权利要求9所述装置的基于反馈的网络编码TCP解码装置,其特征在于,包 括: 第一消元单元,用于在接收到一个编码包C时,从编码包C中提取编码系数向量V,并将 编码系数向量V加入解码矩阵,对编码系数向量V进行高斯-约旦消元; 判断单元,用于判断消元后的编码系数向量V是否为全零向量; 丢弃单元,用于在所述判断单元确定消元后的编码系数向量V为全零向量时,丢弃编码 包C; 第二消元单元,用于在所述判断单元确定消元后的编码系数向量V不为全零向量时,将 编码包C的负载部分加入解码缓冲区,并对编码包C的负载部分执行高斯-约旦消元; 发送单元,用于在第二消元单元成功解码出数据包时,将成功解码出的数据包发送给 上层TCP层; 所述发送单元,还用于向如权利要求9所述的装置发送应答消息,所述应答消息中携带 有反馈信息,所述反馈信息用于使得如权利要求9所述的装置确定所述编码窗口锁次数Ln。
【文档编号】H04W28/02GK106027208SQ201610282604
【公开日】2016年10月12日
【申请日】2016年4月29日
【发明人】孙继燕, 张棪, 唐鼎, 张舒黎, 陈鑫
【申请人】中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1