@node Overview
@chapter Overview
@cindex Overview

  @uref{http://www.quagga.net,,Quagga} is a routing software package that
provides TCP/IP based routing services with routing protocols support such
as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (@pxref{Supported
RFCs}). Quagga also supports special BGP Route Reflector and Route Server
behavior.  In addition to traditional IPv4 routing protocols, Quagga also
supports IPv6 routing protocols.  With SNMP daemon which supports SMUX
protocol, Quagga provides routing protocol MIBs (@pxref{SNMP Support}).

  Quagga uses an advanced software architecture to provide you with a high
quality, multi server routing engine. Quagga has an interactive user
interface for each routing protocol and supports common client commands. 
Due to this design, you can add new protocol daemons to Quagga easily.  You
can use Quagga library as your program's client user interface.

  Quagga is distributed under the @sc{gnu} General Public License.

@menu
* About Quagga::                Basic information about Quagga
* System Architecture::         The Quagga system architecture
* Supported Platforms::         Supported platforms and future plans
* Supported RFCs::               Supported RFCs
* How to get Quagga::            
* Mailing List::                Mailing list information
* Bug Reports::                 Mail address for bug data
@end menu

@node About Quagga
@comment  node-name,  next,  previous,  up
@section About Quagga
@cindex About Quagga

  Today, TCP/IP networks are covering all of the world.  The Internet has
been deployed in many countries, companies, and to the home.  When you
connect to the Internet your packet will pass many routers which have TCP/IP
routing functionality.

  A system with Quagga installed acts as a dedicated router.  With Quagga,
your machine exchanges routing information with other routers using routing
protocols.  Quagga uses this information to update the kernel routing table
so that the right data goes to the right place.  You can dynamically change
the configuration and you may view routing table information from the Quagga
terminal interface.

  Adding to routing protocol support, Quagga can setup interface's flags,
interface's address, static routes and so on.  If you have a small network,
or a stub network, or xDSL connection, configuring the Quagga routing
software is very easy.  The only thing you have to do is to set up the
interfaces and put a few commands about static routes and/or default routes. 
If the network is rather large, or if the network structure changes
frequently, you will want to take advantage of Quagga's dynamic routing
protocol support for protocols such as RIP, OSPF or BGP.

  Traditionally, UNIX based router configuration is done by
@command{ifconfig} and @command{route} commands.  Status of routing
table is displayed by @command{netstat} utility.  Almost of these commands
work only if the user has root privileges.  Quagga has a different system
administration method.  There are two user modes in Quagga.  One is normal
mode, the other is enable mode.  Normal mode user can only view system
status, enable mode user can change system configuration.  This UNIX account
independent feature will be great help to the router administrator.

  Currently, Quagga supports common unicast routing protocols.  Multicast
routing protocols such as BGMP, PIM-SM, PIM-DM may be supported in Quagga
2.0.  MPLS support is going on.  In the future, TCP/IP filtering control,
QoS control, diffserv configuration will be added to Quagga. Quagga
project's final goal is making a productive, quality, free TCP/IP routing
software.

@node System Architecture
@comment  node-name,  next,  previous,  up
@section System Architecture
@cindex System architecture
@cindex Software architecture
@cindex Software internals

  Traditional routing software is made as a one process program which
provides all of the routing protocol functionalities.  Quagga takes a
different approach.  It is made from a collection of several daemons that
work together to build the routing table.  There may be several
protocol-specific routing daemons and zebra the kernel routing manager.

  The @command{ripd} daemon handles the RIP protocol, while
@command{ospfd} is a daemon which supports OSPF version 2.
@command{bgpd} supports the BGP-4 protocol.  For changing the kernel
routing table and for redistribution of routes between different routing
protocols, there is a kernel routing table manager @command{zebra} daemon. 
It is easy to add a new routing protocol daemons to the entire routing
system without affecting any other software.  You need to run only the
protocol daemon associated with routing protocols in use.  Thus, user may
run a specific daemon and send routing reports to a central routing console.

  There is no need for these daemons to be running on the same machine. You
can even run several same protocol daemons on the same machine.  This
architecture creates new possibilities for the routing system.

@example
@group
+----+  +----+  +-----+  +-----+
|bgpd|  |ripd|  |ospfd|  |zebra|
+----+  +----+  +-----+  +-----+
                            |
+---------------------------|--+
|                           v  |
|  UNIX Kernel  routing table  |
|                              |
+------------------------------+

    Quagga System Architecture
@end group
@end example

Multi-process architecture brings extensibility, modularity and
maintainability.  At the same time it also brings many configuration files
and terminal interfaces.  Each daemon has it's own configuration file and
terminal interface.  When you configure a static route, it must be done in
@command{zebra} configuration file.  When you configure BGP network it must
be done in @command{bgpd} configuration file.  This can be a very annoying
thing.  To resolve the problem, Quagga provides integrated user interface
shell called @command{vtysh}.  @command{vtysh} connects to each daemon with
UNIX domain socket and then works as a proxy for user input.

Quagga was planned to use multi-threaded mechanism when it runs with a
kernel that supports multi-threads.  But at the moment, the thread library
which comes with @sc{gnu}/Linux or FreeBSD has some problems with running
reliable services such as routing software, so we don't use threads at all. 
Instead we use the @command{select(2)} system call for multiplexing the
events.

@node Supported Platforms
@comment  node-name,  next,  previous,  up
@section Supported Platforms

@cindex Supported platforms
@cindex Quagga on other systems
@cindex Compatibility with other systems
@cindex Operating systems that support Quagga

Currently Quagga supports @sc{gnu}/Linux, BSD and Solaris. Porting Quagga
to other platforms is not too difficult as platform dependent code should
most be limited to the @command{zebra} daemon.  Protocol daemons are mostly
platform independent. Please let us know when you find out Quagga runs on a
platform which is not listed below.

The list of officially supported platforms are listed below. Note that
Quagga may run correctly on other platforms, and may run with partial
functionality on further platforms.

@sp 1
@itemize @bullet
@item
@sc{gnu}/Linux 2.4.x and higher
@item
FreeBSD 4.x and higher
@item
NetBSD 1.6 and higher
@item
OpenBSD 2.5 and higher
@item
Solaris 8 and higher
@end itemize

@node Supported RFCs
@comment  node-name,  next,  previous,  up
@section Supported RFCs

  Below is the list of currently supported RFC's.

@table @asis
@item @asis{RFC1058}
@cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}

@item @asis{RF2082}
@cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}

@item @asis{RFC2453}
@cite{RIP Version 2. G. Malkin. November 1998.}

@item @asis{RFC2080}
@cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}

@item @asis{RFC2328}
@cite{OSPF Version 2. J. Moy. April 1998.}

@item @asis{RFC2370}
@cite{The OSPF Opaque LSA Option R. Coltun. July 1998.}

@item @asis{RFC3101}
@cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.}

@item @asis{RFC2740}
@cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}

@item @asis{RFC1771} 
@cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}

@item @asis{RFC1965}
@cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}

@item @asis{RFC1997}
@cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}

@item @asis{RFC2545}
@cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}

@item @asis{RFC2796}
@cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}

@item @asis{RFC2858}
@cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}

@item @asis{RFC2842}
@cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}

@item @asis{RFC3137}
@cite{OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. Zinin, D. McPherson. June 2001}
@end table

  When SNMP support is enabled, below RFC is also supported.

@table @asis

@item @asis{RFC1227}
@cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}

@item @asis{RFC1657}
@cite{Definitions of Managed Objects for the Fourth Version of the
Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
J. Chu, Editor. July 1994.}

@item @asis{RFC1724}
@cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}

@item @asis{RFC1850}
@cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
November 1995.}

@end table

@node How to get Quagga
@comment  node-name,  next,  previous,  up
@section How to get Quagga

The official Quagga web-site is located at:

@uref{http://www.quagga.net/}

and contains further information, as well as links to additional
resources. 

@uref{http://www.quagga.net/,Quagga} is a fork of GNU Zebra, whose
web-site is located at:

@uref{http://www.zebra.org/}.

@node Mailing List
@comment  node-name,  next,  previous,  up
@section Mailing List
@cindex How to get in touch with Quagga
@cindex Mailing Quagga
@cindex Contact information
@cindex Mailing lists

There is a mailing list for discussions about Quagga.  If you have any
comments or suggestions to Quagga, please subscribe to:

@uref{http://lists.quagga.net/mailman/listinfo/quagga-users}.

The @uref{http://www.quagga.net/,,Quagga} site has further information on
the available mailing lists, see:

	@uref{http://www.quagga.net/lists.php}

@node Bug Reports
@section Bug Reports

@cindex Bug Reports
@cindex Bug hunting
@cindex Found a bug?
@cindex Reporting bugs
@cindex Reporting software errors
@cindex Errors in the software

If you think you have found a bug, please send a bug report to:

@uref{http://bugzilla.quagga.net}

When you send a bug report, please be careful about the points below.

@itemize @bullet
@item 
Please note what kind of OS you are using.  If you use the IPv6 stack
please note that as well.
@item
Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
Information from zebra's VTY command @code{show ip route} will also be
helpful.
@item
Please send your configuration file with the report.  If you specify
arguments to the configure script please note that too.
@end itemize

  Bug reports are very important for us to improve the quality of Quagga.
Quagga is still in the development stage, but please don't hesitate to
send a bug report to @uref{http://bugzilla.quagga.net}.
