123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- *
- **
- *** HIGH PRIORITY
- **
- *
-
- - restore the network when Netsukuku is closed (call /etc/rc.d/rc.inet1 ?)
-
- - Netsukuku WRT firmware:
- - a configured openwrt release with all the necessary kernel modules
- and packages installed
- - A GUI interface to configure the /etc/netsukuku/netsukuku.conf file
- and to use the rc.ntk script.
-
- - bugs
- - comments in resolv.conf are not considered:
- NOTE: Do not resolv this BUG: Now It's useful
-
- - resolv.conf is not reverted when netsukuku is closed, If it was ran
- in restricted mode/IGS. <--- I fixed this, But it's basically a hack.
-
- - Netsukuku adds bizzare characters when using restricted/IGS, I.E this.
- (#Qq`9TA^B)
-
- - IGS is not functional due to tunl0 failing to be configured.
-
- - Netsukuku cannot discover other nodes when running on wlan, Even when wlan is configured by ntk-wifi.
-
- - Netsukuku cannot discover other nodes on ethernet either, This may be a bug preventing any discovery/pairing of any nodes.
-
- *
- **
- *** MEDIUM PRIORITY
- **
- *
-
- - Equalize multipath routes. The `equalize' module is still experimental in
- the kernel.
-
- - bandwidth measurement
- - do not delete an inet-gw if there's still bw passing on it.
-
- - Viphilama: http://lab.dyne.org/Ntk_viphilama
-
- - Bandwidth weight for each entry of the qspn (not just rtt and latency):
- - what to use to get the bandwidth of a network interface?
- Use `iperf' to measure once the max link bw, then monitor with
- iptables the link and calculate the used bw.
- - See http://lab.dyne.org/Ntk_bandwidth_measurement
-
- - Gnodes contiguity
- - gnode re-hook
- - When we have two different gnodes A and C, and
- then B hooks to A, nothing happens, since C, doesn't
- receive any qspn_pkt
- - test: two (g)nodes with the same IP
- - currently only in particular situations the rehook
- isn't possible: A - A, A - B - A.
-
- - Challenge
- - RSA between rnodes: the nodes which are already hooked ask
- for the public key to the node which is hooking.
- - Creation of the problem.
- - Resolution of the problem.
- - Diffusion of the reply.
- - Reject of challenge for X time after a first challenge has
- been completed.
- - Do just one challenge at the same time, reject/delay all the
- other which came later.
- - If the challenge was rejected/delayed wait the right amount
- of time and retry.
- - Ban of gnodes which lost the challenge ?
- - Challenge between two gnode not contiguous, which have the
- same gid.
-
- - turn andns_lib.c into a real shared library
-
- - SNSD
- - pubkey: automatic deletion request
-
- - A firewall script to turn a ntk node into a routing only node.
-
-
- other ntk nodes
- |
- |
- |
- _________
- | N |
- Internet ---------- | WRT ntk | - - w i f i - - - Ntk node A
- |_________| \
- | \
- | \ Ntk node B
- L A N
-
- If N is set to a routing only node, then the nodes A and B will always be
- able to reach the Internet and the "other ntk nodes" through it, but they
- will not be able to reach the LAN connected to the node N.
- Optionally the node N can leave some "backdoor" ports opened, f.e. it might
- want to leave a ssh login which accepts keys authentication only.
-
- The port used by Netsukuku will be leaved open too, in this way the nodes
- can still communicate between them.
-
- - Can multiple qspn packets be processed concurrently? Or do we need mutexes
- for them? Only the tests will give answer.
-
- *
- **
- *** LOW PRIORITY
- **
- *
-
- - Interactive shell/console. Some commands that should be implemented:
- "stats" gives statistics,
- "rnodes" show the list of rnodes,
- "int_map" dumps the internal map in a ASCIIful way,
- "ext_map", "bnode_map", "andna_cache", ...,
- "flush rhcache"
-
- - ntk-finger: it would be handy to be able to know some info on a particular
- node. The user puts his node info in /etc/netsukuku/finger.
- $ ntk-finger remote_node_ip
- will print out its /etc/netsukuku/finger.
- - why don't we just use fingerd?
- - too bugged?
- - and what about a stupid shell script like this:
- while [ 0 ]; do cat /etc/netsukuku/finger | nc -l -p 79; done
-
- - renice the NetsukukuD process?
-
- - small memory: if the system has <= X Mb of free memory, switch on dumb mode.
- In this mode NetsukukuD keeps only the list of rnodes and forwards every
- request to one of them. The lcl_cache is kept too.
-
- - better memory utilisation: see MAXMSGSZ, PKT_MAX_MSG_SZ, pkt_verify_hdr(),
- pkt_uncompress(), andns_uncompress().
- - The maximum size of an uncompressed or compressed packet must be
- proportional to the total free memory reserved to the daemon.
- - pkt_uncompress() must be able to drop the packet if there's no
- free memory available. The same must be done by pkt_recv() and
- other similar functions.
-
- - option to disable the modification of the routing table
-
- - option to change on runtime the wait-times of the QSPN, radar, etc...
- -normal, -high, -low
-
- - option (both on command line and in netsukuku.conf) to disable the saving of
- caches. (the keyring will always be saved).
-
- - Change with something else the eliminable fatal() calls in netsukuku_hook()
-
- - Ipv6 support: use ff05::23 for multicast. qspn_gnode_count isn't IPv6
- compatible!
-
- - Test request.c
-
- - Port the kernel route code for *BSD: take a look at rt_ioctl.c and
- rt_socket.c of quagga.
-
- - use PREFIX in the man pages
-
- - xmalloc.c: Implement a "wrapper heap". We do a big malloc() at the start and
- then we manage personally it, in this way we avoid the huge
- overhead of malloc.
-
- - Compressed maps: save the files in compressed formats
-
- - API for the syncronization of the maps the daemon. A third party program,
- might want to have always the latest maps.
-
- - Write the documentation for the code that can be used by other
- programs. (By the way it is already commented.)
-
- - krnl_conf.c: it reads /proc/kallsyms and verifies that there are the symbols
- used by the modules/builtins kernel code netsukuku is dependent
- on. kernel_conf.h will have an array like pkt_op_table (pkts.h).
- Each symbol will be checked by the init functions. There will be
- also associated an help function that tells what to do when the
- symbol is missing in /proc/kallsyms. For example,
- mark_rule_init() will do:
- if(krnl_conf_check("netfilter") <0) {
- krnl_netfilter_usage();
- return -1
- }
-
- - Launch a trigger script. Possible events: INET_UP, INET_DOWN, NEW_RNODE,
- DEAD_RNODE.
-
- - Use bireloc from autopackage
-
- - Use qemu to make Netsukuku run on windows?!?
-
- - /*\ \*/
|