@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
RFC}). 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 RFC::               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.2.x and higher
@item
FreeBSD 4.x and higher
@item
NetBSD 1.6 and higher
@item
OpenBSD 2.5 and higher
@item
Solaris 2.6 and higher (IPv6 support requires a patch at moment)
@end itemize

@sp 1
  Some IPv6 stacks are in development.  Quagga supports following IPv6
stacks.  For BSD, we recommend KAME IPv6 stack.  Solaris IPv6 stack is
not yet supported.
@sp 1
@itemize @bullet
@item
Linux IPv6 stack for GNU/Linux 2.2.x and higher.
@item
KAME IPv6 stack for BSD.
@item
INRIA IPv6 stack for BSD.
@end itemize

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

  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.}

@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

Quagga is still beta software and there is no officially released
version.

Zebra's official web page is located at:

@uref{http://www.gnu.org/software/zebra/zebra.html}.

The original Zebra web site is located at: 

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

As of this writing, development by zebra.org on Zebra has slowed down. Some
work is being done by third-parties to try maintain bug-fixes and
enhancements to the current Zebra code-base, which has resulted in a fork of
Zebra called Quagga, see:

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

for further information, as well as links to additional zebra resources.

@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}.
