基于NS2的网络拥塞控制算法实验仿真与分析
2021-12-20张奎
张 奎
(喀什大学 计算机科学与技术学院,新疆 喀什 844006)
0 引言
随着因特网的快速发展以及TMT(Technology Media Telecom,科技、媒体和通信)产业的深度融合,新型网络应用不断出现,导致客户端数量爆炸式地增长以及网络数据量“井喷”式地涌现,给网络的运维和管理带来了巨大压力.特别是语音、视频、图像等多媒体数据的增加,使网络的可用资源变得愈加紧张,拥塞问题更加突出,如何预防和控制网络拥塞成为了亟待解决的问题[1].TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)拥塞控制是保证因特网QoS稳定性和鲁棒性的关键[2],其主要通过两种途径,第一,基于路由器的拥塞控制,即通过路由器的队列调度算法来实时监控缓存队列长度,对进入的数据包根据概率执行丢弃或接收操作.该机制工作在网络层,对于缓解局部网络拥塞具有重要作用;第二,基于源端的TCP协议控制,即源端和接收端根据TCP协议窗口机制防止过多的数据包注入到网络中,使网络中的路由器或链路不致过载.该机制工作在传输层,提供多种环境下的网络应用,适用性较好,目前是拥塞控制机制研究的重点.
基于源端的TCP协议控制核心在于网络拥塞控制算法,有慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)以及快恢复(fast recovery)算法.文献3、文献4对五种算法在单链路网络环境下进行了实验仿真,统计分析得出在无丢包、高时延,低带宽和一般拥塞环境下Vegas算法性能优于其他算法的结论;文献5、文献6对Vegas算法在异构网络环境下进行了应用仿真,研究了动态门限值在提高网络性能中的作用.如何突出各种算法在不同网络环境下的应用情况,上文未给出明确结论.本文拟采用NS2软件,搭建同构型和异构型两种网络拓扑结构,对以上五种算法进行实验仿真,统计分析进而得出算法的使用情况,以期加深对网络拥塞控制机制的理解和掌握.
1 TCP网络拥塞控制算法
TCP传输控制协议提供面向“端到端”连接的“尽力而为”可靠数据传输[7].基于源端的TCP协议控制提供流量控制和拥塞控制,目前算法主要版本有Tahoe、Reno、Newreno、Sack以及Vegas[3,8-10].Tahoe算法是TCP协议控制的早期版本,通过cwnd(拥塞窗口)和ssthresh(慢开始门限值)来控制拥塞过程.当源端连续收到3个重复的ACK(Acknowledgement,确认帧)时,认为发生了拥塞则立刻重传丢失的数据包,之后进入慢开始阶段,该种算法会周期性的遭遇网络拥塞以及时延带宽积较小目前已废弃不用[11].Reno算法是在Tahoe算法的基础上增加了快速恢复机制,以快速恢复机制取代Tahoe算法的慢开始阶段.源端在收到3个重复的ACK时,立刻重传对方尚未收到的数据包并且设置新的ssthresh值,之后进入拥塞避免阶段,这样降低了重传率,提高了网络吞吐量,目前在因特网上应用广泛[12].Newreno算法在Reno算法的基础上修改了快速恢复算法,延迟了系统进入拥塞避免阶段的时间.而Sack算法在Reno算法的基础上,加入了SACK确认选项,通过该字段确认哪些数据包已经收到的,哪些需要重传.Vegas算法是根据报文的RTT(Round-Trip Time,往返时延)来调整cwnd窗口大小,与前面四种算法相比不会产生周期性的丢包问题,更适合网络突发传输数据[13].
2 同构型网络实验仿真与分析
2.1 实验仿真
同构型网络即采用同种接入技术搭建的单个逻辑网络.采用NS2仿真软件,搭建如图1所示的网络拓扑,其中S0~S1为发送方,连接到路由器R1上,带宽为10Mbps,时延为1ms;D0~D1为接收方,连接到路由器R2上,带宽为10Mbps,时延为1ms;R1和R2之间为瓶颈链路,路由器队列管理算法采用DropTail.以FTP(File Transfer Protocol,文件传输)为例仿真网络拥塞控制过程,其中S0~S1绑定相同类型的TCP源代理(有Tahoe、Reno、Newreno、Sack以及Vegas),D0~D1绑定接收代理(TCP/Sink),源代理与接收代理之间创建TCP连接,第0s开始仿真,仿真周期为10s.编写脚本实现:(1)TCP源代理算法控制网络的数据传输;(2)五种算法在不同瓶颈链路(低带宽、高时延、高带宽、低时延)下的运行情况.
图1 同构型网络拓扑
2.2 仿真分析
(1)无丢包环境
无丢包环境设置的瓶颈链路带宽为20Mbps,时延为1ms.算法的性能指标见表1,可以看出各算法的平均吞吐量接近瓶颈链路的一半,平均时延保持在较低水平,没有发生拥塞和丢包现象.其中Vegas算法的平均时延低至0.065ms,说明在无丢包环境下,其平均吞吐量保持在较高水平,源端发送的数据包能及时得到处理,算法性能优于其他算法.
表1 无丢包环境下各算法性能指标
(2)高时延环境
高时延环境设置的瓶颈链路带宽为20Mbps,时延为100ms.算法的性能指标见表2.可以看出网络传输受到较大影响,出现平均吞吐量大幅度下降,平均时延大幅度增加,但是没有发生拥塞和丢包情况.这说明数据包在到达R1和R2的缓存队列后排队时延增大,导致源端发送的数据包未能及时交付给D0,但是由于高时延条件使接收到的数据包经过长时间排队依然能得到处理,同理接收方发送ACK的处理情况.五种算法在高时延环境下性能保持一致.
表2 高时延环境下各算法性能指标
(3)低带宽环境
低带宽环境设置的瓶颈链路带宽为1Mbps,时延为1ms.算法的性能指标见表3.可以看出网络传输受到影响,出现平均吞吐量下降,平均时延大幅度增加,出现拥塞以及丢包现象.这说明网络高速传输的数据在经过低速链路时,数据在路由器中的排队和处理时延过大,路由器的缓存队列满时导致后面进入的数据包丢失.而Vegas算法根据预期传输速率和实际传输速率之间的差值来调整cwnd的大小.在低速链路情况下,差值虽然有变化,但只要保持在合理区间,cwnd依然保持不变,接收到的数据包最终能得到处理.Vegas算法在低带宽环境下平均吞吐量大,时延小,无丢包,性能最好.
表3 低带宽环境下各算法性能指标
(4)拥塞环境
拥塞环境设置的瓶颈链路带宽为1Mbps,时延为20ms.算法的性能指标见表4.可以看出,网络在低带宽、低时延的情况会发生拥塞和丢包,出现平均吞吐量下降且保持在较低水平,平均时延增大的现象.说明各算法会启动相应的拥塞控制机制来对网络进行拥塞控制,而Vegas采用新的拥塞避免机制以及修改了的慢开始阶段,避免网络进入拥塞阶段,预防了数据包丢失.
表4 拥塞环境下各算法性能指标
通过以上仿真结果,在无丢包和高时延环境下,五种算法的性能基本一致,不会发送丢包以及拥塞控制的现象,但是对网络传输性能影响较大,导致发送的数据包需要排队等待较长时间,而Vegas算法受影响较小.在低带宽以及拥塞环境下,Vegas算法依然保持相对大吞吐量、低时延,而其他算法受影响比较大,均产生了丢包现象,启动了拥塞控制机制.综合来看,在同构型网络环境下Vegas算法优于其他算法.
3 异构型网络实验仿真与分析
3.1 实验仿真
异构型网络即采用不同接入技术、不同性能的网络搭建而成的逻辑网络.采用如图1所示的网络拓扑,其中S0~S1绑定不同的TCP源代理(有Tahoe、Reno、Newreno、Sack以及Vegas),D0~D1绑定接收代理(TCP/Sink),设置瓶颈链路带宽为1Mbps,时延为20ms,第0s开始仿真,仿真周期为10s.由于在同构型网络中得出Vegas算法性能较好的结论,为突出验证该结论在异构型网络拥塞控制中的适用情况,将Tahoe、Reno、Newreno与Sack算法分别Vegas进行组合,共有四种组合,对比进行实验仿真.编写脚本实现:(1)五种TCP源代理分别控制网络数据传输;(2)对比四种组合算法在拥塞控制环境下的运行情况.
3.2 仿真分析
(1)拥塞窗口(cwnd)变化
四种组合算法的cwnd变化如图2~图5所示.可以看出Tahoe、Reno、Newreno与Sack算法在较高的地方振荡,而Vegas算法的拥塞窗口总是维持在较低水平.虽然同构型网络中Vegas算法整体性能优于其他算法,这是因为Vegas采用了保守的拥塞避免算法来避免数据包丢失以及网络拥塞控制,并以此来提高网络的服务质量.但当Vegas与其他算法共存时,Tahoe、Reno、Newreno与Sack采用了侵略性的拥塞控制方法,源端会不断增加发送的数据包数量直至网络发生拥塞,进而进行拥塞控制.相比之下,Vegas源端在网络开始就采用了RTT来减慢cwnd增大的速度,避免因为传送太快而丢包,乃至网络拥塞情况发生.
图2 Tahoe与Vegas组合的cwnd变化
图3 Reno与Vegas组合的cwnd变化
图4 Newreno与Vegas组合的cwnd变化
图5 Sack与Vegas组合的cwnd变化
(2)平均吞吐量对比
四种组合算法的平均吞吐量见表5.可以看出Tahoe、Reno、Newreno与Sack算法具有较高的平均吞吐量,而Vegas算法的吞吐量低至组合算法的一半左右.这说明在异构型网络中Vegas算法采用了较为保守的拥塞避免算法,缩减了cwnd窗口大小,降低了丢包率,同时也降低了网络的吞吐量.
表5 组合算法的平均吞吐量
通过实验仿真以及数据统计,可以看出在同构型网络环境下,Vegas算法性能优于其他算法;而在异构型网络环境下,Vegas采用了保守的拥塞避免算法来预防网络进入拥塞状态,而其他算法则采用侵略性的拥塞控制算法来不断发送数据直至网络拥塞,进而进行拥塞控制,相比而言,Vegas算法与其他协议共存时,其性能表现较差.
4 结语
在对网络拥塞控制算法进行分析的基础上,实验仿真并对比分析了Tahoe、Reno、Newreno、Sack以及Vegas算法,实验结果表明,在同构型网络环境下Vegas算法整体性能优于其他算法,而在异构型网络中Vegas算法相对其他算法性能表现较差.数据传输过程中Vegas算法采用预期和实际传送速率之间的差值来调整cwnd大小,以RTT来测量网络拥塞情况,修改慢开始阶段来减慢cwnd的增加速度,避免了网络提前进入拥塞控制阶段,在提高网络稳定性和鲁棒性以及避免网络周期性拥塞方面具有重要作用.对比分析不同环境下的网络性能参数验证了实验结果的正确性,为进一步研究拥塞控制算法提供了参考.