Ubuntu20.04安装NS3的3.36版本(最新版本)
Ubuntu20.04安装NS3的3.36版本(最新版本)
NS3是一个开源的网络模拟器,广泛应用于网络研究和教育领域。它支持各种网络协议和场景的仿真,是学习和研究计算机网络的重要工具。本文将详细介绍如何在Ubuntu 20.04系统上安装NS3 3.36版本,并配置开发环境。
安装步骤目录
- 安装虚拟机
- 配置NS3环境
- 2.1 安装ns3的依赖库
- 2.1.1 自动化安装
- 2.1.2 手动安装
- 2.2 安装ns3_3.36的基础模块
- 2.3 NetAnim安装与启动
- 配置Clion作IDE(Linux)
- 3.1 Toolchains配置
- 3.2 CMake配置
- 配置CLion远端(Windows)
- 4.1 安装依赖库和Git
- 4.2 设置SSH以进行远程开发环境配置
- 4.3 Git管理项目版本控制
1. 安装虚拟机
VMware安装包&Ubuntu的光盘映像文件:
下载链接:下载Ubuntu光盘映像文件&VMware安装包的网盘链接VMware安装
安装链接:VMware安装的CSDN链接Ubuntu安装
安装链接:Ubuntu 安装的CSDN链接
2. 配置NS3环境
2.1 安装ns3的依赖库
2.1.1 自动化安装
可以选择将这些依赖库逐个安装,或者直接使用批处理指令文件.sh来自动化地安装依赖库。注意:先通过vim的插入模式将下面的指令复制到新建的Install.sh文件中,而后运行指令之前先更改此Install.sh的权限,最后运行。
vim Install.sh # 新建
# 将下面的指令复制到新建Install.sh文件中
chmod -x Install.sh # 更改此Install.sh的权限
Install.sh文件
sudo apt-get install -y g++ python3 python3-dev pkg-config sqlite3 cmake
sudo apt-get install -y mercurial
sudo apt-get install -y qt5-default
sudo apt-get install -y autoconf cvs bzr unrar
sudo apt-get install -y gdb valgrind
sudo apt-get install -y gsl-bin libgsl-dev libgslcblas0
sudo apt-get install -y flex bison libfl-dev
sudo apt-get install -y g++-3.4 gcc-3.4
sudo apt-get install -y tcpdump
sudo apt-get install -y sqlite sqlite3 libsqlite3-dev
sudo apt-get install -y libxml2 libxml2-dev
sudo apt-get install -y libgtk2.0-0 libgtk2.0-dev
sudo apt-get install -y libgtk-3-dev
sudo apt-get install -y vtun lxc uml-utilities
sudo apt-get install -y uncrustify
sudo apt-get install -y doxygen graphviz imagemagick
sudo apt-get install -y texlive texlive-extra-utils texlive-latex-extra texlive-font-utils dvipng latexmk
sudo apt-get install -y python3-sphinx dia
sudo apt-get install -y gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3
sudo apt-get install -y libxml2 libxml2-dev libboost-all-dev
sudo apt-get install -y openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
2.1.2 手动安装
(1)安装Python API 用户的最低要求(3.30 版及更高版本,以及 ns-3-dev):这是从已发布的压缩包中使用 Python 绑定所需的最小包集。C++用户的最低要求(3.36 版和开发):对于 ns-3-dev 和 ns-3.36(及更高版本)版本,还需要 CMake。
sudo apt-get install g++ python3 python3-dev pkg-config sqlite3 cmake
(2)安装NS3代码维护使用的源码版本控制管理系统
sudo apt-get install mercurial
(3)Netanim动画师需要qt5开发工具,对于 Ubuntu 20.10 及更早版本,单个 “qt5-default” 包就足够了。
sudo apt-get install qt5-default
(4)运行python绑定ns-3-dev需要bazaar这个组件。(支持bake构建工具)
sudo apt-get install autoconf cvs bzr unrar
(5)安装调试工具
sudo apt-get install gdb valgrind
(6)支持更多精确WIFI模块的GNU Scientific Library (GSL)
sudo apt-get install gsl-bin libgsl-dev libgslcblas0
(7)仿真必需的词法分析器和语法分析生成器,必装
sudo apt-get install flex bison libfl-dev
(8)一些Network Simulation Cradle (nsc) stacks需要gcc-3.4
sudo apt-get install g++-3.4 gcc-3.4
(9)读取pcap的packet traces,即包嗅探器
sudo apt-get install tcpdump
(10)支持统计特性的数据库软件
sudo apt-get install sqlite sqlite3 libsqlite3-dev
(11)xml的配置存储软件(requires libxml2 >= version 2.7)
sudo apt-get install libxml2 libxml2-dev
(12)基于GTK的配置系统
sudo apt-get install libgtk2.0-0 libgtk2.0-dev
sudo apt-get install libgtk-3-dev
(13)在虚拟机and ns-3上测试
sudo apt-get install vtun lxc uml-utilities
(14)支持utils/check-style.py 代码风格检查程序
sudo apt-get install uncrustify
(15)文档生成器,从源代码中生成说明文档
sudo apt-get install doxygen graphviz imagemagick
sudo apt-get install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils dvipng latexmk
(16)The ns-3 manual and tutorial are written in reStructuredText for Sphinx (doc/tutorial, doc/manual, doc/models), and figures typically in dia:
sudo apt-get install python3-sphinx dia
(17)Gustavo’s ns-3-pyviz的可视化软件
sudo apt-get install gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3
(18)支持openflow 模块(requires some boost libraries)
sudo apt-get install libxml2 libxml2-dev libboost-all-dev
(19)支持基于 MPI的分布式仿真
sudo apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
2.2 安装ns3_3.36的基础模块
首先,ns3 在3.36版本取消了waf.py编译器,使用了ns3.py来替代,因此ns3-3.36版本的安装步骤中的一些命令,较之前版本有较大的差异。从官网下载选择ns3-3.36版本进行下载:官方下载地址
mkdir tarballs # 在目录下创建新的文件夹tarballs
cd tarballs # 进入tarballs
# 我们将下载的ns3压缩文件放到tarballs文件夹中,并解压缩
cd ns-allinone-3.36/ns-3.36 # 3.36版本
./ns3 configure --enable-examples --enable-tests # 配置文件
./ns3 build # 编译ns3
./test.py # 测试
现在就说明安装都成功了,并且所有的单元都是完整的!
./ns3 run first # 运行第一个脚本
./ns3 run 'first --PrintHelp'
# 进入超级用户之后无法运行脚本(Refuse to run as root)
2.3 NetAnim安装与启动
返回目录ns-allinone-3.36,进入目录netanim-3.108,执行下列命令编译安装
sudo make clean
sudo qmake NetAnim.pro # NetAnim的编译安装
sudo make
cd ..
cd ./netanim-3.108
sudo ./NetAnim # 启动NetAnim
打开如下仿真界面:
如果拥有jetbrains账号,可以使用Clion(类似于Pycharm)作IDE。如选择使用Clion作为编辑器编写ns3的代码,则直接跳过配置Eclipse作IDE。
3. 配置Clion作IDE(Linux)
在官网下载安装好Clion之后,在左上角打开project,找到目录/home/wqf/tarballs/ns-allinone-3.36下的ns-3.36并打开。按照界面上所示配置如下:
3.1 Toolchains配置
3.2 CMake配置
其中,“CMake options” 栏的配置如下方所示。
-DNS3_EXAMPLES=ON
# 启用ns-3的示例程序。这意味着在编译过程中,ns-3的示例脚本和程序也会被编译,使得用户可以直接运行这些示例来学习和测试ns-3的功能;
-DNS3_TESTS=ON
# 启用ns-3的测试套件。这允许在编译过程中包含并编译ns-3的测试代码,以便在开发或部署前验证ns-3的功能和性能;
-DNS3_WARNINGS_AS_ERRORS=ON
# 将编译器警告视为错误。这有助于确保代码质量,因为任何可能导致警告的代码都会被视为潜在的错误,并阻止编译过程;
-DNS3_NATIVE_OPTIMIZATIONS=OFF
# 禁用针对特定硬件或平台的优化。这通常用于确保代码的可移植性和兼容性,尽管它可能会牺牲一些性能;
-DNS3_PYTHON_BINDINGS=ON
# 启用Python绑定。这允许ns-3的脚本和模块可以通过Python接口进行访问和控制,从而扩展了ns-3的用途和灵活性;
-DNS3_ASSERT=ON
# 启用断言。断言是编程中用于在代码执行期间检查某个条件是否为真的语句。如果条件为假,则程序会抛出一个错误。这有助于在开发过程中捕获潜在的错误和逻辑问题;
-DNS3_LOG=ON
# 启用日志记录。这允许ns-3在运行时生成详细的日志信息,有助于调试和监控ns-3的行为;
与此同时,我们需要设置一下环境变量,否则我们的CMake找不到pybindgen,就会出现问题。我们配置如下:
其中,Name和Value分别如下:
PYTHONPATH
/home/wqf/tarballs/ns-allinone-3.36:/home/wqf/tarballs/ns-allinone-3.36/pybindgen-0.22.1
4. 配置CLion远端(Windows)
在官网下载并安装Clion到Windows系统中。
4.1 安装依赖库和Git
在Linux终端输入以下指令以安装依赖库和Git。
sudo apt install vim # 安装vim环境
sudo apt install openssh-server # 用于远程连接虚拟机
sudo apt install net-tools # 用于查看IP地址
sudo apt install tree # 树形查看文件夹内容
sudo apt install git # 安装git
git --version # 验证Git是否成功安装,并查看其版本号
4.2 设置SSH以进行远程开发环境配置
- 首先查询虚拟机的IP地址,通过ifconfig指令;
- 在Clion(Windows)上设置SSH连接;
最终就可以打开Linux系统下的Project,但是SSH连接时需要保持虚拟机是运行中的状态;
4.3 Git管理项目版本控制
通过Git管理项目版本控制,确保对远端仓库的即时同步与更新;
- 首先在对应的Linux项目的目录下,依次执行:
git init # 初始化仓库
- 配置远端
- 设置上游
在Linux命令行中输入:
git fetch --all
# 从所有远程仓库(通常指你在git remote命令下看到的所有远程仓库)抓取最新的版本信息到本地的远程跟踪分支
git branch -r
# 列出所有远程跟踪分支:wqf/dev-tracer-enhance
git branch --set-upstream-to=wqf/dev-tracer-enhance
# 将本地的master分支设置为跟踪远程仓库wqf下的dev-tracer-enhance分支
- 拉取更新
git checkout master
# 如果未处于master分支时,通过checkout来切换到master分支
git pull
# 默认从你设置的上游分支(即wqf/dev-tracer-enhance)拉取最新的更改,并将它们合并到你的本地master分支中