ns3介绍
ns-3是一个开源的网络仿真器,用于网络通信系统和协议的建模与仿真。它被广泛应用于研究、开发和测试各种网络技术和算法。ns-3被构建为一组相互协作的软件库,用户可以编写C++或Python编程语言的程序,并与这些库进行链接或导入。
ns3安装及配置
ns3的安装依赖
ns-3的整个可用库集合依赖于第三方库,但大多数ns-3库可以构建并使用一些常见的(通常默认安装的)组件:C++编译器,Python安装,源代码编辑器(例如vim,emacs或Eclipse),以及如果使用开发版本库,则需要Git源代码控制系统的安装。https://www.nsnam.org/docs/installation/html/index.html
截至最新的ns-3发布版本(ns-3.39),以下工具是开始使用ns-3所需的:
软件包/版本
C++编译器 clang++或(g++版本9或更高)g++
Python python3版本>=3.6
CMake cmake版本>=3.10 构建系统 make
ninja(XCode)或xcodebuild
Git 任何最新版本(用于从GitLab.com访问ns-3)
tar 任何最新版本(用于解压ns-3发布)
bunzip2 任何最新版本(用于解压缩ns-3发布)
安装脚本附上(一路 -y运行就可以):
sudo apt install g++ python3 cmake ninja-build git
sudo apt install ccache
sudo apt install python3-pip
python3 -m pip install --user cppyy
sudo apt install gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3
sudo apt install python3-setuptools git
sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
sudo apt install openmpi-bin openmpi-common openmpi-doc libopenmpi-dev
sudo apt install mercurial unzip
sudo apt install gdb valgrind
sudo apt install clang-format
sudo apt install doxygen graphviz imagemagick
sudo apt install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils dvipng latexmk
sudo apt install python3-sphinx dia
sudo apt install gsl-bin libgsl-dev libgslcblas0
sudo apt install tcpdump
sudo apt install sqlite sqlite3 libsqlite3-dev
sudo apt install libxml2 libxml2-dev
sudo apt install libgtk-3-dev
sudo apt install vtun lxc uml-utilities
sudo apt install libxml2 libxml2-dev libboost-all-dev
使用Git安装ns3
使用Git下载ns-3 ns-3的代码可以在GitLab.com服务的Git存储库中找到
https://gitlab.com/nsnam/
使用Git存储库开始的最简单方法是分叉(fork)或克隆(clone)环境。操作如下:
cd
mkdir workspace
cd workspace
git clone https://gitlab.com/nsnam/ns-3-allinone.git
cd ns-3-allinone
之后在文件夹ns-3-allinone下对指定的ns3版本进行下载:
python3 download.py -n ns-3.37
构建好了的项目目录结构如下:
使用CMake包装器进行构建
ns3的构建具有多种方式,可以使用了build.py脚本或bake工具来开始构建ns-3。这些工具对于构建ns-3和支持库非常有用,它们会调用ns-3目录中的CMake构建工具来执行实际的构建操作。
我们现在使用CMake包装器进行ns3的构建
(需要注意的是,新版本的ns3已经不再使用waf工具进行项目的构建了)
为了保持对命令行用户的类似界面,我们包含了一个名为ns-3的CMake包装器脚本。为了告诉ns-3进行包含示例和测试的优化构建,执行以下命令:
./ns3 clean
./ns3 configure --build-profile=optimized --enable-examples --enable-tests
出现如下结果证明已经构建完成:
对 ns-3模块测试
完成以下的测试证明ns3就完成安装
cd ns-3.37
./test.py
ns3-ai介绍
ns3-ai是一个开源扩展模块,该模块将ns-3网络模拟器与多个基于Python的人工智能框架(例如TensorFlow和PyTorch)连接起来,以提供高效、高速的数据交换。
ns3-ai模块使用共享内存实现进程间通信(IPC),在一个基准实例上,IPC的传输速度比ns3-gym快100倍。
ns3-ai提供了Python和C++两种高级接口,使用户可以更容易地适应不同的需求。它的设计旨在改进ns-3与不同AI框架之间的抽象,促进人工智能算法在网络研究中的性能评估。通过ns3-ai,用户可以在ns-3网络模拟器中运行和测试人工智能算法,这有助于实现对大量数据的需求,同时为网络中人工智能算法的发展提供高效的工具。该扩展模块可以极大地减少开发工作量,提升计算机网络研究中人工智能算法的性能评估。此外,ns3-ai模块对于网络中AI算法的发展和测试具有重要意义,并为开发人员提供了一个友好且方便的研究工具。
ns3-ai安装
首先要获取 ns-3:
此模块需要在 ns-3 中构建,因此您需要先获取 ns-3-dev 或其他 ns-3 代码。还没获取ns3的可以参考本文上面的构建安装方法,这里不再赘述。
使用Git下载ns3-ai的包
cd $YOUR_NS3_CODE/contrib
git clone https://github.com/hust-diangroup/ns3-ai.git
重新构建 ns-3
./ns3 clean
./ns3 configure --build-profile=optimized --enable-examples --enable-tests
./ns3
添加 Python 接口(在Python里面引用)
使用和测试了Python3。
cd $YOUR_NS3_CODE/contrib/ns3-ai/py_interface
pip3 install . --user
模块引用:
import py_interface
mempool_key = 1234 # memory pool key, arbitrary integer large than 1000
mem_size = 4096 # memory pool size in bytes
memblock_key = 2333 # memory block key, need to keep the same in the ns-3 script
py_interface.Init(mempool_key, mem_size) # key poolSize
v = ShmBigVar(memblock_key, c_int*10)
with v as o:
for i in range(10):
o[i] = c_int(i)
print(*o)
py_interface.FreeMemory()
ns3安装文档官网
ns3-ai仓库及使用说明
ns3-ai:用于网络研究的NS3人工智能算法接口
【ns-3】零基础安装教程
文章出处登录后可见!