Annotation of embedaddon/quagga/doc/overview.texi, revision 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>