专利名称:数据发送控制方法及数据传输设备的制作方法
技术领域:
本发明涉及无线通信领域,特别涉及数据发送控制技术。
背景技术:
传输控制协议(Transmission Control Protocol,简称"TCP")是因特网 和互连网络使用的最基本的一种通信协议。现在已经成为网络通信的一种事 实上的标准。TCP的主要内容是提供进程间的通信机制和保证数据传输的可 靠性。可靠性包括确认信息数据分组的接收、标记分组的序列信息、保证分 组的完整性等,还包括对差错的控制,例如,没有收到确认信息、分组没有 按顺序到达、分组丢失或错投等情况时的处理规则等等。
根据TCP协议分析,TCP发送端能否发送新的数据包以及发送多少数据 包,是由发送窗口控制的,也称拥塞窗口(Congestion Window,简称"cwnd")。 发送窗口的变化主要与发送端接收到的确认信令(Acknowledgement,简称 "ACK")有关。TCP发送端根据收到的ACK中包含的TCP包序号的大小 来控制窗口的右移,根据收到的ACK的个数来控制窗口的增大。举例而言, 如图1所示,TCP发送端收到一个新的ACK,该ACK中包含的TCP包序号 为9,此时,TCP发送端根据收到的ACK中包含的TCP包序号的大小,将 发送窗口右移一个数据包的位置,即右移到10号包的位置,并根据收到的 ACK的个数,将发送窗口增大一个数据包的大小,增大到ll号包的位置。
目前,为了能够更好地保证数据传输的可靠性,已经出现了多种TCP优 化方案,如I-TCP算法,SNOOP和WTCP等,这些TCP优化方案都是通 过在TCP发送端和TCP接收端中间设置一个TCP代理来适配有线链路和无
线链路。如图2所示。
I - TCP算法通过TCP代理将TCP连接分成两段 一段为有线链接;一 段为无线链接。所以,TCP代理能够事先通过有线链路把数据包从服务器(即 TCP发送端)上取下来緩存在TCP代理中,在TCP代理收到数据包后,代 替终端(即TCP接收端)提前回复ACK,再根据无线链路的变化更快速、 灵活地控制发送速率,达到充分利用空口传输能力的目的。
SNOOP、 WTCP等优化方案在TCP代理实现本地重传、超时重传和发 送窗口机制,尽量避免和減少TCP发送端的重传,或者利用时间戳更准确地 估算环路传输时延,或者以较高的优先级来重传丢失的包,或者通过在TCP 代理实现更合理的控制前向速率算法,对TCP代理的功能进行增强和优化, 以提高TCP性能。
然而,本发明的发明人发现,SNOOP、 WTCP等TCP优化方案存在以 下问题当无线条件由好变差时,无线链路出现拥塞,由于TCP代理緩存有 限,只能緩存部分发送的数据包,如果服务器发送过多的数据包,TCP代理 就只能丢弃数据包,服务器在探知丢包后进入拥塞避免或者慢启动的状态, 从而影响了性能;当无线条件由差变好时,无线链路的传输能力突然增大, TCP代理快速将緩存中数据发送下去,最终因緩存无数据可发,导致管道被 清空而降低吞吐量。
I - TCP算法虽然可以提升TCP吞吐量,但是由于I - TCP算法提前把服 务器上的数据发送到TCP代理, 一旦切换发生,TCP代理数据来不及发送完 全,会导致数据丢失,而这时服务器由于早就收到TCP代理回送的ACK而 不会产生重传,这样TCP反而成了不可靠地传输;如果在切换时把旧TCP 代理侧的数据同步到新的TCP代理側,则使得切换操作复杂,切换时延大大 增加,甚至会引起上层TCP的连接断开。
总而言之,TCP代理可以控制其下游的前向链路速率,但无法控制其上
游的前向链路速率,即TCP代理无法控制服务器到TCP代理这一段的发送 速率,因此也就无法保证緩存足够的数据包,在无线条件变好后,容易发生 由于没有緩存数据包而不能有效利用无线带宽的情况,使得数据的传输缺乏 效率。
发明内容
本发明实施方式要解决的主要技术问题是提供一种数据发送控制方法 及数据传输设备,使得数据的传输可靠而高效。
为解决上述技术问题,本发明的实施方式提供了 一种数据发送控制方
法,包括以下步骤
接收来自发送端的数据并进行緩存,将緩存的数据发送给接收端;
接收接收端返回的表示收到数据的确认信令ACK;
根据緩存中未发送的数据量对接收端返回的ACK进行增加或删减处理, 将处理后的ACK发送给发送端,通过处理后的ACK数目控制发送端发送数 据的速率。
本发明的实施方式还提供了一种数据传输设备,包括
存储单元,用于緩存来自发送端的数据;
第 一发送单元,用于将存储单元中緩存的数据发送给接收端;
接收单元,用于接收接收端返回的表示收到数据的ACK;
处理单元,用于根据存储单元中未发送的数据量对接收单元收到的ACK 进行增加或删减处理;
第二发送单元,用于将处理单元处理后的ACK发送给发送端。
本发明实施方式与现有技术相比,主要区别及其效果在于
由于发送端是根据收到的ACK的数目来确定发送窗口的大小,因此根 据緩存中未发送的数据量对接收端返回给发送端的ACK进行增加或删除处 理,可以使得发送端的发送窗口大小与缓存的剩余空间大小相对应,使得在 緩存的剩余空间较大时,发送端能够下发更多的数据,提高数据的传输效率。 进一步,由于在本发明的实施方式中,无需代替接收端提前向发送端回复 ACK,从而在接收端(如终端)发生切换时,不会导致数据丟失。
图1是现有技术中发送窗口变化的示意图2是现有技术中通过TCP代理来适配有线链路和无线链路的示意图; 图3是根据本发明第一实施方式的数据发送控制方法流程图; 图4是根据本发明第三实施方式的数据传输设备结构图; 图5是根据本发明第三实施方式的数据传输设备中处理单元的示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发 明的实施方式作进一步地详细描述。
本发明的第一实施方式涉及一种数据发送控制方法,在本实施方式中, TCP代理接收来自发送端的数据并进行緩存,将緩存的数据发送给接收端。 在接收到接收端返回的ACK后,根据緩存中未发送的数据量对接收端返回 的ACK进行增加或删减处理,将处理后的ACK发送给发送端,通过所发送 的ACK数目控制发送端发送数据的速率。其具体流程如图3所示。
在步骤310中,TCP代理接收来自发送端的数据并将来自发送端的数据 进行緩存,再将緩存的数据发送给接收端。
接着,进入步骤320, TCP代理接收来自接收端的确认信令ACK。也就
是说,接收端收到由TCP代理转发的数据后,向TCP代理发送ACK,表示 接收端已成功收到来自发送端的数据。
接着,进入步骤330, TCP代理根据緩存中未发送的数据量对接收端返 回的确认信令ACK进行处理,并将经处理后的ACK发送给发送端。
具体地说,当TCP代理收到确认信令ACK后,根据緩存中未发送的数 据量对收到的确认信令ACK进行处理。如果緩存中未发送的数据量大于第 一门限,则抛弃接收端返回的至少一个ACK,将未抛弃的ACK发送给发送 端;如果緩存中未发送的数据量小于第二门限,则将接收端返回的至少一个 ACK分割为至少两个,分割得到的一个ACK对应的数据包的序号不变,其 余ACK对应的数据包的序号递减,将分割后的ACK全部发送给发送端。其 中,第二门限小于第一门卩艮;如果TCP代理连续地收到至少三个相同的ACK, 并且緩存中未发送的数据量小于第三门限,则对该ACK进行复制,可以对 所收到的至少三个相同的ACK中的任意一个或多个进行复制,并将复制得 到的ACK全部发送给发送端;如果TCP代理已连续地收到至少三个相同的 ACK,并且緩存中未发送的数据量大于第四门限,则对之后收到的相同的 ACK作选择性抛弃,比如,每收到两个或多个相同的ACK抛弃一个,并将 未抛弃的ACK发送给发送端。其中,第四门限大于第三门限。需要说明的 是,上述的第一门限、第二门限、第三门限和第四门限是TCP代理根据緩存 的大小进行设置的。如果緩存中未发送的数据量不满足上述任一条件,则不 对ACK进行处理,直接将收到的ACK发送给发送端。
比如说,如果緩存中未发送的数据量大于第一门限,即说明前向无线链 路侧带宽相对较窄,则需要控制前向有线链路侧的数据速率。TCP代理可以 对接收端返回的ACK进行有概率的丢弃,仅将未抛弃的ACK发送给发送端, 以适当减少发送端接收到的ACK的数量,间接控制发送窗口的大小来达到 减緩发送数据的速率,将发送端发送的数据量减少到接收端可以接受的范围
内,避免緩存数据溢出。
如果緩存中未发送的数据量小于第二门限,即说明无线链路的传输能力
较强,则需要发送端快速发送数据。TCP代理可以分割接收端返回的ACK, 以适当增加发送端接收到的ACK的数量,并将分割得到的ACK全部发送给 发送端。例如可以将一个ACK分割成三个ACK,其中一个ACK对应的数据 包的序号与原来的一样大,另外两个ACK对应的数据包的序号依次递减, 先将序号较小的ACK传送到发送端,再传送序号较大的ACK,最后传送序 号最大的ACK。通过分割接收端返回的ACK,使得在增加ACK的个数的同 时,不会错误引发快速重传,并且使得发送端的发送窗口快速增长,提高数 据发送频率,提高緩存的数据量,避免因为緩存中没有数据而降低数据传输 的速率。
如果TCP代理已连续地收到至少三个相同的ACK,表示发送端也将进 入快速重传和拥塞避免阶段,发送端的发送窗口将会减小,可能会减小为原 来的一半再加三个报文段。由于发送窗口变小,使得发送端无法发送新数据 包,这样发送速率将会减小,有管道被清空的可能性。在这种情况下,TCP 代理需要根据緩存区的情况进行分别处理,如果緩存中未发送的数据量小于 第三门限,表明緩存区的剩余空间足够大,则TCP代理可以复制一定量的 ACK,然后将所有的ACK全部发送给发送端,以便快速增大发送窗口,促 使重传包和新包继续发送,保证数据传输速率,且不会导致其它数据包的快 速重传,安全、有效地提高了传输效率。如果緩存中未发送的数据量大于第 四门限,表明緩存区的剩余空间不够,则TCP代理选择性抛弃之后收到的部 分或全部重复的ACK,从而减少发送端收到的ACK的数目,控制发送窗口 的增长,避免緩存数据溢出。
由此可见,由于发送端是根据收到的ACK的数目来确定发送窗口的大 小,因此根据緩存中未发送的数据量对接收端返回给发送端的ACK进行增
加或删除处理,可以使得发送端的发送窗口大小与緩存的剩余空间大小相对 应,使得在緩存的剩余空间较大时,发送端能够发送更多的数据,提高数据 的传输效率。并且,由于在本发明的实施方式中,无需代替接收端提前向发
送端回复ACK,从而在接收端(如终端)发生切换时,不会导致数据丢失。
需要说明的是,本实施方式中,根据緩存中未发送的数据量对接收端返
回的ACK进行增加或删减处理的是TCP代理,发送端是网络侧的服务器, 接收端是终端;或者,发送端是终端,接收端是网络侧的服务器。
本发明的第二实施方式同样涉及一种数据发送控制方法,本实施方式与 第一实施方式大致相同,其区别在于,第一实施方式中,根据緩存中未发送 的数据量对接收端返回的ACK进行增加或删减处理的是TCP代理;而在本 实施方式中,发送端是网络侧的服务器,接收端、和根据緩存中未发送的数 据量对接收端返回的ACK进行增加或删减处理的是终端中的不同模块;或 者,发送端是终端,接收端、和根据緩存中未发送的数据量对接收端返回的 ACK进行增加或删减处理的是网络服务器中的不同模块。
可见,以上处理ACK的实体并不局限于是TCP连接的中间节点(比如 TCP代理),也可以是任何TCP接收端,只要能够控制和处理ACK即可。
由于发送端和接收端可以是不同的组合,并且根据緩存中未发送的数据 量对接收端返回的ACK进行增加或删减处理的可以是任何TCP接收端和 TCP中间的连接节点,从而使得本发明的实施方式可灵活实现。
本发明的第三实施方式涉及一种数据传输设备,如图4所示,包括存 储单元,用于緩存来自发送端的数据;第一发送单元,用于将存储单元中緩 存的数据发送给接收端;接收单元,用于接收该接收端返回的表示收到数据 的ACK;处理单元,用于根据存储单元中未发送的数据量对接收单元收到的 ACK进行增加或删减处理;第二发送单元,用于将处理单元处理后的ACK 发送给发送端,通过处理后的ACK,控制发送端发送数据的速率。
由此可见,根据緩存中未发送的数据量对接收端返回给发送端的ACK
进行增加或删除处理,可以使得发送端的发送窗口大小与緩存的剩余空间大 小相对应,使得在緩存的剩余空间较大时,发送端能够发送更多的数据,提 高数据的传输效率。并且,由于在本发明的实施方式中,无需代替接收端提
前向发送端回复ACK,从而在接收端(如终端)发生切换时,不会导致数据 丢失。
该数据传输设备的处理单元,如图5所示,还可以包括以下子单元抛 弃子单元,用于抛弃ACK;第一判断子单元,用于判断存储单元中未发送的 数据量是否大于第一门限,如果大于第一门限则指示抛弃子单元抛弃至少一 个接收单元收到的ACK。通过适当减少发送端接收到的ACK的数量,间接 控制发送窗口的大小来达到减緩发送数据速率的目的,将发送端发送的数据 量减少到接收端可以接受的范围内,避免緩存数据溢出。第二发送单元将抛 弃子单元未抛弃的ACK发送给发送端。
该数据传输设备的处理单元还可以包括以下子单元分割子单元,用于 分割ACK;第二判断子单元,用于判断存储单元中未发送的数据量是否小于 第二门限,如果小于第二门限,则指示分割子单元将接收单元收到的至少一 个ACK分割为至少两个,分割得到的一个ACK对应的数据包的序号不变, 其余ACK对应的数据包的序号递减。通过分割接收端返回的ACK,在增加 ACK的个数的同时,不会错误引发快速重传,并且使得发送端的发送窗口快 速增长,提高数据发送频率,提高緩存的数据量,避免因为緩存中没有数据 而降低数据传输的速率。分割子单元将分割得到的所有ACK输出到第二发 送单元,由第二发送单元将这些ACK发送给发送端。
该数据传输设备的处理单元还可以包括以下子单元复制子单元,用于 对ACK进行复制;第三判断子单元,用于判断接收单元是否连续地收到至 少三个相同的ACK,且存储单元中未发送的数据量小于第三门限,如果是则
指示复制子单元对上述至少三个ACK中的至少一个进行复制。通过对ACK 进行复制,可以增大发送窗口,加大数据传输的速率,且不会导致其它数据 包的快速重传,安全、有效地提高了传输效率。复制子单元将复制得到的所 有ACK输出到第二发送单元,由第二发送单元将这些ACK发送给发送端。
该数据传输设备的处理单元还包括以下子单元第四判断子单元,用于 判断接收单元是否已连续地收到至少三个相同的ACK,且存储单元中未发送 的数据量大于第四门限,如果是则指示抛弃子单元对接收单元之后再收到的 相同的ACK进行选择性抛弃,从而减少发送端收到的ACK的数目,控制发 送窗口的增长,避免緩存数据溢出。第二发送单元将抛弃子单元未抛弃的 ACK发送给发送端。
该数据传输设备可以是TCP代理或TCP代理中的单元,该数据传输设 备也可以是网络侧服务器或网络侧服务器中的单元,该数据传输设备还可以 是终端或终端中的单元,使得本发明的实施方式可灵活实现。
另外,值得一提的是,本实施方式中的各单元均为逻辑单元,在实际应 用中,可以有各种不同的物理实现方式。
综上所述,在本发明的实施方式中,由于发送端是根据收到的ACK的 数目来确定发送窗口的大小,因此根据緩存中未发送的数据量对接收端返回 给发送端的ACK进行增加或删除处理,可以使得发送端的发送窗口大小与 緩存的剩余空间大小相对应,使得在緩存的剩余空间较大时,发送端能够下 发更多的数据,提高数据的传输效率。并且,由于在本发明的实施方式中, 无需代替接收端提前向发送端回复ACK,从而在接收端(如终端)发生切换 时,不会导致数据丢失。
如果緩存中未发送的数据量大于第一门限,则抛弃至少一个接收端返回 的ACK,从而减少发送端收到的ACK的数目,控制发送窗口的增长,将发 送端发送的数据量减少到可以接受的范围内,避免緩存数据溢出。
如果緩存中未发送的数据量小于第二门限,则将接收端返回的至少一个
ACK分割为至少两个,从而使得发送端收到的ACK数目增多,增大发送端 的发送窗口,提高数据发送频率,提高緩存的数据量,避免因为緩存中没有 数据而降低数据传输的速率。
分割得到的各ACK中, 一个ACK对应的数据包的序号不变,其余ACK 对应的数据包的序号递减,从而在增加ACK数目的同时,不会错误引发快 速重传。
如果连续地收到至少三个相同的ACK,即至少三个ACK对应的数据包 相同,且该缓存中未发送的数据量小于第三门限,则对上述至少三个ACK 中的至少一个进行复制。由于三个或三个以上相同的ACK会引发发送端进 行快速重传,此时,发送窗口会大幅减小,将会导致数据传输的速率变小, 有信道被清空的可能性。通过对ACK进行复制,可以增大发送窗口,加大 数据传输的速率,且不会导致其它数据包的快速重传,安全、有效地提高了 传输效率。
如果连续地收到至少三个相同的ACK,且缓存中未发送的数据量大于第 四门P艮,则在之后再收到相同的ACK时,对所收到的ACK进行选择性抛弃。 从而减少发送端收到的ACK的数目,控制发送窗口的增长,避免緩存数据 溢出。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和 描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各 种改变,而不偏离本发明的精神和范围。
权利要求
1.一种数据发送控制方法,其特征在于,包括以下步骤接收来自发送端的数据并进行缓存,将缓存的数据发送给接收端;接收所述接收端返回的表示收到所述数据的确认信令ACK;根据缓存中未发送的数据量对所述接收端返回的ACK进行增加或删减处理,将处理后的ACK发送给所述发送端,通过所述处理后的ACK控制所述发送端发送数据的速率。
2. 根据权利要求1所述的数据发送控制方法,其特征在于,所述根据 緩存中未发送的数据量对所述接收端返回的ACK进行增加或删减处理的步 骤中,包括以下子步骤如果所述緩存中未发送的数据量大于第一门限,则抛弃至少一个所述接 收端返回的ACK。
3. 根据权利要求1所述的数据发送控制方法,其特征在于,所述根据 緩存中未发送的数据量对所述接收端返回的ACK进行增加或删减处理的步 骤中,包括以下子步骤如果所述緩存中未发送的数据量小于第二门限,则将至少一个所述接收 端返回的ACK分割为至少两个,分割得到的一个ACK对应的数据包的序号 不变,其余ACK对应的数据包的序号递减。
4. 根据权利要求1所述的数据发送控制方法,其特征在于,所述根据 緩存中未发送的数据量对所述接收端返回的ACK进行增加或删减处理的步 骤中,包括以下子步骤如果连续地收到至少三个相同的ACK,且所述緩存中未发送的数据量 小于第三门限,则对所述至少三个相同的ACK中的至少一个进行复制;和/ 或如果连续地收到至少三个相同的ACK,且所述緩存中未发送的数据量 大于第四门限,则在之后再收到所述相同的ACK时,对所收到的ACK进行 选择性抛弃。
5. 根据权利要求1至4中任一项所述的数据发送控制方法,其特征在 于,所述数据是TCP数据;所述发送端是网络侧的服务器,所述根据緩存中未发送的数据量对所述 接收端返回的ACK进行增加或删减处理的是传输控制协议TCP代理,所述 接收端是终端;或者所述发送端是终端,所述根据緩存中未发送的数据量对所述接收端返回 的ACK进行增加或删減处理的是传输控制协议TCP代理,所述接收端是网 络侧的服务器;或者所述发送端是网络侧的服务器,所述接收端、和所述根据緩存中未发送 的数据量对所述接收端返回的ACK进行增加或删减处理的是终端中的不同 模块;或者所述发送端是终端,所述接收端、和所述根据緩存中未发送的数据量对 所述接收端返回的ACK进行增加或删减处理的是网络侧服务器中的不同模 块。
6. —种数据传输设备,其特征在于,包括 存储单元,用于緩存来自发送端的数据;第一发送单元,用于将所述存储单元中緩存的数据发送给接收端;接收单元,用于接收所述接收端返回的表示收到所述数据的ACK;处理单元,用于根据所述存储单元中未发送的数据量对所述接收单元收 到的ACK进行增加或删减处理; 第二发送单元,
7. 根据权利要求6所述的数据传输设备,其特征在于,所述处理单元 包括以下子单元抛弃子单元,用于抛弃ACK;第一判断子单元,用于判断所述存储单元中未发送的数据量是否大于第 一门限,如果大于第一门限则指示所述抛弃子单元抛弃至少一个所述接收单 元收到的ACK。
8. 根据权利要求6所述的数据传输设备,其特征在于,所述处理单元 包括以下子单元分割子单元,用于分割ACK;第二判断子单元,用于判断所述存储单元中未发送的数据量是否小于第 二门限,如果小于第二门限,则指示所述分割子单元将所述接收单元收到的 至少 一 个ACK分割为至少两个,分割得到的 一 个ACK对应的数据包的序号 不变,其余ACK对应的数据包的序号递减。
9. 根据权利要求6所述的数据传输设备,其特征在于,所述处理单元 包括以下子单元复制子单元,用于对ACK进行复制;第三判断子单元,用于判断所述 接收单元是否连续地收到至少三个相同的ACK,且所述存储单元中未发送 的数据量小于第三门限,如果是则指示所述复制子单元对所述至少三个相同 的ACK中的至少一个进行复制;和/或抛弃子单元,用于抛弃ACK;第四判断子单元,用于判断所述接收单 元是否连续地收到至少三个相同的ACK,且所述存储单元中未发送的数据 量大于第四门限,如果是则指示所述抛弃子单元对所述接收单元之后再收到 的所述相同的ACK进行选择性抛弃。
10.根据权利要求6至9中任一项所述的数据传输设备,其特征在于, 所述数据传输设备为TCP代理或TCP代理中的单元;或者所述数据传输设备为网络侧服务器或网络侧服务器中的单元;或者所述数据传输设备为终端或终端中的单元。
全文摘要
本发明涉及无线通信领域,公开了一种数据发送控制方法及数据传输设备。本发明中,接收来自发送端的数据并进行缓存,将缓存的数据发送给接收端;接收接收端返回的表示收到数据的ACK;根据缓存中未发送的数据量对接收端返回的ACK进行增加或删减处理,将处理后的ACK发送给发送端,通过处理后的ACK控制发送端发送数据的速率,使得数据的传输可靠而高效。
文档编号H04L1/16GK101114999SQ200710045338
公开日2008年1月30日 申请日期2007年8月26日 优先权日2007年8月26日
发明者傅赛香 申请人:上海华为技术有限公司