[tor-dev] Evaluating rendezvous circuit build up CPU usage

David Goulet dgoulet at torproject.org
Tue Jan 14 13:04:52 UTC 2020


On 13 Jan (13:39:37), Valentin Franck wrote:
> Hello tor-devs,

Hi Valentin!

> 
> I am currently working on a DoS mitigation system aiming to protect the
> availability of onion services flooded with INTRO2 cells. My idea is
> using a (Privacy Pass like) token based approach as suggested in
> https://trac.torproject.org/projects/tor/ticket/31223#comment:6

Do _please_ talk to asn here as he is also doing research on this.

> 
> For the evaluation of a first prototype I would like to compare CPU
> usage times at the onion service when a) launching a rendezvous circuit
> and b) validating a (potentially invalid) token. Is there an easy way,
> to measure the CPU time a service spends for all operations triggered
> when launching a new rendezvous circuit? Has somebody done that before?
> Basically, I want to measure how much CPU time we save, if we do not
> launch the rendezvous circuit. So far I have identified the following
> functions: launch_rendezvous_point_circuit() and
> service_rendezvous_circ_has_opened(). I understand that there is more
> operations involved for building new circuits, since circuits are built
> hop by hop. How can I  identify all relevant functions triggered after
> launching the rendezvous circuit and include them in my measurements?

I do use a pretty extensive tracing patchset on "tor" to measure the hidden
service timings so all this work is done, just not upstream yet...

But it turns out that I'm currently actively working on the tracing API and
adding tracepoints to tor for upstream merge in the coming month.

If you can wait that long, you might have it all in tor soon else I can point
you to the branch but will require some work on your side to make it work with
a specific trace I use (LTTng userspace).

But at least you can see where the tracepoints are in the code:

https://gitweb.torproject.org/user/dgoulet/tor.git/tree/src/lib/trace/lttng/lttng.h?h=lttng-hs

Most tracepoints are client side for the HS. For service, to track the
timings, I use the circuit tracepoint. Just grep where they are put in the
code.

Hope this help a bit until we have tracing upstream.

Cheers!
David

-- 
wlQW8e6zy9BjPFoNUszA+ip0Fa+lseCuCGd+6jzB1KI=
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20200114/2e53514a/attachment.sig>


More information about the tor-dev mailing list