paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 1 | |
paul | 7a939e1 | 2004-07-27 16:57:09 +0000 | [diff] [blame] | 2 | Quagga TODO list |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 3 | 2013-03-29 |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 4 | |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 5 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 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. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 9 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 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. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 14 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 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 |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 20 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 21 | "GSoC-Mentors:" listings are preliminary at this point. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 22 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 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 | |
| 109 | [B002] move FSM state to be per-connection, not per-peer. |
| 110 | |
| 111 | [B003] Add support for internal and minimum-metric MED setting |
| 112 | |
| 113 | |
| 114 | ripd |
| 115 | ==== |
| 116 | |
| 117 | [R000] Multipath support. |
| 118 | |
| 119 | |
| 120 | ospfd/ospf6d |
| 121 | ============ |
| 122 | |
| 123 | [O000] move SPF to common code |
| 124 | |
| 125 | [O001] extend code sharing between ospfd and ospf6d beyond SPF |
| 126 | |
| 127 | [O002*] OSPF testing replay tool |
| 128 | Priority: medium |
| 129 | GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter |
| 130 | |
| 131 | In order to extensively test OSPF implementations, a tool to fake an |
| 132 | OSPF neighbor is immensely useful. This tool needs to be capable of |
| 133 | forming an adjacency and pushing LSAs to the device to be tested. To |
| 134 | maintain the adjacency, some minimal state tracking is useful. |
| 135 | |
| 136 | In total, the tool needs to form an adjacency, read and push LSAs, and |
| 137 | output received LSAs. Additional tools to generate LSAs from |
| 138 | specifications as well as verify received LSA correctness can then be |
| 139 | built on top of that. |
| 140 | |
| 141 | The tool needs to support IPv4 and IPv6, possibly split into 2 tools |
| 142 | with some code sharing. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 143 | |
| 144 | ospfd: |
| 145 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 146 | [O400] Demand circuits. |
| 147 | Priority: very low |
| 148 | |
| 149 | [O401] Multiple instances. |
| 150 | Priority: medium |
| 151 | |
| 152 | [O402] HUP signal treatment. |
| 153 | Priority: medium |
| 154 | State: patch on ML needs review 2012-06-04 Mattias Walström |
paul | 7a939e1 | 2004-07-27 16:57:09 +0000 | [diff] [blame] | 155 | |
| 156 | ospf6d: |
| 157 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 158 | [O600] fix ospf6d in general |
| 159 | Priority: high |
| 160 | State: patches tickling in from Cumulus Networks 2013-03-29 Dinesh Dutt |
paul | 7a939e1 | 2004-07-27 16:57:09 +0000 | [diff] [blame] | 161 | |
David Lamparter | 24c6bb8 | 2013-03-29 19:40:39 +0100 | [diff] [blame] | 162 | [O601*] OSPFv3 autoconfiguration, prefix assignment and sourcedest routing |
| 163 | Priority: medium |
| 164 | State: work in progress 2013-03-29 Edward Seabrook |
| 165 | GSoC-Mentors: David Lamparter |
| 166 | |
| 167 | OSPFv3 application in the homenet is being designed to use several |
| 168 | extensions to the base protocol. In order of dependency, |
| 169 | autoconfiguration, prefix assignment and sourcedest routing should |
| 170 | be implemented. |
| 171 | |
| 172 | This task requires a good level of OSPF understanding plus proper |
| 173 | ability to follow IETF discussion about these points. Also, since work |
| 174 | has already started on this, improvements must obviously build on top |
| 175 | of that. |
| 176 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 177 | isisd |
| 178 | ===== |
hasso | b1b57e2 | 2005-01-01 21:02:13 +0000 | [diff] [blame] | 179 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 180 | [I000] reassess isisd TODO |
hasso | b1b57e2 | 2005-01-01 21:02:13 +0000 | [diff] [blame] | 181 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 182 | [I001*] IS-IS testing replay tool |
| 183 | Priority: medium |
| 184 | GSoC-Mentors: Martin Winter, Christian Franke, David Lamparter |
hasso | b1b57e2 | 2005-01-01 21:02:13 +0000 | [diff] [blame] | 185 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 186 | see [O002*]. |
paul | 7a939e1 | 2004-07-27 16:57:09 +0000 | [diff] [blame] | 187 | |
David Lamparter | 3d1e579 | 2013-03-29 19:31:55 +0100 | [diff] [blame] | 188 | [I002] Mesh groups (RFC2973) |
| 189 | |
| 190 | [I003] Crypto authentication (RFC3567) |
| 191 | |
| 192 | |
| 193 | vtysh |
| 194 | ===== |
| 195 | |
| 196 | [V000] untangle readline specific bits |
| 197 | |
| 198 | [V001] add a vtyd with a vty (ie telnet) frontend (as opposed to readline) |
| 199 | |
| 200 | [V002] (=> [L002]) use daemon control protocol |
| 201 | |
| 202 | [V003] better AAA support than just PAM, eg krb5, SASL, LDAP... |
paul | 7a939e1 | 2004-07-27 16:57:09 +0000 | [diff] [blame] | 203 | |