TCP协议优化总结1.TCP协议的缺点分析传输控制协议TCP是TCP/IP协议栈中的传输层协议。根据统计,目前全球互联网数据流量90%以上通过TCP传输,通过UDP传输的不足10%。TCP这一设计于二十多年前的传输协议已经越来越不适应飞速发展的高速网络环境和新型应用的要求。当网络路径上存在一定的丢包和延时的情况下,TCP连接的吞吐显著下滑,常常无法有效地利用带宽,从而造成带宽的闲置和浪费,并必然导致远程数据传输耗时太长,应用响应缓慢甚至无法使用等问题。上图为TCP协议在不同的丢包率和延时下的传输效率的问题。由图可知随着网络丢包率和延时的上升,TCP协议传输效率大幅下降,造成这种现象的根本原因有两个:(1)TCP协议简单的将丢包作为拥塞判断的标准,一旦发现丢包,就转入拥塞控制阶段,发送窗口大幅下降,传输速率随之下降;而现代网络中很大一部分丢包并非由拥塞造成的,例如无线网络中信号衰减、干扰以及传输路径上的大量网络设备都可能造成丢包。(2)TCP协议的丢包判断及重传机制落后。其采用“3重ACK+超时”的方式进行丢包判断;通常链路的丢包都是双向的,因此接收端响应的ACK包也常常会丢失,所以很多情况下,标准TCP都是以超时方式来响应丢包并进行重传;这种方式对丢包的判断太不及时,导致丢包无法被快速重传,TCP传输迟迟无法从丢包中恢复;另外,在链路状况比较复杂(如无线网络环境下经常发生的丢包率或链路延时抖动)时,标准TCP往往会产生误判,这将导致额外过多的重传,使链路传输有效数据率下降,造成带宽资源浪费,并在链路繁忙时加重链路负担。2.优化思想分类2.1双边TCP优化双边TCP优化就是在TCP连接的两端部署硬件设备或安装软件。通常协议优化文献中所提到的多为双边优化。典型的方法是TCP透明代理,透明代理工作在TCP连接的两端,两个代理之间通常通过UDP或其它自定义协议工作,这些协议本身可以按照自己的要求进行控制,达到提高TCP性能的效果,此外双边TCP加速还可以引入压缩、缓存等技术进一步提高性能。双边TCP优化有一定的局限性,除非优化成果被集成到操作系统主流版本中,要不然想要使用这种优化效果就需要在客户机器上部署软件,这对其推广带来很大的麻烦。双边TCP优化通常用于公司内部的多个分支机构或者服务器之间。2.2单边TCP优化单边TCP优化即可以只在TCP的一端部署软件或设备来达到提升TCP性能的目标。其要求是经过代理发出去的协议必须是TCP协议。绝大多数单边TCP加速,都是通过改进TCP拥塞控制算法来进行加速。单边优化的特点使得其适应性更广也更灵活。3.优化思想综述此部分主要是针对已有优化思想的综述分析,按照网络场景的不同,已有优化主要分为针对有线网络的优化和针对无线网络的优化,通常针对有线网络的算法等方面的优化思想也同样适用于无线网络。3.1有线网络优化TCP协议自诞生以来主要应用场景即为有线网络,经过几十年的历练和优化其稳定性和性能已经达到了非常高的水平,然而针对特定的应用场景其依然存在诸多不足之处。针对现有现有TCP拥塞判断机制的不足冯彦君等提出了一种更好的识别网络拥塞的机制[1]。其识别具体方法如下:当发送端因假设网络拥塞而进入拥塞控制后,通过在数据包中增加时间戳选项头来判断刚才的假设是否正确(根据RFC1323:如果发送端采用时间戳选项头timestamp,则接收端将接收到的数据包中的timestamp取出,并不加改变的添加到该数据包的ACK包中),其过程如下:设第一个重传数据包x的发出时间为ts_first_rexmit,在收到重传数据包x的相应ACK包时,将该ACK包中的时间戳t_ack和ts_first_rexmit比较,如果相当,则说明该ACK包与重传数据包对应,则刚才网络拥塞假设正确;如果t_ackts_first_rexmit,即该ACK包应答的是重发之前的那次发送,则刚才网络拥塞的假设错误,拥塞响应也错误。随即将网络状态恢复到拥塞控制之前的状态。针对网络中经常出现的乱序现象,文献[2]采用启发式的规则来推断网络状态,在收到3个DupACK后的T1时间内直接假设是非拥塞引起的,不进入拥塞控制阶段;只有在T1时间之后仍然收到DupACK包才认为是拥塞造成的,而传统TCP直接认为所有乱序都由拥塞引起,通过延缓拥塞的判断,使得发送端发生错误判断的概率减小。3.2无线网络优化与有线网络相比无线网络有以下缺点:差错率高、带宽小、终端移动性、时延大、能量受限等。针对上述问题,当传统的TCP协议应用于无线网络时,其性能出现显著下降。无线网络中TCP协议的设计主要面临以下问题:(1)区别拥塞丢包和链路丢包。无线网络中,拥塞不再是丢包的唯一原因。无线链路的突发比特错误也会使包被破坏,导致TCP数据包或ACK确认包的丢失,易造成拥塞控制的误启动,信道错误导致TCP拥塞窗口震荡或保存在一个很小的值,严重影响系统的吞吐率。因此区分链路丢包和拥塞丢包对无线网络尤为重要。(2)TCP是一种主动探测网络可用带宽的协议,在无线网络环境中如何准确探测链路可用带宽,动态调节TCP拥塞窗口大小,也显得尤为重要。(3)在Adhoc网络或无线传感器网络中,以竞争为基础的介质访问控制机制,TCP会表现出严重的不稳定。研究表明,当两个节点都在对方的传输范围内时存在冲突和暴露终端问题。如果一个节点向其邻节点连续几次发送都不成功,就会引发路由失败,从而导致路由重发现。在路由发现期间,TCP确认信号返回超时,调用拥塞控制算法,造成TCP吞吐率严重波动。(4)终端移动性引起的网络分裂和重新聚合。移动性会引起两相邻节点之间的链路中断和路由失效进而造成包丢失。由于TCP无法区分路由失效丢包和拥塞丢包,因此,TCP拥塞控制机制对于路由失效丢包时间会误反应,启动拥塞控制导致吞吐率下降。针对无线网络中TCP拥塞控制方案的优化,主要可分为以下四类:(1)基于下层增强的TCP拥塞控制在无线网络环境中,TCP性能下降的主要原因是无线链路衰落快等特性,因此基于下层增强的拥塞控制主要思想是:对链路层进行增强,使其为TCP层提供一条稳定的无线链路。典型的无线链路增强技术包括自动请求重传(ARQ)[4]和向前差错纠正[5]。(2)基于分段技术的TCP拥塞控制基于分段技术的拥塞控制的基本思想是将网络分成有线网络和无线网络,对不同部分采用不同的传输控制协议。主要研究成果包括:I-TCP[6]。分段技术将网络分为两部分:有线网络和无线网络。两段分别进行优化,以提高胸痛整体性能。该方法的优点是不改动主机上的TCP。缺点是破坏了TCP端到端的含义,切并不能保证整体最优效果。(3)基于端到端技术的TCP拥塞控制端到端改进方案的主要思想是不依靠来自网络或上层应用的反馈,在传输层对TCP机制进行调整,不涉及跨层交互,属于TCP单层解决策略。F-TCP[7]、TCPveno[8]等属于端到端TCP改进方案。其中,F-TCP是利用TCP零窗口机制,检测切换信号,使固定主机的TCP脱离保持状态,进入先前的工作状态,F-TCP有效的使TCP源端探测到链路或路由中断,避免慢启动阶段的误触发,有效改善了TCP的性能。(4)基于跨层优化的拥塞控制基于跨层优化的拥塞控制是通过物理层、链路层或网络层将实时信道状态信息反馈到传输层,传输层协议根据网络动态情况调整控制机制,调节TCP窗口的大小。例如,显式拥塞通知ECN[9]。链路层将状态信息(ELN、ECN等)作为TCP选项信息封装在TCPACK中反馈给TCP发送端,TCP发送端根据状态信息来决定是否启动拥塞控制算法。针对最后一跳是WLAN的网络场景中,当无线终端出现包丢失时,无线终端可以通过接收到的分组间隔来判断包丢失原因,文献[3]中采用的判断规则为:帧间隔等于平均帧间隔时发生的包丢失为网络拥塞丢失,帧间隔等于两倍平均帧间隔时发生的包丢失为无线误码包丢失。针对TCP协议在无线网络中传输性能差的问题,文献[10]提出了一种新的协议CTCP协议的改版BCD-WTP,该方案主要对TCP协议数据报编码和带宽估算进行了改进。该协议发送的数据报不再以连续的序号对数据包编码,而改为随机线性编码报文,该编码技术能够较好的避免无线网络中乱序等原因造成的无效重传问题。此外对于无线网络带宽,采用了一种动态带宽估算技术,该技术能够比较准确的反应无线网络的实时带宽。4.协议优化的一些个人看法(1)实时调整拥塞窗口大小传统TCP协议发送方的拥塞窗口和接收方的滑动窗口通常在数据传输前或传输刚开始时已经设置好,传输的过程中不再变动。这种方法无法适应现代网络变化快的特点。且针对不同的网络环境,其最适合的窗口大小都可能不同,如何根据网络实时带宽和网络场景实时调整窗口的大小以达到最佳效果是现代TCP协议面临的一个问题。(2)正确识别乱序、误码等造成的重传传统TCP针对重传,都会认为是拥塞造成的进而启动拥塞控制,这种方式在某些场景尤其是无线网络环境中已经显得明显不足。如何更好的识别乱序、误码等造成的重传以及时调整网络对于无线网络传输性能有重要意义。(3)连续编码存在弊端传统TCP协议的连续编码机制也存在弊端,只要有乱序产生就会产生不必要的ACK,甚至更严重的问题。针对这种不足有文献提出块编码和随机线性编码,都有很好的借鉴意义。(4)流量均衡分配不一定好传统TCP协议对流量的分配是按照尽量均衡的原则进行分配,这种机制使得紧急的应用和不紧急的应用具有同等的流量竞争权,先开始传输的数据流和后开始传输的数据流也有同等的竞争权。这样,有些紧急的应用在数据完全到达前时钟已经到时就有可能重新发送请求,也可能造成先开始的传输数据重新请求。这些都造成了网络中的无效流量。现有文献中提出一种流量截止时间的概念并对流量的紧急性和重要性按优先级进行排序,这具有很好的借鉴意义。(5)单双优化结合针对帝联的网络场景复杂的情况,可以考虑单双边优化相结合的方式,即服务器之间采用双边优化,服务器与客户之间采用单边优化,是否存在协议切换是需要考虑的问题。5.参考文献[1]冯彦君,孙利民,钱华林,等.MANET中TCP改进研究综述[J].软件学报,2005,16(3):434-444.[2]SohrabiK,PottieGJ.Performanceofanovelself-organizationprotocolforwirelessad-hocsensornetworks[C]//VehicularTechnologyConference,1999.VTC1999-Fall.IEEEVTS50th.IEEE,1999,2:1222-1226.[3]CenS,CosmanPC,VoelkerGM.End-to-enddifferentiationofcongestionandwirelesslosses[J].IEEE/ACMTransactionsonNetworking(TON),2003,11(5):703-717.[4]SastryARK.Improvingautomaticrepeat-request(ARQ)performanceonsatellitechannelsunderhigherrorrateconditions[J].Communications,IEEETransactionson,1975,23(4):436-439.[5BurtonHO,SullivanDD.Errorsanderrorcontrol[J].ProceedingsoftheIEEE,1972,60(11):1293-1301.][6]BakreA,BadrinathBR.I-TCP:IndirectTCPformobilehosts[C]//DistributedComputingSystems,1995.,Proceedingsofthe15thInternationalConferenceon.IEEE,1995:136-143.[7]Sansa-OtimJ,RaiI,HulstJ.F-TCP:aDelay-basedProtocolwit