]> git.proxmox.com Git - mirror_frr.git/blob - doc/overview.texi
OSPFD: Update Segment Routing following reviews
[mirror_frr.git] / doc / overview.texi
1 @node Overview
2 @chapter Overview
3 @cindex Overview
4
5 @uref{@value{PACKAGE_URL},,Frr} is a routing software package that
6 provides TCP/IP based routing services with routing protocols support such
7 as RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, IS-IS, BGP-4, and BGP-4+ (@pxref{Supported
8 RFCs}). Frr also supports special BGP Route Reflector and Route Server
9 behavior. In addition to traditional IPv4 routing protocols, Frr also
10 supports IPv6 routing protocols. With SNMP daemon which supports SMUX and AgentX
11 protocol, Frr provides routing protocol MIBs (@pxref{SNMP Support}).
12
13 Frr uses an advanced software architecture to provide you with a high
14 quality, multi server routing engine. Frr has an interactive user
15 interface for each routing protocol and supports common client commands.
16 Due to this design, you can add new protocol daemons to Frr easily. You
17 can use Frr library as your program's client user interface.
18
19 Frr is distributed under the @sc{gnu} General Public License.
20
21 @menu
22 * About Frr:: Basic information about Frr
23 * System Architecture:: The Frr system architecture
24 * Supported Platforms:: Supported platforms and future plans
25 * Supported RFCs:: Supported RFCs
26 * How to get Frr::
27 * Mailing List:: Mailing list information
28 * Bug Reports:: Mail address for bug data
29 @end menu
30
31 @node About Frr
32 @comment node-name, next, previous, up
33 @section About Frr
34 @cindex About Frr
35
36 Today, TCP/IP networks are covering all of the world. The Internet has
37 been deployed in many countries, companies, and to the home. When you
38 connect to the Internet your packet will pass many routers which have TCP/IP
39 routing functionality.
40
41 A system with Frr installed acts as a dedicated router. With Frr,
42 your machine exchanges routing information with other routers using routing
43 protocols. Frr uses this information to update the kernel routing table
44 so that the right data goes to the right place. You can dynamically change
45 the configuration and you may view routing table information from the Frr
46 terminal interface.
47
48 Adding to routing protocol support, Frr can setup interface's flags,
49 interface's address, static routes and so on. If you have a small network,
50 or a stub network, or xDSL connection, configuring the Frr routing
51 software is very easy. The only thing you have to do is to set up the
52 interfaces and put a few commands about static routes and/or default routes.
53 If the network is rather large, or if the network structure changes
54 frequently, you will want to take advantage of Frr's dynamic routing
55 protocol support for protocols such as RIP, OSPF, IS-IS or BGP.
56
57 Traditionally, UNIX based router configuration is done by
58 @command{ifconfig} and @command{route} commands. Status of routing
59 table is displayed by @command{netstat} utility. Almost of these commands
60 work only if the user has root privileges. Frr has a different system
61 administration method. There are two user modes in Frr. One is normal
62 mode, the other is enable mode. Normal mode user can only view system
63 status, enable mode user can change system configuration. This UNIX account
64 independent feature will be great help to the router administrator.
65
66 Currently, Frr supports common unicast routing protocols, that is BGP,
67 OSPF, RIP and IS-IS. Upcoming for MPLS support, an implementation of LDP is
68 currently being prepared for merging. Implementations of BFD and PIM-SSM
69 (IPv4) also exist, but are not actively being worked on.
70
71 The ultimate goal of the Frr project is making a productive, quality, free
72 TCP/IP routing software package.
73
74 @node System Architecture
75 @comment node-name, next, previous, up
76 @section System Architecture
77 @cindex System architecture
78 @cindex Software architecture
79 @cindex Software internals
80
81 Traditional routing software is made as a one process program which
82 provides all of the routing protocol functionalities. Frr takes a
83 different approach. It is made from a collection of several daemons that
84 work together to build the routing table. There may be several
85 protocol-specific routing daemons and zebra the kernel routing manager.
86
87 The @command{ripd} daemon handles the RIP protocol, while
88 @command{ospfd} is a daemon which supports OSPF version 2.
89 @command{bgpd} supports the BGP-4 protocol. For changing the kernel
90 routing table and for redistribution of routes between different routing
91 protocols, there is a kernel routing table manager @command{zebra} daemon.
92 It is easy to add a new routing protocol daemons to the entire routing
93 system without affecting any other software. You need to run only the
94 protocol daemon associated with routing protocols in use. Thus, user may
95 run a specific daemon and send routing reports to a central routing console.
96
97 There is no need for these daemons to be running on the same machine. You
98 can even run several same protocol daemons on the same machine. This
99 architecture creates new possibilities for the routing system.
100
101 @example
102 @group
103 +----+ +----+ +-----+ +-----+
104 |bgpd| |ripd| |ospfd| |zebra|
105 +----+ +----+ +-----+ +-----+
106 |
107 +---------------------------|--+
108 | v |
109 | UNIX Kernel routing table |
110 | |
111 +------------------------------+
112
113 Frr System Architecture
114 @end group
115 @end example
116
117 Multi-process architecture brings extensibility, modularity and
118 maintainability. At the same time it also brings many configuration files
119 and terminal interfaces. Each daemon has it's own configuration file and
120 terminal interface. When you configure a static route, it must be done in
121 @command{zebra} configuration file. When you configure BGP network it must
122 be done in @command{bgpd} configuration file. This can be a very annoying
123 thing. To resolve the problem, Frr provides integrated user interface
124 shell called @command{vtysh}. @command{vtysh} connects to each daemon with
125 UNIX domain socket and then works as a proxy for user input.
126
127 Frr was planned to use multi-threaded mechanism when it runs with a
128 kernel that supports multi-threads. But at the moment, the thread library
129 which comes with @sc{gnu}/Linux or FreeBSD has some problems with running
130 reliable services such as routing software, so we don't use threads at all.
131 Instead we use the @command{select(2)} system call for multiplexing the
132 events.
133
134 @node Supported Platforms
135 @comment node-name, next, previous, up
136 @section Supported Platforms
137
138 @cindex Supported platforms
139 @cindex Frr on other systems
140 @cindex Compatibility with other systems
141 @cindex Operating systems that support Frr
142
143 Currently Frr supports @sc{gnu}/Linux and BSD. Porting Frr
144 to other platforms is not too difficult as platform dependent code should
145 most be limited to the @command{zebra} daemon. Protocol daemons are mostly
146 platform independent. Please let us know when you find out Frr runs on a
147 platform which is not listed below.
148
149 The list of officially supported platforms are listed below. Note that
150 Frr may run correctly on other platforms, and may run with partial
151 functionality on further platforms.
152
153 @sp 1
154 @itemize @bullet
155 @item
156 @sc{gnu}/Linux
157 @item
158 FreeBSD
159 @item
160 NetBSD
161 @item
162 OpenBSD
163 @end itemize
164
165 Versions of these platforms that are older than around 2 years from the point
166 of their original release (in case of @sc{gnu}/Linux, this is since the kernel's
167 release on kernel.org) may need some work. Similarly, the following platforms
168 may work with some effort:
169
170 @sp 1
171 @itemize @bullet
172 @item
173 Solaris
174 @item
175 Mac OSX
176 @end itemize
177
178 Also note that, in particular regarding proprietary platforms, compiler
179 and C library choice will affect Frr. Only recent versions of the
180 following C compilers are well-tested:
181
182 @sp 1
183 @itemize @bullet
184 @item
185 @sc{gnu}'s GCC
186 @item
187 LLVM's clang
188 @item
189 Intel's ICC
190 @end itemize
191
192 @node Supported RFCs
193 @comment node-name, next, previous, up
194 @section Supported RFCs
195
196 Below is the list of currently supported RFC's.
197
198 @table @asis
199 @item @asis{RFC1058}
200 @cite{Routing Information Protocol. C.L. Hedrick. Jun-01-1988.}
201
202 @item @asis{RF2082}
203 @cite{RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.}
204
205 @item @asis{RFC2453}
206 @cite{RIP Version 2. G. Malkin. November 1998.}
207
208 @item @asis{RFC2080}
209 @cite{RIPng for IPv6. G. Malkin, R. Minnear. January 1997.}
210
211 @item @asis{RFC2328}
212 @cite{OSPF Version 2. J. Moy. April 1998.}
213
214 @item @asis{RFC2370}
215 @cite{The OSPF Opaque LSA Option R. Coltun. July 1998.}
216
217 @item @asis{RFC3101}
218 @cite{The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.}
219
220 @item @asis{RFC2740}
221 @cite{OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.}
222
223 @item @asis{RFC1771}
224 @cite{A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.}
225
226 @item @asis{RFC1965}
227 @cite{Autonomous System Confederations for BGP. P. Traina. June 1996.}
228
229 @item @asis{RFC1997}
230 @cite{BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.}
231
232 @item @asis{RFC2545}
233 @cite{Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.}
234
235 @item @asis{RFC2796}
236 @cite{BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.}
237
238 @item @asis{RFC2858}
239 @cite{Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.}
240
241 @item @asis{RFC2842}
242 @cite{Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.}
243
244 @item @asis{RFC3137}
245 @cite{OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. Zinin, D. McPherson. June 2001}
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 @item @asis{RFC2741}
268 @cite{Agent Extensibility (AgentX) Protocol. M. Daniele, B. Wijnen. January 2000.}
269
270 @end table
271
272 @node How to get Frr
273 @comment node-name, next, previous, up
274 @section How to get Frr
275
276 The official Frr web-site is located at:
277
278 @uref{@value{PACKAGE_URL}}
279
280 and contains further information, as well as links to additional
281 resources.
282
283 @uref{@value{PACKAGE_URL},Frr} is a fork of Quagga, whose
284 web-site is located at:
285
286 @uref{http://www.quagga.net/}.
287
288 @node Mailing List
289 @comment node-name, next, previous, up
290 @section Mailing List
291 @cindex How to get in touch with Frr
292 @cindex Mailing Frr
293 @cindex Contact information
294 @cindex Mailing lists
295
296 There is a mailing list for discussions about Frr. If you have any
297 comments or suggestions to Frr, please subscribe to:
298
299 @uref{https://lists.frrouting.org/listinfo/frog}.
300
301 The @uref{@value{PACKAGE_URL},,Frr} site has further information on
302 the available mailing lists, see:
303
304 @uref{https://lists.frrouting.org/}
305
306 @node Bug Reports
307 @section Bug Reports
308
309 @cindex Bug Reports
310 @cindex Bug hunting
311 @cindex Found a bug?
312 @cindex Reporting bugs
313 @cindex Reporting software errors
314 @cindex Errors in the software
315
316 If you think you have found a bug, please send a bug report to:
317
318 @uref{http://github.com/frrouting/frr/issues}
319
320 When you send a bug report, please be careful about the points below.
321
322 @itemize @bullet
323 @item
324 Please note what kind of OS you are using. If you use the IPv6 stack
325 please note that as well.
326 @item
327 Please show us the results of @code{netstat -rn} and @code{ifconfig -a}.
328 Information from zebra's VTY command @code{show ip route} will also be
329 helpful.
330 @item
331 Please send your configuration file with the report. If you specify
332 arguments to the configure script please note that too.
333 @end itemize
334
335 Bug reports are very important for us to improve the quality of Frr.
336 Frr is still in the development stage, but please don't hesitate to
337 send a bug report to @uref{http://github.com/frrouting/frr/issues}.