summaryrefslogtreecommitdiff
path: root/TODO
blob: 0da35533675baf6a99e92e5b6415ee3228e1e2c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188

			   Quagga TODO list
                             2013-03-29


This is the Quagga primary TODO list.  It is on git because that way changes
pass through the usual process just like code does, therefore they will have
the same visibility.

If you are working on something beyond a simple fix, to avoid double work it
is a good idea to submit a patch to this TODO list when you are starting,
listing what you're doing.  Also, as others may have done just that, check
the list before starting.

Google Summer of Code 2013 note:  this list double-serves as idea list for the
Summer of Code.  Ideas considered suitable for students are marked with a star
after the number, like this: "[Q999*] achieve world peace".  They will also
have extended descriptions.  Nevertheless, if you'd like to do something else,
just write a mail to the mailing list: quagga-dev@lists.quagga.net

"GSoC-Mentors:" listings are preliminary at this point.


Overall
=======

[Q000] improve unit test architecture

[Q001] kick invalid runtime tests from configure.ac, use list of supported
		OSes and their APIs instead.
	Priority: low
	State: patch half-done 2013-03-29 David Lamparter

[Q002*] clean up zebra IPC, remove code duplication, align to common API
	Priority: high
	GSoC-Mentors: David Lamparter, Christian Franke

	Quagga posesses an IPC mechanism to exchange route information among
	the different daemons and Zebra, the kernel-interface.  This mechanism
	is implemented in libzebra, but is currently used in all sorts of
	different ways in the individual protocol daemons.  Also, in the future
	the entire protocol needs to be redone in an extensible way, so we're
	able to support MPLS, BFD, Multi-Topology/Instance, VRFs, ...

	This TODO entry only refers to the first-step API cleanup.  All the
	daemons need to use a single, well-defined libzebra API.  Only after
	this has been addressed can we look upon changing the protocol itself,
	since by then it will be encapsulated inside libzebra.

[Q003] add multi-instance / multi-topology support to the individual protocols

[Q004] MPLS support
	State: work in progress 2013-03-29 Renato Westphal, Timo Teräs

[Q005] BFD support
	State: two old implementations exist, contact Hasso Tepper


library
=======

[L000] improve route_table speed, eg strided lookups for common prefix depths.

[L001] ipv6 addresses need concept of valid/preferred

[L002] implement a generic daemon access/control protocol (eg D-Bus like?
		simplified SNMP-a-like?  NETCONF?)

[L003] extend vty command definitions to allow them to be self-documenting
		i18n command help strings

[L004] create a common libspf (for ospfd, ospf6d and possibly isisd and more).
		cf. TODO item [O000] for the ospfd/ospf6d specific variant

[L005] stabilise the API (possibly including symbol/library versioning voodoo)

[L006] Document the exported API (DocBook/Doxygen?)

[LE00] incorporate library changes from Euro-IX branch, except threading

[LE01] incorporate threading library support from Euro-IX branch


zebra
=====

[Z000] Pointopoint address configuration.
	Priority: low
	State: patch done & tested 2013-03-29 David Lamparter

[Z001] Add support for valid and preferred lifetimes to IPv6 addresses

[Z002] proper support for (at least) 1-level recursive routes
	Priority: high

[Z003] Ability to set src on routes, where systems support it.

[Z004] Ability to apply route-maps to daemon route updates.


bgpd
====

[B000] HUP signal support (reload configuration file).

[B001] BGP multi-path extension, relaxed mode
	Priority: medium

[B002] move FSM state to be per-connection, not per-peer.

[B003] Add support for internal and minimum-metric MED setting


ripd
====

[R000] Multipath support.


ospfd/ospf6d
============

[O000] move SPF to common code

[O001] extend code sharing between ospfd and ospf6d beyond SPF

[O002*] OSPF testing replay tool
	Priority: medium
	GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter

	In order to extensively test OSPF implementations, a tool to fake an
	OSPF neighbor is immensely useful.  This tool needs to be capable of
	forming an adjacency and pushing LSAs to the device to be tested.  To
	maintain the adjacency, some minimal state tracking is useful.

	In total, the tool needs to form an adjacency, read and push LSAs, and
	output received LSAs.  Additional tools to generate LSAs from
	specifications as well as verify received LSA correctness can then be
	built on top of that.

	The tool needs to support IPv4 and IPv6, possibly split into 2 tools
	with some code sharing.

ospfd:

[O400] Demand circuits.
	Priority: very low

[O401] Multiple instances.
	Priority: medium

[O402] HUP signal treatment.
	Priority: medium
	State: patch on ML needs review 2012-06-04 Mattias Walström

ospf6d:

[O600] fix ospf6d in general
	Priority: high
	State: patches tickling in from Cumulus Networks 2013-03-29 Dinesh Dutt

isisd
=====

[I000] reassess isisd TODO

[I001*] IS-IS testing replay tool
	Priority: medium
	GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter

	see [O002*].

[I002] Mesh groups (RFC2973)

[I003] Crypto authentication (RFC3567)


vtysh
=====

[V000] untangle readline specific bits

[V001] add a vtyd with a vty (ie telnet) frontend (as opposed to readline)

[V002] (=> [L002]) use daemon control protocol

[V003] better AAA support than just PAM, eg krb5, SASL, LDAP...