[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-bugs] #1090 [Tor Client]: Warning about using an excluded node for exit
#1090: Warning about using an excluded node for exit
-------------------------+--------------------------------------------------
Reporter: Sebastian | Owner: nickm
Type: defect | Status: assigned
Priority: major | Milestone: Tor: 0.2.2.x-final
Component: Tor Client | Version: 0.2.1.19
Resolution: None | Keywords:
Points: | Parent:
-------------------------+--------------------------------------------------
Comment(by arma):
Replying to [comment:23 nickm]:
> but then I realized that what I really want here is a two-tuple of
{circuit purpose, node position}. But then I realized that circuit
purposes don't completely fit my aim here, since they include too much
intro about rendezvous state (a typical intro circuit changes purpose a
few times), and they don't include ideas like "for directory use." :p
While we're thinking about code reorg like this, an idea I've had floating
in my mind the past few years is to add a 'role' value used in
onion_extend_cpath() so it isn't so hard-coded in what relay roles go
where in the path. So then we could specify that a typical 3-hop circuit
is made up of NODE_USAGE_ENTRY, NODE_USAGE_MIDDLE, NODE_USAGE_EXIT, and
then the "populate the cpath" logic would just loop over the circuit
choosing a suitable relay for each hop based on that hop's intended role.
Notice how I have a NODE_USAGE_MIDDLE here -- I'm not sure if that's the
same as your NODE_USAGE_RELAY. One way they could be different is because
when we're choosing a middle hop, we want to weight our load balancing
away from entry and exit hops proportional to the weights in the
consensus. Did you envision using these NODE_USAGE values pervasively
enough in the code that we also use them to tell
routerlist_sl_choose_by_bandwidth(), router_choose_random_node(), etc the
role of the node in the circuit? My guess is that you do?
Generalizing this way means that when somebody down the road uses the Tor
codebase to build their overlay network that uses two middle hops and an
exit node, they don't have to hunt through as much of the code to get all
the weightings and exclusion fixes right.
Actually storing the role in the struct that remembers the cpath info
could come in handy later too, where when we cannibalize circuits we have
rules for which role-to-role transitions are acceptable and which aren't.
Is this crazy-talk that's way more invasive than what you were imagining,
or just fleshing out the same ideas?
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/1090#comment:26>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs