[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