New upstream release
[quagga-debian.git] / TODO
1
2                            Quagga TODO list
3                              2013-03-29
4
5
6 This is the Quagga primary TODO list.  It is on git because that way changes
7 pass through the usual process just like code does, therefore they will have
8 the same visibility.
9
10 If you are working on something beyond a simple fix, to avoid double work it
11 is a good idea to submit a patch to this TODO list when you are starting,
12 listing what you're doing.  Also, as others may have done just that, check
13 the list before starting.
14
15 Google Summer of Code 2013 note:  this list double-serves as idea list for the
16 Summer of Code.  Ideas considered suitable for students are marked with a star
17 after the number, like this: "[Q999*] achieve world peace".  They will also
18 have extended descriptions.  Nevertheless, if you'd like to do something else,
19 just write a mail to the mailing list: quagga-dev@lists.quagga.net
20
21 "GSoC-Mentors:" listings are preliminary at this point.
22
23
24 Overall
25 =======
26
27 [Q000] improve unit test architecture
28
29 [Q001] kick invalid runtime tests from configure.ac, use list of supported
30                 OSes and their APIs instead.
31         Priority: low
32         State: patch half-done 2013-03-29 David Lamparter
33
34 [Q002*] clean up zebra IPC, remove code duplication, align to common API
35         Priority: high
36         GSoC-Mentors: David Lamparter, Christian Franke
37
38         Quagga posesses an IPC mechanism to exchange route information among
39         the different daemons and Zebra, the kernel-interface.  This mechanism
40         is implemented in libzebra, but is currently used in all sorts of
41         different ways in the individual protocol daemons.  Also, in the future
42         the entire protocol needs to be redone in an extensible way, so we're
43         able to support MPLS, BFD, Multi-Topology/Instance, VRFs, ...
44
45         This TODO entry only refers to the first-step API cleanup.  All the
46         daemons need to use a single, well-defined libzebra API.  Only after
47         this has been addressed can we look upon changing the protocol itself,
48         since by then it will be encapsulated inside libzebra.
49
50 [Q003] add multi-instance / multi-topology support to the individual protocols
51
52 [Q004] MPLS support
53         State: work in progress 2013-03-29 Renato Westphal, Timo Teräs
54
55 [Q005] BFD support
56         State: two old implementations exist, contact Hasso Tepper
57
58
59 library
60 =======
61
62 [L000] improve route_table speed, eg strided lookups for common prefix depths.
63
64 [L001] ipv6 addresses need concept of valid/preferred
65
66 [L002] implement a generic daemon access/control protocol (eg D-Bus like?
67                 simplified SNMP-a-like?  NETCONF?)
68
69 [L003] extend vty command definitions to allow them to be self-documenting
70                 i18n command help strings
71
72 [L004] create a common libspf (for ospfd, ospf6d and possibly isisd and more).
73                 cf. TODO item [O000] for the ospfd/ospf6d specific variant
74
75 [L005] stabilise the API (possibly including symbol/library versioning voodoo)
76
77 [L006] Document the exported API (DocBook/Doxygen?)
78
79 [LE00] incorporate library changes from Euro-IX branch, except threading
80
81 [LE01] incorporate threading library support from Euro-IX branch
82
83
84 zebra
85 =====
86
87 [Z000] Pointopoint address configuration.
88         Priority: low
89         State: patch done & tested 2013-03-29 David Lamparter
90
91 [Z001] Add support for valid and preferred lifetimes to IPv6 addresses
92
93 [Z002] proper support for (at least) 1-level recursive routes
94         Priority: high
95
96 [Z003] Ability to set src on routes, where systems support it.
97
98 [Z004] Ability to apply route-maps to daemon route updates.
99
100
101 bgpd
102 ====
103
104 [B000] HUP signal support (reload configuration file).
105
106 [B001*] BGP multi-path extension, relaxed mode
107         Priority: medium
108        Implemented, patch will be sent shortly
109        Pradosh Mohapatra, Cumulus Networks
110
111 [B002] move FSM state to be per-connection, not per-peer.
112
113 [B003] Add support for internal and minimum-metric MED setting
114
115
116 ripd
117 ====
118
119 [R000] Multipath support.
120
121
122 ospfd/ospf6d
123 ============
124
125 [O000] move SPF to common code
126
127 [O001] extend code sharing between ospfd and ospf6d beyond SPF
128
129 [O002*] OSPF testing replay tool
130         Priority: medium
131         GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter
132
133         In order to extensively test OSPF implementations, a tool to fake an
134         OSPF neighbor is immensely useful.  This tool needs to be capable of
135         forming an adjacency and pushing LSAs to the device to be tested.  To
136         maintain the adjacency, some minimal state tracking is useful.
137
138         In total, the tool needs to form an adjacency, read and push LSAs, and
139         output received LSAs.  Additional tools to generate LSAs from
140         specifications as well as verify received LSA correctness can then be
141         built on top of that.
142
143         The tool needs to support IPv4 and IPv6, possibly split into 2 tools
144         with some code sharing.
145
146 ospfd:
147
148 [O400] Demand circuits.
149         Priority: very low
150
151 [O401] Multiple instances.
152         Priority: medium
153
154 [O402] HUP signal treatment.
155         Priority: medium
156         State: patch on ML needs review 2012-06-04 Mattias Walström
157
158 ospf6d:
159
160 [O600*] fix ospf6d in general
161         Priority: high
162         State: patches tickling in from Cumulus Networks 2013-03-29 Dinesh Dutt
163         Implemented: p2p link support, ABR, Stub area/Totally Stubby area,
164         SPF throttling, Improving state machine to get performance/scale,
165         max-metric support, Improving ECMP to be > 4, Various other bug fixes
166
167
168 [O601*] OSPFv3 autoconfiguration, prefix assignment and sourcedest routing
169         Priority: medium
170         State: work in progress 2013-03-29 Edward Seabrook
171         GSoC-Mentors: David Lamparter
172
173         OSPFv3 application in the homenet is being designed to use several
174         extensions to the base protocol.  In order of dependency,
175         autoconfiguration, prefix assignment and sourcedest routing should
176         be implemented.
177
178         This task requires a good level of OSPF understanding plus proper
179         ability to follow IETF discussion about these points.  Also, since work
180         has already started on this, improvements must obviously build on top
181         of that.
182
183 isisd
184 =====
185
186 [I000] reassess isisd TODO
187
188 [I001*] IS-IS testing replay tool
189         Priority: medium
190         GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter
191
192         see [O002*].
193
194 [I002] Mesh groups (RFC2973)
195
196 [I003] Crypto authentication (RFC3567)
197
198
199 vtysh
200 =====
201
202 [V000] untangle readline specific bits
203
204 [V001] add a vtyd with a vty (ie telnet) frontend (as opposed to readline)
205
206 [V002] (=> [L002]) use daemon control protocol
207
208 [V003] better AAA support than just PAM, eg krb5, SASL, LDAP...
209