尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

NS-3网络模拟器在Ubuntu下的安装与配置指南

NS-3网络模拟器在Ubuntu下的安装与配置指南
📅 发布时间:2026/7/23 7:10:55

1. NS-3与Ubuntu环境概述

NS-3作为离散事件网络模拟器,在学术研究和工业原型开发中具有不可替代的价值。与NS-2相比,NS-3采用C++/Python双语言架构,模块化设计更符合现代软件开发理念。选择Ubuntu作为运行平台主要基于三点考量:一是官方对Linux系统的原生支持,二是apt包管理器的依赖解决能力,三是开发社区的资源丰富度。

在硬件准备方面,建议配置不低于4核CPU/8GB内存的x86_64架构机器。实测显示,完整编译NS-3需要约60分钟(i7-11800H处理器),内存低于4GB可能导致编译失败。对于笔记本用户,需要特别注意散热问题——长时间高负载编译可能触发温度保护。

2. 系统环境准备

2.1 Ubuntu基础配置

首先更新软件源并升级现有包:

sudo apt update && sudo apt upgrade -y

推荐使用国内镜像源加速下载。编辑源列表文件:

sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

对于Ubuntu 24.04用户,需要额外处理安全更新源:

sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

2.2 开发工具链安装

安装编译必需工具:

sudo apt install -y build-essential cmake git python3

验证g++版本(要求≥9.0):

g++ --version | head -n1

3. 依赖库安装

NS-3的依赖可分为核心编译依赖和可选功能依赖两类。建议执行完整安装以启用所有功能:

sudo apt install -y \ gir1.2-goocanvas-2.0 gir1.2-gtk-3.0 \ python3-gi python3-gi-cairo python3-sphinx \ tcpdump wireshark sqlite3 libsqlite3-dev \ qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \ openmpi-bin doxygen graphviz imagemagick \ texlive-latex-extra texlive-font-utils \ libeigen3-dev gsl-bin libgsl-dev libgslcblas0 \ libxml2 libxml2-dev libgtk-3-dev \ lxc-utils bridge-utils libboost-all-dev \ ccache libalgorithm-merge-perl

注意:安装过程中可能出现qtchooser的配置冲突,选择默认qmake版本即可(通常为/usr/lib/x86_64-linux-gnu/qt5/bin/qmake)

4. NS-3源码获取与编译

4.1 下载源码包

推荐使用官方稳定版本(当前最新为3.43):

wget https://www.nsnam.org/releases/ns-allinone-3.43.tar.bz2 tar -jxvf ns-allinone-3.43.tar.bz2 cd ns-allinone-3.43

4.2 编译配置

使用build.py脚本进行智能编译:

./build.py --enable-examples --enable-tests

关键参数说明:

  • --enable-examples:编译所有示例程序
  • --enable-tests:启用测试套件
  • -jN:指定并行编译线程数(建议为CPU核心数+1)

4.3 编译过程监控

编译过程中可通过以下命令监控资源使用:

watch -n 1 'ps -aux | grep -E "gcc|g++" | grep -v grep'

典型编译时间参考:

  • 4核8G:约60分钟
  • 8核16G:约35分钟
  • 编译日志保存在ns-3.43/cmake-cache/CMakeFiles/CMakeOutput.log

5. 验证安装

5.1 基础测试

运行内置示例验证安装:

cd ns-3.43 ./ns3 run first

预期输出应包含类似信息:

At time +2s client sent 1024 bytes to 10.1.1.2 port 9 At time +2.00369s server received 1024 bytes from 10.1.1.1 port 49153

5.2 可视化工具配置

安装NetAnim可视化工具依赖:

sudo apt install -y gnuplot-x11 qt5-qmake cd ../netanim-3.109 qmake NetAnim.pro make

启动可视化界面:

./NetAnim

6. 常见问题解决

6.1 编译失败处理

若出现Python模块缺失错误:

pip3 install --user pybindgen

遇到链接错误时清理缓存:

cd ns-3.43 ./ns3 clean

6.2 图形界面问题

解决Qt显示异常:

export QT_DEBUG_PLUGINS=1 ./NetAnim 2>&1 | grep -i "plugin"

6.3 性能优化

启用ccache加速后续编译:

export CCACHE_DIR="/tmp/ccache" export CC="ccache gcc" export CXX="ccache g++"

设置缓存大小(推荐4GB):

ccache -M 4G

7. 开发环境集成

7.1 VSCode配置

安装C++扩展后,配置includePath:

{ "configurations": [ { "includePath": [ "${workspaceFolder}/ns-3.43/build/**", "${workspaceFolder}/ns-3.43/src/**" ] } ] }

7.2 调试技巧

使用gdb调试示例程序:

./ns3 build --task=debug gdb --args ./ns3 run first

设置断点示例:

(gdb) breakpoint src/internet/model/ipv4-end-point.cc:120

8. 进阶配置

8.1 多版本管理

通过符号链接实现版本切换:

ln -s ns-allinone-3.43/ns-3.43 ~/ns3-current

8.2 自定义模块开发

创建新模块模板:

./ns3 create-module MyNewModule

模块目录结构示例:

src/ └── my-new-module/ ├── model/ # 核心实现 ├── helper/ # 辅助类 ├── test/ # 测试用例 └── wscript # 构建配置

9. 性能调优建议

  1. 启用LTO优化(需GCC≥9.0):
CXXFLAGS="-flto -O3" ./ns3 configure
  1. 使用gold链接器加速:
sudo apt install -y binutils-gold export LD=ld.gold
  1. 内存不足时启用交换分区:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

10. 实际应用案例

10.1 无线网络仿真

典型WIFI仿真脚本结构:

# wifi-example.py from ns import ns nodes = ns.NodeContainer() nodes.Create(2) wifiHelper = ns.WifiHelper() wifiMacHelper = ns.WifiMacHelper() wifiPhyHelper = ns.WifiPhyHelper() devices = wifiHelper.Install(wifiPhyHelper, wifiMacHelper, nodes)

10.2 5G NR仿真

添加5G模块支持:

git clone https://gitlab.com/nsnam/ns-3-dev.git cd ns-3-dev ./ns3 configure --enable-modules=nr

相关新闻

  • 2026 年 7 月新发布:重庆口碑好的钢制闸门供应商推荐,别再用旧锁了!这套钢制闸门如何颠覆你的安全观?-旺泰铸铁闸门 - 实业推荐官【官方】
  • 多场景电磁干扰排查方案,鼎讯信通 DXL-400E 适配野外与室内运维
  • C++图像旋转实战:CImage类轻量级方案与OpenCV对比

最新新闻

  • 黔东除甲醛公司收费大公开:金耀环境与连锁品牌性价比实测 - CMA甲醛检测中心
  • AI Agent核心原理技术笔记(LLM+上下文+工具体系)(AI Agent学习基础)(李博杰《深入理解 AI Agent》1.1观后总结)
  • 加班被丈夫赶出家门,HR 辞退我,只因分不清 LambdaQueryWrapper 和 BaseMapper
  • 其实我们的知识竞赛也能做出电视节目的质感
  • 医疗医患纠纷场景评测|魔珐星云职场法务数字人线下咨询实测
  • 便携式ORP分析仪的产品功能分析

日新闻

  • 亨得利盐城维修点在哪里?手表维修保养地址指南**公示(2026年7月最新) - 亨得利官方
  • 提升.NET API安全性:Boxed.AspNetCore.Swagger认证授权最佳实践
  • 帝舵佛山**网点地址更新:2026年7月售后热线电话与服务客户指南 - 帝舵中国官方服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号