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>