ndnSIM安装、源代码结构与修改兴趣包生存周期

这篇笔记是另一篇博客(https://blog.csdn.net/qq_33588730/article/details/80488870)的前置笔记,建议看另一篇博客之前先看一下这篇的基础。希望这篇笔记可以帮助自己快速回忆一些仿真经验,也便于以后的师弟妹还有其他同方向同学快速入门。

安装ndnSIM的方法在官网上(http://ndnsim.net/2.3/getting-started.html):

sudo ./wafinstall为止,是建立了一个叫ndnSIM的文件夹,把ndnSIM的所有模块代码从github下载安装到该文件夹下,而从cd .. 开始(即从ns-3文件夹回到父文件夹ndnSIM)是通过创建一个叫scenario的文件夹(在目录ndnSIM下,与ns-3同级)并经过一些设置,来使自己编写的所有代码都可以直接放在scenario文件夹里面(包括自己定制的转发策略,consumer与producer应用,仿真场景文件,仿真结果数据记录脚本等)。如果不进行后半部分的命令行配置,则以后自己编写的不同类型的代码文件需要放在不同的文件夹里,后面还会提到。

同时,在查找代码文件和函数,修改源代码等方面,开发软件IDE推荐使用CLion,旗舰版在校学生不需要付费,可以通过自己学校的学生邮箱认证,网址为:

https://www.jetbrains.com/student/

它的功能比较强大,在能识别出代码文件的彼此调用继承关系的前提下,可以查找函数的声明定义在哪个文件,某个代码的声明方法在哪些文件中调用过,当前代码文件中有哪些方法函数可以用,都可以很方便查到,便于快速理清楚各个代码文件之间的逻辑关系和作用,如下所示:

(1)调用出当前代码文件包含哪些方法函数的预览:

(2)看到一个函数不认识,或者不知道某个变量是什么类型,ndnSIM的API文档也查不到,如何去找这个函数和变量的定义和声明:

(3)不知道某个文件或者函数在哪里,左侧的工程目录里找不到,可以按两下shift进入全局搜索:

但是在编译运行仿真的时候,依然需要使用命令行,CLion无法识别一些代码调用会乱标红,只能用来看看改改。

1.在安装好ndnSIM之后,安装目录下一些细节的目录及作用:

(1)ns-3,仿真之后产生的txt仿真结果数据文件会在这个目录下。在命令行中通过./waf来编译运行仿真的waf编译工具也在这个文件夹里。

(2)ns-3/src/ndnSIM,这个是真正的ndnSIM源代码目录。

(3)ns-3/src/ndnSIM/apps,这里面放着多种内容请求者(consumer)和内容提供者(producer)的头文件(.hpp,用于声明和其他文件的继承关系和一些虚函数等)和真正的代码文件(.cpp),它们彼此的继承关系是:ndn-consumer-cbr等特定属性和自己定制的内容请求者继承ndn-consumer,自己编写的特定定制的其他producer应该继承ndn-producer,而ndn-consumer与ndn-producer都继承了ndn-app(在各角色应用的.hpp文件开头会提到),如下所示:


所以为什么在另一篇博客(https://blog.csdn.net/qq_33588730/article/details/80488870)的第4点中会说,consumer和producer是一个应用(Application,app),就是这个原因。在不修改仿真路径信息的情况下(除非已经按照官网提示改成了自己创建的scenarios文件夹),自己修改定制的consumer和producer(包括.hpp和.cpp)都应该放在这个文件夹下。

(4)ns-3/src/ndnSIM/examples,这里面存放着很多ndnSIM官网的simulation example源代码,即仿真场景(scenario)文件所在的地方。如果自己编写了定制的仿真场景文件,如另一篇博客(https://blog.csdn.net/qq_33588730/article/details/80488870)的第1和12点所说,也需要放在这个目录下,如下所示:

其中的topologies文件夹是放置拓扑文件(.txt)的地方,如下所示:

在自己的仿真场景文件(在ns-3/src/ndnSIM/examples或/scenario中)里需要靠topologyReader.SetFileName()方法读取所要仿真的网络拓扑时,就输入这个目录,如下所示:

(5)ns-3/src/ndnSIM/NFD/daemon,这个是ndnSIM中集成了NFD模块的地方,主要负责NDN兴趣包和数据包的转发等功能。其中ns-3/src/ndnSIM/NFD/daemon/fw文件夹里面存放着各种转发策略(forwarding strategy),如另一篇博客(https://blog.csdn.net/qq_33588730/article/details/80488870)的第5点所说,如下所示:

如果要编写定制自己的转发策略,那么新的策略文件(包括.hpp和.cpp)要放到这个文件夹下(如果没有修改原有的仿真路径需要如此,官网http://ndnsim.net/2.3/getting-started.html在页面底部最后一张代码图有方法修改,如文章开头所说)。

2.修改兴趣包的生命周期(Interest lifetime):在ns-3/src/ndnSIM/apps下的ndn-consumer.cpp中,有一行是设置兴趣包生存周期属性的,默认的InterestLifetime是2s,如下所示:

所以修改这个属性,可以达到修改例如ndn-consumer-cbr的兴趣包生命周期的效果,因为第1点的(3)说过,后者继承前者。修改之后,可以用 ./waf --run=<需要运行的仿真场景文件名称(无文件后缀)> --vis来启动图形化仿真,点击simulate启动场景运行之后,可以在某个节点上鼠标右键,选择查看PIT条目,可以看到修改过后的兴趣包生存周期,如下所示:


猜你喜欢

转载自blog.csdn.net/qq_33588730/article/details/81061724