[tor-dev] QUIC TOR Debugging Question (no attach)

Xiaofan Li xli2 at andrew.cmu.edu
Sun Apr 24 20:44:28 UTC 2016


Hi Tim and everyone on tor-dev,

Our QUIC + TOR project has almost been fully implemented. We are debugging
the last few bits of bugs. Update:

   1. *We've now able to build many complete circuits with QUIC as its
   underlying protocol. *
   2. We have not debugged the actual communication part yet. We are aware
   of certain failure cases for QUIC (e.g. line 15642 of the log is being
   debugged right now). So we cannot send actually client data yet.
   3. The current state uses QUIC for OR connections only. Thus a dual-path
   is implemented as suggested in my last email thread.
   4. TLS is completely bypassed and important state (that is set up in
   tls_handshake functions) is preserved and refactored out. e.g.
   conn->/chan->state purpose, etc.
   5. Some tinkering and re-designing of QUIC itself is also underway. The
   fact that QUIC is a transport protocol on application layer makes it
   painful to interact with the event and timer systems of TOR. We are trying
   to improve this aspect now.

*The debugging log I was attaching was too big for the tor-dev list. So if
you are interested to take a look at the file, let me know. Your help is
greatly appreciated!  *

Some particularly concerning things in the log:

   1. *circuit_get_by_circid_channel_impl(): found nothing for circ_id
   14801, channel ID 2 (0x7f758bb6b740)*
   Then it just attaches this circ onto this channel.. Is this normal?
   2. *Line 4901 circuit_receive_relay_cell(): Passing on unrecognized
   cell.*
   It happens a lot. Is this normal?
   3. This sequence happened a lot around 7500.



*relay_send_command_from_edge_(): delivering 10 cell forward.
   circuit_package_relay_cell(): crypting a layer of the relay cell.
   circuit_package_relay_cell(): crypting a layer of the relay cell.
   circuit_package_relay_cell(): crypting a layer of the relay cell.*
   It seems like its decrypting and forwarding cells along. Is it normal
   for TOR (with TCP) to do this in a burst? Because I'm seeing about ~1s of
   repeated calls.

*Some more general questions:*

   1. Internal Circuits: any docs? What is it used for? Measuring
   bandwidth? How many internal circuits are required by the system?
   2. *circuit wide ID format.* We had a bug regarding this last week. The
   check in process_create_cell always fails because line 281-295 in
   *command.c* always failed (the check for CIRC_ID_TYPE and id_is_high).
   Currently we commented out this check. What does it affect? And could we do
   this?
   3. From a high level, when a client sends data using a circuit, what is
   its code path? Which special (as in, specific to client-initiated
   communication) functions are called?

Any other comment on the log is greatly appreciated, since everyone here is
probably more familiar than me with what a normal bootstrapping process
would look like.

Thank you!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20160424/0136fa9e/attachment-0001.html>


More information about the tor-dev mailing list