af4ecdf552dfa5ebfa7f6b89b523dd3bbd2ddc68
编译运行
-
首先安装依赖:
-
Ubuntu 20.04:
sudo apt install gir1.2-goocanvas-2.0 gir1.2-gtk-3.0 libgirepository1.0-dev python3-dev python3-gi python3-gi-cairo python3-pip python3-pygraphviz python3-pygccxml sudo pip3 install kiwi
-
-
首先拉取代码:
# 首先进入到一个合适的目录用来存放代码 cd ~/Documents # 然后分别拉取两次 nwfq-ndnsim 这个项目代码,放在两个不同的目录 git clone https://gitea.qjm253.cn/SunnyQjm/nwfq-ndnsim.git git clone https://gitea.qjm253.cn/SunnyQjm/nwfq-ndnsim.git nwfq-ndnsim-pcon-
在这边我们拉取了代码两次,分别放到两个不同的文件夹,主要用来存放我们的实验代码和基于PCON做对比实验的代码,拉取结束之后我们的文件目录应该长下面这样:
. ├── nwfq-ndnsim │ ├── README.md │ ├── ns-3 │ ├── pybindgen │ └── scenario └── nwfq-ndnsim-pcon ├── README.md ├── ns-3 ├── pybindgen └── scenario
-
-
然后进行分支切换:
# 把 nwfq-ndnsim 文件夹下的代码切换到 nwfq-with-rate-congestion 分支 cd nwfq-ndnsim git checkout nwfq-with-rate-congestion # 把 nwfq-ndnsim-pcon 文件夹下的代码切换到 pcon 分支 cd ../nwfq-ndnsim-pcon git checkout pcon可以运行下列命令查看有哪些分支:
git branch -a输出:
* master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/nwfq remotes/origin/nwfq-with-rate-congestion remotes/origin/pcon- 可以看到远程有若干个分支,我们只关心两个分支:
nwfq-with-rate-congestion分支存放了我们的DSCPP方案的实验代码;pcon分支存放了我们基于 PCON 做对比实验的代码;master分支存放的是ndnsim原本的代码,没有经过任何修改,如果要引入新方案对比,可以基于这个分支开一个新分支进行实验编写。
- 可以看到远程有若干个分支,我们只关心两个分支:
-
编译 DSCPP 实验代码,我们进入到
nwfq-ndnsim/ns-3目录下开始编译cd ../nwfq-ndnsim/ns-3 # 配置(这边使用 -d debug 编译成debug模式,才有日志输出) ./waf configure -d debug --enable-examples # 开始编译(要挺久的,够喝杯咖啡了) ./waf # 编译完成开始安装 sudo ./waf install -
编译 PCON 对比实验代码,我们进入到
nwfq-ndnsim-pcon/ns-3目录下开始编译cd ../../nwfq-ndnsim-pcon/ns-3 # 配置(我们基本不用改pcon的代码,所以这边使用 -d optimized 编译成生产模式, 不需要日志输出) ./waf configure -d optimized --enable-examples # 开始编译(要挺久的,够喝杯咖啡了) ./waf # 编译完成开始安装 sudo ./waf install -
先运行一下简单的PCON的代码,运行之前保证当前处于
nwfq-ndnsim-pcon/ns-3目录下# 执行下面这个才能进入到虚拟环境,才可以对实验进行可视化 ./waf shell # 进入到实验场景目录 cd ../scenario # 如果第一次跑实验,需要跑下面的代码进行配置 ./waf configure # 运行实验 1.1 (--vis 参数表示可视化运行实验,会跳出一个可视化界面,不加的话直接运行实验) ./waf --run=experiment1.1 --vis # 运行结束之后,输入 ctrl+c 退出虚拟环境(这步一定要做,要不然后面不能正常跑) -
然后我们来跑一下 DSCPP 的时延代码,我们需要进入到
nwfq-ndnsim/ns-3目录下cd ../nwfq-ndnsim/ns-3 # 下面这一步是因为刚才我们跑的 PCON 的实验代码,所以需要执行下面的安装一下 DSCPP 的代码的编译结果 # 每次想要切换运行两份代码的时候就需要到对应代码的 ns-3 文件夹下执行这个安装一下链接库 sudo ./waf install # 执行下面这个才能进入到虚拟环境,才可以对实验进行可视化 ./waf shell # 进入到实验场景目录 cd ../scenario # 如果第一次跑实验,需要跑下面的代码进行配置 ./waf configure # 运行实验 1.1 (--vis 参数表示可视化运行实验,会跳出一个可视化界面,不加的话直接运行实验) ./waf --run=experiment1.1 --vis -
输出运行日志:
NS_LOG=ndn-cxx.nfd.DataRateMerger ./waf --run=experiment2-
上面这个代码运行了实验2,并且不带
--vis表示不需要图形化界面; -
NS_LOG =
ndn-cxx.nfd.DataRateMerger表示输出 DataRateMerger 这个类里面的输出 -
只要输出一个错误的值,就会告诉你 NS_LOG 可以取那些值
-
目前对我们比较有用的LOG有以下几种:
ndn.ConsumerNWFQ=> DSCPP 客户端程序的输出ndn.ConsumerPcon=> PCON 客户端程序的输出ndn-cxx.nfd.GenericLinkService=> NFD 通用链路服务的日志输出ndn-cxx.nfd.DataRateMerger=> DSCPP 转发策略的速率合并模块的日志输出ndn-cxx.nfd.RandomLoadBalancerStrategy=> DSCPP 转发策略的日志输出ndn-cxx.nfd.NWFQ=> DSCPP NFD中的速率整型部分的日志输出
-
如果要输出多种类型的日志,用
:拼接就好了NS_LOG=ndn-cxx.nfd.DataRateMerger:ndn.ConsumerNWFQ ./waf --run=experiment2
-
Languages
Python
59.4%
C++
39.1%
C
0.5%
Perl
0.4%
Shell
0.2%
Other
0.2%
