blob: b66b35b4b51c8f7de98c4de0f656583cfd6720bf [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
hassoeb3f4632004-04-26 13:22:15 +0000219@item @asis{RFC2370}
220@cite{The OSPF Opaque LSA Option R. Coltun. July 1998.}
221
222@item @asis{RFC3101}
223@cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.}
224
paul718e3742002-12-13 20:15:29 +0000225@item @asis{RFC2740}
226@cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
227
228@item @asis{RFC1771}
229@cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
230
231@item @asis{RFC1965}
232@cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
233
234@item @asis{RFC1997}
235@cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
236
237@item @asis{RFC2545}
238@cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
239
240@item @asis{RFC2796}
241@cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
242
243@item @asis{RFC2858}
244@cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
245
246@item @asis{RFC2842}
247@cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
248
249@end table
250
251 When SNMP support is enabled, below RFC is also supported.
252
253@table @asis
254
255@item @asis{RFC1227}
256@cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
257
258@item @asis{RFC1657}
259@cite{Definitions of Managed Objects for the Fourth Version of the
260Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
261J. Chu, Editor. July 1994.}
262
263@item @asis{RFC1724}
264@cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
265
266@item @asis{RFC1850}
267@cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
268November 1995.}
269
270@end table
271
paul7190f4e2003-08-12 12:40:20 +0000272@node How to get Quagga, Mailing List, Supported RFC, Overview
paul718e3742002-12-13 20:15:29 +0000273@comment node-name, next, previous, up
paul7190f4e2003-08-12 12:40:20 +0000274@section How to get Quagga
paul718e3742002-12-13 20:15:29 +0000275
paul7190f4e2003-08-12 12:40:20 +0000276 Quagga is still beta software and there is no officially released
277version. Once Quagga is released you can get it from @sc{gnu} FTP
278site and its mirror sites. We are planning Quagga-1.0 as the first
paul971a4492003-06-20 01:18:07 +0000279released version.
paul718e3742002-12-13 20:15:29 +0000280
281 Zebra's official web page is located at:
282
283@url{http://www.gnu.org/software/zebra/zebra.html}.
284
paul971a4492003-06-20 01:18:07 +0000285 The original Zebra web site is located at:
paul718e3742002-12-13 20:15:29 +0000286
287@url{http://www.zebra.org/}.
288
paul971a4492003-06-20 01:18:07 +0000289 As of this writing, development by zebra.org on Zebra has slowed down.
paul7190f4e2003-08-12 12:40:20 +0000290Some work is being done by third-parties to try maintain bug-fixes and
291enhancements to the current Zebra code-base, which has resulted in a fork of
292Zebra called Quagga, see:
paul971a4492003-06-20 01:18:07 +0000293
paul7190f4e2003-08-12 12:40:20 +0000294@url{http://www.quagga.net/}.
paul971a4492003-06-20 01:18:07 +0000295
296for further information, as well as links to additional zebra resources.
paul718e3742002-12-13 20:15:29 +0000297
paul7190f4e2003-08-12 12:40:20 +0000298@node Mailing List, Bug Reports, How to get Quagga, Overview
paul718e3742002-12-13 20:15:29 +0000299@comment node-name, next, previous, up
300@section Mailing List
paul7190f4e2003-08-12 12:40:20 +0000301@cindex How to get in touch with Quagga
302@cindex Mailing Quagga
paul718e3742002-12-13 20:15:29 +0000303@cindex Contact information
304@cindex Mailing lists
305
paul7190f4e2003-08-12 12:40:20 +0000306 There is a mailing list for discussions about Quagga. If you have any
307comments or suggestions to Quagga, please subscribe to
308@url{http://lists.quagga.net/mailman/listinfo/quagga-users}.
paul718e3742002-12-13 20:15:29 +0000309
paul7190f4e2003-08-12 12:40:20 +0000310 There is an additional mailing list, @email{znog@@dishone.st,ZNOG} for
311general discussion of zebra related issues and network operation. To
312subscribe send an email to @email{znog-subscribe@@dishone.st} with a message
313body that includes only:
paul971a4492003-06-20 01:18:07 +0000314
315@quotation
316subscribe znog
317@end quotation
318
319 To unsubscribe, send an email to @email{znog-unsubscribe@@dishone.st}
320with a message body that includes only:
321
322@quotation
323unsubscribe znog
324@end quotation
325
326 Alternatively, you may use the web interface located at
327@url{http://www.dishone.st/mailman/listinfo/znog}. Links to archives of the
328znog list are available at this URL.
329
paul718e3742002-12-13 20:15:29 +0000330@node Bug Reports, , Mailing List, Overview
331@comment node-name, next, previous, up
332@section Bug Reports
333
334@cindex Bug Reports
335@cindex Bug hunting
336@cindex Found a bug?
337@cindex Reporting bugs
338@cindex Reporting software errors
339@cindex Errors in the software
340
341 If you think you have found a bug, please send a bug report to
hasso253e9332004-03-11 22:34:01 +0000342@url{http://bugzilla.quagga.net}. When you send a bug report, please be
paul718e3742002-12-13 20:15:29 +0000343careful about the points below.
344
345@itemize @bullet
346@item
347Please note what kind of OS you are using. If you use the IPv6 stack
348please note that as well.
349@item
350Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
351Information from zebra's VTY command @code{show ip route} will also be
352helpful.
353@item
354Please send your configuration file with the report. If you specify
355arguments to the configure script please note that too.
356@end itemize
357
paul7190f4e2003-08-12 12:40:20 +0000358 Bug reports are very important for us to improve the quality of Quagga.
359Quagga is still in the development stage, but please don't hesitate to
hasso253e9332004-03-11 22:34:01 +0000360send a bug report to @url{http://bugzilla.quagga.net}.
paul718e3742002-12-13 20:15:29 +0000361