[tor-dev] Gsoc 2012 Project Proposal.. Feedback please!!

drake01 drakeoone at gmail.com
Sun Apr 1 10:24:35 UTC 2012

Hi guys,
This is the initial proposal for "Integrating Tor with user-space transport
libraries" during GSOC 2012.

After initial shortlisting of transport protocols to be integrated with
tor, I
am left with sctp and udp. Initially I was willing to go with sctp but after
getting suggestions on irc, I propose to integrate the udp library for
transport to tor (modified tor) as my gsoc 2012 project.  I am leaving sctp
now) and choosing UDP because: 1) I learn that testing has been done for
(utp) and results seem good. so risk of failure is minimized.  2) The
libutp has
faced the test of time and seen wide usage (u-torrent) 3) The library is
available. Although modifications will need to be done to make it work with
tor.. So work from very beginning need not be done. Other stacks are also
available. But It seems to be closest to what we need(based on what I know
far. Also Ref: Mentioned in the paper too: Comparison of Tor Datagram
4) The sctp kernel space implementation has been heavily tested (as told by
jmurdoch) but because of security issues mentioned in the paper of its use,
does not seem to be first choice to bet upon.

Based on Datagram Testing Plan paper,march,2012, I would most likely fit to
on utp and hop-by-hop transport beginning in may. (I'd have no other
by that time.) Circuits are constructed preemptively using tcp in tor.

Also since different transports are to be tested in future (possibly), So
changes to be done in the tor should help it by providing a clean interface
change the protocol  (sort of plugin interface.. Although the protocols are
already layered to accomplish it, but reusability factor need to be taken
of as much as possible)

As the hop by hop reliability is easier to implement (less changes to tor)
project of new transport protocol is new to tor, so not much experience is
available. Thus as an experiment, the hop by hop reliablity seems to be the
selection right now (obviously with the scope of making changes in future)

Also if the modified tor is tested on the live tor network, hop by hop
reliability'll help in addressing the issue of deanonymization of nodes
major population of nodes'll be using tcp during the migration period.  As
mentioned in "Improving Tor using a TCP over DTLS" paper by Reardon, the
implementation of DTLS (TLS for Datagram) is already there in OpenSSL. TLS
DTLS apis are unified too, i.e. same OpenSSL calls'll be able to handle
and receiving data with minimum changes which'll have to be made to tor.

I'd be extremely careful about the overall implementation so that changes
in tor don't just emerge out as a separate new branch and act as blockage
other transports and future changes. Instead, changes should be made to
complement the future development.

Goals to keep in mind for taking decisions while implementing:
To achieve Low latency and scalability are two goals that I see to keep in
while implementing/integrating the protocol to tor. Thorough testing is only
viable option for ensuring these though. But as mentioned in the Datagram
Testing Plan paper, simulation is also fine..(Please make additions here)
In the
end, As integrating new transport is not an individual's task to complete,
being done by a team and a plan is already there (Murdoch's march paper). So
this proposal is for me to be of value to the team and not be limited to the
libutp.  So if time permits, I intend to help by contributing to other
parts of
this project too especially Experimentor.

By the way, where can I find the md5 or sha digests for the Experimentor?

Google summer of code 2012 will be a 12 week (3 months) programme: I would
to report my progress twice each week preferably wednesday night (utc+0) and
saturday night (again utc+0). I will submit the detailed timeline after
the proposal almost final.. I've planned to maintain a blog or github
pages  to
provide the details about the project's progress..I would be available on
for all of my working time though.
Currently github repository for my torprojectgsoc12:
https://github.com/drake01/torprojectgsoc2012 (its empty, I'll  fill it
soon:) )

Test code:
I am planning to submit a socket based small server/client app through above
repository which I wrote in initial days while learning( needs some changes
distribute though).. Also would try to write something utilising raw
sockets to
show my understanding of Internet Protocol stack. Comments!

Current status:
I have cloned the git repository of tor and a few related softwares
libutp and have it working on my machine. Also started to dissect the libutp
I have gone through the papers, Comparison of Tor Datagram Designs and
Datagram Testing Plan by Murdoch.
I have overviewed the tor-design paper by Nickand Roger.
Github account: https://github.com/drake01


Comments, Criticism, suggestions are most welcome.. :)

Online pseudonym: drake01, drakeo1 or drakeoone
Blog: http://goo.gl/uMnRp
Github: https://github.com/drake01
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20120401/0fd3dbb4/attachment.html>

More information about the tor-dev mailing list