blob: 911553f9523f2ef675e282b4f3c3a78856722228 [file] [log] [blame]
paul76b89b42004-11-06 17:13:09 +00001@node Overview
paul718e3742002-12-13 20:15:29 +00002@chapter Overview
3@cindex Overview
4
paul76b89b42004-11-06 17:13:09 +00005 @uref{http://www.quagga.net,,Quagga} is a routing software package that
6provides TCP/IP based routing services with routing protocols support such
7as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (@pxref{Supported
8RFC}). Quagga also supports special BGP Route Reflector and Route Server
9behavior. In addition to traditional IPv4 routing protocols, Quagga also
10supports IPv6 routing protocols. With SNMP daemon which supports SMUX
11protocol, Quagga provides routing protocol MIBs (@pxref{SNMP Support}).
paul718e3742002-12-13 20:15:29 +000012
paul76b89b42004-11-06 17:13:09 +000013 Quagga uses an advanced software architecture to provide you with a high
14quality, multi server routing engine. Quagga has an interactive user
15interface for each routing protocol and supports common client commands.
16Due to this design, you can add new protocol daemons to Quagga easily. You
17can use Quagga library as your program's client user interface.
paul718e3742002-12-13 20:15:29 +000018
paul76b89b42004-11-06 17:13:09 +000019 Quagga is distributed under the @sc{gnu} General Public License.
paul718e3742002-12-13 20:15:29 +000020
21@menu
paul76b89b42004-11-06 17:13:09 +000022* About Quagga:: Basic information about Quagga
paul7190f4e2003-08-12 12:40:20 +000023* System Architecture:: The Quagga system architecture
paul718e3742002-12-13 20:15:29 +000024* Supported Platforms:: Supported platforms and future plans
25* Supported RFC:: Supported RFCs
paul7190f4e2003-08-12 12:40:20 +000026* How to get Quagga::
paul718e3742002-12-13 20:15:29 +000027* Mailing List:: Mailing list information
28* Bug Reports:: Mail address for bug data
29@end menu
30
paul76b89b42004-11-06 17:13:09 +000031@node About Quagga
paul718e3742002-12-13 20:15:29 +000032@comment node-name, next, previous, up
paul7190f4e2003-08-12 12:40:20 +000033@section About Quagga
34@cindex About Quagga
paul718e3742002-12-13 20:15:29 +000035
paul76b89b42004-11-06 17:13:09 +000036 Today, TCP/IP networks are covering all of the world. The Internet has
37been deployed in many countries, companies, and to the home. When you
38connect to the Internet your packet will pass many routers which have TCP/IP
39routing functionality.
paul718e3742002-12-13 20:15:29 +000040
paul7190f4e2003-08-12 12:40:20 +000041 A system with Quagga installed acts as a dedicated router. With Quagga,
paul76b89b42004-11-06 17:13:09 +000042your machine exchanges routing information with other routers using routing
43protocols. Quagga uses this information to update the kernel routing table
44so that the right data goes to the right place. You can dynamically change
45the configuration and you may view routing table information from the Quagga
46terminal interface.
paul718e3742002-12-13 20:15:29 +000047
paul7190f4e2003-08-12 12:40:20 +000048 Adding to routing protocol support, Quagga can setup interface's flags,
paul76b89b42004-11-06 17:13:09 +000049interface's address, static routes and so on. If you have a small network,
50or a stub network, or xDSL connection, configuring the Quagga routing
51software is very easy. The only thing you have to do is to set up the
52interfaces and put a few commands about static routes and/or default routes.
53If the network is rather large, or if the network structure changes
54frequently, you will want to take advantage of Quagga's dynamic routing
55protocol support for protocols such as RIP, OSPF or BGP.
paul718e3742002-12-13 20:15:29 +000056
57 Traditionally, UNIX based router configuration is done by
58@command{ifconfig} and @command{route} commands. Status of routing
paul76b89b42004-11-06 17:13:09 +000059table is displayed by @command{netstat} utility. Almost of these commands
60work only if the user has root privileges. Quagga has a different system
61administration method. There are two user modes in Quagga. One is normal
62mode, the other is enable mode. Normal mode user can only view system
63status, enable mode user can change system configuration. This UNIX account
64independent feature will be great help to the router administrator.
paul718e3742002-12-13 20:15:29 +000065
paul7190f4e2003-08-12 12:40:20 +000066 Currently, Quagga supports common unicast routing protocols. Multicast
paul76b89b42004-11-06 17:13:09 +000067routing protocols such as BGMP, PIM-SM, PIM-DM may be supported in Quagga
682.0. MPLS support is going on. In the future, TCP/IP filtering control,
69QoS control, diffserv configuration will be added to Quagga. Quagga
70project's final goal is making a productive, quality, free TCP/IP routing
71software.
paul718e3742002-12-13 20:15:29 +000072
paul76b89b42004-11-06 17:13:09 +000073@node System Architecture
paul718e3742002-12-13 20:15:29 +000074@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
paul7190f4e2003-08-12 12:40:20 +000081provides all of the routing protocol functionalities. Quagga takes a
paul76b89b42004-11-06 17:13:09 +000082different approach. It is made from a collection of several daemons that
83work together to build the routing table. There may be several
paul718e3742002-12-13 20:15:29 +000084protocol-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
89routing table and for redistribution of routes between different routing
paul76b89b42004-11-06 17:13:09 +000090protocols, there is a kernel routing table manager @command{zebra} daemon.
91It is easy to add a new routing protocol daemons to the entire routing
92system without affecting any other software. You need to run only the
93protocol daemon associated with routing protocols in use. Thus, user may
94run a specific daemon and send routing reports to a central routing console.
paul718e3742002-12-13 20:15:29 +000095
paul76b89b42004-11-06 17:13:09 +000096 There is no need for these daemons to be running on the same machine. You
97can even run several same protocol daemons on the same machine. This
paul718e3742002-12-13 20:15:29 +000098architecture 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
paul7190f4e2003-08-12 12:40:20 +0000112 Quagga System Architecture
paul718e3742002-12-13 20:15:29 +0000113@end group
114@end example
115
116 Multi-process architecture brings extensibility, modularity and
paul76b89b42004-11-06 17:13:09 +0000117maintainability. At the same time it also brings many configuration files
118and terminal interfaces. Each daemon has it's own configuration file and
119terminal interface. When you configure a static route, it must be done in
120@command{zebra} configuration file. When you configure BGP network it must
121be done in @command{bgpd} configuration file. This can be a very annoying
122thing. To resolve the problem, Quagga provides integrated user interface
123shell called @command{vtysh}. @command{vtysh} connects to each daemon with
124UNIX domain socket and then works as a proxy for user input.
paul718e3742002-12-13 20:15:29 +0000125
paul7190f4e2003-08-12 12:40:20 +0000126 Quagga was planned to use multi-threaded mechanism when it runs with a
paul76b89b42004-11-06 17:13:09 +0000127kernel that supports multi-threads. But at the moment, the thread library
128which comes with @sc{gnu}/Linux or FreeBSD has some problems with running
129reliable services such as routing software, so we don't use threads at all.
130Instead we use the @command{select(2)} system call for multiplexing the
131events.
paul718e3742002-12-13 20:15:29 +0000132
paul76b89b42004-11-06 17:13:09 +0000133@node Supported Platforms
paul718e3742002-12-13 20:15:29 +0000134@comment node-name, next, previous, up
135@section Supported Platforms
136
137@cindex Supported platforms
paul7190f4e2003-08-12 12:40:20 +0000138@cindex Quagga on other systems
paul718e3742002-12-13 20:15:29 +0000139@cindex Compatibility with other systems
paul7190f4e2003-08-12 12:40:20 +0000140@cindex Operating systems that support Quagga
paul718e3742002-12-13 20:15:29 +0000141
paul76b89b42004-11-06 17:13:09 +0000142 Currently Quagga supports @sc{gnu}/Linux, BSD and Solaris. Porting Quagga
143to other platforms is not too difficult as platform dependent code should
144most be limited to the @command{zebra} daemon. Protocol daemons are mostly
145platform independent. Please let us know when you find out Quagga runs on a
146platform which is not listed below.
147
148 The list of officially supported platforms are listed below. Note that
149Quagga may run correctly on other platforms, and may run with partial
150functionality on further platforms.
paul718e3742002-12-13 20:15:29 +0000151
152@sp 1
153@itemize @bullet
154@item
paul76b89b42004-11-06 17:13:09 +0000155@sc{gnu}/Linux 2.2.x and higher
paul718e3742002-12-13 20:15:29 +0000156@item
paul76b89b42004-11-06 17:13:09 +0000157FreeBSD 4.x and higher
paul718e3742002-12-13 20:15:29 +0000158@item
paul76b89b42004-11-06 17:13:09 +0000159NetBSD 1.6 and higher
paul718e3742002-12-13 20:15:29 +0000160@item
paul76b89b42004-11-06 17:13:09 +0000161OpenBSD 2.5 and higher
paul718e3742002-12-13 20:15:29 +0000162@item
paul76b89b42004-11-06 17:13:09 +0000163Solaris 2.6 and higher (IPv6 support requires a patch at moment)
paul718e3742002-12-13 20:15:29 +0000164@end itemize
165
166@sp 1
paul7190f4e2003-08-12 12:40:20 +0000167 Some IPv6 stacks are in development. Quagga supports following IPv6
paul718e3742002-12-13 20:15:29 +0000168stacks. For BSD, we recommend KAME IPv6 stack. Solaris IPv6 stack is
169not yet supported.
170@sp 1
171@itemize @bullet
172@item
173Linux IPv6 stack for GNU/Linux 2.2.x and higher.
174@item
175KAME IPv6 stack for BSD.
176@item
177INRIA IPv6 stack for BSD.
178@end itemize
179
paul76b89b42004-11-06 17:13:09 +0000180@node Supported RFC
paul718e3742002-12-13 20:15:29 +0000181@comment node-name, next, previous, up
182@section Supported RFC
183
184 Below is the list of currently supported RFC's.
185
186@table @asis
187@item @asis{RFC1058}
188@cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
189
190@item @asis{RF2082}
191@cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
192
193@item @asis{RFC2453}
194@cite{RIP Version 2. G. Malkin. November 1998.}
195
196@item @asis{RFC2080}
197@cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
198
199@item @asis{RFC2328}
200@cite{OSPF Version 2. J. Moy. April 1998.}
201
hassoeb3f4632004-04-26 13:22:15 +0000202@item @asis{RFC2370}
203@cite{The OSPF Opaque LSA Option R. Coltun. July 1998.}
204
205@item @asis{RFC3101}
206@cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.}
207
paul718e3742002-12-13 20:15:29 +0000208@item @asis{RFC2740}
209@cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
210
211@item @asis{RFC1771}
212@cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
213
214@item @asis{RFC1965}
215@cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
216
217@item @asis{RFC1997}
218@cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
219
220@item @asis{RFC2545}
221@cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
222
223@item @asis{RFC2796}
224@cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
225
226@item @asis{RFC2858}
227@cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
228
229@item @asis{RFC2842}
230@cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
231
232@end table
233
234 When SNMP support is enabled, below RFC is also supported.
235
236@table @asis
237
238@item @asis{RFC1227}
239@cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
240
241@item @asis{RFC1657}
242@cite{Definitions of Managed Objects for the Fourth Version of the
243Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
244J. Chu, Editor. July 1994.}
245
246@item @asis{RFC1724}
247@cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
248
249@item @asis{RFC1850}
250@cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
251November 1995.}
252
253@end table
254
paul76b89b42004-11-06 17:13:09 +0000255@node How to get Quagga
paul718e3742002-12-13 20:15:29 +0000256@comment node-name, next, previous, up
paul7190f4e2003-08-12 12:40:20 +0000257@section How to get Quagga
paul718e3742002-12-13 20:15:29 +0000258
paul76b89b42004-11-06 17:13:09 +0000259Quagga is still beta software and there is no officially released
260version.
paul718e3742002-12-13 20:15:29 +0000261
paul76b89b42004-11-06 17:13:09 +0000262Zebra's official web page is located at:
paul718e3742002-12-13 20:15:29 +0000263
paul76b89b42004-11-06 17:13:09 +0000264@uref{http://www.gnu.org/software/zebra/zebra.html}.
paul718e3742002-12-13 20:15:29 +0000265
paul76b89b42004-11-06 17:13:09 +0000266The original Zebra web site is located at:
paul718e3742002-12-13 20:15:29 +0000267
paul76b89b42004-11-06 17:13:09 +0000268@uref{http://www.zebra.org/}.
paul718e3742002-12-13 20:15:29 +0000269
paul76b89b42004-11-06 17:13:09 +0000270As of this writing, development by zebra.org on Zebra has slowed down. Some
271work is being done by third-parties to try maintain bug-fixes and
paul7190f4e2003-08-12 12:40:20 +0000272enhancements to the current Zebra code-base, which has resulted in a fork of
273Zebra called Quagga, see:
paul971a4492003-06-20 01:18:07 +0000274
paul76b89b42004-11-06 17:13:09 +0000275@uref{http://www.quagga.net/}
paul971a4492003-06-20 01:18:07 +0000276
277for further information, as well as links to additional zebra resources.
paul718e3742002-12-13 20:15:29 +0000278
paul76b89b42004-11-06 17:13:09 +0000279@node Mailing List
paul718e3742002-12-13 20:15:29 +0000280@comment node-name, next, previous, up
281@section Mailing List
paul7190f4e2003-08-12 12:40:20 +0000282@cindex How to get in touch with Quagga
283@cindex Mailing Quagga
paul718e3742002-12-13 20:15:29 +0000284@cindex Contact information
285@cindex Mailing lists
286
paul76b89b42004-11-06 17:13:09 +0000287There is a mailing list for discussions about Quagga. If you have any
288comments or suggestions to Quagga, please subscribe to:
paul718e3742002-12-13 20:15:29 +0000289
paul76b89b42004-11-06 17:13:09 +0000290@uref{http://lists.quagga.net/mailman/listinfo/quagga-users}.
paul971a4492003-06-20 01:18:07 +0000291
paul76b89b42004-11-06 17:13:09 +0000292The @uref{http://www.quagga.net/,,Quagga} site has further information on
293the available mailing lists, see:
paul971a4492003-06-20 01:18:07 +0000294
paul76b89b42004-11-06 17:13:09 +0000295 @uref{http://www.quagga.net/lists.php}
paul971a4492003-06-20 01:18:07 +0000296
paul76b89b42004-11-06 17:13:09 +0000297@node Bug Reports
paul718e3742002-12-13 20:15:29 +0000298@section Bug Reports
299
300@cindex Bug Reports
301@cindex Bug hunting
302@cindex Found a bug?
303@cindex Reporting bugs
304@cindex Reporting software errors
305@cindex Errors in the software
306
paul6a22b1f2004-11-07 19:39:13 +0000307If you think you have found a bug, please send a bug report to:
308
309@uref{http://bugzilla.quagga.net}
310
311When you send a bug report, please be careful about the points below.
paul718e3742002-12-13 20:15:29 +0000312
313@itemize @bullet
314@item
315Please note what kind of OS you are using. If you use the IPv6 stack
316please note that as well.
317@item
318Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
319Information from zebra's VTY command @code{show ip route} will also be
320helpful.
321@item
322Please send your configuration file with the report. If you specify
323arguments to the configure script please note that too.
324@end itemize
325
paul7190f4e2003-08-12 12:40:20 +0000326 Bug reports are very important for us to improve the quality of Quagga.
327Quagga is still in the development stage, but please don't hesitate to
paul76b89b42004-11-06 17:13:09 +0000328send a bug report to @uref{http://bugzilla.quagga.net}.