Annotation of embedaddon/quagga/doc/overview.texi, revision 1.1.1.1

1.1       misho       1: @node Overview
                      2: @chapter Overview
                      3: @cindex Overview
                      4: 
                      5:   @uref{http://www.quagga.net,,Quagga} is a routing software package that
                      6: provides TCP/IP based routing services with routing protocols support such
                      7: as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (@pxref{Supported
                      8: RFCs}). Quagga also supports special BGP Route Reflector and Route Server
                      9: behavior.  In addition to traditional IPv4 routing protocols, Quagga also
                     10: supports IPv6 routing protocols.  With SNMP daemon which supports SMUX
                     11: protocol, Quagga provides routing protocol MIBs (@pxref{SNMP Support}).
                     12: 
                     13:   Quagga uses an advanced software architecture to provide you with a high
                     14: quality, multi server routing engine. Quagga has an interactive user
                     15: interface for each routing protocol and supports common client commands. 
                     16: Due to this design, you can add new protocol daemons to Quagga easily.  You
                     17: can use Quagga library as your program's client user interface.
                     18: 
                     19:   Quagga is distributed under the @sc{gnu} General Public License.
                     20: 
                     21: @menu
                     22: * About Quagga::                Basic information about Quagga
                     23: * System Architecture::         The Quagga system architecture
                     24: * Supported Platforms::         Supported platforms and future plans
                     25: * Supported RFCs::               Supported RFCs
                     26: * How to get Quagga::            
                     27: * Mailing List::                Mailing list information
                     28: * Bug Reports::                 Mail address for bug data
                     29: @end menu
                     30: 
                     31: @node About Quagga
                     32: @comment  node-name,  next,  previous,  up
                     33: @section About Quagga
                     34: @cindex About Quagga
                     35: 
                     36:   Today, TCP/IP networks are covering all of the world.  The Internet has
                     37: been deployed in many countries, companies, and to the home.  When you
                     38: connect to the Internet your packet will pass many routers which have TCP/IP
                     39: routing functionality.
                     40: 
                     41:   A system with Quagga installed acts as a dedicated router.  With Quagga,
                     42: your machine exchanges routing information with other routers using routing
                     43: protocols.  Quagga uses this information to update the kernel routing table
                     44: so that the right data goes to the right place.  You can dynamically change
                     45: the configuration and you may view routing table information from the Quagga
                     46: terminal interface.
                     47: 
                     48:   Adding to routing protocol support, Quagga can setup interface's flags,
                     49: interface's address, static routes and so on.  If you have a small network,
                     50: or a stub network, or xDSL connection, configuring the Quagga routing
                     51: software is very easy.  The only thing you have to do is to set up the
                     52: interfaces and put a few commands about static routes and/or default routes. 
                     53: If the network is rather large, or if the network structure changes
                     54: frequently, you will want to take advantage of Quagga's dynamic routing
                     55: protocol support for protocols such as RIP, OSPF or BGP.
                     56: 
                     57:   Traditionally, UNIX based router configuration is done by
                     58: @command{ifconfig} and @command{route} commands.  Status of routing
                     59: table is displayed by @command{netstat} utility.  Almost of these commands
                     60: work only if the user has root privileges.  Quagga has a different system
                     61: administration method.  There are two user modes in Quagga.  One is normal
                     62: mode, the other is enable mode.  Normal mode user can only view system
                     63: status, enable mode user can change system configuration.  This UNIX account
                     64: independent feature will be great help to the router administrator.
                     65: 
                     66:   Currently, Quagga supports common unicast routing protocols.  Multicast
                     67: routing protocols such as BGMP, PIM-SM, PIM-DM may be supported in Quagga
                     68: 2.0.  MPLS support is going on.  In the future, TCP/IP filtering control,
                     69: QoS control, diffserv configuration will be added to Quagga. Quagga
                     70: project's final goal is making a productive, quality, free TCP/IP routing
                     71: software.
                     72: 
                     73: @node System Architecture
                     74: @comment  node-name,  next,  previous,  up
                     75: @section System Architecture
                     76: @cindex System architecture
                     77: @cindex Software architecture
                     78: @cindex Software internals
                     79: 
                     80:   Traditional routing software is made as a one process program which
                     81: provides all of the routing protocol functionalities.  Quagga takes a
                     82: different approach.  It is made from a collection of several daemons that
                     83: work together to build the routing table.  There may be several
                     84: protocol-specific routing daemons and zebra the kernel routing manager.
                     85: 
                     86:   The @command{ripd} daemon handles the RIP protocol, while
                     87: @command{ospfd} is a daemon which supports OSPF version 2.
                     88: @command{bgpd} supports the BGP-4 protocol.  For changing the kernel
                     89: routing table and for redistribution of routes between different routing
                     90: protocols, there is a kernel routing table manager @command{zebra} daemon. 
                     91: It is easy to add a new routing protocol daemons to the entire routing
                     92: system without affecting any other software.  You need to run only the
                     93: protocol daemon associated with routing protocols in use.  Thus, user may
                     94: run a specific daemon and send routing reports to a central routing console.
                     95: 
                     96:   There is no need for these daemons to be running on the same machine. You
                     97: can even run several same protocol daemons on the same machine.  This
                     98: architecture creates new possibilities for the routing system.
                     99: 
                    100: @example
                    101: @group
                    102: +----+  +----+  +-----+  +-----+
                    103: |bgpd|  |ripd|  |ospfd|  |zebra|
                    104: +----+  +----+  +-----+  +-----+
                    105:                             |
                    106: +---------------------------|--+
                    107: |                           v  |
                    108: |  UNIX Kernel  routing table  |
                    109: |                              |
                    110: +------------------------------+
                    111: 
                    112:     Quagga System Architecture
                    113: @end group
                    114: @end example
                    115: 
                    116: Multi-process architecture brings extensibility, modularity and
                    117: maintainability.  At the same time it also brings many configuration files
                    118: and terminal interfaces.  Each daemon has it's own configuration file and
                    119: terminal interface.  When you configure a static route, it must be done in
                    120: @command{zebra} configuration file.  When you configure BGP network it must
                    121: be done in @command{bgpd} configuration file.  This can be a very annoying
                    122: thing.  To resolve the problem, Quagga provides integrated user interface
                    123: shell called @command{vtysh}.  @command{vtysh} connects to each daemon with
                    124: UNIX domain socket and then works as a proxy for user input.
                    125: 
                    126: Quagga was planned to use multi-threaded mechanism when it runs with a
                    127: kernel that supports multi-threads.  But at the moment, the thread library
                    128: which comes with @sc{gnu}/Linux or FreeBSD has some problems with running
                    129: reliable services such as routing software, so we don't use threads at all. 
                    130: Instead we use the @command{select(2)} system call for multiplexing the
                    131: events.
                    132: 
                    133: @node Supported Platforms
                    134: @comment  node-name,  next,  previous,  up
                    135: @section Supported Platforms
                    136: 
                    137: @cindex Supported platforms
                    138: @cindex Quagga on other systems
                    139: @cindex Compatibility with other systems
                    140: @cindex Operating systems that support Quagga
                    141: 
                    142: Currently Quagga supports @sc{gnu}/Linux, BSD and Solaris. Porting Quagga
                    143: to other platforms is not too difficult as platform dependent code should
                    144: most be limited to the @command{zebra} daemon.  Protocol daemons are mostly
                    145: platform independent. Please let us know when you find out Quagga runs on a
                    146: platform which is not listed below.
                    147: 
                    148: The list of officially supported platforms are listed below. Note that
                    149: Quagga may run correctly on other platforms, and may run with partial
                    150: functionality on further platforms.
                    151: 
                    152: @sp 1
                    153: @itemize @bullet
                    154: @item
                    155: @sc{gnu}/Linux 2.4.x and higher
                    156: @item
                    157: FreeBSD 4.x and higher
                    158: @item
                    159: NetBSD 1.6 and higher
                    160: @item
                    161: OpenBSD 2.5 and higher
                    162: @item
                    163: Solaris 8 and higher
                    164: @end itemize
                    165: 
                    166: @node Supported RFCs
                    167: @comment  node-name,  next,  previous,  up
                    168: @section Supported RFCs
                    169: 
                    170:   Below is the list of currently supported RFC's.
                    171: 
                    172: @table @asis
                    173: @item @asis{RFC1058}
                    174: @cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
                    175: 
                    176: @item @asis{RF2082}
                    177: @cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
                    178: 
                    179: @item @asis{RFC2453}
                    180: @cite{RIP Version 2. G. Malkin. November 1998.}
                    181: 
                    182: @item @asis{RFC2080}
                    183: @cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
                    184: 
                    185: @item @asis{RFC2328}
                    186: @cite{OSPF Version 2. J. Moy. April 1998.}
                    187: 
                    188: @item @asis{RFC2370}
                    189: @cite{The OSPF Opaque LSA Option R. Coltun. July 1998.}
                    190: 
                    191: @item @asis{RFC3101}
                    192: @cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.}
                    193: 
                    194: @item @asis{RFC2740}
                    195: @cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
                    196: 
                    197: @item @asis{RFC1771} 
                    198: @cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
                    199: 
                    200: @item @asis{RFC1965}
                    201: @cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
                    202: 
                    203: @item @asis{RFC1997}
                    204: @cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
                    205: 
                    206: @item @asis{RFC2545}
                    207: @cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
                    208: 
                    209: @item @asis{RFC2796}
                    210: @cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
                    211: 
                    212: @item @asis{RFC2858}
                    213: @cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
                    214: 
                    215: @item @asis{RFC2842}
                    216: @cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
                    217: 
                    218: @item @asis{RFC3137}
                    219: @cite{OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. Zinin, D. McPherson. June 2001}
                    220: @end table
                    221: 
                    222:   When SNMP support is enabled, below RFC is also supported.
                    223: 
                    224: @table @asis
                    225: 
                    226: @item @asis{RFC1227}
                    227: @cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
                    228: 
                    229: @item @asis{RFC1657}
                    230: @cite{Definitions of Managed Objects for the Fourth Version of the
                    231: Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
                    232: J. Chu, Editor. July 1994.}
                    233: 
                    234: @item @asis{RFC1724}
                    235: @cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
                    236: 
                    237: @item @asis{RFC1850}
                    238: @cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
                    239: November 1995.}
                    240: 
                    241: @end table
                    242: 
                    243: @node How to get Quagga
                    244: @comment  node-name,  next,  previous,  up
                    245: @section How to get Quagga
                    246: 
                    247: The official Quagga web-site is located at:
                    248: 
                    249: @uref{http://www.quagga.net/}
                    250: 
                    251: and contains further information, as well as links to additional
                    252: resources. 
                    253: 
                    254: @uref{http://www.quagga.net/,Quagga} is a fork of GNU Zebra, whose
                    255: web-site is located at:
                    256: 
                    257: @uref{http://www.zebra.org/}.
                    258: 
                    259: @node Mailing List
                    260: @comment  node-name,  next,  previous,  up
                    261: @section Mailing List
                    262: @cindex How to get in touch with Quagga
                    263: @cindex Mailing Quagga
                    264: @cindex Contact information
                    265: @cindex Mailing lists
                    266: 
                    267: There is a mailing list for discussions about Quagga.  If you have any
                    268: comments or suggestions to Quagga, please subscribe to:
                    269: 
                    270: @uref{http://lists.quagga.net/mailman/listinfo/quagga-users}.
                    271: 
                    272: The @uref{http://www.quagga.net/,,Quagga} site has further information on
                    273: the available mailing lists, see:
                    274: 
                    275:        @uref{http://www.quagga.net/lists.php}
                    276: 
                    277: @node Bug Reports
                    278: @section Bug Reports
                    279: 
                    280: @cindex Bug Reports
                    281: @cindex Bug hunting
                    282: @cindex Found a bug?
                    283: @cindex Reporting bugs
                    284: @cindex Reporting software errors
                    285: @cindex Errors in the software
                    286: 
                    287: If you think you have found a bug, please send a bug report to:
                    288: 
                    289: @uref{http://bugzilla.quagga.net}
                    290: 
                    291: When you send a bug report, please be careful about the points below.
                    292: 
                    293: @itemize @bullet
                    294: @item 
                    295: Please note what kind of OS you are using.  If you use the IPv6 stack
                    296: please note that as well.
                    297: @item
                    298: Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
                    299: Information from zebra's VTY command @code{show ip route} will also be
                    300: helpful.
                    301: @item
                    302: Please send your configuration file with the report.  If you specify
                    303: arguments to the configure script please note that too.
                    304: @end itemize
                    305: 
                    306:   Bug reports are very important for us to improve the quality of Quagga.
                    307: Quagga is still in the development stage, but please don't hesitate to
                    308: send a bug report to @uref{http://bugzilla.quagga.net}.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>