概述
1.NS-3简介
NS3是一个离散事件模拟器,旨在满足学术研究和教学的需求。NS3项目是一个始于2006年的开源项目,负责开发ns3软件。 NS-3并不是NS-2的扩展,而是一个全新的模拟器。
2. NS-3开发环境配置
2.1 NS-3 系统环境配置
- 在安装最新版本ns3.36.1之前,确保以下对应版本工具已安装:
预安装 | 版本 |
---|---|
C++ 编译器 | clang++ or g++ (g++ version 8及以上) |
Python | python3 version >=3.6 |
CMake | cmake version >=3.10 |
Build system | make, ninja, xcodebuild (XCode)(跟随系统) |
Git/ tar/bunzip2 | 跟随系统 |
除以上关键组件外,整套可用的ns3依赖很多第三方库,需要根据不同需求进行安装,相关链接可参考https://www.nsnam.org/wiki/Installation ,下面列出相关的依赖组件,方便直接拷贝安装(Ubuntu 18.04 LTS 版本已确认可正常执行)
- 针对Ubuntu 18.04 LTS 版本,可安装以下依赖组件,(后续不特殊指出,Ubuntu18指代Ubuntu18.04 LTS)
sudo apt-get install g++ python3
sudo apt-get install g++ python3 python3-dev pkg-config sqlite3
sudo apt-get install python3-setuptools git
sudo apt-get install qt5-default mercurial
sudo apt-get install gir1.2-goocanvas-2.0 python-gi python-gi-cairo python-pygraphviz python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython ipython3
sudo apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
sudo apt-get install autoconf cvs bzr unrar
sudo apt-get install gdb valgrind
sudo apt-get install uncrustify
sudo apt-get install doxygen graphviz imagemagick
sudo apt-get install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils dvipng latexmk
sudo apt-get install python3-sphinx dia
sudo apt-get install gsl-bin libgsl-dev libgsl23 libgslcblas0
sudo apt-get install tcpdump
sudo apt-get install sqlite sqlite3 libsqlite3-dev
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install cmake libc6-dev libc6-dev-i386 libclang-6.0-dev llvm-6.0-dev automake
sudo apt install python3-pip
sudo pip3 install --upgrade pip python3 -m pip install --user cxxfilt
sudo apt-get install libgtk-3-dev
sudo apt-get install vtun lxc uml-utilities
sudo apt-get install libboost-signals-dev libboost-filesystem-dev
-
注意:由于Ubuntu 18默认GCC 版本为7.4,因此对于Ubuntu18的系统,需要安装g++ 8 版本,安装命令如下:
sudo apt-get update sudo apt-get install gcc-8 sudo apt-get install g++-8
-
安装VSCode,方便后续使用IDE进行开发编译构建:
VSCode是微软开发的开源IDE,详细介绍及使用方法可参考官网:https://code.visualstudio.com/ ,这里给出Ubuntu18环境下安装VSCode的一种方法:sudo snap install --classic code
-
注意:直接通过官网下载软件包进行安装的方式,可能会出现Vscode打开黑屏的问题;
2.2 ns3下载
官网提供了3种ns3的下载方式:
-
方式一:直接下载release版本:可直接到官网点击下载压缩包,或者在终端下通过命令下载并进行解压:
wget https://www.nsnam.org/release/ns-allinone-3.36.1.tar.bz2 tar xjf ns-allinone-3.36.1.tar.bz2
-
方式二:通过Git下载
git clone https://gitlab.com/nsnam/ns-3-allinone.git cd ns-3-allinone python3 download.py -n ns-3.36.1 // 下载指定版本的ns3
-
方式三:使用Bake下载
以上两种方式(源归档或通过Git的ns-3-allinone存储库)可获取最基本的ns3插件库 包括:pybindgen(用于生成Python绑定),netanim(用于网络动画)。如果想获取额外的插件库:irect Code Execution environment、Network Simulation Cradle等,则需要通过Bake方式进行下载。
Bake是为ns-3项目开发的用于从多个存储库进行协调软件构建的工具。Bake可用于获取ns-3软件的开发版本,并下载和构建基本ns-3发行版的扩展,例如Direct Code Execution environment、Network Simulation Cradle、以及各种ns-3“应用程序”。在最近的ns-3版本中,Bake已包含在发布包中。发行版本中包含的配置文件将允许用户下载发布时最新的任何软件。也就是说,例如,随ns-3.30发行版分发的Bake版本可以用于获取该ns-3发行版或更早版本的组件,但不能用于获取更高版本的组件(除非更新了bakeconf.xml包描述文件)。下面给出使用Bake获取版本包的方法:
git clone https://gitlab.com/nsnam/bake.git cd bake ./bake.py configure -e ns-allinone-3.36.1 // 有四种参数可以选择,分别获取包含不同组件的ns3 ./bake.py check // 检查ns3组件依赖环境是否OK,以判断是否可以下载相关组件,当缺少相关组件依赖环境时,则不下载该组件 ./bake.py download
通过Bake下载的源代码放在source目录,如下图所示:
2.3 ns3编译及运行
-
对于通过第一种方式和第二种方式下载的ns3,直接使用如下命令进行编译:
./build.py --enable-examples --enable-tests
-
对于通过Bake方式下载的软件包,编译方式可以使用如下方式:
./bake.py build
-
还可以使用CMake方式进行编译(以前的waf方式)
./ns3 clean ./ns3 configure --build-profile=debug --enable-examples --enable-tests ./ns3 build
-
编译完成后,可执行test.py脚本执行相关测试用例
./test.py --no-build
-
也可以通过执行如下命令,观察ns3是否编译成功,如下图所示
./ns3 run hello-simulator
-
使用IDE VSCode进行编译运行(推荐使用)
-
在命令行输入 code 打开Vscode软件;
-
安装相关插件:包括C/C++ 、CMake Tools、VSCode-icons:
-
通过打开CMake缓存来选择ns3相关特性,并勾选NS3_TESTS 、NS3_EXAMPLES
-
选择CMAKE左侧的列表树中部分项进行编译运行
2.4 5GLTEA 模块安装
NR 模块是 ns-3 的可插拔模块,可用于模拟 5G 新无线电 (NR) 蜂窝网络。该模拟器是 LENA(LTE/EPC 网络模拟器)的演进,它实现 3GPP NR Release-15 一致的基本 PHY-MAC NR 功能。
从3.31版本开始,支持以下特性:
- 非独立架构 (NSA) 架构:5G RAN 和 4G EPC
- 与 ns-3 空间通道和天线阵列模型兼容(基于 3GPP 38.901,能够模拟 0.5-100 GHz 频率范围)
- 时分双工 (TDD) 和频分双工 (FDD) 模式,具有可配置的 TDD 模式
- 通过多个参数集灵活自动配置 NR 帧结构
- 基于时分多址 (TDMA) 和正交频分多址 (OFDMA) 的接入,具有可变传输时间间隔和单波束能力
- 增强的 MAC 层,包括灵活的 MAC 调度程序,可同时考虑时域和频域资源(资源块和 OFDM 符号),用于具有可变 TTI 的 TDMA 和基于 OFDMA 的接入方案
- 具有调度请求和符合 3GPP 的缓冲区状态报告的基于上行链路 (UL) 授权的接入方案
- 符合 NR 的处理延迟和控制时序(N0、N1、N2;K0、K1、K2)
- 带宽部分 (BWP) 管理器和支持通过多个 BWP 和分量载波进行操作的架构
- NR PHY 层抽象,考虑 LDPC 码、MCS 表 1 和 2(最高 256-QAM)、LDPC 基图选择和 NR 块分割
- 帮助人员轻松管理频谱区域配置,以允许多小区配置(简化创建具有不同配置的多个小区的过程)
- 无线电环境地图 (REM) 助手,能够创建下行链路和上行链路 (REM) 地图
- 创建拓扑的助手,例如六边形拓扑助手和网格拓扑助手
- 在协议栈的不同层生成跟踪的各种助手
- 基于几乎空白插槽的干扰管理/协调(包括 ICIC 和陷波)
- 上行功率控制
- 探测参考信号 (SRS) 建模
- 基于 SRS 的信道估计的真实波束成形
2.4.1 5GLTEA 下载
-
使用5GLTEA之前,首先需要下载ns3并进行编译,如2.2、2.3所示,然后使用git下载5GLTEA模块(注意下载路径为contrib目录):
cd contrib git clone https://gitlab.com/cttc-lena/nr.git
-
切换到nr最新分支:
cd nr git branch -r // 查看远程分支并选择想要的分支 git checkout 5g-lena-v2.2.y
-
进行编译
cd ../../ ./ns3 configure --enable-examples --enable-tests ./ns3 build
-
编译完成后执行以下命令进行测试编译是否成功
./ns3 run cttc-nr-mimo-demo
执行成功,如下图所示:
最后
以上就是小巧电灯胆为你收集整理的NS3网络仿真器搭建的全部内容,希望文章能够帮你解决NS3网络仿真器搭建所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复