mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 06:33:44 +01:00
First cut at cleaning 0.1.1.x TODO
svn:r4879
This commit is contained in:
parent
2e7de08fbf
commit
c6c403e156
171
doc/TODO
171
doc/TODO
@ -14,9 +14,8 @@ PHOBOS - phobos claims
|
|||||||
|
|
||||||
Non-Coding, Soon:
|
Non-Coding, Soon:
|
||||||
N - contact umass folks
|
N - contact umass folks
|
||||||
N - Packaging logic and HOWTO for controller libs
|
|
||||||
N - Mention controller libs someplace.
|
N - Mention controller libs someplace.
|
||||||
- FAQ entry: why gnutls is bad/not good for tor
|
D FAQ entry: why gnutls is bad/not good for tor
|
||||||
P - flesh out the rest of the section 6 of the faq
|
P - flesh out the rest of the section 6 of the faq
|
||||||
P - gather pointers to livecd distros that include tor
|
P - gather pointers to livecd distros that include tor
|
||||||
- put the logo on the website, in source form, so people can put it on
|
- put the logo on the website, in source form, so people can put it on
|
||||||
@ -26,7 +25,7 @@ P - gather pointers to livecd distros that include tor
|
|||||||
* clean up the places where our docs are redundant (or worse, obsolete in
|
* clean up the places where our docs are redundant (or worse, obsolete in
|
||||||
one file and correct elsewhere). agl has a start on a global
|
one file and correct elsewhere). agl has a start on a global
|
||||||
list-of-tor-docs.
|
list-of-tor-docs.
|
||||||
P - update window's docs to clarify which versions of windows, and why a
|
P - update windows docs to clarify which versions of windows, and why a
|
||||||
DOS window, how it's used, for the less technical users
|
DOS window, how it's used, for the less technical users
|
||||||
NR- write a spec appendix for 'being nice with tor'
|
NR- write a spec appendix for 'being nice with tor'
|
||||||
- tor-in-the-media page
|
- tor-in-the-media page
|
||||||
@ -34,16 +33,13 @@ NR- write a spec appendix for 'being nice with tor'
|
|||||||
tor-0.1.0.7.rc
|
tor-0.1.0.7.rc
|
||||||
- Remove need for HACKING file.
|
- Remove need for HACKING file.
|
||||||
|
|
||||||
For 0.1.0.x:
|
|
||||||
. Memory use on Linux: what's happening?
|
|
||||||
- Is it threading? (Maybe, maybe not)
|
|
||||||
- Is it the buf_shrink bug? (Quite possibly)
|
|
||||||
- Instrument the 0.1.1 code to figure out where our memory is going;
|
|
||||||
apply the results. (all platforms?)
|
|
||||||
|
|
||||||
for 0.1.1.x:
|
for 0.1.1.x:
|
||||||
R - are dirservers auto-verifying duplicate nicknames?
|
R - are dirservers auto-verifying duplicate nicknames?
|
||||||
|
|
||||||
N . Additional controller features
|
N . Additional controller features
|
||||||
|
- Find a way to make event info more extensible
|
||||||
- change circuit status events to give more details, like purpose,
|
- change circuit status events to give more details, like purpose,
|
||||||
whether they're internal, etc.
|
whether they're internal, etc.
|
||||||
. Expose more information via getinfo:
|
. Expose more information via getinfo:
|
||||||
@ -54,116 +50,92 @@ N . Additional controller features
|
|||||||
download directories/network-status, and a way to force a download.
|
download directories/network-status, and a way to force a download.
|
||||||
- It would be nice to request address lookups from the controller
|
- It would be nice to request address lookups from the controller
|
||||||
without using SOCKS.
|
without using SOCKS.
|
||||||
N . helper nodes (Choose N nodes randomly; if a node dies (goes down for a
|
|
||||||
long time), replace it. Store nodes on disk.
|
. Helper nodes
|
||||||
o Implement (basic case)
|
. More testing and debugging
|
||||||
o Implement (persistence)
|
- On sighup, if usehelpernodes changed to 1, use new circuits?
|
||||||
o Document
|
|
||||||
. Test, debug
|
|
||||||
- On sighup, if usehelpernodes changed to 1, use new circs.
|
|
||||||
- If your helper nodes are unavailable, don't abandon them unless
|
- If your helper nodes are unavailable, don't abandon them unless
|
||||||
other nodes *are* reachable.
|
other nodes *are* reachable.
|
||||||
R - If you think an OR conn is open but you can never establish a circuit
|
R - If you think an OR conn is open but you can never establish a circuit
|
||||||
to it, reconsider whether it's actually open.
|
to it, reconsider whether it's actually open.
|
||||||
- switch accountingmax to count total in+out, not either in or
|
|
||||||
out. it's easy to move in this direction (not risky), but hard to
|
- Miscellaneous cleanups
|
||||||
back, out if we decide we prefer it the way it already is. hm.
|
- switch accountingmax to count total in+out, not either in or
|
||||||
. Come up with a coherent strategy for bandwidth buckets and TLS. (The
|
out. it's easy to move in this direction (not risky), but hard to
|
||||||
logic for reading from TLS sockets is likely to overrun the bandwidth
|
back, out if we decide we prefer it the way it already is. hm.
|
||||||
buckets under heavy load. (Really, the logic was never right in the
|
. Come up with a coherent strategy for bandwidth buckets and TLS. (The
|
||||||
first place.) Also, we should audit all users of get_pending_bytes().)
|
logic for reading from TLS sockets is likely to overrun the bandwidth
|
||||||
- Make it harder to circumvent bandwidth caps: look at number of bytes
|
buckets under heavy load. (Really, the logic was never right in the
|
||||||
sent across sockets, not number sent inside TLS stream.
|
first place.) Also, we should audit all users of get_pending_bytes().)
|
||||||
. Handle rendezvousing with unverified nodes.
|
- Make it harder to circumvent bandwidth caps: look at number of bytes
|
||||||
o Specify: Stick rendezvous point's address and port in INTRODUCE cell.
|
sent across sockets, not number sent inside TLS stream.
|
||||||
o Handle new format.
|
R - remove the warnings from rendezvous stuff that shouldn't be warnings.
|
||||||
o Support to extend circuit/target circuit to a chosen combination of
|
|
||||||
addr/port/ID/onionkey
|
N . Handle rendezvousing with unverified nodes.
|
||||||
o Parse new format
|
o Implement everything
|
||||||
o Generate new format (#ifdef out the logic to generate it for now)
|
. Enable the new code
|
||||||
o Specify: make service descriptors contain onion key and identity.
|
. Verify that new code works.
|
||||||
o Implement new service desc format
|
|
||||||
o Think: are we okay with the partitioning? (Yes. It's a simple
|
- Christian Grothoff's attack of infinite-length circuit.
|
||||||
migration issue.)
|
|
||||||
o Implement new directory code
|
|
||||||
o Implement new server code (Don't enable till directory code is deployed)
|
|
||||||
o Implement new client code (Don't enable till directory code is deployed)
|
|
||||||
o Look for v1 descriptor if available, else look for v0 descriptor.
|
|
||||||
o Use new INTRODUCE protocol if allowed.
|
|
||||||
N . Verify that new code works.
|
|
||||||
- Enable the new code
|
|
||||||
- christian grothoff's attack of infinite-length circuit.
|
|
||||||
the solution is to have a separate 'extend-data' cell type
|
the solution is to have a separate 'extend-data' cell type
|
||||||
which is used for the first N data cells, and only
|
which is used for the first N data cells, and only
|
||||||
extend-data cells can be extend requests.
|
extend-data cells can be extend requests.
|
||||||
- Specify, including thought about
|
- Specify, including thought about
|
||||||
- Implement
|
- Implement
|
||||||
|
|
||||||
N - Destroy and truncated cells should have reasons.
|
N - Destroy and truncated cells should have reasons.
|
||||||
N - Add private:* alias in exit policies to make it easier to ban all the
|
N - Add private:* alias in exit policies to make it easier to ban all the
|
||||||
fiddly little 192.168.foo addresses.
|
fiddly little 192.168.foo addresses.
|
||||||
(AGL had a patch; consider applying it.)
|
(AGL had a patch; consider applying it.)
|
||||||
- recommended-versions for client / server ?
|
|
||||||
N - warn if listening for SOCKS on public IP.
|
N - warn if listening for SOCKS on public IP.
|
||||||
|
|
||||||
- cpu fixes:
|
- cpu fixes:
|
||||||
- see if we should make use of truncate to retry
|
- see if we should make use of truncate to retry
|
||||||
o hardware accelerator support (configure engines.)
|
o hardware accelerator support (configure engines.)
|
||||||
- hardware accelerator support (use instead of aes.c when reasonable)
|
- hardware accelerator support (use instead of aes.c when reasonable)
|
||||||
R - kill dns workers more slowly
|
R - kill dns workers more slowly
|
||||||
R - remove the warnings from rendezvous stuff that shouldn't be warnings.
|
|
||||||
- continue decentralizing the directory
|
. Directory changes
|
||||||
o Specify and design all of the below before implementing any.
|
o recommended-versions for client / server ?
|
||||||
- Figure out what to do about hidden service descriptors.
|
- Some back-out mechanism for auto-approval
|
||||||
X have two router descriptor formats
|
|
||||||
R . dirservers verify reachability claims
|
|
||||||
o basic reachability testing, influencing network-status list.
|
|
||||||
R - rate-limiting the reporting of trouble servers
|
|
||||||
R - check reachability as soon as you hear about a new server
|
|
||||||
- find 10 dirservers. (what are criteria to be a dirserver?)
|
|
||||||
- some back-out mechanism?
|
|
||||||
- dirservers have blacklist of IPs they hate
|
- dirservers have blacklist of IPs they hate
|
||||||
- a way of rolling back approvals to before a timestamp
|
- a way of rolling back approvals to before a timestamp
|
||||||
- have new people be in limbo and need to demonstrate usefulness
|
- have new people be in limbo and need to demonstrate usefulness
|
||||||
before we approve them
|
before we approve them
|
||||||
- other?
|
- other?
|
||||||
N . Authoritative dirservers publish very compressed network-status objects.
|
|
||||||
o Generate format
|
R . Dirservers verify reachability claims
|
||||||
o Publish it
|
o basic reachability testing, influencing network-status list.
|
||||||
N . Everyone downloads network-status objects
|
R - rate-limiting the reporting of trouble servers
|
||||||
- From all directories, round-robin
|
R - check reachability as soon as you hear about a new server
|
||||||
- Cache them, reload on restart
|
|
||||||
o Serve cached directories
|
- Decentralization
|
||||||
- If DirPort, act as a cache.
|
- Figure out what to do about hidden service descriptors.
|
||||||
N - Directories expose individual descriptors
|
- find 10 dirservers.
|
||||||
o By server ID
|
- (what are criteria to be a dirserver?)
|
||||||
o By 'all'
|
N . Dirservers publish compressed network-status objects.
|
||||||
- By 'if-newer-than' (Does the spec require this??)
|
- Support several-at-once
|
||||||
- Support compression.
|
N . Everyone downloads network-status objects
|
||||||
o Expose "own most recent descriptor".
|
- From all directories, round-robin
|
||||||
N - Alice acts on network-status objects, downloading descriptors as needed.
|
- Cache them, reload on restart
|
||||||
o Servers publish new descriptors when:
|
o Serve cached directories
|
||||||
o options change
|
N . Directories expose individual descriptors
|
||||||
o when 12-24 hours have passed
|
X By 'if-newer-than' (Does the spec require this??)
|
||||||
o when uptime is reset
|
- Support compression.
|
||||||
o When bandwidth changes a lot.
|
N - Alice acts on network-status objects
|
||||||
- alices avoid duplicate class C nodes.
|
- Alice downloads descriptors as needed.
|
||||||
o everybody with a dirport will give you his descriptor.
|
- Alice sets descriptor status from networks-status
|
||||||
- config option, on by default, to cache all descriptors.
|
|
||||||
- Compress router desc sets before transmitting them
|
- Security
|
||||||
M Analyze how bad the partitioning is or isn't.
|
- Alices avoid duplicate class C nodes.
|
||||||
- Naming:
|
- Analyze how bad the partitioning is or isn't.
|
||||||
- Specify and design all of the below before implementing any.
|
|
||||||
- some dirservers announce that they manage bindings (a flag in
|
N - Naming:
|
||||||
router-status).
|
- Separate naming from validation in authdirs.
|
||||||
- other dirservers mention a binding if there is no conflict for
|
- Clients choose names based on network-status options.
|
||||||
that binding among the dirservers that manage it.
|
- Names are remembered in client status.
|
||||||
no conflict == any of them bind it and no disagreement.
|
|
||||||
- alice can specify a nickname and it will record that name in her
|
|
||||||
datadir along with the key *if* it is bound. otherwise her specifying
|
|
||||||
will fail (loudly we hope).
|
|
||||||
- thus when a binding vanishes (e.g. conflict) alice will keep using
|
|
||||||
the one she meant.
|
|
||||||
- if the binding changes keys, the entry in her datadir will silently
|
|
||||||
get corrected.
|
|
||||||
- packaging and ui stuff:
|
- packaging and ui stuff:
|
||||||
. multiple sample torrc files
|
. multiple sample torrc files
|
||||||
- uninstallers
|
- uninstallers
|
||||||
@ -175,15 +147,18 @@ N - Alice acts on network-status objects, downloading descriptors as needed.
|
|||||||
N - Vet all pending installer patches
|
N - Vet all pending installer patches
|
||||||
- Win32 installer plus privoxy, sockscap/freecap, etc.
|
- Win32 installer plus privoxy, sockscap/freecap, etc.
|
||||||
- Vet win32 systray helper code
|
- Vet win32 systray helper code
|
||||||
o Make logs go into platform default locations.
|
|
||||||
o OSX
|
|
||||||
X Windows. (?)
|
|
||||||
|
|
||||||
Reach (deferrable) items for 0.1.1.x:
|
Reach (deferrable) items for 0.1.1.x:
|
||||||
- Start using create-fast cells as clients
|
- Start using create-fast cells as clients
|
||||||
o Let more config options (e.g. ORPort) change dynamically.
|
o Let more config options (e.g. ORPort) change dynamically.
|
||||||
- start handling server descriptors without a socksport?
|
- start handling server descriptors without a socksport?
|
||||||
|
|
||||||
|
. Research memory use on Linux: what's happening?
|
||||||
|
- Is it threading? (Maybe, maybe not)
|
||||||
|
- Is it the buf_shrink bug? (Quite possibly)
|
||||||
|
- Instrument the 0.1.1 code to figure out where our memory is going;
|
||||||
|
apply the results. (all platforms?)
|
||||||
|
|
||||||
For 0.1.1.x, if we can figure out how:
|
For 0.1.1.x, if we can figure out how:
|
||||||
- rewrite how libevent does select() on win32 so it's not so very slow.
|
- rewrite how libevent does select() on win32 so it's not so very slow.
|
||||||
o enclaves (at least preliminary)
|
o enclaves (at least preliminary)
|
||||||
|
Loading…
Reference in New Issue
Block a user