ns-3网络仿真(基础配置)

ns-3网络仿真

    • 源代码的目录结构
    • 编译命令
    • 配置选项

源代码的目录结构

1.examples:ns3自带的示例脚本。除了给出的示例脚本,各个模块自己还带有示例脚本,(src/<模块名>/examples)。

2.build:包含ns3编译后的目标文件以及可执行文件,ns3自带的waf命令知道build目录中包含的各种可执行文件路径,所以./waf --run <脚本文件名> 可以直接执行脚本,而不必执行脚本路径的原因。
以下两条代码效果等同:
./waf --run examples/tutorial/hello-simulator
./waf --run hello-simulator

3.src:ns3各个模块的源代码,子目录名即为模块名,例如:内核模块的源代码目录是src/core,实现TCP/IP的internet模块源代码目录是src/internet。实现LTE协议的lte模块是src/lte。每一个模块目录的结构也基本相同。

bindings: Python绑定
doc: Model library中各个模块的文档产生于此
examples: 示例脚本
helper: 助手类源代码
model: 模块源代码
test: 测试用例源代码

编译命令

ns3-allinone目录下的build.py脚本一般只有首次编译ns3源代码时使用,后续的编译和运行脚本等操作都需要在ns3目录下完成,使用的命令是waf

首次编译完成后,就可以使用waf命令运行脚本,在需要编辑脚本,修改源代码,或设置配置选项,这时就需要对代码尽心重新编译。

对于修改源代码的情况,可以使用./waf --run<脚本名>命令一起进行编译和运行。如果需要修改配置选项,或通过waf命令第一次编译ns3项目,则必须首先调用./waf comfigure对ns3项目进行配置,然后调用waf来编译和运行。

配置选项

1.–enable-examples
编译时包含如下目录中的示例脚本(ns-3.29/examples/ ns-3.29/src/<模块名>/examples)

如果用户要运行ns3自带的示例脚本,就必须再配置时添加上述选项。
例如,hello-simulator脚本源文件在ns-3.29/examples/tutorial目录下,若开启上述选项,则编译完成后waf会在ns-3.29/build目录下会生成一个同名可执行文件。这样就可以直接在运行时使用脚本名(如./waf --run hello-simulator)不用指定脚本原路径。

对于不想在编译时包括如此多的示例脚本(减少编译时间),但又想编译自己的脚本,可以把新脚本放在ns-3.29/scratch目录中,这个目录默认包括在waf编译范围之内,不需要额外的配置支持。
(
//ls scratch 查看scratch中的文件
/first.cc new.cc新脚本(这玩意双竖线高亮 我就只能单竖线一手了)

//./waf 直接编译 不需要额外配置
./waf --run new
)

2.–enable-tests 编译时包含如下目录中的测试脚本(ns-3.29/src/<模块名>/test)
若要用test.py对ns3进行测试,则需在配置时启该选项

3.–build-profile 修改编译模式debug或者optimized
ns3有两种模式 调试(debug)和优化(optimized),默认使用调试模式
更改
./waf clean //切换模式前首先删除前一次编译结果
./waf comfigure --build-profile+optimized

对于用户来说,调试和优化模式最直接的区别在于输出信息的不同,ns3中大量使用的NS_LOG等输出语句只有在调试模式下才有作用。总体来说,调试模式适用于调试脚本或新开发协议时使用,优化模式适用于大量测试时开始,以节省开销。
当前编译模式可以通过./waf --check-profile得到

其次 定义配置选项是ns3编译的必备步骤
build.py内部调用如下waf命令
./waf configure
./waf

./build.py --enable-example 内部调用如下waf命令:
./waf configure --enable-examples
./waf

你可能感兴趣的:(ns-3网络仿真)