From 718e3744195351130f4ce7dbe0613f4b3e23df93 Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 13 Dec 2002 20:15:29 +0000 Subject: Initial revision --- doc/overview.texi | 352 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 352 insertions(+) create mode 100644 doc/overview.texi (limited to 'doc/overview.texi') diff --git a/doc/overview.texi b/doc/overview.texi new file mode 100644 index 00000000..68e6e391 --- /dev/null +++ b/doc/overview.texi @@ -0,0 +1,352 @@ +@node Overview, Installation, Top, Top +@comment node-name, next, previous, up +@chapter Overview +@cindex Overview + + Zebra is a routing software package that provides TCP/IP based +routing services with routing protocols support such as RIPv1, RIPv2, +RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+ (@pxref{Supported RFC}). +Zebra also supports special BGP Route Reflector and Route Server +behavior. In addition to traditional IPv4 routing protocols, Zebra +also supports IPv6 routing protocols. With SNMP daemon which supports +SMUX protocol, Zebra provides routing protocol MIBs (@pxref{SNMP +Support}). + + Zebra uses an advanced software architecture to provide you with a +high quality, multi server routing engine. Zebra has an interactive +user interface for each routing protocol and supports common client +commands. Due to this design, you can add new protocol daemons to Zebra +easily. You can use Zebra library as your program's client user +interface. + + Zebra is an official @sc{gnu} software and distributed under the +@sc{gnu} General Public License. + +@menu +* About Zebra:: Basic information about Zebra +* System Architecture:: The Zebra system architecture +* Supported Platforms:: Supported platforms and future plans +* Supported RFC:: Supported RFCs +* How to get Zebra:: +* Mailing List:: Mailing list information +* Bug Reports:: Mail address for bug data +@end menu + +@node About Zebra, System Architecture, Overview, Overview +@comment node-name, next, previous, up +@section About Zebra +@cindex About Zebra + + Today, TCP/IP networks are covering all of the world. The Internet +has been deployed in many countries, companies, and to the home. When +you connect to the Internet your packet will pass many routers which +have TCP/IP routing functionality. + + A system with Zebra installed acts as a dedicated router. With Zebra, +your machine exchanges routing information with other routers using +routing protocols. Zebra uses this information to update the kernel +routing table so that the right data goes to the right place. You can +dynamically change the configuration and you may view routing table +information from the Zebra terminal interface. + + Adding to routing protocol support, Zebra can setup interface's flags, +interface's address, static routes and so on. If you have a small +network, or a stub network, or xDSL connection, configuring the Zebra +routing software is very easy. The only thing you have to do is to set +up the interfaces and put a few commands about static routes and/or +default routes. If the network is rather large, or if the network +structure changes frequently, you will want to take advantage of Zebra's +dynamic routing protocol support for protocols such as RIP, OSPF or BGP. +Zebra is with you. + + Traditionally, UNIX based router configuration is done by +@command{ifconfig} and @command{route} commands. Status of routing +table is displayed by @command{netstat} utility. Almost of these +commands work only if the user has root privileges. Zebra has a different +system administration method. There are two user modes in Zebra. One is +normal mode, the other is enable mode. Normal mode user can only view +system status, enable mode user can change system configuration. This +UNIX account independent feature will be great help to the router +administrator. + + Currently, Zebra supports common unicast routing protocols. Multicast +routing protocols such as BGMP, PIM-SM, PIM-DM will be supported in +Zebra 2.0. MPLS support is going on. In the future, TCP/IP filtering +control, QoS control, diffserv configuration will be added to Zebra. +Zebra project's final goal is making a productive, quality free TCP/IP +routing software. + +@node System Architecture, Supported Platforms, About Zebra, Overview +@comment node-name, next, previous, up +@section System Architecture +@cindex System architecture +@cindex Software architecture +@cindex Software internals + + Traditional routing software is made as a one process program which +provides all of the routing protocol functionalities. Zebra takes a +different approach. It is made from a collection of several daemons +that work together to build the routing table. There may be several +protocol-specific routing daemons and zebra the kernel routing manager. + + The @command{ripd} daemon handles the RIP protocol, while +@command{ospfd} is a daemon which supports OSPF version 2. +@command{bgpd} supports the BGP-4 protocol. For changing the kernel +routing table and for redistribution of routes between different routing +protocols, there is a kernel routing table manager @command{zebra} +daemon. It is easy to add a new routing protocol daemons to the entire +routing system without affecting any other software. You need to run only +the protocol daemon associated with routing protocols in use. Thus, +user may run a specific daemon and send routing reports to a central +routing console. + + There is no need for these daemons to be running on the same machine. +You can even run several same protocol daemons on the same machine. This +architecture creates new possibilities for the routing system. + +@example +@group ++----+ +----+ +-----+ +-----+ +|bgpd| |ripd| |ospfd| |zebra| ++----+ +----+ +-----+ +-----+ + | ++---------------------------|--+ +| v | +| UNIX Kernel routing table | +| | ++------------------------------+ + + Zebra System Architecture +@end group +@end example + + Multi-process architecture brings extensibility, modularity and +maintainability. At the same time it also brings many configuration +files and terminal interfaces. Each daemon has it's own configuration +file and terminal interface. When you configure a static route, it must +be done in @command{zebra} configuration file. When you configure BGP +network it must be done in @command{bgpd} configuration file. This can be a +very annoying thing. To resolve the problem, Zebra provides integrated +user interface shell called @command{vtysh}. @command{vtysh} connects to +each daemon with UNIX domain socket and then works as a proxy for user input. + + Zebra was planned to use multi-threaded mechanism when it runs with a +kernel that supports multi-threads. But at the moment, the thread +library which comes with @sc{gnu}/Linux or FreeBSD has some problems with +running reliable services such as routing software, so we don't use +threads at all. Instead we use the @command{select(2)} system call for +multiplexing the events. + + When @command{zebra} runs under a @sc{gnu} Hurd kernel it will act as a +kernel routing table itself. Under @sc{gnu} Hurd, all TCP/IP services are +provided by user processes called @command{pfinet}. Zebra will provide +all the routing selection mechanisms for the process. This feature will +be implemented when @sc{gnu} Hurd becomes stable. + +@node Supported Platforms, Supported RFC, System Architecture, Overview +@comment node-name, next, previous, up +@section Supported Platforms + +@cindex Supported platforms +@cindex Zebra on other systems +@cindex Compatibility with other systems +@cindex Operating systems that support Zebra + + Currently Zebra supports @sc{gnu}/Linux, BSD and Solaris. Below is a list +of OS versions on which Zebra runs. Porting Zebra to other platforms is +not so too difficult. Platform dependent codes exist only in +@command{zebra} daemon. Protocol daemons are platform independent. +Please let us know when you find out Zebra runs on a platform which is not +listed below. + +@sp 1 +@itemize @bullet +@item +GNU/Linux 2.0.37 +@item +GNU/Linux 2.2.x +@item +GNU/Linux 2.3.x +@item +FreeBSD 2.2.8 +@item +FreeBSD 3.x +@item +FreeBSD 4.x +@item +NetBSD 1.4 +@item +OpenBSD 2.5 +@item +Solaris 2.6 +@item +Solaris 7 +@end itemize + +@sp 1 + Some IPv6 stacks are in development. Zebra supports following IPv6 +stacks. For BSD, we recommend KAME IPv6 stack. Solaris IPv6 stack is +not yet supported. +@sp 1 +@itemize @bullet +@item +Linux IPv6 stack for GNU/Linux 2.2.x and higher. +@item +KAME IPv6 stack for BSD. +@item +INRIA IPv6 stack for BSD. +@end itemize + +@node Supported RFC, How to get Zebra, Supported Platforms, Overview +@comment node-name, next, previous, up +@section Supported RFC + + Below is the list of currently supported RFC's. + +@table @asis +@item @asis{RFC1058} +@cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.} + +@item @asis{RF2082} +@cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.} + +@item @asis{RFC2453} +@cite{RIP Version 2. G. Malkin. November 1998.} + +@item @asis{RFC2080} +@cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.} + +@item @asis{RFC2328} +@cite{OSPF Version 2. J. Moy. April 1998.} + +@item @asis{RFC2740} +@cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.} + +@item @asis{RFC1771} +@cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.} + +@item @asis{RFC1965} +@cite{Autonomous System Confederations for BGP. P. Traina. June 1996.} + +@item @asis{RFC1997} +@cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.} + +@item @asis{RFC2545} +@cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.} + +@item @asis{RFC2796} +@cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.} + +@item @asis{RFC2858} +@cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.} + +@item @asis{RFC2842} +@cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.} + +@end table + + When SNMP support is enabled, below RFC is also supported. + +@table @asis + +@item @asis{RFC1227} +@cite{SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.} + +@item @asis{RFC1657} +@cite{Definitions of Managed Objects for the Fourth Version of the +Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss, +J. Chu, Editor. July 1994.} + +@item @asis{RFC1724} +@cite{RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.} + +@item @asis{RFC1850} +@cite{OSPF Version 2 Management Information Base. F. Baker, R. Coltun. +November 1995.} + +@end table + +@node How to get Zebra, Mailing List, Supported RFC, Overview +@comment node-name, next, previous, up +@section How to get Zebra + + Zebra is still beta software and there is no officially +released version. So currently Zebra is distributed from Zebra beta ftp +site located at: + +@url{ftp://ftp.zebra.org/pub/zebra} + + Once Zebra is released you can get it from @sc{gnu} FTP site and +its mirror sites. We are planning Zebra-1.0 as the first released +version. + + Zebra's official web page is located at: + +@url{http://www.gnu.org/software/zebra/zebra.html}. + + There is a Zebra beta tester web page at: + +@url{http://www.zebra.org/}. + + You can get the latest beta software information from this page. + +@node Mailing List, Bug Reports, How to get Zebra, Overview +@comment node-name, next, previous, up +@section Mailing List +@cindex How to get in touch with Zebra +@cindex Mailing Zebra +@cindex Contact information +@cindex Mailing lists + + There is a mailing list for discussions about Zebra. If you have any +comments or suggestions to Zebra, please send mail to +@email{zebra@@zebra.org}. New snapshot announcements, improvement +notes, and patches are sent to the list. + + To subscribe to the @email{zebra@@zebra.org, Zebra mailing list}, +please send a mail to @email{majordomo@@zebra.org} with a message body +that includes only: + +@quotation +subscribe zebra +@end quotation + + To unsubscribe from the list, please send a mail to +@email{majordomo@@zebra.org} with a message body that includes only: + +@quotation +unsubscribe zebra +@end quotation + +@node Bug Reports, , Mailing List, Overview +@comment node-name, next, previous, up +@section Bug Reports + +@cindex Bug Reports +@cindex Bug hunting +@cindex Found a bug? +@cindex Reporting bugs +@cindex Reporting software errors +@cindex Errors in the software + + If you think you have found a bug, please send a bug report to +@email{bug-zebra@@gnu.org}. When you send a bug report, please be +careful about the points below. + +@itemize @bullet +@item +Please note what kind of OS you are using. If you use the IPv6 stack +please note that as well. +@item +Please show us the results of @code{netstat -rn} and @code{ifconfig -a}. +Information from zebra's VTY command @code{show ip route} will also be +helpful. +@item +Please send your configuration file with the report. If you specify +arguments to the configure script please note that too. +@end itemize + + Bug reports are very important for us to improve the quality of Zebra. +Zebra is still in the development stage, but please don't hesitate to +send a bug report to @email{bug-zebra@@gnu.org}. + -- cgit v1.2.1