mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 00:56:19 +00:00
doc: update build docs for Ubuntu 16.04
Same updates as Ubuntu 18.04 doc Tested on Ubuntu 16.04 Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
parent
ae999ff862
commit
650c632224
@ -1,172 +1,134 @@
|
|||||||
Ubuntu 16.04LTS
|
Ubuntu 16.04 LTS
|
||||||
===============================================
|
================
|
||||||
|
|
||||||
- MPLS is not supported on ``Ubuntu 16.04`` with default kernel. MPLS
|
This document describes installation from source. If you want to build a
|
||||||
requires Linux Kernel 4.5 or higher (LDP can be built, but may have
|
``deb``, see :ref:`packaging-debian`.
|
||||||
limited use without MPLS) For an updated Ubuntu Kernel, see
|
|
||||||
http://kernel.ubuntu.com/~kernel-ppa/mainline/
|
|
||||||
|
|
||||||
Install required packages
|
Installing Dependencies
|
||||||
-------------------------
|
-----------------------
|
||||||
|
|
||||||
Add packages:
|
.. code-block:: console
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
|
apt-get update
|
||||||
apt-get install \
|
apt-get install \
|
||||||
git autoconf automake libtool make gawk libreadline-dev texinfo dejagnu \
|
git autoconf automake libtool make gawk libreadline-dev texinfo \
|
||||||
pkg-config libpam0g-dev libjson-c-dev bison flex python-pytest \
|
pkg-config libpam0g-dev libjson-c-dev bison flex python-pytest \
|
||||||
libc-ares-dev python3-dev libsystemd-dev python-ipaddress \
|
libc-ares-dev python3-dev libsystemd-dev python-ipaddress python3-sphinx \
|
||||||
python3-sphinx install-info build-essential libsystemd-dev
|
install-info build-essential libsystemd-dev libsnmp-dev perl
|
||||||
|
|
||||||
.. include:: building-libyang.rst
|
.. include:: building-libyang.rst
|
||||||
|
|
||||||
Get FRR, compile it and install it (from Git)
|
Building & Installing FRR
|
||||||
---------------------------------------------
|
-------------------------
|
||||||
|
|
||||||
**This assumes you want to build and install FRR from source and not
|
Add FRR user and groups
|
||||||
using any packages**
|
|
||||||
|
|
||||||
Add frr groups and user
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
::
|
.. code-block:: console
|
||||||
|
|
||||||
sudo groupadd -r -g 92 frr
|
sudo groupadd -r -g 92 frr
|
||||||
sudo groupadd -r -g 85 frrvty
|
sudo groupadd -r -g 85 frrvty
|
||||||
sudo adduser --system --ingroup frr --home /var/run/frr/ \
|
sudo adduser --system --ingroup frr --home /var/run/frr/ \
|
||||||
--gecos "FRR suite" --shell /sbin/nologin frr
|
--gecos "FRR suite" --shell /sbin/nologin frr
|
||||||
sudo usermod -a -G frrvty frr
|
sudo usermod -a -G frrvty frr
|
||||||
|
|
||||||
Download Source, configure and compile it
|
Compile
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^
|
||||||
|
|
||||||
(You may prefer different options on configure statement. These are just
|
.. include:: include-compile.rst
|
||||||
an example.)
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Edit :file:`/etc/sysctl.conf` and uncomment the following values (ignore the
|
||||||
|
other settings):
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
git clone https://github.com/frrouting/frr.git frr
|
# Uncomment the next line to enable packet forwarding for IPv4
|
||||||
cd frr
|
net.ipv4.ip_forward=1
|
||||||
./bootstrap.sh
|
|
||||||
./configure \
|
|
||||||
--prefix=/usr \
|
|
||||||
--enable-exampledir=/usr/share/doc/frr/examples/ \
|
|
||||||
--localstatedir=/var/run/frr \
|
|
||||||
--sbindir=/usr/lib/frr \
|
|
||||||
--sysconfdir=/etc/frr \
|
|
||||||
--enable-multipath=64 \
|
|
||||||
--enable-user=frr \
|
|
||||||
--enable-group=frr \
|
|
||||||
--enable-vty-group=frrvty \
|
|
||||||
--enable-configfile-mask=0640 \
|
|
||||||
--enable-logfile-mask=0640 \
|
|
||||||
--enable-fpm \
|
|
||||||
--enable-systemd=yes \
|
|
||||||
--with-pkg-git-version \
|
|
||||||
--with-pkg-extra-version=-MyOwnFRRVersion
|
|
||||||
make
|
|
||||||
make check
|
|
||||||
sudo make install
|
|
||||||
|
|
||||||
Create empty FRR configuration files
|
# Uncomment the next line to enable packet forwarding for IPv6
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
# Enabling this option disables Stateless Address Autoconfiguration
|
||||||
|
# based on Router Advertisements for this host
|
||||||
|
net.ipv6.conf.all.forwarding=1
|
||||||
|
|
||||||
::
|
Reboot or use ``sysctl -p`` to apply the same config to the running system.
|
||||||
|
|
||||||
sudo install -m 755 -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 frr /dev/null /etc/frr/zebra.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/bgpd.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ospfd.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ospf6d.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/isisd.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ripd.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ripngd.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/pimd.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ldpd.conf
|
|
||||||
sudo install -m 640 -o frr -g frr /dev/null /etc/frr/nhrpd.conf
|
|
||||||
sudo install -m 640 -o frr -g frrvty /dev/null /etc/frr/vtysh.conf
|
|
||||||
|
|
||||||
Enable IPv4 & IPv6 forwarding
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Edit ``/etc/sysctl.conf`` and uncomment the following values (ignore the
|
|
||||||
other settings)
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
# Uncomment the next line to enable packet forwarding for IPv4
|
|
||||||
net.ipv4.ip_forward=1
|
|
||||||
|
|
||||||
# Uncomment the next line to enable packet forwarding for IPv6
|
|
||||||
# Enabling this option disables Stateless Address Autoconfiguration
|
|
||||||
# based on Router Advertisements for this host
|
|
||||||
net.ipv6.conf.all.forwarding=1
|
|
||||||
|
|
||||||
Enable MPLS Forwarding (with Linux Kernel >= 4.5)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Edit ``/etc/sysctl.conf`` and the following lines. Make sure to add a
|
|
||||||
line equal to ``net.mpls.conf.eth0.input`` or each interface used with
|
|
||||||
MPLS
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
Add MPLS kernel modules
|
Add MPLS kernel modules
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^
|
"""""""""""""""""""""""
|
||||||
|
|
||||||
Add the following lines to ``/etc/modules-load.d/modules.conf``:
|
.. warning::
|
||||||
|
|
||||||
|
MPLS is not supported on Ubuntu 16.04 with the default kernel. MPLS requires
|
||||||
|
kernel 4.5 or higher. LDPD can be built, but may have limited use without
|
||||||
|
MPLS. For an updated Ubuntu Kernel, see
|
||||||
|
http://kernel.ubuntu.com/~kernel-ppa/mainline/
|
||||||
|
|
||||||
|
Ubuntu 18.04 ships with kernel 4.15. MPLS modules are present by default. To
|
||||||
|
enable, add the following lines to :file:`/etc/modules-load.d/modules.conf`:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
# Load MPLS Kernel Modules
|
# Load MPLS Kernel Modules
|
||||||
mpls-router
|
mpls_router
|
||||||
mpls-iptunnel
|
mpls_iptunnel
|
||||||
|
|
||||||
**Reboot** or use ``sysctl -p`` to apply the same config to the running
|
|
||||||
system
|
|
||||||
|
|
||||||
Install the systemd service (if rebooted from last step, change directory back to frr directory)
|
And load the kernel modules on the running system:
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
sudo modprobe mpls-router mpls-iptunnel
|
||||||
|
|
||||||
|
Enable MPLS Forwarding
|
||||||
|
""""""""""""""""""""""
|
||||||
|
|
||||||
|
Edit :file:`/etc/sysctl.conf` and the following lines. Make sure to add a line
|
||||||
|
equal to :file:`net.mpls.conf.eth0.input` for each interface used with MPLS.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
sudo install -m 644 tools/frr.service /etc/systemd/system/frr.service
|
# Enable MPLS Label processing on all interfaces
|
||||||
sudo install -m 644 tools/etc/frr/daemons /etc/frr/daemons
|
net.mpls.conf.eth0.input=1
|
||||||
sudo install -m 644 tools/etc/frr/frr.conf /etc/frr/frr.conf
|
net.mpls.conf.eth1.input=1
|
||||||
sudo install -m 644 -o frr -g frr tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf
|
net.mpls.conf.eth2.input=1
|
||||||
|
net.mpls.platform_labels=100000
|
||||||
|
|
||||||
|
Install service files
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
sudo install -m 644 tools/frr.service /etc/systemd/system/frr.service
|
||||||
|
sudo systemctl enable frr
|
||||||
|
|
||||||
Enable daemons
|
Enable daemons
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
| Edit ``/etc/frr/daemons`` and change the value from "no" to "yes" for
|
Open :file:`/etc/frr/daemons` with your text editor of choice. Look for the
|
||||||
those daemons you want to start by systemd.
|
section with ``watchfrr_enable=...`` and ``zebra=...`` etc. Enable the daemons
|
||||||
| For example.
|
as required by changing the value to ``yes``.
|
||||||
|
|
||||||
::
|
Start FRR
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
zebra=yes
|
.. code-block:: console
|
||||||
bgpd=yes
|
|
||||||
ospfd=yes
|
|
||||||
ospf6d=yes
|
|
||||||
ripd=yes
|
|
||||||
ripngd=yes
|
|
||||||
isisd=yes
|
|
||||||
|
|
||||||
Enable the systemd service
|
systemctl start frr
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
- systemctl enable frr
|
|
||||||
|
|
||||||
Start the systemd service
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
- systemctl start frr
|
|
||||||
- use ``systemctl status frr`` to check its status.
|
|
||||||
|
Loading…
Reference in New Issue
Block a user