[tor-bugs] #9166 [Tor]: Write a UTP-based channel implementation

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri Jun 28 16:42:07 UTC 2013


#9166: Write a UTP-based channel implementation
---------------------------+------------------------------------------------
 Reporter:  nickm          |          Owner:                  
     Type:  defect         |         Status:  new             
 Priority:  normal         |      Milestone:  Tor: unspecified
Component:  Tor            |        Version:                  
 Keywords:  tor-relay utp  |         Parent:  #9165           
   Points:                 |   Actualpoints:                  
---------------------------+------------------------------------------------

Comment(by nickm):

 As I understand it, the branch today works by adding a UTP connection "on
 the side" of every or_connection_t.  Whenever an OR connection is
 launched, so is a corresponding UTP connection.  The branch seems to want
 to use TLS for initial key setup, and does not appear to do encryption on
 the UTP connections yet.

 I think that's going to be good enough for simulation, though: the setup
 characteristics are going to be significantly different than you'd see in
 a more polished implementation, but the throughput characteristics will be
 accurate (modulo the effects of no crypto).

 For a polished, mergeable version here, I would want to see:
   * A proposal.
   * IPv6 support
   * An actual UTP-based channel, advertised in descriptors and
 microdescriptors, and implemented as its own channel_t implementation.
   * Integration with the bandwidth accounting and rate-limiting features
 in the rest of Tor.
   * Resolution for the issues noted below.
   * Encryption, obviously.  This could be with TLS-over-UTP, or something
 different.

 More fine-grained issues:

 816abfac378f979d718782e17c5185c1dba43f24     Add a uTP connection in
 parallel to the channel:

  * Got to comment the new functions, if that doesn't happen.
  * It needs rate-limiting to work somehow.
  * need to avoid magic-numbers for inet_ntop buffer lengths.
  * remove magic-address 128.232.10.129
  * needs to bind something other than INADDR_ANY.
  * autoconf needs to check for utp, make it optional
  * Cast "userdata" to channel_tls_t in a local variable; don't say
 ((channel_tls_t*)userdata) more than once per function.

 b1b18889cd4986a2d10e79137f99a9ad46006f08 -- Handle uTP reads using
 libevent

  * check all return values.

 97aa42e4f235015ebd715ba673c475c978c48e67 -- Write payload data to uTP
 connection

   * utp_is_writable should get checked.  Also, it looks like
 connection_or_write_cell_to_buf doesn't make sense when
 tlschan->utp_write_buf is actually successful.

 67589c6b4f036ca73b49135cf5f7ec5a708dce73 --     Tie up incoming uTP
 connections with the TLS counterpart

   * Aw geez.  it's using the TLS master key as some kind of key material
 for the UTP session.  That's pretty darned kludgy.  I'd really want a key
 derivation function in there at least.
   * It doesn't appear anything uses the TLS master key though.

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/9166#comment:2>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list