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:
Quentin Young 2019-03-26 20:50:16 +00:00
parent ae999ff862
commit 650c632224

View File

@ -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.