]> git.proxmox.com Git - mirror_frr.git/blame - doc/user/overview.rst
Merge pull request #3303 from opensourcerouting/bugfix/isis-fragment-retransmission
[mirror_frr.git] / doc / user / overview.rst
CommitLineData
0efdf0fe 1.. _overview:
42fc5d26
QY
2
3********
4Overview
5********
6
2da6ccc3 7`FRR`_ is a routing software package that provides TCP/IP based routing
3175ea5a
DL
8services with routing protocols support such as BGP, RIP, OSPF, IS-IS and more
9(see :ref:`supported-protocols`). FRR also supports
2da6ccc3 10special BGP Route Reflector and Route Server behavior. In addition to
be46d288 11traditional IPv4 routing protocols, FRR also supports IPv6 routing protocols.
3175ea5a
DL
12With an SNMP daemon that supports the AgentX protocol, FRR provides routing
13protocol MIB read-only access (:ref:`snmp-support`).
be46d288 14
2da6ccc3
QY
15FRR uses an advanced software architecture to provide you with a high quality,
16multi server routing engine. FRR has an interactive user interface for each
17routing protocol and supports common client commands. Due to this design, you
18can add new protocol daemons to FRR easily. You can use FRR library as your
19program's client user interface.
42fc5d26 20
be46d288 21FRR is distributed under the GNU General Public License.
42fc5d26 22
717b4866
QY
23FRR is a fork of `Quagga <http://www.quagga.net/>`_.
24
11ab5329 25.. _about-frr:
44f2550e 26
be46d288 27About FRR
42fc5d26
QY
28=========
29
2da6ccc3
QY
30Today, TCP/IP networks are covering all of the world. The Internet has been
31deployed in many countries, companies, and to the home. When you connect to
32the Internet your packet will pass many routers which have TCP/IP routing
33functionality.
42fc5d26 34
2da6ccc3
QY
35A system with FRR installed acts as a dedicated router. With FRR, your machine
36exchanges routing information with other routers using routing protocols. FRR
37uses this information to update the kernel routing table so that the right data
38goes to the right place. You can dynamically change the configuration and you
39may view routing table information from the FRR terminal interface.
42fc5d26 40
be46d288 41Adding to routing protocol support, FRR can setup interface's flags,
2da6ccc3
QY
42interface's address, static routes and so on. If you have a small network, or
43a stub network, or xDSL connection, configuring the FRR routing software is
44very easy. The only thing you have to do is to set up the interfaces and put a
45few commands about static routes and/or default routes. If the network is
46rather large, or if the network structure changes frequently, you will want to
47take advantage of FRR's dynamic routing protocol support for protocols such as
48RIP, OSPF, IS-IS or BGP.
49
50Traditionally, UNIX based router configuration is done by *ifconfig* and
51*route* commands. Status of routing table is displayed by *netstat* utility.
52Almost of these commands work only if the user has root privileges. FRR has a
53different system administration method. There are two user modes in FRR. One
54is normal mode, the other is enable mode. Normal mode user can only view
55system status, enable mode user can change system configuration. This UNIX
56account independent feature will be great help to the router administrator.
57
58Currently, FRR supports common unicast routing protocols, that is BGP, OSPF,
59RIP and IS-IS. Upcoming for MPLS support, an implementation of LDP is
42fc5d26
QY
60currently being prepared for merging. Implementations of BFD and PIM-SSM
61(IPv4) also exist, but are not actively being worked on.
62
2da6ccc3
QY
63The ultimate goal of the FRR project is making a production-grade, high
64quality, featureful and free IP routing software suite.
42fc5d26 65
42fc5d26
QY
66
67System Architecture
68===================
69
70.. index:: System architecture
71
72.. index:: Software architecture
73
74.. index:: Software internals
75
2da6ccc3
QY
76Traditional routing software is made as a one process program which provides
77all of the routing protocol functionalities. FRR takes a different approach.
78FRR is a suite of daemons that work together to build the routing table. There
79is a daemon for each major supported protocol as well as a middleman daemon
80(*Zebra*) which serves as the broker between these daemons and the kernel.
42fc5d26 81
2da6ccc3
QY
82This architecture allows for high resiliency, since an error, crash or exploit
83in one protocol daemon will generally not affect the others. It is also
84flexible and extensible since the modularity makes it easy to implement new
85protocols and tie them into the suite.
86
87An illustration of the large scale architecture is given below.
42fc5d26 88
2da6ccc3 89::
42fc5d26 90
2da6ccc3
QY
91 +----+ +----+ +-----+ +----+ +----+ +----+ +-----+
92 |bgpd| |ripd| |ospfd| |ldpd| |pbrd| |pimd| |.....|
93 +----+ +----+ +-----+ +----+ +----+ +----+ +-----+
94 | | | | | | |
95 +----v-------v--------v-------v-------v-------v--------v
96 | |
97 | Zebra |
98 | |
99 +------------------------------------------------------+
100 | | |
101 | | |
102 +------v------+ +---------v--------+ +------v------+
103 | | | | | |
104 | *NIX Kernel | | Remote dataplane | | ........... |
105 | | | | | |
106 +-------------+ +------------------+ +-------------+
107
108
109The multi-process architecture brings extensibility, modularity and
110maintainability. At the same time it also brings many configuration files and
111terminal interfaces. Each daemon has its own configuration file and terminal
112interface. When you configure a static route, it must be done in the *Zebra*
113configuration file. When you configure BGP network it must be done in the
114*bgpd* configuration file. This can become difficult to manage. To resolve the
115problem, FRR provides integrated user interface shell called *vtysh*. *vtysh*
116connects to each daemon with UNIX domain socket and then works as a proxy for
117user input.
42fc5d26
QY
118
119Supported Platforms
120===================
121
122.. index:: Supported platforms
be46d288 123.. index:: FRR on other systems
42fc5d26 124.. index:: Compatibility with other systems
be46d288 125.. index:: Operating systems that support FRR
42fc5d26 126
2da6ccc3
QY
127Currently FRR supports GNU/Linux and BSD. Porting FRR to other platforms is not
128too difficult as platform dependent code should be mostly limited to the
129*Zebra* daemon. Protocol daemons are largely platform independent. Please let
130us know if you can get FRR to run on a platform which is not listed below:
42fc5d26 131
44f2550e
QY
132- GNU/Linux
133- FreeBSD
134- NetBSD
135- OpenBSD
42fc5d26
QY
136
137Versions of these platforms that are older than around 2 years from the point
44f2550e 138of their original release (in case of GNU/Linux, this is since the kernel's
2da6ccc3
QY
139release on https://kernel.org/) may need some work. Similarly, the following
140platforms may work with some effort:
42fc5d26 141
44f2550e
QY
142- Solaris
143- MacOS
42fc5d26 144
2da6ccc3 145Recent versions of the following compilers are well tested:
42fc5d26 146
44f2550e 147- GNU's GCC
2da6ccc3 148- LLVM's Clang
44f2550e 149- Intel's ICC
42fc5d26 150
2da6ccc3
QY
151.. _supported-protocols:
152
36372632
DL
153Supported Protocols vs. Platform
154================================
155
156The following table lists all protocols cross-refrenced to all operating
157systems that have at least CI build tests. Note that for features, only
158features with system dependencies are included here.
159
160.. role:: mark
161
162.. comment - the :mark:`X` pieces mesh with a little bit of JavaScript and
163 CSS in _static/overrides.{js,css} respectively. The JS code looks at the
164 presence of the 'Y' 'N' '≥' '†' or 'CP' strings. This seemed to be the
165 best / least intrusive way of getting a nice table in HTML. The table
166 will look somewhat shoddy on other sphinx targets like PDF or info (but
167 should still be readable.)
168
2282d928 169+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 170| Daemon / Feature | Linux | OpenBSD | FreeBSD | NetBSD | Solaris |
2282d928
DL
171+===================================+================+==============+============+============+============+
172| **FRR Core** | | | | | |
173+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 174| `zebra` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928
DL
175+-----------------------------------+----------------+--------------+------------+------------+------------+
176| VRF | :mark:`≥4.8` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
177+-----------------------------------+----------------+--------------+------------+------------+------------+
178| MPLS | :mark:`≥4.5` | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` |
179+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 180| `pbrd` (Policy Routing) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
2282d928
DL
181+-----------------------------------+----------------+--------------+------------+------------+------------+
182| **WAN / Carrier protocols** | | | | | |
183+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 184| `bgpd` (BGP) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928
DL
185+-----------------------------------+----------------+--------------+------------+------------+------------+
186| VRF / L3VPN | :mark:`≥4.8` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` |
187| | :mark:`†4.3` | | | | |
188+-----------------------------------+----------------+--------------+------------+------------+------------+
189| EVPN | :mark:`≥4.18` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` |
190| | :mark:`†4.9` | | | | |
191+-----------------------------------+----------------+--------------+------------+------------+------------+
192| VNC (Virtual Network Control) | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` |
193+-----------------------------------+----------------+--------------+------------+------------+------------+
194| Flowspec | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` | :mark:`CP` |
195+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 196| `ldpd` (LDP) | :mark:`≥4.5` | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` |
2282d928
DL
197+-----------------------------------+----------------+--------------+------------+------------+------------+
198| VPWS / PW | :mark:`N` | :mark:`≥5.8` | :mark:`N` | :mark:`N` | :mark:`N` |
199+-----------------------------------+----------------+--------------+------------+------------+------------+
200| VPLS | :mark:`N` | :mark:`≥5.8` | :mark:`N` | :mark:`N` | :mark:`N` |
201+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 202| `nhrpd` (NHRP) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
2282d928
DL
203+-----------------------------------+----------------+--------------+------------+------------+------------+
204| **Link-State Routing** | | | | | |
205+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 206| `ospfd` (OSPFv2) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928
DL
207+-----------------------------------+----------------+--------------+------------+------------+------------+
208| Segment Routing | :mark:`≥4.12` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
209+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 210| `ospf6d` (OSPFv3) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928 211+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 212| `isisd` (IS-IS) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928
DL
213+-----------------------------------+----------------+--------------+------------+------------+------------+
214| **Distance-Vector Routing** | | | | | |
215+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 216| `ripd` (RIPv2) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928 217+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 218| `ripngd` (RIPng) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928 219+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 220| `babeld` (BABEL) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928 221+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 222| `eigrpd` (EIGRP) | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928
DL
223+-----------------------------------+----------------+--------------+------------+------------+------------+
224| **Multicast Routing** | | | | | |
225+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632 226| `pimd` (PIM) | :mark:`≥4.18` | :mark:`N` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
2282d928
DL
227+-----------------------------------+----------------+--------------+------------+------------+------------+
228| SSM (Source Specific) | :mark:`Y` | :mark:`N` | :mark:`Y` | :mark:`Y` | :mark:`Y` |
229+-----------------------------------+----------------+--------------+------------+------------+------------+
230| ASM (Any Source) | :mark:`Y` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
231+-----------------------------------+----------------+--------------+------------+------------+------------+
36372632
DL
232
233The indicators have the following semantics:
234
235* :mark:`Y` - daemon/feature fully functional
236* :mark:`≥X.X` - fully functional with kernel version X.X or newer
237* :mark:`†X.X` - restricted functionality or impaired performance with kernel version X.X or newer
238* :mark:`CP` - control plane only (i.e. BGP route server / route reflector)
239* :mark:`N` - daemon/feature not supported by operating system
42fc5d26 240
44f2550e 241.. _supported-rfcs:
42fc5d26
QY
242
243Supported RFCs
2da6ccc3 244--------------
42fc5d26 245
44f2550e
QY
246FRR implements the following RFCs:
247
2da6ccc3
QY
248.. note:: This list is incomplete.
249
44f2550e
QY
250- :rfc:`1058`
251 :t:`Routing Information Protocol. C.L. Hedrick. Jun-01-1988.`
252- :rfc:`2082`
253 :t:`RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.`
254- :rfc:`2453`
255 :t:`RIP Version 2. G. Malkin. November 1998.`
256- :rfc:`2080`
257 :t:`RIPng for IPv6. G. Malkin, R. Minnear. January 1997.`
258- :rfc:`2328`
259 :t:`OSPF Version 2. J. Moy. April 1998.`
260- :rfc:`2370`
261 :t:`The OSPF Opaque LSA Option R. Coltun. July 1998.`
262- :rfc:`3101`
263 :t:`The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.`
264- :rfc:`2740`
265 :t:`OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.`
266- :rfc:`1771`
267 :t:`A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.`
268- :rfc:`1965`
269 :t:`Autonomous System Confederations for BGP. P. Traina. June 1996.`
270- :rfc:`1997`
271 :t:`BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.`
272- :rfc:`2545`
273 :t:`Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P.
274 Marques, F. Dupont. March 1999.`
275- :rfc:`2796`
276 :t:`BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R.
277 Chandrasekeran. June 1996.`
278- :rfc:`2858`
279 :t:`Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D.
280 Katz. June 2000.`
281- :rfc:`2842`
282 :t:`Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.`
283- :rfc:`3137`
284 :t:`OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. Zinin,
285 D. McPherson. June 2001`
401c1744
RW
286- :rfc:`4447`
287 :t:`Pseudowire Setup and Maintenance Using the Label Distribution Protocol
288 (LDP), L. Martini, E. Rosen, N. El-Aawar, T. Smith, and G. Heron. April
289 2006.`
290- :rfc:`4762`
291 :t:`Virtual Private LAN Service (VPLS) Using Label Distribution Protocol
292 (LDP) Signaling, M. Lasserre and V. Kompella. January 2007.`
293- :rfc:`5036`
294 :t:`LDP Specification, L. Andersson, I. Minei, and B. Thomas. October 2007.`
295- :rfc:`5561`
296 :t:`LDP Capabilities, B. Thomas, K. Raza, S. Aggarwal, R. Aggarwal, and
297 JL. Le Roux. July 2009.`
298- :rfc:`5918`
299 :t:`Label Distribution Protocol (LDP) 'Typed Wildcard' Forward Equivalence
300 Class (FEC), R. Asati, I. Minei, and B. Thomas. August 2010.`
301- :rfc:`5919`
302 :t:`Signaling LDP Label Advertisement Completion, R. Asati, P. Mohapatra,
303 E. Chen, and B. Thomas. August 2010.`
304- :rfc:`6667`
305 :t:`LDP 'Typed Wildcard' Forwarding Equivalence Class (FEC) for PWid and
306 Generalized PWid FEC Elements, K. Raza, S. Boutros, and C. Pignataro. July
307 2012.`
308- :rfc:`6720`
309 :t:`The Generalized TTL Security Mechanism (GTSM) for the Label Distribution
310 Protocol (LDP), C. Pignataro and R. Asati. August 2012.`
311- :rfc:`7552`
312 :t:`Updates to LDP for IPv6, R. Asati, C. Pignataro, K. Raza, V. Manral,
313 and R. Papneja. June 2015.`
c44032c1
RZ
314- :rfc:`5880`
315 :t:`Bidirectional Forwarding Detection (BFD), D. Katz, D. Ward. June 2010`
316- :rfc:`5881`
317 :t:`Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop),
318 D. Katz, D. Ward. June 2010`
319- :rfc:`5883`
320 :t:`Bidirectional Forwarding Detection (BFD) for Multihop Paths, D. Katz,
321 D. Ward. June 2010`
44f2550e
QY
322
323**When SNMP support is enabled, the following RFCs are also supported:**
324
325- :rfc:`1227`
326 :t:`SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.`
327- :rfc:`1657`
328 :t:`Definitions of Managed Objects for the Fourth Version of the Border
329 Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss, J. Chu, Editor.
330 July 1994.`
331- :rfc:`1724`
332 :t:`RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.`
333- :rfc:`1850`
334 :t:`OSPF Version 2 Management Information Base. F. Baker, R. Coltun.
335 November 1995.`
336- :rfc:`2741`
337 :t:`Agent Extensibility (AgentX) Protocol. M. Daniele, B. Wijnen. January 2000.`
42fc5d26 338
be46d288 339How to get FRR
42fc5d26
QY
340==============
341
44f2550e
QY
342The official FRR website is located at |PACKAGE_URL| and contains further
343information, as well as links to additional resources.
42fc5d26 344
717b4866
QY
345Several distributions provide packages for FRR. Check your distribution's
346repositories to find out if a suitable version is available.
42fc5d26 347
44f2550e
QY
348Mailing Lists
349=============
42fc5d26 350
be46d288 351.. index:: How to get in touch with FRR
42fc5d26 352.. index:: Contact information
42fc5d26
QY
353.. index:: Mailing lists
354
42fc5d26 355
44f2550e
QY
356Italicized lists are private.
357
358+--------------------------------+------------------------------+
359| Topic | List |
360+================================+==============================+
361| Development | dev@lists.frrouting.org |
362+--------------------------------+------------------------------+
363| Users & Operators | frog@lists.frrouting.org |
364+--------------------------------+------------------------------+
365| Announcements | announce@lists.frrouting.org |
366+--------------------------------+------------------------------+
367| *Security* | security@lists.frrouting.org |
368+--------------------------------+------------------------------+
369| *Technical Steering Committee* | tsc@lists.frrouting.org |
370+--------------------------------+------------------------------+
371
372The Development list is used to discuss and document general issues related to
013f9762
QY
373project development and governance. The public `Slack`_ instance and weekly
374technical meetings provide a higher bandwidth channel for discussions. The
375results of such discussions are reflected in updates, as appropriate, to code
376(i.e., merges), `GitHub issues`_ tracked issues, and for governance or process
377changes, updates to the Development list and either this file or information
378posted at `FRR`_.
42fc5d26 379
07a17e6d
QY
380Bug Reports
381===========
382
2da6ccc3 383For information on reporting bugs, please see :ref:`bug-reports`.
42fc5d26 384
11ab5329 385.. _frr: |package-url|
0efdf0fe 386.. _github: https://github.com/frrouting/frr/
11ab5329 387.. _github issues: https://github.com/frrouting/frr/issues
0efdf0fe 388.. _slack: https://frrouting.slack.com/