无线TCP拥塞
- 格式:doc
- 大小:64.50 KB
- 文档页数:11
TCP拥塞控制算法理论及调优实践TCP(Transmission Control Protocol)是当前Internet上最重要的传输协议之一,其主要特点是提供了可靠的数据传输服务。
然而,在高负载情况下,TCP数据传输过程中容易出现拥塞现象,导致网络性能下降、数据丢失等问题。
因此,TCP拥塞控制算法成为网络性能优化中的重要一环。
TCP拥塞控制算法的原理TCP拥塞控制算法主要基于网络反馈机制实现,在网络出现拥塞时,TCP协议会相应地降低发送数据的速度,以此来缓解网络负载压力。
TCP拥塞控制算法主要包括四种基本算法:Slow Start、Congestion Avoidance、Fast Retransmit和Fast Recovery。
Slow Start算法是TCP拥塞控制算法中最基本的算法之一,其主要原理是当TCP协议开始发送数据时,先以一个较小的速率进行发送,逐渐递增发送速率,同时不断根据网络反馈调整发送速率,直到网络达到拥塞阈值时,TCP协议则根据反馈信息逐渐降低发送速率,以缓解网络拥塞压力。
Congestion Avoidance算法主要是在Slow Start算法的基础上进一步进行优化,其主要想法是当网络出现拥塞时,不仅仅是降低发送速率,同时也要通过降低拥塞窗口大小来减少拥塞现象的发生。
Fast Retransmit算法主要是当发送方在经过一段时间后始终没有收到确认数据包时,则会认为数据包已经丢失,此时会立即重发数据包以避免数据包过多地停留在网络中发生拥塞现象。
这种方式可以大大缩短丢包重传的时间,提高数据传输的时效性。
Fast Recovery算法主要是在Fast Retransmit中进一步进行优化,当收到重复的确认数据包时,TCP协议会认为数据包已经被正确接收,此时会立即完成重传操作并根据网络反馈情况以逐渐增加发送速率的方式来提高数据传输效率。
TCP拥塞控制算法的调优实践TCP拥塞控制算法的调优是一项非常复杂的工作,需要综合考虑网络拓扑结构、流量类型、网络负载情况等多个因素。
tcp的拥塞控制方法TCP的拥塞控制方法TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它在互联网中扮演着重要的角色。
在TCP协议中,拥塞控制是一项非常重要的功能,它可以避免网络拥塞,保证网络的稳定性和可靠性。
本文将介绍TCP的拥塞控制方法。
TCP的拥塞控制方法主要包括四个方面:慢启动、拥塞避免、快重传和快恢复。
下面将分别介绍这四个方面的内容。
一、慢启动慢启动是TCP的一种拥塞控制算法,它的目的是在TCP连接开始时,尽可能快地找到网络的最大带宽。
在慢启动阶段,TCP发送方会将拥塞窗口cwnd的大小从一个初始值开始逐渐增加,直到网络出现拥塞为止。
具体来说,TCP发送方会将cwnd的大小设置为一个初始值(通常为2个MSS),然后每经过一个往返时间RTT(Round Trip Time),cwnd的大小就会翻倍。
例如,如果初始值为2个MSS,第一个RTT结束后cwnd的大小为4个MSS,第二个RTT 结束后cwnd的大小为8个MSS,以此类推。
这样做的目的是为了尽可能快地找到网络的最大带宽,从而提高TCP连接的传输效率。
二、拥塞避免拥塞避免是TCP的另一种拥塞控制算法,它的目的是在TCP连接运行过程中,尽可能地避免网络拥塞。
在拥塞避免阶段,TCP发送方会将拥塞窗口cwnd的大小逐渐增加,但是增加的速度会比慢启动阶段慢一些。
具体来说,TCP发送方会在每个RTT结束后将cwnd 的大小增加1个MSS,而不是翻倍。
这样做的目的是为了避免网络拥塞,从而保证TCP连接的稳定性和可靠性。
三、快重传快重传是TCP的一种拥塞控制算法,它的目的是在TCP连接出现数据包丢失时,尽可能快地重传丢失的数据包,从而避免网络拥塞。
在快重传算法中,TCP发送方会在接收到三个重复的ACK (Acknowledgement)时,立即重传丢失的数据包,而不是等待超时后再重传。
这样做的目的是为了尽可能快地恢复丢失的数据包,从而避免网络拥塞。
tcp协议拥塞控制策略
TCP协议的拥塞控制策略有以下几种:
1. 慢启动:初始时发送窗口大小较小,随着时间的推移逐渐增大,直到达到网络的拥塞程度为止。
慢启动可以有效地利用网络资源,并在网络拥塞出现时降低发送速率。
2. 拥塞避免:一旦网络发生拥塞,TCP会进入拥塞避免状态。
拥塞避免的原理是通过线性增加发送速率,以减少网络拥塞。
发送方每收到一个确认报文段,就将发送窗口的大小增加一个最大报文段长度(MSS)的值。
3. 快速重传与快速恢复:当发送方发送的数据包超时未收到确认时,发送方会假设数据包丢失,会立即重传该数据包,而不是等待超时。
同时,发送方也会将慢启动门限值设为当前拥塞窗口的一半,并直接进入拥塞避免状态,以加快恢复速度。
4. 拥塞检测:当网络发生拥塞时,接收方会根据接收到的乱序报文段来判断网络是否出现了拥塞。
如果发现有报文段丢失,则发送一个重复确认报文段给发送方,以触发发送方进行拥塞避免。
总结起来,TCP协议的拥塞控制策略通过慢启动、拥塞避免、快速重传与快速恢复以及拥塞检测等机制来动态地调整发送速率,以避免网络拥塞并提高网络性能。
4.4.2 无线移动环境下的传输层协议1 传统有线环境下的传输层协议(1)TCP可靠传输机制1) TCP流量控制机制TCP基于接收缓存进行数据的接收,即当发送的数据到达接收方时,TCP 将这些数据放在接收缓存区内,然后交付给应用程序。
如果缓存区溢出,就会导致数据丢失,对这种情况进行控制的机制称为流量控制,目的是阻止发送方发送太快。
TCP基于面向连接的可靠性流量控制策略一般有两种:简单停等协议和基于滑动窗口的流量控制。
简单停等协议:发送方每发送一个TCP段,必须等到来自接收方关于该TCP段的确认到达,然后才发送下一个TCP段。
显然这种方案效率太低,网络资源的利用率极低。
基于滑动窗口的流量控制:发送方可以一次传输一定数量的TCP段,而不必等待这些TCP段中任何一个段的确认。
这些TCP段的数量称为滑动窗口的大小。
一次发送的TCP段数量不能超过该窗口的大小。
在窗口的左边是已经发送并已经确认的TCP段。
在窗口的右边是未落在窗口中还没有发送的TCP段,未落在窗口中是不能被发送的。
TCP协议采用了第二种方案,即基于滑动窗口的流量控制,较好的解决了流量控制问题。
需要指出的是窗口尺寸不是固定的,可以随着网络的拥塞情况发生变化,因而能充分利用网络资源。
2) TCP拥塞控制机制网络拥塞的基本概念:在因特网中,由于瓶颈子网(包括中间路由器和中间链路)处理数据的能力有限,当数据流超负荷时,可能引起严重的延迟或丢包的网络现象,我们把这种现象称为网络拥塞。
而大量丢包引起的大量重传进一步加剧网络拥塞,这种恶性循环可能导致拥塞崩溃,使得整个网络无法运转。
因此一个好的传输层协议必须能进行有效的拥塞控制。
事实证明,TCP较为完善的拥塞控制机制正是今天因特网得到急剧增长和普及的关键因素。
拥塞控制机制:显然在网络非拥塞情况下,如果接收方通告窗口足够大,则发送窗口和拥塞窗口是相等的。
当网络发生拥塞时,必须减少拥塞窗口的大小,从而限制向网络中发送的数据量,减轻网络的负担,使网络能够从拥塞中恢复出来。
目前因特网中使用的TCP版本主要是Reno,它的拥塞控制策略包括慢启动、拥塞避免、快速重传、快速恢复等。
(2)UDP面向无连接传输机制1) 用户数据报的用途用户数据报协议UDP只在IP的数据报服务上增加了很少的一点功能,这就是端口的功能(有了端口,运输层就能进行复用和分用)和差错检测的功能。
虽然UDP用户数据报只能提供不可靠的交付,但其在某些地方有特殊的优点。
如:(1)发送数据之前不需要建立连接(当然发送数据结束时也没有连接需要释放),因而减少了开销和发送数据之前的是时延。
(2)UDP没有拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。
(3)UDP 用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短。
(4)由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。
这对某些实时应用是很重要的。
很多实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但不允许数据有太大的时延,UDP正好适合这种要求。
虽然某些实时应用需要使用没有拥塞控制的UDP,但当很多的源主机同时都向网络发送高速率的实时视频时,网络就有可能发生拥塞,结果大家都无法正常接收。
因此“UDP不具有拥塞控制功能”,可能引起网络产生严重的拥塞问题。
还有一些使用UDP的实时应用需要对UDP的不可靠的传输进行适当的改进以减少数据的丢失。
在这种情况下,应用进程本身可在不影响应用的实时性的前提下增加一些提高可靠性的措施,如采用前向纠错或重传已丢失的报文。
2) 用户数据报的格式用户数据报UDP有两个字段:数据字段和首部字段。
首部字段有8个字节,由4个字段组成。
UDP数据报的首部和伪首部如图4.10所示。
图4.10 UDP数据报的首部和伪首部图2 无线移动环境下增强协议传输层协议性能的方案现今研究无线移动环境下新一代的传输层协议性能的方案很多,特别是对无线环境下TCP的研究,如TCP V eno I版本成功解决了网络传输在无线以及全IP 环境中遇到的公开难题——倍减算法。
随着人们对通信越来越高的要求和研究的深入,新一代无线环境下的面向连接的传输控制协议TCP和面向无连接用户数据报协议UDP的相互融合,协同工作来增强网络的性能也越来越受到人们的关注。
这时,新一代移动通信传输协议TCP Veno II已经出炉,同时实现了无连接传输与无缝传输。
人们把更多的目光关注到这个新的协议上来。
我们大量研究了近些年以来无线传输环境下的传输层协议方案,对近些年的很多典型的方案做了总结性的归纳和对TCP V eno II的介绍。
(1)无线移动环境下增强TCP性能的方案1) 端到端方案这种方案的目的是使TCP发送端能够区分拥塞相关的数据包丢失和其它形式的数据包丢失。
只有当网络拥塞发生时,TCP拥塞控制处理过程才被激活,而对于其它形式的丢包则执行其它错误恢复处理过程。
这种方案的优点是保持了TCP的端到端语义(semantics)。
缺点是需要对固定网络主机上的TCP算法进行改动,并且如果要对Internet上现存的所有TCP应用进行修改是一件极其困难的事情。
Samaraweera等提出了一种称为“非拥塞数据包丢失检测”的方法(Non-congestion Packet Loss Detection NCPLD)[37]。
NCPLD利用了网络中knee 点的概念,将该点测量到的RTT称为延迟闭值(delay thresh-hold)。
如果当前测量到的RTT比延迟闭值要小,则认为丢包不是由于网络拥塞引起的;否则就认为丢包是由于拥塞引起的。
NCPLD只需在发送端进行少量改动即可。
Tsaoussidis和Badr提出了一种称为TCP-Probing[38]的方法,其方法是在标准TCP协议中增加探测(probe)机制。
源端检测到丢包(超时或者收到3个重复ACK)后,不是立即重传丢失的包而是暂停数据的发送并进入探测循环(probe cycle)状态,发送探测包。
如果探测包丢失,将启动一个新的探测循环。
当探测循环结束以后,源端通过比较测量到的探测包的RTT来决定拥塞程度。
如果是拥塞导致的丢包,源端则进入拥塞控制处理阶段;如果是由于短暂的错误引起的,则立即以原来的速率发送数据。
从而区分出拥塞丢包和其它丢包。
Tsaoussidis等提出的TCP-real[39]是一种基于波(wave)的错误检测机制。
由于发送端是每RTT将拥塞窗口内的数据一起发送出去,从接收端的角度来看,数据的发送是“波”状的。
TCP-real中,拥塞窗口由接收端控制而不是发送端。
接收端测量数据接收速率,根据此速率的变化调整波的级别,反应网络的当前状况。
数据接收速率越低,接收端设置的波的级别越高;否则相反。
接收端通过确认包向发送端通知波的级别;发送端则根据波的级别来调整拥塞窗口大小。
TCP-real通过把拥塞窗口大小和RTT结合还解决了网络中路径的非对称性问题,对于确认包返回路径上发生的拥塞,发送端拥塞窗口则不加以调整的。
TCP-real对拥塞程度的估计较为精确,并且发送端可以在发生丢包之前及时调整拥塞窗口大小,因此数据发送速率的波动较小。
在TCP Santa Cruz[40]中,Parsa和Aceves提出通过计算数据包在发送路径上的延时来估计拥塞是否发生。
具体方法是通过计算一个包和另一个包在发送路径上的相对延时来估算驻留在瓶颈队列中包的数量。
由于拥塞导致的丢包通常伴随着瓶径队列的增加,因此,当丢包发生时,接收端通过估算瓶颈队列变化状况来判断是否发生拥塞。
对于链路不对称性及其它原因造成的问题,Mascolo提出了TCP-Westwood[41],其主要特点是:当收到3个重复ACK或出现超时时,并不是将拥塞窗口减半,而是试图选择一个在出现拥塞时和有效带宽相称的慢启动闽值及拥塞窗口。
源端通过测量返回ACK包的平均速率来估计TCP连接的可用带宽。
从而避免了过分保守的减少拥塞窗口和慢启动门限,有效地利用了带宽。
由于在无线移动网络的特性,高误码率和移动切换的时候出现的丢包的时候,端到端的拥塞控制机制和公平性问题仍然是其两大棘手问题,Eric等人提出了J-TCP机制[42],这种机制是基于抖动的角度来研究调节发送端的数率来适应网络的丢包率和抖动率,通过调整应答窗口的大小来区别网络丢包产生的原因是拥塞还是非拥塞。
实验数据表明该机制在异构网络环境中可以很好发挥其作用。
2) 分段连接方案这种方案是基于局部问题局部解决的思想,也就是由于无线/移动的原因造成的错误应该对固定主机(源端)屏蔽,从而无需修改固定主机上的TCP协议。
分段连接方案是将正常的源端和目的端的TCP连接分为两段:一段连接源端和基站,另一段连接基站和目的端。
从而对源端屏蔽无线网络的存在。
这种方案中源端和基站之间使用标准的TCP连接;在基站和目的端之间则可使用改进的TCP 连接,以增强在无线网络中的性能。
Bakre和Badrinath提出的Indirect-TCP(I-TCP)[43]最早建议采用分段连接的。
I- TCP两段均使用标准的TCP连接。
发往MH的数据首先被基站接收,基站向FH发送ACK,然后将数据转发到MH。
I-TCP有助于对固定网络屏蔽无线链路的不确定性,并且FH上的TCP不需要改变。
I-TCP的缺点一是不能维持TCP端到端的语义(semantics);二是基站和MH之间使用标准TCP连接,不能有效处理无线丢包问题,从而导致整体性能的下降。
Ratnam和Matta提出的WTCP[44]通过修改TCP包头时间戳中的时间来对源端屏蔽在基站缓冲区中花费的时间。
这样源端对RTT和超时时间的估算就不会受到无线丢包的影响。
其缺陷是由于TCP头中包含的是时间滴(clock tick)值而不是实际时间,而基站无法知道源端的时钟粒度(clock granularity),只能进行估算,因此在很多情况下精度不高。
分段连接方案由于基站维持了两段连接,因此必须缓冲大量的状态信息,包括连接控制信息和未确认数据包。
当业务量很大时,基站的负荷会变得非常重,而且需要更大的缓冲区。
如果移动设备频繁地切换,基站之间状态信息的传输会带来较大时延,从而导致丢包。
3) 数据链路层方案数据链路层方案的目标是通过在无线链路上进行重传或错误纠正来屏蔽不可靠的无线链路对有线网络的影响。
其优点是可以独立于高层协议而提高数据传输的可靠性,并且无需保留每次连接的状态信息。
目前常用的两种链路层纠错技术为:前向错误纠正(Forward error correction, FEC)及自动重传请求ARQ技术[45]。