作者:{SJW}@ArkTeam
Shadow是一个开源的分布式网络节点模拟器,目前Shadow可以提供本地模拟Tor网络或者Bitcoin网络实际运行情况的功能。
一、功能介绍
研究人员使用Shadow可以在本地设备中建立自定义虚拟的网络拓扑结构,在该网络中研究人员可以运行Tor程序或者Bitcoin程序来进行实验,并记录实验数据。
此外,Shadow除了可以模拟网络拓扑结构,还可以对网络延迟,网络包丢失和不同网络上发生的抖动的负面影响进行模拟。Shadow通过下载Tor服务器节点的信息,并将现实中的服务器节点数据导入到模拟器中。Shadow建立的虚拟网络节点就可以根据现实Tor服务器节点信息设置自己的地理位置等其他硬件属性。同时每个节点都会被分配到上下传的带宽,和与其他节点的通信延迟,包丢失率和抖动率。每个节点的信息配置完成后,就可以模拟一个真正的互联网。
最后,Shadow还提供了一组python脚本,这些脚本可以让研究人员方便的生成和修改自己的Tor网络拓扑、节点配置,解析和绘制虚拟网络的通信数据(例如,网络吞吐量,客户端执行的下载统计数据等等)。
二、工具安装
Shadow需要在linux环境下安装和运行,详细安装步骤地址:
https://github.com/shadow/shadow/wiki/1.1-Shadow
同时Shadow还提供了Docker,Vagrant和EC2的镜像环境,方便研究人员使用。
三、Tor实验
1、生成网络拓扑
使用Shadow提供的python脚本,可以生成自定义网络拓扑。
tools/generate.py是生成自定义网络环境的脚本,使用-h参数可以查看该脚本的可以选择的参数
位置参数所需的文件可以用如下命令下载
节点参数配置,可以根据实验要求配置桥接节点数,延迟节点数,客户端节点数,测试的网络传输数据大小等参数
2、demo实验
使用generate.py分别生成50,70,90,100个客户端节点的tor网络,分别运行命令执行这四个网络
Shadow提供了绘制实验结果的脚本文件plot-shadow.py,使用该脚本绘制不同节点数的比较实验结果
下图为部分实验结果:
不同节点数在Tor中单位时间内所有节点吞吐量对比
四、小结
Shadow提供了一个较为真实的模拟环境,可以大大的方便研究人员对Tor和Bitcoin等分布式匿名网络的研究和分析,极大的减少了对实际硬件的需求,降低了实验成本,在引入了实际的节点数据后,可以极大的保证了实验的准确性。
参考资料
https://github.com/shadow/shadow-plugin-tor/wiki
https://github.com/shadow/shadow/wiki
http://www.robgjansen.com/publications/shadow-ndss2012.pdf