TCP拥塞控制分析

合集下载

TCP的流量控制和阻塞控制

TCP的流量控制和阻塞控制

TCP的流量控制和阻塞控制流量控制和阻塞控制实例:可以⽤⼀个例⼦来说明这种区别。

设某个光纤⽹络的链路传输速率为1000Gbit/s。

有⼀台巨型计算机向⼀台个⼈电脑以1Gbit/s的速率传送⽂件。

显然,⽹络本⾝的带宽是⾜够⼤的,因⽽不存在产⽣拥塞的问题。

但流量控制却是必须的,因为巨型计算机必须经常停下来,以便使个⼈电脑来得及接收。

(流量控制)但如果有另⼀个⽹络,其链路传输速率为1Mbit/s,⽽有1000台⼤型计算机连接在这个⽹络上,假定其中的500台计算机分别向其余的500台计算机以100kbit/s的速率发送⽂件。

那么现在的问题已不是接收端的⼤型计算机是否来得及接收,⽽是整个⽹络的输⼊负载是否超过⽹络所能承受的。

(阻塞控制)TCP流量控制1.什么是流量控制? 所谓的流量控制就是让发送⽅的发送速率不要太快,让接收⽅来得及接受。

2.什么⽅式进⾏流量控制? a.利⽤滑动窗⼝机制可以很⽅便的在TCP连接上实现对发送⽅的流量控制。

b.TCP的窗⼝单位是字节,不是报⽂段,发送⽅的发送窗⼝不能超过接收⽅给出的接收窗⼝的数值。

滑动窗⼝机制⽰意图:1.设A向B发送数据。

在连接建⽴时,B告诉了A:“我的接收窗⼝rwnd = 400”(这⾥rwnd表⽰recevier window)。

2.发送⽅的发送窗⼝不能超过接收⽅给出的接收窗⼝的数值,请注意,TCP的窗⼝单位是字节,不是报⽂段。

3.再设每⼀个报⽂段为100字节长,⽽数据报⽂段序号的初始值设为1(图中第⼀个箭头上⾯的序号为seq=1。

从1开始,data⾥有100个字节的数据。

)4.图中箭头上⾯⼤写ACK表⽰⾸部中的确认位ACK(应答标识,表⽰接收到信息),⼩写ack表⽰确认字段的值(表⽰接收到了哪些具体的数据)。

a.接收⽅的主机N进⾏了三次流量控制,第⼀次把窗⼝减⼩到rwnd =300。

b.第⼆次⼜减⼩到rwnd = 100。

c.最后减到rwnd = 0,即不允许发送⽅再发⽣数据了。

基于TCP的网络拥塞控制研究

基于TCP的网络拥塞控制研究
源主机和 目的主机之间的某处网络上发生了拥塞。有两种分组丢失的指 示: 发生超时和接 收到重复的确认 。 但是当拥塞发生时, 我们希望降低分组
2 、如没有使用路由器, 就要求 T C P发送端的拥塞控制进行改变, 在拥
塞避免 阶段是共享同一资源的 T C P 连接以相 同速度发送数据。 3 、 可以考虑引入发送优先级的概念, 拒绝大范围的同时发送 同一共享 资源, 而是按照优先级有先后次序的逐个 发送, 优先级的使用 可以仿造 进 程优先级的管理方式, 动态变化, 实时调整以加强有效利用率。
合理的 s s t h r e s h值并不容易, 因此这个方法的效果是有限的。而 S m o o t h —
s t a r t 较为平滑地从慢启动过渡到拥塞避免阶段, 减少 了报文段丢失和突发
传送信息的中介, 以此来达到整个网络资源 的共享。这样 的方式便于在 网 络 中查找某个特定 的主机, 但 随着 主机数量的增多和数据传输量的增大,

参考文献
[ 1 】 S T E V E N S W . T C P S I O W S t a r t ,c o n g e s t i o n a v o i d a n c e , f a s t r e t r a n s m i t , a n d f a s t r e c o wr y a l g o r i t h m s 【 E B / 0 L 】 . [ 2 】 A L L M A N M , B A L A K R I S H N A N H , F L O Y D S .E n h a n c i n g T C P’S l o s S r e c o v e r y U S i n g 1 i m i t e d t r a n s m i t [ E B / O L 】 .

TCP拥塞控制

TCP拥塞控制

计算机网络
往返时延RTT优化
往返时间RTT
往返时间:
往返时间(RTT)是指从数据段发送开始,到接 收到该数据段对应应答所经历的时间,主要由链路传播时 间、端系统处理时间和路由器排队/处理时间组成。 对同一个TCP连接,链路传播时间、端系统处理 时间相对固定,因此,网络拥塞情况可通过路由器排队/ 处理时间的变化而推断。
其中: pi为第i条路径的丢包率, RTTi为第i条路径的往返时延, b为每个ACK应答的分组数, pktsize为分组的大小, n为路径的总数。
基于MFD的多路径算法
可见, 要在给定的网络条件下提高端到端吞吐率, 必须减小往返时延RTTi。路径的往返时延是正向路径时延 以及反向路径时延之和。 第i条路径对应的正向路径时延为fi, 反向路径时延 为ri.不失一般性,假设ri≤ri +1(1≤i≤n)。如果采取MTCP算法, 则RTTi =fi+ri。 为了提高吞吐率,可以采用最小反馈时延MFD的多径 传输协议, 即选取时延最小的反向路径来传输应答分组。 MFD可以减少各条路径的往返时延 RTT‘i=fi+r1<fi+ri=RTTi ,从而提高端到端的吞吐率, 降低拥塞。
Freeze-TCP
Freeze-TCP用于解决主机移动所引起的丢包. 主要思想: 让移动主机监测无线信号的能量,并检测出即将发生 的主机切换事件.当切换即将发生时,移动主机向发送者 发送一个通告窗口为零的反馈,从而迫使发送者进入零窗 口探测模式. 在零窗口探测模式中,发送者不会改变它的拥塞窗口 和超时计时器的时长.
RTT分析
在无线环境下,忽略链路传播时延的前提下,在误码 丢包的作用下,RTT呈现无规律变化,且有趋小趋势. 因此,在无线环境下,考察RTT的变化区分误码丢 包与拥塞丢包进行发送速率的调整是可行的:在RTT变 小时,说明网络拥塞丢包风险小,拥塞窗口向下调整幅度 应较小;在RTT变大时,说明网络拥塞丢包风险大,拥 塞窗口向下调整幅度应较大,是符合无线网络实际情况的。

《TCP的拥塞控制》课件

《TCP的拥塞控制》课件

慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
24 20
ssthresh 的初始值16
拥塞避免 “加法增大”
网络拥塞
拥塞避免 “加法增大” “乘法减小”
新的 ssthresh 值12
慢开始
8
4
指数规律增长
传输轮次
0
0 2 4 6 8 10 12 14 16 18 20 22
慢开始
慢开始
发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端 窗口 rwnd 中的最小值。我们假定接收端窗口足够大, 因此现在发送窗口的数值等于拥塞窗口的数值。
● 使用慢开始算法后,每经过一个传输轮次,拥塞窗 口 cwnd 就加倍。
● 一个传输轮次所经历的时间其实就是往返时间 RTT。
●“传输轮次”更加强调:把拥塞窗口 cwnd 所允许 发送的报文段都连续发送出去,并收到了对已发送 的最后一个字节的确认。
● 例如,拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报 文段的确认,总共经历的时间。
慢开始算法的原理
●在主机刚刚开始发送报文段时可先设置拥塞 窗口 cwnd = 1,即设置为一个最大报文段 MSS 的数值。
●在 每 收 到 一 个 对 新 的 报 文 段 的 确 认 后 , 将 拥 塞窗口加 1,即增加一个 MSS 的数值。
●用 这 样 的 方 法 逐 步 增 大 发 送 端 的 拥 塞 窗 口 cwnd,可以使分组注入到网络的速率更加合 理。
cwnd = 1 cwnd = 2
发送方每收到一个对新报文段的确认 (重传的不算在内)就使 cwnd 加 1。
发送方
接收方
发送 M1

linux tcp默认拥塞控制算法 -回复

linux tcp默认拥塞控制算法 -回复

linux tcp默认拥塞控制算法-回复Linux TCP默认拥塞控制算法在网络通信中,TCP(Transmission Control Protocol)是一种重要的传输层协议,负责确保数据可靠地传输。

拥塞控制是TCP的一个重要组成部分,它通过控制数据包的发送速率来避免网络拥塞,保证网络的稳定性和可靠性。

Linux作为一种主流的操作系统,采用了多种拥塞控制算法来实现这一目标。

本文将以“Linux TCP默认拥塞控制算法”为主题,以简明的方式一步一步回答,让读者更好地理解Linux TCP默认拥塞控制算法。

1. 什么是拥塞控制算法?拥塞控制算法是一种用于调节数据包发送速率的策略,以确保网络能够处理并传输数据,同时避免引发网络拥塞。

拥塞控制算法通过不断地监测网络的状态,并根据网络的反馈信息(如丢包、延迟等)调整数据包的发送速率,从而保证网络的稳定性。

2. Linux TCP默认拥塞控制算法是什么?Linux操作系统中,默认拥塞控制算法被称为“CUBIC”(Compound TCP)。

CUBIC是一种基于窗口的拥塞控制算法,相对于其他传统算法,如Reno 和New Reno,CUBIC具有更好的网络吞吐量和鲁棒性。

3. CUBIC拥塞控制算法的原理是什么?CUBIC算法通过观察网络传输的RTT(Round-Trip Time)变化来进行拥塞控制。

RTT指的是从数据包发送到接收并返回所需的时间。

CUBIC算法利用TCP拥塞窗口(cwnd)来调整数据包的发送速率。

它通过维护一个“拥塞窗口”的概念,该窗口决定了在每个RTT周期结束时发送的数据包数量。

当网络拥塞时,CUBIC算法将减小拥塞窗口的大小,以避免过多的数据包进入网络导致更严重的拥塞。

当网络恢复时,CUBIC算法会逐渐增加拥塞窗口的大小,以提高发送速率。

4. CUBIC算法与其他拥塞控制算法的区别是什么?相对于传统的Reno和New Reno算法,CUBIC算法在处理长距离和高带宽网络连接时表现更优秀。

TCP拥塞控制算法研究

TCP拥塞控制算法研究
u i i a o a l i t.U ig NS t i a i mei slw r a k t o s ae h n T P b b e v t n a ay i.I e w t n r s n b e l s sn 2, s r h t i e c e s tst a C yo s r ai n s h e mi h t c o p l r o l s t c n i rv e tr u h u ft e T P c n e t n a d a alb e b n w dh a mp o e t o g p to h C o n ci n v i l a d i t .T e n y i o e u t rv s t a h h h o a h n a a s fr s l p o e h tt e l s n v lc n e t n c n r l ag r h c n s e d c n e t n rc v r o t l n a c r i xe t n e r a e t ev b a o e o g si o t lo i m a p e o g si e o ey c nr e t n e tn ,a d d ce i r ・ o o t o oo a s h
to i n.
KEYW ORDS:C n e t n c n r l P c e o s rt s T ru h u o g si o to ; a k tls ae ; h o g p t o
题 , 吐量往往 不能达 到应用 的实际需求 。其 中的 P 吞 C
l 引言
因特 网的迅速发展带 来 了严 重的 网络拥 塞 问题 。其 根 本原因在于用户提供 给网络 的负载大 于网络资 源容 量和处

种改进的 T P拥塞控制算法。算法根据 网络拥塞跟 回路响应时间的大小成正比的关 系, 源端检测 回路 响应 时间值 , C 在 同

tcp使用的阻塞控制机制

tcp使用的阻塞控制机制

tcp使用的阻塞控制机制
TCP使用的阻塞控制机制主要有以下几种:
1.慢启动(Slow Start):这是TCP使用的一种阻塞控制机制,也被称为指数增长期。

在慢启动阶段,TCP每次收到接收窗口的确认时,都会增加已确认段的数目,这种情况一直持续到要么没有新的段收到,要么窗口大小达到预先定义的阈值。

如果发生丢失事件,TCP 就认为这是网络阻塞,就会采取措施减轻网络拥挤。

一旦发生丢失事件或者到达阈值,TCP就会进入线性增长阶段。

2.拥塞控制(Congestion Control):当网络出现拥塞时,TCP 会减少发送的数据量,以避免网络拥塞进一步恶化。

具体来说,当TCP发现网络出现拥塞时,它会将窗口大小减小到1个段,并开始执行“慢启动”算法。

3.快重传(Fast Retransmit):当TCP收到3个以上的相同确认时,就认为数据段丢失了,这时TCP会立即重传丢失的数据段,而不必等待定时器的超时。

4.快恢复(Fast Recovery):在发生数据段丢失后,TCP会立即执行快恢复算法,重新设定拥塞窗口大小,并开始执行“快重传”算法。

这些是TCP主要的阻塞控制机制。

TCPIP详解学习笔记(15)--TCP的流量控制和拥塞控制

TCPIP详解学习笔记(15)--TCP的流量控制和拥塞控制

TCPIP详解学习笔记(15)--TCP的流量控制和拥塞控制TCP的流量控制1.概述所谓的流量控制就是让发送⽅的发送速率不要太快,让接收⽅来得及接受。

利⽤滑动窗⼝机制可以很⽅便的在TCP连接上实现对发送⽅的流量控制。

TCP的窗⼝单位是字节,不是报⽂段,发送⽅的发送窗⼝不能超过接收⽅给出的接收窗⼝的数值。

如图所⽰,说明了利⽤可变窗⼝⼤⼩进⾏流量控制。

设主机A向主机B发送数据。

双⽅确定的窗⼝值是400.再设每⼀个报⽂段为100字节长,序号的初始值为seq=1,图中的箭头上⾯⼤写ACK,表⽰⾸部中的却认为为ACK,⼩写ack表⽰确认字段的值。

接收⽅的主机B进⾏了三次流量控制。

第⼀次把窗⼝设置为rwind=300,第⼆次减⼩到rwind=100最后减到rwind=0,即不允许发送⽅再发送过数据了。

这种使发送⽅暂停发送的状态将持续到主机B重新发出⼀个新的窗⼝值为⽌。

假如,B向A发送了零窗⼝的报⽂段后不久,B的接收缓存⼜有了⼀些存储空间。

于是B向A发送了rwind=400的报⽂段,然⽽这个报⽂段在传送中丢失了。

A⼀直等待收到B发送的⾮零窗⼝的通知,⽽B也⼀直等待A发送的数据。

这样就死锁了。

为了解决这种死锁状态,TCP为每个连接设有⼀个持续计时器。

只要TCP连接的⼀⽅收到对⽅的零窗⼝通知,就启动持续计时器,若持续计时器设置的时间到期,就发送⼀个零窗⼝探测报⽂段(仅携带1字节的数据),⽽对⽅就在确认这个探测报⽂段时给出了现在的窗⼝值。

2.TCP报⽂段发送时机的选择TCP豹纹短短发送时机主要有以下⼏种选择途径。

1)TCP维持⼀个变量,它等于最⼤报⽂段长度MSS,只要缓存中存放的数据达到MSS字节就组装成⼀个TCP报⽂段发送出去。

2)由发送⽅的应⽤程序指明要求发送报⽂段,即TCP⽀持的推送操作3)是发送⽅的⼀个计时器期限到了,这时就把当前已有的缓存数据装⼊报⽂段发送出去。

TCP的拥塞控制1.拥塞控制的原理在某段时间,若对⽹络中的某⼀资源的需求超过了该资源所能提供的可⽤部分,⽹络的性能就要变化,这种情况叫做拥塞。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TCP 拥塞控制分析摘要:随着计算机网络的飞速发展,网络用户数量急剧增加,Internet 在各个领域也发挥越来越重要的作用,但随着其流量的急剧增加,由此引发的网络拥塞已经成为制约网络发展和应用的瓶颈问题。

拥塞容易造成传输延迟和吞吐量等性能指标的下降,严重影响带宽、缓存等网络资源的利用率。

TCP 作为应用最广泛的传输协议,它的拥塞控制已经成为其成功的关键。

本文针对这一现象对TCP 性能及拥塞控制进行研究,我们将简单探讨网络拥塞出现的原因,着重介绍TCP 拥塞控制的原理并分析四个TCP 拥塞控制算法,最后论述TCP 拥塞控制所面临的问题,根据此提出进一步的研究方向。

关键词:TCP 拥塞、拥塞控制、TCP Tahoe 、TCP Reno 、TCP SACK 、TCP Vegas1. 拥塞产生的原因拥塞是一种持续过载的网络状态,此时用户对网络资源(包括链路带宽,存储空间和处理器的处理能力等)的需求超过了其固有的容量。

拥塞导致的直接结果就是分组丢失率增加,端到端延时加大,甚至有可能使整个系统发生崩溃。

网络产生拥塞的根本原因在于用户或端系统提供给网络的负载大于网络资源容量和处理能力,即网络提供的资源不足以满足用户的需求,这些资源包括缓存空间、链路带宽容量和中间结点的处理能力等,使其产生数据包时延增加、丢弃概率增大、上层应用系统性能显著下降等典型现象。

拥塞产生的直接原因有三点:(1)存储空间不足。

缓存的容量不够大,当缓存已经装满,没有空闲的空间时就只能将新到达的分组丢弃。

(2)带宽容量不足,低速链路对高速数据流的输入也会产生拥塞。

任何信道带宽最大值为()N +B =S C 1log 2(N 为信道噪声平均功率,S 为信源平均功率,B 为信道带宽) [1]。

要求所有信源发送的速率R 必须小于等于信道容量C 。

(3)处理器处理能力弱,速度慢。

低速链路对高速CPU 也会产生拥塞。

要避免拥塞的发生,必须对链路带宽、路由器处理速度和存储容量等问题予以考虑,尽可能使系统的各个部分相互匹配。

但由于网络流量分布的不均衡性,随着用户数量和服务类型的增加,从根本上避免拥塞是不可能的。

因此必须采取一定措施来尽可能避免网络拥塞,是网络尽快从拥塞中恢复出来。

2. TCP拥塞控制TCP是建立在Internet体系结构中网络层和应用层之间的传输层协议,端到端的通道为应用层提供了可靠有序的数据传输服务。

TCP的主要目的是为了增强由Internet IP层所提供的尽最大努力服务的性能和控制网络中的数据流量,实现端到端的流量控制,以期能够有效地利用网络资源,消除或减少网络路由器中的拥塞,并使不同的数据流能够合理地共享使用网络资源。

TCP拥塞控制是Internet稳定发展的主要因素,自从1986年Internet发生了首次网络拥塞[2]以来便激发了人们对TCP拥塞控制的广泛研究。

它采用窗口控制机制,发送方维持着一个拥塞窗口变量来控制每次发送出但未被接收方接收的数据包的最大数量。

目的节点在接收到数据包后会向源节点发送确认信息(ACK)。

当窗口变量耗尽时源端就进入等待状态,直到下一个ACK到达才继续发送数据包。

TCP是一种加性增加乘性减少(AIMD)的拥塞控制算法。

当发送方发现窗口内的一个报文发生丢失,就认为这个丢失是由于网络拥塞造成的,于是将窗口减半以减小发送速率,从而避免拥塞的加重;如果窗口的报文没有丢失则表明目前网络状况良好,发送者将窗口加倍从而增大了报文的发送速率。

这种拥塞控制有两个特点:(1)自同步,当拥塞发生和ACK延迟的时候会自动减小源端的发送速率。

(2)窗口控制源端的发送速率。

虽然TCP拥塞控制算法种类繁多,但算法大多有四个部分组成[3]:(1)慢启动阶段:当建立一个新的TCP连接时,拥塞窗口(cwnd)被初始化为一个数据包大小。

源端按cwnd的大小发送数据,没收到一个ACK确认,cwnd就增加一个数据包发送量,继续这样的过程直到拥塞控制窗口增加至慢启动阀值,显然cwnd的增长将随RTT呈指数级增长,发送端向网络中发送的数据量将急剧增加。

慢启动最初阀值被设为最大窗口值的一半,当窗口大小增加至启动阀值时慢启动阶段结束,进入拥塞避免阶段。

(2)拥塞避免阶段:当发现超时或者收到3个相同的ACK时,网络即发生拥塞,此时进入拥塞避免阶段。

慢启动阀值(ssthresh)被设置为当前cwnd的一半;超时时cwnd被置为1.如果cwnd大于慢启动阀值则TCP停止慢启动过程转而执行拥塞避免过程,使发送端的cwnd每经过一个往返时延RTT就增加一个MSS大小。

这样拥塞窗口按线性规律缓慢增长。

(3)快速重传和恢复:当数据包超时时,cwnd被设置为1,重新进入慢启动阶段,这会导致过大地减少发送窗口尺寸,降低TCP吞吐量。

因此快速重传和恢复就是在发送端收到3个或以上重复的ACK时就断定数据包丢失,并重传数据包,同时将慢启动阀值设置为当前cwnd的一半,而不必等到RTO超时。

快速恢复的算法如下:(1)当第三个重复ACK到达时,设置慢启动阀值(ssthresh)为当前cwnd的一半;重传丢失的数据包;设置cwnd=ssthresh+3。

(2)每次有一个更多的重复ACK到达就把cwnd加1并在可能的情况下传输数据包。

(3)当确认数据包的下一个ACK到达时,设置cwnd=ssthresh,进入拥塞避免阶段。

3. TCP拥塞控制算法自1986年互联网出现严重的拥塞崩溃现象后,网络拥塞控制受到了广泛的关注。

Jacobson和Karels最早开发了一种拥塞控制机制:TCP-Tahoe,并于1988年在4.3BSD中实现,此后人们对TCP拥塞控制做了很多的研究。

目前TCP协议版本非常多,本文将主要介绍TCP Tahoe,TCP Reno,TCP SACK,TCP Vegas。

3.1 TCP TahoeTCP Tahoe指的是1988年加入Van Jacobson提出的慢启动、拥塞避免和快速重传算法之后的4.3BSD或类似的TCP版本。

才用了递增式肯定重传策略和“go-back-n”模型(滑动窗口算法)[4]。

在慢启动阶段,拥塞窗口(cwnd)随着确认的到来以指数方式递增(这种以ACK来触发TRANSMIT的机制被称为“ACK clocking”),直到到达阀值;之后TCP 进入拥塞避免阶段,cwnd每隔RTT以线性方式递增一个单位。

如果连续收到3个重复ACK,TCP不等重传定时器溢出就马上重传丢失的数据包,之后TCP返回慢启动状态。

TCP Tahoe是在早期TCP实现中为了减少拥塞现象,加入了许多新的算法得到的,目的在于保持良好的用户通信吞吐量的同时控制网络拥塞。

另外Tahoe算法能对往返时间(RTT)的估量进行修改,并把RTT设置为RTO的基值。

它实现了早期Jacobson的拥塞控制机制。

1990年Van Jacobson对Tahoe算法进行了改进[5],出现了TCP Reno算法。

TCP Reno 在快速重传之后进入快速恢复,而不是TCP Tahoe采用的慢启动。

Reno可以分为四个阶段: 慢启动阶段、拥塞避免阶段、快速重传和快速恢复阶段。

相应地, 在不同阶段调用了不同的算法, 分别为: 慢启动算法、拥塞避免算法、快速重传和快速恢复算法。

当数据包超时,cwnd被重置为1,重新进入慢启动,这将大大减少发送窗口的尺寸,降低TCP 吞吐量。

Reno算法的理想情况是在一个窗口中数据包丢失时,Reno算法中的发送方在每个RTT中最多重传一个包。

和Tahoe算法相比,Reno可用的带宽增加了,重传率也降低了。

相对于其他算法,当一个数据窗丢失多个数据包时,Reno出此案的问题最严重[6]。

Reno的快速恢复算法仅在丢失一个数据包时得到充分利用,表现得比Tahoe好。

虽然TCP Reno是TCP Tahoe的改进版,但TCP Teno算法仍有不足之处:TCP Reno在一个窗口中的多个数据包同时丢失时会出现性能问题,丢失的数据包会使得TCP不断执行快速重传和快速恢复,而cwnd和ssthresh亦会多次被减半,大大降低吞吐量。

另外在大多数TCP实现中,RTO计数器的值被认为是RTT的均值和方差的估计值的函数。

而准确估计TRO和RTT不是一件容易的事。

理论上RTT的测量比较简单,只是数据包从发出到确认ACK返回发送端的时间;但由于TCP使用的是用一个ACK确认所有已收到数据的“累计”确认方式,故实际上RTT的估计往往很复杂。

3.3 TCP SACKSACK(Selective Acknowledge)算法是有效恢复同一窗口中多个分组丢失的另一种技术途径,在Reno算法基础上进行扩展,加上了选择ACK确认帧和选择重传机制。

SACK在接收端发往源端的ACK确认帧中加入了SACK选项,报告一些收到的非连续数据。

选择性的确认可以让接收端另外报告它所收到的非连续数据,对数据包进行有选择的确认和重传,避免不必要的重传,减少时延,提高网络吞吐量。

SACK和Reno,Tahoe的主要区别是当一个窗口丢失多个包时两者的不同表现[6],此时SACK的表现最佳,它能快速从数据的丢失中恢复出来。

SACK能够避免多数的超时和慢启动,其总的性能优于Tahoe和Reno。

由于回路响应时间与网络运行情况密切相关,所以又出现了利用回路响应时间控制拥塞的TCP Vegas算法。

Vegas算法是通过观察以前TCP连接中的RTT值的变化情况来控制拥塞窗口,使拥塞窗口控制在一个合适的值上。

如果RTT变大,Vegas就认为网络拥塞发生,就减少拥塞窗口;反之则增大拥塞窗口。

TCP Vegas相对于TCP Reno在以下三方面做出了改进:第一,TCP Vegas采用一种全新的重传机制,当接受到第一个重复的ACK时就确定该数据包丢失,而不像TCP Reno一样等接收到三个重复的ACK时才确定该数据包丢失,这就使得其对拥塞的反应更加迅速。

第二,TCP Vegas在初次使用慢启动时就以一种更谨慎的方式增加拥塞窗口来减小丢包率。

在慢启动的改进方面,它与拥塞预测的改进机制类似,通过监视吞吐率的变化来决定是否离开慢启动模式。

第三,TCP Vegas采用一种新的拥塞避免机制来矫正TCP Reno的振荡性。

具体的方法是,信源自行估计它发出的被缓存起来的数据包的数量,并尽可能的通过调整拥塞窗口的大小使被缓存起来的数据包的数量介于α和β之间时,下一个回路响应时间(RTT)里拥塞窗口不变,否则拥塞窗口将随着被缓存起来的数据包的数量小于α或者大于β的数量线性的增大或者减小。

TCP Vegas可以提高带宽的利用率,减少重传次数,减少超时次数。

它最大不同于TCP Tahoe,Reno,Sack的就是它以队列延时作为拥塞的标志。

相关文档
最新文档