File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / doc / overview.texi
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jul 21 23:54:38 2013 UTC (10 years, 11 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, v0_99_22p0, v0_99_22, HEAD
0.99.22

    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, IS-IS, 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 and AgentX
   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, IS-IS 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, that is BGP,
   67: OSPF, RIP and IS-IS.  Upcoming for MPLS support, an implementation of LDP is
   68: currently being prepared for merging.  Implementations of BFD and PIM-SSM
   69: (IPv4) also exist, but are not actively being worked on.
   70: 
   71:   The ultimate goal of the Quagga project is making a productive, quality, free
   72: TCP/IP routing software package.
   73: 
   74: @node System Architecture
   75: @comment  node-name,  next,  previous,  up
   76: @section System Architecture
   77: @cindex System architecture
   78: @cindex Software architecture
   79: @cindex Software internals
   80: 
   81:   Traditional routing software is made as a one process program which
   82: provides all of the routing protocol functionalities.  Quagga takes a
   83: different approach.  It is made from a collection of several daemons that
   84: work together to build the routing table.  There may be several
   85: protocol-specific routing daemons and zebra the kernel routing manager.
   86: 
   87:   The @command{ripd} daemon handles the RIP protocol, while
   88: @command{ospfd} is a daemon which supports OSPF version 2.
   89: @command{bgpd} supports the BGP-4 protocol.  For changing the kernel
   90: routing table and for redistribution of routes between different routing
   91: protocols, there is a kernel routing table manager @command{zebra} daemon. 
   92: It is easy to add a new routing protocol daemons to the entire routing
   93: system without affecting any other software.  You need to run only the
   94: protocol daemon associated with routing protocols in use.  Thus, user may
   95: run a specific daemon and send routing reports to a central routing console.
   96: 
   97:   There is no need for these daemons to be running on the same machine. You
   98: can even run several same protocol daemons on the same machine.  This
   99: architecture creates new possibilities for the routing system.
  100: 
  101: @example
  102: @group
  103: +----+  +----+  +-----+  +-----+
  104: |bgpd|  |ripd|  |ospfd|  |zebra|
  105: +----+  +----+  +-----+  +-----+
  106:                             |
  107: +---------------------------|--+
  108: |                           v  |
  109: |  UNIX Kernel  routing table  |
  110: |                              |
  111: +------------------------------+
  112: 
  113:     Quagga System Architecture
  114: @end group
  115: @end example
  116: 
  117: Multi-process architecture brings extensibility, modularity and
  118: maintainability.  At the same time it also brings many configuration files
  119: and terminal interfaces.  Each daemon has it's own configuration file and
  120: terminal interface.  When you configure a static route, it must be done in
  121: @command{zebra} configuration file.  When you configure BGP network it must
  122: be done in @command{bgpd} configuration file.  This can be a very annoying
  123: thing.  To resolve the problem, Quagga provides integrated user interface
  124: shell called @command{vtysh}.  @command{vtysh} connects to each daemon with
  125: UNIX domain socket and then works as a proxy for user input.
  126: 
  127: Quagga was planned to use multi-threaded mechanism when it runs with a
  128: kernel that supports multi-threads.  But at the moment, the thread library
  129: which comes with @sc{gnu}/Linux or FreeBSD has some problems with running
  130: reliable services such as routing software, so we don't use threads at all. 
  131: Instead we use the @command{select(2)} system call for multiplexing the
  132: events.
  133: 
  134: @node Supported Platforms
  135: @comment  node-name,  next,  previous,  up
  136: @section Supported Platforms
  137: 
  138: @cindex Supported platforms
  139: @cindex Quagga on other systems
  140: @cindex Compatibility with other systems
  141: @cindex Operating systems that support Quagga
  142: 
  143: Currently Quagga supports @sc{gnu}/Linux and BSD. Porting Quagga
  144: to other platforms is not too difficult as platform dependent code should
  145: most be limited to the @command{zebra} daemon.  Protocol daemons are mostly
  146: platform independent. Please let us know when you find out Quagga runs on a
  147: platform which is not listed below.
  148: 
  149: The list of officially supported platforms are listed below. Note that
  150: Quagga may run correctly on other platforms, and may run with partial
  151: functionality on further platforms.
  152: 
  153: @sp 1
  154: @itemize @bullet
  155: @item
  156: @sc{gnu}/Linux
  157: @item
  158: FreeBSD
  159: @item
  160: NetBSD
  161: @item
  162: OpenBSD
  163: @end itemize
  164: 
  165: Versions of these platforms that are older than around 2 years from the point
  166: of their original release (in case of @sc{gnu}/Linux, this is since the kernel's
  167: release on kernel.org) may need some work.  Similarly, the following platforms
  168: may work with some effort:
  169: 
  170: @sp 1
  171: @itemize @bullet
  172: @item
  173: Solaris
  174: @item
  175: Mac OSX
  176: @end itemize
  177: 
  178: Also note that, in particular regarding proprietary platforms, compiler
  179: and C library choice will affect Quagga.  Only recent versions of the
  180: following C compilers are well-tested:
  181: 
  182: @sp 1
  183: @itemize @bullet
  184: @item
  185: @sc{gnu}'s GCC
  186: @item
  187: LLVM's clang
  188: @item
  189: Intel's ICC
  190: @end itemize
  191: 
  192: @node Supported RFCs
  193: @comment  node-name,  next,  previous,  up
  194: @section Supported RFCs
  195: 
  196:   Below is the list of currently supported RFC's.
  197: 
  198: @table @asis
  199: @item @asis{RFC1058}
  200: @cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
  201: 
  202: @item @asis{RF2082}
  203: @cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
  204: 
  205: @item @asis{RFC2453}
  206: @cite{RIP Version 2. G. Malkin. November 1998.}
  207: 
  208: @item @asis{RFC2080}
  209: @cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
  210: 
  211: @item @asis{RFC2328}
  212: @cite{OSPF Version 2. J. Moy. April 1998.}
  213: 
  214: @item @asis{RFC2370}
  215: @cite{The OSPF Opaque LSA Option R. Coltun. July 1998.}
  216: 
  217: @item @asis{RFC3101}
  218: @cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.}
  219: 
  220: @item @asis{RFC2740}
  221: @cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
  222: 
  223: @item @asis{RFC1771} 
  224: @cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
  225: 
  226: @item @asis{RFC1965}
  227: @cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
  228: 
  229: @item @asis{RFC1997}
  230: @cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
  231: 
  232: @item @asis{RFC2545}
  233: @cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
  234: 
  235: @item @asis{RFC2796}
  236: @cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
  237: 
  238: @item @asis{RFC2858}
  239: @cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
  240: 
  241: @item @asis{RFC2842}
  242: @cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
  243: 
  244: @item @asis{RFC3137}
  245: @cite{OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. Zinin, D. McPherson. June 2001}
  246: @end table
  247: 
  248:   When SNMP support is enabled, below RFC is also supported.
  249: 
  250: @table @asis
  251: 
  252: @item @asis{RFC1227}
  253: @cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
  254: 
  255: @item @asis{RFC1657}
  256: @cite{Definitions of Managed Objects for the Fourth Version of the
  257: Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
  258: J. Chu, Editor. July 1994.}
  259: 
  260: @item @asis{RFC1724}
  261: @cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
  262: 
  263: @item @asis{RFC1850}
  264: @cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
  265: November 1995.}
  266: 
  267: @item @asis{RFC2741}
  268: @cite{Agent Extensibility (AgentX) Protocol. M. Daniele, B. Wijnen. January 2000.}
  269: 
  270: @end table
  271: 
  272: @node How to get Quagga
  273: @comment  node-name,  next,  previous,  up
  274: @section How to get Quagga
  275: 
  276: The official Quagga web-site is located at:
  277: 
  278: @uref{http://www.quagga.net/}
  279: 
  280: and contains further information, as well as links to additional
  281: resources. 
  282: 
  283: @uref{http://www.quagga.net/,Quagga} is a fork of GNU Zebra, whose
  284: web-site is located at:
  285: 
  286: @uref{http://www.zebra.org/}.
  287: 
  288: @node Mailing List
  289: @comment  node-name,  next,  previous,  up
  290: @section Mailing List
  291: @cindex How to get in touch with Quagga
  292: @cindex Mailing Quagga
  293: @cindex Contact information
  294: @cindex Mailing lists
  295: 
  296: There is a mailing list for discussions about Quagga.  If you have any
  297: comments or suggestions to Quagga, please subscribe to:
  298: 
  299: @uref{http://lists.quagga.net/mailman/listinfo/quagga-users}.
  300: 
  301: The @uref{http://www.quagga.net/,,Quagga} site has further information on
  302: the available mailing lists, see:
  303: 
  304: 	@uref{http://www.quagga.net/lists.php}
  305: 
  306: @node Bug Reports
  307: @section Bug Reports
  308: 
  309: @cindex Bug Reports
  310: @cindex Bug hunting
  311: @cindex Found a bug?
  312: @cindex Reporting bugs
  313: @cindex Reporting software errors
  314: @cindex Errors in the software
  315: 
  316: If you think you have found a bug, please send a bug report to:
  317: 
  318: @uref{http://bugzilla.quagga.net}
  319: 
  320: When you send a bug report, please be careful about the points below.
  321: 
  322: @itemize @bullet
  323: @item 
  324: Please note what kind of OS you are using.  If you use the IPv6 stack
  325: please note that as well.
  326: @item
  327: Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
  328: Information from zebra's VTY command @code{show ip route} will also be
  329: helpful.
  330: @item
  331: Please send your configuration file with the report.  If you specify
  332: arguments to the configure script please note that too.
  333: @end itemize
  334: 
  335:   Bug reports are very important for us to improve the quality of Quagga.
  336: Quagga is still in the development stage, but please don't hesitate to
  337: send a bug report to @uref{http://bugzilla.quagga.net}.

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