120-shutdown-descriptors.txt 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. Filename: 120-shutdown-descriptors.txt
  2. Title: Shutdown descriptors when Tor servers stop
  3. Version: $Revision$
  4. Last-Modified: $Date$
  5. Author: Roger Dingledine
  6. Created: 15-Aug-2007
  7. Status: Dead
  8. [Proposal dead as of 11 Jul 2008. The point of this proposal was to give
  9. routers a good way to get out of the networkstatus early, but proposal
  10. 138 (already implemented) has achieved this.]
  11. Overview:
  12. Tor servers should publish a last descriptor whenever they shut down,
  13. to let others know that they are no longer offering service.
  14. The Problem:
  15. The main reason for this is in reaction to Internet services that want
  16. to treat connections from the Tor network differently. Right now,
  17. if a user experiments with turning on the "relay" functionality, he
  18. is punished by being locked out of some websites, some IRC networks,
  19. etc --- and this lockout persists for several days even after he turns
  20. the server off.
  21. Design:
  22. During the "slow shutdown" period if exiting, or shortly after the
  23. user sets his ORPort back to 0 if not exiting, Tor should publish a
  24. final descriptor with the following characteristics:
  25. 1) Exit policy is listed as "reject *:*"
  26. 2) It includes a new entry called "opt shutdown 1"
  27. The first step is so current blacklists will no longer list this node
  28. as exiting to whatever the service is.
  29. The second step is so directory authorities can avoid wasting time
  30. doing reachability testing. Authorities should automatically not list
  31. as Running any router whose latest descriptor says it shut down.
  32. [I originally had in mind a third step --- Advertised bandwidth capacity
  33. is listed as "0" --- so current Tor clients will skip over this node
  34. when building most circuits. But since clients won't fetch descriptors
  35. from nodes not listed as Running, this step seems pointless. -RD]
  36. Spec:
  37. TBD but should be pretty straightforward.
  38. Security issues:
  39. Now external people can learn exactly when a node stopped offering
  40. relay service. How bad is this? I can see a few minor attacks based
  41. on this knowledge, but on the other hand as it is we don't really take
  42. any steps to keep this information secret.
  43. Overhead issues:
  44. We are creating more descriptors that want to be remembered. However,
  45. since the router won't be marked as Running, ordinary clients won't
  46. fetch the shutdown descriptors. Caches will, though. I hope this is ok.
  47. Implementation:
  48. To make things easy, we should publish the shutdown descriptor only
  49. on controlled shutdown (SIGINT as opposed to SIGTERM). That would
  50. leave enough time for publishing that we probably wouldn't need any
  51. extra synchronization code.
  52. If that turns out to be too unintuitive for users, I could imagine doing
  53. it on SIGTERMs too, and just delaying exit until we had successfully
  54. published to at least one authority, at which point we'd hope that it
  55. propagated from there.
  56. Acknowledgements:
  57. tup suggested this idea.
  58. Comments:
  59. 2) Maybe add a rule "Don't do this for hibernation if we expect to wake
  60. up before the next consensus is published"?
  61. - NM 9 Oct 2007