update: README

This commit is contained in:
SunnyQjm committed 2022-03-24 18:54:23 +08:00
1 parent 83b605840e
commit 4613da0c4a
1 file changed
+15 -154
+15 -154
View File
@@ -1,6 +1,6 @@
## 编译运行
## Compile and Run
1. 首先安装依赖:
1. Prerequisites:
- Ubuntu 20.04:
@@ -9,162 +9,23 @@
sudo pip3 install kiwi
```
2. 首先拉取代码:
2. Pull Code:
```bash
# 首先进入到一个合适的目录用来存放代码
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
git clone https://gitea.qjm253.cn/SunnyQjm/ndnSIM-template.git
git submodule update --init --recursive
```
- 在这边我们拉取了代码两次,分别放到两个不同的文件夹,主要用来存放我们的实验代码和基于PCON做对比实验的代码,拉取结束之后我们的文件目录应该长下面这样:
3. Compile and install
- debug(slow but have log)
```bash
.
├── nwfq-ndnsim
│   ├── README.md
│   ├── ns-3
│   ├── pybindgen
│   └── scenario
└── nwfq-ndnsim-pcon
├── README.md
├── ns-3
├── pybindgen
└── scenario
cd ndnSIM-template/ns3
./waf configure -d debug --enable-examples
sudo ./waf install
```
3. 然后进行分支切换:
```bash
# 把 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
```
可以运行下列命令查看有哪些分支:
```bash
git branch -a
```
输出:
```bash
* 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原本的代码,没有经过任何修改,如果要引入新方案对比,可以基于这个分支开一个新分支进行实验编写。
4. 编译 DSCPP 实验代码,我们进入到 `nwfq-ndnsim/ns-3` 目录下开始编译
```bash
cd ../nwfq-ndnsim/ns-3
# 配置(这边使用 -d debug 编译成debug模式,才有日志输出)
./waf configure -d debug --enable-examples
# 开始编译(要挺久的,够喝杯咖啡了)
./waf
# 编译完成开始安装
sudo ./waf install
```
5. 编译 PCON 对比实验代码,我们进入到 `nwfq-ndnsim-pcon/ns-3` 目录下开始编译
```bash
cd ../../nwfq-ndnsim-pcon/ns-3
# 配置(我们基本不用改pcon的代码,所以这边使用 -d optimized 编译成生产模式, 不需要日志输出)
./waf configure -d optimized --enable-examples
# 开始编译(要挺久的,够喝杯咖啡了)
./waf
# 编译完成开始安装
sudo ./waf install
```
6. 先运行一下简单的PCON的代码,运行之前保证当前处于 `nwfq-ndnsim-pcon/ns-3` 目录下
```bash
# 执行下面这个才能进入到虚拟环境,才可以对实验进行可视化
./waf shell
# 进入到实验场景目录
cd ../scenario
# 如果第一次跑实验,需要跑下面的代码进行配置
./waf configure
# 运行实验 1.1 (--vis 参数表示可视化运行实验,会跳出一个可视化界面,不加的话直接运行实验)
./waf --run=experiment1.1 --vis
# 运行结束之后,输入 ctrl+c 退出虚拟环境(这步一定要做,要不然后面不能正常跑)
```
7. 然后我们来跑一下 DSCPP 的时延代码,我们需要进入到 `nwfq-ndnsim/ns-3` 目录下
```bash
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
```
8. 输出运行日志:
```bash
NS_LOG=ndn-cxx.nfd.DataRateMerger ./waf --run=experiment2
```
- 上面这个代码运行了实验2,并且不带 `--vis` 表示不需要图形化界面;
- NS_LOG = `ndn-cxx.nfd.DataRateMerger` 表示输出 DataRateMerger 这个类里面的输出
- 只要输出一个错误的值,就会告诉你 NS_LOG 可以取那些值
![image-20210722194839783](https://gitee.com/quejianming/pic-bed/raw/master/uPic/2021/07/22/image-20210722194839783-1626954521.png)
- 目前对我们比较有用的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中的速率整型部分的日志输出
- 如果要输出多种类型的日志,用 `:` 拼接就好了
- optimized(fast but have no log)
```bash
NS_LOG=ndn-cxx.nfd.DataRateMerger:ndn.ConsumerNWFQ ./waf --run=experiment2
```
cd ndnSIM-template/ns3
./waf configure -d optimized --enable-examples
sudo ./waf install
```