diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-03-18 11:43:23 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-03-18 11:43:23 +0000 |
commit | 24c7345ea01a015a00a711e91eb893c5c1018abc (patch) | |
tree | 26db642de762223fc51f7208ee217dcc2acf1496 /TODO | |
parent | 7595e5de319265cadbd3fc8ccceb97a29e9111f3 (diff) | |
download | gnunet-24c7345ea01a015a00a711e91eb893c5c1018abc.tar.gz gnunet-24c7345ea01a015a00a711e91eb893c5c1018abc.zip |
move
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 117 |
1 files changed, 95 insertions, 22 deletions
@@ -14,11 +14,61 @@ away), in order in which they will likely be done: | |||
14 | * FS [Christian] | 14 | * FS [Christian] |
15 | 15 | ||
16 | 0.9.0pre0: | 16 | 0.9.0pre0: |
17 | * HOSTLIST/PEERINFO/CORE/TRANSPORT/TOPOLOGY: | 17 | * TRANSPORT: |
18 | - hostlist server learns about 2nd peer, but soon forgets (not | 18 | - TCP not used bi-directionally (especially important also for PONG!) |
19 | clear if this is still an issue, or if validation failed or | 19 | Need a way for plugin to tell to service that it can *reliably* transmit |
20 | if this was an issue with the client's parsing of the reply, which | 20 | PONGs. Need *good* way to ensure only one (plugin) session is active at |
21 | was broken...) | 21 | any given point in time; need systematic way to periodically probe latency/ |
22 | transport cost changes | ||
23 | - disconnect notifications from TCP not always as nice as we might want | ||
24 | them to be (but how can we do this cleanly given that UDP is connectionless?) | ||
25 | - hostlist testcase shows that (randomly) we jump to an address that | ||
26 | seems to be a plugin function *after* the plugin has been unloaded | ||
27 | (directly from scheduler); check that *all* plugin tasks are cancelled | ||
28 | after plugin is unloaded! (need better testcases for that...) | ||
29 | - implement transport API to pretty-print transport address | ||
30 | + transport_api extension (API extension!) | ||
31 | + service-transport extension (protocol extension) | ||
32 | - implement gnunet-transport (transport configurator / tester) | ||
33 | - instantly filter addresses from *other* peers that | ||
34 | are *equal* to our own address + port (i.e., localhost:2086). We | ||
35 | no longer filter those for outgoing (helps with loopback testing | ||
36 | and keeps the code clean), but we should filter strictly *impossible* | ||
37 | incoming addresses! This is for efficiency, not correctness. | ||
38 | - UPnP-based IP detection | ||
39 | (Note: build library always, build service when libxml2/etc. are available) | ||
40 | - We currently are happy to take any address told to us in a WELCOME | ||
41 | to our set of addresses; we should have some minimal threshold-based | ||
42 | scheme, limiting both the total number of addresses that we accept | ||
43 | this way as well as requiring multiple confirmations; also, we | ||
44 | should possibly try to confirm that the given address works for | ||
45 | us ourselves (loopback-style) before adding it to the list | ||
46 | [SECURITY issue] | ||
47 | + we may be able to simplify WELCOME messages (no need to add | ||
48 | addresses there anymore, but may help to learn them there anyway...). | ||
49 | + we probably want some kind of voting/counting for learning IP addresses | ||
50 | (maybe including IP addresses in ads proportional to how often others | ||
51 | report them? we at least need some protection against >64k HELLOs!), | ||
52 | + provide a way to give the user a list of "learned" IP addresses and | ||
53 | a way to easily "veto" addresses off the list! | ||
54 | => If MiM attacker uses vetoed address, blacklist the specific IP for | ||
55 | the presumed neighbour! | ||
56 | - [./transport/gnunet-service-transport.c:173]: (style) struct or union member 'TransportPlugin::rebuild' is never used | ||
57 | - [./transport/plugin_transport_tcp.c:391]: (style) struct or union member 'Plugin::address_update_task' is never used | ||
58 | * FS: | ||
59 | - [./fs/gnunet-service-fs.c:208]: (style) struct or union member 'LocalGetContext::results_bf_size' is never used | ||
60 | - [./fs/gnunet-service-fs.c:501]: (style) struct or union member 'PendingRequest::used_pids_size' is never used | ||
61 | - [./fs/gnunet-service-fs.c:654]: (style) struct or union member 'ConnectedPeer::last_client_replies' is never used | ||
62 | - [./fs/gnunet-service-fs.c:669]: (style) struct or union member 'ConnectedPeer::avg_delay' is never used | ||
63 | - [./fs/gnunet-service-fs.c:675]: (style) struct or union member 'ConnectedPeer::avg_priority' is never used | ||
64 | - [./fs/gnunet-service-fs.c:688]: (style) struct or union member 'ConnectedPeer::pending_requests' is never used | ||
65 | - [./fs/gnunet-service-fs.c:694]: (style) struct or union member 'ConnectedPeer::last_p2p_replies_woff' is never used | ||
66 | - [./fs/gnunet-service-fs.c:700]: (style) struct or union member 'ConnectedPeer::last_client_replies_woff' is never used | ||
67 | * CORE: | ||
68 | - SET_KEY is triggered every 2.5 minutes (after session is up); should | ||
69 | just do PING (not SET_KEY + PING) | ||
70 | - "Forcing disconnect of XXX due to inactivity" -- can happen every few MS!? | ||
71 | (disconnect does not really succeed, or what?) | ||
22 | * TOPOLOGY: | 72 | * TOPOLOGY: |
23 | - needs more testing (especially F2F topology) | 73 | - needs more testing (especially F2F topology) |
24 | - needs to re-try connecting after disconnect (currently, it | 74 | - needs to re-try connecting after disconnect (currently, it |
@@ -27,28 +77,34 @@ away), in order in which they will likely be done: | |||
27 | cause seems to be the 'blacklist_after_attempt' being set to 1h, | 77 | cause seems to be the 'blacklist_after_attempt' being set to 1h, |
28 | which is rather long -- and should probably be adjusted based on | 78 | which is rather long -- and should probably be adjusted based on |
29 | the number of connections / known peers) | 79 | the number of connections / known peers) |
30 | * CORE: | 80 | - If the topology daemon crashes, peers that were put on the |
31 | - peers do not seem to connect (setkey, ping are there; PONG is sent, | 81 | blacklist with transport will never be removed from it (until |
32 | not sure what else happens; eventually, the "neighbour" entry times | 82 | transport service dies); we should use the blacklist notification |
33 | out and is removed) | 83 | API to learn about the exact set of blacklisted peers at all times |
84 | (FIXME: the transport_api implementation of blacklisting | ||
85 | also does not work nicely for this since it won't let us know about | ||
86 | disconnect-reconnect events and the implicit whitelisting | ||
87 | that might happen here; that's not so bad since we will | ||
88 | re-blacklist on pre-connect attempts anyway, so this is | ||
89 | a minor issue). | ||
90 | - the code uses the term 'blacklist' for both peers that are forbidden | ||
91 | to connect (i.e. F2F mode) as well as peers that we currently | ||
92 | won't try to actively connect to ourselves (since we just tried); | ||
93 | This is confusing. We need two distinct terms. | ||
94 | - move code to use hash table instead of linked list | ||
95 | - instead of periodically discarding blacklisted entries, | ||
96 | simply add task that is triggered at the right time (earlier free, | ||
97 | more balanced load) | ||
98 | - check if new HELLO learned is different from old HELLO | ||
99 | before resetting entire state! | ||
34 | * UTIL: | 100 | * UTIL: |
35 | - load: need way to determine network load (up/down) -- and quickly so! | ||
36 | - trust: need *fast* way to check/update trust in peers | 101 | - trust: need *fast* way to check/update trust in peers |
37 | (async peerinfo would not be right) | 102 | (async peerinfo would not be right) |
38 | - scheduler should change OS process priority based on task priority; | 103 | - scheduler should change OS process priority based on task priority; |
39 | should make better use of task priorities in general | 104 | should make better use of task priorities in general |
40 | * TRANSPORT: | 105 | - only connect() sockets that are ready (select()) [Nils] |
41 | - disconnect notifications from TCP not always as nice as we might want | 106 | [On W32, we need to select after calling socket before |
42 | them to be (but how can we do this cleanly given that UDP is connectionless?) | 107 | doing connect etc.] |
43 | - TCP not used bi-directionally (especially important also for PONG!) | ||
44 | Need a way for plugin to tell to service that it can *reliably* transmit | ||
45 | PONGs. Need *good* way to ensure only one (plugin) session is active at | ||
46 | any given point in time; need systematic way to periodically probe latency/ | ||
47 | transport cost changes | ||
48 | - hostlist testcase shows that (randomly) we jump to an address that | ||
49 | seems to be a plugin function *after* the plugin has been unloaded | ||
50 | (directly from scheduler); check that *all* plugin tasks are cancelled | ||
51 | after plugin is unloaded! (need better testcases for that...) | ||
52 | * STATISTICS: | 108 | * STATISTICS: |
53 | - synchronous/asynchronous API (& implementation) is not nice; | 109 | - synchronous/asynchronous API (& implementation) is not nice; |
54 | => provide notification-based API | 110 | => provide notification-based API |
@@ -58,9 +114,18 @@ away), in order in which they will likely be done: | |||
58 | * ARM: | 114 | * ARM: |
59 | - need to get rid of synchronous API for service starts (cause all kinds of problems) | 115 | - need to get rid of synchronous API for service starts (cause all kinds of problems) |
60 | [=> eliminate for need to tell ARM about service starts most of the time!] [Safey] | 116 | [=> eliminate for need to tell ARM about service starts most of the time!] [Safey] |
117 | - better tracking of which config changes actually need to cause process restarts by ARM. | ||
118 | - listen for requests to discover dependencies between services (and avoid | ||
119 | having to explicitly program start requests) | ||
120 | - better crash management (attach debugging support, capture and analyze | ||
121 | debug output, detect random vs. deterministic crashes) | ||
122 | - shutdown sequence? | ||
61 | * HELLO: | 123 | * HELLO: |
62 | - need function to test "equivalency" of HELLOs; use in topology! | 124 | - need function to test "equivalency" of HELLOs; use in topology! |
63 | * FS: | 125 | * FS: |
126 | - GAP improvements: | ||
127 | + active reply route caching design & implementation of service, | ||
128 | gap extension! | ||
64 | - gnunet-publish cannot be aborted using CTRL-C | 129 | - gnunet-publish cannot be aborted using CTRL-C |
65 | - gnunet-publish segfaults if file does not exist | 130 | - gnunet-publish segfaults if file does not exist |
66 | - on some systems, keyword search does not find locally published content | 131 | - on some systems, keyword search does not find locally published content |
@@ -112,6 +177,9 @@ away), in order in which they will likely be done: | |||
112 | + test basic peer re-configure [Nate] | 177 | + test basic peer re-configure [Nate] |
113 | + test topology creation [Nate] | 178 | + test topology creation [Nate] |
114 | + test churn generation [Nate] | 179 | + test churn generation [Nate] |
180 | * TESTING: | ||
181 | - consider changing API for peer-group termination to | ||
182 | call continuation when done | ||
115 | * WWW: | 183 | * WWW: |
116 | - Get IPv6 hooked up | 184 | - Get IPv6 hooked up |
117 | - change DNS | 185 | - change DNS |
@@ -127,9 +195,14 @@ away), in order in which they will likely be done: | |||
127 | + implement DV transport plugin [Nate & CG] | 195 | + implement DV transport plugin [Nate & CG] |
128 | + implement testcases [Nate] | 196 | + implement testcases [Nate] |
129 | + implement performance tests [Nate] | 197 | + implement performance tests [Nate] |
198 | * SETUP: | ||
199 | - design & implement new setup tool | ||
130 | * GUIs to implement: | 200 | * GUIs to implement: |
131 | - gtk (RC-pre1) | 201 | - gtk (RC-pre1) |
132 | + how to integrate scheduler with GTK event loop! | 202 | + how to integrate scheduler with GTK event loop! |
203 | * HOSTLIST: | ||
204 | - 'server' uses 'GNUNET_PEERINFO_iterate', should probably switch to notification API | ||
205 | (for more instant / up-to-date hostlists at lower cost) [OPTIMIZATION] | ||
133 | 206 | ||
134 | 0.9.0pre2: | 207 | 0.9.0pre2: |
135 | * Module features to implement: | 208 | * Module features to implement: |