ndnsim2.0学习笔记(一)——关于examples



主要参考ndnSIM的官网文档http://ndnsim.net/2.3/examples.html


一、简单场景


仿真拓扑结构如图:三个节点之间用点对点网络相连,其中一个是ndn生产者,另一个是ndn消费者。

发送者参考应用程序使用ConsumerCbr产生以每秒10个兴趣包的速率发送生产者的兴趣包。

生产者使用Producer类,将用虚拟的有效负载数据满足所有到达的兴趣包

每个节点的转发信息库都使用默认路由填充,并且使用原有ndnsim中的内容存储结构。

// ndn-simple.cpp

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/ndnSIM-module.h"

namespace ns3 {

int
main(int argc, char* argv[])
{
  // 设置点对点连接及信道的默认参数
  Config::SetDefault("ns3::PointToPointNetDevice::DataRate", StringValue("1Mbps"));//设置数据速率
  Config::SetDefault("ns3::PointToPointChannel::Delay", StringValue("10ms"));//设置时延
  Config::SetDefault("ns3::DropTailQueue::MaxPackets", StringValue("20"));//

  // 阅读可选的命令行参数(e.g., 可视化操作 ./waf --run=<> --visualize
  CommandLine cmd;
  cmd.Parse(argc, argv);

  // 创建节点
  NodeContainer nodes;
  nodes.Create(3);

  // 使用两条链路连接节点
  PointToPointHelper p2p;
  p2p.Install(nodes.Get(0), nodes.Get(1));
  p2p.Install(nodes.Get(1), nodes.Get(2));

  // 在所有的节点上安装NDN stack 
  ndn::StackHelper ndnHelper;
  ndnHelper.SetDefaultRoutes(true);
  ndnHelper.InstallAll();

  // 选择转发策略
  ndn::StrategyChoiceHelper::InstallAll("/prefix", "/localhost/nfd/strategy/multicast");

  //安装应用程序

  // Consumer
  ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr");
  // 消费者将请求/前缀/ 0 /前缀/ 1,…
  consumerHelper.SetPrefix("/prefix");
  consumerHelper.SetAttribute("Frequency", StringValue("10")); // 10 interests a second
  consumerHelper.Install(nodes.Get(0));                        // first node

  // Producer
  ndn::AppHelper producerHelper("ns3::ndn::Producer");
  // 生产者将根据开始前缀回复所有的请求
  producerHelper.SetPrefix("/prefix");
  producerHelper.SetAttribute("PayloadSize", StringValue("1024"));
  producerHelper.Install(nodes.Get(2)); // last node

  Simulator::Stop(Seconds(20.0));

  Simulator::Run();
  Simulator::Destroy();

  return 0;
}

} // namespace ns3

int
main(int argc, char* argv[])
{
  return ns3::main(argc, argv);
}

如果该代码被放在scratch/ndn-simple.cpp中,cpp和NS-3是在调试模式下进行编译,您可以使用以下命令(在优化模式没有将打印)运行和看到你的进步的模拟:

NS_LOG=ndn.Consumer:ndn.Producer ./waf --run=ndn-simple

如果没有将代码放到scratch文件夹中,则可以直接./waf

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值