TCP拥塞控制算法比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCP拥塞控制算法比较
TCP发展到现在已经形成了TCP Tahoe、TCP Reno、TCP NewReno、SACK、Vegas等不同版本,这些算法各有利弊。
Tahoe算法是TCP的早期版本。
它的核心思想是:让cwnd以指数增长方式迅速逼近可
用信道容量,然后慢慢接近均衡。
它包括了3个基本的拥塞控制算法:慢启动、拥塞避免、快速重传。
Tahoe的缺点体现在快速重传后转向慢启动算法,这样不能有效的利用网络带宽并且还引入较大的延时。
Reno算法是针对Tahoe算法的不足而做的改进。
改进主要有两方面:一是对于收到连
续3个重复的ACK确认,算法不经过慢启动,而直接进入拥塞避免阶段;二是增加了快速重传和快速恢复机制。
Reno算法以其简单、有效和鲁棒性成为TCP源算法的主流,被广泛的
采用。
但它不能有效的处理多个报文分组从同一发送窗口中丢失的情况。
NewReno对Reno中快速恢复算法进行了补充,它考虑了一个发送窗口内多个报文分组
同时丢失的情况。
Reno算法中,发送方收到一个不重复的应答后就退出快速恢复,而NewReno 中,只有当所有的报文分组都被应答后才退出快速恢复状态。
NewReno的实现只要修改TCP 发送端的实现代码,实现简单。
SACK算法也针对一个窗口内多个报文分组丢失的情况而对Reno算法进行改进:SACK
定义了一个变量pipe来表示出现在路由器上报文分组的估计数量,接收方TCP发送SACK
分组来通知发送方的接收状况,这样源端就能准确的知道哪些报文分组被正确的传到接收端,从而避免不必要的重传,提高网络吞吐量。
但SACK算法的实现需要修改TCP发送端和接收端的实现代码,增加了TCP的复杂性,因此不易大规模的应用。
Vegas与上述的算法不同,它是以RTT的变化作为拥塞信号,调节源端的发送速率。
通过监测RTT的变化来改变cwnd的大小。
由于Vegas采用RTT的改变来判断网络的可用带宽,能较好的预测网络带宽的使用情况,其公平性、效率都较好。
但是,由于Vegas与其它算法在竞争带宽方面存在不公平现象,因此未能在因特网中普遍采用,还需要继续改进。