论文部分内容阅读
随着互联网技术和应用的快速发展,网络仿真已经成为解决开展计算机网络相关研究重要途径之一,大规模通信网络的仿真常常需要面对两个难题:其一是执行一次仿真所消耗的CPU周期会随着流量的增大而增加,其二是仿真软件在仿真过程中消耗的内存容量会随着节点和链路等网络元素数量的上升而以线性甚至更高的增长率增加。将仿真的计算量和内存消耗分布到多个处理器上是解决大规模仿真的问题一个有效的解决办法,一种实现分布式仿真系统的“传统”方法是“从零开始”创建一个全新的仿真软件。另一种方法是“联合”现有的仿真软件,重用他们的仿真功能,并将他们通过某种方式将他们有机的结合在一起,以此来构建能够分布运行的并行仿真系统。就理论和初步的研究结果而言,使用“联合”的方法确实能够为实现高效、大规模的并行网络仿真提供一种可行的方法。本文参考“联合”的开发方法,以MPI程序库作为并行计算和进程间通信的支持,利用网络仿真软件NS现有提供的网络仿真功能,设计和实现了一种并行仿真系统,完成了以下工作:(1)在仿真系统的设计中,我们将网络模型按照网络节点划分为多个网络子模型,并将这些网络子模型分别分配给并行仿真系统的各个仿真进程;制定了各个仿真进程之间相互通信与协作的机制;为并行仿真系统设计了一种分层结构,将并行仿真系统的各项功能与模块分别划分到不同的相互独立的层次,在层内部保持高内聚性、在层之间保持低耦合性,降低并行仿真系统的开发和维护难度。(2)在仿真系统的具体实现中,采用一系列方法技术,解决了系统实现的一些关键技术问题,如设计并实现了以ProcessTable模块为中心的一系列模块,负责初始化仿真数据和并行参数、控制每个进程的执行流程和计算任务;确定了仿真进程之间的同步机制,设计并实现了UniformScheduler类在仿真进程之间同步仿真时间和保持仿真时间的一致性,避免出现网络事件乱序的现象;在进程之间传递数据的流程中插入了序列化模块,使NS各种结构复杂的包数据能够在进程之间顺利的传递。(3)为增强系统的可扩展性,我们向并行仿真系统加入了启动算法进程的功能、定义了算法进程的编程接口、并设计了算法的管理模块。并行仿真系统能够在网络仿真的过程中实时的执行链路流量分析等多种算法。用户可以通过编程接口向并行仿真系统添加自定义的算法代码。(4)使用从Internet2网络的流量数据对并行仿真系统进行了仿真实验,仿真实验的结果表明:本文研制的并行仿真系统能够启动多个进程以并行的方式完成网络仿真,并减轻每个进程对运行时间的需求和对内存的消耗等负担;算法进程能够实时、正确的执行多种算法;并行仿真系统的主要功能达到了预期目标。