Ubuntu22.04安装ns3全教程并整合ns3-ai

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

构建好了的项目目录结构如下:

2231ef6fef924d55a41f9c48dcb48831.png

 

使用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

 出现如下结果证明已经构建完成:5b0a3f401df8465993092a0a7cb797ba.png

42c91992a2614c359d0c8237e3519bbf.png

对 ns-3模块测试

 完成以下的测试证明ns3就完成安装

cd ns-3.37
./test.py

f85a0f4ddb704be88d2858704d0e0df3.png

 

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

0c86466132714a83a671cf4e562475d8.png

重新构建 ns-3 

./ns3 clean
./ns3 configure --build-profile=optimized --enable-examples --enable-tests
./ns3

f6adae1c81064355accf66785a38c5ab.png

 

添加 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】零基础安装教程

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(1)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年11月2日
下一篇 2023年11月2日

相关推荐