2021-10-14 10:07:34 +08:00
2021-07-28 09:40:44 +08:00
2021-10-14 10:07:34 +08:00
2021-07-22 20:01:36 +08:00

编译运行

  1. 首先安装依赖:

    • 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
      
  2. 首先拉取代码:

    # 首先进入到一个合适的目录用来存放代码
    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
      
  3. 然后进行分支切换:

    # 把 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原本的代码,没有经过任何修改,如果要引入新方案对比,可以基于这个分支开一个新分支进行实验编写。
  4. 编译 DSCPP 实验代码,我们进入到 nwfq-ndnsim/ns-3 目录下开始编译

    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 目录下开始编译

    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 目录下

    # 执行下面这个才能进入到虚拟环境,才可以对实验进行可视化
    ./waf shell
    
    # 进入到实验场景目录
    cd ../scenario
    
    # 如果第一次跑实验,需要跑下面的代码进行配置
    ./waf configure 
    
    # 运行实验 1.1 (--vis 参数表示可视化运行实验,会跳出一个可视化界面,不加的话直接运行实验)
    ./waf --run=experiment1.1 --vis
    
    # 运行结束之后,输入 ctrl+c 退出虚拟环境(这步一定要做,要不然后面不能正常跑)
    
  7. 然后我们来跑一下 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
    
  8. 输出运行日志:

    NS_LOG=ndn-cxx.nfd.DataRateMerger ./waf --run=experiment2
    
    • 上面这个代码运行了实验2,并且不带 --vis 表示不需要图形化界面;

    • NS_LOG = ndn-cxx.nfd.DataRateMerger 表示输出 DataRateMerger 这个类里面的输出

    • 只要输出一个错误的值,就会告诉你 NS_LOG 可以取那些值

      image-20210722194839783

    • 目前对我们比较有用的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
      
S
Description
No description provided
Readme
30 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 59.4%
C++ 39.1%
C 0.5%
Perl 0.4%
Shell 0.2%
Other 0.2%