Hi Gareth,
You can find more details about the flow control algorithm in Tor and how Sendmes work in this paper: "DefenestraTor: Throwing out Windows in Tor".
Mashael
On Jul 9, 2014, at 11:39 AM, Florian Tschorsch tschorsch@informatik.hu-berlin.de wrote:
Dear Gareth,
actually the sentence is correct.
Every OR maintains a package window and a deliver window for each traversing circuit. You can check the source code: In or.h the circuit_t struct definition declares a package_window and a deliver_window variable.
The reason is that Tor's circuits are originally following the leaky pipe principal. Thus it is possible to leave the circuit at every intermediate OR (as long as the exit policy allows it) and not only at the last OR (i.e. the exit).
Eventually the OP maintains a window for each OR in the circuit.
As far as I know, this is not used in practice. Therefore to think there is only one pair of windows at the OP and at the exit approximates the current behavior sufficiently.
Cheers, Florian.
On 03.07.2014 12:36, Gareth Owen wrote:
Just to answer my own question for any others.
I've played around with it a for a few days and it seems the intermediate ORs don't maintain windows, it's only the edge nodes, maintaining a circuit, and individual stream windows.
Hope someone can update the spec to be clearer on this to save others the effort. The offending sentence is:
/"The OP behaves identically, except that it must track a packaging window and a delivery window for every OR in the circuit."/
Best Gareth
On 1 July 2014 09:51, Gareth Owen <gareth.owen@port.ac.uk mailto:gareth.owen@port.ac.uk> wrote:
(sorry re-post - forgot subject)
Dear all
I'm working on a tor research project and am having difficulty understanding the SENDME cells. The tor spec acknowledges that it isn't particularly clear so I would welcome some clarification please.
The spec says that *all* nodes in a circuit maintain a send and receive window, and that this window is decremented on each RELAY_DATA and incremented on each SENDME. Cells that are neither of these do not affect the window size. The problem I have understanding is, that only edge nodes will know whether a cell is a RELAY_DATA, the intermediate nodes only know that its a RELAY but not what type. So, if only RELAY_DATA decrements the window size, and intermediate nodes cannot spot these, what point is there in intermediate nodes having a window?
Any help greatly appreciated.
Gareth
tor-dev mailing list tor-dev@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev