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
|