NS-3的安装及配置

2023-11-06

本教程基于VM_Ware 虚拟机上安装的Ubuntu20.04

一:安装 NS-3 本体

准备:

安装开始之前建议大家更换一下软件源并更新一下库,这样接下来的安装会块很多

由于安装过程中需要用到一些工具,所以提前准备好,已经安装的直接下一步。

sudo apt-get install build-essential
sudo apt-get install python

下载安装包既可以在官网下载也可以用wget获取,这里采用命令行的方式
下载过后编译既可以用build.py脚本,也可以用Waf的方式编译,这里采用第二种种方式

创建新目录用于存放ns3安装包,并进入
mkdir ns3
cd /ns3
直接从网络上下载ns3安装包并保存在当前目录
wget https://www.nsnam.org/release/ns-allinone-3.29.tar.bz2
解压压缩包
sudo tar -jxvf ns-allinone-3.29.tar.bz2
清空以前编译的内容,防止重复编译可能带来的错误
sudo ./waf clean
编译系统检查各种依存关系(以debug模式运行)
sudo ./waf --build-profile=debug --enable-examples --enable-tests configure
编译
sudo ./waf
运行HelloSimulator程序检查编译是否成功
sudo ./waf --run hello-simulator

若出现HelloSimulator则说明编译成功

至此,ns3安装已经完成,可以开始仿真,但没有可视化的效果。下面开始安装NetAnim可视化工具

二:安装NetAnim可视化工具

NetAnim安装包已经随ns3一起下载,只需编译安即可。

安装需要的依赖
# 安装工具
sudo apt-get install qt4-qmake
# 绘图所需
sudo apt-get install libqt4-dev
# netanim需要读取程序生成的xml文件,离线展示动画
sudo apt-get install libxml2-dev
首先cd进入到ns3的netanim-3.xxx文件夹中

以我的为例

cd ns3/ns3/netanim-3.108
然后开始编译
sudo make clean
sudo qmake NetAnim.pro
sudo make
启动

在当前文件夹下运行下面命令,即可启动软件

./NetAnim

三:测试

尝试用NetAnim来展示first.cc的仿真结果

首先在first.cc里面,加上头文件
#include "ns3/netanim-module.h"
run前面加上三句代码
AnimationInterface anim("first.xml");
anim.SetConstantPosition(nodes.Get(0), 1.0, 2.0);
anim.SetConstantPosition(nodes.Get(1), 2.0, 3.0);

Simulator::Run();
Simulator::Destroy();
return 0
在ns3文件夹下重新编译程序
sudo ./waf --run scratch/first
在netanim文件夹下重新启动
./NetAnim
用打开NetAnim打开生成的XML文件
  • 方法:Open->first.xml->Play
  • 即:
    先点击软件左上角文件标志
    然后找到first.xml(我的路径是“/ns3/ns3/ns-3.29/first.xml”)
    打开即可看到动画演示
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NS-3的安装及配置 的相关文章

随机推荐

  • 【读书笔记->统计学】07-03 离散型概率分布-泊松分布概念简介

    泊松分布 假设一个情境 下星期电影院有一个大型促销 影院经理希望一切都完美无缺 爆米花机每一周的平均故障次数为3 4 或者说爆米花机的故障率为3 4 求爆米花机下一周不发生故障的概率有多大 如果预计故障太多次 就打算买个新的爆米花机了 与前
  • 嵌入式系统编程中常用的回调处理

    在嵌入式编程中经常看到形如下图所示的一些函数调用或者函数初始化 这种形式的原理 以及在编程过程中能带来什么好处 可以通过下面这篇文章来简单的解释和说明 函数是C语言的核心概念 主调函数 caller 调用被调函数 callee 是一般的调用
  • 用《文心一言》1分钟写一篇博客简直yyds

    文章目录 前言 文心一言是什么 文心一言可以做什么 文心一言写博客 申请体验 写在最后 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 前言 当今社会 博客已成为了许多
  • Java从List中删除元素的正确用法

    还是先举个例子 你侄女对天文知识感兴趣 然后你就用程序写了太阳系九大星系 水星 金星 地球 火星 木星 土星 天王星 海王星 冥王星 的运行轨迹图 然后拿给侄女看 然后她说错了错了 你的知识太旧了 多了一颗星 根据2006年8月24日国际天
  • 把每八行格式重复的txt文件导入数据库

    记录代码 private static String url unic useUnicode true characterEncoding utf8 public static void main String args throws SQ
  • Java思维编程

    编程思维可以具体分为四个方面 分解 拥有编程思维的人 会把一个复杂的大问题 拆解成更可执行 更好理解的小步骤 复杂问题很难一下子破解 但如果把它细分成很多个小问题 逐步解决 就容易多了 模式识别 什么是模式识别呢 所谓识别模式 其实就意味着
  • JAVA基础之单元测试

    目录 1 单元测试介绍 2 环境搭建 2 1 JUnit 4 2 2 JUnit 5 3 快速上手 3 1 JUnit 4 3 2 JUnit 5 1 单元测试介绍 单元测试就是针对最小的功能单元编写测试代码 Java程序最小的功能单元是方
  • 区块链四:共识机制——PBFT算法深入讲解

    TOC 背景介绍 共识机制是区块链一大知识领域 作用就是维持分布式节点间的一致性 从而支撑去中心化 早在区块链之前 就存在各种分布式的共识机制 共识机制不是因区块链所发明 但区块链却对共识机制推广和进步有着重要影响 共识算法分类 按应用场景
  • Python 超简单实现人类面部情绪的识别

    还记得我们之前写过一篇文章 手把手教你人脸识别自动开机 吗 里面用OpenCV对人脸进行简单的识别 让计算机训练认识到某个特定人物后识别对象 今天来做点高级的 识别出人脸的情绪 本文分为两大部分 1 面部检测 检测图像的脸部位置 输出边界框
  • 《现代控制系统》第五章——反馈控制系统性能分析 5.4 二阶系统里面极点以及零点带来的影响

    上一节图里面描绘的曲线 仅仅是针对阶跃响应为 的系统来说的 但是这给我们提供了一个很好的例子 许多系统拥有成对的主极点 我们可以通过类似上图的关系来估计系统的阶跃响应 这个方法尽管只是一个估算 但却能在避免拉普拉斯转化的情况下提供一个对超调
  • Unity接SDK - 极光推送

    2021 09 09记录 2023发布 如有不对 还请包含 发晚了 如果想看Android原生接入JPush SDK 移步Android原生集成JPush SDK jpush android sdk v4 7 2 极光推送 接入 版本 Un
  • MFC 向指定窗口发送自定义消息

    像MFC的窗口发送消息 可以进行自定义的动作行为 因此很多时候非常有用 1 在MSGDlg h或者其他头文件中增加自定义自定义消息 define WM COUNT MSG WM USER 100 2 在MSGDlg h头文件中添加消息处理函
  • 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)

    本人比较热衷于算法 也可能工作的原因 最近一直在研究算法 现将各种排序算法总结在一起 以便于查阅与使用 也希望能够帮助学习排序算法的朋友 1 冒泡算法 这是最原始 也是众所周知的最慢的算法了 他的名字的由来因为它的工作看来象是冒泡 C C
  • openFeign使用get请求自动变成post请求

    Feign的一次坑 记一次 项目错误 之前项目写的feign是get请求 然后发现 请求不了 然后发现日志 请求自动变成post 网上翻阅资料发现 说使用对象类型会把请求自动变成post 所以我改post请求就可以了 查阅资料 总结 fei
  • pointnet分割自己的点云数据_基于超点图的大规模点云分割

    本期介绍一篇基于大规模点云的语义分割相关论文 Large scale Point Cloud Semantic Segmentation with Superpoint Graphs 本文提出了针对大规模点云的语义分割的框架 有序的点云是可
  • IOS:修改NavigationController的后退按钮标题

    今天遇到一问题 折腾很久总算搞明白了 问题是 controllerA和controllerB 点击controllerA中的某个按钮 将controllerB push出来 controllerB上的返回按钮的title不是我想要的 想改掉
  • Leetcode[数组] 三数之和 -- 双指针法

    0 题目描述 leetcode原题链接 三数之和 1 排序 双指针解法 class Solution def threeSum self nums List int gt List List int n len nums if not nu
  • JVM系列之内存分配与回收策略

    前言 经过前面几篇文章 我们已经对JVM虚拟机有了个初步认识 也了解了各区域应用哪些收集器 以及每个收集器用哪些收集算法 但是在这一系列过程中 其实就是一个对象的由生到死的过程 那么在这过程中对象是怎么处理它的生命周期的呢 今天我们就来介绍
  • Web项目-Nginx项目部署

    一 Linux网络 1 网络服务 查看当前网络的状态 并启动和停止网络服务 查看ip ifconfig ip addr 修改网卡ip vim etc sysconfig network scripts ifcfg ens33 概要信息如下
  • NS-3的安装及配置

    本教程基于VM Ware 虚拟机上安装的Ubuntu20 04 一 安装 NS 3 本体 准备 安装开始之前建议大家更换一下软件源并更新一下库 这样接下来的安装会块很多 由于安装过程中需要用到一些工具 所以提前准备好 已经安装的直接下一步