Quagga Routing Project
Quagga is a routing software suite, providing implementations of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms, particularly FreeBSD, Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra which was developed by Kunihiro Ishiguro. The Quagga tree aims to build a more involved community around Quagga than the current centralised model of GNU Zebra.
The Quagga architecture consists of a core daemon, zebra, which acts as an abstraction layer to the underlying Unix kernel and presents the Zserv API over a Unix or TCP stream to Quagga clients. It is these Zserv clients which typically implement a routing protocol and communicate routing updates to the zebra daemon. Existing Zserv implementations are:
– kernel interface, static routes, zserv server
– RIPv1/RIPv2 for IPv4 and RIPng for IPv6
– OSPFv2 and OSPFv3
– BGPv4+ (including address family support for multicast and IPv6)
– IS-IS with support for IPv4 and IPv6
with additional work and/or externally:
– BABEL wireless mesh routing (IPv4 & IPv6)
under development or unmaintained:
– MPLS Label Distribution Protocol
– Bidirectional Forwarding Detection
Support for OSPFv3 and IS-IS is various beta states currently; IS-IS for IPv4 is believed to be usable while OSPFv3 and IS-IS for IPv6 have known issues.
BABEL support is primarily developed as part of Quagga-RE.
Additionally, the Quagga architecture has a rich development library to facilitate the implementation of protocol/client daemons, coherent in configuration and administrative behaviour.
Quagga daemons are each configurable via a network accessible CLI (called a ‘vty’). The CLI follows a style similar to that of other routing software. There is an additional tool included with Quagga called ‘vtysh’, which acts as a single cohesive front-end to all the daemons, allowing one to administer nearly all aspects of the various Quagga daemons in one place.
Please see the&nbs