blob: d4e7c6b9af8e4df454798079bead193fe146ff3d [file] [log] [blame]
paul718e3742002-12-13 20:15:29 +00001@node Overview, Installation, Top, Top
2@comment node-name, next, previous, up
3@chapter Overview
4@cindex Overview
5
paul7190f4e2003-08-12 12:40:20 +00006 Quagga is a routing software package that provides TCP/IP based
paul718e3742002-12-13 20:15:29 +00007routing services with routing protocols support such as RIPv1, RIPv2,
8RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (@pxref{Supported RFC}).
paul7190f4e2003-08-12 12:40:20 +00009Quagga also supports special BGP Route Reflector and Route Server
10behavior. In addition to traditional IPv4 routing protocols, Quagga
paul718e3742002-12-13 20:15:29 +000011also supports IPv6 routing protocols. With SNMP daemon which supports
paul7190f4e2003-08-12 12:40:20 +000012SMUX protocol, Quagga provides routing protocol MIBs (@pxref{SNMP
paul718e3742002-12-13 20:15:29 +000013Support}).
14
paul7190f4e2003-08-12 12:40:20 +000015 Quagga uses an advanced software architecture to provide you with a
16high quality, multi server routing engine. Quagga has an interactive
paul718e3742002-12-13 20:15:29 +000017user interface for each routing protocol and supports common client
paul7190f4e2003-08-12 12:40:20 +000018commands. Due to this design, you can add new protocol daemons to Quagga
19easily. You can use Quagga library as your program's client user
paul718e3742002-12-13 20:15:29 +000020interface.
21
paul7190f4e2003-08-12 12:40:20 +000022 Zebra is distributed under the @sc{gnu} General Public License.
paul718e3742002-12-13 20:15:29 +000023
24@menu
paul7190f4e2003-08-12 12:40:20 +000025* About Quagga:: Basic information about Quagga
26* System Architecture:: The Quagga system architecture
paul718e3742002-12-13 20:15:29 +000027* Supported Platforms:: Supported platforms and future plans
28* Supported RFC:: Supported RFCs
paul7190f4e2003-08-12 12:40:20 +000029* How to get Quagga::
paul718e3742002-12-13 20:15:29 +000030* Mailing List:: Mailing list information
31* Bug Reports:: Mail address for bug data
32@end menu
33
paul7190f4e2003-08-12 12:40:20 +000034@node About Quagga, System Architecture, Overview, Overview
paul718e3742002-12-13 20:15:29 +000035@comment node-name, next, previous, up
paul7190f4e2003-08-12 12:40:20 +000036@section About Quagga
37@cindex About Quagga
paul718e3742002-12-13 20:15:29 +000038
39 Today, TCP/IP networks are covering all of the world. The Internet
40has been deployed in many countries, companies, and to the home. When
41you connect to the Internet your packet will pass many routers which
42have TCP/IP routing functionality.
43
paul7190f4e2003-08-12 12:40:20 +000044 A system with Quagga installed acts as a dedicated router. With Quagga,
paul718e3742002-12-13 20:15:29 +000045your machine exchanges routing information with other routers using
paul7190f4e2003-08-12 12:40:20 +000046routing protocols. Quagga uses this information to update the kernel
paul718e3742002-12-13 20:15:29 +000047routing table so that the right data goes to the right place. You can
48dynamically change the configuration and you may view routing table
paul7190f4e2003-08-12 12:40:20 +000049information from the Quagga terminal interface.
paul718e3742002-12-13 20:15:29 +000050
paul7190f4e2003-08-12 12:40:20 +000051 Adding to routing protocol support, Quagga can setup interface's flags,
paul718e3742002-12-13 20:15:29 +000052interface's address, static routes and so on. If you have a small
paul7190f4e2003-08-12 12:40:20 +000053network, or a stub network, or xDSL connection, configuring the Quagga
paul718e3742002-12-13 20:15:29 +000054routing software is very easy. The only thing you have to do is to set
55up the interfaces and put a few commands about static routes and/or
56default routes. If the network is rather large, or if the network
paul7190f4e2003-08-12 12:40:20 +000057structure changes frequently, you will want to take advantage of Quagga's
paul718e3742002-12-13 20:15:29 +000058dynamic routing protocol support for protocols such as RIP, OSPF or BGP.
paul7190f4e2003-08-12 12:40:20 +000059Quagga is with you.
paul718e3742002-12-13 20:15:29 +000060
61 Traditionally, UNIX based router configuration is done by
62@command{ifconfig} and @command{route} commands. Status of routing
63table is displayed by @command{netstat} utility. Almost of these
paul7190f4e2003-08-12 12:40:20 +000064commands work only if the user has root privileges. Quagga has a different
65system administration method. There are two user modes in Quagga. One is
paul718e3742002-12-13 20:15:29 +000066normal mode, the other is enable mode. Normal mode user can only view
67system status, enable mode user can change system configuration. This
68UNIX account independent feature will be great help to the router
69administrator.
70
paul7190f4e2003-08-12 12:40:20 +000071 Currently, Quagga supports common unicast routing protocols. Multicast
72routing protocols such as BGMP, PIM-SM, PIM-DM may be supported in
73Quagga 2.0. MPLS support is going on. In the future, TCP/IP filtering
74control, QoS control, diffserv configuration will be added to Quagga.
75Quagga project's final goal is making a productive, quality free TCP/IP
paul718e3742002-12-13 20:15:29 +000076routing software.
77
paul7190f4e2003-08-12 12:40:20 +000078@node System Architecture, Supported Platforms, About Quagga, Overview
paul718e3742002-12-13 20:15:29 +000079@comment node-name, next, previous, up
80@section System Architecture
81@cindex System architecture
82@cindex Software architecture
83@cindex Software internals
84
85 Traditional routing software is made as a one process program which
paul7190f4e2003-08-12 12:40:20 +000086provides all of the routing protocol functionalities. Quagga takes a
paul718e3742002-12-13 20:15:29 +000087different approach. It is made from a collection of several daemons
88that work together to build the routing table. There may be several
89protocol-specific routing daemons and zebra the kernel routing manager.
90
91 The @command{ripd} daemon handles the RIP protocol, while
92@command{ospfd} is a daemon which supports OSPF version 2.
93@command{bgpd} supports the BGP-4 protocol. For changing the kernel
94routing table and for redistribution of routes between different routing
95protocols, there is a kernel routing table manager @command{zebra}
96daemon. It is easy to add a new routing protocol daemons to the entire
97routing system without affecting any other software. You need to run only
98the protocol daemon associated with routing protocols in use. Thus,
99user may run a specific daemon and send routing reports to a central
100routing console.
101
102 There is no need for these daemons to be running on the same machine.
103You can even run several same protocol daemons on the same machine. This
104architecture creates new possibilities for the routing system.
105
106@example
107@group
108+----+ +----+ +-----+ +-----+
109|bgpd| |ripd| |ospfd| |zebra|
110+----+ +----+ +-----+ +-----+
111 |
112+---------------------------|--+
113| v |
114| UNIX Kernel routing table |
115| |
116+------------------------------+
117
paul7190f4e2003-08-12 12:40:20 +0000118 Quagga System Architecture
paul718e3742002-12-13 20:15:29 +0000119@end group
120@end example
121
122 Multi-process architecture brings extensibility, modularity and
123maintainability. At the same time it also brings many configuration
124files and terminal interfaces. Each daemon has it's own configuration
125file and terminal interface. When you configure a static route, it must
126be done in @command{zebra} configuration file. When you configure BGP
127network it must be done in @command{bgpd} configuration file. This can be a
paul7190f4e2003-08-12 12:40:20 +0000128very annoying thing. To resolve the problem, Quagga provides integrated
paul718e3742002-12-13 20:15:29 +0000129user interface shell called @command{vtysh}. @command{vtysh} connects to
130each daemon with UNIX domain socket and then works as a proxy for user input.
131
paul7190f4e2003-08-12 12:40:20 +0000132 Quagga was planned to use multi-threaded mechanism when it runs with a
paul718e3742002-12-13 20:15:29 +0000133kernel that supports multi-threads. But at the moment, the thread
134library which comes with @sc{gnu}/Linux or FreeBSD has some problems with
135running reliable services such as routing software, so we don't use
136threads at all. Instead we use the @command{select(2)} system call for
137multiplexing the events.
138
139 When @command{zebra} runs under a @sc{gnu} Hurd kernel it will act as a
140kernel routing table itself. Under @sc{gnu} Hurd, all TCP/IP services are
paul7190f4e2003-08-12 12:40:20 +0000141provided by user processes called @command{pfinet}. Quagga will provide
paul718e3742002-12-13 20:15:29 +0000142all the routing selection mechanisms for the process. This feature will
143be implemented when @sc{gnu} Hurd becomes stable.
144
145@node Supported Platforms, Supported RFC, System Architecture, Overview
146@comment node-name, next, previous, up
147@section Supported Platforms
148
149@cindex Supported platforms
paul7190f4e2003-08-12 12:40:20 +0000150@cindex Quagga on other systems
paul718e3742002-12-13 20:15:29 +0000151@cindex Compatibility with other systems
paul7190f4e2003-08-12 12:40:20 +0000152@cindex Operating systems that support Quagga
paul718e3742002-12-13 20:15:29 +0000153
paul7190f4e2003-08-12 12:40:20 +0000154 Currently Quagga supports @sc{gnu}/Linux, BSD and Solaris. Below is a list
155of OS versions on which Quagga runs. Porting Quagga to other platforms is
paul718e3742002-12-13 20:15:29 +0000156not so too difficult. Platform dependent codes exist only in
157@command{zebra} daemon. Protocol daemons are platform independent.
paul7190f4e2003-08-12 12:40:20 +0000158Please let us know when you find out Quagga runs on a platform which is not
paul718e3742002-12-13 20:15:29 +0000159listed below.
160
161@sp 1
162@itemize @bullet
163@item
164GNU/Linux 2.0.37
165@item
hasso253e9332004-03-11 22:34:01 +0000166GNU/Linux 2.2.x and higher
paul718e3742002-12-13 20:15:29 +0000167@item
168FreeBSD 2.2.8
169@item
170FreeBSD 3.x
171@item
172FreeBSD 4.x
173@item
174NetBSD 1.4
175@item
176OpenBSD 2.5
177@item
178Solaris 2.6
179@item
180Solaris 7
181@end itemize
182
183@sp 1
paul7190f4e2003-08-12 12:40:20 +0000184 Some IPv6 stacks are in development. Quagga supports following IPv6
paul718e3742002-12-13 20:15:29 +0000185stacks. For BSD, we recommend KAME IPv6 stack. Solaris IPv6 stack is
186not yet supported.
187@sp 1
188@itemize @bullet
189@item
190Linux IPv6 stack for GNU/Linux 2.2.x and higher.
191@item
192KAME IPv6 stack for BSD.
193@item
194INRIA IPv6 stack for BSD.
195@end itemize
196
paul7190f4e2003-08-12 12:40:20 +0000197@node Supported RFC, How to get Quagga, Supported Platforms, Overview
paul718e3742002-12-13 20:15:29 +0000198@comment node-name, next, previous, up
199@section Supported RFC
200
201 Below is the list of currently supported RFC's.
202
203@table @asis
204@item @asis{RFC1058}
205@cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
206
207@item @asis{RF2082}
208@cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
209
210@item @asis{RFC2453}
211@cite{RIP Version 2. G. Malkin. November 1998.}
212
213@item @asis{RFC2080}
214@cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
215
216@item @asis{RFC2328}
217@cite{OSPF Version 2. J. Moy. April 1998.}
218
219@item @asis{RFC2740}
220@cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
221
222@item @asis{RFC1771}
223@cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
224
225@item @asis{RFC1965}
226@cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
227
228@item @asis{RFC1997}
229@cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
230
231@item @asis{RFC2545}
232@cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
233
234@item @asis{RFC2796}
235@cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
236
237@item @asis{RFC2858}
238@cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
239
240@item @asis{RFC2842}
241@cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
242
243@end table
244
245 When SNMP support is enabled, below RFC is also supported.
246
247@table @asis
248
249@item @asis{RFC1227}
250@cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
251
252@item @asis{RFC1657}
253@cite{Definitions of Managed Objects for the Fourth Version of the
254Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
255J. Chu, Editor. July 1994.}
256
257@item @asis{RFC1724}
258@cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
259
260@item @asis{RFC1850}
261@cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
262November 1995.}
263
264@end table
265
paul7190f4e2003-08-12 12:40:20 +0000266@node How to get Quagga, Mailing List, Supported RFC, Overview
paul718e3742002-12-13 20:15:29 +0000267@comment node-name, next, previous, up
paul7190f4e2003-08-12 12:40:20 +0000268@section How to get Quagga
paul718e3742002-12-13 20:15:29 +0000269
paul7190f4e2003-08-12 12:40:20 +0000270 Quagga is still beta software and there is no officially released
271version. Once Quagga is released you can get it from @sc{gnu} FTP
272site and its mirror sites. We are planning Quagga-1.0 as the first
paul971a4492003-06-20 01:18:07 +0000273released version.
paul718e3742002-12-13 20:15:29 +0000274
275 Zebra's official web page is located at:
276
277@url{http://www.gnu.org/software/zebra/zebra.html}.
278
paul971a4492003-06-20 01:18:07 +0000279 The original Zebra web site is located at:
paul718e3742002-12-13 20:15:29 +0000280
281@url{http://www.zebra.org/}.
282
paul971a4492003-06-20 01:18:07 +0000283 As of this writing, development by zebra.org on Zebra has slowed down.
paul7190f4e2003-08-12 12:40:20 +0000284Some work is being done by third-parties to try maintain bug-fixes and
285enhancements to the current Zebra code-base, which has resulted in a fork of
286Zebra called Quagga, see:
paul971a4492003-06-20 01:18:07 +0000287
paul7190f4e2003-08-12 12:40:20 +0000288@url{http://www.quagga.net/}.
paul971a4492003-06-20 01:18:07 +0000289
290for further information, as well as links to additional zebra resources.
paul718e3742002-12-13 20:15:29 +0000291
paul7190f4e2003-08-12 12:40:20 +0000292@node Mailing List, Bug Reports, How to get Quagga, Overview
paul718e3742002-12-13 20:15:29 +0000293@comment node-name, next, previous, up
294@section Mailing List
paul7190f4e2003-08-12 12:40:20 +0000295@cindex How to get in touch with Quagga
296@cindex Mailing Quagga
paul718e3742002-12-13 20:15:29 +0000297@cindex Contact information
298@cindex Mailing lists
299
paul7190f4e2003-08-12 12:40:20 +0000300 There is a mailing list for discussions about Quagga. If you have any
301comments or suggestions to Quagga, please subscribe to
302@url{http://lists.quagga.net/mailman/listinfo/quagga-users}.
paul718e3742002-12-13 20:15:29 +0000303
paul7190f4e2003-08-12 12:40:20 +0000304 There is an additional mailing list, @email{znog@@dishone.st,ZNOG} for
305general discussion of zebra related issues and network operation. To
306subscribe send an email to @email{znog-subscribe@@dishone.st} with a message
307body that includes only:
paul971a4492003-06-20 01:18:07 +0000308
309@quotation
310subscribe znog
311@end quotation
312
313 To unsubscribe, send an email to @email{znog-unsubscribe@@dishone.st}
314with a message body that includes only:
315
316@quotation
317unsubscribe znog
318@end quotation
319
320 Alternatively, you may use the web interface located at
321@url{http://www.dishone.st/mailman/listinfo/znog}. Links to archives of the
322znog list are available at this URL.
323
paul718e3742002-12-13 20:15:29 +0000324@node Bug Reports, , Mailing List, Overview
325@comment node-name, next, previous, up
326@section Bug Reports
327
328@cindex Bug Reports
329@cindex Bug hunting
330@cindex Found a bug?
331@cindex Reporting bugs
332@cindex Reporting software errors
333@cindex Errors in the software
334
335 If you think you have found a bug, please send a bug report to
hasso253e9332004-03-11 22:34:01 +0000336@url{http://bugzilla.quagga.net}. When you send a bug report, please be
paul718e3742002-12-13 20:15:29 +0000337careful about the points below.
338
339@itemize @bullet
340@item
341Please note what kind of OS you are using. If you use the IPv6 stack
342please note that as well.
343@item
344Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
345Information from zebra's VTY command @code{show ip route} will also be
346helpful.
347@item
348Please send your configuration file with the report. If you specify
349arguments to the configure script please note that too.
350@end itemize
351
paul7190f4e2003-08-12 12:40:20 +0000352 Bug reports are very important for us to improve the quality of Quagga.
353Quagga is still in the development stage, but please don't hesitate to
hasso253e9332004-03-11 22:34:01 +0000354send a bug report to @url{http://bugzilla.quagga.net}.
paul718e3742002-12-13 20:15:29 +0000355