ndnSIM 如何打印 运行日志 获取日志 调试 获取实验数据

本文详述了在ndnSIM中获取运行日志的重要性,如用于调试和收集实验数据。介绍了如何在调试模式下打印日志,包括通过设置NS_LOG环境变量或直接在命令行指定。此外,还说明了如何将日志输出到文件,以及如何自定义日志内容。特别提醒,不同版本的ndnSIM中类名可能有所变化。

本篇文章将主要介绍如何获取ndnSIM的运行日志。

日志的用处(为什么要获取运行日志)

1.用于调试, 编写完实验脚本后,即使编译通过,整个实验场景也未必符合实验者的预期,需要查看日志中的细节进行判断。甚至,在实验脚本不能一步到位时,常常需要利用日志输出的信息一点一点修改实验脚本,最终实现符合要求的完美的实验过程。

2.用于获取实验数据,运行日志可以提供在生产者、消费者和NDN路由器上的详细运行数据,例如转发了什么数据,从什么端口发到了什么端口,数据是否来源于缓存,详细的丢包情况及原因等等。这些数据可以在打印出来后生成各种指标作为实验结果进行分析对比。虽然ndnSIM也提供了一些方法获取实验结果(可以参考博客ndnSIM 仿真数据获取 仿真结果 平台内建输出程序 trace helpers 的使用_ndnsim tracer-优快云博客或ndn官网的Obtaining metrics),但这些可能未必是想要的指标。

打印运行日志的前提

如果需要输出运行日志,需要ndnSIM处于调试模式(debug mode),具体的过程可以参考这篇博客完成(ndnSIM 如何进入 调试 模式 开启 debug mode_-debug——mode-优快云博客

由于日志等帮助调试的功能,会增加 overhead。所以测数据时,得把 ns-3以优化模式编译。如果我们希望看到调试日志,就需要以调试模式编译(debug mode)。Examples — ndnSIM documentation

如何打印运行日志

通常在运行ndnSIM仿真时,在终端输入以下命令,终端会立即开始实验并按照代码中规定的时间结束(如果已经编译完成的话),最终终端里仅输出开始与结束的信息(或者以cout方式打印出来的信息)如下所示。

./waf --run ndn-simple
<think>嗯,用户想了解ndnSIM的使用或学习资料,他们提到了教程、学习资料和使用指南。首先,我需要根据用户提供的引用内容来整理相关信息。用户给出的引用1到4提到了几个关键点:ndnSIM是基于NS-3的NDN模拟器,安装步骤,目录结构,以及学习资源稀缺的问题。 首先,用户可能对如何开始学习ndnSIM感到困惑,特别是因为资料较少。根据引用1,推荐的学习教程包括官方文档、示例脚本和社区资源。需要强调这些资源的重要性,并可能建议用户从示例入手。引用2详细描述了项目结构,所以应该解释各个目录的作用,比如examples/里的示例脚本,ndnSIM/中的核心模块,这有助于用户理解项目布局。 然后,安装步骤是关键,用户可能遇到安装问题。引用3和4提到了安装过程,包括git克隆仓库和使用waf构建。需要分步骤说明安装过程,确保用户能正确安装ndnSIM。这里需要注意可能的依赖问题,比如系统环境、Python绑定等,可能需要提醒用户安装前检查依赖。 接下来,用户可能需要知道如何运行第一个示例。引用2中的examples/目录包含示例脚本,可以指导用户运行简单的场景,比如ndn-simple.cpp。此外,可能需要提到修改和调试代码的方法,比如使用NS-3的日志系统。 用户可能还想了解进阶内容,比如自定义场景或与其他工具集成。引用1提到了Docker镜像和论文复现,这些可以作为进阶学习的资源。同时,需要指出常见问题,如编译错误、依赖缺失,并给出解决建议,比如查看issue列表或论坛。 最后,生成相关问题时,要覆盖安装、运行示例、项目结构、调试、自定义应用和社区资源等方面,确保用户能全面了解ndnSIM的使用和学习路径。需要保持回答结构清晰,分步骤说明,并引用提供的资料来增强可信度。</think>### ndnSIM 使用指南与学习资料整理 #### 一、学习资源推荐 1. **官方文档与示例** ndnSIM 的核心学习资料主要集中在 `examples/` 目录下的脚本和 `README.md` 文件[^2][^4]。示例脚本覆盖了基础网络拓扑构建、兴趣包/数据包交互等场景,例如 `ndn-simple.cpp` 展示了简单的生产者-消费者模型。 2. **社区教程与论文复现** - ndnSIM 官方 GitHub Wiki 提供安装指南和基础配置说明[^3] - 研究论文《A Survey of Named Data Networking》中的仿真案例可通过官方示例复现[^1] - 开发者社区(如 GitHub Discussions)中有用户分享的 Docker 镜像和调试技巧 3. **关键目录解析** ```plaintext ndnSIM/ ├── examples/ # 示例脚本(学习起点) ├── ndnSIM/apps/ # 自定义应用程序模板 ├── ndnSIM/model/ # NDN 协议栈核心逻辑 └── ndnSIM/scenarios/ # 预设网络拓扑场景 ``` #### 二、环境搭建步骤 1. **依赖安装** 需提前安装 NS-3 要求的依赖项(Python、gcc、CMake 等),然后执行: ```bash git clone https://github.com/named-data-ndnSIM/ns-3-dev.git ns-3 git clone --recursive https://github.com/named-data-ndnSIM/ndnSIM.git ns-3/src/ndnSIM ``` 2. **编译与验证** ```bash cd ns-3 ./waf configure --enable-examples ./waf build ./waf --run ndn-simple # 测试基础示例 ``` #### 三、核心开发流程 1. **场景构建** 通过 `ndnSIM/scenarios/` 中的拓扑模板(如树形、环形结构)快速搭建网络: ```cpp // 示例:创建节点 NodeContainer nodes; nodes.Create(3); PointToPointHelper p2p; p2p.Install(nodes.Get(0), nodes.Get(1)); ``` 2. **自定义应用开发** 继承 `Application` 类实现兴趣包发送逻辑,参考 `ndnSIM/apps/ndn-consumer.cpp` 的设计模式。 3. **数据收集与分析** 使用 `ndn::L3RateTracer` 跟踪网络流量,输出 CSV 格式日志进行可视化分析。 #### 四、常见问题解决 - **编译失败**:检查 `pybindgen` 版本是否匹配 - **日志调试**:启用 NS-3 的 `NS_LOG` 环境变量输出详细过程 - **性能优化**:调整 CS(内容存储)大小和 FIB 表更新频率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值