summaryrefslogtreecommitdiffstats
path: root/doc/developer/building-frr-for-opensuse.rst
blob: 3ff445bcd0621e5430b950e443c8c5712b1bc2f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
openSUSE
========

This document describes installation from source.

These instructions have been tested on openSUSE Tumbleweed in a Raspberry Pi 400.

Installing Dependencies
-----------------------

.. code-block:: console

   zypper in  git autoconf automake libtool make   \
     readline-devel texinfo net-snmp-devel groff pkgconfig libjson-c-devel\
     pam-devel python3-pytest bison flex c-ares-devel python3-devel\
     python3-Sphinx perl patch libcap-devel libyang-devel \
     libelf-devel libunwind-devel protobuf-c

.. include:: building-libunwind-note.rst

Building & Installing FRR
-------------------------

Add FRR user and groups
^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: console

   sudo groupadd -g 92 frr
   sudo groupadd -r -g 85 frrvty
   sudo useradd -u 92 -g 92 -M -r -G frrvty -s /sbin/nologin \
     -c "FRR FRRouting suite" -d /var/run/frr frr

Compile
^^^^^^^

.. include:: include-compile.rst

Install FRR configuration files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: console

   sudo install -m 775 -o frr -g frr -d /var/log/frr
   sudo install -m 775 -o frr -g frrvty -d /etc/frr
   sudo install -m 640 -o frr -g frrvty tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf
   sudo install -m 640 -o frr -g frr tools/etc/frr/frr.conf /etc/frr/frr.conf
   sudo install -m 640 -o frr -g frr tools/etc/frr/daemons.conf /etc/frr/daemons.conf
   sudo install -m 640 -o frr -g frr tools/etc/frr/daemons /etc/frr/daemons

.. note::

        In some platforms like raspberry for performance reasons
        some directories are in file systems (/var/run, ...) mounted with tempfs 
        so will disapear after every reboot.
        In frr the /var/run/frr is used to store pid files for every daemon.

Tweak sysctls
^^^^^^^^^^^^^

Some sysctls need to be changed in order to enable IPv4/IPv6 forwarding and
MPLS (if supported by your platform). If your platform does not support MPLS,
skip the MPLS related configuration in this section.

Create a new file ``/etc/sysctl.d/90-routing-sysctl.conf`` with the following
content:

::

   #
   # Enable packet forwarding
   #
   net.ipv4.conf.all.forwarding=1
   net.ipv6.conf.all.forwarding=1
   #
   # Enable MPLS Label processing on all interfaces
   #
   #net.mpls.conf.eth0.input=1
   #net.mpls.conf.eth1.input=1
   #net.mpls.conf.eth2.input=1
   #net.mpls.platform_labels=100000

.. note::

   MPLS must be invidividually enabled on each interface that requires it. See
   the example in the config block above.

Load the modified sysctls on the system:

.. code-block:: console

   sudo sysctl -p /etc/sysctl.d/90-routing-sysctl.conf

Create a new file ``/etc/modules-load.d/mpls.conf`` with the following content:

::

   # Load MPLS Kernel Modules
   mpls-router
   mpls-iptunnel

And load the kernel modules on the running system:

.. code-block:: console

   sudo modprobe mpls-router mpls-iptunnel


.. note::
   The ``firewalld`` service could be enabled. You may run into some
   issues with the iptables rules it installs by default. If you wish to just
   stop the service and clear `ALL` rules do these commands:

   .. code-block:: console

      sudo systemctl disable firewalld.service
      sudo systemctl stop firewalld.service
      sudo iptables -F

Install frr Service
^^^^^^^^^^^^^^^^^^^

.. code-block:: console

   sudo install -p -m 644 tools/frr.service /usr/lib/systemd/system/frr.service
   sudo systemctl enable frr

Enable daemons
^^^^^^^^^^^^^^

Open :file:`/etc/frr/daemons` with your text editor of choice. Look for the
section with ``bgpd=no`` etc.  Enable the daemons
as required by changing the value to ``yes``.

Start FRR
^^^^^^^^^

.. code-block:: console

   sudo systemctl start frr

Check the starting messages of frr with

.. code-block:: console

   journalctl -u frr --follow