TODO 3.28 KB
Newer Older
1
2
Core
~~~~
3
4
* protocols: implement dumping of protocol-dependent rte attributes

5
6
- io.c: refuse old-style multicasts for unnumbered interfaces?

7
8
- prefer loopback addresses as router IDs (dummy interface?)

Martin Mareš's avatar
Martin Mareš committed
9
- config: executable config files
10

11
12
- do we really need preconfig?

13
- counters (according to SNMP MIB?)
14
15
- better memory allocators
- default preferences of protocols: prefer BGP over OSPF/RIP external routes?
Martin Mareš's avatar
Martin Mareš committed
16
- secondary addresses -> subinterfaces or ignore
17

18
- static: check validity of route destination?
19

Martin Mareš's avatar
Martin Mareš committed
20
21
- device: configuration of interface patterns

Martin Mareš's avatar
Martin Mareš committed
22
- adding of route: check whether all bits not covered by masklen are zero
23

24
25
- netlink: import Linux route attributes to our rta's, so that they can be filtered?

26
27
- iface: when seen an invalid broadcast, fix it up or at least report
- iface: we always need ifindex at least for PtP links (OSPF)
28
- iface: interface filters should support filtering by IP address as well
29
- iface: SIOCGIFINDEX exists on glibc systems, but it doesn't work on 2.0.x kernels!
30

31
32
- socket: Use IP_RECVERR for BGP TCP sockets?

33
34
- OSPF: refuse running on non-multicast devices

Martin Mareš's avatar
Martin Mareš committed
35
36
37
38
39
40
41
42
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.
Martin Mareš's avatar
Martin Mareš committed
43
- replace all NUM, IPA and expr tokens by constant filter expressions
44
- try compiling with -Wunused
45
- does everybody test return value of sk_open?
Martin Mareš's avatar
Martin Mareš committed
46
47
48
49
50

Various ideas
~~~~~~~~~~~~~
- real multipath (doesn't seem to be simple at all :()
- fake multipath (even less simple)
Martin Mareš's avatar
Martin Mareš committed
51
- route recalculation timing and flap dampening [see RFC2439 for algorithms]
Martin Mareš's avatar
Martin Mareš committed
52
53
54
55
- aggregate engine: standard route aggregation and summarization
- 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?)
56
57


58
59
60
61
62
63
RIP
~~~
	- RIP: export-only and import-only mode?
	- drop RIPv1 (Historic protocol)?
	- Route Tag
	- limit routing table xfer (frequency, only to neighbors)
Martin Mareš's avatar
Martin Mareš committed
64
	- multicast on/off (per interface)
65

66
67
68
OSPF
~~~~
	- importing of device routes for networks where we don't run OSPF
Martin Mareš's avatar
Martin Mareš committed
69
	- check incoming packets using neighbor cache
70
	- stub area: either no external routes or only default route
Martin Mareš's avatar
Martin Mareš committed
71
	- RFC2328 appendix E: Use a better algorithm
72
	- automatic generation of external route tags (RFC1403)
Martin Mareš's avatar
Martin Mareš committed
73
74
75
76
	- RFC1587 NSSA areas
	- RFC2370 opaque LSA's
	- RFC1793 Demand Circuit Support ??
	- respect interface MTU and try not to create larger packets unless unavoidable
77
78
79
80
81
82


BGP
~~~
	- in, local, out RIB
	- maxsize=4096
83
	- detection of loops
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
	- aggregation, ATOMIC_AGGREGATE
	- communities
	- confederations
	- 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)