- 浏览: 316035 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
JQ_AK47:
...
Linux下直接发送以太包 -
winsen2009:
谢谢分享,如果能再来一个列子就更好了,刚接触看完还是不懂的用
UNPv1_r3读书笔记: SCTP编程
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn
参考文献: RFC3782,2582
1. 前言 在RFC2581中已经定义了TCP的快速重传(fast retransmit)和快速恢复(fast recovery)算法,也称基本Reno算法,但是该算法的启用仅仅导致一个数据包的重传。因此,当多个数据包从一个数据窗口中丢失并且触发快速重传和快速恢复算法时,问题就会产生。在这种情况下,如果SACK选项可用,TCP发送端在快速恢复期间就有足够的信息来决定重传哪个数据包,不重传哪个数据包。而本文的算法是对不支持使用TCP选择确认(SACK)选项的TCP连接适用。 该算法先在RFC2582中定义,后来在RFC3782中重新定义。 2. 算法描述 在一个窗口内的多个包丢失的情况下,发送方会收到接收方对重传的数据确认(此时已经进入快速重传算法),如果是一个包丢失,接收方确认的是重传算法启动前的所有包,而如果是多个包丢失,则不会确认重传前的所有包,此情况称为部分确认。 NewReno算法和RFC2581中的算法的差异在于在步骤1中引入“恢复(recover)”变量;步骤5中对于部分确认或新的确认;以及在步骤1和步骤6的附加部分中避免多次快速重传处理。 recover变量的初始化值为初始的发送序列号。 NewReno算法处理步骤: 1) 三个重复的ACK确认 第3个重复的ACK确认到达而且发送方未进入快速恢复处理时,检查累计的确认值是否大于 recover变量, 是则转步骤1A,否则转1B: 1A) 调用快速重传: 设置慢启动阈值(slow start threshold, ssthresh)为: ssthresh = max (FlightSize / 2, 2*SMSS) 其中FlightSize表示已经发送但还没有被确认的数据量 然后将发送在最大序列号值保存在recover变量中,转步骤2; 1B) 不调用快速重传: 不进入快速重传和快速恢复处理,不改变ssthresh,不用执行步骤2,3 2) 进入快速重传 重传丢失的包然后设置拥塞窗口cwnd=ssthresh + 3*SMSS,扩大拥塞窗口; 3) 快速恢复 在快速恢复阶段,对于所接收到的每个重复的ACK包,拥塞窗口递增SMSS,扩大拥塞窗口; 4) 快速恢复继续 发送一个数据段,如果新的cwnd和接收端的通知窗口的值允许的话 5) 当一个确认新数据的ACK到达时,此ACK可能是由步骤2中的重传引发的确认,或者是由稍后 的一次重传引起的,分完整确认和部分确认两种情况: 完整确认: 此ACK确认了所有数据的序列号括了recover记录的序列号,则此ACK确认了所有中间丢失的数据 包,此时调整cwnd或者为(1) min(ssthresh, FlightSize + SMSS);或者(2) ssthresh 来缩小 cwnd,结束快速恢复。 部分确认: 如果这个ACK不确认所有并包含到“recover”的数据的话,就产生一个部分ACK。在此种情况 下,重传第一个没有确认的数据段。按确认的新数据量来减小拥塞窗口,如果这个部分确认确认 了至少一个MSS的新数据,则加回一个MSS。如果cwnd的新值允许的话,发送一个新数据段。这个 “部分窗口缩减”试图确定当快速恢复最终结束时,大约ssthresh数量的数据还在向网络中传 送。此情况下不退出快速恢复过程。 对在快速恢复期间第一个到达的部分ACK,也要重设重传定时器。 6) 重传超时 重传超时后,将发送的最大序列号保存在recover变量中,结束快速恢复过程。 3. 结论 NewReno算法的前提是用于不支持SACK的TCP实现,效果比基本Reno算法会好一些,但现在不支持SACK的TCP实现已经很少了,因此显得意义也不是很大了。
发表评论
-
Linux内核中流量控制(24)
2011-01-10 16:33 2213本文档的Copyleft归yfydz所 ... -
Linux内核中流量控制(23)
2011-01-10 16:30 1497本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(22)
2011-01-10 16:29 1947本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(21)
2011-01-10 16:28 1362本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(20)
2011-01-10 16:27 1528本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(19)
2011-01-10 16:27 1986本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(18)
2011-01-10 16:26 1576Linux内核中流量控制(18) ... -
Linux内核中流量控制(17)
2011-01-10 16:25 1955本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(16)
2011-01-10 16:25 1813本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(15)
2011-01-10 16:24 1898本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(14)
2011-01-10 16:23 1965本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(13)
2011-01-10 16:22 2646本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(12)
2011-01-10 16:21 2115本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(11)
2011-01-10 16:21 3244本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(10)
2011-01-10 16:20 2012本文档的Copyleft归yfydz所 ... -
Linux内核中流量控制(9)
2011-01-10 16:19 1838本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(8)
2011-01-10 16:18 1504本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(7)
2011-01-10 16:18 2931本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(6)
2011-01-10 16:17 1500本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(5)
2011-01-10 16:16 1735本文档的Copyleft归yfydz所有,使用GPL发布,可以 ...
相关推荐
详细讲述了TCP NewReno对快速恢复算法的改进。如何解决多包丢失的问题。
在ns2中仿真网络结构,在OTCL编码中,代理节点的协议代理分别设置为TCP/Reno、TCP/Newreno、TCP/Sack1和tcp/Vegas,来模拟这四种算法。附有仿真结果和实验报告。
在ns2中仿真网络结构,在OTCL编码中,代理节点的协议代理分别设置为tcp/Reno、TCP/Newreno、TCP/Sack1和tcp/Vegas,来模拟这四种算法。附有仿真结果和实验报告。
自己总结整理的关于TCP拥塞控制的PPT,主要介绍并比较了Tahoe、Reno、NewReno与SACK四种算法,并对拥塞的产生进行了深入剖析
Reno TCP协议的拥塞控制机制可以分为三个阶段:缓慢启动阶段、拥塞避免阶段和快速恢复阶段。在缓慢启动阶段,对于每个确认的数据包,拥塞窗口按照指数规律增加,直到拥塞窗口增加到缓慢启动的阈值时,进入拥塞避免...
在ad_hoc网络的基础上,运用ns2仿真软件对tcp算法的拥塞控制进行了研究。
TCP Tahoe算法、TCP Reno算法、TCP New Reno算法、TCP SACK算法、TCP FACK算法和TCP Vegas算法 性能对比 拥塞窗口、阈值变化、吞吐量、网络效率、带宽利用率 拥塞控制能力对比 第三项实验——仿真与...
在TCP拥塞控制中主要采用TCP Tahoe,TCP Reno,TCP New Reno以及TCP Sack四种方法,其中TCP New Reno对快速恢复算法进行了改进,通过对TCP协议中的Reno进行可视化处理,实行对网络拥塞的有效管理。而IP拥塞控制方法...
利用数据挖掘技术改进TCP CUBIC拥塞控制算法.pdf
在 NS2 中使用 12 个移动节点的 Ad-hoc 模拟。 这是为了比较不同路由协议(AODV、DSDV、DSR)和拥塞控制算法(TCP Reno、New Reno、Vegas)组合下的性能。
引入NewReno算法改进LwIP中TCP数据包的拥塞控制机制,克服了一个发送窗口多个数据包丢失引起多次快速恢复或慢启动对发送效率的影响;引入归一化最小均方误差算法改善在RTT变化较大时RTO估值不精确的情况,减少TCP...
针对以上问题,在TCP-Newreno协议上提出了一种cwnd自适应动态变化算法RFTCP,并结合网络吞吐量跨层调整竞争窗口(CW)因子,以解决现有协议在动态Ad Hoc网络中出现的吞吐量小、传播延迟大、资源分配不公等问题。...
基于窗口的拥塞控制算法包括Cubic、Htcp、Hybla、Westwood和Veno等,而基于速率的拥塞控制算法包括TCP Vegas、TCP Reno和TCP Tahoe等。 比较分析 --------- 本文对Linux内核中的五种拥塞控制算法(Cubic、Htcp、...
研究了类Iridium系统的LEO卫星网络环境下各种TCP(Transmission Control Proticol)拥塞控制算法的性能表现,包括Reno,Newreno,SACK,Vegas四个算法,侧重点是各种性能参数在整个网络上总的平均结果,关心网络的...
RFC2582 TCP的快速恢复算法NewReno修正 RFC2585 Internet X.509 公共键底部结构操作协议: FTP和HTTP RFC2597 确定的面向PHB组 RFC2598 面向加速PHB RFC2618 RADIUS 身份验证客户端管理系统库(MIB) RFC2629 用XML 写I...
RFC2582 TCP的快速恢复算法NewReno修正 RFC2585 Internet X.509 公共键底部结构操作协议: FTP和HTTP RFC2597 确定的面向PHB组 RFC2598 面向加速PHB RFC2618 RADIUS 身份验证客户端管理系统库(MIB) RFC2629 用XML 写I...
RFC2147 TCP和UDP通过IPv6 Jumbograms RFC2198 多余音频数据的RTP有效载荷 RFC2208 资源预留协议(RSVP)——版本1 适用性声明 关于配置的一些指导 RFC2212 有保证的质量服务说明书 RFC2213 综合服务管理信息基础...