TCP拥塞窗口论文(共7篇)
TCP拥塞窗口论文 篇1
TCP主要用于有线网络, 在Ad Hoc网络中用传统的TCP会造成丢包和重传, 主要因为窗口快速增加机制, 使得TCP的平均窗口大于最优窗口, 导致网络中的数据急剧增加;Ad Hoc网络可利用的带宽很低, 链路状况变化频繁, 使得TCP的窗口更新机制不适合Ad Hoc网络[1,2]。因此, 在资源受限的Ad Hoc网络中, 寻找合适的拥塞窗口调整机制来提高吞吐量成为当前研究的热点。
在Ad Hoc网络中, 目前针对可靠的网络传输协议已有相关的研究。可分为依赖和不依赖于网络环境:West Wood通过ACK时间间隔预估网络带宽, 根据网络带宽采取增加和减少窗口, 由于采用单一的应答时间差, 导致预算出来的带宽偏差较大[3]。Fixed-RTO目标是在链路中断后, 能够快速恢复丢失的包, 由于冗余的重传会加重网络拥塞[4]。TCP-AP提供基于RTTs和TCP对Hop长度的预估计, 但它的模型需要建立在相同带宽的所有结点间[5]。文献[6-7]分别提出了一种基于RTT往返时延和平等性带宽的加性增和乘性减的拥塞窗口控制策略, 该方法导致TCP吞吐量随着时间波动较大。
针对上述问题, 本文提出了基于机器学习的TCP拥塞窗口的在线学习算法:该方法借鉴了West Wood的部分思想, 通过获取确认帧的时间间隔, 较为精确地估计环境状态变化趋势, 通过连续动作集 (CALA) 算法适时地更新拥塞窗口以提高系统吞吐量。
1 TCP拥塞窗口的学习机制
如图1所示, 学习型TCP由TCP和连续的动作学习机制 (CALA) 组成, 与传统的TCP兼容, 但学习型TCP不区分确认帧和重传确认帧, 仅仅通过对网络的状态来增加或减小拥塞窗口的大小[8,9]。
学习型TCP的工作机制如下:
首先, 捕获网络状态并转换成参数γ。由于不需要寻找来自网络的拥塞和竞争的精确反馈, 仅通过TCP确认帧的内部到达时间来估计当前的网络状况。当接收到一个确认帧时, 学习机制就能通过最近的几个确认帧和当前确认帧的内部到达时间得到该路径的拥塞情况, 进而得出参数γ。
其次, 将γ映射为参数β。γ表示网络状况, 该网络状况被过去的动作影响, 这些动作是作为CALA算法的输入。β (n) =1表示获得最高回报, β (n) =0表示最低的回报值, 也就是惩罚值。
然后, 更新动作的概率分布μ和δ。学习型TCP通过使用β (n) 来更新均值μ和标准差δ。
最后, 动作选择。通过更新动作的概率分布, 学习型TCP能够选择合适的动作即增加或减小拥塞窗口的大小。
2 基于CALA的TCP窗口学习策略
由于不需要寻找来自网络的拥塞和竞争的精确反馈, 仅通过TCP确认帧的内部到达时间来估计当前的网络状况。因此, 需要计算最近k个和n个确认帧的内部到达时间 (iat) 的均值meank、meann和标准差sdevk、sdevn, 其中k
如果meann急剧上升到某一较高的值并且持续保持, 则网络处于拥塞状态。为了更好地学习网络状态, 设置参数safemean作为参考点。当iat低于safemean时增加窗口, 否则减小窗口。网络环境突然拥塞时meank升高, 否则下降。因此使用meank/meann的比值来更新safemean参数。当meank/meann大于1时, 当前网络拥塞程度上升, 反之无拥塞。
学习型TCP捕获网络状态通过参数timeRatio, 如式 (1) 所示, 当iat远小于safe Mean时, timeRatio接近于它的最大值1;当iat大于3×safe Mean时, timeRatio接近于-2。如式 (2) 所示, timeRatio被归一化到0到1之间, 并且存储在参数γ中, 当iat>>safe Mean时, γ接近于1, 当iat<
CALA用来更新动作概率分布中的均值μ和标准差δ, 如式 (3) 所示, x (n) 表示任意时刻n采取的动作, λ表示学习参数且满足0<λ<1, K表示正常量, σL表示δ的下限。
3 学习型TCP性能分析
本文的仿真环境采用ns-2和fedora 8 (Linux 2.6内核) 。
3.1 学习型TCP的算法描述
学习型TCP需要一个较大的动作集, 故设置μ和δ分别为1MSS和0.00068MSS (1 byte) , 该算法会一直迭代直到TCP连接中断或者连续重传达到某个临界值。算法步骤如下:
步骤1, 初始化μ=1和δ=0.000 68;
步骤2, 当前确认帧到达时间减去上次确认帧的到达时间, 并赋值给iat, 从而获得网络状况值timeRatio, 归一化处理得到γ;
步骤3, 更新μ (n) 和δ的概率分布值;从这个概率分布中产生一个动作值x (n) , 更新窗口值cwnd=cwnd+x (n) ;基于cwnd值, 传输一个或者多个TCP段;
步骤4, 当sdev>mean/2并且iat不属于[mean+sdev, mean-sdev]时, 复位iat到一个初始值。重新计算mean, meank和meanRadio, 如果meanRatio
步骤5, 如果网络没有结束或者重传ack达到12次, 跳转到步骤2, 否则结束。
如图2所示为学习型TCP与UDP共享5 Mbit/s的瓶颈链路, 该链路延迟为35 ms, 30个数据包的缓存队列, 先到先服务模式。参数设置如表1所示。
仿真结果如图3和图4所示, 链路错误率达到20%的情况下, 单一的确认帧的抖动性较大, 不能很好地预测网络的拥塞状况。本文提出的学习型TCP利用确认帧内部到达时间得到均值safemean, 该值能够较好地预测网络的拥塞情况。
3.2 学习型TCP-性能测试
本文通过比较学习型TCP与TCP-Few、TCP-Reno在不同的链路错误率做了对比测试。拓扑结构如图5所示。
1) Ad Hoc网络环境较好的情况
参数设置:瓶颈链路的最小带宽为10 Mbit/s, 最小延迟为40 ms, 缓冲队列为20, TCP包大小为1 500 byte, 仿真结果如图6、图7所示。当Ad Hoc网络环境较好时, 学习型TCP的拥塞窗口的变化类似于TCP Few和TC-PReno, 且吞吐量略优于另外两种协议。
2) Ad Hoc网络环境较差的情况, 错误率达到30%
仿真结果如图8、图9所示。当Ad Hoc网络环境较差时, 学习型TCP的拥塞窗口的变化明显大于TCP Few和TCPReno, 且吞吐量远高于另外两种协议。
4 结论
在Ad Hoc网络环境较好或较差的情况下, 学习型TCP能有效地利用确认帧的内部到达时间均值获得网络状况。在网络环境较好的情况下, TCP-Few窗口改变量相对平稳, 而学习型TCP和TCP-Reno变化较为抖动, 且学习型TCP的吞吐量略高于其他。在网络环境较差的情况下, 学习型TCP的吞吐量就远高于其他, 证明了学习型TCP能适应较差的网络环境。
参考文献
[1]姜誉, 任健, 周黎明.NS2中TCP连接建立模拟的改进[J].通信学报, 2012 (Z2) :15-19.
[2]TEKIN C, LIU M.Approximately optimal adaptive learning in opportunistic spectrum access[C]//Proc.INFOCOM2012.[S.l.]:IEEE Press, 2012:1548-1556.
[3]康巧燕, 王建峰, 王蓉, 等.基于QPID-AVQ的组播拥塞控制机制[J].计算机工程, 2012, 38 (22) :67-70.
[4]张清华, 吴永明.一种改进的TCP拥塞控制算法[J].科学技术与工程, 2010, 10 (35) :8870-8872.
[5]胡敏, 刘鹏, 邹然.MPTCP中一种减缓缓存阻塞的重传策略[J].电视技术, 2013, 37 (17) :98-101.
[6]江虹, 刘从彬, 伍春.认知无线电网络中提高传输层端到端吞吐率的跨层参数配置[J].物理学报, 2013, 62 (3) :494-501.
[7]赵川, 伍瑞卿, 樊丰.一种精简TCP/IP协议栈的设计与实现[J].电视技术, 2010, 34 (S1) :104-107.
[8]杨双懋, 郭伟, 唐伟.一种最大化网络吞吐量的认知无线Ad Hoc网络跨层优化算法[J].计算机学报, 2012, 35 (3) :491-503.
[9]HE Z Q, NIU K, QIU T, et al.A bio-inspired approach for cognitive radio networks[J].Chin.Sci.Bull, 2012, 57 (28) :3723-3730.
[10]蒋和松, 张娟.一种认知无线网络中TCP拥塞窗口的在线学习方法[J].科学技术与工程, 2014, 14 (8) :228-232.
[11]王路, 胡月梅, 刘立祥, 等.基于跳到跳信息的卫星网络传输控制协议研究[J].通信学报, 2012, 33 (6) :91-102.
TCP拥塞控制研究 篇2
网络中的拥塞来源于网络资源和流量分布的不均衡性。一旦网络中存在过多的数据包, 就会导致网络性能的下降, 这种现象称为拥塞。拥塞会导致分组丢失率增加, 从而增大端到端的延迟, 累积到一定程度就是整个系统的崩溃。这样的例子在互联网发展史上曾经不止一次的出现过, 当网络处于拥塞崩溃状态时, 微小的负载增量都将使网络的有效吞吐量急剧下降。
网络拥塞发生的原因说起来也很简单, 就是“需求”大于“供给”。网络本身无法根据现有资源的情况限制用户的数量;互联网络又是一个分散控制系统, 无法控制用户使用资源的数量, 不断增长的用户和应用的数量必然会导致网络发生拥塞。
2 TCP拥塞控制
研究拥塞控制的目的不是要完全避免拥塞, 而是研究怎样的拥塞程度是合适的。TCP网络是可靠数据传输, 采用分组交换技术来提高网络链路的利用率, 也就是说, 路由器队列缓存如果是满的, 则网络利用率最高, 但传输延迟大;队列始终是空的或不满, 则网络利用率低, 传输延迟小。所以拥塞控制的目标就是实现网络利用率和传输延迟等综合性能指标达到最优化, 提高网络的总体性能, 保证网络系统长期的稳定性和鲁棒性。
TCP的实现包含四个连续的基本过程, 其实是四个不同的阶段, 分别是:慢启动、拥塞避免、快速重传和快速恢复。
慢启动:当一个新的TCP连接建立时, 发送方发送一个缺省大小为512字节的TCP报文段 (segment) , 称为拥塞窗口 (cwnd) , 该cwnd的值被初始化为一个数据包, 因此每经过一个RTT, cwnd将指数增加。该算法的原理就是将能发送到网络的新数据包的发送速率对应从接受端返回的确认消息的速率。
拥塞避免:拥塞避免的触发条件是当发现接收方的ACK确认包超时到达或者收到了三个相同的ACK确认包时, TCP就认为网络中出现了拥塞, 开始执行拥塞避免算法, 这里的触发条件是有前提条件的, 那就是TCP假设由于线路传输引起的数据包损坏和丢失的概率非常小, Jacobson V在1988年提出的值为小于1%时条件就成立。在这一阶段, 慢启动阈值 (ssthresh) 设置为cwnd的一半, 如果是超时, cwnd则被置1。如果此时cwnd<=ssthresh。TCP就重新进入慢启动, 如果cwnd>ssthresh, TCP进入拥塞避免, 发送方每收到一个ACK, 则cwnd=cwnd+1/cwnd。可见慢启动阶段cwnd的增加是指数的, 而拥塞避免阶段则是线性的。
快速重传和快速恢复:发送方不等到数据包超时, 在收到三个或三个以上的重复ACK时就判断数据包已经丢失, 这样不用等定时器超时后cwnd置1, 就马上重传该数据包, 同时将ssthresh的值置为当前cwnd的一半, 这种算法来保证TCP保持足够的吞吐量。快速恢复的算法是: (1) 当第三个重复的ACK到达, 设置ssthresh=cwnd/2;重传丢失的报文;设置cwnd=ssthresh+3。加3是因为三个重复的ACK表示有三个数据包已经被接受方缓存了。 (2) 每次有一个更多的重复ACK到达, 把cwnd加1并在可能的情况下传输一个报文段。 (3) 当确认新数据的下一个ACK到达时, 设置cwnd=ssthresh, 进入拥塞避免。
3 TCP拥塞控制算法的改进
3.1慢启动的改进
随着Internet应用在互联网络中的占的比例逐步增大, Web数据流占了网络流量的相当部分, 这些TCP连接的数据量一般都很短小, 通过了解TCP拥塞控制原理, 我们知道短TCP流主要工作的阶段是慢启动阶段, 它不具备长TCP流的传输时间, 无法达到拥塞避免阶段, 所以短TCP流的问题是, 如果一个分组丢失, 按照拥塞控制算法, 需要等待定时器超时重传, 这在带宽竞争上就无法和长TCP流竞争, 从而造成网络的拥塞节点处, 长TCP流会挤掉短TCP流, 使贷款分配不均。针对这些问题, 研究者们提出了传统的慢启动存在的两个问题: (1) 数据发送从一个数据包开始, 要经过多个RTT才能达到较大吞吐量, 这不利于流量小但是链路延迟又比较大的TCP流的传输; (2) 采用指数增长的方式发送数据造成了数据突发, 易引起瓶颈链路的拥塞。
针对第一个问题, 大家提出了很多解决方法, 比如采用大的初始窗口, 将初始窗口从1MSS增加到4MSS, (Allman M.et al, 1998) , 这种方法虽然可以改善慢启动的性能, 但是不能适应多变的网络带宽。还有就是将各个TCP连接的信息共享 (Padmanabhan V.et al, 1998;Touch J, 1997;Savage S.et al, 1999) , 后面的连接可以使用具有相同目的地址的连接信息, 从而可以减少慢启动的时延, 但是这样会使连接很快造成网络拥塞, 而短TCP的长度只需要几个RTT就可以传输完毕, 网络拥塞会造成额外的时延。再后来提出了将初始窗口设定为4个分组, 而从以快速重传来减少重传超时造成的传输时延 (Mellia M.et al, 2001) 。
解决第二个问题可以通过使用带宽时延的估计来设定初始慢启动阈值ssthresh (Hoe J, 1996) 。Smoot-start方法 (Marchese M, 2001) 使发送方从慢启动阶段较为平滑的过渡到拥塞避免阶段, 减少了数据包丢失和突发流, 当拥塞窗口到达Smsthresh后, 采用比较平缓的指数方式增长拥塞窗口, 逐渐达到默认值或估算的ssthresh值。
3.2快速重传和快速恢复的改进
有时发送端减少拥塞窗口值并不是因为分组丢失, 而是分组数据传输中顺序错误引起的重复ACK。有限传输机制 (Allman M, Balakrishman H.and Floyd S.2001) 是一种改进方法, 当发送端收到一个或两个重复的ACK后, 如果被允许, 发送端就发送一个新的分组。这种方式对错序的状况有较好的调节作用。还有D-SACK方式, 是一种基于SACK的方式, 通过给TCP发送端一个附加信息, 来判断是否发生了不必要的重传, D-SACK通过接收端受用SACK选项来报告收到了重复的分组序列, D-SACK在容易引起错序的环境下提供更高的效率。
快速恢复的改进机制有SACK (Selective Acknowledgement) , FACK (Forward Acknowledgement) , TCP New-Reno等。SACK方式的接收端通过ACK向发送端通过所有正确的分组, 发送端只需重传真正丢失的分组。FACK是基于SACK的改进, 它们的问题都是增加了TCP的复杂性, 对TCP版本的兼容性较差。TCP New-Reno不需要接收端的特殊支持, 相对实现起来简单, 但是数据传输效率相对不高。RateHalving (Allman M, Dawkins S, Glover D, et al, 2000) 是FACK的一个比较新的版本。在快速恢复阶段, 每收到2个ACK发送一个新的分组, 从而在一个RTT里将拥塞窗口减小到网络能处理的分组数的一半大小, 并保持了TCP的自计时特性。
目前, TCP基于窗口的拥塞控制策略被广泛的应用。各种改进的TCP控制策略在不同侧面解决了一定的问题, 但是也有着局限性, 有的实现起来过于复杂, 有的解决了多个分组丢失的恢复问题, 但对恢复过程中出现的分组丢失却无法得到解决。
4结束语
在实际的应用中, 针对不同特点的TCP网络, 有着适合的改进策略, 这些策略不用做到面面俱到, 只要具有一定的针对性就可以。网络拥塞的改进是十分灵活的, 方法也很非常多, 其原因正式因为不同网络中传输的数据特点不同, 从而选择合适的改进策略是关键。
(上接第153页) [1]Allman M, Hayes C, Ostermann S.An Evaluation of TCP with Larger Initial Windows[J].ACM Computer Communication Review, 1998, 28 (5) 41-52.
[2]邓亚平, 叶凌伟, 陈雁.TCP/IP拥塞控制算法的改进[J].计算机科学, 2001 (4)
110-113.
[3]王彬.TCP/IP网络拥塞控制策略研究[D].浙江大学, 2004
参考文献
[1]Allman M, Hayes C, Ostermann S.An Evaluation of TCP with Larger Initial Windows[J].ACM Computer Communication Review, 1998, 28 (5) :41-52.
[2]邓亚平, 叶凌伟, 陈雁.TCP/IP拥塞控制算法的改进[J].计算机科学, 2001 (4) :110-113.
TCP拥塞窗口论文 篇3
传输控制协议TCP (Transport Control Protocol) 是目前Internet中广泛采用的传输控制协议, TCP的拥塞控制机制能较好的对网络拥塞做出响应, 并能避免网络崩溃[1]。TCP的拥塞控制算法包括Tahoe, Reno, New Reno, SACK, Vegas等, 最常见就是TCP Reno算法。
在TCP Reno拥塞控制算法中, 如果发送方收到3个重复的ACK, 则发送方立即判断有1个数据包已经丢失, 接着发送方开始将拥塞窗口减半, 降低数据传输速率, 同时重发丢失的数据包[2]。TCP Reno拥塞控制算法认为, 数据包丢失就意味着在发送方与接收方之间的某处产生了拥塞, 这种假设在局域网或者广域网基本成立, 但是无线网中, 这种假设是不成立的[3]。在无线网中容易出现传输信道特性不理想的情况, 误码率较高, 如果不对当前链路的拥塞状态做进一步判断, 就做出降低速率的响应, 就会导致网络吞吐量的下降。因此, 正确的区分数据包丢失原因对于提高网络系统性能很重要。
关于网络拥塞控制许多学者做了大量工作[4,5,6], 但是他们的拥塞控制算法往往都需要网络中各个路由节点的配合, 如果在小规模的网络环境下这种做法有着较好的表现, 但是当今的网络是一个极其庞大而又复杂的网络, 网络的各个节点协同工作太困难。然而TCP连接的RTT可以较好的反应当前网络的拥塞状况, 本文根据当前TCP连接的RTT对丢包原因进一步分析, 如果是由于拥塞而导致的丢包, 则重发丢失的数据包并降低速率, 如果当前连接并没有处于拥塞状态, 则只需重发丢失的数据包, 而无需降低速率, 从而提高网络吞吐量。
2 TCP Reno拥塞控制
2.1 拥塞控制概述
TCP Reno拥塞控制采用基于窗口的闭环控制方式, 它保持两个重要参数:cwnd和ssthresh, 即拥塞窗口与慢启动门限。TCP Reno拥塞控制算法主要包括慢启动、拥塞避免、快速重传与快速恢复三个部分[7,8]。
若发送端收到3个重复的ACK, TCP进入快速重传与快速恢复阶段, 具体执行过程如下:
1) 将ssthresh值设置为当前cwnd值的一半, 重传该丢失的数据包, 并设置cwnd值为ssthresh值加上3个报文段大小, 如公式 (1) ;
2) 然后每次收到另一个重复的ACK时, cwnd值增加一个数据包大小并发送一个数据包;
3) 当下一个确认新数据的ACK到达时, 将设置cwnd为ssthresh。
2.2 拥塞控制算法仿真
为了更加清楚的了解TCP Reno的拥塞控制过程, 使用图1所示的拓扑图, 仿真软件为OPNET, 其中A为客户端, B为FTP服务器, B向A提供FTP下载服务。在仿真过程中人为地在第110秒将B发送给A的数据包丢掉一个, 结果如图2所示。由于在第110秒数据包丢失一个, 于是B很快收到3个重复的ACK, 并误认为当前网络出现拥塞, 于是设置cwnd值为ssthresh值加上3个报文段大小并且重传丢失的数据包;由于接下来还在收到重复的ACK, 于是每次收到另一个重复的ACK时cwnd值增加一个数据包大小;大概0.3秒以后确认新数据的ACK到达, 将设置cwnd为ssthresh开始执行快速恢复, 这就是TCP Reno的拥塞控制过程。
TCP Reno的拥塞控制不能区分数据包丢失是由于网络拥塞, 还是误码等其他原因而导致的。一旦发现数据包丢失, TCP Reno就会减小窗口, 速率也会随着拥塞窗口的减小而降低, 因此误码也会导致吞吐量的下降, 而当前网络状态可能并没有处于拥塞状态, 显然这是不恰当的, 尤其是在无线网络中。
3 TCP连接中的RTT
为了深入了解RTT在不同网络状态下的变化规律, 使用网络仿真软件模拟, 网络拓扑结构如图3所示。其中A、B、C、D为四个工作站, R1、R2为路由器, 并且两个路由器之间是一条最高速率为2.048Mbps的E1线路, 其余的四条与工作站相连的是最高速率为10Mbps的10Base T线路, 所以拥塞只可能产生在R1与R2两路由器之间的线路上。
3.1 单个TCP连接
在该场景中只有一个TCP连接, 即A向C发送TCP数据, B和D不产生任何数据。并且, 由于本文的改进算法基于较精确的RTT, 所以在仿真过程中每个TCP端点都使用了时间戳选项, 它可以提供更加准确的RTT值。仿真结果如图4所示, 图4由两部分构成, 即上半部分为该TCP连接的RTT变化曲线, 下半部分为该TCP连接的数据传输速率。从图中可以看出, RTT从数据传输开始时的0.8s很快下降到0.55s附近, 并随着数据传输速率维持在2.048Mbps而保持不变。
3.2 TCP和UDP的混合情况
A向C发送TCP数据流, 此次不同的是B向D发送UDP数据流, 通过多次仿真实验发现, 只要UDP数据速率不接近两路由器之间E1线路的容量2.048Mbps, 并且随着UDP速率的稳定, TCP连接的RTT刚开始小幅上升, 而很快稳定不变。如果UDP的速率一旦接近甚至超过该条链路容量的时候, RTT会有比较明显的上升。
下面进一步仿真, A向C发送TCP数据流, 这次B向D发送的UDP数据流速率为2.1Mbps, 刚刚超过该瓶颈链路的容量2.048Mbps, 并且发送时间推迟1分钟, 仿真时间3分钟。仿真结果如图5所示, 图5的上半部分是TCP连接的RTT, 下半部分是TCP连接的速率, 可以看出TCP连接的RTT刚开始出现小幅下降, 并随着TCP速率的稳定而保持在0.6s左右不变, 一直持续到第60s, 由于较高的UDP速率迅速将该条链路带宽资源占据, 出现网络拥塞, RTT开始迅速的增加, 同时TCP速率也下降到基本为零。
4 拥塞控制的改进
4.1 算法描述
从以上仿真结果可以发现, 只有处于拥塞状态时RTT才会出现增长, 根据这个特点对TCP Reno的拥塞控制算法进行改进。由于该算法较依赖于RTT的精确性, 所以该算法使用时间戳选项。从当前TCP连接的一开始, 发送端每次把当前刚刚获取的RTT减去上一个RTT (RTT_last) , 得到RTT差值D_value, 如公式 (2) ;并且把每次得到这个差值一直累加下去, 得到SUM, 如公式 (3) 。
通过仿真发现, 如果网络状态较好时, 此差值总和SUM总是小于0的, 此时可以判断出数据包的丢失并不是由于拥塞造成的, 发送端TCP的拥塞窗口CWND不必做出降低的响应, 所以速率也不会降低, 只需重传丢失的数据包;如果该值大于0, 说明网络已经产生拥塞, 则不仅重传丢失数据包, 同时也要减小CWND以降低速率来响应拥塞。
算法描述如下:
4.2 仿真结果
为了验证算法在拥塞状态和非拥塞状态下的表现, 将仿真分成两种情况, 即拥塞状态和非拥塞状态两种情况。
4.2.1 拥塞状态
A向C发送TCP数据流, 同时而B向D发送UDP数据流, 其速率为2.1Mbps, 超过该条E1链路的容量, 很快就会产生拥塞, 仿真结果如图6所示。此图包含拥塞控制窗口CWND以及TCP的传输速率。由于当前处于拥塞状态, RTT迅速增加;此次仿真共有7个数据包丢失;并且图的第三部分可以看到第一个数据包丢失的时候拥塞窗口急剧下降到接近为0, 随后由于严重的拥塞CWND一直保持较低水平;同时图的第四部分TCP速率也很低。根据算法, 此时明显SUM>0, 也即是拥塞状态, 所以仍然执行原TCP Reno算法, 即减小拥塞窗口CWND降低发送速率。
4.2.2 非拥塞状态
A向C发送TCP数据流, 同时B也向D发送TCP数据流, 此时由于在两路由器之间的链路上是两个TCP数据流的混合, 显然不会出现拥塞现象, 在仿真过程中人为的在第60秒将来自A的TCP数据包丢掉一个, 来模拟由于拥塞以外的其他原因而导致的数据包丢失。仿真结果如图7所示, 图7共包括两个部分, 即拥塞窗口CWND和TCP速率。从仿真结果发现, 由于RTT总体呈下降趋势, 此时SUM<0, 虽然有1个数据包丢失, 但是当前网络并没有处于拥塞状态下, 所以A并没有减小拥塞窗口, 当然发送速率也不会降低, 从而提高了网络的吞吐量。
5 结论
本文根据RTT的变化规律, 对数据包丢失原因做进一步判断, 仿真结果表明, 它能较好的分辨网络当前状态, 从而对在非拥塞状态下的数据包丢失而导致的速率降低进行了改进, 从而提高了网络的吞吐量。本文的仿真模型比较单一和简单, 没有在复杂网络与复杂环境下进行仿真, 这也是下一步的工作方向。
摘要:针对TCP Reno在非拥塞状态下意外丢包而产生的速率降低问题, 对TCP连接在拥塞状态与非拥塞状态下的RTT变化规律做深入研究, 根据RTT变化规律得出拥塞判断指示器, 并将之与TCP Reno拥塞控制算法协同工作。OPNET仿真结果表明, 该算法能准确判断当前网络状态, 解决了非拥塞状态下意外丢包而导致的速率下降问题。
关键词:往返时延,TCP Reno,时间戳,拥塞控制,无线网络
参考文献
[1]Jacobson V.Congestion avoidance and control[J].Computer Communication Review, 1988, 18 (4) :314-329.
[2]W.Richard Stevens.TCP/IP详解:卷1协议[M].范建华, 胥光辉, 张涛, 等译.北京:机械工业出版社, 2000:235-237.
[3]贾琳.有线无线混合网络中基于显式反馈的TCP性能改进方法[D].杭州:杭州电子科技大学, 2011.
[4]孔金生, 胡合伟, 王娜娜.基于遗传粒群路径优化的网络拥塞控制方法[J].计算机工程与应用, 2009, 45 (15) :144-146.
[5]刘昌华, 袁操.具有通信时延的网络拥塞控制算法稳定性研究[J].计算机工程与应用, 2011, 47 (16) :77-79.
[6]赵广松, 陈鸣.基于接收阈值的容延网络拥塞控制机制[J].软件学报, 2013, 24 (1) :153-163.
[7]Gao J B, Rao N S V.TCP AIMD dynamics over Internet connections[J].IEEE Communications Letters, 2005, 9 (1) :4-6.
一种改进的TCP拥塞控制算法 篇4
关键词:互联网,拥塞控制,OPNET仿真
随着Internet的迅速发展, 网络用户呈爆炸式增长, 网络应用领域不断拓宽, 特别是近年来音频、视频以及各种对网络资源要求较高的应用不断涌现, 多媒体技术的发展要求更高的网络服务质量 (QOS) , 网络流量急剧增加, 网络拥塞问题日益严重, 因此网络拥塞控制也成为网络发展和应用的瓶颈。
1 TCP拥塞控制算法
1.1网络拥塞的基本概念
网络拥塞是一种持续过载的网络状态, 即用户传输到网络中的数据流量超过了网络可用资源 (多数为局部网络资源) 的承受能力, 从而出现网络通信故障, 造成数据包的丢失, 时延增大, 网络资源利用率低, 吞吐率下降, 最终有可能导致网络完全瘫痪的现象称为网络拥塞, 用图1和图2清楚地表达了网络负载与网络性能的关系[1]。
当网络轻负载时, 网络的吞吐率随着负载的增加而增大, 而延时缓慢增加;当网络负载到达Knee (膝点) 后, 吞吐率的增加变缓, 延迟增长较快;当网络负载越过Cliff (崖点) 时, 吞吐量急剧下降, 延迟急剧上升, 即发生了网络拥塞现象。
1.2 TCP拥塞控制的发展及控制过程
在Internet中, 大部分网络拥塞控制是通过传输控制协议TCP (Transmission Control Protocol) 中端到端的流量控制完成的。在van Jacobson 奠定了TCP 流量控制的基础之上, 后来的 TCP Tahoe[2], TCP Reno[3], TCP NewReno[4], TCP SACK, TCP Vegas[5,6]拥塞控制算法就是在研究人员对它进行了更为细致而深入的研究, 不断完善和改进后而得到的。文献[2]是最早提出TCP网络拥塞控制的不足, 并提出了新的算法思想:“慢启动” (Slow Start) 和“拥塞避免” (Congestion aviodance) , 并在相当长的一段时期内对网络拥塞控制起到了很好的效果。下面介绍一下具体的控制过程。
慢启动[7]:在连接建立之前, 中间路由器没有预留资源, 同时用户也不知道有多少资源可以利用。为了防止连接开始时用户发送过多的数据而造成数据拥塞;初始时, cwnd设为一个数据包大小, 每收到一个ACK确认, cwnd就增加一个数据包的发送量, 然后随RTT呈2的指数级增长, 即1, 2, 4, 8, …。当达到网络容量时, 中间路由开始丢包, 隐式地通知发送方减少发送的数据量, 进而让发送方作出相应的调整, 保持网络有较高的吞吐率。如不出现拥塞, 当窗口达到rwnd时不再增大, 直到数据传送完毕。
拥塞避免:数据包在传输的过程中损坏或丢失的概率[6]小于1%, 当发送方收到3个重复的ACK确认或者发送超时时, 网络发生了拥塞, 此时网络进入了拥塞避免阶段。下面分几种情况来讨论:
1) 当cwnd>ssthresh时, 执行拥塞控制算法, cwnd增长缓慢, 每收到一个ACK确认, cwnd按后面的公式增长:cwnd=cwnd+snd_mss* snd_mss /cwnd (snd_mss为当前最大报文长度) , 此时cwnd最多增加一个字节, 即线性增长。
2) 当cwnd≤ssthresh时, 重新进入慢启动过程。
3) 当超时时, 设置cwnd为1。
快速重传:快速重传的目的是为了避免从新进入慢启动, 降低TCP连接的吞吐率, 当发送方收到3个重复的ACK确认时, 即判断数据包的丢失, 同时置ssthresh为当前cwnd值的一半, 而不必要等到RTO超时重新进入慢启动。
1.3 TCP拥塞控制存在的问题
在拥塞避免阶段, 当收到3个重复的ACK确认时, 即判断数据包的丢失, 如果传输过程中存在延时, 数据包并没有丢失而存在误判丢包, 而此时置ssthresh为当前cwnd值的一半, 则大大地降低了资源的利用率, 由此下面提出了一种改进的TCP拥塞控制算法。
2 一种改进的TCP拥塞控制算法
由于收到重复的ACK可能造成系统误判丢包的问题, 根据网络负载与吞吐率以及时延的关系, 将Rtt的变化与3个重复ACK共同来控制慢启动的阈值和拥塞窗口的大小。TCP采用了一种自适应算法来计算报文段的往返时延RTT[7], 当得到一个新的时延就要按下面的公式重新计算一次往返时延RTT:
平均RTT=α× (旧的RTT) + (1-α) (新的RTT样本) (0≤α<1) (1)
由式 (1) 可知, 新的往返时延样本会影响下一次旧的RTT, 此处可以引入一个控制因子P。
当新的RTT≤旧的RTT 时, P=0;
当新的RTT>旧的RTT 时, P=1;
当收到3个重复的ACK时候控制慢启动阈值以及拥塞窗口大小的算法如下:
该算法中P的取值为0或者1, 与3个重复的ACK共同控制慢启动阀值和拥塞窗口的大小, 使得系统更准确地判断是否丢包, 只有当时延加大而又收到了3个重复的ACK时, 才降低慢启动阀值和拥塞窗口为原来的一半, 提高资源的利用率。利用opnet仿真出丢掉1个数据包得出新的算法与原算法的拥塞窗口大小如图3所示:
下面是新的TCP拥塞控制算法特点:
1) 利用了RTT变化来控制当前的慢启动阀值和拥塞窗口的大小, 算法容易实现, 开销较小。
2) 提高了资源的利用率, 特别是瓶颈链路的利用率。
3) 在一定的程度上降低的传输时延, 提高了网络的实时性。
4) 降低了系统误判丢包而重传的可能性, 减少不必要的资源浪费, 充分地利用有限的网络资源。
但是改进的TCP算法也不可能完全避免拥塞控制的发生, 但是尽量在拥塞发生之前完成对数据的传输, 提高现有资源的利用率。
3 OPNET仿真实验分析
对改进的TCP算法进行实验仿真, 采用的拓扑如图4所示, 其中S为源端, 用于作为发送FTP数据的数据源, D为接收端, 用于接收数据, 链路用10 M带宽连接, RTO初始值设为2, 源端与接收端通过路由器的瓶颈链路2 M带宽相连, Fast Recovery设置为Reno, 延迟及其他的参数为缺省值。
先后对原算法和改进的TCP算法进行仿真, 并将结果取值为时间平均保存在矢量文件中, 导出数据分析得到的瓶颈链路的利用率如图5所示。
由图5分析可知, 在开始时改进的TCP算法并没有优势, 但是利用率很快就超过了原算法, 直到数据被传完结束, 资源的利用率得到提高, 特别是对小型局域网非常有利。
同样对整个网络的时延进行仿真如图6所示, 从分析结果可以看出, 原算法的平均时延大于改进的TCP算法, 从而提高了整个系统的实时性。
4 结束语
通过以上分析, 改进后的TCP算法能够有效地提高资源的利用率, 特别是瓶颈链路的利用率, 在一定程度上改善了系统的传输延迟, 提高了响应的实时性, 但并不能完全避免拥塞控制的发生, 网络拥塞控制的设计与实现还面临诸多的困难, 在新的网络环境中更是面临着挑战, 特别是对多媒体业务提供更好的服务质量, 需要找到一种更好的拥塞控制方案来适应多媒体业务的传输, 网络拥塞控制的实现还有待进一步的研究。
参考文献
[1]Jain, R, Ramakrishnan K K, Chiu Dahming.Congestion avoidance in computer networks with a connectionless network layer.Technical Re-port, DEC-TR-506, Digital Equipment Corporation, http://www.cis.ohio2state.edu/~jain, 1988
[2]Van Jacobson.Congestion avoidance and control.ACM Computer Communication Review, 1988;18 (4) :314—329
[3]Stevens W.TCP slowstart, congestion avoidance, fast eetransmit, and fast eecovery algorithms.RFC, 2001:997
[4]Floyd S, Henderson T.The newReno modification to TCP s fast re-covery algorithm.RFC, 2582, 1999
[5]Brakmo L S, Peterson L L.TCP vegas:end-to-end congestion avoidance on a global Internet.IEEE Journal on Selected Areas in Communications, 1995;13 (8) :1465—1480
[6]Jacobson V.Congestion a voidance and control.IEEE/ACMTransac-tion Networking, 1998; (3) :314—329
TCP拥塞窗口论文 篇5
关键词:无线网络,网络拥塞,TCP友好拥塞控制
1 RAP
RAP即Rate control Protocol, 通常由通信网络的发送端进行执行, 通信需要客户端发送的ACK信息及数据的序列来进行反馈。这种机制与窗口机制不同, 因为RAP的数据发送需要使用定时器, 例如, 前一个数据包的发送完成后, 必须要定时器满足条件后, 下一个数据包才能被发送。包间间隔IPG和RAP算法机制中数据发送速率V有着一对一的直接联系, 由公式 (1) 来进行说明:
基于AIMD策略的协议最典型的代表就是RAP协议, 例如其对发送端发送速率的调整就是运用的AIMD策略。如果此时网络中不存在拥塞, 那么RAP策略将会相应地增加发送速率。相反如果此时网络存在拥塞或者更糟的情况, RAP策略将会相应地减小发送速率。不管速率增加或者减小, 整个过程中的IPG都是不断更新的, 因此才会使得发送速率能够达到网络自适应的效果。当通信网络中是非拥塞情况, 那么我们采用公式 (2) 对包间间隔进行更新。
因此, 综合以上两个公式, 得到公式 (3) :
如果网络此时存在拥塞, 包间间隔就会自适应减小, 并且发送速率也会相应地减小。如公式 (4) (5) 所示:
和GAIMD机制相类似, RAP协议认为如果网络中存在丢包, 那么肯定是网络存在拥塞的情况。当满足两个条件a发送端接受到重复的ACK信息, b网络超时, 此时RAP协议将认为存在丢包。如果有的数据包是处于已经发送完毕但是还没经过确认机制确认, 那么在一开始的丢包时刻相应地减小发送速率, 也就导致了调整的速率不精确。
因此, RAP策略主要利用IPG实现TCP流数据的友好性, 每一次的IPG都是经过一个RTT才会被更新, 同时降低速度的抖动, 数据流的波动性也会降低。但是当传输多媒体数据流的时候, 以视频流为代表, RAP机制不适合用来传输连续性的数据。
2 TEAR
TEAR协议的拥塞控制机制和RAP机制不同, 其结合了基于速率的和基于窗口的两个控制算法。TEAR首先用计算公式得到想要的速度, 然后将更新后的速度发送至发送端, 它的优点在于无需确定包的格式, 因而当其用于无线网络流媒体传输时, TEAR往往传输的性能更好。
TEAR是结合Round来进行TCP窗口调节, 假设数据传输的速度很大, 我们便知道Round值也会相应地缩小。TEAR结合RTT和拥塞窗口值来计算网络吞吐量, 然后进行加权平均, 最后反馈至发送端, 发送端再立即自适应地更新发送速度。TEAR协议的状态转换见图1。
从图中可以看出TEAR在客户端能够模拟拥塞窗口的类似作用, 那么我们就不必考虑是否ACK到达发送端, 这也是TEAR协议的最大的优点, 使得整个传输速率更加精确。
3 TFRC
TFRC的全称是TCP-Friendly rate control, 最初由S.Floyd等人提出, TFRC是能够用于无线网络流媒体传输的拥塞控制机制, TFRC机制的吞吐量公式是基于TCP-Reno计算模型而改进的, 这样做有两点好处:第一, 能够实现相似网络下的带宽公平分配;第二, 使得发送端的发送速率更加平滑。如式 (6) 所示:
其中, S是发送数据的包大小, t RTO为重新传输的超时值, p为丢包数量与分组数据数量的比值。
TFRC拥塞控制机制的流程如下:在发送端发送出数据包, 当在客户端接收到数据包后, 由接收端计算p的大小。然后通过反馈通道, 将计算出来的p以及时间节点发回至发送端, 发送端便将计算出来的RTT值和RTO值带入吞吐量公式6中, 得到发送速度, 最后使得发送端自适应地调节其发送速率。
由于TFRC拥塞控制机制具有以下几个优点:第一, TFRC对于网络资源的占有不具有侵略性;第二, 发送端的发送速率具有很好的平滑性;第三, 发送速率的抖动得到大大地改善, 并不会因为某个包的丢失而受到影响。因此, TFRC拥塞控制机制是非常适合于无线网络流媒体传输的, 尤其是实时视频流传输。
4 L-TFRC
L-TFRC拥塞控制机制的全称为Logarithm based TCP-Friendly Rate Control。我们知道TFRC拥塞控制协议存在两个需要改进的地方, 即由于TFRC对于网络资源的侵略性不强, 所以当网络中存在两种数据流时, 假设为TFRC流和TCP流, 那么TFRC在瓶颈传输链路中竞争中处于不利的情形。假设此时网络中的传输速度比较平滑, 但是TFRC发送端的发送速度仍然存在波动, 甚至其速度会超过网络中能够利用的最大带宽, 这样只会使得传输速率大大下降。因而针对以上两种劣势, L-TFRC协议进行了改进, 如公式 (7) 所示:
其中n取1, 这样会使得计算更加方便, 如 (8) 所示:
其中, a0, a1为常数。
5 结语
本文对基于速率的TCP友好拥塞控制机制做出综述, 我们知道此类机制的算法能够利用网络中的拥塞特征信息来自适应地调整发送速率, 实现TCP的友好性, 因而其更适合于无线网络流媒体的传输。
参考文献
[1]S.Okasha.Altruism, group selection and correlated interaction[J].British Journal for the Philosophy of Science, 2005, 56 (4) :703–725.
TCP拥塞窗口论文 篇6
以TCP协议为代表的可靠传输层协议对数据报文丢失的原因并不加以区分,而是假定数据报文的丢失是由于网络拥塞引起的。在检测到数据报文丢失后,这些协议都通过缩减拥塞窗口来调节报文发送速率。如果数据报文是由于无线链路的误码而丢失而不是因为网络拥塞丢失的,那么此时缩减拥塞窗口就是对当前网络状况的错误判断,是不必要的。这种行动最终导致不能充分利用网络资源,降低有效吞吐量。
而TCP Veno[1]协议改进了TCP Reno协议,对无线环境下的TCP协议性能有了较大的改善。通过测量当前路由队列积压的报文数来确定当前的TCP连接处于何种阶段(正常工作阶段或是拥塞阶段),采用相应的拥塞窗口调整算法,实现了合理的流量控制和拥塞控制,克服了随机丢包对TCP协议的影响,提高了TCP在无线环境下的性能。
公平性指的是在发生拥塞时各源端(或同一源端建立的不同TCP连接或UDP数据报)能公平地共享同一网络资源(如带宽、缓存等),处于相同级别的源端应该得到相同数量的网络资源。公平的带宽分配在同质流网络中能够提高网络资源的使用效率。比如TCP网络中,RTT歧视现象[3]就是公平性研究要解决的关键问题之一。我们通常考查的网络,如Internet,其拓扑结构都不可能是均匀的,因此网络中的链路必然存在RTT差异,而TCP的RTT歧视性质就会使网络流量逐渐集中于短RTT链路上,路由器上路由表也会逐渐倾向于短路由。这样,延迟较大的链路,如果不是几何拓扑上的瓶颈,就会逐渐被荒废,造成网络资源的浪费。
TCP Veno是由TCP Reno改进而来的,它保持了Reno的大部分特色。但TCP Veno并没有有效地解决TCP Reno存在的公平性问题。为了改善TCP Veno在公平性上存在的问题,本文在深入分析、研究现有的传输控制机制[4,5]的基础上,提出一种新的算法,其核心是在TCP Veno的基础上加入带宽预测和动态窗口变化的思想,力图减少RTT大小对TCP流占用资源的影响。仿真实验证明这种算法有效改进了TCP Veno的公平性。
1 TCP Veno的协议机制
TCP Veno对Reno算法进行了修改。主要思路是在原有拥塞窗口增加方式的基础上,考虑了连接所处的阶段。当估计到连接处于拥塞阶段时(也就是当队列中积压的报文个数N超过门限值β后),这时的拥塞避免算法就由以前的cwnd在每个RTT内增加1,变为每两个RTT内才增加1。
N值是由以下方法获得的。在TCP Veno中,发送端测量两个数值———期望发送速率(Expected)和实际发送速率(Actual)。
其中cwnd是当前TCP的拥塞窗口大小,MRTT是测量到的最小RTT值,RTT是最后一次测得的往返时间值。定义Diff为两者之差:
当RTT>MRTT时,说明在瓶颈链路中出现了数据报文的积压,定义队列中的报文积压长度为N,则有:
可以看到RTT和MRTT相比的差值正是由于队列中报文积压导致。将式(4)整理得:
当队列中积压的报文个数N超过门限值β后,TCP Veno每两个RTT窗口数目增加1,在原有增加方式的基础上降低了窗口的增加速度,为的是使TCP Veno能更长时间地处于较大的窗口数目状态,即窗口可以更长时间地处于可工作状态,提高效率和吞吐量。
TCP Veno对快速重传之后的窗口调整算法(快速恢复算法)中的ssthresh的设定做了修改:若N<β(即丢包是由高误码率引起的),那么ssthresh=cwnd×(4/5);如果N>β(丢包是由网络拥塞引起的),那么ssthresh=cwnd/2。我们可以看到,当丢包是由网络的拥塞造成时,TCP Veno的快速重传算法和传统的TCP一致,没有进行修改;当链路出现随机丢包后,如果处于正常阶段(N<β),TCP Veno适度降低了慢启动门限值(ssthresh),使TCP窗口(cwnd)处于较大值,提高了吞吐量。
随着网络公平性这一问题日益受到关注。TCP Reno的公平性问题也暴露了出来。首先,由于在设计阶段,公平性问题没有得到足够的重视,使得TCP Reno的效用函数不符合一些常见的公平性准则。更重要的是,由于在TCP Reno中,拥塞窗口的更新是和确认包(acknowledgment)同步的,即每到达一个确认包,窗口大小增大1,导致具有不同RTT的TCP数据流具有不统一的增长速率。因为RTT较小流的窗口尺寸更新比RTT较大流的要快。也就是说RTT较小流会抑制RTT较大流的吞吐率。这就意味着对于那些往返时延较大的流,当有可用带宽时,它们需要更长的时间才能增大拥塞窗口。这些都是不利于长RTT流的因素,也是影响TCP Reno公平性表现的原因。
Veno是在TCP Reno的基础上改进而来的,保留了Reno的基本思想,这意味着它同样存在着类似于Reno在长短RTT上的不公平性。
2 一种改进的拥塞控制算法:TCP New Veno
为了解决TCP Veno存在的不公平性问题,本节提出一种新的算法TCP New Veno。该算法保留Veno原有的状态检测机制以及它对拥塞避免部分所做的修改。但是当检测到拥塞时,不是简单地将拥塞窗口减小到固定大小,而是采用带宽预测的方法,并对拥塞窗口进行动态的调整。
2.1 算法改进的基本思路
算法的基本思想如下:首先采用Veno的状态检测机制判断当前是否处于拥塞状况(N是否大于β);如果发生了拥塞,再根据所处的不同状态,通过预测带宽BWE进行相应的处理。
当发送端收到三个重复ACK,并且N>β时(处于拥塞状态),将慢启动门限ssthresh设为BWE×RTT,并把拥塞窗口大小设为与ssthresh相等;之后的拥塞窗口将会以线性形式增长。这种动态的窗口调整算法在理论上可以得到较大的性能提高。其伪代码如下:
若出现超时,则将拥塞窗口大小设为1,若此时ssthresh小于2,则将其设为2,若大于2,那么ssthresh的数值就被设置为BWE×RTT。伪代码如下:
通过计算采样时间间隔内的发送端成功发送的数据量作为链路的可用带宽,引入低通滤波器带宽BWE的预测的公式如下,BEk即为tk时刻的带宽估计值。
式中,是第k个ACK的到达时间,dk是第k个ACK所响应的数据量,而tk-tk-1即为该时间间隔。Bk为一样本BWE值,初始值为0。BEk是tk时刻的带宽估计值,1/τ是滤波器的截止频率,是为了限制带宽估计时间而设立的一个变数,参考文献[6],我们将其设为2。
2.2 TCP New Veno的数学模型
根据上述算法的思想,下面我们推导TCP New Veno的数学模型。为了简单起见,这里没有考虑TCP超时重传的问题。
拥塞窗口cwnd根据ACK的到达进行更新,发送端每收到一个ACK,cwnd的值增加1/cwnd。当检测到报文段丢失时,拥塞窗口cwnd调整为BWE×RTT,而cwnd增加了BWE×RTT-cwnd,设报文丢失率为p,则每次更新时,拥塞窗口cwnd的期望增加值为:
由于每次更新的时间间隔大约为RTT/cwnd,所以数据传输速率r的微分方程为:
在稳定状态时,带宽估计BWE近似等于cwnd/RTT,因此可以得到下式:
把式(9)代入式(8),得到微分方程如下:
采用分离变量法,得到:
通过积分,求解(11)式,得到:
其中C由初始条件决定。当t趋向于无穷时,得到改进后协议的稳态吞吐量:
其中Tq=RTT-RTTmin是报文经历的平均排队时间。
2.3 公平性分析
参考文献[7],我们得到TCP Veno的稳态吞吐量为:
其中,b为经过确认的数据包个数,p为丢包率。
当p值较小时,可以用下式替代。
对比式(13)和式(15)可以看到,Veno的吞吐量与1/RTT成正比,而经过改进后的协议,它的吞吐量与成正比,也就是说New Veno协议中,不同RTT的流可以更加公平地分享带宽,减少了长短RTT所带来的不利影响。因此,新协议的公平性要好于TCP Veno的公平性。
3 TCP New Veno的性能分析与评价
本节通过仿真的方法,分析、评价TCP New Veno的性能。为此我们设计了一系列的仿真实验,主要对TCP New Veno的公平性和吞吐量性能进行测试。为了体现其优异性,使用TCP Veno和TCP Reno协议与其进行对比。
3.1 公平性的仿真分析
本节通过仿真实验分析TCP Veno和改进的TCP New Veno的公平性。实验在NS-2的仿真环境下进行,拓扑如图1所示。
其中,主机Host(0)与路由器Router(2)、Host(1)与Router(2)、Host(4)与Gw(3),Host(5)与Gw(3)之间建立带宽15Mbpsd的链路。Router(2)与gw(3)间建立带宽为1.5Mbps,时延10ms的链路。
网络协议的公平性体现在各源端(或同一源端建立的不同TCP连接或UDP数据报)能否公平地共享同一网络资源(如带宽、缓存等),处于相同级别的源端是否能够得到相同数量的网络资源。
因此,我们在Host(0)和Host(4)以及Host(1)和Host(5)之间分别建立一条TCP连接,应用层数据源都为ftp,传输层分别采用TCP Veno和New Veno两种协议,实验从0秒启动,在120秒时结束。
为了体现长短RTT的差异,将节点0和节点2以及节点3和节点4之间的单项传输时延设为35ms,将节点1和节点2,以及节点3和节点5之间的单项传输时延设为2.5ms。我们的目的是为了体现长RTT的TCP连接与短RTT连接之间的不公平性,而端到端时延还要考虑排队迟延等,但在这里我们只是定性的考虑长RTT和短RTT的公平性差异,因此不考虑其他迟延所带来的影响。那么这两个TCP连接的RTT分别为160ms和30ms。仿真结果如图2和图3所示。
由实验结果可以看出,短RTT连接的报文段序列号都比长RTT连接的报文段序列号增长快。然而,很明显的,改进过的TCP New Veno长短RTT连接的增长速度之差要比TCP Veno小得多。在加入带宽预测以及动态窗口调整策略之后,协议的公平性有所提高,这一点和之前的数学分析是相符的,也是可以理解的。原因是采用这种算法之后,对带宽进行了合理的利用,使得以近似传输速率传输的其他数据流可以公平地享用带宽。
3.2 吞吐量的仿真分析
虽然本文的主要目的是提出一种改进协议公平性的算法,但改进后的协议吞吐量也是必须考虑的。为此,在有线和无线的混合网络环境下,对其在不同链路差错下的吞吐量进行了统计。网络拓扑如图4所示,为较为客观地体现TCP New Veno协议的性能,我们用TCP Veno和TCP Reno协议在NS-2仿真环境下与之进行对比。
其中主机Host(0)与路由器Router(2)、Host(1)与Router(2)、Host(4)与Gw(3)之间建立带宽5Mbps,时延2ms的链路,Router(2)与Gw(3)间建立带宽为1.5Mbps,时延10ms的链路,Mobile(5)为移动节点。在Gw(3)和Mobile(5)间建立带宽为11Mbps,延迟2ms的无线链路,在Host(0)和Mobile(5)之间建立一条TCP连接,应用层数据源都为ftp,TCP协议分别采用TCP Reno、TCP Veno和New Veno等三种协议,用于观察TCP数据在无线链路中的传输情况;另外,在Host(0)和Host(4)间建立UDP通信流用于竞争链路,应用层数据源为CBR。实验从0秒启动,在200秒时结束。
实验中,我们分别设定了0、0.01、0.02等十种链路差错率,在不同差错率的情况下对TCP Reno、TCP Veno和TCP New Veno吞吐量进行了统计,图5给出了采用几种协议所获得的吞吐量随分组丢失率的变化。
从图5中可以看到,随着链路差错率从0至0.1逐渐增加,三种版本的TCP协议的性能均有所下降,而Veno和New Veno的性能明显高于Reno;在差错率较低的情况下,Veno和New Veno性能较为接近;而差错率逐渐增大后,可以看到New Veno的吞吐量曲线更加平滑,其吞吐量高于Veno。
这是由于TCP Veno能够根据状态区分算法,判断出当前丢包是由于拥塞还是由于链路差错引起的(在N≥β时,判断为拥塞状态,N<β时,判断为随机丢包),而不是一出现丢包现象就认为链路中出现了拥塞。这样可以使拥塞窗口保持较大水平,保证了吞吐量的稳定。而经过改进的New Veno在此基础上增加了带宽预测和动态窗口调整策略,更加有效地利用带宽,较小地受到链路差错的影响。
4 结论
本文在TCP Veno的基础上,通过加入带宽预测和动态窗口调整的机制,以求更好地利用带宽,并提高协议的公平性。数学分析和仿真实验结果证明,采用新算法后,协议在吞吐量和公平性方面都有所提高。
下一阶段,我们将测试改进后的TCP New Veno协议在不同路由协议下的性能,并对其在adhoc网络环境下公平性等方面进行研究。
参考文献
[1]Fu C P,Liew S.TCP Veno:TCP enhancement for transmission over wireless access networks[J].IEEE Journal of Selected Areas in Com-munications,2003(2).
[2]Fu C P,Lu W,Lee B S.TCP Veno revisited[C]//proceedings of IEEE Global Telecommunications Conference,December15,2003(6):32533258.
[3]Golestani S J,Sabnani K K.Fundamental observations on multicast con-gestion control in the internet[C]//proceedings of Infocom'99,1999:9901000.
[4]Casetti C,Gerla M,Mascolo S,et al.TCP Westwood:end-to-end con-gestion control for wired/wireless networks[J].Wireless Networks2002(8):467479.
[5]Gerla M,Bryan K F Ng,Sanadidi M Y,et al.TCP Westwood with adap-tive bandwidth estimation to improve efficiency/friendliness tradeoffs[C]//proceedings of Computer Communications,2004,27(1):4158.
[6]Casetti C,Gerla M,Mascolo S,et al.TCP Westwood:Bandwidth esti-mation for enhanced transport over wireless links[C]//proceedings of ACM Mobicom,July1621,2001:287297.
[7]Zhou B.A simple shroughput model for TCP Veno[C]//proceedings of IEEE International Conference on Communications2006(ICC'06),2006,12(6):53955400.
TCP拥塞窗口论文 篇7
TCP/I P拥塞控制主要由四个核心算法组成[1],即:“慢启动”、“拥塞避免”、“快速重传”和“快速恢复”。在高速网络和嵌入式实时网络中,传统的TCP拥塞控制算法就不太适用了。这主要有以下三方面的原因:
(1)传统的TCP拥塞控制机制在高速网络和嵌入式实时网络中反应性比较差,这是因为TCP在高速、嵌入式实时网络中对分组丢失的反应要敏感得多;
(2)传统的TCP总是把分组丢失解释为拥塞,而假定链路错误造成的分组丢失是可以忽略的;
(3)传统的TCP不能使用网络链路的所有带宽,这主要是由于在AI MD算法中,TCP从一个分组丢失到带宽的恢复所用的时间比较长。
拥塞发生的主要原因在于网络能够提供的资源不足以满足用户的需求,这些资源包括缓存空间、链路带宽容量和中间节点的处理能力。当加载到网络上的载荷超过其处理能力时,拥塞现象便会出现。尽管网络层无法控制拥塞现象的发生,但这项任务大部分是由TCP来完成的,因为对拥塞现象最有效的解决办法是降低数据传输速率。对于解决拥塞问题必须注意到两个潜在的问题:网络的容量和接收方的容量,并分别进行处理。为了在通信量较大时仍能保证嵌入式系统具有良好的实时通信能力,必须解决嵌入式系统通信中的拥塞控制问题。
1 设计目标
(1)高效性:在满足拥塞控制目标的前提下,尽可能充分利用网络资源;
(2)可扩展性:当网络连接增多时,算法开销不会成为影响网络性能的一个主要因素;
(3)公平性:防止一些网络连接过度占用网络资源而导致另外一些网络连接不能公平地使用网络资源;
(4)稳定性:当网络带宽基本不变时,使各网络连接发送速率快速收敛于稳定状态。
2 设计思想
每个TCP连接的发送端和接收端都有一个缓冲区,接收缓冲区的最大可用空间决定了接收端广播窗口的大小,以及允许发送端发送超过上次确认的数据分组序号的数据量大小。如果接收窗口小于发送端的拥塞窗口,则该连接的窗口大小受接收端限制。显然,大的接收窗口允许发送端连续发送大块数据,但是要占用更多的内存。发送缓冲区用于保存发送端应用程序交给TCP层的数据,直到接收端确认收到该数据。发送大量数据时,这个缓冲区几乎一直是满的。若发送缓冲区大于传输路径上的带宽延迟积,将有一部分数据一直占据缓冲区,造成内存的浪费和连接的限制。若发送缓冲区过小,则在大量数据的传输过程中,将造成传输流量减小。因此,TCP必须等待接收端对己接收的数据报文确认后,缓冲区才能刷新。
如果TCP连接的缓冲区大小固定,当缓冲区个数增大时,会造成系统性能下降,最终会耗尽系统资源,造成系统崩溃[2]。当系统中缓冲区较小的TCP连接非常多时系统会重新分配缓冲区,这样做可以提高系统的数据传输能力;而当缓冲区较小的TCP连接比较少时将剩余系统资源分配给缓冲区较大的TCP连接,此时可以提高系统的TCP流量。在动态调节缓冲区窗口大小的基础上再对缓冲区中的数据包调度机制进行改进,依据数据包的大小和紧迫度进行调度,令紧迫度高并且体积小的数据包优先被调度,使得当该连接的缓冲区变小时仍能保证重要的数据包得到及时处理。
对于单个TCP连接,增大缓冲区大小可以提高传输速度。但在多个连接同时存在时,这种方法一方面在网络拥塞时浪费内存资源:另一方面,在网络无拥塞时,各个连接的发送端拥塞窗口无限增大,最终耗尽内存资源,甚至造成系统死锁。因此提出了一种基于缓冲区动态调节的拥塞控制改进算法。该算法既要满足网络拥塞的自动调节,又能实现缓冲区的优化利用。
3 实现过程
(1)缓冲区动态调节算法[3]
缓冲区动态调节算法流程如图一所示:
(2)TCP协议的数据结构重定义
TCP通过一个数据结构来维护管理TCP数据传输的细节,并为每个TCP连接协调传送、接收和重发动作,这个数据结构被所有进程共享。该数据结构称为传输控制块(Transmission Control Block)或TCB,TCP为每个活跃的连接保留一个TCB。TCB中包含了有关TCP连接的所有信息,包括连接端点的地址和端口号,当前平均往返时间的估计值,发送或接收的数据,是否需要确认或重发,以及一组有关该连接使用情况的统计数据。在tcp.h中,对TCB的结构重定义如下[4]:
4 结束语
本文针对TCP传统拥塞算法的缺陷,通过类比和分析,提出并设计了一个新的TCP拥塞控制算法。对于克服传统TCP在高速、嵌入式实时通信网络中的不足起到了很好的作用。这在传输量较大、传输速度要求相对较高的嵌入式系统应用中有一定的参考价值。
摘要:随着嵌入式系统的网络应用逐渐增多,提高嵌入式系统实时通信的能力就显得非常重要,对于实时性要求比较高的嵌入式应用领域,必须解决嵌入式系统通信中的拥塞控制问题,但是传统的拥塞控制算法并不能完全满足嵌入式通信系统的实时性需求。本文从设计思路与设计思想着手,给出了嵌入式系统TCP拥塞控制的改进算法。
关键词:嵌入式系统,TCP/IP协议栈,TCP拥塞控制,算法
参考文献
[1]Jon C.Snader.高级TCP/IP编程[M].北京:中国电力出版社,2001.
[2]Douglas E.Comer.Internetworking with TCP/IP(Vol-ume1,英文版)[M].北京:人民邮电出版社,2002.
[3]刘峥.基于Linux的嵌入式系统实时通信技术研究[D].济南:山东大学,2005.