mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-04 08:28:50 +00:00 
			
		
		
		
	Ditch version.texi, put PACKAGE_VERSION in defines.texi instead. Also add a PACKAGE_URL variable and fix some leftover outdated URLs. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
		
			
				
	
	
		
			338 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			338 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@node Overview
 | 
						|
@chapter Overview
 | 
						|
@cindex Overview
 | 
						|
 | 
						|
  @uref{@value{PACKAGE_URL},,Frr} is a routing software package that
 | 
						|
provides TCP/IP based routing services with routing protocols support such
 | 
						|
as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4+ (@pxref{Supported
 | 
						|
RFCs}). Frr also supports special BGP Route Reflector and Route Server
 | 
						|
behavior.  In addition to traditional IPv4 routing protocols, Frr also
 | 
						|
supports IPv6 routing protocols.  With SNMP daemon which supports SMUX and AgentX
 | 
						|
protocol, Frr provides routing protocol MIBs (@pxref{SNMP Support}).
 | 
						|
 | 
						|
  Frr uses an advanced software architecture to provide you with a high
 | 
						|
quality, multi server routing engine. Frr 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 Frr easily.  You
 | 
						|
can use Frr library as your program's client user interface.
 | 
						|
 | 
						|
  Frr is distributed under the @sc{gnu} General Public License.
 | 
						|
 | 
						|
@menu
 | 
						|
* About Frr::                Basic information about Frr
 | 
						|
* System Architecture::         The Frr system architecture
 | 
						|
* Supported Platforms::         Supported platforms and future plans
 | 
						|
* Supported RFCs::               Supported RFCs
 | 
						|
* How to get Frr::            
 | 
						|
* Mailing List::                Mailing list information
 | 
						|
* Bug Reports::                 Mail address for bug data
 | 
						|
@end menu
 | 
						|
 | 
						|
@node About Frr
 | 
						|
@comment  node-name,  next,  previous,  up
 | 
						|
@section About Frr
 | 
						|
@cindex About Frr
 | 
						|
 | 
						|
  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 Frr installed acts as a dedicated router.  With Frr,
 | 
						|
your machine exchanges routing information with other routers using routing
 | 
						|
protocols.  Frr 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 Frr
 | 
						|
terminal interface.
 | 
						|
 | 
						|
  Adding to routing protocol support, Frr 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 Frr 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 Frr's dynamic routing
 | 
						|
protocol support for protocols such as RIP, OSPF, IS-IS or BGP.
 | 
						|
 | 
						|
  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.  Frr has a different system
 | 
						|
administration method.  There are two user modes in Frr.  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, Frr supports common unicast routing protocols, that is BGP,
 | 
						|
OSPF, RIP and IS-IS.  Upcoming for MPLS support, an implementation of LDP is
 | 
						|
currently being prepared for merging.  Implementations of BFD and PIM-SSM
 | 
						|
(IPv4) also exist, but are not actively being worked on.
 | 
						|
 | 
						|
  The ultimate goal of the Frr project is making a productive, quality, free
 | 
						|
TCP/IP routing software package.
 | 
						|
 | 
						|
@node System Architecture
 | 
						|
@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.  Frr 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  |
 | 
						|
|                              |
 | 
						|
+------------------------------+
 | 
						|
 | 
						|
    Frr 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, Frr 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.
 | 
						|
 | 
						|
Frr 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.
 | 
						|
 | 
						|
@node Supported Platforms
 | 
						|
@comment  node-name,  next,  previous,  up
 | 
						|
@section Supported Platforms
 | 
						|
 | 
						|
@cindex Supported platforms
 | 
						|
@cindex Frr on other systems
 | 
						|
@cindex Compatibility with other systems
 | 
						|
@cindex Operating systems that support Frr
 | 
						|
 | 
						|
Currently Frr supports @sc{gnu}/Linux and BSD. Porting Frr
 | 
						|
to other platforms is not too difficult as platform dependent code should
 | 
						|
most be limited to the @command{zebra} daemon.  Protocol daemons are mostly
 | 
						|
platform independent. Please let us know when you find out Frr runs on a
 | 
						|
platform which is not listed below.
 | 
						|
 | 
						|
The list of officially supported platforms are listed below. Note that
 | 
						|
Frr may run correctly on other platforms, and may run with partial
 | 
						|
functionality on further platforms.
 | 
						|
 | 
						|
@sp 1
 | 
						|
@itemize @bullet
 | 
						|
@item
 | 
						|
@sc{gnu}/Linux
 | 
						|
@item
 | 
						|
FreeBSD
 | 
						|
@item
 | 
						|
NetBSD
 | 
						|
@item
 | 
						|
OpenBSD
 | 
						|
@end itemize
 | 
						|
 | 
						|
Versions of these platforms that are older than around 2 years from the point
 | 
						|
of their original release (in case of @sc{gnu}/Linux, this is since the kernel's
 | 
						|
release on kernel.org) may need some work.  Similarly, the following platforms
 | 
						|
may work with some effort:
 | 
						|
 | 
						|
@sp 1
 | 
						|
@itemize @bullet
 | 
						|
@item
 | 
						|
Solaris
 | 
						|
@item
 | 
						|
Mac OSX
 | 
						|
@end itemize
 | 
						|
 | 
						|
Also note that, in particular regarding proprietary platforms, compiler
 | 
						|
and C library choice will affect Frr.  Only recent versions of the
 | 
						|
following C compilers are well-tested:
 | 
						|
 | 
						|
@sp 1
 | 
						|
@itemize @bullet
 | 
						|
@item
 | 
						|
@sc{gnu}'s GCC
 | 
						|
@item
 | 
						|
LLVM's clang
 | 
						|
@item
 | 
						|
Intel's ICC
 | 
						|
@end itemize
 | 
						|
 | 
						|
@node Supported RFCs
 | 
						|
@comment  node-name,  next,  previous,  up
 | 
						|
@section Supported RFCs
 | 
						|
 | 
						|
  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{RFC2370}
 | 
						|
@cite{The OSPF Opaque LSA Option R. Coltun. July 1998.}
 | 
						|
 | 
						|
@item @asis{RFC3101}
 | 
						|
@cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.}
 | 
						|
 | 
						|
@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.}
 | 
						|
 | 
						|
@item @asis{RFC3137}
 | 
						|
@cite{OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. Zinin, D. McPherson. June 2001}
 | 
						|
@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.}
 | 
						|
 | 
						|
@item @asis{RFC2741}
 | 
						|
@cite{Agent Extensibility (AgentX) Protocol. M. Daniele, B. Wijnen. January 2000.}
 | 
						|
 | 
						|
@end table
 | 
						|
 | 
						|
@node How to get Frr
 | 
						|
@comment  node-name,  next,  previous,  up
 | 
						|
@section How to get Frr
 | 
						|
 | 
						|
The official Frr web-site is located at:
 | 
						|
 | 
						|
@uref{@value{PACKAGE_URL}}
 | 
						|
 | 
						|
and contains further information, as well as links to additional
 | 
						|
resources. 
 | 
						|
 | 
						|
@uref{@value{PACKAGE_URL},Frr} is a fork of Quagga, whose
 | 
						|
web-site is located at:
 | 
						|
 | 
						|
@uref{http://www.quagga.net/}.
 | 
						|
 | 
						|
@node Mailing List
 | 
						|
@comment  node-name,  next,  previous,  up
 | 
						|
@section Mailing List
 | 
						|
@cindex How to get in touch with Frr
 | 
						|
@cindex Mailing Frr
 | 
						|
@cindex Contact information
 | 
						|
@cindex Mailing lists
 | 
						|
 | 
						|
There is a mailing list for discussions about Frr.  If you have any
 | 
						|
comments or suggestions to Frr, please subscribe to:
 | 
						|
 | 
						|
@uref{https://lists.frrouting.org/listinfo/frog}.
 | 
						|
 | 
						|
The @uref{@value{PACKAGE_URL},,Frr} site has further information on
 | 
						|
the available mailing lists, see:
 | 
						|
 | 
						|
	@uref{https://lists.frrouting.org/}
 | 
						|
 | 
						|
@node Bug Reports
 | 
						|
@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:
 | 
						|
 | 
						|
@uref{http://github.com/frrouting/frr/issues}
 | 
						|
 | 
						|
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 Frr.
 | 
						|
Frr is still in the development stage, but please don't hesitate to
 | 
						|
send a bug report to @uref{http://github.com/frrouting/frr/issues}.
 |