NS2仿真机拥塞控制研究
NS2仿真机拥塞控制研究 TCP/IP是目前使用最广泛的一组通信协议。其主 要功能包括:将应用程序收到的信息分为许多较小的数据段, 提供可靠性服务,提供链接导向服务,提供应用程序与应用 和式之间的流量控制,并根据网络状况进行拥塞控制。TC PVegas最早由Brakmo和Peterson提 出[1],在此前的TCPReno版本一直使用Wind ow-base流量控制方式。TCPReno必须逐次增 加拥塞窗口(congestionwindow,cwn d)的值以探测可用频宽,因而TCP会周期性地遭遇网络 拥塞的问题。Vegas使用平均往返时间(round- triptimes,RTT)测量网络状况,通过比较预 期效果和实际效果以决定是否增加或减少拥塞窗口的值。因 此,TCPVegas可以有效使用频宽。1TCP拥塞控制基本算法 TCP发送端使用ACK(acknowledgem ent)来确认封包是否被接收[2],若封包被接收,接 收端会根据收到的封包号码返回一个ACK,并触发发送端 再发送新的封包。若收到的封包为非连续的,则返回号码相 同的ACK(duplicateACK)。TCP使用A CK以及重送的方式来提供可靠服务。TCP的拥塞控制主 要分为5个阶段[3],分别为慢启动(Slow-sta rt)、拥塞避免(congestionavoid-ance)、快速重传(fastretransmissi on)、快速恢复(fastrecovery)以及过期 重传(timeoutretransmission)。
TCP利用ACK检测网络状况并且提供可靠的服务,在调 整发送端发送速率时用慢启动门限(ssthresh)与 cwnd的值来区分慢启动或者拥塞避免。其基本算法为 [4-5]:式中,当cwnd小于ssthresh时, TCP处于慢启动阶段,每收到一个ACK,cwnd值会 加1,因此每经过一个RTT的时间,cwnd的值增加1 倍。当cwnd的值大于ssthresh时,TCP处于 拥塞避免阶段。在这个阶段,cwnd以线性方式增加,大 约每过一个RTT,cwnd值才会增加一个segmen t,以避免cwnd增加过快而导致封包丢失(packe tloss)。如果检测到封包丢失或者过期,则TCP的 发送端会重新将ssthresh值设定为发生拥塞时的 门限值的一半,然后使用慢启动重发遗失的封包。
2TCPVegas算法 Vegas通过3种方法来提高网络性能,实现增加传 送吞吐量(throughput)并减少封包遗失的发生。
这3种方法分别是:新的重送机制(newretrans missionmechanism)、新的拥塞避免机制 (newcongestiona-voidancem echanism)、修改Slow-start阶段(modifiedslow-start)。
2.1新的重送机制TCPVegas改进了重送机制, 每收到一个Dupli-cateACK时,Vegas会 注意RTT是否大于超时的值,以便检查是否有超时发生;
若有,Vegas将会直接重发此包而不需等待经过3个D uplicateACK。当封包被重发且返回新的ACK 值时,Vegas会注意第一个或者第二个返回的ACK值, 以检测随后的封包是否超时,并重发遗失的包。可见,Ve gas能及早检测出是否有封包遗失并立即重送遗失的封 包。
2.2新的拥塞避免机制TCPVegas通过观察R TT的变化来控制cwnd的大小。Vegas的拥塞控制 算法[6-7]如下。Vegas根据预期发送率和实际发 送率之间的差异(Diff)来调整cwnd的大小。当D iff的值大于β时,说明传送的速率太快,应降低cwn d的值来缓解发送速率;
反之,当Diff值小于α时,需 要增大cwnd的值来增加传送速率。
2.3修改Slow-start阶段TCPVega s除了能有效使用额外频宽外,也要避免因发送率太高而发 生封包遗失的情况。因此在Slow-start阶段,T CPVegas减缓了cwnd增加的速度来检测及避免 封包遗失。Vegas修改了TCP的Slow-star t算法,cwnd在经过2个RTT时间后才会增加1倍。与TCPReno不同的是,Vegas根据预期的发送率 和实际发送率之间的差值来调整ssthresh的值,当 Vegas检测到有队列产生时,Vegas就由Slow -start进入CongestionAvoidan ce阶段。
2.4影响TCPVegas性能的因素在实际的网络 中,存在着很多能够影响TCP效果的因素,但主要有3类 [8]:平均往返时间(RTT);
时钟粒度(timer granularity);
慢启动门限(Slow-st artthreshold)。(1)平均往返时间。网络 中同时有多条TCPConnection共用相同链路 时,由于RTT较短的链接闲置时可以更快地取得Link 上的可用频宽,因此RTT较短的TCPConnecti on拥有较好的传输效果[9]。(2)时钟粒度。通常T CP在实际运作时不会随时关注封包是否过期(Timeo ut),而是设置一个闲置时间值(Coarse-Gra inTimer),每隔一段时间才会检查是否有封包过期 了。当有封包遗失时,则一个封包从遗失直到Timeou t被重送的时间会增加。(3)慢启动门限。ssthre sh的值决定终止Slow-start后开始进入Co ngestionAvoidance时window的 大小[10]。若ssthresh的值设置太大,TCP 很可能因为发送太快而产生很多封包遗失;
若设置得太小,会使得TCP因过早进入CongestionAvoi dance阶段,而使得频宽的使用率降低。
3仿真与分析 本文使用NS2(networksimulator version2)作为仿真平台,NS2是面向对象的、 离散事件驱动的网络环境模拟器[11-12],主要用于 解决网络研究方面的问题。在NS2中建立网络模型,分别 仿真TCPVegas在RTT、TimerGranul arity和Slow-startThreshold 因素影响下的性能,并与TCPReno版本进行对比。
3.1RTT对Vegas的影响图1为仿真模型,我 们建立两条TCP链路,第一条存在于A0与B0之间(F TP0),第二条存在于A1与B1之间(FTP1),其 中FTP0的RTT时间较短。仿真时间设定为40s。图 2为cwnd变化图。可以看出,由于FTP0(cwnd 0-rtt-vegas.tr)的RTT较短,所以在S low-start期间,ACK回来的时间较短,FTP 0的cwnd值可以有较快速度的增加。在频宽被塞满之前, FTP0有较多时间来增加其window值。与此同时, RTT较长的FTP1(cwnd1-rtt-vegas. tr)的cwnd值就低于FTP0。当Diff值维持在 稳定范围(α<Diff<β)之后,拥塞窗口不再变化, 维持在稳定状态。表1为在RTT影响下,此模型中Reno版本与Vegas版本的吞吐量比较。
3.2TimerGranularity对Vega s的影响TimerGranularity仿真模型同 样建立2条TCP链路(见图3),第一条存在于A0与B 0之间(FTP0),第二条建立在A1与B1之间(FT P1)。在仿真中需要设定一组Coarse-grain Timeout的值,为了典型起见,将第一组FTP0和 FTP1都设定为0.5s,第二组FTP0设定为0.5 s,FTP1设定为0.1s,仿真时间都设定为40s。
在本次仿真中,由于TCPConnection在Slo w-start时都是以2的倍数方式增加,网络上的缓冲 区很快就被用完,进一步导致大量封包遗失情形出现。从表 2中可以看出,Timeout对Reno影响很大,将C oarse-GrainTimeout的值设置小后,由 于FTP1恢复时间较短,所以Reno平均吞吐量明显好 转。由于NewReno在Timeout发生前利用Fa stRecovery开始重发,因而差异不大。对于Ve -gas因为没有发生Timeout,在执行中得到的结 果相同见图4, 3.3Slow-startThreshold对V egas的影响频带延迟乘积(bandwidth-de layproduct)代表在任意时间,发送端到接收端 路径上最多能容纳的包的个数。图5为仿真模型,当频带延迟乘积值较大而ss-thresh值较小,发送端进入C ongestionAvoidance之后需要经过较 长时间cwnd的值才会增加到一个合适的值。从表3的仿 真结果中可以看到,频宽设置越大,频带利用率却越低。这 是由于假设的RTT值不变,当进入Congestion Avoidance阶段后,cwnd的速度就稳定下来, 吞吐量也基本保持稳定。因此,在高速且频带延迟乘积很大 情况下,ssthresh的值的设定非常重要。
4结束语 本文通过NS2仿真平台,研究了TCPVegas协 议的性能。分别对TCPVegas在平均往返时间,时钟 粒度以及慢启动门限3个因素影响下做出仿真,得出了TC PVegas的性能曲线,通过对比平均吞吐量的变化情况, 可见TCPVegas较其他版本的TCP协议有更好的 性能。