opnet初探以及Packet Switching I实验过程中的若干问题的思考

之前虽然经常听到opnet这个工具,但是得到的多数负面评价,如不稳定,贵,经常出错等。所以也未曾认真对待这个工具。今日出于偶然的一个目的,变打算自己动手接触接触这个传说中的最强大,最放方便的net仿真工具。当然我没有那么多钱去弄个授权版本的,好在opnet有education版本,于是就安装了14.5的education版本。


接触的第一感觉,就是很方便,粗略浏览了一下models,相当的全面,几乎我听到过的model都已经内建了,然后便是安装,安装的过程没出现什么问题

我的环境是:win7 32bit + vs2010,参考网上的经验,拔了网线安装的,顺利通过,安装过程没有出现问题。初次启动后,报告了几个找不到h文件的错误,调整了环境变量后,就搞定了,测试简单的demo,顺利得出结果,于是只能在心里默默点赞了,初次接触顺利!


关于安装总结一下:

1、拔网线安装的原因我猜测,是应为安装的过程中是需要验证 注册用户名和密码的,education版本也需要验证,在没有网络基础上,就绕过去了,我个人猜测是的。

     如果从opnet官方下载安装包,在下载的过程中也是需要验证用户名和密码的,这可也许可以验证次猜测。


2、opnet的安装问题主要在于和vs的开发环境相关联起来,只要养成良好的软件安装习惯,折点问题也不大,出现缺少文件的时候,先搜索是否存在其他的地方,然后把对应的文件的位置加入lib或者include环境变量中,基本能解决。


3、之前流传的关于opent不稳定,难用的说法,我觉得系谣传,也可能与国人多用盗版的软件有关系,opnet的授权费用确实太高,但是我觉得education版本还是不错,应付下研究还是没问题的。


顺利安装好后,网上找到了,陈敏对应的教材,写的很详细,可惜版本旧了,14.5的操作还是稍微不同,但是影响不大,后面才发现,其实陈的书,就是翻译了opnet的帮助文档了,后面才找到自带的tutorial,很是详细,大赞!


由于之前也做过一写关于网络的仿真了,对于仿真的基本原理理解较容易,上手也较快,按照教材的Packet Switching I做实验,从建立model到组网,然后到仿真,走了一个基本的流程,我按照教材的步骤开始了所有的过程,但是最终的结果异常让我费解。


设置好节点反正时间为1000s但是网络仿真到10s的时候一直处于产生数据包,到丢弃数据包的过程,我很是郁闷,仿真时间停在了10s的时间不动了,没有任何error出现,启动odb调试,追踪数据包的的轨迹,发现数据包从src模块产生,然后经过prc模块,到xmt的时候就丢弃了,居然都不发送出去,而且显示 由于 队列空间不足,直接丢弃了,我纳闷了,我按照教材上一样设置的,怎么可能会空间不足呢!


于是我打开 自带的ref例程,一个一个参数的对照,人就没有发现问题,于是我开始将自己建立的模块与教程自带的模块,进行混合组成网络,经过多次的排除和分析(幸亏网络组建不多,否则,排除法几乎要弄疯了),最终定位问题到了,自己建立的node模块上了,一旦我将例程的node模块换成自己的,问题就重现了(当然排除了链路匹配的问题了),于是开始对比自己建立的node模块与官方给的node模块,从代码,到参数配置,全部检查过了依旧无果,我甚至替换了,process进程模块部分的代码了,问题依旧没有解决。


于是开始把注意力转移到console返回的消息,这里提示,说无法识别的分布名称什么的,自动替换成了常数分布,之前应为发现这个并不是按照error来提示的,也没怎么注意,在别无他法的情况下,开始搜索关于 这个分布无法识别的问题,一段检索后,在baisi网上终于找到一个类似的案例,人家回答说”重新加载分布“,可是我从头至尾都没有加载过什么分布了,只是按照教材的代码,启用了一个产生[0,3]的一个均匀分布,这不可能出问题了,在几乎抓狂的情况下,绝望的打开了src模块设定的simple_source进程,异想天开以为是系统代码出了问题,开始搜索与oms_load_dist相关的一切线索,

并最终只找到了一个相似的调用oms_dist_load_from_string (interarrival_str),这个函数是从一个字符串产生一个分布,联想到我的报错内容:


Module (11), (top.pksw.node_0.src)
From procedure: oms_dist_load (dist_name, dist_arg0, dist_arg1)
Unable to load specified distribution "4 (0.00, 0.00)".
Loading a "constant (0.00)" distribution instead.

我只有在对source iterative time这个属性进行操作的时候,才输入过一个4相关的内容

但是我在symbol里面直接输入了4,而对应的value也输入了4,以为编辑器会自动的将4设置为常量,于是就把constant去掉了,谁知道这就是罪魁祸首了!!!!

于是,把这里的value都改为contant对应的形式,也就是图上的形式,在跑,顺利的complete了!!一推汗!!!


最后总结:由于value为4是一个字符串,opnet把这个4识别成了,分布的名称,当然没有这个分布,于是,

opnet自己这么搞定了:“Loading a "constant (0.00)" distribution instead.”,又应为src模块是一个simple_source,所以按照constant(0.00)的频率一直产生数据包,由于cpu的速度异常快,数据包邮校,导致系统压根无法响应其他的Event,队列的缓冲区也瞬间就满了,于是不停的丢弃数据包,不听的产生数据包,导致仿真时间一直停在了10s时间上,而程序的原意,是想让src每隔4个时间产生一个包!!

至于为什么这里会把这个4当成分布的名称呢??我着实没弄明白!!!这只能说明,调试过程中的任何一个蛛丝马迹都可能成为解决问题的关键!!


经过这么一折腾,对opnet也了解了更多!总的来说,opnet是提供了一个良好的工具集合域接口的工具,让我们能够按照自己的想法来构建网络,当然相比于ns2或者ns3,缺乏完全放开的灵活性,但这从一定程度上也是一件好事,这让我们更加容易将注意力花到我们的应用逻辑上,从而提高仿真效率!!


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hainan Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值