【OMNet++】OMNet++初学-进阶-精进历程分享

OMNeT进入国内时间并不长,国内专业和流派大多一直停留在OPNeT、NS等传统的仿真软件上。相比“古老的软件”,业界新生代“OMNeT”的使用简单,界面交互良好,被越来越多“不知深浅”的导师推荐。国内的大部分学习者主要集中在大四毕业生、研究生、少量博士生以及屈指可数的业界良心老师。笔者熟知的一些公司和研究所对网络仿真的需求与日剧增,结合一些实际的项目,去学习和开发OMNeT不失为一种好的方法。这里笔者想着重分享一下学习软件的心得,如果不去看代码和实际操作软件,那么学习的效果会大打折扣。如果计划学完C++再去学习OMNeT,那学习该软件的机会越来越少。

OMNeT的入门门槛不低,首先要具有扎实的c++基础和软件基础,其次一定的网络知识和架构意识,再者熟悉OMNeT的运行原理,加以OMNeT的开源库的阅读和练习,方可对OMNeT所知一二。 刚开始学习OMNeT,安装软件以及库文件,开源库有INET、MIXIM等可以帮助大家更好的去理解一些通信协议。

1.学习论坛

  • 利用互联网,挖掘现有的学习资料。
  • 希望你在互联网的时代能遇见你的恩师和挚友。养成良好的做笔记的习惯,以不畏艰难的勇气去客服学习过程中的问题,天道酬勤,量变引起质变。

2.软件安装

  • 在这两年的风雨陪伴中,OMNeT的安装令人头痛不已,主要存在以下几种问题。window下安装的软件报错:g++以及gcc找不到路径;官网下载的inet编译失败;缺少虚拟机环境;如何导入inet开源库文件;高版本的OMNeT能否兼容低版本的开源库;MIXIM库为什么不能使用等等,笔者关于这些问题已经在不同的论坛和平台有过解释和说明。
  • 对于刚入门的同学,我直接给终极建议:安装Linux版本的软件来使用学习,以此避免日后的走火入魔。

3.初学入门

  • 任何软件的学习都讲究循序渐进,window下的软件是基于eclipse框架实现,关于如何设置字体大小,代码折叠,显示行号,显示编译进度,显示所有快捷键等设置,大家都可以参考eclipse软件的使用。
  • tictoc作为OMNET最基本的入门项目,初学者可以把它当作入门的敲门砖。16个例子,层层递进。如何创建模块,如何初始化ned中的参数,如何为模块创建驱动程序,如何统计基本的通信参数,如何创建复合模块,如何为消息定时,这些基本的要点,该项目基本涵括,是小白入门的首选。随着学习的深入,每次复习你都会有新的收获。(工作繁忙,待续)
  • ALOHA示例可以作为进阶学习的阶梯之一,从该示例中,可以学会基本的统计方法,如端到端时延在代码中如何统计,有线组网和无线组网基本函数如何使用。
  • 如果上述两个小模块大家弄明白了,那么恭喜你接近入门了。我理想的时间点是两到三个月,其中包括你学习C++基本概念的时间。接下来的开源库可以让你更加深切地了解这款软件。OMNET的开源库比较多,但大部分人只会接触INET和SUMO这两款。前者是你可以理解各种协议仿真库,后者用于车载网络的仿真。

4.进阶:开源库INET

  • 这是众多研究生的课题学习的重要平台。此库包含了众多开源的无线协议和有线协议,是基于TCP/IP模型建立起来的仿真平台。这里要说明一点,很多人对INET感到恐惧,一方面是其框架比较繁琐复杂,另一个原因是对linux下的协议簇了解甚少。
  • 很多研究生的研究方向是移动自组织网络,涉及的无线协议有AODV、DSR、DSDV和OLSR等协议,该平台都有具体的代码和网络平台。另外,支持一般的移动模型,如直线,圆形,矩形等。该开源库的学习难点在于示例众多,节点TCP/IP模块化,彼此依赖。初学者很难找到最基本模块的代码,不知如何去调试。

5.精进:底层机制

  • 我了解众多同学还未走到这一步,就已经毕业远走高飞了,但不妨碍我来分享。这一阶段是你探索美国人如何构建这款软件底层运行原理。首先要有一些LINUX编译原理的基本知识,MAKE的目的是什么,MAKEFILE文件里写了什么,众多的.c生成的文件如何生成了可执行文件。三维仿真场景如何搭建。(工作繁忙,待续)

2018年春 于南京雨花台

你可能感兴趣的:(omnet++)