[tor-bugs] #1826 [Tor Relay]: Sending packets after RELAY_END
Tor Bug Tracker & Wiki
torproject-admin at torproject.org
Fri Aug 13 16:58:51 UTC 2010
#1826: Sending packets after RELAY_END
-----------------------+----------------------------------------------------
Reporter: mwenge | Owner:
Type: defect | Status: new
Priority: normal | Milestone: Tor: 0.2.2.x-final
Component: Tor Relay | Version: Tor: unspecified
Keywords: | Parent:
-----------------------+----------------------------------------------------
Comment(by nickm):
Interesting!
If these cells are getting sent after the RELAY_END arrives at an exit
node, they are probably coming because [case 1] they're already in the
cell queue or [case 2] in the connection_or's outbuf. Unless [case 3]
data in the connection_edge's inbuf is somehow getting packaged even after
a the RELAY_END cell arrives.
It's also possible [case 4] that some of the cells are already in transit
(queued somewhere between the exit node's SSL and the client's Tor) when
the client sends the RELAY_END cell. We can't really do anything about
those.
So, breaking down the cases:
case 1: cells already on the cell_queue) We don't have a good way to
remove cells from a circuit's cell queue now at all. By the time they get
there, they're encrypted and ready for delivery. Removing them would
throw of the circuit's stream cipher. Furthermore, the cells are already
packed at that point, so figuring out what streams they went with would be
nontrivial.
We could mitigate this by lowering how full we're willing to fill a cell
queue with cells from streams before we stop reading from the streams.
This might help stream fairness. I don't know what it would do to
performance.
In Tor 0.2.3.x, we're going to have to change the point at which we
encrypt cells on queues in order to implement #1479. When we do this, we
can revisit the possibility of removing already-queued cells for a dead
stream.
case 2: cells already in the connection_or's outbuf) This is way too late
to remove the cells.
We could mitigate this by lowering how much we're willing to fill an
connection_or's outbuf.
case 3: packaging cells from an exit connection even after getting a
relay_end) That would be a bug. If it's happening, we should fix it.
case 4: the cells are in transit on the net) There's nothing we can do
about that with our current protocol.
So IMO the right thing to do is make sure that case 3 isn't happening, and
think about what tuning we could do to mitigate 1 and 2, and whether it's
a net win or not.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/1826#comment:3>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list