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 gitsudo apt install ccachesudo apt install python3-pippython3 -m pip install --user cppyysudo apt install gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3sudo apt install python3-setuptools gitsudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-toolssudo apt install openmpi-bin openmpi-common openmpi-doc libopenmpi-devsudo apt install mercurial unzipsudo apt install gdb valgrind sudo apt install clang-formatsudo apt install doxygen graphviz imagemagicksudo apt install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils dvipng latexmksudo apt install python3-sphinx diasudo apt install gsl-bin libgsl-dev libgslcblas0sudo apt install tcpdumpsudo apt install sqlite sqlite3 libsqlite3-devsudo apt install libxml2 libxml2-devsudo apt install libgtk-3-devsudo apt install vtun lxc uml-utilitiessudo 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)环境。操作如下:
cdmkdir workspacecd workspacegit clone https://gitlab.com/nsnam/ns-3-allinone.gitcd 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/contribgit 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_interfacepip3 install . --user
模块引用:
import py_interfacemempool_key = 1234# memory pool key, arbitrary integer large than 1000mem_size = 4096 # memory pool size in bytesmemblock_key = 2333 # memory block key, need to keep the same in the ns-3 scriptpy_interface.Init(mempool_key, mem_size)# key poolSizev = 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】零基础安装教程