ns-3 环境配置¶
made by XJTU CS2201(H) 胡博瑄
ns3简介¶
ns-3是一个开源的网络仿真器,用于网络通信系统和协议的建模与仿真。如果你准备参与计算机网络和云计算方面的科研项目,它将是你忠诚而可靠的“另一半”。它被广泛应用于研究、开发和测试各种网络技术和算法。
ns-3被构建为一组相互协作的软件库,用户可以编写C++或Python编程语言的程序,并与这些库进行链接或导入。
本文电脑配置环境与目标版本¶
- 电脑:Macbook Pro(M2)
- 配置环境:Linux虚拟机(Ubuntu 22.04LTS)
- 目标版本:ns-3.37
以下工具是开始使用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发布)
Text Only | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
使用Git安装ns3¶
ps: 要是不熟悉git,说明你的科研经历存在跳步,建议复习基础运维知识
Text Only | |
---|---|
1 2 3 4 5 6 7 8 |
|
进入指定的ns-3-allinone进行后续配置¶
在文件夹ns-3-allinone下对指定的ns3版本进行下载:(看文件配置和我的截图时,记得仔细看配置的路径!)
Text Only | |
---|---|
1 |
|
用CMake包装器进行构建¶
ps:需要注意的是,新版本的ns3(3.36后续版本)已经不再使用waf工具进行项目的构建了
- 紧随上面的内容,进入ns-3.37文件夹:
- 为实现用户界面,这里包含名为ns-3的CMake包装器脚本。(你在这一步啥也不用做,直接看下面就行)
- 为了告诉ns-3进行包含示例和测试的优化构建,执行以下命令:
Text Only | |
---|---|
1 2 |
|
- 现在你可以看到它的反馈,说明构建成功✅
手动进行ns-3模块测试¶
这一步依然是在ns-3.37文件夹下进行
Text Only | |
---|---|
1 |
|
这会经历一个漫长的过程,形如:
最后,看到这样的界面,说明搭建测试成功:
自行检测是否安装成功¶
通常我们==在 ns3 的控制下运行脚本==。这样可以确保构建系统正确设置了共享库路径,并且在运行时库是可用的。
要运行一个程序,只需在 ns3 中使用 --run
选项。我们来运行 ns-3 中类似于传统的 "Hello World" 程序,输入以下命令:
Bash | |
---|---|
1 |
|
ns3 会首先检查程序是否已正确构建,如果需要的话会执行构建。然后,ns3 执行该程序,产生以下输出:
Bash | |
---|---|
1 2 |
|
ps:如果你没有看到输出怎么办?
如果你看到 ns3 的消息表明构建成功,但是没有看到 "Hello Simulator" 的输出,很可能是你已经在 "Building with the ns3 CMake wrapper" 部分将构建模式切换为了优化模式,但是忘记了切回调试模式。在本教程中使用了一个特殊的 ns-3 日志组件来打印用户消息到控制台。在编译优化代码时,此组件的输出会自动禁用,即被“优化掉”。如果你没有看到 "Hello Simulator" 输出,请输入以下命令:
Bash | |
---|---|
1 |
|
这告诉 ns3 构建调试版本的 ns-3 程序,包括示例和测试。
然后,你仍然需要构建实际的调试版本代码,输入以下命令:
Bash | |
---|---|
1 |
|
这会经历一个漫长的过程,直到全部搭建完成:
现在,如果运行 hello-simulator
程序,你应该能看到预期的输出:
结语¶
- 恭喜你,到了这里你就已经配置成功了!
- 不要忘了本文的配置顺序是渐进的,如果你留心的话会发现:./test.py之后跳出的部分显示之前配置的是优化模式;而后续./ns3 configure --build-profile=debug --enable-examples --enable-tests对应配置的是调试模式。在我们的日常科研中用到的基本是调试模式!