1
2			   Quagga TODO list
3                             2013-03-29
4
5
6This is the Quagga primary TODO list.  It is on git because that way changes
7pass through the usual process just like code does, therefore they will have
8the same visibility.
9
10If you are working on something beyond a simple fix, to avoid double work it
11is a good idea to submit a patch to this TODO list when you are starting,
12listing what you're doing.  Also, as others may have done just that, check
13the list before starting.
14
15Google Summer of Code 2013 note:  this list double-serves as idea list for the
16Summer of Code.  Ideas considered suitable for students are marked with a star
17after the number, like this: "[Q999*] achieve world peace".  They will also
18have extended descriptions.  Nevertheless, if you'd like to do something else,
19just write a mail to the mailing list: quagga-dev@lists.quagga.net
20
21"GSoC-Mentors:" listings are preliminary at this point.
22
23
24Overall
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
59library
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
84zebra
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
101bgpd
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
116ripd
117====
118
119[R000] Multipath support.
120
121
122ospfd/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
146ospfd:
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
158ospf6d:
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
183isisd
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
199vtysh
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
210