Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@chriselsen
Last active May 28, 2021 21:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save chriselsen/a0aec32f615da8047fbd04e6afca305b to your computer and use it in GitHub Desktop.
Save chriselsen/a0aec32f615da8047fbd04e6afca305b to your computer and use it in GitHub Desktop.
FFRouting on Ubuntu 18.04
#!/bin/bash
sudo apt-get update && sudo apt-get upgrade -y
# Dependencies
sudo apt-get install -y \
git autoconf automake libtool make libreadline-dev texinfo \
pkg-config libpam0g-dev libjson-c-dev bison flex python3-pytest \
libc-ares-dev python3-dev libsystemd-dev python-ipaddress python3-sphinx \
install-info build-essential libsystemd-dev libsnmp-dev perl libcap-dev \
libpcre3-dev cmake
# Libyang
cd /tmp
git clone https://github.com/CESNET/libyang.git
cd libyang
mkdir build; cd build
cmake -DENABLE_LYD_PRIV=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr \
-D CMAKE_BUILD_TYPE:String="Release" ..
make
sudo make install
# Protobuf
sudo apt-get install -y protobuf-c-compiler libprotobuf-c-dev
# ZeroMQ
sudo apt-get install -y libzmq5 libzmq3-dev
#RTRlib
sudo apt-get install libssh-dev -y
cd /tmp
git clone https://github.com/rtrlib/rtrlib/
cd rtrlib
mkdir build; cd build
cmake -D CMAKE_BUILD_TYPE=Release ..
make
sudo make install
sudo ldconfig
# FRRouting
sudo groupadd -r -g 92 frr
sudo groupadd -r -g 85 frrvty
sudo adduser --system --ingroup frr --home /var/run/frr/ \
--gecos "FRR suite" --shell /sbin/nologin frr
sudo usermod -a -G frrvty frr
cd /tmp
git clone https://github.com/frrouting/frr.git frr
cd frr
./bootstrap.sh
./configure \
--prefix=/usr \
--includedir=\${prefix}/include \
--enable-exampledir=\${prefix}/share/doc/frr/examples \
--bindir=\${prefix}/bin \
--sbindir=\${prefix}/lib/frr \
--libdir=\${prefix}/lib/frr \
--libexecdir=\${prefix}/lib/frr \
--localstatedir=/var/run/frr \
--sysconfdir=/etc/frr \
--with-moduledir=\${prefix}/lib/frr/modules \
--with-libyang-pluginsdir=\${prefix}/lib/frr/libyang_plugins \
--enable-configfile-mask=0640 \
--enable-logfile-mask=0640 \
--enable-snmp=agentx \
--enable-multipath=64 \
--enable-user=frr \
--enable-group=frr \
--enable-vty-group=frrvty \
--enable-systemd=yes \
--enable-rpki=yes \
--with-pkg-git-version \
--with-pkg-extra-version=-chriselsen
make
sudo make install
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
sudo install -m 644 tools/frr.service /etc/systemd/system/frr.service
sudo systemctl enable frr
# Sysctl
sudo sed -i "/net.ipv4.ip_forward=1/ cnet.ipv4.ip_forward=1" /etc/sysctl.conf
sudo sed -i "/net.ipv6.conf.all.forwarding=1/ cnet.ipv6.conf.all.forwarding=1" /etc/sysctl.conf
# Enable BGP
sudo sed -i "/bgpd=no/ cbgpd=yes" /etc/frr/daemons
sudo sed -i "/bgpd_options=\" -A 127.0.0.1\"/ cbgpd_options=\" -A 127.0.0.1 -M rpki\"" /etc/frr/daemons
# Start FRR
sudo systemctl start frr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment