Frequently Asked Questions
I'd like to report a bug or ask a question. Who should I contact?
Please report any questions, comments, suggestions, or bugs to Kevin Bauer.
How is ExperimenTor different from other approaches to conducting Tor research, such as PlanetLab, Emulab, or running experiments on the live Tor network?
PlanetLab is a distributed testbed consisting of thousands of hosts operated primarily by academic institutions around the world. PlanetLab users can run their code on these hosts and conduct relatively large-scale experiments. Several research groups have used PlanetLab for Tor research by either running code on a set of PlanetLab hosts that participate in the live Tor network, or by deploying a private Tor network entirely on PlanetLab. While PlanetLab can be very useful for experimentation with Tor, the experimenter has no control over the underlying network topology, delays, bandwidths, or other properties of the hosts. Consequently, experimental results obtained with PlanetLab may not necessarily be reproducible.
Furthermore, as PlanetLab is a shared resource, an experimenter may notice that PlanetLab hosts' network characteristics may vary over time, which may also make experimental results difficult to re-produce.
Network emulation is another common method for experimenting with distributed systems. For instance, Emulab is a network emulation-based testbed that allows investigators to run real code on an arbitrary topology supplied by the investigator. However, Emulab requires access to a shared physical infrastructure, which limits the scale of experiments and introduces contention among researchers for experiment time.
Running live experiments on the deployed Tor network is another option. However, this approach introduces the possibility of inadvertently harming live users' performance, anonymity, or peace of mind.
In contrast, ExperimenTor offers large-scale network emulation, provided by ModelNet, and runs entirely on commodity machines and operating systems that can be deployed at a reseracher's local lab. This approach offers better reproducibility compared to PlanetLab and can scale beyond what is currently possible with EmuLab. Also, since the testbed is completely isolated from the live Tor network, there is no possibility of experiments having a negative impact of the real system.
The testbed's performance on the virtual machine images is terribly slow. How can I make it faster?
There are many ways to tune the virtual machines' performance. Please see VMware's documentation for more details.
However, the best way to improve performance is to install the testbed natively. Please see the answer below for details.
I want to install an instance of the testbed natively on my own machines. How do I do that?
Installing and configuring the ModelNet emulation platform is a fairly involved process. We offer a step-by-step guide to help, which is available here. In case there are still questions, here's an excellent step-by-step guide to help you: ModelNetTutorial.
Our pre-configured VM images use FreeBSD 6.3 and Ubuntu Linux 11.04; thus, these operating systems are known to work with ModelNet.
It appears that the testbed is working as expected, but how can I tell for sure?
The most basic sanity check you should use is simply to monitor the traffic on the ModelNet emulator host to ensure that packets from the virtual edge node hosts are being correctly routed through the emulator. You can implement this sanity check by running tcpdump on the emulator machine and generating traffic, as follows:
- Start an iperf server on the "virtual node" host: iperf -s
- Run tcpdump on the emulator: tcpdump -i <interface> net 10.0.0.0/8
- Generate iperf traffic: LD_PRELOAD=/usr/local/lib/libipaddr.so SRCIP=10.0.0.1 iperf -c 10.0.0.2
You should see traffic from the 10.0.0.0/8 address space entering the emulator machine, and traffic from the 10.128.0.0/16 space returning from the emulator machine to the virtual nodes.
If you do not see any such traffic, then follow the steps in this troubleshooting guide to fix the problem.
I want to generate my own network topology. How do I do that?
Please see the step-by-step instructions available here.
I'm interested in making Tor better, but I don't know what to work on. Can you suggest research topics?
The Tor Project maintains a very useful page that details a wide variety of important Tor research questions that are in need of attention.