一种ns3并行模拟仿真系统的制作方法
【技术领域】
[0001 ]本发明涉及一种仿真系统,特别是一种NS3并行模拟仿真系统。
【背景技术】
[0002]NS3(Network Simulator Vers1n-3)是一个综合了很多优秀模拟器特点的新型网络模拟器,NS3是免费开源的,在完备性和可扩展性等方面有独特的特点。NS3的功能丰富,集成了几十个模块,对多种网络通信模型及网络协议有很好的支持,同时也为开发者提供了丰富的接口和基类,开发者根据研究需要开发独立的模块,具有很好的扩展性。当前多数用户使用NS3模拟器进行小规模网络的网络协议仿真,现有的基于NS3的仿真应用基本将NS3作为一个串行仿真工具,对于简单的网络拓扑和任务而言,通常可以接受,而对于复杂的网络拓扑和仿真任务,串行仿真将消耗大量仿真时间。传统的NS3仿真平台大多利用单个计算节点,但对于大型复杂的流量仿真任务,单个计算节点的仿真时间随仿真流量的增加而急剧增加,特别是针对骨干网的仿真,骨干网路由设备之间的链路带宽却非常的大,可达lGB/s甚至是10GB/s,同一时刻可能会有多个路由在转发数据。对于单个计算节点,由于受CPU的限制,计算产生和转发如此多的数据包将消耗大量的计算时间,必然会影响仿真效率。
【发明内容】
[0003]本发明的目的在于,提供一种NS3并行模拟仿真系统。本发明具有,仿真时间短和仿真效率高的特点。
[0004]本发明的技术方案:一种NS3并行模拟仿真系统,包括:
[0005]网络分割模块,作用是对需要仿真的网络拓扑进行网络划分,具体为利用网络分割算法在一个计算节点上将原始完整的网络拓扑按照自己定义的网络划分数目划分成不同的网络分割区域;
[0006]共享文件分发模块,作用是进行网络分割结果和网络仿真流量任务分发,任务分发具体为,计算节点通过集群系统的交换矩阵设备通信,负责网络分割的计算节点将网络分割结果告知其它所有计算节点,同时将用户配置好的网络仿真流量任务分发到相应计算节点;仿真过程当中各个计算节点各自负责分发到的流量任务,并生成相应的trace文件和PCAP文件,仿真结束后将各个计算节点上的trace文件合并获得完整仿真结果;
[0007]并行模拟仿真模块,作用是利用NS3仿真系统提供的MPI接口搭建NS3并行模拟仿真环境,使底层在仿真时使用并行调度算法,执行并行仿真。
[0008]前述的NS3并行模拟仿真系统中,所述的网络分割算法包括均等分割算法和非均等分割算法;所述的均等分割算法为,当网络划分数目N为偶数个时,将网络拓扑直接利用KL算法进行分割,具体为将网络拓扑分割到A和B两个网络分割区域,A和B内的网络节点数量相等或者多一个,然后不断互换A和B间的网络节点,使得A和B间的链路数量最少,互换后得A,和B,,再将A,和B,分别分割为A1,、A2,^PBi,、B2,,然后不断互换A1,和如,间'B1,和出,间的网络节点,使六! ’和六2’ ,Bi ’和出’间的链路数量最少,以此类推直至网络拓扑被分割到N个网络分割区域。
[0009]前述的NS3并行模拟仿真系统中,所述的非均等分割算法为,当网络划分数目N为奇数个时,将网络拓扑分割到a和b两个网络分割区域,b内的网络节点数量为Z-Z/N,剩余为a内的网络节点数量,Z为网络节点的总量,b为单独的一个网络分割区域,此时不断交换a和b间的网络节点,直至a和b之间的链路最少,之后再将a中的网络节点按均等分割算法进行多次划分,最后获得分割结果。
[0010]前述的NS3并行模拟仿真系统中,利用网络分割算法迭代运算200次以上,对比分割结果,所分割的网络分割区域间链路数量最少的分割结果接近最优分割结果。
[0011]前述的NS3并行模拟仿真系统中,对网络拓扑内具有很大流量任务的网络节点赋予较大权重值,网络拓扑被分割成多个部分后,当权重值较大的网络节点被划分到同一个网络分割区域中时,将权重较大的网络节点与其他网络分割区域中的普通的网络节点进行交换,直至权重较大的网络节点均匀分布到不同的网络分割区域中,以此实现权重值较大的网络节点均匀分配到不同的网络分割区域当中。
[0012]前述的NS3并行模拟仿真系统中,所述的并行模拟仿真模块的工作方法为,在执行仿真前,用户基于openmpi进行文件配置,通过mpihosts的添加修改,使NS3并行模拟仿真系统知道网络划分数目、各计算节点的IP地址和可用的CPU内核数,使用op enmp i和I i nux系统调度自行调度CPU资源进行计算,使用全局同步算法同步各个CPU计算调度,再经网络分割和任务分发使各计算节点明晰自己所要仿真的拓扑及任务,之后设定仿真起止时间开始进行并行仿真。
[0013]与现有技术相比,本发明通过网络分割模块将网络拓扑在一个计算节点上分割成若干部分,并通过共享文件分发模块将网络分割结果告知其它所有计算节点,同时将用户配置好的网络仿真流量任务分发到相应计算节点;通过该方法,使得不同的计算节点分摊了串行仿真的计算量,在任务量急剧增加时,仿真时间并不会像串行仿真时急剧增加,从而使得仿真时间得到有效缩短;不仅如此,本发明对具有很大流量任务的网络节点赋予权重值,将赋予权重值的网络节点平均分配到不同的计算节点上,从而避免了多个过于消耗计算资源的网络节点过于集中分割在某个计算节点上,从而进一步降低仿真时间、提高仿真效率。
[0014]本发明在仿真过程当中各个计算节点各自负责分发到的流量任务,并生成相应的trace文件和PCAP文件,仿真结束后将各个计算节点上的trace文件合并获得完整仿真结果;通过该方法实现了真正计算上的并行,大大提高了计算效率,而且计算量越大时,串行与并行上效率的差异越明显。
[0015]相较于串行仿真,在很大的发包量级下,各个仿真任务的并行仿真效率均有提升,在一对一任务下仿真的效率最多提升了55%,多对一任务下仿真效率最多提升了61%,多对多任务下仿真效率最多提升了66%,压力测试下仿真效率最多提升了76%,而且仿真任务越复杂,仿真效率提升越明显。
[0016]本发明在进行通过网络分割算法将原始完整的网络拓扑信息进行分割,并对分割结果进行200次以上的迭代运算得到接近最优分割结果;通过该方法,使得仿真的结果更加接近实际结果,从而提高了仿真结果的精确度与可靠度。
【附图说明】
[0017]图1是网络分割的总体流程图。
【具体实施方式】
[0018]下面结合附图和实施例对本发明作进一步的说明,但并不作为对本发明限制的依据。
[0019]实施例1。一种NS3并行模拟仿真系统,包括:
[0020]网络分割模块,作用是进行网络分割(如图1所示),具体是对需要仿真的网络拓扑进行网络划分,具体为利用网络分割算法在一个计算节点上将原始完整的网络拓扑按照自己定义的网络划分数目划分成不同的网络分割区域;一个计算节点为集群系统的一个刀片服务器;网络划分数目根据执行仿真的刀片服务器的数量确定;每个网络分割区域内包含一个刀片服务器;
[0021]共享文件分发模块,作用是进行网络分割结果和网络仿真流量任务分发,任务分发具体为,计算节点通过集群系统的交换矩阵设备通信,负责网络分割的计算节点将网络分割结果告知其它所有计算节点,同时将用户配置好的网络仿真流量任务分发到相应计算节点;仿真过程当中各个计算节点各自负责分发到的流量任务,并生成相应的trace文件和PCAP文件,仿真结束后将各个计算节点上的trace文件合并获得完整仿真结果;
[0022]并行模拟仿真模块,作用是利用NS3仿真系统提供的MPI接口搭建NS3并行模拟仿真环境,使底层在仿真时使用并行调度算法,执行并行仿真。
[0023]前述的网络分割算法包括均等分割算法和非均等分割算法;所述的均等分割算法为,当网络划分数目N为偶数个时,将网络拓扑直接利用KL算法进行分割,具体为将网络拓扑分割到A和B两个网络分割区域,A和B内的网络节点数量相等或者多一个(当网络节点的总量为奇数时出现“多一个”的情况),然后不断互换A和B间的网络节点,使得A和B间的链路数量最少,互换后得A’和B’,再将A’和B’分别分割为^’、如’和&’、82’,然后不断互换A1’和A2,间、B1,和出,间的网络节点,使A1,和六2 ’、Bi ’和出,间的链路数量最少,以此类推直至网络拓扑被分割到N个网络分割区域。
[0024]前述的非均等分割算法为,当网络划分数目N为奇数个时,将网络拓扑分割到a和b两个网络分割区域,b内的网络节点数量为Z-Z/N,剩余为a内的网络节点数量,Z为网络节点的总量,b为单独的一个网络分割区域,此时不断交换a和b间的网络节点,直至a和b之间的链路最少,之后再将a中的网络节点按均等分割算法进行多次划分,最后获得分割结果。
[0025]利用网络分割算法迭代运算200次以上,对比分割结果,所分割的网络分割区域间链路数量最少的分割结果即为最优分割结果。实验结果表明,当迭代运算200次左右,得到的分割结果已接近最优。
[0026]对网络拓扑中,具有很大流量任务的网络节点赋予较大权重值,网络拓扑被分割成多个部分后,当权重值较大的网络节点被划分到同一个网络分割区域中时,将权重较大的网络节点与其他网络分割区域中的普通的网络节点进行交换,直至权重较大的网络节点均匀分布到不同的网络分割区域中,以此实现权重值较大的网络节点均匀分配到不同的网络分割区域当中。通过该方法,避免多个过于消耗计算资源的网络节点过于集中在某个计算节点上而降低仿真效率。
[0027]前述的并行模拟仿真模块的工作方法为,在执行仿真前,用户基于openmpi进行文件配置,通过mpihosts的添加修改,使NS3并行模拟仿真系统知道网络划分数目、各计算节点的IP地址和可用的CPU内核数,使用openmpi和Iinux系统调度自行调度CPU资源进行计算,使用全局同步算法同步各个CPU计算调度,再经网络分割和任务分发使各计算节点明晰自己所要仿真的拓扑及任务,之后设定仿真起止时间开始进行并行仿真,仿真时各个计算节点使用同样的代码。
[0028]前述的集群系统的各个刀片服务器(计算节点)与交换矩阵设备采用光模块相互连接,通信带宽可以达到万兆以上,因此通信耗时可以忽略不计,从而网络分割模块和共享文件分发模块使这些刀片服务器并行运转时(PU性能线性提高。
[0029]前述的任务分发主要采用Rsync与Inotify配合使用的方式达到分发、共享的目的,使不同计算节点获得所需信息,从而处理各自的任务、共享结果。Rsync (remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync所采用的“Rsync算法”在同步本地和远程主机间的文件时,只传送文件的不同部分,而不是每次都传送整个文件,因此处理速度非常快。Inotify是一个Linux内核特性,通过监控文件系统,能及时的向指定的应用程序发出相关的命令,比如删除、读、写和卸载操作等。通过结合使用二者,便可达到实时监控文件系统变化,从而自动进行文件同步的目的。具体配置步骤如下:(以2台计算机即机器A和B同步配置为例)
[0030]实现目标:
[0031]两台机器文件自动同步:192.168.1.2(机器A) — >192.168.1.3(机器B)
[0032]同步的目录为:?/workspace/ns3/NS3_dev/data
[0033]机器A:(在sudo su进入root后进行操作)
[0034](I)下载安装所需的软件:
[0035]wget http://rsync.samba.0rg/ftp/rsync/rsync_3.0.9.tar.gz
[0036]Wget http://cloud.github.com/downloads/rvoicilas/inotify-
[0037]tools/inotify-tools-3.14.ta r.gz
[003
8]tar -zxvf rsync-3.0.9.tar.gz
[0039]cd rsync-3.0.9
[0040]./configure —prefix=/usr/local/rsync
[0041]make
[0042]make install
[0043]cd..
[0044]tar -zxvf inotify-tools-3.14.tar.gz
[0045]cd inotify-tools-3.14
[0046]./configure —pref ix = /usr/local/inotify
[0047]make
[0048]make install
[0049](2)创建密码认证文件:
[0050]echo"123456">/etc/rsyncd.secrets (123456为自己设置的密码)[0051 ]chmod 600/etc/rsyncd.secrets
[0052](3)创建Rsync复制脚本:
[0053]本脚本主要是将机器A的目录?/workspace/ns3/NS3_dev/data里的内容,通过Inotify监控,当文件夹中文件内容进行了任何添加、删除和修改时,通过Rsync实时的同步给机器B的相同目录里。
[0054]vim/opt/rsync.sh
[0055]#!/bin/bash
[0056]SRC =/home/cc/workspace/ns3/NS3-dev/data/
[0057]DST =
[email protected]::ftpdata
[0058]/usr/local/inotify/bin/inotifywait-mrq—timefmt ’ %d/%m/%y%H: %M,一format ’ %T%w%f%e’_e modify ,delete ,create ,attrib$SRC| while read files
[0059]do/usr/bin/rsync-vzrtopg—delete—password-f iIe = /etc/rsyncd.secrets$SRC$DST>/dev/null
[0060]Done
[0061]:Wq!
[0062](4)修改权限并加入开机启动:
[0063]chmodu+x/opt/rsync.sh
[0064]echo"/opt/rsync.sh">>/etc/rc.local
[0065]机器B配置:(在sudo su进入root后进行操作)
[0066](I)下载安装软件同机器A;
[0067](2)创建密码认证文件(与A不同,需要用户名)
[0068]echo"root:123456">/etc/rsyncd.secrets
[0069]chmod600/etc/rsyncd.secrets
[0070](3)建立机器B的Rsync配置文件[0071 ]vim/etc/rsyncd.conf
[0072]uid = root
[0073]gid = root
[0074]port = 873
[0075]use chroot = yes
[0076]read only = yes
[0077]hosts allow= 192.168.1.0/255.255.255.0
[0078]hosts deny = *
[0079]max connect1ns = 5
[0080]log f ile = /var/log/rsyncd.log[0081 ]pid file = /var/run/rsyncd.pid
[0082]lock file = /var/run/rsyncd.lock
[0083]log format = %%b
[0084]syslog facility = local3
[0085]timeout = 300
[0086][ftpdata]
[0087 ]path = /home/cc/workspace/ns3/NS3_dev/data
[0088]list = no
[0089]read only = no
[0090]ignore errors
[0091]auth users = root
[0092]secrets file =/etc/rsyncd.secrets
[0093]: wq
[0094](4)启动Rsync服务并将Rsync服务加入启动项
[0095]/usr/local/rsync/bin/rsync—daemon—config=/etc/rsyncd.conf
[0096]ps -efIgrep rsync
[0097]echo〃/usr/local/rsync/bin/rsync—daemon—config=/etc/rsyncd.conf〃>>/etc/rc.local
[0098]在配置完机器A和机器B后,重启两台电脑A和B即可。此外,亦可手动进行同步,命令如下:(在机器A上运行)
[0099]/usr/bin/rsync-vzrtopg—delete—password-f iIe =/etc/rsyncd.secrets/home/cc/work space/ns3/NS3-dev/data/
[email protected]::ftpdata
[0100]以上是两台电脑分发的实现具体步骤。针对三台以上电脑,除电脑A有所不同,其他电脑配置与电脑B相同。对于电脑A的修改只需对Rsync脚本进行修改:
[0101 ]#!/bin/sh
[0102]SRC =/home/cc/workspace/ns3/NS3-dev/data/
[0103]DES = f tpdata
[0104]WEB2 = 192.168.1.**
[0105]WEB3 = 192.168.1.#
[0106]WEB4 = 192.168.1.**
[0107]USER = root
[0108]/usr/local/bin/inotifywait -mrq _e create,move,delete,modify$SRC
[0109]while read files
[0110]do
[0111]/usr/bin/rsync -ahqzt —password-fiIe = /etc/rsyncd.secrets —delete
[0112]$SRC $USERi$ffEB2::$DES
[0113]/usr/bin/rsync -ahqzt —password-fiIe = /etc/rsyncd.secrets —delete
[0114]$SRC$USERi$ffEB3::$DES
[0115]/usr/bin/rsync -ahqzt —password-fiIe = /etc/rsyncd.secrets —delete
[0116]$SRC$USERi$ffEB4::$DES
[0117]done
[0118]通过以上的相关配置,便可实现不同计算节点上的文件同步。这样在用户配置完仿真系统的网络拓扑和网络仿真流量任务后,共享文件分发模块会自动向不同的计算节点分发所需文件,各个计算节点即执行相应的任务。
【主权项】
1.一种NS3并行模拟仿真系统,其特征在于,包括: 网络分割模块,作用是对需要仿真的网络拓扑进行网络划分,具体为利用网络分割算法在一个计算节点上将原始完整的网络拓扑按照自己定义的网络划分数目划分成不同的网络分割区域; 共享文件分发模块,作用是进行网络分割结果和网络仿真流量任务分发,任务分发具体为,计算节点通过集群系统的交换矩阵设备通信,负责网络分割的计算节点将网络分割结果告知其它所有计算节点,同时将用户配置好的网络仿真流量任务分发到相应计算节点;仿真过程当中各个计算节点各自负责分发到的流量任务,并生成相应的trace文件和PCAP文件,仿真结束后将各个计算节点上的trace文件合并获得完整仿真结果; 并行模拟仿真模块,作用是利用NS3仿真系统提供的MPI接口搭建NS3并行模拟仿真环境,使底层在仿真时使用并行调度算法,执行并行仿真。2.根据权利要求1所述的NS3并行模拟仿真系统,其特征在于,所述的网络分割算法包括均等分割算法和非均等分割算法;所述的均等分割算法为,当网络划分数目N为偶数个时,将网络拓扑直接利用KL算法进行分割,具体为将网络拓扑分割到A和B两个网络分割区域,A和B内的网络节点数量相等或者多一个,然后不断互换A和B间的网络节点,使得A和B间的链路数量最少,互换后得A’和B’,再将A’和B’分别分割为然后不断互换八! ’和六2 ’间、Bi ’和出’间的网络节点,使六! ’和六2 ’、Bi ’和出’间的链路数量最少,以此类推直至网络拓扑被分割到N个网络分割区域。3.根据权利要求2所述的NS3并行模拟仿真系统,其特征在于,所述的非均等分割算法为,当网络划分数目N为奇数个时,将网络拓扑分割到a和b两个网络分割区域,b内的网络节点数量为Z-Z/N,剩余为a内的网络节点数量,Z为网络节点的总量,b为单独的一个网络分割区域,此时不断交换a和b间的网络节点,直至a和b之间的链路最少,之后再将a中的网络节点按均等分割算法进行多次划分,最后获得分割结果。4.根据权利要求3所述的NS3并行模拟仿真系统,其特征在于:利用网络分割算法迭代运算200次以上,对比分割结果,所分割的网络分割区域间链路数量最少的分割结果接近最优分割结果。5.根据权利要求4所述的NS3并行模拟仿真系统,其特征在于:对网络拓扑中,具有很大流量任务的网络节点赋予较大权重值,网络拓扑被分割成多个部分后,当权重值较大的网络节点被划分到同一个网络分割区域中时,将权重较大的网络节点与其他网络分割区域中的普通的网络节点进行交换,直至权重较大的网络节点均匀分布到不同的网络分割区域中,以此实现权重值较大的网络节点均匀分配到不同的网络分割区域当中。6.根据权利要求5所述的NS3并行模拟仿真系统,其特征在于:所述的并行模拟仿真模块的工作方法为,在执行仿真前,用户基于openmpi进行文件配置,通过mpihosts的添加修改,使NS3并行模拟仿真系统知道网络划分数目、各计算节点的IP地址和可用的CPU内核数,使用openmpi和Iinux系统调度自行调度CPU资源进行计算,使用全局同步算法同步各个CPU计算调度,再经网络分割和任务分发使各计算节点明晰自己所要仿真的拓扑及任务,之后设定仿真起止时间开始进行并行仿真。
【专利摘要】本发明公开了一种NS3并行模拟仿真系统。包括:网络分割模块,作用是进行网络分割;共享文件分发模块,作用是进行任务分发和成果共享;并行模拟仿真模块,作用是利用NS3仿真系统提供的MPI接口搭建NS3并行模拟仿真环境,使底层在仿真时使用并行调度算法,执行并行仿真。本发明具有,仿真时间短和仿真效率高的特点。
【IPC分类】G06F17/50
【公开号】CN105488288
【申请号】CN201510891435
【发明人】任阳阳, 袁进, 李源, 陆飙, 陈利民, 王玮, 陈奎任, 杨耀, 张猛, 撒兴杰, 熊铖, 李由, 郑元伟, 龙诺亚, 张菡, 李伯森, 刘毅, 黎皓, 张祥忠, 刘晓波, 于富财
【申请人】贵州电网公司信息通信分公司, 电子科技大学
【公开日】2016年4月13日
【申请日】2015年12月7日