4 This document describes installation from source.
6 These instructions have been tested on openSUSE Tumbleweed in a Raspberry Pi 400.
8 Installing Dependencies
9 -----------------------
11 .. code-block:: console
13 zypper in git autoconf automake libtool make \
14 readline-devel texinfo net-snmp-devel groff pkgconfig libjson-c-devel\
15 pam-devel python3-pytest bison flex c-ares-devel python3-devel\
16 python3-Sphinx perl patch libcap-devel libyang-devel \
17 libelf-devel libunwind-devel protobuf-c
19 .. include:: building-libunwind-note.rst
21 Building & Installing FRR
22 -------------------------
24 Add FRR user and groups
25 ^^^^^^^^^^^^^^^^^^^^^^^
27 .. code-block:: console
29 sudo groupadd -g 92 frr
30 sudo groupadd -r -g 85 frrvty
31 sudo useradd -u 92 -g 92 -M -r -G frrvty -s /sbin/nologin \
32 -c "FRR FRRouting suite" -d /var/run/frr frr
37 .. include:: include-compile.rst
39 Install FRR configuration files
40 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
42 .. code-block:: console
44 sudo install -m 775 -o frr -g frr -d /var/log/frr
45 sudo install -m 775 -o frr -g frrvty -d /etc/frr
46 sudo install -m 640 -o frr -g frrvty tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf
47 sudo install -m 640 -o frr -g frr tools/etc/frr/frr.conf /etc/frr/frr.conf
48 sudo install -m 640 -o frr -g frr tools/etc/frr/daemons.conf /etc/frr/daemons.conf
49 sudo install -m 640 -o frr -g frr tools/etc/frr/daemons /etc/frr/daemons
53 In some platforms like raspberry for performance reasons
54 some directories are in file systems (/var/run, ...) mounted with tempfs
55 so will disapear after every reboot.
56 In frr the /var/run/frr is used to store pid files for every daemon.
61 Some sysctls need to be changed in order to enable IPv4/IPv6 forwarding and
62 MPLS (if supported by your platform). If your platform does not support MPLS,
63 skip the MPLS related configuration in this section.
65 Create a new file ``/etc/sysctl.d/90-routing-sysctl.conf`` with the following
71 # Enable packet forwarding
73 net.ipv4.conf.all.forwarding=1
74 net.ipv6.conf.all.forwarding=1
76 # Enable MPLS Label processing on all interfaces
78 #net.mpls.conf.eth0.input=1
79 #net.mpls.conf.eth1.input=1
80 #net.mpls.conf.eth2.input=1
81 #net.mpls.platform_labels=100000
85 MPLS must be invidividually enabled on each interface that requires it. See
86 the example in the config block above.
88 Load the modified sysctls on the system:
90 .. code-block:: console
92 sudo sysctl -p /etc/sysctl.d/90-routing-sysctl.conf
94 Create a new file ``/etc/modules-load.d/mpls.conf`` with the following content:
98 # Load MPLS Kernel Modules
102 And load the kernel modules on the running system:
104 .. code-block:: console
106 sudo modprobe mpls-router mpls-iptunnel
110 The ``firewalld`` service could be enabled. You may run into some
111 issues with the iptables rules it installs by default. If you wish to just
112 stop the service and clear `ALL` rules do these commands:
114 .. code-block:: console
116 sudo systemctl disable firewalld.service
117 sudo systemctl stop firewalld.service
123 .. code-block:: console
125 sudo install -p -m 644 tools/frr.service /usr/lib/systemd/system/frr.service
126 sudo systemctl enable frr
131 Open :file:`/etc/frr/daemons` with your text editor of choice. Look for the
132 section with ``bgpd=no`` etc. Enable the daemons
133 as required by changing the value to ``yes``.
138 .. code-block:: console
140 sudo systemctl start frr
142 Check the starting messages of frr with
144 .. code-block:: console
146 journalctl -u frr --follow