summaryrefslogtreecommitdiffstats
path: root/TODO
blob: 714d60febad4a751d83086cf7a5ebd87baa92924 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Core
~~~~
- client: Ctrl-R eats one more enter
- client: paging?
- client: data losses on large dumps?
- client: hidden `show ospf' commands?

- filters: free old attributes in rta_cow()

Documentation
~~~~~~~~~~~~~
- write doctool
- write documentation :|

Globals
~~~~~~~
- right usage of DBG vs. debug
- logging and tracing; use appropriate log levels
- check incoming packets and log errors!!
- check log calls for trailing newlines and log levels followed by comma
- check if all protocols set proper packet priorities and TTL's.
- try compiling with -Wunused
- does everybody test return value of sk_open?
- doc: references to RFC's we did follow
- protocols: implement CLI hooks and per-procotol CLI commands
- protocols: implement reconfigure hook
- protocols: use locking
- check use of system includes and sprintf()

Various ideas
~~~~~~~~~~~~~
- static: allow specifying a per-route filter program for setting route attributes?
- bgp: timing of updates?
- netlink: realms
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
- config: executable config files
- filters: user defined attributes?
- client: access control
- io: use poll if available
- IPv6 router advertisements
- real multipath (doesn't seem to be simple at all :()
- fake multipath (even less simple)
- route recalculation timing and flap dampening [see RFC2439 for algorithms]
- aggregate engine: standard route aggregation and summarization [RFC2519]
- aggregate engine: injection of manually configured pseudo-static routes
- generate default route if any working BGP connection exists (aggregate engine again?)
- generate default route to IGP's (aggregate engine yet another time?)
- look at RFC 2386 (QoS-based routing)
- cli: show tables?

OSPF
~~~~
	- refuse running on non-multicast devices
	- importing of device routes for networks where we don't run OSPF
	- check incoming packets using neighbor cache
	- RFC2328 appendix E: Use a better algorithm
	- automatic generation of external route tags (RFC1403)
	- RFC1587 NSSA areas
	- RFC2370 opaque LSA's
	- respect interface MTU and try not to create larger packets unless unavoidable

Documentation (sorry, its in czech)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Filtry:

o  Vysvetlit nesting a zastinovani.

Protocols:

o  passwords: syntaxe data uz, tusim, davno vypada jinak.

Struktura dokumentace:

o  Na konci (nebo ve zvlast sekci pro kazdy protokol?) by mel byt seznam referenci
   na vsechny mozne dokumenty, zejmena vsak vsechna RFC, kterymi se ridime nebo
   ktera maji neco spolecneho s tim, co delame (napriklad RPSL).

K jazyku:

o  K "BIRD Internet Routing Daemon" by mel patrit urcity clen.
o  Pokud je v zavorce cela veta, patri pred ')' tecka, pokud neni, tak
   nepatri.
o  Davej si pozor na rody -- router je vzdycky `it', nikdy `he'.

Jeste by to chtelo trosku podrobneji:

(1) zminit se o atributech, rici, co vsechno o route rikaji a odkazat  
    na kapitolu o filtrech, kde jsou presne nadefinovany
(2) kdyz mluvis o preferenci, mel bys rici, co to je (ze to je atribut)
    a kdo jej vlastne nastavuje (ze existuje globalni default pro typ
    protokolu, ktery muzes overridovat v konfiguraci protokolu, coz
    muzes pro konkretni routu overridovat filtrem).
(3) popsat spojeni mezi routovacimi tabulkami, filtry a protokoly