blob: 1fb875f93e35ecf9b661c9dc42da1e6e4eb10e0e [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
166GNU/Linux 2.2.x
167@item
168GNU/Linux 2.3.x
169@item
170FreeBSD 2.2.8
171@item
172FreeBSD 3.x
173@item
174FreeBSD 4.x
175@item
176NetBSD 1.4
177@item
178OpenBSD 2.5
179@item
180Solaris 2.6
181@item
182Solaris 7
183@end itemize
184
185@sp 1
paul7190f4e2003-08-12 12:40:20 +0000186 Some IPv6 stacks are in development. Quagga supports following IPv6
paul718e3742002-12-13 20:15:29 +0000187stacks. For BSD, we recommend KAME IPv6 stack. Solaris IPv6 stack is
188not yet supported.
189@sp 1
190@itemize @bullet
191@item
192Linux IPv6 stack for GNU/Linux 2.2.x and higher.
193@item
194KAME IPv6 stack for BSD.
195@item
196INRIA IPv6 stack for BSD.
197@end itemize
198
paul7190f4e2003-08-12 12:40:20 +0000199@node Supported RFC, How to get Quagga, Supported Platforms, Overview
paul718e3742002-12-13 20:15:29 +0000200@comment node-name, next, previous, up
201@section Supported RFC
202
203 Below is the list of currently supported RFC's.
204
205@table @asis
206@item @asis{RFC1058}
207@cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
208
209@item @asis{RF2082}
210@cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
211
212@item @asis{RFC2453}
213@cite{RIP Version 2. G. Malkin. November 1998.}
214
215@item @asis{RFC2080}
216@cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
217
218@item @asis{RFC2328}
219@cite{OSPF Version 2. J. Moy. April 1998.}
220
221@item @asis{RFC2740}
222@cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
223
224@item @asis{RFC1771}
225@cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
226
227@item @asis{RFC1965}
228@cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
229
230@item @asis{RFC1997}
231@cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
232
233@item @asis{RFC2545}
234@cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
235
236@item @asis{RFC2796}
237@cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
238
239@item @asis{RFC2858}
240@cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
241
242@item @asis{RFC2842}
243@cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
244
245@end table
246
247 When SNMP support is enabled, below RFC is also supported.
248
249@table @asis
250
251@item @asis{RFC1227}
252@cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
253
254@item @asis{RFC1657}
255@cite{Definitions of Managed Objects for the Fourth Version of the
256Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
257J. Chu, Editor. July 1994.}
258
259@item @asis{RFC1724}
260@cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
261
262@item @asis{RFC1850}
263@cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
264November 1995.}
265
266@end table
267
paul7190f4e2003-08-12 12:40:20 +0000268@node How to get Quagga, Mailing List, Supported RFC, Overview
paul718e3742002-12-13 20:15:29 +0000269@comment node-name, next, previous, up
paul7190f4e2003-08-12 12:40:20 +0000270@section How to get Quagga
paul718e3742002-12-13 20:15:29 +0000271
paul7190f4e2003-08-12 12:40:20 +0000272 Quagga is still beta software and there is no officially released
273version. Once Quagga is released you can get it from @sc{gnu} FTP
274site and its mirror sites. We are planning Quagga-1.0 as the first
paul971a4492003-06-20 01:18:07 +0000275released version.
paul718e3742002-12-13 20:15:29 +0000276
277 Zebra's official web page is located at:
278
279@url{http://www.gnu.org/software/zebra/zebra.html}.
280
paul971a4492003-06-20 01:18:07 +0000281 The original Zebra web site is located at:
paul718e3742002-12-13 20:15:29 +0000282
283@url{http://www.zebra.org/}.
284
paul971a4492003-06-20 01:18:07 +0000285 As of this writing, development by zebra.org on Zebra has slowed down.
paul7190f4e2003-08-12 12:40:20 +0000286Some work is being done by third-parties to try maintain bug-fixes and
287enhancements to the current Zebra code-base, which has resulted in a fork of
288Zebra called Quagga, see:
paul971a4492003-06-20 01:18:07 +0000289
paul7190f4e2003-08-12 12:40:20 +0000290@url{http://www.quagga.net/}.
paul971a4492003-06-20 01:18:07 +0000291
292for further information, as well as links to additional zebra resources.
paul718e3742002-12-13 20:15:29 +0000293
paul7190f4e2003-08-12 12:40:20 +0000294@node Mailing List, Bug Reports, How to get Quagga, Overview
paul718e3742002-12-13 20:15:29 +0000295@comment node-name, next, previous, up
296@section Mailing List
paul7190f4e2003-08-12 12:40:20 +0000297@cindex How to get in touch with Quagga
298@cindex Mailing Quagga
paul718e3742002-12-13 20:15:29 +0000299@cindex Contact information
300@cindex Mailing lists
301
paul7190f4e2003-08-12 12:40:20 +0000302 There is a mailing list for discussions about Quagga. If you have any
303comments or suggestions to Quagga, please subscribe to
304@url{http://lists.quagga.net/mailman/listinfo/quagga-users}.
paul718e3742002-12-13 20:15:29 +0000305
paul7190f4e2003-08-12 12:40:20 +0000306 There is an additional mailing list, @email{znog@@dishone.st,ZNOG} for
307general discussion of zebra related issues and network operation. To
308subscribe send an email to @email{znog-subscribe@@dishone.st} with a message
309body that includes only:
paul971a4492003-06-20 01:18:07 +0000310
311@quotation
312subscribe znog
313@end quotation
314
315 To unsubscribe, send an email to @email{znog-unsubscribe@@dishone.st}
316with a message body that includes only:
317
318@quotation
319unsubscribe znog
320@end quotation
321
322 Alternatively, you may use the web interface located at
323@url{http://www.dishone.st/mailman/listinfo/znog}. Links to archives of the
324znog list are available at this URL.
325
paul718e3742002-12-13 20:15:29 +0000326@node Bug Reports, , Mailing List, Overview
327@comment node-name, next, previous, up
328@section Bug Reports
329
330@cindex Bug Reports
331@cindex Bug hunting
332@cindex Found a bug?
333@cindex Reporting bugs
334@cindex Reporting software errors
335@cindex Errors in the software
336
337 If you think you have found a bug, please send a bug report to
338@email{bug-zebra@@gnu.org}. When you send a bug report, please be
339careful about the points below.
340
341@itemize @bullet
342@item
343Please note what kind of OS you are using. If you use the IPv6 stack
344please note that as well.
345@item
346Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
347Information from zebra's VTY command @code{show ip route} will also be
348helpful.
349@item
350Please send your configuration file with the report. If you specify
351arguments to the configure script please note that too.
352@end itemize
353
paul7190f4e2003-08-12 12:40:20 +0000354 Bug reports are very important for us to improve the quality of Quagga.
355Quagga is still in the development stage, but please don't hesitate to
paul718e3742002-12-13 20:15:29 +0000356send a bug report to @email{bug-zebra@@gnu.org}.
357