blob: 234fbd1fcd30660696c667a3c576bd2f26586388 [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
6 Zebra is a routing software package that provides TCP/IP based
7routing services with routing protocols support such as RIPv1, RIPv2,
8RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (@pxref{Supported RFC}).
9Zebra also supports special BGP Route Reflector and Route Server
10behavior. In addition to traditional IPv4 routing protocols, Zebra
11also supports IPv6 routing protocols. With SNMP daemon which supports
12SMUX protocol, Zebra provides routing protocol MIBs (@pxref{SNMP
13Support}).
14
15 Zebra uses an advanced software architecture to provide you with a
16high quality, multi server routing engine. Zebra has an interactive
17user interface for each routing protocol and supports common client
18commands. Due to this design, you can add new protocol daemons to Zebra
19easily. You can use Zebra library as your program's client user
20interface.
21
22 Zebra is an official @sc{gnu} software and distributed under the
23@sc{gnu} General Public License.
24
25@menu
26* About Zebra:: Basic information about Zebra
27* System Architecture:: The Zebra system architecture
28* Supported Platforms:: Supported platforms and future plans
29* Supported RFC:: Supported RFCs
30* How to get Zebra::
31* Mailing List:: Mailing list information
32* Bug Reports:: Mail address for bug data
33@end menu
34
35@node About Zebra, System Architecture, Overview, Overview
36@comment node-name, next, previous, up
37@section About Zebra
38@cindex About Zebra
39
40 Today, TCP/IP networks are covering all of the world. The Internet
41has been deployed in many countries, companies, and to the home. When
42you connect to the Internet your packet will pass many routers which
43have TCP/IP routing functionality.
44
45 A system with Zebra installed acts as a dedicated router. With Zebra,
46your machine exchanges routing information with other routers using
47routing protocols. Zebra uses this information to update the kernel
48routing table so that the right data goes to the right place. You can
49dynamically change the configuration and you may view routing table
50information from the Zebra terminal interface.
51
52 Adding to routing protocol support, Zebra can setup interface's flags,
53interface's address, static routes and so on. If you have a small
54network, or a stub network, or xDSL connection, configuring the Zebra
55routing software is very easy. The only thing you have to do is to set
56up the interfaces and put a few commands about static routes and/or
57default routes. If the network is rather large, or if the network
58structure changes frequently, you will want to take advantage of Zebra's
59dynamic routing protocol support for protocols such as RIP, OSPF or BGP.
60Zebra is with you.
61
62 Traditionally, UNIX based router configuration is done by
63@command{ifconfig} and @command{route} commands. Status of routing
64table is displayed by @command{netstat} utility. Almost of these
65commands work only if the user has root privileges. Zebra has a different
66system administration method. There are two user modes in Zebra. One is
67normal mode, the other is enable mode. Normal mode user can only view
68system status, enable mode user can change system configuration. This
69UNIX account independent feature will be great help to the router
70administrator.
71
72 Currently, Zebra supports common unicast routing protocols. Multicast
73routing protocols such as BGMP, PIM-SM, PIM-DM will be supported in
74Zebra 2.0. MPLS support is going on. In the future, TCP/IP filtering
75control, QoS control, diffserv configuration will be added to Zebra.
76Zebra project's final goal is making a productive, quality free TCP/IP
77routing software.
78
79@node System Architecture, Supported Platforms, About Zebra, Overview
80@comment node-name, next, previous, up
81@section System Architecture
82@cindex System architecture
83@cindex Software architecture
84@cindex Software internals
85
86 Traditional routing software is made as a one process program which
87provides all of the routing protocol functionalities. Zebra takes a
88different approach. It is made from a collection of several daemons
89that work together to build the routing table. There may be several
90protocol-specific routing daemons and zebra the kernel routing manager.
91
92 The @command{ripd} daemon handles the RIP protocol, while
93@command{ospfd} is a daemon which supports OSPF version 2.
94@command{bgpd} supports the BGP-4 protocol. For changing the kernel
95routing table and for redistribution of routes between different routing
96protocols, there is a kernel routing table manager @command{zebra}
97daemon. It is easy to add a new routing protocol daemons to the entire
98routing system without affecting any other software. You need to run only
99the protocol daemon associated with routing protocols in use. Thus,
100user may run a specific daemon and send routing reports to a central
101routing console.
102
103 There is no need for these daemons to be running on the same machine.
104You can even run several same protocol daemons on the same machine. This
105architecture creates new possibilities for the routing system.
106
107@example
108@group
109+----+ +----+ +-----+ +-----+
110|bgpd| |ripd| |ospfd| |zebra|
111+----+ +----+ +-----+ +-----+
112 |
113+---------------------------|--+
114| v |
115| UNIX Kernel routing table |
116| |
117+------------------------------+
118
119 Zebra System Architecture
120@end group
121@end example
122
123 Multi-process architecture brings extensibility, modularity and
124maintainability. At the same time it also brings many configuration
125files and terminal interfaces. Each daemon has it's own configuration
126file and terminal interface. When you configure a static route, it must
127be done in @command{zebra} configuration file. When you configure BGP
128network it must be done in @command{bgpd} configuration file. This can be a
129very annoying thing. To resolve the problem, Zebra provides integrated
130user interface shell called @command{vtysh}. @command{vtysh} connects to
131each daemon with UNIX domain socket and then works as a proxy for user input.
132
133 Zebra was planned to use multi-threaded mechanism when it runs with a
134kernel that supports multi-threads. But at the moment, the thread
135library which comes with @sc{gnu}/Linux or FreeBSD has some problems with
136running reliable services such as routing software, so we don't use
137threads at all. Instead we use the @command{select(2)} system call for
138multiplexing the events.
139
140 When @command{zebra} runs under a @sc{gnu} Hurd kernel it will act as a
141kernel routing table itself. Under @sc{gnu} Hurd, all TCP/IP services are
142provided by user processes called @command{pfinet}. Zebra will provide
143all the routing selection mechanisms for the process. This feature will
144be implemented when @sc{gnu} Hurd becomes stable.
145
146@node Supported Platforms, Supported RFC, System Architecture, Overview
147@comment node-name, next, previous, up
148@section Supported Platforms
149
150@cindex Supported platforms
151@cindex Zebra on other systems
152@cindex Compatibility with other systems
153@cindex Operating systems that support Zebra
154
155 Currently Zebra supports @sc{gnu}/Linux, BSD and Solaris. Below is a list
156of OS versions on which Zebra runs. Porting Zebra to other platforms is
157not so too difficult. Platform dependent codes exist only in
158@command{zebra} daemon. Protocol daemons are platform independent.
159Please let us know when you find out Zebra runs on a platform which is not
160listed below.
161
162@sp 1
163@itemize @bullet
164@item
165GNU/Linux 2.0.37
166@item
167GNU/Linux 2.2.x
168@item
169GNU/Linux 2.3.x
170@item
171FreeBSD 2.2.8
172@item
173FreeBSD 3.x
174@item
175FreeBSD 4.x
176@item
177NetBSD 1.4
178@item
179OpenBSD 2.5
180@item
181Solaris 2.6
182@item
183Solaris 7
184@end itemize
185
186@sp 1
187 Some IPv6 stacks are in development. Zebra supports following IPv6
188stacks. For BSD, we recommend KAME IPv6 stack. Solaris IPv6 stack is
189not yet supported.
190@sp 1
191@itemize @bullet
192@item
193Linux IPv6 stack for GNU/Linux 2.2.x and higher.
194@item
195KAME IPv6 stack for BSD.
196@item
197INRIA IPv6 stack for BSD.
198@end itemize
199
200@node Supported RFC, How to get Zebra, Supported Platforms, Overview
201@comment node-name, next, previous, up
202@section Supported RFC
203
204 Below is the list of currently supported RFC's.
205
206@table @asis
207@item @asis{RFC1058}
208@cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
209
210@item @asis{RF2082}
211@cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
212
213@item @asis{RFC2453}
214@cite{RIP Version 2. G. Malkin. November 1998.}
215
216@item @asis{RFC2080}
217@cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
218
219@item @asis{RFC2328}
220@cite{OSPF Version 2. J. Moy. April 1998.}
221
222@item @asis{RFC2740}
223@cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
224
225@item @asis{RFC1771}
226@cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
227
228@item @asis{RFC1965}
229@cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
230
231@item @asis{RFC1997}
232@cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
233
234@item @asis{RFC2545}
235@cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
236
237@item @asis{RFC2796}
238@cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
239
240@item @asis{RFC2858}
241@cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
242
243@item @asis{RFC2842}
244@cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
245
246@end table
247
248 When SNMP support is enabled, below RFC is also supported.
249
250@table @asis
251
252@item @asis{RFC1227}
253@cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
254
255@item @asis{RFC1657}
256@cite{Definitions of Managed Objects for the Fourth Version of the
257Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
258J. Chu, Editor. July 1994.}
259
260@item @asis{RFC1724}
261@cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
262
263@item @asis{RFC1850}
264@cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
265November 1995.}
266
267@end table
268
269@node How to get Zebra, Mailing List, Supported RFC, Overview
270@comment node-name, next, previous, up
271@section How to get Zebra
272
paul971a4492003-06-20 01:18:07 +0000273 Zebra is still beta software and there is no officially released
274version. Once Zebra is released you can get it from @sc{gnu} FTP
275site and its mirror sites. We are planning Zebra-1.0 as the first
276released version.
paul718e3742002-12-13 20:15:29 +0000277
278 Zebra's official web page is located at:
279
280@url{http://www.gnu.org/software/zebra/zebra.html}.
281
paul971a4492003-06-20 01:18:07 +0000282 The original Zebra web site is located at:
paul718e3742002-12-13 20:15:29 +0000283
284@url{http://www.zebra.org/}.
285
paul971a4492003-06-20 01:18:07 +0000286 As of this writing, development by zebra.org on Zebra has slowed down.
287There is some work being done by third-parties to try maintain bug-fixes and
288enhancements to the current Zebra code-base. Please see:
289
290@url{http://zebra.dishone.st/}.
291
292for further information, as well as links to additional zebra resources.
paul718e3742002-12-13 20:15:29 +0000293
294@node Mailing List, Bug Reports, How to get Zebra, Overview
295@comment node-name, next, previous, up
296@section Mailing List
297@cindex How to get in touch with Zebra
298@cindex Mailing Zebra
299@cindex Contact information
300@cindex Mailing lists
301
302 There is a mailing list for discussions about Zebra. If you have any
303comments or suggestions to Zebra, please send mail to
304@email{zebra@@zebra.org}. New snapshot announcements, improvement
305notes, and patches are sent to the list.
306
307 To subscribe to the @email{zebra@@zebra.org, Zebra mailing list},
308please send a mail to @email{majordomo@@zebra.org} with a message body
309that includes only:
310
311@quotation
312subscribe zebra
313@end quotation
314
315 To unsubscribe from the list, please send a mail to
316@email{majordomo@@zebra.org} with a message body that includes only:
317
318@quotation
319unsubscribe zebra
320@end quotation
321
paul971a4492003-06-20 01:18:07 +0000322 There is an additional mailing list, @email{znog@@dishone.st,ZNOG} for
323discussion of zebra related issues and network operation. To subscribe
324send an email to @email{znog-subscribe@@dishone.st} with a message body that
325includes only:
326
327@quotation
328subscribe znog
329@end quotation
330
331 To unsubscribe, send an email to @email{znog-unsubscribe@@dishone.st}
332with a message body that includes only:
333
334@quotation
335unsubscribe znog
336@end quotation
337
338 Alternatively, you may use the web interface located at
339@url{http://www.dishone.st/mailman/listinfo/znog}. Links to archives of the
340znog list are available at this URL.
341
paul718e3742002-12-13 20:15:29 +0000342@node Bug Reports, , Mailing List, Overview
343@comment node-name, next, previous, up
344@section Bug Reports
345
346@cindex Bug Reports
347@cindex Bug hunting
348@cindex Found a bug?
349@cindex Reporting bugs
350@cindex Reporting software errors
351@cindex Errors in the software
352
353 If you think you have found a bug, please send a bug report to
354@email{bug-zebra@@gnu.org}. When you send a bug report, please be
355careful about the points below.
356
357@itemize @bullet
358@item
359Please note what kind of OS you are using. If you use the IPv6 stack
360please note that as well.
361@item
362Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
363Information from zebra's VTY command @code{show ip route} will also be
364helpful.
365@item
366Please send your configuration file with the report. If you specify
367arguments to the configure script please note that too.
368@end itemize
369
370 Bug reports are very important for us to improve the quality of Zebra.
371Zebra is still in the development stage, but please don't hesitate to
372send a bug report to @email{bug-zebra@@gnu.org}.
373