You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TODO 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. *
  2. **
  3. *** HIGH PRIORITY
  4. **
  5. *
  6. - restore the network when Netsukuku is closed (call /etc/rc.d/rc.inet1 ?)
  7. - Netsukuku WRT firmware:
  8. - a configured openwrt release with all the necessary kernel modules
  9. and packages installed
  10. - A GUI interface to configure the /etc/netsukuku/netsukuku.conf file
  11. and to use the rc.ntk script.
  12. - bugs
  13. - comments in resolv.conf are not considered:
  14. NOTE: Do not resolv this BUG: Now It's useful
  15. - resolv.conf is not reverted when netsukuku is closed, If it was ran
  16. in restricted mode/IGS. <--- I fixed this, But it's basically a hack.
  17. - Netsukuku adds bizzare characters when using restricted/IGS, I.E this.
  18. (#Qq`9TA^B)
  19. - IGS is not functional due to tunl0 failing to be configured.
  20. - Netsukuku cannot discover other nodes when running on wlan, Even when wlan is configured by ntk-wifi.
  21. - Netsukuku cannot discover other nodes on ethernet either, This may be a bug preventing any discovery/pairing of any nodes.
  22. *
  23. **
  24. *** MEDIUM PRIORITY
  25. **
  26. *
  27. - Equalize multipath routes. The `equalize' module is still experimental in
  28. the kernel.
  29. - bandwidth measurement
  30. - do not delete an inet-gw if there's still bw passing on it.
  31. - Viphilama: http://lab.dyne.org/Ntk_viphilama
  32. - Bandwidth weight for each entry of the qspn (not just rtt and latency):
  33. - what to use to get the bandwidth of a network interface?
  34. Use `iperf' to measure once the max link bw, then monitor with
  35. iptables the link and calculate the used bw.
  36. - See http://lab.dyne.org/Ntk_bandwidth_measurement
  37. - Gnodes contiguity
  38. - gnode re-hook
  39. - When we have two different gnodes A and C, and
  40. then B hooks to A, nothing happens, since C, doesn't
  41. receive any qspn_pkt
  42. - test: two (g)nodes with the same IP
  43. - currently only in particular situations the rehook
  44. isn't possible: A - A, A - B - A.
  45. - Challenge
  46. - RSA between rnodes: the nodes which are already hooked ask
  47. for the public key to the node which is hooking.
  48. - Creation of the problem.
  49. - Resolution of the problem.
  50. - Diffusion of the reply.
  51. - Reject of challenge for X time after a first challenge has
  52. been completed.
  53. - Do just one challenge at the same time, reject/delay all the
  54. other which came later.
  55. - If the challenge was rejected/delayed wait the right amount
  56. of time and retry.
  57. - Ban of gnodes which lost the challenge ?
  58. - Challenge between two gnode not contiguous, which have the
  59. same gid.
  60. - turn andns_lib.c into a real shared library
  61. - SNSD
  62. - pubkey: automatic deletion request
  63. - A firewall script to turn a ntk node into a routing only node.
  64. other ntk nodes
  65. |
  66. |
  67. |
  68. _________
  69. | N |
  70. Internet ---------- | WRT ntk | - - w i f i - - - Ntk node A
  71. |_________| \
  72. | \
  73. | \ Ntk node B
  74. L A N
  75. If N is set to a routing only node, then the nodes A and B will always be
  76. able to reach the Internet and the "other ntk nodes" through it, but they
  77. will not be able to reach the LAN connected to the node N.
  78. Optionally the node N can leave some "backdoor" ports opened, f.e. it might
  79. want to leave a ssh login which accepts keys authentication only.
  80. The port used by Netsukuku will be leaved open too, in this way the nodes
  81. can still communicate between them.
  82. - Can multiple qspn packets be processed concurrently? Or do we need mutexes
  83. for them? Only the tests will give answer.
  84. *
  85. **
  86. *** LOW PRIORITY
  87. **
  88. *
  89. - Interactive shell/console. Some commands that should be implemented:
  90. "stats" gives statistics,
  91. "rnodes" show the list of rnodes,
  92. "int_map" dumps the internal map in a ASCIIful way,
  93. "ext_map", "bnode_map", "andna_cache", ...,
  94. "flush rhcache"
  95. - ntk-finger: it would be handy to be able to know some info on a particular
  96. node. The user puts his node info in /etc/netsukuku/finger.
  97. $ ntk-finger remote_node_ip
  98. will print out its /etc/netsukuku/finger.
  99. - why don't we just use fingerd?
  100. - too bugged?
  101. - and what about a stupid shell script like this:
  102. while [ 0 ]; do cat /etc/netsukuku/finger | nc -l -p 79; done
  103. - renice the NetsukukuD process?
  104. - small memory: if the system has <= X Mb of free memory, switch on dumb mode.
  105. In this mode NetsukukuD keeps only the list of rnodes and forwards every
  106. request to one of them. The lcl_cache is kept too.
  107. - better memory utilisation: see MAXMSGSZ, PKT_MAX_MSG_SZ, pkt_verify_hdr(),
  108. pkt_uncompress(), andns_uncompress().
  109. - The maximum size of an uncompressed or compressed packet must be
  110. proportional to the total free memory reserved to the daemon.
  111. - pkt_uncompress() must be able to drop the packet if there's no
  112. free memory available. The same must be done by pkt_recv() and
  113. other similar functions.
  114. - option to disable the modification of the routing table
  115. - option to change on runtime the wait-times of the QSPN, radar, etc...
  116. -normal, -high, -low
  117. - option (both on command line and in netsukuku.conf) to disable the saving of
  118. caches. (the keyring will always be saved).
  119. - Change with something else the eliminable fatal() calls in netsukuku_hook()
  120. - Ipv6 support: use ff05::23 for multicast. qspn_gnode_count isn't IPv6
  121. compatible!
  122. - Test request.c
  123. - Port the kernel route code for *BSD: take a look at rt_ioctl.c and
  124. rt_socket.c of quagga.
  125. - use PREFIX in the man pages
  126. - xmalloc.c: Implement a "wrapper heap". We do a big malloc() at the start and
  127. then we manage personally it, in this way we avoid the huge
  128. overhead of malloc.
  129. - Compressed maps: save the files in compressed formats
  130. - API for the syncronization of the maps the daemon. A third party program,
  131. might want to have always the latest maps.
  132. - Write the documentation for the code that can be used by other
  133. programs. (By the way it is already commented.)
  134. - krnl_conf.c: it reads /proc/kallsyms and verifies that there are the symbols
  135. used by the modules/builtins kernel code netsukuku is dependent
  136. on. kernel_conf.h will have an array like pkt_op_table (pkts.h).
  137. Each symbol will be checked by the init functions. There will be
  138. also associated an help function that tells what to do when the
  139. symbol is missing in /proc/kallsyms. For example,
  140. mark_rule_init() will do:
  141. if(krnl_conf_check("netfilter") <0) {
  142. krnl_netfilter_usage();
  143. return -1
  144. }
  145. - Launch a trigger script. Possible events: INET_UP, INET_DOWN, NEW_RNODE,
  146. DEAD_RNODE.
  147. - Use bireloc from autopackage
  148. - Use qemu to make Netsukuku run on windows?!?
  149. - /*\ \*/