[cvs] / netsukuku / src / TODO Repository:
ViewVC logotype

View of /netsukuku/src/TODO

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.229 - (download) (annotate)
Mon Mar 12 23:18:42 2007 UTC (3 years, 5 months ago) by alpt
Branch: MAIN
CVS Tags: HEAD
Changes since 1.228: +0 -2 lines
Wow, after a long time the CVS is again up and running.

 * Starting to code t2.[ch]
    1 --
    2 Not parallelizable TODOs. This means that if you want to implement one of
    3 the following TODOs, you have first to coordinate with someone, learn what he
    4 did and what you have to do to continue the development.
    5 The list of parallelizable TODOs is in ./TOCODE
    6 --
    7 
    8 
    9 *
   10 **
   11 ***   HIGH PRIORITY
   12 **
   13 *
   14 
   15 * (generally these TODOs are already being implemented at the moment)
   16 
   17 - See TODO.h
   18 
   19 - igw.c must register the event QSPN_DEL_NODE, to notice the death of
   20   a igw.
   21 
   22 - Remove ipv6-gmp.[ch]. It's no more necessary. Remove also the dependence of
   23   libgmp.
   24 
   25 - Option -tiny which enables memory hacks, f.e. see :MAX_METRIC_ROUTES:
   26 
   27 - General API
   28   - add_new_dev()
   29   - tracer_pkt_add_build() // tracer_pkt_add_unpack()
   30      _______________________
   31     | TRACER PKT      |
   32     |     |
   33     | int size;   |
   34     |_______________________|
   35     ||    CHUNK 1 ( QSPN ) ||
   36     ||           ||
   37     || int chunk_size;     ||
   38     ||           ||
   39     || QSPN PKT;           ||
   40     ||_____________________||
   41     |_______________________|
   42     ||    CHUNK 2 ( IGS )  ||
   43     ||           ||
   44     || int chunk_size;     ||
   45     ||           ||
   46     || IGS PKT;            ||
   47     ||_____________________||
   48     |_______________________|
   49     ||    CHUNK 3 ( BW )   ||
   50     ||           ||
   51     || int chunk_size;     ||
   52     ||           ||
   53     || BANDWIDTH PKT;      ||
   54     ||_____________________||
   55     |_______________________|
   56     ||    CHUNK N ( ...  ) ||
   57     ||           ||
   58     || int chunk_size;     ||
   59     ||           ||
   60     || ...  PKT;           ||
   61     ||_____________________||
   62     ||_____________________||
   63 
   64 - Segfault:  ./ntkd -ddddd -D -r
   65 - Viphilama: http://lab.dyne.org/Ntk_viphilama
   66 
   67 - Rehook
   68   - if we are changing gid because of a collision, we must not mark all
   69           the (g)rnodes of our gnode as GMAP_HGNODE, in fact, we've hooked
   70     only to our new gnode.
   71 
   72   - When the rehook completes, wait a bit before considering other
   73     rehooks.
   74 
   75   - The GMAP_HGNODE flag must be removed too! Right now it is just set
   76     and never removed.
   77 
   78 - Netsukuku WRT firmware:
   79   - a configured openwrt release with all the necessary kernel modules
   80     and packages installed
   81   - A web interface to configure the /etc/netsukuku/netsukuku.conf file
   82     and to use the rc.ntk script.
   83 
   84 - bugs
   85   - comments in resolv.conf are not considered:
   86     NOTE: Do not resolv this BUG: Now It's useful
   87 
   88 *
   89 **
   90 ***   MEDIUM PRIORITY
   91 **
   92 *
   93 
   94 - Implement a test suite, which performs several automatic tests on ntkd.
   95   UserModeLinux should be used in conjunction with a lot of scripts.
   96 
   97 - Equalize multipath routes. The `equalize' module is still experimental in
   98   the kernel.
   99 
  100 - bandwidth measurement
  101   - do not delete an inet-gw if there's still bw passing on it.
  102 
  103 - Bandwidth weight for each entry of the qspn (not just rtt and latency):
  104   - what to use to get the bandwidth of a network interface?
  105     Use `iperf' to measure once the max link bw, then monitor with
  106     iptables the link and calculate the used bw.
  107   - See http://lab.dyne.org/Ntk_bandwidth_measurement
  108 
  109 - Gnodes contiguity
  110   - gnode re-hook
  111     - When we have two different gnodes A and C, and
  112       then B hooks to A, nothing happens, since C, doesn't
  113       receive any qspn_pkt
  114     - test: two (g)nodes with the same IP
  115       - currently only in particular situations the rehook
  116         isn't possible: A - A,  A - B - A.
  117 
  118   - Challenge
  119     - RSA between rnodes: the nodes which are already hooked ask
  120       for the public key to the node which is hooking.
  121     - Creation of the problem.
  122     - Resolution of the problem.
  123     - Diffusion of the reply.
  124     - Reject of challenge for X time after a first challenge has
  125       been completed.
  126     - Do just one challenge at the same time, reject/delay all the
  127       other which came later.
  128     - If the challenge was rejected/delayed wait the right amount
  129       of time and retry.
  130     - Ban of gnodes which lost the challenge ?
  131     - Challenge between two gnode not contiguous, which have the
  132       same gid.
  133 
  134 - turn andns_lib.c into a real shared library
  135 
  136 - SNSD
  137   - pubkey: automatic deletion request
  138 
  139 - Can multiple qspn packets be processed concurrently? Or do we need mutexes
  140   for them? Only the tests will give answer.
  141 
  142 *
  143 **
  144 ***   LOW PRIORITY
  145 **
  146 *
  147 
  148 - ANDNA: Hostname cancellation request
  149 
  150 - ntk-finger: it would be handy to be able to know some info on a particular
  151   node. The user puts his node info in /etc/netsukuku/finger.
  152   $ ntk-finger remote_node_ip
  153   will print out its /etc/netsukuku/finger.
  154     - why don't we just use fingerd?
  155     - too bugged?
  156   - and what about a stupid shell script like this:
  157     while [ 0 ]; do cat /etc/netsukuku/finger | nc -l -p 79; done
  158 
  159 - renice the NetsukukuD process?
  160 
  161 - small memory: if the system has <= X Mb of free memory, switch on dumb mode.
  162   In this mode NetsukukuD keeps only the list of rnodes and forwards every
  163   request to one of them. The lcl_cache is kept too.
  164 
  165 - better memory utilisation: see MAXMSGSZ, PKT_MAX_MSG_SZ, pkt_verify_hdr(),
  166            pkt_uncompress(), andns_uncompress().
  167   - The maximum size of an uncompressed or compressed packet must be
  168     proportional to the total free memory reserved to the daemon.
  169   - pkt_uncompress() must be able to drop the packet if there's no
  170     free memory available. The same must be done by pkt_recv() and
  171     other similar functions.
  172 
  173 - option to disable the modification of the routing table
  174 
  175 - option to change on runtime the wait-times of the QSPN, radar, etc...
  176   -normal, -high, -low
  177 
  178 - option (both on command line and in netsukuku.conf) to disable the saving of
  179   caches. (the keyring will always be saved).
  180 
  181 - Change with something else the eliminable fatal calls in netsukuku_hook()
  182 
  183 - Ipv6 support: use ff05::23 for multicast. qspn_gnode_count isn't IPv6
  184   compatible!
  185 
  186 - Test request.c
  187 
  188 - Port the kernel route code for *BSD: take a look at rt_ioctl.c and
  189   rt_socket.c of quagga.
  190 
  191 - use PREFIX in the man pages
  192 
  193 - xmalloc.c: Implement a "wrapper heap". We do a big malloc() at the start and
  194        then we manage personally it, in this way we avoid the huge
  195        overhead of malloc.
  196 
  197 - Compressed maps: save the files in compressed formats
  198 
  199 - Write the documentation for the code that can be used by other
  200   programs. (By the way it is already commented.)
  201 
  202 - krnl_conf.c: it reads /proc/kallsyms and verifies that there are the symbols
  203          used by the modules/builtins kernel code netsukuku is dependent
  204          on. kernel_conf.h will have an array like pkt_op_table (pkts.h).
  205          Each symbol will be checked by the init functions. There will be
  206          also associated an help function that tells what to do when the
  207          symbol is missing in /proc/kallsyms. For example,
  208          mark_rule_init() will do:
  209           if(krnl_conf_check("netfilter") <0) {
  210         krnl_netfilter_usage();
  211         return -1
  212       }
  213 
  214 - Launch a trigger script. Possible events: INET_UP, INET_DOWN, NEW_RNODE,
  215   DEAD_RNODE.
  216 
  217 - restore the network when NetsukukuD is closed (call /etc/rc.d/rc.inet1 ?)
  218 
  219 - Use binreloc from autopackage (  http://autopackage.org/docs/binreloc/ )
  220 
  221 - /*\ \*/

alpt (at) freaknet (dot) org
ViewVC Help
Powered by ViewVC 1.1-dev