NS3网络仿真器搭建

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及以上)
Pythonpython3 version >=3.6
CMakecmake version >=3.10
Build systemmake, 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目录,如下图所示:
    图1 Bake下载

    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
    

    执行成功,如下图所示:
    在这里插入图片描述

  • 4
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值