update: README
This commit is contained in:
1 parent
83b605840e
commit
4613da0c4a
1 file changed
+15
-154
@@ -1,6 +1,6 @@
|
|||||||
## 编译运行
|
## Compile and Run
|
||||||
|
|
||||||
1. 首先安装依赖:
|
1. Prerequisites:
|
||||||
|
|
||||||
- Ubuntu 20.04:
|
- Ubuntu 20.04:
|
||||||
|
|
||||||
@@ -9,162 +9,23 @@
|
|||||||
sudo pip3 install kiwi
|
sudo pip3 install kiwi
|
||||||
```
|
```
|
||||||
|
|
||||||
2. 首先拉取代码:
|
2. Pull Code:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 首先进入到一个合适的目录用来存放代码
|
git clone https://gitea.qjm253.cn/SunnyQjm/ndnSIM-template.git
|
||||||
cd ~/Documents
|
git submodule update --init --recursive
|
||||||
|
|
||||||
# 然后分别拉取两次 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做对比实验的代码,拉取结束之后我们的文件目录应该长下面这样:
|
3. Compile and install
|
||||||
|
- debug(slow but have log)
|
||||||
```bash
|
```bash
|
||||||
.
|
cd ndnSIM-template/ns3
|
||||||
├── nwfq-ndnsim
|
./waf configure -d debug --enable-examples
|
||||||
│ ├── README.md
|
sudo ./waf install
|
||||||
│ ├── ns-3
|
|
||||||
│ ├── pybindgen
|
|
||||||
│ └── scenario
|
|
||||||
└── nwfq-ndnsim-pcon
|
|
||||||
├── README.md
|
|
||||||
├── ns-3
|
|
||||||
├── pybindgen
|
|
||||||
└── scenario
|
|
||||||
```
|
```
|
||||||
|
- optimized(fast but have no log)
|
||||||
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 可以取那些值
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- 目前对我们比较有用的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中的速率整型部分的日志输出
|
|
||||||
|
|
||||||
- 如果要输出多种类型的日志,用 `:` 拼接就好了
|
|
||||||
|
|
||||||
```bash
|
```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
|
||||||
|
```
|
||||||
Reference in new issue
Block a user