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
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.
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
21 "GSoC-Mentors:" listings are preliminary at this point.
27 [Q000] improve unit test architecture
29 [Q001] kick invalid runtime tests from configure.ac, use list of supported
30 OSes and their APIs instead.
32 State: patch half-done 2013-03-29 David Lamparter
34 [Q002*] clean up zebra IPC, remove code duplication, align to common API
36 GSoC-Mentors: David Lamparter, Christian Franke
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, ...
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.
50 [Q003] add multi-instance / multi-topology support to the individual protocols
53 State: work in progress 2013-03-29 Renato Westphal, Timo Teräs
56 State: two old implementations exist, contact Hasso Tepper
62 [L000] improve route_table speed, eg strided lookups for common prefix depths.
64 [L001] ipv6 addresses need concept of valid/preferred
66 [L002] implement a generic daemon access/control protocol (eg D-Bus like?
67 simplified SNMP-a-like? NETCONF?)
69 [L003] extend vty command definitions to allow them to be self-documenting
70 i18n command help strings
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
75 [L005] stabilise the API (possibly including symbol/library versioning voodoo)
77 [L006] Document the exported API (DocBook/Doxygen?)
79 [LE00] incorporate library changes from Euro-IX branch, except threading
81 [LE01] incorporate threading library support from Euro-IX branch
87 [Z000] Pointopoint address configuration.
89 State: patch done & tested 2013-03-29 David Lamparter
91 [Z001] Add support for valid and preferred lifetimes to IPv6 addresses
93 [Z002] proper support for (at least) 1-level recursive routes
96 [Z003] Ability to set src on routes, where systems support it.
98 [Z004] Ability to apply route-maps to daemon route updates.
104 [B000] HUP signal support (reload configuration file).
106 [B001*] BGP multi-path extension, relaxed mode
108 Implemented, patch will be sent shortly
109 Pradosh Mohapatra, Cumulus Networks
111 [B002] move FSM state to be per-connection, not per-peer.
113 [B003] Add support for internal and minimum-metric MED setting
119 [R000] Multipath support.
125 [O000] move SPF to common code
127 [O001] extend code sharing between ospfd and ospf6d beyond SPF
129 [O002*] OSPF testing replay tool
131 GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter
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.
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.
143 The tool needs to support IPv4 and IPv6, possibly split into 2 tools
144 with some code sharing.
148 [O400] Demand circuits.
151 [O401] Multiple instances.
154 [O402] HUP signal treatment.
156 State: patch on ML needs review 2012-06-04 Mattias Walström
160 [O600*] fix ospf6d in general
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
168 [O601*] OSPFv3 autoconfiguration, prefix assignment and sourcedest routing
170 State: work in progress 2013-03-29 Edward Seabrook
171 GSoC-Mentors: David Lamparter
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
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
186 [I000] reassess isisd TODO
188 [I001*] IS-IS testing replay tool
190 GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter
194 [I002] Mesh groups (RFC2973)
196 [I003] Crypto authentication (RFC3567)
202 [V000] untangle readline specific bits
204 [V001] add a vtyd with a vty (ie telnet) frontend (as opposed to readline)
206 [V002] (=> [L002]) use daemon control protocol
208 [V003] better AAA support than just PAM, eg krb5, SASL, LDAP...