Core
~~~~
-- IPv6: hashing functions etc.
-
-- krt-iface: check whether the interface alias hack works
-
-- better memory allocators
-- real attribute cache
-- real neighbor cache
-
-- preferences of protocols
-
-- static: check validity of route destination?
+- socket open failure should not be fatal
+- &&,||: priorities
- static: allow specifying a per-route filter program for setting route attributes?
-- rte_update: check whether all bits not covered by masklen are zero
-- rte_update: debug mode
-
-- netlink: import Linux route attributes to our rta's, so that they can be filtered?
-
-- config: when parsing prefix, check zero bits
-
-- krt: rescan interfaces when route addition fails?
-
-- tagging of external routes?
-
-- io: use poll if available
-
-Commands
-~~~~~~~~
-- showing of routing table as seen by given protocol
-
-Documentation
-~~~~~~~~~~~~~
-- write doctool
-- write documentation :|
-
Globals
~~~~~~~
- right usage of DBG vs. debug
-- cleanup debugging calls
- logging and tracing; use appropriate log levels
- check incoming packets and log errors!!
-- check log calls for trailing newlines
+- check log calls for trailing newlines and log levels followed by comma
- check if all protocols set proper packet priorities and TTL's.
-- replace all NUM, IPA and expr tokens by constant filter expressions
- 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
~~~~~~~~~~~~~
+- client: Ctrl-R eats one more enter
+- bgp: timing of updates?
+- netlink: import Linux route attributes to our rta's, so that they can be filtered?
- config: executable config files
-- client: access control
-- IPv6 router advertisements
-- real multipath (doesn't seem to be simple at all :()
-- fake multipath (even less simple)
+- filters: user defined attributes?
+- io: use poll if available
- 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)
-
-
-RIP
-~~~
+- 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
-
-BGP
-~~~
- - aggregation, ATOMIC_AGGREGATE
- - communities
- - attributes must be sorted!
- - re-export of NEXT_HOP attribute
- - BGP session over currently down interface
- - LOCAL_PREF attribute
- - error notification received -> log error
- - set TTL to 1 (configurable?)
- - consulting IGP for next-hop information? (what if it changes?)
- - inter-advertisement delay???!
- - normalize (sort) incoming AS-SET's
- - maximum length of AS paths
- - expected neighbor AS
- - hold time
- - idle timer after error: initial value, exponential growth, maximum value
- - import of IGP routes (use external route tags from OSPF)
- - Use IP_RECVERR for BGP TCP sockets?
+ - Limit export rate of external LSAs (like Gated does)
+ - Bugfix in link state retransmission list (aging)
+ - Graceful OSPF restart - RFC3623