命名数据网络作为一种新型网络体系结构,由于目前尚未物理实现,因此相关的论文研究都使用仿真进行实验,常用的仿真方法有两种,第一种就是ndnSIM,这是一个基于NS-3的NDN仿真工具软件,另一种就是数值仿真,基于matlab或其他语言模拟场景进行实验。
ndnSIM的安装可以参考之前的几篇教程和踩坑记录。
安装好之后,我们就可以使用ndnSIM进行仿真了,相关的示例可以访问Examples — ndnSIM documentation获取,由于参考教程非常有限,强烈建议小伙伴们把所有的示例自己手动跑一遍,应该能获得不少启发。
一般来说,ndnSIM的仿真过程主要可以分为三步:
- 第一,建立仿真场景,包括拓扑、应用(名称)的相关配置、路由策略和缓存机制等;
- 第二,设置仿真时间,启动仿真,获取仿真数据;
- 第三,分析数据,将数据绘图,生成实验结果。
其中,前两步是在ndnSIM中完成,最后一步可以使用python或者matlab完成,当然ndnSIM中给出了使用R语言脚本进行分析的示例。
前两步的完成主要依赖自己编写的代码,即自己编写的cpp文件或cc文件。具体的代码存放位置可以参考:ndnSIM 应该在哪里编写脚本 自己编写的文件放在哪运行?_producerhelper.setattribute-CSDN博客
代码中要完成的内容:
1. 构建拓扑结构,使用代码依次创建节点和链接或者直接读取拓扑文件(如果使用拓扑文件请参考)
2. 在所有节点安装NDN栈
3. 配置转发策略
4. 为各个节点安装消费者应用或者生产者应用,用于生产或请求NDN网络中的流量数据
5. 手动或者用 GlobalRoutingHelper 生成FIB表
6. 设置仿真时间
7. 使用 trace helper 等工具获取仿真结果(Obtaining metrics — ndnSIM documentation)
8. 开始仿真,仿真结束后销毁
代码模板
#include "xx.h"
namespace ns3{
int main(int argc, char* argv[])
{
// 设置节点间链接和通道的默认参数
..
//读取可选的命令行参数
..
//创建节点
..
//选择转发策略
..
//安装应用程序(consumer等)
Simulator::Stop(Seconds(20.0)); //设置时间,例如这是设置仿真持续20秒
simulator::run(); //启动仿真
simulator::destroy();
return 0;
}
} // namespace ns3
int
main(int argc, char* argv[])
{
return ns3::main(argc, argv);
}
NDN科研工作者,长期研究,欢迎讨论交流与合作!