@node Overview, Installation, Top, Top
@comment  node-name,  next,  previous,  up
@chapter Overview
@cindex Overview

  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.

  Zebra 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, System Architecture, Overview, Overview
@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.
Quagga is with you.

  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, Supported Platforms, About Quagga, Overview
@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.

  When @command{zebra} runs under a @sc{gnu} Hurd kernel it will act as a
kernel routing table itself.  Under @sc{gnu} Hurd, all TCP/IP services are
provided by user processes called @command{pfinet}.  Quagga will provide
all the routing selection mechanisms for the process.  This feature will
be implemented when @sc{gnu} Hurd becomes stable.

@node Supported Platforms, Supported RFC, System Architecture, Overview
@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.  Below is a list
of OS versions on which Quagga runs.  Porting Quagga to other platforms is
not so too difficult.  Platform dependent codes exist only in
@command{zebra} daemon.  Protocol daemons are platform independent.
Please let us know when you find out Quagga runs on a platform which is not
listed below.

@sp 1
@itemize @bullet
@item
GNU/Linux 2.0.37
@item
GNU/Linux 2.2.x and higher
@item
FreeBSD 2.2.8
@item
FreeBSD 3.x
@item
FreeBSD 4.x
@item
NetBSD 1.4
@item
OpenBSD 2.5
@item
Solaris 2.6
@item
Solaris 7
@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, How to get Quagga, Supported Platforms, Overview
@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, Mailing List, Supported RFC, Overview
@comment  node-name,  next,  previous,  up
@section How to get Quagga

  Quagga is still beta software and there is no officially released
version. Once Quagga is released you can get it from @sc{gnu} FTP
site and its mirror sites.  We are planning Quagga-1.0 as the first
released version.

  Zebra's official web page is located at:

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

  The original Zebra web site is located at: 

@url{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:

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

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

@node Mailing List, Bug Reports, How to get Quagga, Overview
@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
@url{http://lists.quagga.net/mailman/listinfo/quagga-users}.

  There is an additional mailing list, @email{znog@@dishone.st,ZNOG} for
general discussion of zebra related issues and network operation. To
subscribe send an email to @email{znog-subscribe@@dishone.st} with a message
body that includes only:

@quotation
subscribe znog
@end quotation

 To unsubscribe, send an email to @email{znog-unsubscribe@@dishone.st}
with a message body that includes only:

@quotation
unsubscribe znog
@end quotation

 Alternatively, you may use the web interface located at
@url{http://www.dishone.st/mailman/listinfo/znog}. Links to archives of the
znog list are available at this URL.

@node Bug Reports,  , Mailing List, Overview
@comment  node-name,  next,  previous,  up
@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
@url{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 @url{http://bugzilla.quagga.net}.

