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