当前位置:首页 >> 互联网 >>

Linux网络测试床的设计与实现和环境自适应的拥塞控制协议研究


中南大学 硕士学位论文 Linux网络测试床的设计与实现和环境自适应的拥塞控制协议研 究 姓名:田回 申请学位级别:硕士 专业:计算机应用技术 指导教师:陈建二 20080401

摘要

由于传统实验性能评估手段的局限性,在真实的网络测试床上对 协议进行性能评测正逐渐成了主流的测试手段。本文首先对网络测试 床设计和实现的整个过程以及网络测试床实验配置的关键技术问题 进行深入的研究。本文详细介绍了基于Linux的网络测试床设计与实 现的整个过程,包括Linux网络测试床的拓扑设计;重新配置、编译 符合测试床需要的新的Linux内核;使用Netem和Dummynet来设置 可控的,特定的网络实验环境;TCP Socket Buffer的设置;TCP ECN 的设置;使用流量产生器产生测试流量;捕捉和处理实验数据。 随着网络的飞速发展,网络高速化和无线化的特征越来越明显。 在这种网络特征下,传统网络中的TCP拥塞控制协议已经显现出不 适应性。虽然各国学者也提出了一些针对高速网络或无线网络的TCP 改进协议,但是这些协议并不能同时在不同的网络环境下都获得较高 的性能。因此,拥塞控制协议如何实现环境自适应性,在不同的网络 环境下都能获得较高的性能,就变成了迫在眉睫的问题。本文在总结 前人工作的基础上,将Cubic高效的窗口增加机制和Westwood的窗 口减少机制结合起来,提出了一种环境自适应的拥塞控制机制JTCP, 并详细介绍JTCP在Linux内核中的实现过程,然后在我们搭建的网

络测试床上对JTCP就链路利用率、TCP友好性和Im公平性这个三 个性能指标进行了详细的比较测试。实验结果表明,JTCP在I册公
平性和TCP友好性没有明显下降的同时,能够在不同的网络环境下 都能获得较高的链路利用率。 本文最后对所做研究工作进行了总结,并阐述了网络测试床设计 实现的进一步研究方向和拥塞控制协议进一步优化的研究思路。 关键词:网络测试床,拥塞控制,TCP改进

ABSTRACT

In

light

of the

1imitations of traditional
on

experimental


method.
primary

performance evaluation

real network testbed is becoming

experimental approach.This thesis deals with the whole procedure of the
design and realization of network testbed.and several key technical
are

issues encountered with the network testbed configuration detail.Subsequently,we develop evaluation of existing


explored in

network testbed for the protocols,

performance
topology

transport

including

configuration,re—compi lation and re-build of Linux kernel,experiment
scenarios

setup

by

Netem

and

Dummynet.TCP

socket

buffer

configuration,ECN enable,traffic generation,and data capture and processing.

With the

rapid advances of network communication techniques and

explosive growth of network applications,the presenting

nowadays

network

is

two

obvious characteristics:backbone high—speed and edge traditional TCP protocol has suffered of link utilization and throughput

wireless.Within this situation.the
performance degradmion
in

terms

oscillation.Recently,many TCP variants have been proposed for either

hi2Il—speed
can

networks

or

wireless

networks.However,these
network
context

TCP variants

not

survive

in heterogeneous

because of their
an

inadaptability for various

network
network

scenarios.Therefore,it is

urgent
or

issue to enhance the scalability of the transport

protocol,and
as

weaken

eliminate the sensitivity transmission

to

context as

much

possible for high
context—aware

emciency ioint

in

heterogeneous

networks.A

transport
which iS

protocol,named JTCP,has been proposed in the dissertation,


version of CUBIC

and Westwood

in that CUBIC iS iS not

capable of utilizing available bandwidth effectively

and Westwood
in

suffe?red in wireless
Linux

network.The

proposed JTCP iS implemented in
are

kernel.and its

performances

investigated

our

testbed. RTT

Experiment results demonstrate that JTCP obtains satisfactory

faimess and maintains fine TCP—friendliness in heterogeneous networks.
JTCP
can

e衔ciently

utilize link capacity in bcIth wired

and

wireless



networks,which detaches the strong correlation between and window

network

context

adjustment mechanism.
our

Finally,the dissertation summaries up chapter.The further research direction
on

research work in the last testbed and protocol

network

optimization has been explored in detail afterward。 KEY WORDS:Network Testbed,Congestion control,TCP Enhancement

III

原创性声明
本人声明,所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我 共同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。

作者签名:—、翌塑

学位论文版权使用授权书
本人了解中南大学有关保留、使用学位论文的规定,即:学校 有权保留学位论文并根据国家或湖南省有关部门规定送交学位论文, 允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内 容,可以采用复印、缩印或其它手段保存学位论文。同时授权中国科 学技术信息研究所将本学位论文收录到《中国学位论文全文数据库》, 并通过网络向社会公众提供信息服务。

作者签名:∑望塑

导师签名:仝垒盈三

日期:丝年』月盟日

硕士学位论文

第一章绪论

第一章绪论

本章综述了两部分内容。一是介绍了传统TCP在高速延迟网络环境和无线网 络环境下面临的性能问题,分析了原因,并进一步引出了拥塞控制协议的环境自 适应问题。二是综述了网络协议性能评测的主要实验手段。最后介绍了本文所做 的主要工作和本文的组织结构。

1.1网络的发展和传统TCP面临的性能问题
计算机网络是上个世纪人类最伟大的发明创造之一。从1969年Intemet的

前身——美国国防部高级研究计划署为冷战目的而研制的ARPANET网络开始
投入运行,到迄今为止的短短三十几年时间,计算机网络已经对人类社会的进步 与发展产生了巨大的推动作用和深远的影响。它给人类信息交流的模式带来了一 场前所未有的革命,引发了世界范围内信息环境的改变,这是由技术革命所带来 的重大社会变革之一。互联网络对全球产生了广泛而深入的影响,已经渗透到经 济规划、行政管理、教育、医疗、制造业、金融和银行、交通、贸易、出版、能 源和环境保护等社会生活的各个领域Il】。 网络就给人们的生活带来了巨大的变化,并深刻地影响着人们的生活和工作 方式,而网络的发展也随着科技的进步发生了日新月异的变化。网络的概念是不 断发展的,不同的历史时期由于用户需求、市场的驱动以及人类对网络技术的研 究和实践,导致不同网络类型的诞生、发展和成熟。如今,核心高速化和边缘无 线化是目前网络的主要特征。 一方面,随着网络技术的飞速发展和接入性能的不断提高,Internet212]、 NSFCnett3】研究技术的不断突破,大规模的高速下一代互联网试验环境已经逐渐

形成。未来的几年里,骨干带宽为622Mbps(OC.12)、2.5Gbps(OC-48)和
10Gbps(OC.192)1拘高速长距离网络将成为下一代互联网中的主流网络。同时随着 高速网络的发展以及各种新型网络应用的产生,对网络的数据传输要求也将不断 提高,现在已经有越来越多的研究人员开始经常利用这些高速网络传输 lOGbps"一1Tbps的数据来进行科学研究,如量子物理学、地球观测学和射电天文 学等方面的海量数据研究。中国大陆相关机构也在积极开展新一代互联网发展战 略研究NSFCNET,中文全称是中国高速互联研究试验网络,即中国的下一代互 联网。在这种发展背景下,如今全世界的互联主干网络开始逐渐呈现出高带宽的 网络特性。

颈i学位论文

第一章绪论

另一方面,随着无线技术的逐渐成熟,无线网络已经融入互联弼络,并成为 其中的重要组成部分。IEEE 802.1l【4】等无线技术已经被广泛地部署在家庭、企业、 学校、车沾、机场等信息“热点”地区,为用户提供方便、抉捷的互联潮络访问
服务,用户可以利用电脑、手机、PDA等通过无线链路接入互联网络。因此,

从发展现状看,目前的互联网络在其边缘出现了无线化的特性。 但是,传统的TCP协议在这些新的网络环境下存在严重的性能问题。在高带 宽延迟网络中,TCP协议的“慢启动”和“拥塞避免”机制不适用于高速网络,保守 的加性增加和激进的乘性减少窗口管理策略抑制了TCP在高带宽延时网络下的 发展【51。举例说明,一个包长为1500字节和lOOms延时的标准TCP流,要快速 达到10Gbps的隧终剩用率的话,至少需要1/50亿的低丢包率。面一旦发生丢包, Elj于“拥塞避免”机制的保守性,从拥塞避免阶段恢复到网络高利用率稳态的话, 则至少需要1个多小时的恢复时闻,如图l。l所示15】。这在实际鼹络中完全无法
让人接受。






丢包

慧包

丢包
Bandwidl


慢纛动

~Z。 7‘ /‘
麴塞遴免 拥塞避免 拥塞避免

图I-1 TCP在10Gbps高带宽延时网络中的拥寨窗口变化曲线

在无线网络环境中,造成无线圈络TCP性能下降的凡个原露可以总结为以下
几种[6-9]:

f1)高比特误码率(BER) 无线网络的链路是有损介质,具有很高的比特误码率。比特误码会导致数据
包损坏甚至丢包,从而导致发送端超时、重传数据包,并启动拥塞控制机制。如 采重复性地发生这种错误,则会急蒯地降低TCP的性能。 (2)错误的丢包探测机制

标准TCP不能区分不同类型豹错误f随橇丢包、拥塞丢包等),它把锰何丢包
都看做拥塞丢包,并将窗口减半,而不管网络是否处于拥塞状态。过多的无线丢 包,导致拥塞窗隧频繁的减半,慢启动阚值也偏小,导致TCP性能严重下降。 (3)无线链路带宽 因为无线链路的带宽有限,结点可能只能使用很少的带宽,甚至没有带宽可


硕士学位论文

第一章绪论

以使用。导致发送端超时和信息丢失的时间增多。 (4)链路中断 蜂窝网络中,移动结点在蜂窝之间切换过程中有一个信号消失阶段。在这个 阶段,移动结点不能接收到任何发送端的数据,造成发送端超时。TCP发送端会 重传这些数据并启动拥塞控制,导致TCP性能下降。 (5)路由中断 在Ad hoc网络中,结点的移动可能会导致本次连接使用的路由中断。在重 新计算路由过程中,所有的数据包和确认包都会被丢弃。这将导致TCP发送端 超时。 (6)带宽不对称 卫星网络中,上行链路的带宽远远小于下行链路的带宽,容易造成ACKS丢 包,降'fk毛TCP性能。 (7)链路层时延 卫星网络链路层时延要比有线网络的时延大得多,标准TCP设定的定时器超

时间隔有时候不够大,导致发送端超时并启动拥塞控制。 目前,尽管在高带宽延迟网络和无线网络的传输控制研究领域取得了不少的
进展,但是这些传输控制机制仍存在许多的问题。如高速网络下的R1广r不公平

性严重、TCP友好性低下以及无线网络中区分丢包准确性不高等问题。而且,这 些协议都是基于单种网络模式所提出来的,现在并没有一种传输控制技术能够同 时适应高速网络、无线网络等多种网络环境。而如今,随着网络的发展,网络类 型逐渐多样化,但一般终端用户却不会根据不同网络类型来选择不同的拥塞控制 协议。因此,传输控制技术如何实现“用户透明网络访问"是迫在眉睫的主要问
题之一。

1.2网络性能评测综述
随着网络技术的快速发展,新的网络协议和服务应用不断的涌现。因此,如 何准确全面的测试和评价这些新的网络协议性能,是现在面临的一个主要问题。 传统的网络性能评价实验手段基本上分为二种:第一种方法一是实测,就是将待 分析的网络协议或是网络服务置于所需的真实背景网络之中,在实际运行过程
中,分析研究它们的网络性能特征。这样做的难点在于,首先随着网络的发展网

络协议越来越复杂,搭建所需拓扑结构代价较大,费用昂贵。其次,当关注特定
环境下的网络协议或是服务所表现出来的性能特征时,想要重复相同的网络条件

或是方便的控制网络条件已达到特定目的,是不易做到的。实测的优点是,如实
的反映了网络协议或是网络服务的性能状态缺点是因为搭建物理条件困难和不

硕士学位论文

第一章绪论

利于分析,往往只在实验后期才会采用。第二种方法是软件仿真(Simulation),在

人工合成的环境中用代码来描述网络模型的运行的网络仿真软件统称为
Simultor。它是在一个节点上建立一个网络模型,来模拟整个网络的业务和行为, 被分析的网络服务被重新编码后,运行与其上。

下面简单介绍两款著名的网络仿真(Simulation)软件:NS2tloJ和OPNETt¨J。 NS2是个离散事件仿真器。提供包级链路层以上的仿真。可以用于有线和无 线网络模型。NS2有一个提供架构仿真模块的仿真结构。这就可以实现协议间的 复杂仿真依赖。它也允许新协议和应用的快速独立的开发。NS2的特点在于使用 两种程式语言的结构,一些比较低级的工作,例如事件的处理、包的传送,这些 事情需要较高的处理速度,而且一旦完成就很少需要修改,所以使用C++是最佳 的选择。另外一方面,在做研究时常需要设定不同的网络环境、动态改变协议的
参数,这些事情使用Tcl这类的直译式语言将有较佳的弹性。它有点类似Unix

的Shell脚本。用户使用TCL指定节点、链路、数据源、队列、输出统计文件等 等。然后创建Tcl脚本运行并得到统计仿真数据,如果程序不出错的话。 NS2通过来连接两种语言之间的变量,在两种语言的特性互补下,使得NS2 成为兼具高效能与高弹性的网络模拟软件。NS2使用MIT发展的Otcl(Object Tcl) 作为描述、配置、执行模拟的语言,饥cl是Tel的面相对象的版本。在使用牙凉 醒网络模拟之前,必须先学会这个语言。以NS2进行仿真模拟大致可分为三个
步骤: (1)建立network model:描述整个网络的拓扑,带宽等信息。 (2)建立traffic model:描述所有的网络流量或背景流量的产生停止时间,协 议类型,或呈何种数学分布。

(3)追踪分析结果:模拟完成后,可由nam观察整个过程,或是从其产生的
数据文件中抽取想要的信息加以处理,分析。

OPNET是一个工程系统,它可以仿真大的通信网络,因为它拥有更详细的 协议模型和性能性能分析工具。OPNET包括模块的图形界面,一个动态的事件 调度仿真内核,集成数据分析工具和分层基于对象模型的建模,而且OPNET的
网络模型可以通过从模型库里拖拉相应部件手工生成不要编写代码建模,减少了

编程的复杂性,提供了各著名网络公司的产品模型,便于仿真的实现。但是和
NS2不同,OPNET是个商业工具软件,它由OPNET公司开发并出售。

使用OPNET进行仿真实验,大致的步骤如下:首先通过向导建立一个工程设
置网络类型,如公司网,校园网等,并选择模型库通过使用模型库里的可视化组 件建立相应模型在Application definition中设置网络业务类型及相应参数,如FTP

发送文件大小等。在profile definition中设置用户提供业务的一些相关属性,如



硕士学位论文

第一章绪论

FTP发送时间等。然后选择需要查看的统计信息,如延迟等。再设置仿真时间, 运行仿真,查看并分析仿真结果,最后生成仿真报告。 由于传统网络性能评测方法的缺点,使用网络仿真器(Emulation)来构建网络 测试床,并在网络测试床上对协议进行性能评测逐渐成为了新一代主流的实验手 段。它结合了实测和软件仿真的特点,弥补了二者各自的不足。它能提供给研究 者一个可控的、可再生的物理网络实验环境。更重要的是研究者可以设置可控的, 特定的网络环境如R]rT,丢包率,带宽,队列长度,并在真实的物理网络中运行 真正的数据业务流,而运行在其上的有待分析的协议和服务,并不再需要针对仿 真环境来重新编码。 常用的网络仿真器(Emulation)有Dummynet[121和Netem[1 31。 Dummynet是一种小巧的仿真软件,它运行在FreeBSD操作系统上。它通过 截获协议栈中相联协议层之间的通讯来实现网络条件的仿真的设置。Dummynet 适用于任何协议。要分析的协议所在层和下一层之间的通讯被Dummynet截获, 它通过控制被截获的通讯流的带宽,队长,传播延迟,和丢包率,来实现要模拟 的网络环境。Dummynet具有Simulator和Real testing(实测)两者的优点,不仅对 网络参数有较强的可控行,而且产生真实的业务(real traffic)。由于Dummynet仅 在被截获的通信流中加入很小的头节点,所以仿真实验的速度可以很接近所用设 备的最大速度。Dummynet的时间精度和粒度依赖于系统时钟。因为Dummynet 是周期运行的,而它的周期时间间隔又依赖于系统时钟,所以这对仿真的精度会 有一些影响和限制。时间粒度一般情况下是毫秒级(microseconds)。当仿真快速 的网络时,会导致因处理不及时而引起的不必要的错误。而且它需要用额外的工 具来观察它的结果traces文件,比如tcpdump等。 Netem是Linux内核的队列模块,它通过控制网卡出口队列的数据包来设置 传播延迟,丢包率以及包乱序(Packet Re—ordering)等网络参数,从而获得需要的 网络实验环境。Netem在原理上和Dummynet并没有本质上的区别,但是实现上 有较大的区别。本质上它们都是对数据包(packet)进行控制从而达到设置带宽, 传播延迟和丢包率等网络参数的目的。但是Dummynet是根据流标识来区分不同 数据包的,只控制符合该流标识的数据包(packet)。而Netem做为Linux内核的 一个队列,控制所有进入该队列的的数据包(packet),因此Netem比Dummynet 的控制简单了很多,仿真速度更快,更逼近真实的网络场景。而且Linux内核中 有强大的流量控¥1J(traffic contr01)体系结构,Netem可以和其中的队列模块,过滤 模块,分类模块结合起来,功能非常强大。 目前,虽然在网络测试床上对协议进行性能评测己逐渐成为主流的试验手 段,但是目前并没有专门的文献对网络测试床设计和实现的整个过程以及网络测

硕士学位论文

第一章绪论

试床实验配置的关键技术问题进行深入的研究。本文将在第三章详细介绍基于 Linux的网络测试床设计与实现的整个过程,包括Linux网络测试床的拓扑设计; 重新配置、编译符合测试床霈要的新的Linux内核;使用Netem和Dummynet 来设置可控的,特定的网络实验环境;TCP
Socket

Buffer的设鼹;TCP ECN的

设雹;使用流量产生器产生测试流量;捕捉和处理实验数据。

1.3本文的主要工作
本文首先介绍了近几年来高带宽延时网络和无线网络的拥塞控制协议研究 成果及发展。尽管在高带宽延迟蕊络翻无线网络的传输控制研究领域取得了不少 的进展,但是这些协议都是基于单种网络模式所提出来的,现在并没有一种传输 控制技术能够充分适应高速网络和无线网络等多种不同的网络类型。当数据在核 心高速化和边缘无线化的新型网络中传输时,终端用户是应该无法确知具体的底 层网络环境的。因此,拥塞控制协议如何实现环境自适应性,在不同的网络环境 下都能获褥较高的性能,就变成了追在眉睫的问题。 接下来,本文对网络测试床设计实现的整个过程以及网络测试床实验配置的 关键技术闷题进行深入的研究。本文详细介绍基予Linux的网络测试床设计与实 现的整个过程,包括Linux网络测试床的拓扑设计;重新配置、编译符合测试床 需要的新的Linux内核;使用Netem和Dummynet来设置可控的,特定的网络实
验环境;TCP
Socket

Buffer的设置;TCP ECN的设置;使用流量产生器产生测

试流量;捕捉和处理实验数据。 最后,本文在总结前人工作的基础上,将高带宽延时网络改进协议Cubic和 无线网络改进协议Westwood的拥塞控制机制结合起来,提出了一种环境自适应 的拥塞控制机制JTCP。并详细介绍了FeP在Linux内核中靛详细实现过程。然 盾在网络测试床上对JTCP就链路利用率,TCP友好性和RTT公平性这个三个性 能指标进行了详细的比较测试。实验结果表明,羹CP在R订公平性和TCP友好 性没有明显下降的同时,能够在不同的网络环境下都能获得较高的链路利用率。

1.4本文组织结构
论文全文共分为五章。

第一章为绪论,这一章介绍了传统TCP协议在新型网络环境下存在的性能
闷题和露络协议懂麓评测的主要实验手段。 第二章详细介绍基于Linux的网络测试床设计与实现的整个过程,包括



硕上学位论文

第一章绪论

Linux网络测试床的拓扑设计;重新配置、编译符合测试床需要的新的Linux内 核;使用Netem和Dummynet来设置可控的,特定的网络实验环境;TCP
Socket

Buffer的设置;TCP ECN的设置;使用流量产生器产生测试流量;捕捉和处理 实验数据。

第三章主要总结和分析了高带宽延时网络环境和无线网络环境下拥塞控制
协议的研究现状,并提出了拥塞控制协议的环境自适应问题。 第四章详细介绍了环境自适应的拥塞控制协议JTCP的设计思想和拥塞控制 机制,并详细介绍了JTCP在Linux内核中设计实现的过程。然后在网络测试床 上对Reno、Westwood、Veno、Cubic、Scalable、Htcp、Highspeed、JTCP这8

种拥塞控制协议就链路利用率,Im公平性和TCP友好性进行了全面的性能比
较实验。
第五章为结束语。本章对拥塞控制协议的环境自适应问题和网络测试床的设 计实现进行了总结,并提出了拥塞控制协议性能进一步优化的研究思路以及怎样 进一步完善网络测试床。



硕士学位论文

第二牵Linux网络测试床的设计与实现

第二章L i nux网络测试床的设计与实现

2.1

Linux网络测试床概述
随着网络规模扩大、网络带宽增加、异构性和复杂性不断提高、网络新业务

不断出现,人们对互联网络的流量特征、性能特征、可靠性和安全性特征、网络 行为模型缺乏理解和精确描述的问题目益突出,严重影响网络的科学发展和有效 利用。如何准确全面的测试和评价这些新的网络协议性能,是现在面临的一个主
要问题。

传统的网络性能评价实验手段基本上分为二种:第一种方法一是实测,就是 将待分析的网络协议或是网络服务置于所需的真实背景网络之中,在实际运行过 程中,分柝研究它们的鼹络性能特征。该实验手段的缺点是:一是搭建所需拓羚 结构代价较大,费用昂贵。=是实验网络环境是不可控的,不能对协议进行定量
的实验分析。第二种方法是普遍使焉的软件仿真(Simulation)的方法,常耀的软真

软件有NS2和OPNET。它们都是用代码来描述网络模型,在一个节点上建立一 个网络模型,来模拟整个网络的业务和行为,被分析的网络协议被重新编码后,
运行与其上。

由于传统网络性能评测方法的不足,现在网络协议的研究工作者更加倾向于 使用网络仿真器(Emulation),比如Dummynet和Netem,来构建网络测试床,并 在网络测试床上对协议进行性能评测。这种方法逐渐成为了新一代主流的实验手 段l髓1149|。它结合了实测和软件仿真的特点,弥蛰了二者各自酶不是。它能提供 给研究者一个可控的可再生的物理网络实验环境,更重要的是它能在一个真实的 物理网络中,运行真实的业务流,丽运行在其上的有待分折的协议和服务,并不 蒋需要针对仿真环境来重新编码。研究者使用网络仿真器(Emulation)可以设置可 控的,特定的网络环境(如特定的RTT,丢包率,带宽,队列长度),在真实的物
理网络中对网络协议进行定量的性能评测。

网络测试床的实验手段和软件仿真的实验手段有很大的不同,其网络环境的
设置和数据的捕捉和处理都比较复杂,但是冒蓠并没有专门的文献对网络测试床

设计和实现的整个过程以及关键的技术问题进行深入的研究。本节详细介绍基于
Linux的嬲络测试床设计与实现的整个过程,包括Linux网络测试床的拓扑设计;

重新配置、编译符含测试床需要的新的Linux内核;使用Netem和Dummynet
来设置可控的,特定的网络实验环境;TCP
Socket

Buffer的设置;TCP ECN的

设置;使用流量产生器产生测试流量;捕捉和处理实验数据。

硕士学位论文

第二章Linux网络测试床的设汁0实现

2.2

Linux网络测试床的设计
我们设计网络测试床的目标是在真实的网络上对TCP及其改进算法就各项

性能指标进行比较测试,评价性能优劣。网络测试床硬件平台可以是只有几台简
单PC组成的小型网络,如图2.1所示;也可以是很复杂的大型网络,如图2.2

所示。图中的Linux/Netem和Freebsd/Dummynet是用来设置不同的带宽,RTT, 链路丢包率,队列长度等网络参数,以便在网络测试床实验中提供不同类型的、 可控的网络环境。由于Linux开源的特性和Cubic,Htcp,Veno等很多TCP改进算 法在Linux内核中已经实现,网络测试床的发送端和接收端选用Linux操作系统。

发送端Linux/Netem Internet 图2-2大型网络测试床

or

接收端

Frecbsd/Dummynet

在进行网络测试床设计时,应该注意以下问题: (a)根据实验的实际需要,构建不同网络拓扑,比如是单瓶颈还是多瓶颈链
路。

(b)确保硬件不是网络测试床的性能瓶颈。比如,在进行Gbit的高速网络实 验时,CPU主频太低或内存太小会制约实际获得的网络带宽,使得实验 结果失真。 (c)提高网络测试床的可扩展性,节约成本。比如,网卡最好采用 lOM/100M/l000M自适应网卡,通过指定网卡的工作速率来满足不同实
验的需要。

(d)操作系统使用较流行的Linux发行版,并采用较新的稳定的Linux内核 对内核升级避免一些系统bug的影响。


颈士学位论文

第二章Linux鹪络测试床的设计与实现

2.3

Linux网络测试床实验环境的构建

2.3.1重新配置编译内核

默认安装的Linux发行版,如FederoCore6f’41,其内核酌默认配置并不能完 全满足网络测试床的需要,同时老版本的Linux内核中新的TCP改进算法可能 会存在潜在的Bug,因此需要到Kernel.org[醛】下载最新的完整内核代码树,重新 配置编译内核,把所需的内核模块加入到新内核中。 在我们的网络测试床实验中,重薪配置内核时,需要将下列内核选项加入到新内 核中: (a)已经集成到内核中的很多TCP改进算法,即TCP:advanced
改进算法等。 ◇)Linux内核中的各种队列,帮Qos and/or fair queueing中的子选项,如RED, PRIO.TBF,NETEM等。
congestion

control中的子选项,如Bic,Cubic,Veno Westwood以及囱己实现的新TCP

秭用于监视TCP拥塞窗墨变化的内核模块,即Network testing中的子选项
TCP connection

probing。其余可采用内核默认配置选项。重新编译内核,

生成新内核。

启动新内核后,可以通过动态地加载这些内核模块来使用这些模块的功能(前 提是新内核中包含了需要加载的内核模块)。下面举例说明: 国将当前的TCP势议的誊蔷塞控制算法Reno改成Cubic,可以使焉命令#sudo
syscfl

net.ipv4.congestion_control=cubic来实现,同样也可以切换成
connection

HTCP,Highspeed,Westwood等改进算法。
(”要监视测试流量拥塞窗13的变化,需要先加载TCP 块,通过命令#sudo
modprobe tep probe port=5001。

probing模

(c)要将当前的队列改变为PFIFO,队列长队设置为100,可以通过命令#sudo
te qdisc add dev ethO root pfifo limit 1 00

2.3.2使用Netem和Dummynet设置网络环境
在真实的网络环境中,由于网络拓扑的复杂性和各种网络条件(如丢包率, R]盯)的难于重现性,丽在实验中我们需要对网络协议进行定量分析,因此需要

使用网络模拟器(emulator),如Linux/Netem和Freebsd/Dummynet,来提供可控 的,可重现的,特定的网络环境,便于对协议算法进行定量的性能评测。下面通
lO

硕上学位论文

第二章Linux网络测试床的设计与实现

过实例介绍如何使用Dummynet和Netem来设置网络实验环境。 (a)使用Dummynet设置网络环境 Dummynet是一种小巧的仿真软件,它运行在FreeBSD操作系统上。它通过 截获协议栈中相联协议层之间的通讯来实现网络条件的仿真的设置。Dummynet 适用于任何协议。要分析的协议所在层和下一层之间的通讯被Dummynet截获, 它通过控制被截获的通讯流的带宽,队长,传播延迟,和丢包率,来实现要模拟 的网络环境。 下面通过实例来介绍Dummynet的使用。Dummynet配置实例的网络拓扑图 和IP的配置如图2.3所示。

发送蝎2

接收端2

图2-3 Dumynet配置实例网络拓扑图

实例一:网络192.168.0.0/24到网络192.168.4.0/24,网络192.168.1.0/24到网

络192.168.5.0/24的延迟40ms,带宽10M,链路错误率0.01。配置脚本如下:
#sysctl-W net.inet.ip.fw.one_pass=1

#ipfw 1 00 add pipe 1 ip from 1 92.1 68.0.0/24
#ipfw 101 add #ipfw 102

to 1 92.1 68.4.0/24

pipe

l ip from 192.168.4.0/24 to 192.168.0.0/24

add

pipe 1 ip from 192.168.1.0/24 to 192.168.50/24
to 192.168.1.0/24

#ipfw 103 add pipe l ip from 192.168.5.0/24

#ipfw pipe 1 config delay 1 0ms bw 20M plr O.0 1

实例二:网络192.168.0.0/24到网络192.168.4.O/24的延迟是20ms,链路错 误率0.005;网络192.168.1.0/24到网络192.168.5.0/24的延迟40ms,链路错误率 0.01。共享带宽10M。配置脚本如下:
#sysctl-W net.inet.ip.fw.one_pass=0 #ipfw 1 00 #ipfw 101 #ipfw 102 #ipfw 103

add

pipe l ip from 1 92.1 68.0.0/24 to 1 92.1 68.4.0/24 1 ip from 192.168.4.0/24 to 192.168.0.0/24 2 ip from 192.168.1.0/24 to 192.168.50/24 2 ip from 192.168.5.0/24 to 192.168.1.0/24 65000 ip from any to any

add pipe add pipe add pipe

#ipfw 65000

add pipe

硕士学位论文

第二章Linux网络测试床的设计与实现

#ipfw pipe 1 config delay 5ms plr 0.005 #ipfw

pipe

2 config delay l Oms plr O.O l

#ipfw pipe 65000 config bw 20M

测试配置是否生效。可以使用Ping命令来测试设置的延迟和丢包率;使用

IperfI具测试带宽设置是否成功。 (b)使用Netem设鬣网络环境 Netem是Linux内核的队列模块,它通过控制网卡出西队列的数据包来设置 传播延迟,丢包率以及包乱序(Packet Re-ordering)等网络参数,从藤获霉寻需要的 网络实验环境。Netem做为Linux内核的一个队列,对进入队列的所有数据包 (packet)进行控制,从而达到设置带宽,传播延迟和丢包率等网络参数的目的。 丽且Netem可以和其它队列如PFlFO、BFIFO、RED等结合起来使用。下面通 过实例余绍Netem的使用。 实例一:设置网络环境为:采用pFIFO队列,队列长度1000,传播延迟50ms, 丢包率为lO~。配置脚本如下:
#sudo tc qdisc add dev eth0 root handle l:netem delay 50ms loss 0.1% #sudo tc qdise add dev ethO parent 1:1 pfifo limit 1 000 #sudo tc qdisc add dev eth l root handle l:netem delay 50ms loss O.1% #sudo te qdisc add dev eth l parent l:l pfifo limit 1 000

实例二:设置网络环境为:发往IPl92。168.0.4的带宽为IOM,延迟服从200ms
到10res的正态分布,丢包率为lOq。配置脚本如下:
群sudo tc qdisc add dev ethO root handle l:prio 释sudo tc qdisc

add dev

eth0 parent l:3

handle 30:netem\

delay 200ms 1 0ms distribution normal Joss 0.0 1% 拌sudo tC qdisc 群sudo tC filter

add

dev ethO parent 30:1 tbf rate 1 0 mbit buffer 1 600 limit 3000 eth0 protocol ip parent l:O prio 3 u32、

add dev

match ip dst 1 92.1 68.0.4/32 flowid l:3

2.3.3 TCP Socket

Buffer的设置

在实际的网终测试实验中,特别是在高带宽延迟网络的网络环境下,操作系
统的默认参数值可能会成为性能瓶颈,使得对网络协议的性能测试结果失真【16l。

高带宽延迟网络的网络环境下,网卡驱动程序的队列长度,CPU的队列长度,
TCP Buffer

Size的默认值都可能会成为性能瓶颈。举例说明,当网络测试床的物

理链路是1000M或更离,RTT为200ms是时,BDP高达200M,假设每个数据

包为1.5KB。在这种情况下,TCP协议要能充分利用带宽的话,拥塞窗口必须达
12

硕士学位论文

第二章Linux网络测试床的设计与实现

到16000,其所需要的TCP

Socket

Buffer远远大于操作系统的默认配置值,那么

系统默认TCP Socket Buffer值会成为TCP吞吐量的性能瓶颈,实际测得TCP吞 吐量就会远远小于实际的带宽值。我们做过实际的测试床实验,当带宽为100M,

Im

400ms的网络环境下,如果使用操作系统默认的参数,单条TCP协议流可

获得的吞吐量只有IOM左右。显然,由于操作系统默认参数成为了性能瓶颈, 而不是TCP协议的性能问题,在这样的网络环境下对TCP及其改进协议进行性

能测试,实验数据严重失真。
因此,在进行TCP协议性能测试研究时,如果当BDP过高时,就需要改变
TCP Socket

Buffer的系统默认值,避免其成为性能瓶颈,提高TCP的性能。详

细的配置脚本如下: 群自动调节TCP
Socket Buffer

echo 1>/proc/sys/net/ipv4/tcp_moderate_rcvbuf

拌增加TCP的最大Buffer值
echo 1 08544>/proc/sys/net/core/wmem_max echo 1 08544>/proc/sys/net/core/rmem_max

}i}增加TCP Buffer的自动调节值,三个值分别为(min,default,and
bytes to

max number of

use)

echo”4096 87380 4194304”>/proc/sys/net/ipv4/tcp_rmem echo”4096 16384 4194304”>/proc/sys/net/ipv4/tcp_wmem

{6f增加网卡驱动程序的队列长度值
#ifconfig eth0 txqueuelen 1 000

拌增加CPU的队列长度值
echo 30000>/proc/sys/net/core/netdev_max_backlog

虽然可以通过配置脚本来自动调节TCP性能,但是当网络环境变化时(比如 当R]广r变化时),又需要重新设置参数,特别麻烦。因此,一些研究工作者提供
了自动调节TCP性能的内核补丁,比如webl00,netl00。

2.3.4 TCP ECN的设置

在网络测试床实验中,如果要对ECN进行性能研究,需要对网络测试床进
行相应的设置以支持ECN。在较新的Linux内核已经提供了对ECN的支持。要 在TCP测试实验中支持ECN,首先,通过命令#sudo
sysctl net.ipv4.tcp

l=nce.设来

置发送端和接收端的TCP协议支持ECN。然后,需要在瓶颈链路路由器设置支 持ECN[17】的队列(目前在Linux内核只有RED队列支持ECN),同时需要和Netem 队列配合使用,配置脚本如下:

硕士学位论文

第二章Linux网络测试床的设计与实现

#sudo tc qdisc add dev ethO root handle 1:netem delay 50ms #sudo tc qdisc

add

dev eth0 parent 1:1 red limit 256000\

min 1 2000 max 32000 avpkt 1 000 burst 20 probability 0.02\

bandwidth 512 ecn
#sudo tc qdisc

add dev eth 1 add

root

handle

1:netem delay 50ms

#sudo

tc qdisc

dev eth l parent 1:1 red limit 256000\

min 1 2000 max 32000 avpkt 1 000 burst 20 probability 0.02\

bandwidth

512

ecn

2.4流量产生器
和NS2,OPNET等仿真软件不同,在测试床实验中,需要使用流量产生器来 产生测试流量。流量产生器本质上是套接字(Socket)发包程序。流量产生器可分 为两类:一类是现成的网络测量工具,如:Iperftl81和Ttcp[191等。Iperf和Ttcp可
以产生TCP,UDP协议的测试流量。Iperf功能较多,并自带有吞吐量统计的功能。

另一类是根据实验需要自定制的流量产生器,或者通过扩展Ipeff和Ttcp来定制 符合特定实验需要的流量产生器。
在我们的测试床实验中需要产生两种测试流量:一是被测试算法的实验流

量;二是用于模拟真实网络环境的背景流。常用几种背景流分别是:UDP方波 流,Web流和具有某种统计分布特性的背景流等等。UDP方波流可以通过在Shell 脚本中控制Iperf发包就能获得。Web背景流可以通过自己架设Web服务器,自
己编写客户端脚本的方法来实现。产生具有某种统计分布特性的背景流,可通过 扩展Iperf和Ttcp来实现。 在TCP改进协议的网络测试床实验中,我们主要使用Iperf来做为流量产生

器。下面通过实例来简单介绍Iperf使用: (a)产生TCP测试流量
在ip 192.168.0.4机器上做服务器
#iperf-S

在ip 192.168.0.5机器上做客户端,测试时间300s
#iperf--c 1 92.1 68.0.4-i l-t 300

(b)产生5M UDP背景流 在ip 192.168.0.6机器上做服务器
#iperf-u-S

在ip 192.168.0.7机器上做客户端,测试时间300s
#ipeff-u-c 192.1 68.0.6-i l---t 300-b 5M
14

硕士学位论文

第二章Linux网络测试床的设计与实现

(C)产生5M UDP 011/off方波流的Sheel脚本 在ip 192.168.0.8机器上做服务器
#iperf--U--S

产生5M

UDP on/off方波流的客户端脚本

群!/bin/bash #iperf-U.C 192.168.0.8.i l.t 100.b 5M sleep 100 #iperf.U.C 192.168.O.8.i 1.t 100.b 5M sleep 100 #iperf.U.C 192.168.0.8.i l.t 100.b 5M

2.5捕捉和处理实验数据
在使用NS2,OPNET等仿真软件进行实验时,仿真软件能产生统一格式化的 实验数据文件,实验数据的处理和分析因此比较简单。但是在进行测试床实验过 程中,并不会产生统一格式的实验数据文件,不同的性能指标需要不同的方法去 捕捉处理实验数据。 在进行网络测试床实验时,常见的网络性能指标主要有端到端吞吐量,路由

器队列长度,丢包率,Im,拥塞窗口的变化等。路由器队列长度,R]广r这两个
性能指标可以采用修改相关内核源代码,将数据输出到日志文件的方法来获得实 验数据。丢包率的实验数据,可以通过队列(如Pfifo,I汪D)自带的统计功能来 获得。 关于端到端吞吐量指标,流量产生器Iperf本身自带有吞吐量统计功能,能 非常方便的来获取瞬时吞吐量和平均吞吐量的实验数据。下面通过实例来说明:

该实验测试的目的是在不同的网络环境下(不同的Im,不同的链路丢包率),
对Linux内核中Reno,Cubic,Htcp,Westwood等9种TCP拥塞控制算法进行性能 比较测试。该实验采用常见的哑铃状网络拓扑。发送端和接收端的软硬件配置如 下:CPU是Intel Pentium
4 CPU

2.80GHz;内存是512Mbyte;操作系统

FederoCore6,内核升级到Linux 2.6.22;网卡是10M/100M自适应网卡。链路都

是100M。中间路由器采用Linux/Netem来设置不同的网络实验环境。使用Iperf
做为流量产生器,同时使用Iperf自带的吞吐量统计功能获得平均吞吐量实验数 据。

测试实例一,使用Netem设置网络环境为:链路丢包率为10-6~10’2,Im为
40ms。队列采用pFIFO,队列长度是默认值1000,测试时间是600s。实验结果 如图2-4所示。

硕士学位论文

第J二章Linux网络测试床的设计与实现

测试实例二,使用Netem设置网络环境为:链路丢包率为0,Im分别是40ms、
lOOms、200ms和400ms。队列采用bFIFO,队列长度是带宽延迟乘积(BDP),

测试时间是600s。实验结果如图2—5所示。
∞ ∞ 一协cl ∞ 加 加 cI乏一_3cl 西30.Ic卜




10^.6

10^-5

10A-4

10A-3

10^一2

Random packet loss rate

图2-4单协议流在不同丢包率环境下的吞吐量

∞ ∞ ∞ 阳
一西cIc|=一一3

∞ ∞ ∞

clc西3—u‘c卜

{;; 加
O 50 100 150 2DO

250

300

350

400

R.rT

fms】
connection

图2-5单协议流在不同RTT环境下的吞吐量 关于拥塞窗口变化数据的获取,在较新的内核版本中,有个Tcp probing[20】的内核模块,该模块是专门用来监测TCP拥塞窗口变化的。在使用流

量产生器Iperf产生测试流量前,动态加载该模块,使用该模块监听Iperf的端口
5001。范例脚本如下:
≠}modprobe tcp_probe port=500 1 群cat/proc/net/tcpprobe>/tmp/data.out& #pid=¥! 撑iperf—C otherhost
;6f kill Spid

硕十学位论文

第二章Linux网络测试床的设计与实现

该模块能监听该TCP协议流拥塞窗口的变化,并生成相应的数据文件。举例说 明,图2-6为在带宽100M,RTT 20ms,链路丢包率104的网络环境下,Reno, Cubic,Htcp的瞬时拥塞拥塞窗121变化图。



50

1∞

15。

200

250

300

time《sec佣d搴)

图2-6拥塞窗口瞬时变化图

2.6本章小结
本章对网络测试床设计和实现的整个过程以及网络测试床实验配置的关键 技术问题进行深入的研究,详细介绍基于Linux的网络测试床设计与实现的整个 过程,包括Linux网络测试床的拓扑设计;重新配置、编译符合测试床需要的新 的Linux内核;并通过实例详细介绍了如何使用Netem和Dummynet来设置可控 的,特定的网络实验环境;TCP
Socket

Buffer的设置;TCP ECN的设置;如何

使用流量产生器产生测试流量;如何捕捉和处理实验数据。

颈士学位论文

第三章新型两络环境下的拥寒控制协议

第三章新型网络环境下的拥塞控制协议

随着网络的飞速发展,新型网络类型逐渐多样化,网络核心高速化和边缘无 线化是目前网络的发展趋势,也是新型网络环境的主要特征。目前,在高带宽延 迟网络i25】和无线网络瑶6】的传输控制研究领域取得了不少的进展,出现了大量的 TCP改进和增强版本【27,41】。但是这些改进协议都是基于单种网络环境所提出来 的,现在并没有一种传输控制技术能够同时适应不同的新型两络环境。因此,拥 塞控制协议如何实现环境自适应(即能在不同的新型网络环境下都能获得高性能) 是追在眉睫的闯题。

3。l高带宽延时网络环境下的拥塞控制协议
高速延迟网络环境下的大部分TCP改进和增强版本的焦点都集中在窗口管 理机制上。而基于这些协议调节窗翻所利用的反馈信息,我们可以大致将其划分
为三类:基于丢包反馈的协议(Loss.based
Congestion Avoidance algorithms, CongestionAvoidance

LCA)、基于路径延时反馈的协议(Delay-based

algorithms,

DCA)和(ECN.1ike algorithms)。下面将分别介绍这三类协议。 (1)基于丢包反馈的协议 基于丢包反馈的TCP拥塞控制协议中,最早出现的是TCP Tahoe算法1211。 它通过ACK所捎带回来的丢包信息(如三次重复ACK或ACK超时)来调整源

端的拥塞窗口。其厝的TCP Reno[翻、Ne、ⅣRenoi231和Sackl2q都是针对ACK返回 的丢包信息来进行的传统TCP改进。近几年来,随着高带宽延时网络的普及,
针对提高TCP带宽利用率这一点上,又涌现出许多新的基于丢包反馈的TCP改 进协议,这其中包括HSTCPl271、STCPl2引、BIC.TCPl291、CUBICl30】和H.TCPt3¨。

HSTCP通过调整自身拥塞窗蹬的增长蔑律来适应高带宽延时霹络的数据传 输。它采用一种自适应的拥塞窗口变化函数来动态调整拥塞窗口增长值。它分别

对ACK包确认和丢包信号定义了两种窗口增量函数黝和g甜。这两种增量丞
数和网络的丢包率呈现出一种对应的函数关系。TCP发送端通过网络所期望的丢
包率来动态调整HSTCP拥塞窗口的增量函数。同时,为了保证与传统TCP的兼 容性,HSTCP中指定当拥塞窗口大小小于38个包分组时,HSTCP的窗口增长

模式退化为传统TCP的窗口增长模式。 STCP同样也是一种麓单的调整自身拥塞窗口值的改进秘议。它将传统TCP 的AIMD(加性增加倍乘减小)窗口调整机制改换成MIMD(乘性增加倍乘减小)

18

硕士学位论文

第三章新型网络环境下的拥塞控制协议

调整机制来适应高带宽延时网络的需求,是一种窗口调节变化非常迅速的TCP

协议。与HSTCP类似,STCP中也指定当拥塞窗口大小小于32个分组时,STCP 窗口增长模式退化为传统TCP的增长模式。
BIC.TCP虽然也是采用丢包反馈的形式来控制窗口增长规律,但它提出了一 种非常新颖的窗口调节机制。BIC.TCP将网络的拥塞控制看作是在一个网络连接 系统内有无丢包事件的搜索问题。它由二进制搜索增长和线性增加两部分组成: 二进制搜索增长的核心思想和经典的折半查找算法非常相似,首先假设拥塞窗口 的最小值minwin(初始为1)和最大值maxwin(极大常量),并取其中值作为目 标窗口tw大小,即tw(maxwin+minwin)/2。当拥塞窗口更新为目标窗口大小之 后,如果传输过程中没有发生丢包,则更改最小窗口值minwin为当前拥塞窗口

大小,并继续执行搜索算法寻找目标窗口,否则更改最大窗口值maxwh哩为当前
拥塞窗口大小,并再次执行搜索算法寻找目标窗口,通过这样多次迭代直到 minwin和maxwh哩的差距小于某一阈值Smm为止。在目标窗口与当前拥塞窗口 大小存在很大差距时,过快地增加拥塞窗口大小会给网络带来巨大的压力。线性 增加有效解决了这个问题,即当目标窗口大小与当前拥塞窗口大小的差距大于某 一阈值Smax时,拥塞窗口大小并不直接更新为目标窗口大小,而是增加Smax 个分组,直至目标窗口大小与当前拥塞窗口大小的差距小于阈值Smax时直接更 新至目标窗口大小。同时,为了向下兼容和保持TCP友好性,BIC.TCP设置了 最小窗口阈值,当拥塞窗口较小时,算法仍采用传统TCP的增长策略。BIC.TCP 以此控制自身的发包率来达到当前网络的最佳利用率和最稳定的传输状态。 CUBIC在BIC.TCP的基础上,总结了BIC.TCP的优缺点所在,并着重改善 了算法的TCP友好性和R1Yr公平性。CUBIC算法通过采用一种窗口立方体增益 函数来取代BIC.TCP算法中窗口增长函数,使得算法能够获得更好的稳定性和 可扩展性。 H.TCP协议的主要创新点在于以相邻丢包事件的时间间隔r来作为反馈因 子。作者认为如果丢包时间间隔t比较小,则表示丢包事件连续发生,网络拥塞 严重,反之t越大则表示网络拥塞程度越轻。H.TCP协议以相邻丢包事件的时间 间隔作为控制因子是一种全新的拥塞控制机制,目前对于这一机制的评价还鲜有

相关的研究发表,所以H.TCP的性能还有待于进一步深入研究。
总的来说,基于丢包反馈的协议是一种被动式的拥塞控制机制,其依据网络中的 丢包事件来做网络拥塞判断。即便网络中的负载很高时,只要没有产生拥塞丢包, 协议就不会主动降低自己的发送速率。这种协议可以最大程度的利用网络中的剩 余带宽,提高自己的吞吐量。然而,由于基于丢包反馈协议在网络近饱和状态下 所表现出来的侵略性,HSTCP等拥塞控制协议使得协议流吞吐量在高带宽延时

19

硕:卜学位论文

第三章新型网络环境下的拥塞控制协议

网络上迅速增加。一方面大大提高了网络的带宽利用率;但另一方面,对于基于 丢包反馈的拥塞控制协议来说,大大提高网络利用率同时意味着接近网络带宽总 量的速度也越快。而越快地接近网络带宽总量也暗示着下一次拥塞丢包事件为期
不远了。所以这些协议在提高网络带宽利用率的同时也间接加大了网络的丢包 率,造成整个网络的抖动性加剧。 (2)基于路径延时反馈的协议 在高速网络上,针对延时反馈的方式,也提出了一系列的改进协议,较为典 型的有FAST TCP[321、Astartl33J和TCP Africa04】协议。FAST TCP的基本原理与 Vegas类似,以排队延时作为反馈因子,利用源端侦测ACK延时变化来调整拥

塞窗口。FAST结合使用了延时和丢包来判断拥塞。Astart是在TCP Westwood[351 算法思想的基础上针对高速网络的特性所发展而来的。它的核心思想是通过测量

I册的变化来进行带宽估测。其采用一种“有效速率估计’’Eli西ble Rate Estimate
(El迮)的算法来测量网络中的剩余带宽。在获得链路的情况后,当拥塞发生后,
利用这些测量值来计算新的拥塞窗口值cwnd和慢启动的门限阈值ssthresh。而 TCPAfrica同样利用了Vegas的早期I汀T延时检测来判断链路是否存在拥塞。它 结合了两种不同的拥塞窗口增长方式来自适应调整其发送窗口值。在网络无拥塞 时,协议进入到快速增长模式,利用HSTCP的主动性来增长拥塞窗口,快速获

取网络中的剩余带宽:在逼近拥塞状态时,TCPA箭ca进入到慢速增长模式,退
避到传统TCP的1/cwnd拥塞避免方式,避免在网络中引入大量丢包。 (3)基于显式反馈的协议 在ECN思想的基础上所提出来显式反馈方式的传输控制协议主要包括 AECNl36]、Quick.Start[371、XCP[3s]、VCP[39]和RCP[401等等。 在高速网络中,AECN和Floyd的Quick.Start都是采用的这样一种显性的自 反馈机制来动态调整TCP的拥塞窗口值。它们和ECN的表达方式恰恰相反,在

网络存在足够大的剩余带宽时,它们显式的通知源端增大窗口发送值。在ECN
这样简单的lbit拥塞位通告的基础上,XCP协议借鉴了ATM中ABR机制的设 计思想,增大了数据流传输过程中反馈通告信息的存放字节,加强了通告信息的 内容,由中间路由端检测自己的拥塞状态后,直接将合适的发送窗口调节值返回 给源端。VCP协议,与XCP相比,仅仅只利用了比ECN多了lbit位的2bit反 馈信息来显性表示网络的拥塞状态。在VCP中,每个路由器计算出一个自己的 负载因子,用这个负载因子将网络划分为三种拥塞等级:低负荷、高负荷和超负 荷。网络把这些等级通过2bit ECN的形式反馈给源端。基于这些拥塞等级信息, 源端选择合适的拥塞策略来适应网络。VCP协议比XCP协议更加简单,复杂度 很低,性能也大致能同XCP相媲美,但在带宽实时分配的公平性和收敛时间上

20

硕士学位论文

第三章新型网络环境下的拥塞控制协议

较略逊于XCP协议。RCP协议在各种不同的网络环境中效仿了操作系统中的处 理器共享机制,即在连接刚刚建立时路由器给所有通过它的竞争流指定一个相同 的速率,使其快速获取剩余带宽,从而大大减d,T在传统TCP协议中数据流分 配带宽的时间。RCP协议与XCP协议相比公平性和收敛性均有所提高,实现也

比较简单,但当其运用在流量变化剧烈的网络环境中时,RCP的稳定性较差。

3.2无线网络环境下的拥塞控制协议
另一方面,无线网络的迅猛发展也造成了现有传输控制技术的不适用性,使
传统TCP面临巨大的挑战。无线网络环境存在着信道错误率高、带宽低、无线

信道变化频繁和移动性强等特点。而这些特点导致频繁地产生丢包。可是传统
TCP把所有的丢包简单归结为网络拥塞,盲目采取丢包窗口减半的拥塞控制策 略,从而极大降低了TCP的性能。针对这样情况,国内外研究人员对TCP在无

线网络下的改进也做了大量的工作。目前,被广泛认可的无线网络环境下拥塞控
制改进协议是Westwood[圳和Veno[53l。 Westwood通过带宽估计的方法来改进传统TCP的倍乘减小(MD)机制。传统 TCP在发生丢包事件(表现为三个重复的ACK)时,将TCP的拥塞窗口减小一 半,而Westwood是根据带宽预估值来更新拥塞窗口和慢启动阀值。通过观察发 现,返回的ACK分组流实际上表明了网络路径的当前瓶颈容量。这个结论可以 改进传统TCP算法对拥塞窗口减小一半的方法,并且不断地调整网络路径中的

最小RTT。Westwood算法会通过跟踪TCP确认值和ACK分组到达时间间隔,
估计网络带宽,进而估计当前网络路径的瓶颈带宽。这种技术类似“分组对”方 法,在TCPVegas中得到了应用。就Westwood方法而言,对带宽的估计建立在

接收ACK速率的基础上,可以被用于设置拥塞窗口,而不是TCP发送窗口。

Westwood发送端会跟踪最小的Im间隔,以及根据返回的ACK数据流预测出
的带宽。在发生丢包事件时,Westwood不会将拥塞窗口缩减一半,而是会将其

设为估计带宽与最低Im值的乘积。如果当前RTT等于最小Im,那么就意味
着整个网络路径上不存在队列延迟,因而发送速率就会被设置为网络路径的带

宽。如果当前R1rr大于最小R]陌,那么发送速率就会被设置为一个低于估计带
宽的值,并允许在发生丢包时通过加法递增寻找发送速率阈值。这里存在的一个 重要问题是,ACK间隔时间可能会发生变化,但是Westwood会利用所有可用的 数据和ACK对提高对当前带宽的预测精度。该方法还采用了一个低通滤波器, 确保估计带宽在一段时间内保持相对的稳定性。实际的结果是,接收端可能会发 生某种形式的ACK失真(例如延迟的ACK响应),而网络路径会在正向和反向 含有抖动组件,这样ACK队列在抵达发送端时,ACK间隔时间存在较大的波动。
2l

硕士学位论文

第三章新型网络环境下的拥塞控制协议

Westwood+[47]利用最低测量间隔(选取R1rT或者50毫秒之间的较大者)进一步 改进了这项技术,以解决因为ACK压缩而导致估计带宽过高的问题。这样做的 目的是确保TCP在缩小拥塞窗口时不会矫枉过正,从而使得与窗El的缓冲扩充
速率有关的问题不会影响总体的TCP性能。Westwood改进协议在频繁发生比特 级损坏的环境中具有重要的作用,能明显的提高TCP的性能。

Veno的主要思想是通过Im的信息,来判断当前路由器的队列负载情况,
来区分拥塞丢包和无线丢包,然后区分响应拥塞丢包和无线丢包,从而提高无线 网络环境下的TCP性能。在Veno中,发送端通公式(3.1)和公式(3.2)测量Expected
和Actual速率。
Expected=cwnd/BaseRTT (3—1) (3-2)

Actual=cwnd/月刀
滑处理的。这两者的差为: D/ff=Expected-Actual 当RTT>BastRTT,路由器上会有包排队,假设队列长度为N,则有:

其中,ewnd是当前拥塞窗口,BaseRTT是测量的最小lm,Im的值是经过平
(3—3)

R刀=BaseRTT+Ⅳ/Actual N=Actual?(月刀一BaseRTT)=Diff}BaseRTT

(3—4) (3-5)

那么通过公式(2.5)可以在发送端估计瓶颈路由器的队列长度,并以此来区分拥塞 丢包还是无线丢包。当N<13时,若发生了丢包事件(表现为三个重复ACK),则 认为是无线丢包,则慢启动阈值和拥塞窗口值更新当前窗口的4/5,而不像传统 TCP那样降一半。当N>13时,若发生了丢包事件,则认为是拥塞丢包,则慢启

动阈值和拥塞窗口值更新方法和传统TCP的处理方式一样。
传统TCP协议在边缘无线化的新型网络环境下改进的主要难点是区分无线 丢包和拥塞丢包。目前,丢包区分有以下三类策略: (1)链路层策略:已经提出的FEC,ARQ以及ELN[34】等方法分别采用向前 纠错、选择重发、错误通告等措施,来提高无线链路的质量并向高层屏蔽底层错 误,这类方法需要节点具有探测并报告网络状态的能力,还需要各层的共同参与,

增加了协议实现的复杂度。
(2)基站策略:对于目前应用得最多的最后一跳是无线链路的新型混合网

络,实施TCP

Split[421,TCP

Snoop[431等机制可以将基站作为TCP的代理,负责

在TCP不受影响的情况下进行无线错误的重传和相应的控制,这类方法需要基 站大量的缓存和处理能力。

(3)端到端策略:这是研究和应用得最多的一类方法Ⅲl。文献【45】将丢包分
为短期可恢复和不可恢复两大类,对于前者统一采用“冻结’’TCP的方法来避免

硕士学位论文

第三章新型网络环境下的拥塞控制协议

不必要的拥塞控制调节。TCP.DCRl461,TCP.DOOR[47l等也采取了类似的方法, 试图在TCP“无知”的情况下恢复无线错误,它们的关键在于如何选取“冻结” 的时间,使得该方法既容忍大多数无线错误而又不影响拥塞控制。这类策略是依 据端到端的测度进行丢包区分,可从下面两个方面着手:一是对丢包原因进行分 析;二是根据不同的丢包类型进行窗口调整。其中代表性的协议有:有基于往返 时延的NCPLDl481、基于包的到达间隔的TCP.Biazl491、基于ROTT的

TCP.Spikel501、基于Im变化的TCP.Bayes[511,基于头部校验和的TCP—HACKt521
等等。 除了直接进行丢包识别外,还有一些隐性的丢包识别方法,其中最具代表性

的是TCP.Westwoodt351,它通过监测返回ACK速率来持续测量有效带宽,并用
当前有效带宽估算值来更新拥塞窗口和慢启动阈值。该方法的瓶颈在于ACK到 达的时延和累积效应使得带宽估计的准确性受到了一定影响。因此,带宽估计在 无线网络中如何保持一致性和准确性是丢包区分的关键问题之一。

3.3新型网络环境下的拥塞控制协议的环境自适应问题
随着网络的发展,新型网络环境的多样性,由于其变化频繁、影响因素众多, 导致网络呈现巨大的复杂性,如何在这些新型网络中能够环境自适应的传输控制 变得非常重要。首先我们将研究结合多种反馈信息的协同拥塞控制算法,必须将 丢包、延时、吞吐率等反馈信息综合分析判断,来获得更准确的网络信息。其次, 传输控制不再是一个端到端的行为,应该是一个与路由节点的主动队列管理、端 节点传输控制联动的复合行为。结合ECN主动反馈机制,建立各类节点、各个 层次的联合机制,才能建立满足不同应用需求的良好控制机制。同时,为了提高

传输控制的收敛性、公平性等性能,在建立连接过程中就应该进行网络环境信息 的主动反馈,确定传输控制协议的调节算法或参数。总之,我们的目标就是采用
自适应的思想,建立适应于新型网络的环境自适应传输控制协议,使得传输控制 能够适应网络的动态变化,并减少控制机制的代价,并在加强网络的可控性的同 时,保证方案的可扩展性。

虽然国内外研究工作者针对高速延迟网络和低速无线网络提出了众多的
TCP改进协议,但是这些TCP改进协议都是针对单一的网络环境,这些协议能

不能同时在两种不同的网络环境下都能取得较好的性能,是否具有出较好的环境
自适应能力,我们通过下面的实验来进行验证。我们在网络测试床上设置高速延 迟和低速无线这两种网络环境,考察Reno、Cubic、Highspee、Htcp、Westwood 和Veno这六种拥塞控制协议是否具有环境自适应能力。网络测试床的网络拓扑

如图2.1所示。高带宽延迟网络环境设置如下:Im分别设置为50ms、lOOms、

硕士学位论文

第三章新型网络环境下的拥寨控制协议

200ms、400ms;链路丢包率为0;酸列采用bFIFO,队列长度为带宽延迟积①D玲; 所有的链路都是100M;无线网络环境设置如下:链路丢包率分别设置为10"5、

104、10-3、l萨;糊日为50ms;队列采用pFIFO,队列长度是默认值1000;所
有的链路都是10M。测试时间是600s。图3.1为单协议流在高速延迟网络环境
下的吞吐量示意图,图3-2为单协议流在低速无线网络环境下的吞吐量示意图。

从这两个圈中我们可以看出,这些协议并不能同时在两种环境下都取得较高的吞 吐量,并不具有环境自适应的能力。
O0
9O 8O

Q D 乏

CL



70 6O 50 4O 3O 2O 0 50 100 150 200 250 300 350 400 450



a》 j



i三

RTT[ms]

图3-1单协议流在高速延迟环境下的吞吐量
O 9 8

7 6 S


一毋aD苫一芎Qca3^c 卜

3 2 1

10^5

{OA4

10^3

10^2

Random packet loss rate

图3-2单协议流在低速无线环境下的吞吐量

综上所述,尽管在高速网络和无线网络传输控制研究领域取得了不少的进 展,但是由于新型网络中RTT不确定性增加、节点变化更频繁、信道差异性加
24

硕士学位论文

第三章新型网络环境下的拥寒控制协议

剧等因素的影响,这些传输控制机制在不同的新型网络环境下仍存在许多的问 题。如高速网络下的R1广r不公平性严重、TCP友好性低下、协议无法真实有效 的判断拥塞以及无线网络中的协议开销过大、区分丢包准确性不高等问题,也一 直困扰着新型网络传输控制技术的研究工作。而且,以上所列举的这些协议都是 基于单种网络模式所提出来的,现在并没有一种传输控制技术能够充分适应当高 速网络和无线网络混合在一起所形成的新型网络模式。当数据在核心高速化和边 缘无线化的新型网络中传输时,终端用户是应该无法确知具体的底层网络环境 的。我们认为,在新型网络中,传输控制技术如何实现“用户透明网络访问”也 是迫在眉睫的主要问题之一。

3.4本章小结
本章综述了近几年来高带宽延时网络和无线网络拥塞控制协议研究的成果 及发展,并重点概述了几种代表性的拥塞控制协议。然后本章重点提出了拥塞控 制协议的环境自适应问题,这也是本文重点研究的课题之一。因为,高速和无线 环境的改进协议都是针对特定网络设计的,虽然在特定的网络环境,这些协议的 性能有了很大的提高,但是现在并没有一种传输控制技术能够同时充分适应高速 网络、无线网络等不同的新型网络类型。随着网络的发展,新型网络环境的多样 化,但是一般的终端用户不可能根据当前的网络环境选择不同的拥塞控制协议。 因此,拥塞控制协议如何实现环境自适应性,在不同的网络环境下都能获得较高 的性能,就变成了迫在眉睫的问题。

25

硕士学位论文

第四章环境自适麻的拥塞控制协议JTCP

第四章环境自适应的拥塞控制协议JTCP

4.1

JTCP的设计思想
高速延迟网络下的TCP改进协议主要有Bic,Cubic和Scalable等。这些改

进协议的主要思想是改变TCP Reno拥塞窗1:3的加性增加(AI)机制,使得TCP的

发送速率能更快速的收敛到当前网络的可用带宽值,提高TCP的性能。而像
Westwood,Veno等无线TCP改进协议的主要设计思想是改变TCP Reno窗口的

倍乘减少(MD)机制,改变无线丢包对拥塞窗1:3降半的机制,从而提高TCP的性
能。 但是这些改进协议并不能同时在高速延迟网络环境和无线环境都获得较高 的传输性能,无法做到环境自适应的高效网络传输。比如,高速TCP改进协议

在无线网络环境下,仍然会错误的把无线丢包当成拥塞丢包,导致拥塞窗口频繁
的降半,使TCP的性能严重下降。而无线TCP改进协议的窗1:3的加性增力I:I(A11

机制基本上类似TCP Reno的加性增加机制,在高速延迟网络的环境下,拥塞窗
口收敛到丢包前拥塞窗口的时间会变的非常大,从而导致TCP的性能严重下降。
Joint

TCP(JTCP)的主要目标是使协议能自适应不同的网络环境,提高TCP在不

同网络环境下的传输效率。JTCP的设计思想是结合高速TCP改进协议和无线
TCP改进协议的优点,在协议中集成高速TCP改进的加性增加机制和无线TCP 改进的倍乘减少机制,取两者的大值作为当前的拥塞窗口值。在高速TCP中, Cubic具有较好的TCP有好性和R]盯公平性。在无线TCP中,Westwood通过带 宽估计来改进TCP Reno的倍乘减少机制,大大改善了无线网络环境下TCP的性 能。 因此,JTCP设计的主要思想是通过集成高速TCP改进的加性增加机制和无

线TCP改进的倍乘减少机制来对拥塞窗口进行联合控制,这样JTCP既能克服高
速延迟网络下窗口增长机制缓慢的问题,也能使JTCP在无线网络环境下具有丢 包区分能力,使JTCP能同时适应高速延迟网络环境和低速网络环境。

4.2

JTCP的拥塞控制机制
JTCP是结合Cubic和Westwood两种拥塞控制机制的环境自适应的TCP改

进协议。先简要介绍Cubic和Westwood的拥塞控制机制:

Cubic协议是对BIC协议的进一步改进。CUBIC采用了一个三次多项式函数
来支配窗口扩充算法,而不是像BIC那样使用指数函数。三次函数中将从上次

硕士学位论文

第四章环境自适应的拥塞控制协议JTCP

缩小窗口以来经过的时间作为变量,而不是像BIC那样使用一个R1rr计数器, 这样CUBIC能够在存在多个具有不同RTT的数据流时产生更加公平的结果。 CUBIC还会为任何一个RTT间隔中可以进行的窗口调节幅度设置一个上限,这 样在窗口缩小之后进行的窗口大小的调整将是线性的。新的窗口大小w的计算 方法为:

陟乞6耙=c(t—K)’+玢二。(4—1)
其中,C是一个恒定参数,t是从上次窗口缩小事件到当前经过的时间,Wm缸表 示最近一次缩小前的窗口大小。K的计算公式为:

K=√%就幸13/c

(4—2)

当拥塞窗口大小接近过去缩小前的窗口大小Wm默时,这个函数会变得更加稳定。

在调整窗口大小时使用时间间隔而不是Im计数器的目的是让CUBIC对当前
TCP会话更加敏感,特别是在R1广r较短的环境中。

公式(4.1)计算出来的拥塞窗口值W饥bi。表示的是经过一个I盯,当前拥塞窗
1:3

CW的增长目标值,即每收到一个ACK时,窗口大小增加l睨址-CW l/CW, CNT,。b缸=CW/I睨6把一CW l
(4—3)

也就是说收到CNT。。bi。个ACK时,拥塞窗口增加l。

Westwood通过带宽预估来改进TCP Reno的倍乘减少机制。通过观察发现, 返回的ACK分组流实际上表明了网络路径的当前瓶颈带宽。这个结论可以改进 传统TCP算法对拥塞窗口减小一半的方法,并且不断地调整网络路径中的最小 RTT。Westwood算法会通过跟踪TCP确认值和ACK分组到达时间间隔,估计 网络带宽,进而估计当前网络路径的瓶颈带宽。这种技术类似于“分组对”方法, 在TCP Vegas中得到了应用。就Westwood方法而言,对带宽的估计建立在接收 ACK速率的基础上,可以被用于设置拥塞窗口,而不是TCP发送窗口。Westwood 发送端会跟踪最小的R]rr间隔,以及根据返回的ACK数据流预测出的带宽。当 检测到丢包事件(表现为三个重复的ACK)时,TCPReno是将TCP的拥塞窗口

减小一半,而Westwood是采用公式(4.3)来更新当前的拥塞窗口值和慢启动阈值。 ssthresh=CW=(BWE宰R乃二)/seg—size 是数据包的大小。当超时事件发生时, TCP Reno ezis.慢将是
(4-4)

其中,BWE表示Westwood对当前网络可用带宽的预估值,R1盯mi。是观测到的 l玎T最小值,seg

启动阈值设为超时发生前拥塞窗口的一半,并将TCP拥塞窗口置l,进入慢启动。 而Westwood同样采用公式(4.4)来更新慢启动阈值,并将TCP拥塞窗口置1,进 入慢启动。 将Cubic的加性增加改进机制和Westwood的倍乘减小改进机制结合起来存 在一个潜在的问题。文献【2l】表明在RTT很小的网络环境下,公式(4.1)的窗口增

27

硕士学位论文

第稠章环境自适威的拥塞控制协议JTCP

长方式毙Reno要慢。这是蠢为,Cubic使用公式(4.1)计算出来的冒标窗口值在

非常接近wm双时,每收到一个ACK,窗VI增加I‰纪一C矿I/CW,可能会比TCP
Reno每收到一个ACK,窗II增加1/CW≤即每个RTT时间,窗口加1)的方式要 慢很多。因此,为了使其窗口增加速度和至少和TCPReno一样快,我们通过修
正公式(4.3)的CNTcubic值来实现。

Count=Min(CNT,。川cw)
JTCP算法详细描述如下:

(4—5)

(a)慢启动 JTCP的慢启动机制和TCP Reno一样。当拥塞窗口小于慢启动阂值的时,
JTCP进入慢启动,每收到一个ACK,拥塞窗口加l。

(b)加性增加算法 在拥塞避免阶段,JTCP采用公式(3-2)对拥塞窗爨进行控制管理,同时还修 正了其在R1盯较小时增长方式比Reno慢的问题。具体描述如下: if(CW>ssthresh)∥当前的拥塞窗121值大于慢启动闽值
Weubi。=C(t—k)3+Wmax;//计算拥塞窗El目标值 CNTcubi。=CW/I Wcubic.CW l;//计算拥塞窗阴的增加幅度

彩修正拥塞窗口的增加幅度,避免其增加速度院Reno慢
Count=Min(CNTeubi昭,CW);



if(tcpcnt>Count)

CWH;
else

∥拥塞窗口加l

cnt++:∥收到的 ACK tep .1加器数计
endif endif

(c)倍乘减小算法 当检测到丢包搴彳睾(表现为三个重复的ACK)时,JTCP使用带宽预估值和最 低R1广r值的乘积来更新慢启动阈值和当前拥塞窗口值。具体描述如下:
if(收到3个DUPACKs)删叠测到丢包事件 ssthresh=(BWE幸RTTmin)/segsize://更新慢启动闽值 if(CW>ssthresh) CW=ssthresh://更新拥塞窗口值
endif endif

(d)超时处理

硕士学位论文

第四章环境自适应的拥寒控制协议JTCP

JTCP的超时出来,具体描述如下: if(检测到超时事件) ssthresh=(BWE宰RTTmin)/seg_size;//更新慢启动阈值 if(ssthresh<2)
ssthresh=2; endif

CW=1;∥拥塞窗口置1,进入慢启动
endif

4.3

JTCP的设计与实现
Linux内核网络协议栈

4.3.1

本小节详细介绍JTCP在Linux内核中的实现过程。这牵涉到很多Linux内 核数据结构,和Linux内核中的TCP协议的拥塞控制框架。因此,我们有必要 先简单介绍Linux内核网络协议栈的体系结构、网络协议栈的关键数据结构和 TCP协议的拥塞控制机制。 (1)Linux内核网络协议栈的体系结构 从整体角度上看,Linux网络系统基本可以分为硬件层/数据链路层、IP层、
INET

Socket层、BSD Socket层和应用层五个部分,其中Linux内核包括了前4

个部分。INET Socket层负责对IP分组排序,控制网络系统效率等功能;D层实 现TCP/IP网络协议栈中互联网层的路由功能;硬件层和数据链路层的区分并不 明确,它包含了硬件驱动程序和逻辑链路层(LLC)的帧发送接收管理功能。 (2)几个关键的数据结构 (a)套接字缓冲区(sk bu∞数据结构 数据结构是sk buff是在INET Socket层和硬件层之间存放数据包,并完成数 据包在不同层次之间传递的主要控制结构。sk buff以双向链表结构进行管理, 该结构包含了一些指针和长度信息,可以让协议栈一标准的函数或方法对应用程 序的数据进行处理。如图4—1所示,head、data、tail、end是四个重要的指针, 分别用来标记数据缓存区的位置。每一个Sk bufr有一个数据保存区,并通过这 个四个指针,不仅可以标记数据保存区的数据内容,还可以根据sk bufr所在不 同协议的层次,改动指针的位置,获得所需的数据。 Head:指向内存中数据区的起始地址。sk bufr初始化后,该指针的值是固 定的 Data:指向协议数据的当前起始地址。该指针的值随当前拥有sk buff的协

硕上学位论文

第pnq章环境自适应的拥塞控制协议JTCP

议层变化而变化。

Tail:指向协议数据的当前结尾地址。和data指针一样,该指针的值也是随
当前拥有sk buff的协议层而变化。

End-指向内存中数据区的结尾。和head指针一样,sk buff被分配之后,该
指针的值也固定不变,head和end之间是sk buff中存放数据包的最大可扩展空
间。
head

妇t曩

Ian


图4-1 sk—buff数据结构示意图

(b)sock数据结构
在INET Socket数据结构中,管理数据包存放和调度的数据结构是sock,sock

结构用来维持某个特定链接的状态,当用户空间创建一个socket时,sock结构
也就被分配了。每一个TCP连接有一个对应的sock数据结构。 (c)tcp sock数据结构 数据结构tcp_sock是TCP协议对其所属的socket进行控制的主要数据结构。 该数据结构包含很多重要的信息,比如:包的序列号,已经确认的字节数,当前

I册和平均Im值等等。我们这设计和实现JTCP拥塞控制算法时,常需用到
tcp

kcos.。息信的量变员成的 (d)inet—connection—sock 数据结构inet—connection—sock是对当前TCP连接进行拥塞控制的数据结构,

它包含有重传计时器,DelAck计时器,RTO计时器,供不同拥塞控制算法自定 义控制数据结构的共享内存空间u32
icsk
ca

priv[16]和用于调整拥塞窗口的数

据结构tcpcongestionops等等。我们设计的拥塞控制算法JTCP的自定义数据
结构的大小超过了16*sizeoffu32),我们将扩大了这个内存空间为u32
icsk
ca

priv[32],而数据结构tcp_congestion_ops是实现一个新的拥塞控制算法
noitops据数 segnoc.结

的最重要的数据结构,我们将在下--d,节中详细介绍tcp 构。 (3)TCP的拥塞控制机制

TCP协议可以说是Linux内核中最复杂的网络协议。TCP协议中有众多的算

硕士学位论文

第豳章环境自邋应的拥塞控制协议JTCP

法和数据结构。TCP功能也众多,包括应用层数据的分组和组装,三次握手建立 连接和拆除连接,流控机制,滑窗机制,ACK/SACK反馈机制和拥塞控制机制
(拥塞控制机制又包括慢启动,拥塞避免,超时,快速重传,快速恢复)等。从 图4.2中可以看出TCP协议拥塞控制机制的复杂性。

虽然TCP协议异常复杂,功能模块众多。但由于Linux内核TCP协议的良 好的模块纯设计,我们在设计一个新的改进算法时,只需要关注其拥塞控制模块, 而并不需要理会其它的TCP功能模块。目前,Linux内核中的改进算法如cubic、
htcp、westwood等都只是改进了TCP协议的拥塞控制机制,TCP其它的功能模

块都没有任何改动。我们将在下-d,节,详细介绍TCP可插拔(Pluggable)的拥塞
控制框架。
蓬接初始化

_辫火攀燃蔹鬟b罴兰赢■二兔1]嘏嫩翻
图4.2 TCP拥塞控制机制有限状态机示意图
4.2.2

TCP可插拔(Pluggable)的拥塞控制框架

要在网络测试床上对自己提出的TCP改进算法进行性能比较测试,就必须在

Linux内核中实现自己的改进算法,这也是整个测试床实验最困难,最关键的一 步。目前,针对离速延迟网络提出的TCP改进算法如:cubic、bic、htcp、highspeed、 scalable等:针对无线网络提出的TCP改进算法如:westwood、veno;针对卫星 网络提出的改进算法hybla等都已经在Linux内核中实现了。这些改进算法的源 代码都是实现自己改进算法的最佳参考范例。 我们通过认真的研究这些源代码,发现Linux内核中TCP协议采用一种“可 插拔式(Pluggable)”的拥塞控制框架,如图4.3所示。该框架采用模块化管理的 方式,巧妙地通过数据结构lcp
congestion

0ps(定义位于内核源代码树

include/net/tcp.h文件中)将TCP协议进行拥塞控制的函数封装起来,这样大大 降低了开发新的拥塞控制算法的难度。这种框架为研究者或开源工作者提供了十

分便捷的方法来实现自己的算法模块到Linux内核中,只需要专注实现自己的改
进算法的拥塞控制函数。

硕士学位论文

第四章环境自适戍的拥寒控制协议JTCP

拥塞控制机制

动态加/卸载模块

呲 龇 :星 郇
~一




沏 止 幽

‰ 啪


图4-3 TCP Pluggable Congest ion Control

framework

数据结构tcp__congestion_ops中定义了如下:
struct

tcp_congestion__ops{
list;

struct list——head

unsigned long flags;

void(幸iniO(struct sock宰sk);/宰初始化函数(必须)毒/ void(*release)(struct sock幸sk);严清除自定义的数据(可选)?/ u32(宰ssthresh)(struct sock?sk);产返回慢启动阈值(必须)?/ u32(*min_cwnd)(const
struct

sock?sk);/.设置拥塞窗口的下限(可选)+/

严拥塞避免阶段的窗口计算算法(必须)?/
void(*cong_avoid)(struct sock?sk,u32
u32 rtt,u32 in_flight,int ack,

good_ack);

/+当拥塞避免状态改变的时候调用函数(可选)幸/
void(?set_state)(struct
sock宰sk,u8

new_state);

严当cwnd event触发是调用(可选)?/ void(*cwnd_event)(struct sock?sk,enum
teE
ca

event

eV);

产当loss发生时,计算新CW值时调用(可选)?/

u32(幸undocwnd)(struct sock宰sk);
严ACK包统计函数(可选)+/ void(?pkts_acked)(struct sock★sk,u32 num_acked,ktime_t last); 户获取当前socket的信息(可选)}/ void(}get_info)(struct
char
struct

sock木sk,u32 ext,struct

sk_buff宰skb);

name[TCP_C入奠AME_MAX];
module
*owner;

32

硕士学位论文

第四章环境自适应的拥塞控制协议JTCP

从数据结构tcp__congestion__ops的定义中可以看出,其成员变量是TCP协议 进行拥塞控制的函数指针。那么实现一个的改进算法的只需要实现自定义的拥塞 控制函数,并将这些函数指针注册成数据结构tcp_.congestion_ops的成员变量。 Cubic,Htcp,Veno,Scalable等改进算法即是该数据结构的不同实现。这些改进算 法作为Linux内核模块,在动态加载模块的同时,将自定义数据结构注册成当前 TCP拥塞控制机制的的数据结构,从而实现TCP协议可插拔的拥塞控制机制。 以Scalable TCP为例,Scalable算法比较简单和TCP Reno区别和不大,只需 要重新定义tcp_scalable__cong_avoid和tcp scalable_ssthresh这两个拥塞控制函 数。代码如下:
static void

tcp_scalablecong_avoid(struct sock幸sk,u32
u32 in_flight,int

ack,u32 rtt,

flag)


struct

tcp_sock木tp=tcp_sk(sk);

if(!tcp_iscwnd limited(sk,in_flight))
return;

if(tp->snd_cwnd<_tp->snd_ssthresh) tcp_slow_start(tp);严慢启动?/ else{ tp一>sndcwnd__cnt++;严拥塞避免阶段}/

if(tp->snd_cwnd_cnt>min(tp?>snd_cwnd,TCP—SCALABLE』I

CNT)){

if(tp->snd_ewnd<tpsnd_cwnd_clamp)
tp->snd_cwnd++; tp->snd_cwnd_cnt=0;

} ) >
static u32

tcp_scalable_ssthresh(struct sock}sk)


const struct

tcp_sock木tp=tcp_sk(sk);

return max(tp->snd_cwnd-(tp一>snd_cwnd>>TCP_SCALABLE_MD_SCALE),

2U);产ssthresh的改变奎/ >

然后生成该算法tcp_congestion_ops数据结构的一个新实例,代码如下:
static struct

tcpcongestion_ops tcp_scalable={

33

硕士学位论文

第弼章环境自适成的拥寒控制协议JTCP

。ssthresh

—tcp_scalable__ssthresh,

.tong_avoid—tcp_scalable_cong_avoid,

。min—cwnd—tcpreno__min_cwnd,
.owneF =THIS MODULE, 一”scalable”,

.name

};

最后,定义在加载或卸载该内核模块时注册或注销该数据结构的函数。代码
如下:
static int......init

tcp_scalableregister(void)


retum tcpregistercongestion_control(&tcp_scalable);


static void....——exit

tcp_scalable_unregister(void)

{ tcp_unregistercongestion_control(&tcp_.scalable);

) JTCP内核模块的实现

4.2.3

我们在前面详细介绍了我们设计的环境囱适应的拥塞控制算法JTCP的主要 思想,Linux内核中TCP可插拔(Pluggable)的拥塞控制框架和在Linux内核中设 计实现一个新的拥塞控制算法的基本方法。本节我们其体介绍在Linux内核中设
计实现JTCP的过程。


JTCP拥塞控翻算法结会和了TCP改进算法cubic和westwood两者的优点, 那么,在实现上需要将cubic和westwood的拥塞控制函数结合起来。为了实现 JTCP的功能,我们设计的JTCP的辅助拥塞控制结构代码如下;
struct

jtcp{
p increase cwnd by l after ACKs搴,

u32 cnt;

u32 last_max_cwnd;≯last maximum snd—ewnd’| u32 loss_cwnd;卜congestion window at last loss囊{ u32 last_cwnd;净the last snd—cwnd每| u32 last_time; ≯time when updated last—ewnd毒|

u32 bic origin__poim;/宰origin point of bic function宰, u32 bit_K;卜time to origin point from the beginning ofthe current epoch u32 delay_min;卜min delay’|
34




硕士学位论文

第四章环境自适应的拥塞控制协议JTCP

u32 epoch_start;净beginning of an epoch鼻| u32 ack cnt;/}number of acks}/ u32 tcp_cwnd;|’estimated tcp cwnd鼻| u32 delayed_ack; u32 u32 u32 u32 u32 u32 u32 u32 u32 u8 u8 bw—ns—est; bw est; 产estimate the ratio of Packets/ACKs<<4木/ 严first bandwidth estimation..not too smoothed p

8)木/

bandwidth


estimate★| new evaluation…^|

rtt_win_sx;|'here starts bk; snd_una; cumul_ack; accounted;
rtt;

净used for evaluating the number of acked bytes^|

rtt_min;

卜minimum

observed肼I|

first_ack;|'flag which infers that this is the first ack^l
reset—rtt—min; ≯Reset RTT min to next RTT sample奄{

); 由于该数据结构的大小超过了数据结构inet
connection

sock预留给自定义 sock的成

辅助拥塞控制数据结构的内存空间大小,我们需要将inet

connection

员变量u32 icsk_ca__priv[16]修改为u32 icsk_ca_priv[32】(预留内存空间扩大一 倍)。否则,在Linux.2.6.22版本中会造成编译不能通过,在之前的内核版本中 甚至会造成内存泄露。 下面介绍JTCP协议的拥塞控制函数和辅助功能函数: (1)static voidjtcp_init(struct sock?sk)该函数为JTCP初始化函数,其中调用 功能函数jtcpresetO来初始化。 (2)static
u32

jtcp_bw_rttmin(const

struct

sock?sk)该函数的功能是设置拥塞

窗口值的下限为带宽预估值幸rtt min的乘积值。 (3)static
void

jtcpcong_avoid(struct

sock幸sk,u32

ack,u32

seq_rtt,u32

in_flight,int

data_acked)该函数为JTCP的拥塞控制函数。

(4)static

u32

jtcp_recalc_ssthresh(struct sock+sk)该函数的功能为计算慢启

动的阀值。 (5)static
u32

jtcp_undo_cwnd(struct sock木sk)该函数的功能为计算丢包事件

发生后拥塞窗口更新值。 (6)static
void jtcp_state(struct sock宰sk,u8

new_state)该函数为处理拥塞避免

的状态改变的函数。

硕七学位论文

第四章环境自适应的拥塞控制协议JTCP

(7)static

void

jtcp_acked(struct

sock}sk,u32 cnt,ktime—t

last)该函数为ACK

统计函数。 (8)static
void

jtcp_event(struct sock掌sk,enum

tcp_ca_event

event)该函数的

功能是处理不同cwnd event事件的函数。 (9)static 函数。 (10)static
inline u32 inline

voidjtcp__reset(structjtcp宰ca)该函数为JTCP初始化的的辅助
jtcp_do_filter(u32如u32 b)该函数的功能是对带宽预估

值进行平滑处理。 (1 1)static
void

jtcp_update_window(struct sock木sk)该函数的功能是对带宽预

估值进行更新。 (12)static
inline void update rtt

min(structjtcp?ca)该函数的功能是对R]广r值

进行更新。 (13)static (14)static
u32

cubicroot(u64 a)该函数为开立方根的功能函数。 jtcp_update(struct jtcp幸ca,u32 cwnd)该函数的功能是使

inline void

用cubic拥塞窗口计算公式来计算拥塞窗口值。
(15)static
rtt

inline

void

measure_delay(struct sock事sk)该函数的功能是更新

min值。

然后,构造数据结构tcp_congestion_ops的JTCP实例,并将JTCP协议的拥
塞控制函数注册成JTCP的成员变量。代码如下:
static struct tcp_congestion_ops jtcp={ .init .ssthresh

=jtcp_init,


jtcprecalc_ssthresh,

.min—cwnd=jtcp_bw_rttmin,
.cong_avoid
.set—state


jtcp._cong_avoid,

=jtcp_state,

.cwnd—event=jtcp_evenL
.undo—cwnd=jtcp_undo__ewnd, .pktsacked=jtcp_acked,
.owner .name

=THIS_MODULE, 2’'jtcp”,

>; 最后,将JTCP拥塞控制算法封装成Linux内核模块,需要编写动态加载和 卸载内核模块的函数static int—init jtcpregister(void)
static

void—exit

jtcp unregister(void),通过宏module—init和module_exit0来动态加载卸载内核模

硕士学位论文

第四章环境自适应的拥塞控制协议JTCP

块。详细代码如下:
static int__init

jtcpregister(void){

BUILD—BUG_ON(sizeof(struct jtcp)>ICSK—C Kj RIV_SIZE);
return

tcpregistercongestion_control(&jtcp);


static void__exit jtcp_unregister(void){

tcp_unregistercongestion_control(&jtcp); ) module_init(jtcpregister); module_exit(jtcp_unregister); 在JTCP内核模块编码完成后,下一步是要将JTCP协议加入到新内核中去。 基本步骤如下: (1)将JTCP源代码放至1]/net/ipv4目录下。 (2)修改此目录下的Kconfig文件和Makefile文件,将改JTCP协议加入到内 核代码树。 (3)重新配置,编译该内核代码树,生成包含JTCP协议的新内核。 重新启动新内核,可以使用命令#sudo 将当前的拥塞控制算法设置成JTCP。
sysctl

net.ipv4.congestion_control=jtcp

4.4

JTCP的性能分析
近年来,随着网络的飞速发展,针对高带宽延迟网络环境和无线网络环境下

TCP协议性能的增强改进取得了一系列的成果。其中被广泛认可、具有代表性的 协议有:高带宽延迟网络下的改进协议Cubic、Scalable、Htcp和Highspeed;无 线网络下的改进协议Westwood和Veno。这些协议都已经在Linux内核中实现了, 能够很方便在网络测试床上对这些协议进行性能评测。 本章的主要工作是在网络测试床上,通过采用Netem来设置不同的RTT和

链路丢包率来模拟现实中高带宽延迟网络环境和无线网络环境,对Cubic、
Scalable、Htcp、Highspeed、Westwood、Veno和JTCP就链路利用率的环境自适

应性、I册公平性和TCP友好性进行全面的性能评测。
4.4.1测试床实验环境的设置

我们选择图4.4做为测试床实验的网络拓扑结构。在网络物理连通后,首先

37

硕士学位论文

第四章环境自适应的拥塞控制协议JTCP

需要对发送段、接收端和中间的路由器进行配置,使任两台机器能够Ping通。

中间路由器采用Netem来设置不同的Im和链路丢包率来模拟现实中不同的网
络类型。在实验中,我们将链路丢包率设置为10’4~10之来模拟现实中无线网络环 境;将R]盯设置为50ms,lOOms,200ms,400ms来模拟现实高带宽延迟网络环 境。发送端和接收端的拥塞控制协议Cubic、Scalable、Htcp、Highspeed、Westwood 和Veno都采用Linux内核默认的参数。我们采用Iperf做为流量产生器,采用 Iperf自带的流量统计功能获取实验数据。

发送端2

接收端2

图4-4网络测试床的拓扑图 表4.1发送端和接收端软硬件配置参数
CPU Intel Pentium 4 CPU 2.80GHz

Memory
Kemel

网卡驱动程序
Txqueuelen

.辇 吣托 ㈨∞





Max_backlog
TX&RX Descriptors /proe/sys/net/ipv4/tcp_sack /proc/sys/net/ipv4/tcp_moderate_revbuf



表4-1为发送端和接收端软硬件配置参数。其中Max_backlog为CPU的缓存
队列。TX&RX Descriptors为网卡驱动缓存队列。/proc/sys/net/ipv4/tcp_sack置0 表示不使用TCP SACK的功能。/proe/sys/net/ipv4/tcp_moderaterevbuf 内核自动调节TCP 有严重影响。
Socket

l表示

Buffer的大小,这个值对高速延迟环境下的TCP实验

4.4.2链路利用率

链路利用率是评价拥塞控制协议性能优劣最重要的指标之一。传统TCP在高 带宽延迟网络环境下和无线网络环境的主要性能问题就是不能获得较高的链路

硕士擎彼论文

第鞠章环境基遁应的拥塞控制协议JTCP

剩用率。在我们实验中,我们使用Netem来设置不同的RTT和链路丢包率来模 拟现实中高带宽延迟网络环境和无线网络环境,对Cubic、Scalable、Htcp、
Highspeed、Westwood、Veno和JTCP就链路利用率进行性能实验分析。拥塞控

制协议性能的环境自适应性,郎在高带宽延迟网络环境和无线网络环境都能获得
较高的利用率,是本小节实验所重点关注的问题。

高带宽延迟网络环境下的链路利用率实验。实验环境设嚣如下:阚络拓扑翔
图44所示;R1陌分别设置为50ms、lOOms、200ms、400ms;链路丢包率为O;

队列采用bFIFO,队列长度为带宽延迟积(转p翳;所有的链路都是100M;测试 时间是600s。实验结果如图4—5所示。
100
90

80
70 60 50 40

一艟氛cI麓一wo焱c珊o^泌露卜
3Q 20 o 50 ’oo 150 200 250 300 350

40Q

RTT【msl

图4-5单协议流在不圈RTT延迟环境下麓吞吐量 从图4.5中可以看出,在R1陌为50ms的时候,BDP较小,所有的协议都能

获得很高的链路利用率。当RTT为lOOms,200ms时,高速网络改进协议Cubic、
Htcp、Highspeed、Scalable都明显高于Reno、Westwood、Veno。这是因为高速 改进协议改进了Reno的加性增加机制,其拥塞窗阴的增加的速度要比Reno要 快。我们设计的JTCP的链路利用率基本上和高速的协议差不多,较Reno、 Westwood、Veno有明显的提高。这是因为,JTCP内置集成了Cubic的窗口增加 枧制,其窗口增加的速度不会吃Cubic慢,因此也能获得较高的链路利用率。警

I研为400ms的时候,虽然,这些协议的性能都有明显的下降,这是因为当RTT
过大时,单位时闽窗口增加的幅度较小,因此链路利用率急剧下降。 无线网络环境下的链路利用率实验。实验环境设置如下:网络拓扑如图4.4
所示,链路丢包率分别设置为lO一、lO.4、lO-3、lO砣;RTT为50ms;队列采用

pFIFO,队列长度是默认值1 000;所有的链路都是1 0M(指定自适应网卡的工作
模式);测试时间是600s。实验结果如图4-6所示。
39

硕士学位论文

第网章环境自适成的拥塞控制协议JTCP

◇ 9 8

7 6 5 4

一∞QD乏一_13cl a3^芷c卜



2 ,
10^5

10^4

10^3

10^2

Random packet loss rate

图4-6单协议流在不同链路丢包率环境下的吞吐量

从图4—6可以看出,当链路丢包率为lO巧时,所有的协议都能够获得很高的
链路利用率。当链路丢包率为10《,10-3,10宅时,Westwood、Veno、Jtcp、Scalable 的链路利用率较Reno、Cubic、Htcp、Highspeed有了明显的提高。Westwood的

带宽预估机制和Veno的丢包区分机制使携议在检测到丢包时,窑日减小的幅度 明显小于Reno检测到丢包拥塞窗口减半的幅度,从而可以获得较高的吞吐量。 而Scalable是因为其乘性增加的机制,发生丢包后,其窑日增加的速度缀快,这 虽然有利用提高链路利用率,但是会对TCP流非常不友好。JTCP由于也具有
Westwood的带宽预估机制,能有效的减少无线丢包的影响,也能获得较高的带 宽利用率。而Cubic、Htcp、Highspeed会将无线丢包当成拥塞丢包处理,同时

这些协议在低速(拥塞窗口不大)网络环境下,为了保证TCP友好性,其拥塞控制 机制和Reno大致一样,因此当这些协议和Reno一样,在无线的网络环境下, 同样存在链路利用率不高的性能问题。 综合来看,高速延迟网络下的改进协议Cubic,Htcp,Highspeed在蒿速延迟 网络中能获得较高的利用率;但是在无线网络环境下,同Reno一样也存在链路 利用率不离的性能阀题。而无线网络环境下的改进协议Veno和Westwood,这鼹
个协议只改进了Reno检测到丢包,窗口减半的机制,窗口增加的机制和Reno

是一样的,因此其在无线网络环境下的带宽利用率较Reno有了较大的提高,但
是在高带宽延迟霹络下,同Reno一样,带宽利用率不高。我们设计的JTCP在

这两种网络环境下都能获得较高的链路利用率,具有很好的网络环境自适应性。

4.4.3

R]广r公平性

硕士学位论文

第}r【j章环境自适应的拥塞控制协议JTCP

表4.2给出了从中南大学某主机访问国内外站点的延时统计情况15 7。,从中可

以看到,同一主机访问国外不同的站点所用的往返延时R]rr差异性非常之大,

85ms,而最大的Im则超过了1秒,它们之间的差异有5倍 之多。这种现象在同时访问国内外网站时更为显著。访问国内网站时最小的Im
最小的RTT不过1 仅为31ms,这样连接国内站点的流和连接国外站点的流共存时,其所产生的RTT 差异可以高达30倍。 表4-2RTT统计值

流与流之间的RTT差异性是网络中广泛存在的现象。R1盯差异所带来的吞 吐量的不公平性,一直是拥塞控制协议所面临的重要问题之一。在本小结中,本

文考察在不同网络环境下,Im的差异性到底会对Reno、Westwood、Cubic、Jtep
等拥塞控制协议产生多大的性能影响。于是,本文设计了下面两种网络环境下的

lm公平性的测试实验。
高带宽延迟网络环境下的R]rr公平性实验。实验环境设置如下:网络拓扑如

图4_4所示;同时运行两条协议流,一条流的RTT设置为50ms,另一条流的I册
分别设置为50ms、100ms、200ms、400ms:链路丢包率为0;队列采用bFIFO,

队列长度为带宽延迟积(BDP);所有的链路都是100M;测试时间是600s。实验
结果如表4.3所示。

表4-3高带宽延迟网络环境下不同Im的协议流吞吐量之比

无线网络环境下的Im公平性实验。实验环境设置如下:网络拓扑如图4.4
所示;链路丢包率10。3;同时运行两条协议流,一条流的R1rT设置为50ms,另

4l

硕士学位论文

第四章环境自适应的拥寒控制协议JTCP

一条流的R]rT分别设置为50ms、lOOms、200ms、400ms:队列采用pFIFO,队

列长度是默认值1000;所有的链路都是10M;测试时间是600s。实验结果如表
4.4所示。 表4-4无线网络环境下不同R1广r的协议流吞吐量之比

从表4.3中我们可以看出,随着两流R]盯比值的增大,两流获得的吞吐量之

比也逐渐扩大,R1盯不公平的现象也越来越明显。当I册的比值为8时,Htcp、
Highspeed和Scalable这三种基于丢包反馈的协议在实验中表现出最为严重的

R1盯不公平性,这是由它们协议机制设计本身所决定的。基于丢包反馈的协议通
常只认为网络中发生了丢包事件才算是真正的产生了拥塞,如果没有丢包事件的

产生协议就会不断的增大自己的发送速率。这样,在带宽竞争时期,往返延时

I盯较小的流相比R1盯较大的流将会获得更多的拥塞窗口增长次数,增长的速
率明显更快,更容易抢占网络中的剩余带宽资源。Cubic的拥塞窗口增长函数是

关于时间t的函数,所以获得了较好R1丌公平性。Jtcp的在拥塞窗口增加机制上
Cubic是一样的,所以也能获得较好的RTT公平性。从表4-4中,我们可以看出, RTT不公平性的现象远没有高带宽延迟网络环境下(如表4-3)那样严重,这是因 为在无线网络环境下,过多的无线丢包,使得这些协议都产生一定的性能问题,

因此吞吐量的比值也不高。当当I湔的比值为8时,Cubic的I岍公平性最好,
Jtcp、Westwood、Veno的R]广r公平性较Highspeed、Scalable有些的改善。综合

来看,Cubic、Westwood的R]rT公平性最好。Jtcp的Im的公平性较Htcp、
Highspedd、Scalable有了明显的改善。

4.4.4

TCP友好性

随着研究的发展,各种改进的拥塞控制协议不断出现,将来很长一段时间内 会出现多种协议共存与同一网络的情况。在这种情况下,改进的拥塞控制协议流 对传统TCP Reno协议流是否具有TCP友好性,也是评价协议性能优劣的一个重 要指标。
42

硕士学位论文

第四章环境自适应的拥塞控制协议JTCP

当协议流和Reno流竞争时,可以从两个方面来判定协议流是否具有TCP友 好性和高效性。一方面,若协议流没有侵占了Reno流的带宽(即将和异种协议流 共存的Reno吞吐量同两Reno流的平均吞吐量比较,若其吞吐量没有明显小于后 者),则认为该协议流是TCP友好的;更进一步,在协议流没有明显侵占Reno 流带宽的前提下,根据协议流和Reno的总的吞吐量来判定该协议流是否能充分 利用剩余带宽,是否能提高链路的总体使用率。 在本小结中,本文设计高带宽延迟网络环境和无线网络环境两种不同的实验 环境,对Reno、Cubic、Westwood、Jtcp等拥塞控制协议的TCP友好性进行平 能评测。 高带宽延迟网络环境下的TCP友好性实验。实验环境设置如下:同时运行两 条协议流,一条流为Reno流,另一条流为改进协议流;R1盯为200ms;链路丢

包率为0;队列采用bFIFO,队列长度为带宽延迟积(BDP);所有的链路都是100M; 测试时间是600s。实验结果如图4.7所示。在相同网络环境下,两条Reno流的
平均吞吐量为34.3M。从实验结果我们可以看出,Scalable的友好性最差,这是 因为其过于激进的窗口乘性增加机制侵占了大量的Reno的带宽。Westwood的友 好性最好,这是因为其带宽预估的机制,能较好的判断当前的可用带宽值,从而 不会侵占Reno流的带宽。Veno在此环境下,由于带宽较大,可能导致计算出来 的N变大,出现拥塞误判。但Veno同Reno竞争时,Veno竞争不过Reno,Reno 流的吞吐量明显比Veno要大很多。Cubic、Htcp、Highspeed和Jtcp的TCP友好 性比Westwood要差一点,但是这些协议总的吞吐量叫Westwood的有了较大的 提高,也就是说牺牲了一点TCP友好性,提高了总的带宽利用率。
100%

80%

.坌

苟 叱 _ 3 △ C
a' 了

2 C
I--- 20%

O%
cubic Htco Highspeed,Sealable

Westwood

Veno

Jt∞

图4.7高带宽延迟网络环境下的TCP友好-,19-re,较

无线网络环境下的TCP友好性实验。实验环境设黄如下:Im为50ms;链
路丢包率10‘2;同时运行两条协议流,一条流为Reno流,另一条流为改进协议
43

硕士学位论文

第网章环境自适应的拥塞控制协议JTCP

流;队列采用pFIFO,队列长度是默认值1000;所有的链路都是10M;测试时

间是600s。实验结果如图4—8所示。在相同网络环境下,两条Reno流的平均吞 吐量为1.77M。从实验结果中我们可以看出,在无线网络环境下,Scalable获得
了较高的吞吐量,但是Scalable的友好性最差,这是因为其过于激进的窗口乘性 增加机制侵占了大量的Reno的带宽。Cubic,Htcp和Highspeed虽然并没有侵占 Reno的带宽,表现出较好的TCP友好性,但是这些协议并没有充分利用剩余的 带宽,两流的总体利用率较低。Westwood和JTCP一方面没有侵占Reno流的带 宽,表现出较好的TCP友好性,而且能充分利用剩余带宽,提高了带宽的总体 利用率。

.Q

苗 叱
.一


e'J e'-





t'-

I--

慨 懈 砉誊 矾 泓 泓 慨 姗 荤耄 僦

cubk H屺p

Hbhspe鲥Scalable W∞h帕酣V?m

JtcO

图4-8无线网络环境下的TCP友好性比较

综合来看,在高速延迟网络环境下,Jtcp的TCP友好性和Cubic、Highspeed 差不多,对Reno流稍微有点不友好,但是其两流的总体利用率很好,也就是说
牺牲了一点TCP友好性,提高了带宽的总体利用率。而在无线网络环境下,JTCP 一方面没有侵占Reno流的带宽,表现出很好的TCP友好性,而且能充分利用剩 余带宽,提高了带宽的总体利用率。

4.5本章小结
本章提出了一种环境自适应的拥塞控制机制JTCP。首先介绍了JTCP的设 计思想和JTCP的拥塞控制机制,然后详细介绍了JTCP协议在Linux内核中的 实现过程。最后,在网络测试床对Reno、Westwood、Veno、Cubic、Highspeed、 Htcp、Scalable、Jtcp进行全面的性能比较测试。实验结果表明,JTCP在TCP友

好性和I盯公平性没有明显降低的情况下,能够同时在高速延迟网络环境下和
无线网络环境下获得较高的链路利用率,体现出较好的环境自适应性。

硕士学位论文

第五章结束语

第五章结束语

本论文主要论述了作者在攻读硕士学位期间网络测试床设计实现的研究工
作和环境自适应拥塞控制协议的研究工作。本文的主要工作之一是对网络测试床

设计实现的整个过程以及网络测试床实验配置的关键技术问题进行深入的研究。 本文另一个主要工作是在分析和研究了高速延迟网络环境下和无线网络环境下
的TCP改进协议的特点后,提出了一种环境自适应的拥塞控制协议JTCP,并将 它实现为Linux内核模块,在网络测试床上对JTCP进行了性能评测。本文的研 究工作将为网络测试床的设计实现和环境自适应拥塞控制协议的研究提供了良 好的借鉴。

6.1研究工作总结与主要创新点
论文的主要研究工作和创新点包括以下几个方面:

(1)本文对网络测试床设计和实现的整个过程以及网络测试床实验配置的
关键技术问题进行深入的研究,详细介绍基于Linux的网络测试床设计与实现的 整个过程,包括Linux网络测试床的拓扑设计;重新配置、编译符合测试床需要 的新的Linux内核;使用Netem和Dummynet来设置可控的,特定的网络实验环 境;TCP
Socket

Buffer的设置;TCP ECN的设置;使用流量产生器产生测试流

量;捕捉和处理实验数据。

(2)本文在分析和研究了高速延迟网络环境下和无线网络环境下的TCP改
进协议的特点后,通过将Cubic的窗口增长机制和Westwood的窗口减少机制结 合起来,设计了一种环境自适应的拥塞控制协议JTCP,并详细介绍了将JTCP 实现成Linux内核模块的过程。最后在网络测试床上对Reno、Westwood、Veno、 Cubic、Highspeed、Htcp、Scalable、JTCP就链路利用率,R]rr公平性和TCP友

好性进行全面的性能评测。实验结果表明,JTCP具有很好的环境自适应特性。

6.2进一步研究工作
基于我们已经完成的研究工作,进一步的研究工作在于:
(1)设计大规模的网络测试床。目前,我们设计的基于Linux的网络测试床 的并没有真实的无线网络环境,只是通过Dummynet和Netem来模拟链路丢包 率,而且网络拓扑结构也比较简单,只有单瓶颈。我们下一步工作是设计多瓶颈,

45

硕士学位论文

第五章结束语

有真实无线网络环境的测试床。其次,本文在测试床实验中,使用100M的链路 做为高速网络环境,这和现实的情况并不是否吻合。在下一步的实验中,我们将
构建Gbit网络测试床来对协议进行性能评测。最后,在进行网络测试床实验时, 背景测试流量的产生和实验数据的收集处理同NS2等仿真软件相比非常麻烦,

我们下一步工作是实现用于产生Web背景流或具有某种统计分布特性背景流的

流量产生器和一些用于收集丢包率,路由器队列长队,Im等性能指标数据的工
具软件。

(2)显示反馈拥塞控制协议在Linux内核中的实现。目前,Linux内核中集成
的TCP改进协议都是基于拥塞窗口调节机制的。XCPf3引,RCp[40]、JetMaxl5鄹、

C3pi59J等显示反馈拥塞控制协议的拥塞控制机制和Reno等调节窗口的拥塞机制
有很大的不同,甚至需要加入新的分组头部。如文【60】中所讨论的那样,我们需 要在TCP和IP分组头部之间加入一个AQM分组头,如图5.1所示。AQM分组 头部的字段是用来协助主机和路由器之间的通信协作,提供网络拥塞相关的信 息。

l(吨州)](*eV.v4-m'O】I嘶I唧I


1蚀
, r

’ II






}鳓渊眨鳓嘲I嘶l I一



^QM




Tcp

lA删






J,


l(ip_q证ae

tmitO][眦洲吲)】I嘶I'ro,IAQMl
IP ’





图5-1分布式传输控制协议的Linux实现方法

(3)不同拥塞控制协议共存时的友好性、公平性和安全性。随着研究的不断
深入,已经提出众多的拥塞控制协议,我们认为至少在将来很长一段时间内会出

现多种协议共存与同一网络的情况,但这些协议拥塞控制机制的侵略性并不一
样,这些不同的协议流共存时,带来了TCP友好性、带宽共享的公平性问题和 恶意拥塞控制协议流攻击所带来的安全性问题,而且这些问题目前并没有引起足 够的重视。因此,这几个方面是我们下一步网络研究的重点。

硕士学位论文

参考文献

参考文献

【1】1



Walrand,P Varaiya.Hi曲一Performance Communnication Networks.Morgan

Kaufmann.2000.

【2】Internet2.http://www.intemet2.edu/ 【3】NSFCnet.http://www.nsfcnet.net/ 【4】ISO/IEC
8802-1 1.IEEE Standard for

Wireless

LAN Medium Access

Control(MAC)

and Physical

Layer(PHY)Specifications.1 999.
TCP

[5】S

Floyd.Highspeed

for

large

congestion

windows.IETF

RFC3649,

Experimental,Dec.2003. 【6】H
Balakrishnan,V

Padmanabhan,S
over

Seshan.A comparison of mechanisms

for

improving TCP performance


wireless

links.IEEE/ACM Trans

on

Networking,

977,5(6):756—769.
Holland,N Vaidya.Analysis of TCP

【7】G

performance

over

mobile ad hoe networks.

Wireless Networks,2002,8(2):275—288. [8】F Wang,Y
detetion G Zhang.Improving TCP performance out—of-order
over

mobie ad—hoe

Networks

with

of

and

response(DOOR).The

MobiHoc’02,Lausanne

Switzerland,2002.
【9】V
Tsaoussidis,I

Matta.Open issues

on

TCP for

mobie

computing.Wireless

Communications and Mobile Computing,2002,2(1):3-20.

【1 O]The Network Simulator—as一2.http://www.isi.edu/nsnam/ns/ 【1 1]OPNET.http://www.opnet.corn/ 【12]Dummynet.http://ai3.asti.dost.gov.ph/sat/dummynet.html 【1 3]Netem.http://linux-net.osdl.o叫index.php/Netem 【1 4]Fedora Core.http://fedoraproject.ore,/ 【1 5]The
Linux Kernel

Archives.http://www.kernel.org/

【1 6]Tcp Tuning Guide.http://www-didc.1b1.gov/TCP?tuning/linux.html 【1 7]Ramakrishnan
K,Floyd S.he Addition of Explicit Congestion

Notification(ECN)to

IP.RFC3168,2001.

【1 8]Iperf.http://dast.nlanr.net/Projectsflperf/ 【1 9]Ttcp.http://www.pcausa.com/Utilities/pcattcp.htm 【20]Tcp
connection probing.http://www.1inux—foundation.org/en/Net:TcpProbe contr01.In Prof of ACM SIGCOMM 1 988,

【2 1]Jacobson.Congestion avoidance and

47

硕士学位论文

参考文献

Vancouve≈USA,1 988,3 1 4-329。

【22]Stevens W

TCP Slow Start,Congestion Avoidance,Fast Retransmit,and Fast

Recovery Algorithms.RFC 2001,1 997.

【23]Floyd

S,Henderson.The NewReno Modification to TCP’S Fast Recovery

Algorithm.

盯C 2582,1999.
【24]Mathis M,Mahdavi
1996. J,Floyd S.TCP Selective Acknowledgment Options.RFC 20 1 8,

【251黄小猛,林闯,任丰源.高速传输协议研究进展.计算机学报,29(11),
2006:190l~1908。

【26】叶进,王建新.异构网络中丢包识别研究综述.计算机科学,33(12),2006.
[27]S Floyd.Highspeed TCP [28]T
for large congestion windows.RFC3649,Dec.2003.

Kelly.Scalable TCP:Improving

performance

in highspeed

wi穗area

networks.

ACM SIGCOMM Computer Communication Review,2003,32,(2):83.91.

【29]L Xu,K

Harfoush,I Rhee.Binary increase congestion control for fast long-distance

networks.In Proc of IEEE INFOCOM 2004,Hong Kong,China,2004,25 1 4—2524.

【30]I

Rhee,L Xu.CUBIC:A new TCP—friendly

high-speed

TCP variant.In Proc of

PFLDnet

2005,Lyon,France,2005. and
long-distance

【3 1]R

N Shoaen,D J Leith.H-TCP:TCP for high-speed

networks.In

Proc of PFLDnet 2004,Argonne,Illinois,2004.

f32]C Jin,D Wei,S

H Low.FAST

TCP:motivation,architecture,algorithms,performance.
Y Sanadidi,Mario Gerla.TCP Startup

In Proe of lEEE INFOCOM 2004,Hong Kong,China,2004,2490-250 1.

【33]Ren Wang,Giovanni Pan,Kenshin Yamada,M

performance

in Large Bandwidth Delay Networks。In Proc of IEEE

INFOCOM

2004,

Hong Kong,China,2004,796—805。

【34]Ryan

King,Richard Baraniuk,Rudolf Riedi.TCP-Africa:An Adaptive and Fair Rapid

Increase Rule for Scalable TCE In Proe of IEEE INFOCOM 2005,Miami,USA, 2005,1 838-1 848.

f35]Gerla M,Sanadidi M,Wang&Zanella A,Casetti C,Mascolo
congestion

S,TCP

Westwood:

window

control using bandwidth estimation.In Proc of IEEE Globecorn

2001,Texas,USA,2001,1698-1702.

【36]S

S Kunniyur.AmtiECN Marking A Marking Scheme for High

Bandwidth

Delay

Connections.In Proc of IEEE ICC 2003,Anchorage,USA,2003,647.65 1.

【37]S Floyd.Quick.Start for TCP and IP.Intemet.draft.October 2006. 【38]Katabi,M
Handley,C Rohrs.Congestion Control for High

Bandwidth.Delay

Product

硕士学位论文

参考文献

Networks.In

Proe

of SIGCOMM 2002,Pittsburgh,USA,2002,89?1 02. L,Stoica I,Kalyanaraman S.One

【39]Xia Y Subramanian

More

Bit is

Enough.ACM

SIGCOMM Computer Communication Review,2005,35(4):37-48.

【40]N

Dukkipati,Nick McKeown,A G Fraser.RCP—AC:Congestion Control to make

flows complete quickly in any Terabits

environment.High
IEEE

Speed

Networking Workshop:The
2006. web

Challenge(In Conjunction with

Infocom’06),Barcelona,April
loss notification and

【4 1]H Balakrishnan,R

Katz.ELN:Explicit 998.

wireless

performances.Mobecom,1 【42]S
Kopparty,S

Krishnamurthy,M Faloutous.Split

TCP for mobile ad hoe networks.In

Proe.of lEEE GLOBECOM,Taipei,Taiwan,Nov.2002. 【43]Balakrishnan
H,Sechan S,Amir E.Improving TCP/IP

performance

over

wireless

networks.ACM MOBICOM’95,Berkeley,C八Nov.1995,PP.2-11.
【44]叶进,王建新,龚皓.无线/有线网络中基于自适应丢包区分的TCP改进.通信 学报,28(5),2007. 【45]T波,范平志.基于无线自组织网络的TCP 学报,V01.16.No.5:878~885,2005. 【46]S Bhandarkar,N
tolerating 2004 Sadry,A Reddy,Nitin Vaidya.TCP-DCR:A novel protocol for channel errors.Lecture Notes in Computer Science,Volume 3042? Freeze

Probin改进协议(英文).软件

wireless

【47]F Wang,Y Zhang.Improving
out—of-order detection and

TCP

performance

over

mobile ad hoe networks with

response.In

Proe.of ACM MOBIHOC,Lausanne,

Switzerland,Jun.2002,PP.21 7-225.
【48]N Samaraweera.Non-Congestion
using Packet Loss Detection for TCP Error Recovery

Wireless

Links.IEE Proceedings Communications,1 46(4),1 999.

【49]S

Biaz,N Vaidya.Discriminating congestion losses

from

wireless

losses

using

interrival times at the receiver.In Proc.IEEE Symp.Application-Specific Systems and Sottware Engineering and

Technology,Richardson,TX,Mar.1 999,PP.1 0?1 7
Tokuda.Achieving moderate fairness for

【50]Y

Tobe,Y Tamura,A

Molano,SGhosh,H

UDP flows by path-status classification.In

Proe.25th

IEEE Conf.Local Computer

Networks(LCN 2000),Tampa,FL,Nov.2000,252-26 1.
【5 1]Nahur Fonseca,Mark
2005. Crovella.Bayesian Packet Loss Detection for TCE Inforcom,

【52]R

K Balan,B P Lee,K Kumar,L Jacob.TCP HACK:a mechanism to improve
over

performance

loss links.INFOCOM,200 1

49

硕士学位论文

参考文献

【53]Cheng

P Fu,Soung C Liew.TCP Veno:TCP Enhancement for Transmission Over Access Networks.IEEE Journal
on

Wireless

Selected Areas in Communications,2003,

21(2):216-228 【54]A
D Aera,L A Greco,S Mascolo.Linux 2.4 Implementation of

Westwood+TCP

with

Rate-Halving:A

Performance

Evaluation

over

the Intemet.Tech.Rep.No.08/03/S, 03一S.pdf

http://deecal03.poliba.it/mascolo/tcp_westwood/Tech_Rep_08
【55]LI Y speed Networks.IEEE/ACM Transactions 【56]LI Y

LEITH D,SHORTEN R.Experimental Evaluation of TCP Protocols for
on

Hi曲

Networking,2007,1 5(5):1 1 09-1 1 22.
kernels[R].Hamilton
Institute

LEITH D.BicTCP implementation in Linux

Technical Report,2004.

【57]Jianxin Wang,Liang Rong,Guojun Wang,Weijia Jia,Minyi Guo.Design of
Stabilizing Second—Order Congestion Controller for Large?Delay of lEEE ICC 2007,Glasgow,2007.



Networks.In

Proc

【58]L

Andrew,K Jacobsson,M Suchara,R

Wiit,B



Wydrowski.MaxNet:theory

and

implementation.Http://netlab.caaech.edu/lachlan/abstract/maxnet_ThAndlmp.pdf

【59】王建新,龚皓,陈建二.高带宽延时网络中一种协同式拥塞控制协议.软件学报, 19(1),2008:125-135. 【60]A
Falk,J

Wang,S

Low.Equilibrium of heterogeneous congestion control:Existence
on

and uniqueness.IEEE/ACM Transaction

Networking,1 5(4),2007:824—837.

硕士学位论文

致谢





在攻读硕士学位期间,陈建二教授和王建新教授在学习和工作上给予本人谆 谆教导和亲切关怀,并为本人的学习和科研工作提供了良好的软硬件条件。导师 们无私地用自己渊博的学识、孜孜不倦的严谨治学态度和学术上的敏锐洞察力,

教会了我进行系统科学研究的方法与途径,并教育我要严谨治学、知难而上、不 要轻言放弃。从进入课题组以来,网络领域研究工作的开展,小论文的撰写直到 本论文的最后完成,都倾注了两位导师大量的心血。因此,本人的研究工作得以
顺利进行,而且使自己解决实际问题的研究思维方法以及科研能力的提高上都大 受裨益。在此,特向陈建二教授和王建新教授致以最真挚的敬意和最衷心的感谢。 感谢陈松乔老师、杨路明、张祖平、王伟平老师和谭长庚老师在我研究生学

习中的悉心教导及传授给我宝贵的知识,这一切是我的学位论文得以完成的坚实
基础,并为我今后进一步提高专业技术水平建立了深厚的理论基础。 感谢学长叶进、黄家玮、龚皓和陈冬雷在我的研究过程中给予我的无私的帮 助和中肯的意见,当我在研究中遇到困难的时候,总能够通过与其讨论得到启发, 给我的研究工作提供了相当大的助力。 感谢我亲爱的父亲母亲和家人,是他们给我的关心和照顾,使我能全心全意

的投入到研究工作中去,顺利的完成我的学业,在这里我向所有关心过我的人表
示最衷心的感谢。

最后还要感谢信息科学与工程学院的所有老师在我研究生学习中的悉心教
导及传授给我宝贵的知识,这些都让我受益匪浅。我还要感谢我的同学荣亮、罗

坤、冯启龙、蔡钊、周志、奎晓燕、赵湘宁、周微微、邵硕、李铁基以及几位低
年级的彭伟文、朱敬、杨志彪、曾永军、袁银行等同学,他们在我的研究设计过 程中向我提供了很好的意见和无私的帮助。

硕士学位论文

攻读硕士期问主要的研究成果

攻读硕士期间主要的研究成果

发表论文情况:

【l】田回,王建新.传输控制协议网络测试床的设计与实现.计算技术与自动化.
已录用

参加的研究项目: 【1】国家自然科学基金项目“基于预测的可扩展接纳控制策略研究"(90304010)

【2】国家自然科学基金项目“多跳无线与有线混合网络中传输控制协议研
究"(60673164)

Linux网络测试床的设计与实现和环境自适应的拥塞控制协议 研究
作者: 学位授予单位: 田回 中南大学

本文读者也读过(10条) 1. 刘靖.陈芳炯.韦岗.LIU Jing.CHEN Fang-jiong.WEI Gang 改进TCP VEGAS拥塞控制协议及其在无线链路中的应 用[期刊论文]-科学技术与工程2007,7(3) 2. 吴林 基于RTT的网络性能异常检测方法研究[学位论文]2006 3. 赵东平.郑卫斌.张德运.ZHAO Dongping.ZHENG Weibin.ZHANG Deyun 高误码率无线环境下的TCP改进算法[期刊 论文]-计算机工程2006,32(9) 4. 张月琴.甄腾.王建慧 多跳无线网络下的TCP Vegas性能分析[会议论文]-2009 5. 周敏 异构无线网络中一种TCP增强算法[期刊论文]-福建电脑2008,24(11) 6. 刘壮礼.陈元琰.罗晓曙.闫友彪 混合无线链路高速网络中一种基于TCPW的拥塞控制改进算法[期刊论文]-计算机 应用2005,25(z1) 7. 吴艳洁.白光伟.吴志刚.WU Yan-jie.BAI Guang-wei.WU Zhi-gang TCP Veno协议的性能分析与评价[期刊论文]计算机工程与设计2009,30(12) 8. 付强.袁鑫.林中.FU Qiang.YUAN Xin.LIN Zhong TCPW-REAL:基于无线网络的TCPW改进协议[期刊论文]-计算机 工程与设计2009,30(1) 9. 田立伟.陈元琰.罗晓曙.寇丽娟.TIAN Li-wei.CHEN Yuan-yan.LUO Xiao-shu.KOU Li-juan 基于RTT的TCPW拥塞 控制算法的改进[期刊论文]-计算机工程与设计2009,30(24) 10. 唐述.谢显中.赵锐 TCP Veno在无线Ad Hoc网络中的性能比较研究[期刊论文]-计算机应用2007,27(z1)

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1324634.aspx


赞助商链接
相关文章:
无线网络中的TCP拥塞控制
(MH 到基站的无线段基站到 FH 的有线段),在有线 无线链路段分别采取不同的拥塞控制策略.有线链路段使用标准 TCP 无线链路段则采用适于无线环境的改进协议...
3000字缩文 无线自组织网络自适应拥塞控制路由的研究
无线自组织网络自适应拥塞控制路由的研究学院:通信工程学院 学生姓名:马迎春 指导教师:李月 中文摘要:Ad hoc 网络(MANET,Mobile Ad hoc Network)由可以随意移动、...
通信工程专业毕业设计题目大全
网络设计与仿真 17 Linux 环境下无线传感器网络分簇...实现 61 基于 NS2 的有线网络拥塞问题仿真研究 67...实现 80 基于 Matlab 与 DSP 的自适应滤波器设计...
高效排除Linux网络故障—ntop应用实例分析
我们介绍 Linux 环境下一个功能完备的 GUI 网络检测...的网络拥塞、性能下降等问题,已影响到正常 的网络...(Transmission Control TCP Protocol,传输控制协议)是...
2003年度网络设计师上午试题
协议数据单元 中传送,在网络中起着差错和拥塞控制的...(30) 是 IPv6 的 测试床,实际上是一个基于 IPv4...Linux 中一种常用的引导工具是 (51) ;在 Linux ...
无线网络教室的监测与控制技术
Linux下的C编程实战之四 7页 免费 绕过堆栈保护的...需要引入一套与无线环境特点相适应的监测 控制机制...网中, 对网络业务进行监测, 并根据 测得的网络...
提高Linux上socket性能—加速网络应用程序
提高Linux上socket性能—加速网络应用程序_计算机软件及...您就可以从头开始为实现最佳性能来设计并 开发 ...启用发送者端的拥塞控制算法,它 可以维护对吞吐量的...
历年计算机三级网络填空题汇总
成为阿帕网的协议标准 1991 年高能物理研究所 <1>...网络层,分组存贮转发、路由选择、拥塞控制 <1>单机...<1>Linux 起源---芬兰,赫尔辛基大学<2>Linux 特点...
cTrans高速数据传输系统
的影响,从而可以针对线路特性,设计特定 的拥塞控制...使用环境与界面使用环境:目前提供 Linux 下的 c...大网络速度(采用 UDP 协议) I/O 速度进行测试,...
TCP-IP原理与基础以及在Linux上的实现
TCP-IP 原理基础以及在 Linux 上的实现 OSI 于...网络上的载荷能力超过其处理能力时, 便会出现拥塞...用于纪录 UDP 协议 IP 而设计的,而这种适应性主要...
更多相关标签: