blob: 811ad9ae89e147bf8f22244c2098692089043819 [file] [log] [blame]
paul76b89b42004-11-06 17:13:09 +00001@node Installation
paul718e3742002-12-13 20:15:29 +00002@chapter Installation
3
paul7190f4e2003-08-12 12:40:20 +00004@cindex How to install Quagga
paul718e3742002-12-13 20:15:29 +00005@cindex Installation
paul7190f4e2003-08-12 12:40:20 +00006@cindex Installing Quagga
paul718e3742002-12-13 20:15:29 +00007@cindex Building the system
paul7190f4e2003-08-12 12:40:20 +00008@cindex Making Quagga
paul718e3742002-12-13 20:15:29 +00009
paul76b89b42004-11-06 17:13:09 +000010There are three steps for installing the software: configuration,
paul718e3742002-12-13 20:15:29 +000011compilation, and installation.
12
13@menu
paul76b89b42004-11-06 17:13:09 +000014* Configure the Software::
15* Build the Software::
16* Install the Software::
paul718e3742002-12-13 20:15:29 +000017@end menu
18
paul76b89b42004-11-06 17:13:09 +000019The easiest way to get Quagga running is to issue the following
paul718e3742002-12-13 20:15:29 +000020commands:
21
22@example
23% configure
24% make
25% make install
26@end example
27
paul76b89b42004-11-06 17:13:09 +000028@node Configure the Software
paul718e3742002-12-13 20:15:29 +000029@section Configure the Software
30
paul76b89b42004-11-06 17:13:09 +000031@menu
32* The Configure script and its options::
33* Least-Privilege support::
34* Linux notes::
35@end menu
36
37@node The Configure script and its options
38@subsection The Configure script and its options
39
paul718e3742002-12-13 20:15:29 +000040@cindex Configuration options
41@cindex Options for configuring
42@cindex Build options
43@cindex Distribution configuration
44@cindex Options to @code{./configure}
45
paul76b89b42004-11-06 17:13:09 +000046Quagga has an excellent configure script which automatically detects most
47host configurations. There are several additional configure options you can
48use to turn off IPv6 support, to disable the compilation of specific
49daemons, and to enable SNMP support.
paul718e3742002-12-13 20:15:29 +000050
51@table @option
paul718e3742002-12-13 20:15:29 +000052@item --disable-ipv6
paul7190f4e2003-08-12 12:40:20 +000053Turn off IPv6 related features and daemons. Quagga configure script
paul718e3742002-12-13 20:15:29 +000054automatically detects IPv6 stack. But sometimes you might want to
paul7190f4e2003-08-12 12:40:20 +000055disable IPv6 support of Quagga.
paul718e3742002-12-13 20:15:29 +000056@item --disable-zebra
57Do not build zebra daemon.
58@item --disable-ripd
59Do not build ripd.
60@item --disable-ripngd
61Do not build ripngd.
62@item --disable-ospfd
63Do not build ospfd.
64@item --disable-ospf6d
65Do not build ospf6d.
66@item --disable-bgpd
67Do not build bgpd.
68@item --disable-bgp-announce
69Make @command{bgpd} which does not make bgp announcements at all. This
70feature is good for using @command{bgpd} as a BGP announcement listener.
71@item --enable-netlink
paul7190f4e2003-08-12 12:40:20 +000072Force to enable @sc{gnu}/Linux netlink interface. Quagga configure
paul718e3742002-12-13 20:15:29 +000073script detects netlink interface by checking a header file. When the header
74file does not match to the current running kernel, configure script will
75not turn on netlink support.
76@item --enable-snmp
77Enable SNMP support. By default, SNMP support is disabled.
David Lamparter7d50ad42012-11-03 11:19:52 -070078@item --disable-opaque-lsa
79Disable support for Opaque LSAs (RFC2370) in ospfd.
paul971a4492003-06-20 01:18:07 +000080@item --disable-ospfapi
81Disable support for OSPF-API, an API to interface directly with ospfd.
82OSPF-API is enabled if --enable-opaque-lsa is set.
83@item --disable-ospfclient
84Disable building of the example OSPF-API client.
David Lamparter7d50ad42012-11-03 11:19:52 -070085@item --disable-ospf-te
Olivier Dugeonec04b9f2016-04-19 19:18:18 +020086Disable support for OSPF Traffic Engineering Extension (RFC3630) this
paul971a4492003-06-20 01:18:07 +000087requires support for Opaque LSAs.
Olivier Dugeonec04b9f2016-04-19 19:18:18 +020088@item --disable-ospf-ri
89Disable support for OSPF Router Information (RFC4970 & RFC5088) this
90requires support for Opaque LSAs and Traffic Engineering.
91@item --enable-isisd
92Build isisd.
93@item --enable-isis-topology
94Enable IS-IS topology generator.
95@item --enable-isis-te
96Enable Traffic Engineering Extension for ISIS (RFC5305)
paul971a4492003-06-20 01:18:07 +000097@item --enable-multipath=@var{ARG}
98Enable support for Equal Cost Multipath. @var{ARG} is the maximum number
99of ECMP paths to allow, set to 0 to allow unlimited number of paths.
David Lamparter7d50ad42012-11-03 11:19:52 -0700100@item --disable-rtadv
101Disable support IPV6 router advertisement in zebra.
David Lamparter8c99b4c2013-08-01 07:43:36 +0000102@item --enable-gcc-rdynamic
103Pass the @command{-rdynamic} option to the linker driver. This is in most
104cases neccessary for getting usable backtraces. This option defaults to on
105if the compiler is detected as gcc, but giving an explicit enable/disable is
106suggested.
107@item --enable-backtrace
108Controls backtrace support for the crash handlers. This is autodetected by
109default. Using the switch will enforce the requested behaviour, failing with
110an error if support is requested but not available. On BSD systems, this
111needs libexecinfo, while on glibc support for this is part of libc itself.
paul718e3742002-12-13 20:15:29 +0000112@end table
113
114You may specify any combination of the above options to the configure
115script. By default, the executables are placed in @file{/usr/local/sbin}
116and the configuration files in @file{/usr/local/etc}. The @file{/usr/local/}
117installation prefix and other directories may be changed using the following
118options to the configuration script.
119
120@table @option
121@item --prefix=@var{prefix}
122Install architecture-independent files in @var{prefix} [/usr/local].
123@item --sysconfdir=@var{dir}
paul971a4492003-06-20 01:18:07 +0000124Look for configuration files in @var{dir} [@var{prefix}/etc]. Note
125that sample configuration files will be installed here.
126@item --localstatedir=@var{dir}
127Configure zebra to use @var{dir} for local state files, such
128as pid files and unix sockets.
paul718e3742002-12-13 20:15:29 +0000129@end table
130
paul76b89b42004-11-06 17:13:09 +0000131@example
132% ./configure --disable-ipv6
133@end example
134
135This command will configure zebra and the routing daemons.
136
137@node Least-Privilege support
138@subsection Least-Privilege support
139
140@cindex Quagga Least-Privileges
141@cindex Quagga Privileges
142
143Additionally, you may configure zebra to drop its elevated privileges
144shortly after startup and switch to another user. The configure script will
145automatically try to configure this support. There are three configure
146options to control the behaviour of Quagga daemons.
paul971a4492003-06-20 01:18:07 +0000147
148@table @option
149@item --enable-user=@var{user}
150Switch to user @var{ARG} shortly after startup, and run as user @var{ARG}
151in normal operation.
152@item --enable-group=@var{group}
153Switch real and effective group to @var{group} shortly after
154startup.
155@item --enable-vty-group=@var{group}
156Create Unix Vty sockets (for use with vtysh) with group owndership set to
157@var{group}. This allows one to create a seperate group which is
158restricted to accessing only the Vty sockets, hence allowing one to
159delegate this group to individual users, or to run vtysh setgid to
160this group.
161@end table
162
paul7190f4e2003-08-12 12:40:20 +0000163The default user and group which will be configured is 'quagga' if no user
paul76b89b42004-11-06 17:13:09 +0000164or group is specified. Note that this user or group requires write access to
165the local state directory (see --localstatedir) and requires at least read
166access, and write access if you wish to allow daemons to write out their
167configuration, to the configuration directory (see --sysconfdir).
paul971a4492003-06-20 01:18:07 +0000168
169On systems which have the 'libcap' capabilities manipulation library
paul76b89b42004-11-06 17:13:09 +0000170(currently only linux), the quagga system will retain only minimal
171capabilities required, further it will only raise these capabilities for
172brief periods. On systems without libcap, quagga will run as the user
173specified and only raise its uid back to uid 0 for brief periods.
paul971a4492003-06-20 01:18:07 +0000174
paul76b89b42004-11-06 17:13:09 +0000175@node Linux notes
176@subsection Linux Notes
paul718e3742002-12-13 20:15:29 +0000177
paul7190f4e2003-08-12 12:40:20 +0000178@cindex Configuring Quagga
paul718e3742002-12-13 20:15:29 +0000179@cindex Building on Linux boxes
180@cindex Linux configurations
181
182There are several options available only to @sc{gnu}/Linux systems:
paul76b89b42004-11-06 17:13:09 +0000183@footnote{@sc{gnu}/Linux has very flexible kernel configuration features}. If
184you use @sc{gnu}/Linux, make sure that the current kernel configuration is
paul7190f4e2003-08-12 12:40:20 +0000185what you want. Quagga will run with any kernel configuration but some
paul718e3742002-12-13 20:15:29 +0000186recommendations do exist.
187
188@table @var
189
190@item CONFIG_NETLINK
paul76b89b42004-11-06 17:13:09 +0000191Kernel/User netlink socket. This is a brand new feature which enables an
192advanced interface between the Linux kernel and zebra (@pxref{Kernel Interface}).
paul718e3742002-12-13 20:15:29 +0000193
194@item CONFIG_RTNETLINK
195Routing messages.
196This makes it possible to receive netlink routing messages. If you
197specify this option, @command{zebra} can detect routing information
198updates directly from the kernel (@pxref{Kernel Interface}).
199
200@item CONFIG_IP_MULTICAST
201IP: multicasting.
paul76b89b42004-11-06 17:13:09 +0000202This option should be specified when you use @command{ripd} (@pxref{RIP}) or
203@command{ospfd} (@pxref{OSPFv2}) because these protocols use multicast.
paul718e3742002-12-13 20:15:29 +0000204
205@end table
206
207IPv6 support has been added in @sc{gnu}/Linux kernel version 2.2. If you
paul7190f4e2003-08-12 12:40:20 +0000208try to use the Quagga IPv6 feature on a @sc{gnu}/Linux kernel, please
paul718e3742002-12-13 20:15:29 +0000209make sure the following libraries have been installed. Please note that
210these libraries will not be needed when you uses @sc{gnu} C library 2.1
211or upper.
212
213@table @code
214
215@item inet6-apps
216The @code{inet6-apps} package includes basic IPv6 related libraries such
217as @code{inet_ntop} and @code{inet_pton}. Some basic IPv6 programs such
218as @command{ping}, @command{ftp}, and @command{inetd} are also
219included. The @code{inet-apps} can be found at
paul76b89b42004-11-06 17:13:09 +0000220@uref{ftp://ftp.inner.net/pub/ipv6/}.
paul718e3742002-12-13 20:15:29 +0000221
222@item net-tools
223The @code{net-tools} package provides an IPv6 enabled interface and
224routing utility. It contains @command{ifconfig}, @command{route},
225@command{netstat}, and other tools. @code{net-tools} may be found at
paul76b89b42004-11-06 17:13:09 +0000226@uref{http://www.tazenda.demon.co.uk/phil/net-tools/}.
paul718e3742002-12-13 20:15:29 +0000227
228@end table
229@c A - end of footnote
paul718e3742002-12-13 20:15:29 +0000230
paul76b89b42004-11-06 17:13:09 +0000231@node Build the Software
paul718e3742002-12-13 20:15:29 +0000232@section Build the Software
233
234After configuring the software, you will need to compile it for your
235system. Simply issue the command @command{make} in the root of the source
236directory and the software will be compiled. If you have *any* problems
237at this stage, be certain to send a bug report @xref{Bug Reports}.
238
239@example
240% ./configure
241.
242.
243.
244./configure output
245.
246.
247.
248% make
249@end example
250@c A - End of node, Building the Software
251
252
paul76b89b42004-11-06 17:13:09 +0000253@node Install the Software
paul718e3742002-12-13 20:15:29 +0000254@comment node-name, next, previous, up
255@section Install the Software
256
257Installing the software to your system consists of copying the compiled
258programs and supporting files to a standard location. After the
259installation process has completed, these files have been copied
260from your work directory to @file{/usr/local/bin}, and @file{/usr/local/etc}.
261
paul7190f4e2003-08-12 12:40:20 +0000262To install the Quagga suite, issue the following command at your shell
paul718e3742002-12-13 20:15:29 +0000263prompt: @command{make install}.
264
265@example
266%
267% make install
268%
269@end example
270
paul7190f4e2003-08-12 12:40:20 +0000271Quagga daemons have their own terminal interface or VTY. After
paul718e3742002-12-13 20:15:29 +0000272installation, you have to setup each beast's port number to connect to
273them. Please add the following entries to @file{/etc/services}.
274
275@example
276zebrasrv 2600/tcp # zebra service
277zebra 2601/tcp # zebra vty
278ripd 2602/tcp # RIPd vty
279ripngd 2603/tcp # RIPngd vty
280ospfd 2604/tcp # OSPFd vty
281bgpd 2605/tcp # BGPd vty
282ospf6d 2606/tcp # OSPF6d vty
jardin5a514b12003-12-23 10:50:21 +0000283ospfapi 2607/tcp # ospfapi
284isisd 2608/tcp # ISISd vty
Everton Marques871dbcf2009-08-11 15:43:05 -0300285pimd 2611/tcp # PIMd vty
paul718e3742002-12-13 20:15:29 +0000286@end example
287
288If you use a FreeBSD newer than 2.2.8, the above entries are already
289added to @file{/etc/services} so there is no need to add it. If you
290specify a port number when starting the daemon, these entries may not be
291needed.
292
293You may need to make changes to the config files in
294@file{@value{INSTALL_PREFIX_ETC}/*.conf}. @xref{Config Commands}.