1fc134564848fd55f74e9c187b2489374e5ab5ae
[oweals/gnunet.git] / src / cadet / TODO
1 - URGENT: implement path desirability calculations (lack of them is confusing!)
2
3 - URGENT: Congestion/flow control (CHANNEL):
4   + estimate max bandwidth using bursts and use to for CONGESTION CONTROL!
5    (and figure out how/where to use this!)
6   + calculate current RTT if possible, use that for initial retransmissions
7    (NOTE: needs us to learn which connection the tunnel uses for the message!)
8   + figure out flow control without ACKs (unreliable traffic!)
9
10 - HIGH: revisit message buffer, have global buffer instead per-route, but then
11         make sure it is shared fairly across routes and connections (CORE);
12         also, do not buffer if the connection is set to unbuffered!
13
14 - HIGH: revisit handling of 'unbuffered' traffic! (CHANNEL/TUNNEL)
15         (need to push down through tunnel into connection selection);
16         At Tunnel-level, try to create connections that match channel
17         preferences (buffered/unbuffered) and select connections for
18          channel traffic that match channel preferences.
19
20 - HIGH: revisit handling of 'buffered' traffic: 4 is a rather small buffer; (CHANNEL)
21         maybe reserve more bits in 'options' to allow for buffer size control?
22         Or: maybe even better, calculated required buffer size based on latency
23         and throughput (and available memory)
24
25 - HIGH: if we receive BROKEN messages, cut down corresponding PATH (up to the
26         point of breakage) as well as connection/route (CORE)
27
28 - OPTIMIZATION: proper connection evaluation during connection management:
29   + PATHS: path desirability score calculations are not done
30   + CONNECTION: keep per-connection performance metrics;
31                 in particular, interact with channel (!) to see
32                 if we get ACKs indicating successful payload delivery.
33   + TUNNELS:
34     * when managing connections, distinguish those that
35       have (recently) had traffic from those that were
36       never ready (or not recently)
37     * consider quality of current connection set when deciding
38       how often to do maintenance
39     * interact with PEER to drive DHT GET/PUT operations based
40       on how much we like our connections
41
42
43 - OPTIMIZATION: optimize stopping/restarting DHT search to situations
44   where we actually need it (i.e. not if we have a direct connection,
45   or if we already have plenty of good short ones, or maybe even
46   to take a break if we have some connections and have searched a lot (?)) (PEER)