Core ~~~~ - IPv6: hashing functions etc. - krt-iface: check whether the interface alias hack works - krt-iface and netlink: unnumberedness of tunnels - better memory allocators - real attribute cache - real neighbor cache - preferences of protocols - static: check validity of route destination? - 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: executable config files - config: when parsing prefix, check zero bits - config: useless rules when protocols disabled - config: better datetime format - 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 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 Various ideas ~~~~~~~~~~~~~ - client: access control - 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) RIP ~~~ 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?