[tor-dev] SENDME cells
Mashael Alsabah
malsabah at gmail.com
Wed Jul 9 16:37:16 UTC 2014
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 at 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 at port.ac.uk
>> <mailto:gareth.owen at 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 at lists.torproject.org
> https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev
More information about the tor-dev
mailing list