1 @node Overview, Installation, Top, Top
2 @comment node-name, next, previous, up
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
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
22 Zebra is an official @sc{gnu} software and distributed under the
23 @sc{gnu} General Public License.
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
31 * Mailing List:: Mailing list information
32 * Bug Reports:: Mail address for bug data
35 @node About Zebra, System Architecture, Overview, Overview
36 @comment node-name, next, previous, up
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.
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.
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.
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
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
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
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.
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
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.
109 +----+ +----+ +-----+ +-----+
110 |bgpd| |ripd| |ospfd| |zebra|
111 +----+ +----+ +-----+ +-----+
113 +---------------------------|--+
115 | UNIX Kernel routing table |
117 +------------------------------+
119 Zebra System Architecture
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.
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.
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.
146 @node Supported Platforms, Supported RFC, System Architecture, Overview
147 @comment node-name, next, previous, up
148 @section Supported Platforms
150 @cindex Supported platforms
151 @cindex Zebra on other systems
152 @cindex Compatibility with other systems
153 @cindex Operating systems that support Zebra
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
187 Some IPv6 stacks are in development. Zebra supports following IPv6
188 stacks. For BSD, we recommend KAME IPv6 stack. Solaris IPv6 stack is
193 Linux IPv6 stack for GNU/Linux 2.2.x and higher.
195 KAME IPv6 stack for BSD.
197 INRIA IPv6 stack for BSD.
200 @node Supported RFC, How to get Zebra, Supported Platforms, Overview
201 @comment node-name, next, previous, up
202 @section Supported RFC
204 Below is the list of currently supported RFC's.
208 @cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
211 @cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
214 @cite{RIP Version 2. G. Malkin. November 1998.}
217 @cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
220 @cite{OSPF Version 2. J. Moy. April 1998.}
223 @cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
226 @cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
229 @cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
232 @cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
235 @cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
238 @cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
241 @cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
244 @cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
248 When SNMP support is enabled, below RFC is also supported.
253 @cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.}
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.}
261 @cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.}
264 @cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
269 @node How to get Zebra, Mailing List, Supported RFC, Overview
270 @comment node-name, next, previous, up
271 @section How to get Zebra
273 Zebra is still beta software and there is no officially
274 released version. So currently Zebra is distributed from Zebra beta ftp
277 @url{ftp://ftp.zebra.org/pub/zebra}
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
283 Zebra's official web page is located at:
285 @url{http://www.gnu.org/software/zebra/zebra.html}.
287 There is a Zebra beta tester web page at:
289 @url{http://www.zebra.org/}.
291 You can get the latest beta software information from this page.
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
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.
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
314 To unsubscribe from the list, please send a mail to
315 @email{majordomo@@zebra.org} with a message body that includes only:
321 @node Bug Reports, , Mailing List, Overview
322 @comment node-name, next, previous, up
328 @cindex Reporting bugs
329 @cindex Reporting software errors
330 @cindex Errors in the software
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.
338 Please note what kind of OS you are using. If you use the IPv6 stack
339 please note that as well.
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
345 Please send your configuration file with the report. If you specify
346 arguments to the configure script please note that too.
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}.