一种实现TCP传输的方法及装置

申请号 CN201110303554.5 申请日 2011-10-09 公开(公告)号 CN102355462B 公开(公告)日 2015-05-20
申请人 大唐移动通信设备有限公司; 发明人 张浩; 赵巍; 张巧娟;
摘要 本 发明 公开了一种实现TCP传输的方法及装置,以提升跨3G无线网络的TCP连接的传输性能和提高空口带宽利用率。实现TCP传输的方法,包括:传输控制协议TCP代理接收 服务器 端发送的数据并在本地缓存,向所述服务器端反馈确认符ACK,所述数据为所述服务器端与终端建立TCP连接之后需要通过所述TCP代理发送给所述终端的数据;所述TCP代理与所述服务器端之间通过有线进行数据传输,所述TCP代理与所述终端之间通过空口进行数据传输;TCP代理以满带宽向所述终端发送本地缓存的数据,所述满带宽是指所述TCP代理与所述终端之间的传输通道所能承载的最 大数据 量。
权利要求

1.一种实现TCP传输的方法,其特征在于,包括:
传输控制协议TCP代理接收服务器端发送的数据,根据所述数据携带的终端的标识,将所述数据缓存到本地与所述终端对应的缓存器中,向所述服务器端反馈确认符ACK,所述数据为所述服务器端与终端建立TCP连接之后需要通过所述TCP代理发送给所述终端的数据;所述TCP代理在所述终端对应的缓存器的数据量达到设定的数据量阈值时,向所述服务器端发送TCP代理接收窗口为0的通知消息,以通知所述服务器端暂停下发数据;以及,在所述终端对应的缓存器的数据量低于设定的数据量阈值时,向所述服务器端发送所述TCP代理接收窗口不为0的通知消息,以通知所述服务器端继续下发数据;所述TCP代理与所述服务器端之间通过有线进行数据传输,所述TCP代理与所述终端之间通过空口进行数据传输;
当空口质量恢复时,TCP代理以满带宽向所述终端发送本地缓存的数据,所述满带宽是指所述TCP代理与所述终端之间的传输通道所能承载的最大数据量。
2.如权利要求1所述的方法,其特征在于,所述数据量阈值根据下式设置:
Storage=a×(B×RTT)
上式中,所述Storage为数据量阈值,所述a为大于1的缓存系数,(B×RTT)为所述满带宽,所述B为分配给所述TCP代理的空口带宽,RTT为所述TCP代理与所述终端之间的3G空口往返时延。
3.如权利要求2所述的方法,其特征在于,所述a的取值为2~3;和/或,所述终端对应的缓存器的总容量为所述数据量阈值的1.2~1.5倍。
4.如权利要求1所述的方法,其特征在于,还包括:
所述TCP代理在向所述终端发送数据之后且接收到所述终端反馈的相应的ACK时,继续向所述终端下发数据,以确保所述传输通道的传输数据量为满带宽;
和/或,所述TCP代理在接收到服务器端下发的数据时,判断所述传输通道的传输数据量是否低于所述满带宽,若是则将所述服务器端下发的数据发送给所述终端,否则在本地缓存所述服务器端下发的数据。
5.如权利要求1所述的方法,其特征在于,还包括:
所述TCP代理在确定所述服务器端下发的数据发生乱序或丢失时,在本地对接收到的数据按照序列号重新排序,并向所述服务器端反馈重复ACK。
6.如权利要求1所述的方法,其特征在于,还包括:
所述TCP代理在接收到所述终端反馈的重复ACK时,重传相应的数据;
所述TCP代理向所述终端重传所述相应的数据的次数少于设定的次数阈值。
7.如权利要求1所述的方法,其特征在于,当所述终端需要向所述服务器端都发送数据时,还包括:
所述TCP代理在向所述服务器端发送第n个ACK即ACKn之后,接收到所述终端发送的捎带第i个ACK即ACKi的数据时,将该数据中携带的ACKi修改为ACKn之后发送给所述服务器端,所述i当所述TCP代理接收到所述终端发送的纯ACK时,丢弃接收到的纯ACK。
8.一种TCP代理,其特征在于,包括:
有线信道收发单元,用于接收服务器端发送的数据,并向所述服务器端反馈确认符ACK,所述数据为所述服务器端与终端建立传输控制协议TCP连接之后需要发送给所述终端的数据;
数据缓存单元,用于根据所述数据携带的所述终端的标识,将所述有线信道收发单元接收到的数据缓存到本地与所述终端对应的缓存器中;
流量控制单元,用于当空口质量恢复时,控制无线信道收发单元以满带宽向所述终端发送数据,所述满带宽是指所述TCP代理与所述终端之间的传输通道所能承载的最大数据量;在所述终端对应的缓存器的数据量达到设定的数据量阈值时,通过所述有线信道收发单元向所述服务器端发送TCP代理接收窗口为0的通知消息,以通知所述服务器端暂停下发数据;以及,在所述终端对应的缓存器的数据量低于设定的数据量阈值时,通过所述有线信道收发单元向所述服务器端发送所述TCP代理接收窗口不为0的通知消息,以通知所述服务器端继续下发数据;
无线信道收发单元,用于在所述流量控制单元的控制下以满带宽向所述终端发送本地缓存的数据,以及接收所述终端反馈的ACK。
9.如权利要求8所述的TCP代理,其特征在于,所述数据量阈值根据下式设置:
Storage=a×B×RTT
上式中,所述Storage为数据量阈值,所述a为大于1的缓存系数,(B×RTT)为所述满带宽,所述B为分配给所述TCP代理的空口带宽,RTT为所述TCP代理与所述终端之间的3G空口往返时延。
10.如权利要求8所述的TCP代理,其特征在于,所述流量控制单元进一步用于,在所述无线信道收发单元在向所述终端发送数据之后且接收到所述终端反馈的相应的ACK时,控制所述无线信道收发单元继续向所述终端下发数据,以确保所述传输通道的传输数据量为满带宽;
和/或,在所述有线信道收发单元接收到服务器端下发的数据时,判断所述传输通道的传输数据量是否低于所述满带宽,若是则控制所述无线信道收发单元将所述服务器端下发的数据发送给所述终端,否则控制所述数据缓存单元在本地缓存所述服务器端下发的数据。
11.如权利要求8所述的TCP代理,其特征在于,所述数据缓存单元进一步用于,在确定所述服务器端下发的数据发生乱序或丢失时,在本地对接收到的数据按照序列号重新排序;
所述有线信道收发单元进一步用于,在所述数据缓存单元确定向所述服务器端下发的数据发生乱序或丢失时,向所述服务器端反馈重复ACK。
12.如权利要求8所述的TCP代理,其特征在于,所述无线信道收发单元进一步用于,在接收所述终端反馈的重复ACK时,向所述终端重传相应的数据;
所述无线信道收发单元重传所述相应的数据的次数少于设定的次数阈值。
13.如权利要求8所述的TCP代理,其特征在于,当所述终端需要向所述服务器端都发送数据时,所述无线信道收发单元进一步用于,接收到所述终端发送的携带有第i个ACK即ACKi的数据时,将携带有ACKi的数据转发给所述有线信道收发单元;所述有线信道收发单元进一步用于,在接收到携带有ACKi的数据时,判断已经向所述服务器端反馈第n个ACK即ACKn时,将接收到的数据中携带的ACKi修改为ACKn之后发送给所述服务器端,所述i所述无线信道收发单元进一步用于,在接收到所述终端发送的纯ACK时,直接丢弃接收到的该纯ACK。
14.如权利要求8~13任一项所述的TCP代理,其特征在于,所述服务器端为文件传输协议FTP服务器或网页浏览WEB服务器。
15.一种无线网络控制器,其特征在于,包括8~13任一项所述的TCP代理。

说明书全文

一种实现TCP传输的方法及装置

技术领域

[0001] 本发明涉及通信领域,尤其涉及一种实现TCP(Transmission Control Protocol,传输控制协议)传输的方法及装置。

背景技术

[0002] 目前,第三代移动通信网络(如3G网络)由于空口带宽的大幅提升,使得ME(Mobile Equipment,移动终端设备)的PS(Packet Switch,分组交换)数据业务能得到显著的提高。典型的业务诸如FTP(File Transfer Protocol,文件传输协议)、WEB(网页浏览)等都离不开TCP的支持,因此,TCP传输质量的好坏将会在一定程度上影响到FTP、WEB等业务的性能。
[0003] TCP协议主要为针对有线网络提出的一种可靠的传输协议,由于有线网络的传输特性为低误码率和易拥塞性,因此,TCP传输控制算法主要是基于网络的拥塞模型设置。正常情况下,采用TCP协议可以实时的根据有线网络当前的拥塞状况调整数据发送速率,以充分利用传输带宽和减少网络拥塞的发生;但是,如图1所示当一个TCP连接同时跨越有线网络和无线网络时,TCP协议将不能适应无线传输信道的高误码率、高时延抖动、小区切换、易乱序等特性;当空口质量迅速恢复正常时,采用TCP协议需要经过如图2所示的慢启动过程和拥塞避免过程来进行数据传输,由于慢启动过程和拥塞避免过程都是以低于满带宽(满带宽是指传输通道所能承载的最大数据量)的速率发送数据,因此存在带宽资源利用率较低、有效带宽较低和吞吐波动较大等问题。
[0004] 目前,TCP协议的流量控制算法主要是指数据发送端的发送窗口的大小不能超过数据接收端的接收窗口的大小,数据发送端根据数据接收端的接收窗口的变化和数据接收端反馈的ACK来滑动发送窗口(即滑动窗口)。TCP协议包括多种拥塞控制算法,如慢启动算法、拥塞避免算法、快速重传算法和快速恢复算法;上述四种拥塞控制算法主要根据以下变量来控制发送数据:
[0005] 变量1、rwnd(Receivers’s Window,接收窗口),用于表示数据接收端当前能够接收和缓存的数据量大小;
[0006] 变量2、cwnd(Congestion Window,拥塞窗口或送窗口),用于表示数据发送端根据网络拥塞状况而确定出的允许发送的数据量;
[0007] 变量3、ssthresh(Slow Start Threshold,慢启动限),为慢启动过程和拥塞避免过程的分界点;
[0008] 变量4、RTT(Round Trip Time,往返时间),从数据发送端发送数据开始,到数据发送端收到来自数据接收端的确认所经历的时延。数据发送端的重传计时器的取值可以根据测量得到的RTT来设定,会随着网络时延、拥塞状况的变化而变化。
[0009] 数据发送端在向数据接收端发送数据时,将比较rwnd和cwnd的大小,将取值较小的变量确定为发送窗口(Transmission Window),并以该发送窗口向数据接收端发送数据。建立TCP连接的数据发送端与数据接收端均会实时测量RTT,并根据Jacobson算法估算重传计时器时长,当重传计时器超时时,认为发生了丢包,进而调整cwnd的大小,调整cwnd可如下:当后续数据被数据接收端确认之后,将cwnd调大;调大cwnd的过程可如图2所示,包括慢启动过程和拥塞避免过程,其中,慢启动过程中,以1个报文段(即1个MMS(Maximum Segment Size,最大分段长度))作为cwnd的起始值,并以指数增长直到cwnd的取值为ssthresh为止;拥塞避免过程中,cwnd以线性速度增长。
[0010] 一般情况下,在建立TCP连接的初期且重传计时器超时时,启动慢启动过程,并设置ssthresh=cwnd/2,且ssthresh最低不小于2个报文段大小。重传计时器超时,即数据发送端不能接收到数据接收端返回的任何一个ACK时,确定网络拥塞严重,可以启动慢启动过程,以降低数据发送量。但如果数据发送端收到数据接收端返回的Dup ACK时,确定网络可能出现瞬时拥塞或数据包乱序到达;或者,如果数据发送端在重传计时器超时之前连续收到3个Dup ACK(一共4个ACK具有相同的确认号),则确定某一数据包丢失,可立即启动快速重传算法,重传丢失的数据包;设置ssthresh=cwnd/2(ssthresh最低不小于2个报文段大小),以尽快进入拥塞避免过程,使cwnd线性增长。由此可见,快速重传算法之后直接进入拥塞避免过程而不是进入慢启动过程,从而能够更进一步的加快恢复过程。如图4所示为现有技术中进行TCP拥塞控制算法的方法流程图,该方法可包括:
[0011] 步骤401、启动慢启动过程;
[0012] 步骤402、当慢启动过程的cwnd值达到ssthresh时,启动拥塞避免过程;
[0013] 步骤403、服务器端的超时计时器是否已经超时,若是则执行步骤401,否则执行步骤404;
[0014] 步骤404、是否接收到3个或3个以上的Dup ACK,若是则执行步骤405,否则执行步骤404;
[0015] 步骤405、启动快速重传算法,重传丢失的数据包之后,启动拥塞避免过程。
[0016] 目前,针对同时跨越有线网络和无线网络的TCP连接,为提升TCP传输性能,提出以下两种解决方案:
[0017] 方案一、如图3所示的分段连接技术,即建立中间节点(如RNC(Radio Network Controller,无线网络控制器))与服务器端(如FTP/WEB服务器)之间的第一TCP连接,中间节点与ME之间的第二TCP连接;其中:第一TCP连接为有线连接,可以通过有线传输方式传输数据;第二TCP连接为无线连接,需要通过修改无线侧TCP的拥塞控制机制。采用方案一虽然可以在一定程度上提高TCP传输性能,但是需要在中间节点上部署2个TCP连接,并且还需要对ME上的TCP连接进行修正,方案较复杂。
[0018] 方案二、端到端技术;即保持TCP连接端到端语义,在TCP连接的中间节点(如RNC)上设计代理Proxy,通过Proxy的本地缓存、下行数据流量的控制、上行数据排序、本地重传、分裂ACK、合理利用Dup ACK(即重复ACK)等方式来增强无线侧的TCP传输性能,因此端到端技术也可以称为TPE(TCP Performance Enhancement,TCP性能增强)技术、PEP(Performance Enhancing Proxies,性能增强代理)技术或TCP Snoop技术。
[0019] 针对端到端技术,目前在3G网络中常见的TPE技术主要包括以下几种:
[0020] 1、分裂ACK方式;采用该种方式,可利用cwnd根据收到的ACK而增长的机制,在TPE上将从ME接收到的ACK分裂为两个ACK来加速FTP/WEB服务器的cwnd的增长,以实现发送数据的目的。所谓将1个ACK分裂为2个ACK是指将接收到的ACK的确认号划分为两部分分别确认;这种方式从理论上来说可以让TCP的慢启动过程和拥塞避免过程分别比现有的方式快1倍。该种方式虽然可以加速让慢启动过程和拥塞避免过程,但如果空口质量反复变化,频繁的进行慢启动过程和拥塞避免过程仍然会存在空口带宽在瞬间恢复时不能满带宽使用的问题,因此仍然存在空口带宽资源浪费较大的问题。
[0021] 2、TPE本地缓存、排序和重传;该种方式针对RNC而言包括上行和下行两个方向,上行是指RNC到FTP/WEB服务器的方向,下行是指RNC到ME的方向;RNC在下行空口链路层发生丢包时,可以直接进行本地重传,不需要得到FTP/WEB服务器的超时计时器超时时才重传,如RNC在接收到ME说反馈的1个或2个Dup ACK时就立即进行本地重传;针对上行方向,RNC在确定FTP/WEB服务器下发的数据包乱序时,可以在本地对接收到的数据包进行重排序并缓存,以避免FTP/WEB服务器向ME回复Dup ACK而使ME进入拥塞避免过程。采用该种方式,当没有收到ME反馈的ACK时则缓存数据,当FTP/WEB服务器发生报文乱序时进行本地排序,并在检测到空口可能丢包时需要在FTP/WEB服务器侧的超时计时器超时进行数据包本地重传,或者在收到ME上报的1~2个Dup ACK时进行本地重传;对于TPE来说,收到较少的Dup ACK(少于3个)后进行本地重传比较容易实现,但要在FTP/WEB服务器的超时计时器超时进行重传难于实现。因此,对于FTP/WEB服务器下发的报文连续丢失或ME上报的ACK丢失的情况,TPE不会进行本地重传,只有在FTP/WEB服务器侧的超时计时器超时时才会进行本地重传,此时需要FTP/WEB服务器进行慢启动过程,而该慢启动过程会造成空口带宽资源的浪费。
[0022] 3、RNC向FTP/WEB服务器发送Dup ACK;当本地下行缓存为空时,RNC向FTP/WEB服务器发送3个Dup ACK,利用TCP的快速重传算法快速向ME发送数据;该种方式利用了快速重传算法虽然能够加快FTP/WEB服务器向ME下发数据的速度,但却以降低ssthresh为代价,因此,相对来说FTP/WEB服务器的发送窗口整体偏低,还是会存在空口宽带的浪费。
[0023] 4、RNC动态修改、调整ME的接收窗口(即rwnd),以使得FTP/WEB服务器调整发送窗窗口,加快对ME的数据传输速度;并且在TPE本地缓存的数据量增大到一定程度后,减小ME的接收窗口,以通知FTP/WEB服务器降低对ME的数据传输速度。该种方式通过动态增大ME的接收窗口来使FTP/WEB服务器增大发送窗口,但是发送窗口需要由cwnd和rwnd共同决定并不能随意增大,因此该种方式只适用于cwnd大于rwnd的情况,对于其他情况并不起作用。

发明内容

[0024] 针对现有技术存在的上述技术问题,本发明实施例提供一种实现TCP传输的方法及装置,以提升跨3G无线网络的TCP连接的传输性能和提高空口带宽利用率。
[0025] 一种实现TCP传输的方法,包括:
[0026] 传输控制协议TCP代理接收服务器端发送的数据并在本地缓存,向所述服务器端反馈确认符ACK,所述数据为所述服务器端与终端建立TCP连接之后需要通过所述TCP代理发送给所述终端的数据;所述TCP代理与所述服务器端之间通过有线进行数据传输,所述TCP代理与所述终端之间通过空口进行数据传输;
[0027] TCP代理以满带宽向所述终端发送本地缓存的数据,所述满带宽是指所述TCP代理与所述终端之间的传输通道所能承载的最大数据量。
[0028] 较佳地,所述TCP代理在本地缓存接收到的所述数据,具体包括:
[0029] 根据所述数据携带的所述终端的标识,将所述数据缓存到本地与所述终端对应的缓存器中。
[0030] 较佳地,上述方法还包括:所述TCP代理在所述终端对应的缓存器的数据量达到设定的数据量阈值时,向所述服务器端发送TCP代理接收窗口为0的通知消息,以通知所述服务器端暂停下发数据;以及,在所述终端对应的缓存器的数据量低于设定的数据量阈值时,向所述服务器端发送所述TCP代理接收窗口不为0的通知消息,以通知所述服务器端继续下发数据。
[0031] 较佳地,所述数据量阈值根据下式设置:
[0032] Storage=a×B×RTT
[0033] 上式中,所述Storage为数据量阈值,所述a为大于1的缓存系数,(B×RTT)为所述满带宽,所述B为分配给所述TCP代理的空口带宽,RTT为所述TCP代理与所述终端之间的3G空口往返时延。
[0034] 较佳地,所述a的取值为2~3;和/或,所述终端对应的缓存器的总容量为所述数据量阈值的1.2~1.5倍。
[0035] 较佳地,上述方法包括:所述TCP代理在向所述终端发送数据之后且接收到所述终端反馈的相应的ACK时,继续向所述终端下发数据,以确保所述传输通道的传输数据量为满带宽;
[0036] 和/或,所述TCP代理在接收到服务器端下发的数据时,判断所述传输通道的传输数据量是否低于所述满带宽,若是则将所述服务器端下发的数据发送给所述终端,否则在本地缓存所述服务器端下发的数据。
[0037] 较佳地,上述方法还包括:所述TCP代理在确定所述服务器端下发的数据发生乱序或丢失时,在本地对接收到的数据按照序列号重新排序,并向所述服务器端反馈重复ACK。
[0038] 较佳地,上述方法还包括:所述TCP代理在接收到所述终端反馈的重复ACK时,重传相应的数据;
[0039] 所述TCP代理向所述终端重传所述相应的数据的次数少于设定的次数阈值。
[0040] 较佳地,当所述终端需要向所述服务器端都发送数据时,上述方法还包括:所述TCP代理在向所述服务器端发送第n个ACK即ACKn之后,接收到所述终端发送的捎带第i个ACK即ACKi的数据时,将该数据中携带的ACKi修改为ACKn之后发送给所述服务器端,所述i<n;
[0041] 当所述TCP代理接收到所述终端发送的纯ACK时,丢弃接收到的纯ACK。
[0042] 本发明实施例还提供一种TCP代理,该TCP代理可包括:
[0043] 有线信道收发单元,用于接收服务器端发送的数据,并向所述服务器端反馈确认符ACK,所述数据为所述服务器端与终端建立传输控制协议TCP连接之后需要发送给所述终端的数据;
[0044] 数据缓存单元,用于将所述有线信道收发单元接收到的数据缓存到本地;
[0045] 流量控制单元,用于控制无线信道收发单元以满带宽向所述终端发送数据,所述满带宽是指所述TCP代理与所述终端之间的传输通道所能承载的最大数据量;
[0046] 无线信道收发单元,用于在所述流量控制单元的控制下以满带宽向所述终端发送本地缓存的数据,以及接收所述终端反馈的ACK。
[0047] 较佳地,所述数据缓存单元,具体用于,根据所述数据携带的所述终端的标识,将所述数据缓存到本地与所述终端对应的缓存器中。
[0048] 较佳地,所述流量控制单元进一步用于,在所述终端对应的缓存器的数据量达到设定的数据量阈值时,通过所述有线信道收发单元向所述服务器端发送TCP代理接收窗口为0的通知消息,以通知所述服务器端暂停下发数据;以及,在所述终端对应的缓存器的数据量低于设定的数据量阈值时,通过所述有线信道收发单元向所述服务器端发送所述TCP代理接收窗口不为0的通知消息,以通知所述服务器端继续下发数据。
[0049] 较佳地,所述数据量阈值根据下式设置:
[0050] Storage=a×B×RTT
[0051] 上式中,所述Storage为数据量阈值,所述a为大于1的缓存系数,(B×RTT)为所述满带宽,所述B为分配给所述TCP代理的空口带宽,RTT为所述TCP代理与所述终端之间的3G空口往返时延。
[0052] 较佳地,所述流量控制单元进一步用于,在所述无线信道收发单元在向所述终端发送数据之后且接收到所述终端反馈的相应的ACK时,控制所述无线信道收发单元继续向所述终端下发数据,以确保所述传输通道的传输数据量为满带宽;
[0053] 和/或,在所述有线信道收发单元接收到服务器端下发的数据时,判断所述传输通道的传输数据量是否低于所述满带宽,若是则控制所述无线信道收发单元将所述服务器端下发的数据发送给所述终端,否则控制所述缓存单元在本地缓存所述服务器端下发的数据。
[0054] 较佳地,所述数据缓存单元进一步用于,在确定所述服务器端下发的数据发生乱序或丢失时,在本地对接收到的数据按照序列号重新排序;
[0055] 所述有线信道收发单元进一步用于,在所述数据缓存单元确定向所述服务器端下发的数据发生乱序或丢失时,向所述服务器端反馈重复ACK。
[0056] 较佳地,所述无线信道收发单元进一步用于,在接收所述终端反馈的重复ACK时,向所述终端重传相应的数据;
[0057] 所述无线信道收发单元重传所述相应的数据的次数少于设定的次数阈值。
[0058] 较佳地,当所述终端需要向所述服务器端都发送数据时,所述无线信道收发单元进一步用于,接收到所述终端发送的携带有第i个ACK即ACKi的数据时,将携带有ACKi的数据转发给所述有线信道收发单元;所述有线信道收发单元进一步用于,在接收到携带有ACKi的数据时,判断已经向所述服务器端反馈第n个ACK即ACKn时,将接收到的数据中携带的ACKi修改为ACKn之后发送给所述服务器端,所述i<n;
[0059] 所述无线信道收发单元进一步用于,在接收到所述终端发送的纯ACK时,直接丢弃接收到的该纯ACK。
[0060] 较佳地,所述服务器端为文件传输协议FTP服务器或网页浏览WEB服务器。
[0061] 本发明实施例还提供一种无线网络控制器,前述TCP代理。
[0062] 本发明实施例中,TCP代理与服务器端有线连接,且TCP代理在接收到服务器端下发的数据时缓存至本地,且向所述服务器端反馈ACK,由于TCP代理反馈的ACK不需要通过空口发送,因此,TCP代理与服务器端之间的RTT较短,服务器端可以快速的向TCP代理下发数据,因此TCP代理可以快速的存储服务器端下发的数据,为后续TCP代理满带宽向终端发送数据提供足量数据;TCP代理与终端无线连接,并以满带宽向所述终端发送本地缓存的数据,因此可以充分利用空口带宽,克服现有技术中当空口质量恢复时服务器端需要启动慢启动过程和拥塞避免过程而导致不能使用满带宽向终端发送数据,从而导致空口带宽不能充分利用的问题。附图说明
[0063] 图1为现有技术中TCP连接跨越有线网络和无线网络的示意图;
[0064] 图2为现有技术中采用分段连接技术实现服务器端与终端之间数据传输的示意图;
[0065] 图3为现有技术中TCP传输中进行慢启动过程和拥塞避免过程的示意图;
[0066] 图4为现有技术中进行TCP拥塞控制算法的方法流程图;
[0067] 图5为本发明实施例中实现TCP传输的方法流程图之一;
[0068] 图6为本发明实施例中实现TCP传输的方法流程图之二;
[0069] 图7为本发明实施例中实现TCP传输的方法流程图之三;
[0070] 图8为本发明实施例中实现TCP传输的方法流程图之四;
[0071] 图9为本发明实施例中实现TCP传输的方法流程图之五;
[0072] 图10为本发明实施例中TCP代理进行数据传输的信令流程图;
[0073] 图11为本发明实施例中TCP代理采用滑动窗口机制进行空口数据传输的示意图;
[0074] 图12为本发明实施例中实现TCP传输的装置的结构示意图。

具体实施方式

[0075] 针对现有技术存在的上述技术问题,本发明实施例提供一种实现TCP传输的方法及装置,以提升跨3G无线网络的TCP连接的传输性能和提高空口带宽利用率。实现TCP传输的方法,可包括:TCP代理接收服务器端发送的数据并在本地缓存,向所述服务器端反馈确认符ACK,所述数据为所述服务器端与终端建立TCP连接之后需要通过所述TCP代理发送给所述终端的数据;所述TCP代理与所述服务器端之间通过有线进行数据传输,所述TCP代理与所述终端之间通过空口进行数据传输;TCP代理以满带宽向所述终端发送本地缓存的数据,所述满带宽是指所述TCP代理与所述终端之间的传输通道所能承载的最大数据量。采用本发明技术方案,TCP代理与服务器端有线连接,且TCP代理在接收到服务器端下发的数据时缓存至本地,且向所述服务器端反馈ACK,由于TCP代理反馈的ACK不需要通过空口发送,因此,TCP代理与服务器端之间的RTT较短,服务器端可以快速的向TCP代理下发数据,因此TCP代理可以快速的存储服务器端下发的数据,为后续TCP代理满带宽向终端发送数据提供足量数据;TCP代理与终端无线连接,并以满带宽向所述终端发送本地缓存的数据,因此可以充分利用空口带宽,克服现有技术中当空口质量恢复时服务器端需要启动慢启动过程和拥塞避免过程而导致不能使用满带宽向终端发送数据,从而导致空口带宽不能充分利用的问题。
[0076] 下面结合说明书附图对本发明技术方案进行详细的描述。
[0077] 参见图5,为本发明实施例中实现TCP传输的方法流程图,该方法包括:
[0078] 步骤501、TCP代理接收服务器端发送的数据并在本地缓存,向所述服务器端反馈ACK,所述数据为所述服务器端与终端建立TCP连接之后需要通过所述TCP代理发送给所述终端的数据。
[0079] 本发明实施例中,TCP代理与服务器端有线连接,并通过有线传输方式进行数据传输;TCP代理与所述终端无线连接,通过空口进行数据传输。
[0080] 步骤502、TCP代理以满带宽向所述终端发送本地缓存的数据,所述满带宽是指所述TCP代理与所述终端之间的传输通道所能承载的最大数据量。
[0081] 本发明实施例中,在TCP代理上为各终端建立对应的缓存器,在上述步骤501中,当TCP代理接收到服务器端发送的数据时,可根据该数据携带的终端的标识,将所述数据缓存到本地与所述终端对应的缓存器中。
[0082] 较佳地,由于有线的数据传输一般比无线传输的速度更快,为避免服务器端发送给TCP代理的数据量远远大于TCP代理下发给终端的数据,使得TCP代理的数据溢出而导致数据丢包的问题,上述方法流程的步骤501与步骤502之间还可包括步骤503,如图6所示:
[0083] 步骤503、TCP代理在所述终端对应的缓存器的数据量达到设定的数据量阈值时,向所述服务器端发送TCP代理接收窗口为0的通知消息,以通知所述服务器端暂停下发数据;以及,在所述终端对应的缓存器的数据量低于设定的数据量阈值时,向所述服务器端发送所述TCP代理接收窗口不为0的通知消息,以通知所述服务器端继续下发数据。
[0084] 较佳地,为避免有线传输侧出线网络拥塞,上述数据量阈值的大小设置为大于满口带宽,所述数据量阈值可根据下式(1)设置:
[0085] Storage=a×B ×RTT 式(1)
[0086] 式(1)中,所述Storage为数据量阈值,所述a为大于1的缓存系数,(B×RTT)为所述满带宽,所述B为分配给所述TCP代理的空口带宽,RTT为所述TCP代理与所述终端之间的3G空口往返时延。在3G网络中,一般情况下分配给TCP代理的空口带宽B一般为空口带宽典型值(如2Mbps);RTT可根据3G网络空口典型时延计算,一般为100ms左右;a可以取值为2~3,如:有线侧典型带宽远大于无线侧带宽时,a可以取2,有线侧典型带宽与无线侧带宽相近时,a可取3。
[0087] 较佳地,在所述终端对应的缓存器的数据量达到设定的数据量阈值时,TCP代理虽然向所述服务器端发送TCP代理接收窗口为0的通知消息,但是服务器端后续还是可能会有数据下发,如果所述终端对应的缓存器的总容量与数据量阈值相同则可能会导致后续下发的数据丢失,因此,为避免出现这种情况,本发明实施例中,将所述终端对应的缓存器的总容量设置为大于所述数据量阈值,可以将终端对应的缓存器的总容量设置为所述数据量阈值的1.2~1.5倍,具体的可如:当有线侧往返时延较短时可取1.2,如有线侧往返时延较较长时可取1.5。
[0088] 较佳地,为进一步确保TCP代理以满带宽向所述终端发送数据,上述方法流程中步骤502之后还可包括以下步骤:TCP代理接收终端反馈的相应ACK时,继续向所述终端下发数据,以确保所述TCP代理与所述终端之间的传输通道的传输数据量为满带宽;
[0089] 或者,在所述步骤501中还可包括步骤:TCP代理在接收到服务器端下发的数据时,判断所述传输通道的传输数据量是否低于所述满带宽;若是则将所述服务器端下发的数据发送给所述终端,否则在本地缓存所述服务器端下发的数据。
[0090] 较佳地,为避免由于服务器端下发的数据发生乱序或丢失而导致TCP代理发送给终端的数据不完整,而导致不必要的数据重传等操作,本发明实施例中,在上述流程的步骤503之前或之后还可包括步骤504,如图7所示为在步骤503之后还包括步骤504:
[0091] 步骤504、TCP代理在确定所述服务器端下发的数据发生乱序或丢失时,在本地对接收到的数据按照序列号重新排序,并向所述服务器端反馈重复ACK。
[0092] 较佳地,为提高数据下发的成功率与效率,本发明实施例中,还可在TCP代理实现数据重传,因此,可以在上述各方法流程的步骤502之后还可包括步骤505,如图8所示为在图7所示的步骤504之后还包括步骤505:
[0093] 步骤505、TCP代理在接收到所述终端反馈的重复ACK时,重传相应的数据。
[0094] 本发明实施例中,为避免为不影响空口带宽,TCP代理向终端重传数据的次数低于设定的次数阈值,该次数阈值可根据经验值设定,一般设置为2次。
[0095] 较佳地,当所述终端需要向所述服务器端都发送数据时,本发明实施例中的上述方法中的步骤502之后还可包括步骤506,如图9所述为在图8所示的步骤502之后还可包括步骤506,其中:
[0096] 步骤506、所述TCP代理在向所述服务器端发送第n个ACK即ACKn之后,接收到所述终端发送的捎带第i个ACK即ACKi的数据时,将该数据中携带的ACKi修改为ACKn之后发送给所述服务器端,所述i<n。
[0097] 本发明实施例中,当TCP代理接收到终端发送的纯ACK(纯ACK就是仅仅为用于对接收到的数据进行确认的ACK)时,直接丢弃该纯ACK。
[0098] 下面可以结合实际应用,对TCP代理的工作流程进行详细的描述,如图10所示为本发明实施例中TCP代理进行数据传输的信令流程图,该信令流程中以FTP/WEB服务器、设置有TCP代理的RNC和ME为例,包括:
[0099] 步骤1001、通过3次握手机制,建立FTP/WEB服务器与ME之间的TCP连接,并在设置有TCP代理的RNC上记录FTP/WEB服务器或ME的初始序列号和确认号等信息。该步骤可参见现有的TCP连接建立的过程。
[0100] 步骤1002、FTP/WEB服务器向TCP代理发送数据(包括数据1、数据2、....、数据m);以及,RNC在接收到数据之后缓存到本地,并向所述FTP/WEB服务器反馈相应的ACK(包括ACK1、ACK2、...、ACKm)以及该TCP代理的接收窗口,以便FTP/WEB服务器调节向TCP代理发送数据的发送速度。
[0101] 步骤1003、TCP代理以满带宽向ME下发数据,可使用滑动窗口协议下发数据;以及TCP代理接收ME反馈的相应的ACK。如图11所示,当所述FTP/WEB服务器下发的数据在空口滑动窗口内时,TCP代理将接收到的数据及时发送给ME;当FTP/WEB服务器下发的数据不在空口滑动窗口内时,TCP代理不向所述ME及时发送接收到的数据;当接收到ME反馈的ACK时,可将空口滑动窗口的左指针向右滑动定量的数据,右指针也向右滑动相应量的数据;空口滑动窗口的大小可以设置为MovWin=B×RTT,其中该RTT为ME与TCP代理之间的空口往返时延;无线链路层的发送缓存能力大于MovWin。
[0102] 本发明实施例中,由于TCP代理在接收到FTP/WEB服务器下发的每包数据时,针对该包数据都向FTP/WEB服务器反馈了相应的ACK,因此,当TCP代理在接收到ME上报的相应的ACK时,可以直接丢弃该ACK;但是针对ME上报的捎带ACK的数据时,需要修改确认号,并在修改确认号之后再发送给FTP/WEB服务器,如上述信令流程中还可包括:
[0103] 步骤1004、可选地,当TCP代理已经向FTP/WEB服务器返回第m个数据的ACK即ACKm时,TCP代理接收到ME上报的捎带ACK3的数据_1时,PCT代理将所述数据_1中的ACK3修改为ACKm,并将修改后的数据_1上报给FTP/WEB服务器。
[0104] 步骤1005、可选地,当PCT代理收到ME发送的重复ACK时,进行本地重传,为不影响空口带宽,可配置重传次数不超过2次。如PCT代理在接收到ME反馈的多个ACK2时,向ME重传数据3。
[0105] 步骤1006、可选地,当PCT代理的缓存器中存储的数据量达到设置的数据量阈值时,TCP代理向FTP/WEB服务器发送TCP代理接收窗口为0的通知消息,以通知FTP/WEB服务器停止向PCT代理继续下发数据。
[0106] 步骤1007、在需要拆除ME与FTP/WEB服务器之间的TCP连接时,进行4次握手过程,以释放TCP资源,该步骤可参见现有的TCP连接拆除过程。
[0107] 基于前述方法,本发明实施例还提供一种TCP代理,该TCP代理的结构可如图12所示,TCP代理与服务器端有线连接,并通过有线传输方式传输数据;TCP代理与终端无线连接,并通过空口传输数据;TCP代理包括:
[0108] 有线信道收发单元1,用于接收服务器端发送的数据,并向所述服务器端反馈确认符ACK,所述数据为所述服务器端与终端建立传输控制协议TCP连接之后需要发送给所述终端的数据;
[0109] 数据缓存单元2,用于将有线信道收发单元1接收到的数据缓存到本地;
[0110] 流量控制单元3,用于控制无线信道收发单元4以满带宽向所述终端发送数据,所述满带宽是指所述TCP代理与所述终端之间的传输通道所能承载的最大数据量;
[0111] 无线信道收发单元4,用于在流量控制单元3的控制下以满带宽向所述终端发送本地缓存的数据,以及接收所述终端反馈的ACK。
[0112] 较佳地,数据缓存单元2,具体用于,根据所述数据携带的所述终端的标识,将所述数据缓存到本地与所述终端对应的缓存器中。
[0113] 较佳地,流量控制单元3进一步用于,在所述终端对应的缓存器的数据量达到设定的数据量阈值时,通过所述有线信道收发单元1向所述服务器端发送TCP代理接收窗口为0的通知消息,以通知所述服务器端暂停下发数据;以及,在所述终端对应的缓存器的数据量低于设定的数据量阈值时,通过所述有线信道收发单元1向所述服务器端发送所述TCP代理接收窗口不为0的通知消息,以通知所述服务器端继续下发数据。
[0114] 较佳地,流量控制单元3进一步用于,在无线信道收发单元4在向所述终端发送数据之后且接收到所述终端反馈的相应的ACK时,控制所述无线信道收发单元4继续向所述终端下发数据,以确保所述传输通道的传输数据量为满带宽;
[0115] 和/或,在有线信道收发单元1接收到服务器端下发的数据时,判断所述传输通道的传输数据量是否低于所述满带宽,若是则控制所述无线信道收发单元4将所述服务器端下发的数据发送给所述终端,否则控制所述数据缓存单元2在本地缓存所述服务器端下发的数据。
[0116] 较佳地,数据缓存单元2进一步用于,在确定所述服务器端下发的数据发生乱序或丢失时,在本地对接收到的数据按照序列号重新排序;
[0117] 所述有线信道收发单元1进一步用于,在数据缓存单元2确定向所述服务器端下发的数据发生乱序或丢失时,向所述服务器端反馈重复ACK。
[0118] 较佳地,无线信道收发单元4进一步用于,在接收所述终端反馈的重复ACK时,向所述终端重传相应的数据。
[0119] 较佳地,无线信道收发单元4进一步用于,接收到所述终端发送的携带有第i个ACK即ACKi的数据时,将携带有ACKi的数据转发给所述有线信道收发单元1;
[0120] 有线信道收发单元1进一步用于,在接收到携带有ACKi的数据时,判断已经向所述服务器端反馈第n个ACK即ACKn时,将接收到的数据中携带的ACKi修改为ACKn之后发送给所述服务器端,所述i<n。
[0121] 本发明实施例中,无线信道收发单元4进一步用于,在接收到所述终端发送的纯ACK时,直接丢弃接收到的该纯ACK。
[0122] 较佳地,本发明实施例中的服务器端可以是FTP服务器端或者为WEB服务器端。
[0123] 本发明实施例还可以提供一种RNC,该RNC包括如图12所示的TCP代理。
[0124] 本发明实施例中,TCP代理与服务器端有线连接,且TCP代理在接收到服务器端下发的数据时缓存至本地,且向所述服务器端反馈ACK,由于TCP代理反馈的ACK不需要通过空口发送,因此,TCP代理与服务器端之间的RTT较短,服务器端可以快速的向TCP代理下发数据,因此TCP代理可以快速的存储服务器端下发的数据,为后续TCP代理满带宽向终端发送数据提供足量数据;TCP代理与终端无线连接,并以满带宽向所述终端发送本地缓存的数据,因此可以充分利用空口带宽,克服现有技术中当空口质量恢复时服务器端需要启动慢启动过程和拥塞避免过程而导致不能使用满带宽向终端发送数据,从而导致空口带宽不能充分利用的问题。
[0125] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
QQ群二维码
意见反馈