如何使用ndnSIM运行自己的仿真实验

基本要点

仿真场景可以在NS-3目录下的scratch/ or src/ndnSIM/examples两个文件夹中编写,或者选择一个独立的库来编写仿真仿真场景。

如果直接在上面编写,有个不好的地方就是编译速度慢和代码可能难以区分是自己写的还是模拟器自带的,所以官网上推荐是使用独立的库来编写自己的仿真场景。

话虽如此,当我使用独立库调用可视化模块的时候既不报错也不显示就有点懵逼了,所以最后我还是将代码放在ndnSIM/ns-3/scratch下了。

具体而言,将自己的文件保存为.cc放入其中即可。

https://ndnsim.net/current/examples.html 官网例子中可以看到如果需要建立一个仿真场景,需要做的事情有主要下面几个:

  1. 设置链路状态(包括链路之间的连接)
  2. 定义拓扑结构
  3. 设置CS
  4. 在节点上安装ndnSIM的网络堆栈
  5. 安装consumer和producer
  6. 设置FIB
  7. 设置前向转发策略
  8. 运行仿真场景

开始动手

设置一个和 教程ndn-grid.cpp一样的例子

10Mbps links/10ms delays
3x3拓扑结构
一个consumer,一个producer
FIB使用GlobalRoutingHelper进行设置
前向转发策略使用bestRoute 运行
./waf configure -d optimized
./waf

BUG记录

记录一下使用第三方库时出现的错误,出现在运行阶段

 File "/ndnSIM/scenario/.waf-2.0.14-a8a9afc5d151494252697f8fa4ba3fbc/waflib/Scripting.py", line 119, in waf_entry_point
run_commands()
File "/ndnSIM/scenario/.waf-2.0.14-a8a9afc5d151494252697f8fa4ba3fbc/waflib/Scripting.py", line 181, in run_commands
run_command('shutdown')
File "/ndnSIM/scenario/.waf-2.0.14-a8a9afc5d151494252697f8fa4ba3fbc/waflib/Scripting.py", line 170, in run_command
ctx.execute()
File "/ndnSIM/scenario/.waf-2.0.14-a8a9afc5d151494252697f8fa4ba3fbc/waflib/Context.py", line 85, in execute
self.recurse([os.path.dirname(g_module.root_path)])
File "/ndnSIM/scenario/.waf-2.0.14-a8a9afc5d151494252697f8fa4ba3fbc/waflib/Context.py", line 126, in recurse
user_function(self)
File "/ndnSIM/scenario/wscript", line 114, in shutdown
return subprocess.call (argv)
File "/usr/lib/python2.7/subprocess.py", line 172, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
raise child_exception

解决方法,修改目录下的wscript下的subprocess.cal中的参数,改为subprocess.call (argv,shell=True)因为默认模式下的subprocess.call不支持使用shell运行命令行。

最新文章

  1. CoreGraphics-基本图形绘制-直线、三角形、矩形、椭圆形、弧形
  2. Markov Random Fields
  3. 译:在ASP.NET MVC5中如何使用Apache log4net 类库来记录日志
  4. SVM+HOG特征训练分类器
  5. Redis介绍及实践分享
  6. Codeforces 452D [模拟][贪心]
  7. Java知识点:Object类
  8. BIEE Setup
  9. Tomcat源码学习记录--web服务器初步认识
  10. ASP.net MVC 多语言处理
  11. thinkphp 中 使用七牛云上传
  12. MFC可执行文件问题
  13. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
  14. php实现‘浏览记录’按日期分组
  15. 初探linux子系统集之写在前言
  16. spring boot Tomcat文件上传找不到零时文件夹
  17. python 获取当前路径
  18. 【BZOJ1818】[CQOI2010]内部白点(树状数组,扫描线)
  19. Linux内核启动流程分析(二)【转】
  20. 性能测试常用的linux命令

热门文章

  1. 使用screen管理后台程序
  2. XSS注入常用语句(整理)
  3. 2019JS必看面试题
  4. java面向对象详细全面介绍
  5. POJ 3549 GSM phone(圆+扫描线+最短路)
  6. git学习指南
  7. activemq热备与消息丢失
  8. struts2_对Map进行双层迭代
  9. java中使用SimpleDateFormat实现字符串和日期的相互转换
  10. LOAD - 装载或重载一个共享库文件