Commit 4a08380a authored by Roger Dingledine's avatar Roger Dingledine
Browse files

controllers need a way to learn router annotations


svn:r12602
parent 03ddcc90
Loading
Loading
Loading
Loading
+34 −7
Original line number Diff line number Diff line
@@ -123,8 +123,7 @@ Status: Researching
  Option A: Vidalia should continue doing its anonymized IP-to-city
  queries. Thus we can achieve goals 2a and 2b. We would solve goal
  3 by only doing lookups on descriptors that are purpose "general"
  (or, alternately, by only doing lookups on descriptors that are in
  the networkstatus consensus). We would leave goal 5 unsolved.
  (see Section 4.2.1 for how). We would leave goal 5 unsolved.

  Option B: Each directory authority should keep an IP-to-city db,
  lookup the value for each router it lists, and include that line in
@@ -141,6 +140,31 @@ Status: Researching
  there another reasonable location for it that can provide similar
  consensus security properties?

4.2.1. Controllers can query for router annotations

  Vidalia needs to stop doing queries on bridge relay IP addresses.
  It could do that by only doing lookups on descriptors that are in
  the networkstatus consensus, but that precludes designs like Blossom
  that might want to map its relay locations. The best answer is that it
  should learn the router annotations, with a new controller 'getinfo'
  command:
    "GETINFO router-annotations/id/<OR identity>" or
    "GETINFO router-annotations/name/<OR nickname>"
  which would respond with something like
    @downloaded-at 2007-11-29 08:06:38
    @source "128.31.0.34"
    @purpose bridge

  [We could also make the answer include the digest for the router in
  question, which would enable us to ask GETINFO router-annotations/all.
  Is this worth it? -RD]

  Then Vidalia can avoid doing lookups on descriptors with purpose
  "bridge". Even better would be to add a new annotation "@private true"
  so Vidalia can know how to handle new purposes that we haven't created
  yet. Vidalia could special-case "bridge" for now, for compatibility
  with the current 0.2.0.x-alphas.

4.3. Recommendation

  My overall recommendation is that we should implement 4.1 soon
@@ -181,17 +205,20 @@ Status: Researching

6. Controllers use the IP-to-country db for mapping and for path building

  Vidalia can use the IP-to-country mappings for placing on its map:
  Down the road, vidalia can use the IP-to-country mappings for placing
  on its map:
  - The location of the client
  - The location of the bridges, or other relays not in the
    networkstatus, on the map.
  - Any relays that it doesn't yet have an IP-to-city answer for.

  Controllers can also it to set EntryNodes, ExitNodes, etc in a
  per-country way. To support this feature, we need to export the
  IP-to-country data via the Tor controller protocol.
  Other controllers can also use it to set EntryNodes, ExitNodes, etc
  in a per-country way.

  To support these features, we need to export the IP-to-country data
  via the Tor controller protocol.

  Is it sufficient just to add a new GETINFO command:
  Is it sufficient just to add a new GETINFO command?
    GETINFO ip-to-country/128.31.0.34
    250+ip-to-country/128.31.0.34="US","USA","UNITED STATES"