]> git.proxmox.com Git - mirror_frr.git/blob - doc/overview.texi
Initial revision
[mirror_frr.git] / doc / overview.texi
1 @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
7 routing services with routing protocols support such as RIPv1, RIPv2,
8 RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (@pxref{Supported RFC}).
9 Zebra also supports special BGP Route Reflector and Route Server
10 behavior. In addition to traditional IPv4 routing protocols, Zebra
11 also supports IPv6 routing protocols. With SNMP daemon which supports
12 SMUX protocol, Zebra provides routing protocol MIBs (@pxref{SNMP
13 Support}).
14
15 Zebra uses an advanced software architecture to provide you with a
16 high quality, multi server routing engine. Zebra has an interactive
17 user interface for each routing protocol and supports common client
18 commands. Due to this design, you can add new protocol daemons to Zebra
19 easily. You can use Zebra library as your program's client user
20 interface.
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
41 has been deployed in many countries, companies, and to the home. When
42 you connect to the Internet your packet will pass many routers which
43 have TCP/IP routing functionality.
44
45 A system with Zebra installed acts as a dedicated router. With Zebra,
46 your machine exchanges routing information with other routers using
47 routing protocols. Zebra uses this information to update the kernel
48 routing table so that the right data goes to the right place. You can
49 dynamically change the configuration and you may view routing table
50 information from the Zebra terminal interface.
51
52 Adding to routing protocol support, Zebra can setup interface's flags,
53 interface's address, static routes and so on. If you have a small
54 network, or a stub network, or xDSL connection, configuring the Zebra
55 routing software is very easy. The only thing you have to do is to set
56 up the interfaces and put a few commands about static routes and/or
57 default routes. If the network is rather large, or if the network
58 structure changes frequently, you will want to take advantage of Zebra's
59 dynamic routing protocol support for protocols such as RIP, OSPF or BGP.
60 Zebra is with you.
61
62 Traditionally, UNIX based router configuration is done by
63 @command{ifconfig} and @command{route} commands. Status of routing
64 table is displayed by @command{netstat} utility. Almost of these
65 commands work only if the user has root privileges. Zebra has a different
66 system administration method. There are two user modes in Zebra. One is
67 normal mode, the other is enable mode. Normal mode user can only view
68 system status, enable mode user can change system configuration. This
69 UNIX account independent feature will be great help to the router
70 administrator.
71
72 Currently, Zebra supports common unicast routing protocols. Multicast
73 routing protocols such as BGMP, PIM-SM, PIM-DM will be supported in
74 Zebra 2.0. MPLS support is going on. In the future, TCP/IP filtering
75 control, QoS control, diffserv configuration will be added to Zebra.
76 Zebra project's final goal is making a productive, quality free TCP/IP
77 routing 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
87 provides all of the routing protocol functionalities. Zebra takes a
88 different approach. It is made from a collection of several daemons
89 that work together to build the routing table. There may be several
90 protocol-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
95 routing table and for redistribution of routes between different routing
96 protocols, there is a kernel routing table manager @command{zebra}
97 daemon. It is easy to add a new routing protocol daemons to the entire
98 routing system without affecting any other software. You need to run only
99 the protocol daemon associated with routing protocols in use. Thus,
100 user may run a specific daemon and send routing reports to a central
101 routing console.
102
103 There is no need for these daemons to be running on the same machine.
104 You can even run several same protocol daemons on the same machine. This
105 architecture 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
124 maintainability. At the same time it also brings many configuration
125 files and terminal interfaces. Each daemon has it's own configuration
126 file and terminal interface. When you configure a static route, it must
127 be done in @command{zebra} configuration file. When you configure BGP
128 network it must be done in @command{bgpd} configuration file. This can be a
129 very annoying thing. To resolve the problem, Zebra provides integrated
130 user interface shell called @command{vtysh}. @command{vtysh} connects to
131 each 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
134 kernel that supports multi-threads. But at the moment, the thread
135 library which comes with @sc{gnu}/Linux or FreeBSD has some problems with
136 running reliable services such as routing software, so we don't use
137 threads at all. Instead we use the @command{select(2)} system call for
138 multiplexing the events.
139
140 When @command{zebra} runs under a @sc{gnu} Hurd kernel it will act as a
141 kernel routing table itself. Under @sc{gnu} Hurd, all TCP/IP services are
142 provided by user processes called @command{pfinet}. Zebra will provide
143 all the routing selection mechanisms for the process. This feature will
144 be 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
156 of OS versions on which Zebra runs. Porting Zebra to other platforms is
157 not so too difficult. Platform dependent codes exist only in
158 @command{zebra} daemon. Protocol daemons are platform independent.
159 Please let us know when you find out Zebra runs on a platform which is not
160 listed below.
161
162 @sp 1
163 @itemize @bullet
164 @item
165 GNU/Linux 2.0.37
166 @item
167 GNU/Linux 2.2.x
168 @item
169 GNU/Linux 2.3.x
170 @item
171 FreeBSD 2.2.8
172 @item
173 FreeBSD 3.x
174 @item
175 FreeBSD 4.x
176 @item
177 NetBSD 1.4
178 @item
179 OpenBSD 2.5
180 @item
181 Solaris 2.6
182 @item
183 Solaris 7
184 @end itemize
185
186 @sp 1
187 Some IPv6 stacks are in development. Zebra supports following IPv6
188 stacks. For BSD, we recommend KAME IPv6 stack. Solaris IPv6 stack is
189 not yet supported.
190 @sp 1
191 @itemize @bullet
192 @item
193 Linux IPv6 stack for GNU/Linux 2.2.x and higher.
194 @item
195 KAME IPv6 stack for BSD.
196 @item
197 INRIA 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
257 Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss,
258 J. 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.
265 November 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
273 Zebra is still beta software and there is no officially
274 released version. So currently Zebra is distributed from Zebra beta ftp
275 site located at:
276
277 @url{ftp://ftp.zebra.org/pub/zebra}
278
279 Once Zebra is released you can get it from @sc{gnu} FTP site and
280 its mirror sites. We are planning Zebra-1.0 as the first released
281 version.
282
283 Zebra's official web page is located at:
284
285 @url{http://www.gnu.org/software/zebra/zebra.html}.
286
287 There is a Zebra beta tester web page at:
288
289 @url{http://www.zebra.org/}.
290
291 You can get the latest beta software information from this page.
292
293 @node Mailing List, Bug Reports, How to get Zebra, Overview
294 @comment node-name, next, previous, up
295 @section Mailing List
296 @cindex How to get in touch with Zebra
297 @cindex Mailing Zebra
298 @cindex Contact information
299 @cindex Mailing lists
300
301 There is a mailing list for discussions about Zebra. If you have any
302 comments or suggestions to Zebra, please send mail to
303 @email{zebra@@zebra.org}. New snapshot announcements, improvement
304 notes, and patches are sent to the list.
305
306 To subscribe to the @email{zebra@@zebra.org, Zebra mailing list},
307 please send a mail to @email{majordomo@@zebra.org} with a message body
308 that includes only:
309
310 @quotation
311 subscribe zebra
312 @end quotation
313
314 To unsubscribe from the list, please send a mail to
315 @email{majordomo@@zebra.org} with a message body that includes only:
316
317 @quotation
318 unsubscribe zebra
319 @end quotation
320
321 @node Bug Reports, , Mailing List, Overview
322 @comment node-name, next, previous, up
323 @section Bug Reports
324
325 @cindex Bug Reports
326 @cindex Bug hunting
327 @cindex Found a bug?
328 @cindex Reporting bugs
329 @cindex Reporting software errors
330 @cindex Errors in the software
331
332 If you think you have found a bug, please send a bug report to
333 @email{bug-zebra@@gnu.org}. When you send a bug report, please be
334 careful about the points below.
335
336 @itemize @bullet
337 @item
338 Please note what kind of OS you are using. If you use the IPv6 stack
339 please note that as well.
340 @item
341 Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
342 Information from zebra's VTY command @code{show ip route} will also be
343 helpful.
344 @item
345 Please send your configuration file with the report. If you specify
346 arguments to the configure script please note that too.
347 @end itemize
348
349 Bug reports are very important for us to improve the quality of Zebra.
350 Zebra is still in the development stage, but please don't hesitate to
351 send a bug report to @email{bug-zebra@@gnu.org}.
352