0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00
bird/TODO
Martin Mares d272fe22dd Separated `official protocol names' used in status dumps from name templates
used for automatic generation of instance names.

	protocol->name is the official name
	protocol->template is the name template (usually "name%d"),
		should be all lowercase.

Updated all protocols to define the templates, checked that their configuration
grammar includes proto_name which generates the name and interns it in the
symbol table.
2000-01-17 11:52:50 +00:00

127 lines
3.6 KiB
Plaintext

Core
~~~~
- IPv6: router advertisements
- IPv6: test it!
- 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?
- socket: Use IP_RECVERR for BGP TCP sockets?
- 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?
- krt: does PERSIST mode have any sense if kernel syncer is shut down as last?
- krt: check behaviour wrt. reconfiguration of routing tables
- tagging of external routes?
- io: use poll if available
Commands
~~~~~~~~
show <name> # show everything you know about symbol <name>
rip ??? [<name>]
ospf ??? [<name>]
static ??? [<name>]
symbols
- showing of routing table as seen by given protocol
- showing of deleted routing tables and filters
Roadmap
~~~~~~~
- Allocators and data structures
- Client
- Remaining bits of IPv6 support (radvd)
- RIPv6
- BGP?
- Logging and debugging messages
Client
~~~~~~
- write it!
Documentation
~~~~~~~~~~~~~
- write doctool
- write documentation :|
Cleanup
~~~~~~~
- 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?
- add references to RFC's we did follow
- protocols: implement CLI hooks
- protocols: implement reconfigure hook
- protocols: use locking
Various ideas
~~~~~~~~~~~~~
- 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)