要重现 MQ-ECN论文的仿真结果(图9-13),您需要以下软件: - 网络仿真器(NS)2.35 - mqecn.patch (修改TCP&添加ECMP) - MQ -ECN代码(实现具有不同ECN标记方案的DWRR和WRR) - 仿真脚本(并行运行仿真并解析结果)
下载网络模拟器(NS)2.35 并解压缩。
$ tar -zxvf ns-allinone-2.35.tar.gz
将 mqecn.patch 复制到 top ns-2.35文件夹(ns-allinone-2.35)并应用修补程序。然后安装NS2。
ns-allinone-2.35
$ cd ns-allinone-2.35 $ patch -p1 --ignore-whitespace -i mqecn.patch $ ./install
复制文件 MQ-ECN代码至ns-allinone-2.35/ns-2.35/queue/
ns-allinone-2.35/ns-2.35/queue/
将queue/wrr.o queue/dwrr.o添加至ns-allinone-2.35/ns-2.35/Makefile
queue/wrr.o queue/dwrr.o
ns-allinone-2.35/ns-2.35/Makefile
在/ns-allinone-2.35/ns-2.35
/ns-allinone-2.35/ns-2.35
make
在运行大规模模拟之前,您可以运行几个小规模模拟来了解MQ-ECN的基本属性。用于基本模拟的脚本是 test-wrr.tcl , test-wrr-2.tcl , test-dwrr.tcl 和 test-dwrr-2.tcl 。基本仿真脚本将生成三个文件:throughput.tr,qlenfile.tr和tot_qlenfile.tr。
throughput.tr
qlenfile.tr
tot_qlenfile.tr
throughput.tr提供不同服务的总体产出。它具有以下格式:
Time, Goodput of Service 1, ..., Goodput of Service N
qlenfile.tr给出了不同服务队列的队列长度(以字节为单位)。它具有以下格式:
Time, Queue Length of Service Queue 1, ..., Queue Length of Service N
tot_qlenfile.tr给出了拥塞交换机端口的总队列长度(以字节为单位)。它具有以下格式:
Time, Queue Length of Switch Port
最初,我们简要介绍脚本目录中每个文件的用法。 - CDF_cache.tcl , CDF_dctcp.tcl , CDF_hadoop.tcl 和 CDF_vl2.tcl 给出了本文中使用的流大小分布。
spine_empirical_diffserv.tcl 和[tcp-common-opt-raw.tcl](https://github.com/HKUST-SING/MQ-ECN-NS2/blob/master/scripts/tcp-common-opt-raw .tcl)是NS2 TCL仿真脚本。
run_simulation_diffserv.py 用于并行运行NS2仿真。
result.py 用于解析最终结果。
因此,要并行运行模拟:
python run_simulation_diffserv.py
在 run_simulation_diffserv.py 中配置了许多参数。请注意,您需要相应地修改ns_path和sim_script。默认情况下,它并行运行20x模拟,并使用标准阈值,每队列ECN和最小阈值以及MQ-ECN迭代每队列ECN。对于每个模拟,它将创建一个具有以下名称的目录:
ns_path
sim_script
diffserv_[scheduler]_[transport]_scheme_[ECN scheme]_load_[network load]_service_[number of queues]
每个目录由两个文件组成:flow.tr和logFile.tr。 flow.tr使用以下格式提供流完成时间结果:
flow.tr
logFile.tr
number of packets, flow completion time, number of timeouts, src ID, dst ID, service (queue) ID
您可以使用 result.py 解析flow.tr文件,如下所示:
$ python result.py -a -i [directory_path]/flow.tr
如果您对MQ-ECN仿真代码有任何疑问,请联系 Wei Bai 。
感谢 Mohammad Alizadeh 分享pFabric模拟代码和DCTCP补丁。