Hi everyone,
I just finished a first draft of a tech report sketching out the requirements and a software design for a new Torperf implementation.
This is related to my earlier attempt to rewrite Torperf in Twisted [0], which I still think is a good idea, but only if somebody else who's better at Python and Twisted than I does it.
Sathya offered help to implement this tool by "translating English into Python". But I think this project can keep more than one person busy for a while. I assume both Sathya and I would appreciate feedback from others. (Of course, I'm eager to hear your thoughts, Sathya.)
Neither the requirements nor the software design are set in stone, and the implementation, well, does not exist yet. Plenty of options for giving feedback and helping out, and most parts don't even require specific experience with hacking on Tor. Just in case somebody's looking for an introductory Tor project to hack on.
Here are the PDF and the LaTeX sources:
https://people.torproject.org/~karsten/volatile/torperf2.pdf
https://gitweb.torproject.org/user/karsten/tech-reports.git/tree/refs/heads/...
Feedback in the form of patches to the LaTeX sources is most preferred, though email replies are of course fine, too.
Thanks! Karsten
[0] https://lists.torproject.org/pipermail/tor-dev/2013-January/004356.html
Hi,
Thanks for writing this Karsten!
On Fri, Sep 6, 2013 at 9:58 AM, Karsten Loesing karsten@torproject.org wrote:
Hi everyone,
I just finished a first draft of a tech report sketching out the requirements and a software design for a new Torperf implementation.
This is related to my earlier attempt to rewrite Torperf in Twisted [0], which I still think is a good idea, but only if somebody else who's better at Python and Twisted than I does it.
Sathya offered help to implement this tool by "translating English into Python". But I think this project can keep more than one person busy for a while. I assume both Sathya and I would appreciate feedback from others. (Of course, I'm eager to hear your thoughts, Sathya.)
I think this is good enough for me to get started with. I will make changes to the tex file as and when I code. If anyone else wants to help out, that would be really useful too!
Thanks, --Sathya
Karsten Loesing:
Feedback in the form of patches to the LaTeX sources is most preferred, though email replies are of course fine, too.
See attachments.
An experiment making these more realistic measurements should use -something like Selenium/Firefox to control an actual browser to make +something like Selenium to control an actual Tor Browser to make requests.
FYI, I have written code that downloads the present Tor Browser alpha and Python Selenium client and monkey-patches them to play nice together; see https://github.com/zackw/tailwagger . It's very specialized for my requirements right now, but might still be of use to you. Look especially at what is done to TBB and python-selenium by the patches under pkg/tor-browser-3.0a3 and pkg/python-selenium-2.33.0, and the TbbDriver class in client/tbbselenium.py .
On 9/6/13 6:52 PM, Zack Weinberg wrote:
An experiment making these more realistic measurements should use -something like Selenium/Firefox to control an actual browser to make +something like Selenium to control an actual Tor Browser to make requests.
FYI, I have written code that downloads the present Tor Browser alpha and Python Selenium client and monkey-patches them to play nice together; see https://github.com/zackw/tailwagger . It's very specialized for my requirements right now, but might still be of use to you. Look especially at what is done to TBB and python-selenium by the patches under pkg/tor-browser-3.0a3 and pkg/python-selenium-2.33.0, and the TbbDriver class in client/tbbselenium.py .
Added as footnote to the report. Thanks!
Best, Karsten
On 9/6/13 3:58 PM, Karsten Loesing wrote:
I just finished a first draft of a tech report sketching out the requirements and a software design for a new Torperf implementation.
Sathya, Kevin, and I improved this tech report draft a lot and finally published it today:
https://research.torproject.org/techreports/torperf2-2013-10-30.pdf
From the introduction:
""" Four years ago, we presented a simple tool to measure performance of the Tor network. This tool, called Torperf, requests static files of three different sizes over the Tor network and logs timestamps of various request substeps. These data turned out to be quite useful to observe user-perceived network performance over time. However, static file downloads are not the typical use case of a user browsing the web using Tor, so absolute numbers are not very meaningful. Also, Torperf consists of a bunch of shell scripts which makes it neither very user-friendly to set up and run, nor extensible to cover new use cases.
For reference, we made an earlier approach 1.5 years later that suggested redesigning the Python parts in Torperf, but that redesign never happened.
In this report we outline requirements and a software design for a rewrite of Torperf. We loosely start with non-functional requirements, so aspects like user-friendliness or extensibility, because these requirements drive the rewrite more than the immediate need for new features. After that, we discuss actual functional requirements, so experiments that we want to perform to measure things in the Tor network on a regular and automated basis. Finally we suggest a software design that fulfills all these requirements. """
The fact that we now have a published design document doesn't mean that all design work is done. But having a tech report makes it easier to reference our design ideas in future discussions. New ideas should probably go into a second tech report draft or design document of some kind. The goal here is not to produce paper but to be explicit about design decisions.
Thanks, Sathya, Kevin, and the other people for providing valuable feedback on the Torperf rewrite!
All the best, Karsten