基于OPNET 的网络协议TCP 仿真实验平台的设计与实现
2023-09-17游胜玉刘琳
游胜玉,刘琳
(东华理工大学软件学院,江西 南昌 330013)
随着经济的迅猛发展,计算机网络已经离不开人们的生活。社会需求的日益增加,网络拓扑结构也不断复杂化,网络的应用也不断多元化,传统的网络实验操作环境已远远不能满足现代实验操作的要求。在计算机网络技术中,服务器、交换机、防火墙及路由器是网络的主流设备[1-2],即使实际的网络实验中采用一定数量的网络设备,但意味着需要投入更高的成本,且网络设备维护也比较复杂,特别是对于那些复杂的大型网络建设,更需要大量的人力物力来建设。另外,对于初学者来说,如果在硬件设备搭建实验过程中出现故障导致实验失败,也不知道问题出现在哪,从而影响实验效果[3-4]。因此,针对这样的情况,引入仿真技术来搭建网络实验环境,可以减少投资成本,并且对于初学者而言又锻炼了实践能力。本文采用OPNET网络仿真软件搭建仿真实验平台,对传输控制协议TCP 的慢启动算法、拥塞避免算法、快速重传算法和快速修复算法进行设计与实现。
1 OPNET 介绍
1986 年,麻省理工大学的2 名博士创建了一个公司,名为OPNET。第二年,OPNET 公司的第一个商业化的网络性能仿真软件问世,使得具有预测性的网络性能管理和仿真成为可能。OPNET 网络仿真软件是OPNET 公司推出的最早及最具有影响力的网络仿真软件,对网络的建模仿真、提前预测大大提高了网络环境的质量,起了一个划时代的作用[5]。
OPNET 网络仿真软件主要包括OPNET Modeler、OPNET ITGuru、OPNET SPGuru 和WDM Guru、ODK和NetBizODK 共4 个系列。OPNET Modeler 系列主要用来进行研究,可以用来分析网络设备、网络协议和一些通信协议;OPNET ITGuru 系列主要是针对大型企业网络的管理和分析,查找问题,找出性能瓶颈,提出解决方案等;OPNET SPGuru 和WDM Guru 系列主要面向运营商,面向智能化的网络管理;ODK 和NetBizODK 是一个更底层的软件开发平台,ODK 为开发时的环境,NetBizODK 为运行时的环境,由多种软件组件库组成,主要应用于计算机网络的建模、仿真、优化和分析。OPNET 迅速而稳步地发展,作为高科技网络规划、仿真、分析工具,OPNET 在通信、国防及计算机网络领域已经被广泛认可和采用[6]。
2 仿真实验设计与配置
OPNET Modeler 是一款非常优秀的网络仿真和建模工具,它不仅支持面向对象的建模方式,而且还可以提供图形化的编辑界面。它的强大功能和全面性,使它可以模拟任何网络设备、支持各种网络技术。因此,本文采用OPNET Modeler 网络仿真软件作为仿真平台,对传输控制协议TCP 的慢开始算法、拥塞避免算法、快速重传算法和快速修复算法进行模拟实验。
2.1 TCP 协议拥塞算法介绍
传输控制协议TCP 是一种面向连接可靠的全双工通信协议,其核心思想是基于共享资源管理下,按照一定的算法来控制传输数据,并且合理地利用资源,保证网络的稳定性。TCP 协议包括4 种拥塞控制算法,即慢开始算法、拥塞避免算法、快速重传算法和快速恢复算法。这些算法的核心就是通过控制拥塞窗口的大小,发送端可以控制业务量,从而控制网络拥塞。在传输过程中,发送端逐渐增加窗口的大小,一直到出现数据包丢失,窗口值迅速下降,然后开始逐渐增大,从而有效避免了拥塞瘫痪[7]。
慢开始算法:它是一个在TCP 连接上控制数据流发送速度的算法。顾名思义,在开始时就不要发送大量数据,将发送窗口及拥塞窗口初始值设为1,等接收方确认数据之后,拥塞窗口成倍增加,发送窗口也成倍增加;直到窗口大小等于慢开始门限值时,改为每次加1,直至拥塞。慢启动算法是一个在TCP 连接上控制数据流发送速度的算法。
拥塞避免算法:它是一种处理丢失报文的算法。许多输入流到路由器,而路由器输出能力不足的时候,拥塞避免就是为解决这个问题而提出的。数据包的丢失率是非常低的,那么丢失的数据包,将产生一个信号,在源和目的地址之间有堵塞现象,所以在实际情况中,它们在共同的阶段相互作用。
快速重传算法:TCP 协议为了保证数据的可靠性,采用了超时重传机制,在发送一个数据后开始启动一个计时器,在一定时间内如果没有得到发送数据报的确认帧ACK(Acknowledgement,确认字符)报文时,那么就重新发送数据,直到发送成功为止。快速重传算法是在数据包丢失的情况下给出的一种修补机制。一般来说,重传发生在超时之后,但如果接收端在一个往返时间里接收到3 个以上的重复确认帧ACK 报文时,这就代表数据丢失了,需要重传,快速重传不需要等到重传定时器溢出时再进行重传,所以叫快速重传。
快速恢复算法:它是在快速重传算法后,当接收端收到3 个确认帧ACK 时,就将慢启动阈值设置成为当前的拥塞窗口值的1/2,发送重传的数据报,并采用拥塞避免算法,每收到一个确认帧,拥塞窗口就增加一个报文段,而不启动慢开始算法。快速重传和快速恢复算法的作用都是快速恢复丢失的数据包,如果没有快重传和快恢复,TCP 将会使用定时器来要求传输暂停,在暂停时间内,没有新的数据包被发送,从而影响通信质量。
2.2 网络拓扑结构图的建立
首先,创建网络模型,模拟现实中的网络环境,在实验环境中仿真搭建一个从Paris 地区到Sthlm 地区的网络,在Paris 地区的子网上设置服务器和路由器,接着在Sthlm 地区的子网上也设置服务器和路由器,用来建立双方网络的连接,通过通信模拟TCP 协议。
其次,在OPNET 网络仿真软件的界面下打开opnet→File→Project,新建一个工程,接着选择场景,向场景里面添加所需的设备及物件,如一个应用配置物件(Application Definition)、一个业务主询配置物件(Profile Definition)、路由器,服务器等,并且对2 个地区的服务器及路由器进行配置,设置相应服务器和路由器设备的名称、IP 地址、子网掩码网关地址等,在应用配置物件上配置TCP 协议的各种参数值,包括数据包大小、接收缓冲区大小、拥塞窗口值大小等,其拓扑结构图如图1 所示。
图1 Paris 到Sthlm 的网络
2.3 TCP 协议仿真结果与分析
2.3.1 慢开始与拥塞避免算法同时使用的仿真
慢开始与拥塞避免算法同时使用的仿真结果如图2 所示。从图中可以看出,TCP 协议在执行缓慢开始和拥塞避免算法时,初始窗口很小,但是呈指数型增长;如果一旦超过规定的最大窗口阈值(ssthresh)的话,其窗口大小增长曲线将呈线性增长,这就是拥塞避免算法的实现。从图中还可以看出,在一个1 s 时间窗口内,窗口阈值从1 200 字节成倍增长到67 000 个字节,这是慢开始算法。当阈值达到大约67 000 字节时,开始“加法增大”,这就是拥塞避免算法。
图2 慢开始与拥塞避免算法同时使用的仿真结果
2.3.2 慢开始、拥塞避免和快速重传算法同时使用的仿真
慢开始、拥塞避免和快速重传算法同时使用的仿真结果如图3 所示。从图中可以看出,在1 min 54 s时间窗口内,窗口阈值从1 440 字节成倍增长到近65 535 个字节,这是慢开始算法。当阈值达到大约65 535 字节,开始“加大算法”,这就是拥塞避免算法。
图3 慢开始、拥塞避免和快速重传算法同时使用的仿真结果
窗口大小达到大约72 725 字节时,应该得到3 个连续的ACK,根据3 个重复来确定响应包丢失,立即重新发送数据包丢失,然后设置最大窗口阈值ssthresh作为当前拥塞窗口72 725 字节的1/2,这是快速重传(Tahoe)算法,然后转移到一个缓慢的开始。
2.3.3 慢开始、拥塞避免、快速重传和快速修复算法同时使用的仿真
慢开始、拥塞避免、快速重传和快速修复算法同时使用的仿真结如图4 所示。从图中可以看出,与同时使用慢开始、拥塞避免和快重传算法类似,TCP 协议在执行缓慢开始和拥塞避免算法时,它的初始窗口的值比较小,但呈指数级增长,但是到了最大窗口阈值(ssthresh)的时候,窗口大小就会增长并且呈线性增长。
图4 慢开始、拥塞避免、快速重传和快速修复算法同时使用的仿真结果
从图4 的仿真结果中可以看出,在1 min 54 s 时,窗口左右值近65 535 个字节从近1 460 字节成倍增长,这就是慢开始。当阈值达到大约65 535 字节时,开始“增大加法”,这就是拥塞避免算法。窗口大小达到大约72 638 字节时,应该得到3 个连续的确认帧ACK,如果基于3 个重复来确定响应包丢失和重传丢失的数据包,如果收到non-duplicate ACK,拥塞窗口值cwnd=最大窗口阈值ssthresh,进入拥塞避免阶段,这是快速重新传输/快速恢复算法(Reno)。
3 结束语
计算机网络结构的越发复杂化及应用的越发多元化,使网络更加需要一个可靠的规划与设计的方法,可是传统的计算机网络规划主要是靠经验而来,这样就会导致花费大量的人力物力来规划、设计及建立更加完善的网络,这对于目前这些复杂的大型网络的建设非常不利。网络仿真软件的出现,大大方便了网络工程师们建设一个优秀的网络,其中OPNET 仿真软件,不仅在设计上非常规则,而且在网络规划及建设方面也很大程度缩短了周期,从而进一步提高了网络建设的科学性,降低网络建设的投资成本及风险,让网络工程师们看到了重要的、客观的及可信的定量依据,并完美呈现出一个美好的网络前景。网络仿真技术的使用,在协议开发、标准开发、网络规划和网络运营管理等方面,可以极大地提高效率,为网络技术的发展提供强有力的支持。
因此,利用网络仿真软件来构建计算机网络课程的实验环境,既可以减低实验设备的投资成本,又可以提高初学者动手实践能力和创造能力,提高做实验的效率。本文介绍了采用OPNET 网络仿真软件对TCP协议的4 种算法进行模拟仿真实验,通过实验得出OPNENT 仿真软件能够很好地仿真设计与分析网络协议。初学者还可以利用OPNET 仿真软件仿真计算机网络的基础类、设计类、综合类及创新类实验等,通过实验把理论与实践更好地结合起来,把实践知识应用到实际环境中,为后续的学习打好基础。
参考文献: