一、VMware安装

VMware虚拟机安装多种多样,可参考下方链接:

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzA4MjU4MTg2Ng==&action=getalbum&album_id=3421466920749137927&scene=21#wechat_redirect

大家根据自身电脑配置情况酌情选择版本,这里不再赘述

二、Ubuntu安装

此文写自2024-11-7,截止目前ns-3官网最高版本是3.43,根据官方安装手册,安装所需依赖版本如下表:

image-20241107192025133

查找资料可得Ubuntu版本和默认gcc/g++版本对应表如下:

Ubuntu版本 对应的默认gcc/g++版本
Ubuntu14及更老 gcc/g++4
Ubuntu16 gcc/g++5.4
Ubuntu18 gcc/g++7.5
Ubuntu20 gcc/g++9.3
Ubuntu22 gcc/g++11.2

所以这里我们选择Ubuntu22.04,选用阿里云的开源镜像,链接如下:

https://mirrors.aliyun.com/ubuntu-releases/22.04/

由于仿真需要图形化界面,选择ubuntu-22.04.5-desktop-amd64直接下载速度较慢,这里使用P2P磁链的下载模式,可以看到下载速度非常快

Snipaste_2024-11-07_19-38-52

下载的同时我们准备VMware的设置,点击新建虚拟机

Snipaste_2024-11-07_19-40-56

Snipaste_2024-11-07_19-43-00

选择自定义,硬件兼容默认。

选择稍后安装操作系统,先装一个空壳,稍后再装系统。

Snipaste_2024-11-07_19-43-10

选择Linux操作系统,Ubuntu64位

Snipaste_2024-11-07_19-44-17

重命名,选择一个合适的放置虚拟机的地方,我的F盘有较大空闲空间,选择放在这里

Snipaste_2024-11-07_19-45-10

接下来选择处理器数量和每个处理器内核数量,一般选择宿主机内核数的一半,保证其他功能的正常使用,我的电脑内核是10,此处设置处理器内核总数为4

image-20241107200019785

设置内存,默认的4G已经足足够用

image-20241107200136056

设置网络类型为NAT,方便我们向它发送安装包

image-20241107200237596

一路next过来,设置Ubuntu建议大小20GB,作为仿真实验用已经绰绰有余

image-20241107200406862

已经创建完成,再核对一下信息,点击完成创建虚拟机

image-20241107200447212

此时刚才的映像已经下载完毕,我们点击编辑虚拟机设置为其装系统,选择刚才下载的ISO文件

image-20241107200540632

image-20241107200616258

image-20241107200655361

点击确定,然后点击开启虚拟机开始装系统,点击这里可以选择适应屏幕

image-20241107200805902

接下来就是按照引导安装系统

选择Install Ubuntu

选择键盘布局English(US)

不需要更多软件,选择Minimal installation

我们是新磁盘,直接Erase disk and install Ubuntu(在实际装机的时候可不要Erase的这么果断。。。)

接下来一路Continue过去即可

设置用户名和密码,注意这里设置完之后要记住用户名和密码,这很重要,以后要用

image-20241107201027886

image-20241107202725298

等待片刻后已经安装完成,会提示移除映像文件,此处移除不移除都可以,想要节省空间的可以移除后将映像文件删除。

三、安装ns3

先换源

sudo apt-get install vim
cd /etc/apt
sudo cp sources.list sources.list.backup 	//备份以前的源
sudo vim sources.list

注释掉以前的语句,将新的源粘贴进去,这里使用清华的镜像

image-20241108001633483

https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

更新软件源并安装一些基础组件

sudo apt-get update 
sudo apt-get upgrade
sudo apt-get install -y net-tools ssh

安装所需环境

sudo apt-get install -y build-essential cmake			//gcc-make
sudo apt-get install -y ccache gdb valgrind
sudo apt-get install -y qtcreator
sudo apt-get install -y python3 python3-pip
sudo apt-get install -y libxmu-dev libxmu-headers	//nam库相关文件

安装python所需依赖

python3 -m pip install --user cppyy==3.1.2
sudo apt-get install gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3

使用ifconfig查看服务器的IP地址

image-20241107234932781

由于是NAT模式,本机应该可以直接ping通虚拟机

ping 192.168.81.131

image-20241108000256637

使用sftp将下载好的ns3压缩包发送到服务器上(将代码里的xxx替换为虚拟机用户名,使用设置的密码登录)

sftp xxx@192.168.81.131
put ns-allinone-3.43.tar.bz2 /home/xxx

image-20241108000857755

上传成功,转回服务器,解压缩

tar -jxvf ns-allinone-3.43.tar.bz2

接下来进行安装

cd ns-allinone-3.43/ns-3.43/
./ns3 configure --enable-examples --enable-tests
./ns3 build

构建时间因CPU内核的数量、CPU和内存的速度以及构建模式而异,如果之前选择的内核数较高,build速度将更快

安装完后会返回一个cmake命令

image-20241108015135635

在结束之后,可以使用单元测试去检查build结果

 ./test.py

全部检查通过

image-20241108020915852