研究DTN和机会网络(Opportunistc Networks),使用的主要模拟工具是TKK的ONE(Opportunistic Network Environment),该工具特别适合网络层以上的协议、移动模型、网络连通特性等方面的研究。鉴于实验室后续的很多研究工作都不仅仅是DTN的路 由,并考虑到OMNet++强大的模拟能力和开源特性,希望将模拟平台转移到OMNet++上。
之前在做一篇移动传感器网络文章时也使用过OMNet++3.x系列,但今年2月推出的4.0版本改进很大,从安装到使用都发生了 较大的变化。这里先介绍一个安装篇,废话少说,进入正题
1. 安装
原理:
OMNet++的安装包包括
1)一个基于Eclipse开发的IDE
2)OMNet++源码,OMNet++实际只提供一组共享库
3)模拟构建工具,包括ned parser工具,msg编译工具
4) 基于windows c原生库的GNU开发工具链MinGW(记得原来是用vc++的,现在学术版本不支持vc++),还有一个bash环境MSYS
从 http://www.omnetpp.org/filemgmt/viewcat.php?cid=2 下载包含集成了MinGW的OMNet++安装包,解压到d:\simu下
执行mingwenv.cmd 进入MSYS的bash界面
./configure
make
稍等片刻,将编译成功,如果需要测试编译结果,可以
cd samples/dyna
./dyna
安装成功后可以发现将src目录下的源代码编译到out目录下,并编译成debug和release两个模式,生成了6个dll动态库,其中包括模拟核心oppsim,这些库再拷到bin目录下。可以看出omnet的设计原理,将整个系统提供为一组共享库,并用构建工具将用户模拟代码与库链接起来。
为了模拟无线移动环境,去http://wiki.github.com/mobility-fw/mf-opp4下载mobility framework库
解压缩到d:\simu\omnetpp-4.0下
./mkmk
make all
在testsuite编译时出现编译错误,大量的undefined function,诊断后发现makefile中没有链接到mf的核心库libmfcore.dll,作者真没有专业精神啊,搞个这么粗糙的版本,解决方法:
找到mf根目录下的makemakefiles,它是各子目录makefile他妈,修改对应行编译命令加入-lmfcore,如下所示:
cd testSuite && $(MAKEMAKE) -f --deep -o testSuite -O out -I../core/utils -I../core/basicModules -I../contrib/utils -I../core/channelControl -I../core/basicMessages -I../core/blackboard -I../contrib/nic/radios -I../contrib/messages -I../contrib/applLayer -L../out/'$$(CONFIGNAME)'/core -lmfcore -L../out/'$$(CONFIGNAME)'/contrib -lmfcontrib
cd testSuite && $(MAKEMAKE) -f --deep -o testSuite -O out -I../core/basicMessages -I../core/blackboard -I../core/basicModules -I../core/channelControl -I../core/utils -I../contrib/applLayer -I../contrib/messages -I../contrib/utils -I../contrib/nic/macLayer -I../contrib/nic/radios -I../contrib/netwLayer -L../out/'$$(CONFIGNAME)'/contrib -L../out/'$$(CONFIGNAME)'/core -lmfcore –lmfcontrib
重新make all,done!
如果要测试networks下面的实例,则会提示没有scenarios目录,直接新建一个即可。