What is FRRouting ?
FRRouting (FRR) is an IP routing protocol suite for Linux which has it's roots in the Quagga / Zebra projects. which includes protocol daemons for BGP, IS-IS, LDP, OSPF, EIGRP PIM, and RIP. I's linux integration makes it usable to connect physical hosts, virtual machines, and containers to the network.
It's Cisco-like command line interface (CLI) with many commands similar to the Cisco IOS commands makes FRR easy to configure and a good candidate for building a lightweight routing lab environment for Cisco CCNP enterprise training.
Getting started with FRRouting ?
The FRRouting project publishes packages for Red Hat, Centos, Debian and Ubuntu on the GitHub releases page. It can also be installed from Github source or deployed using the frrouting/frr Docker container based on Alpine Linux available on Docker Hub.
When using the official frrouting/frr docker image, don't forget to build a custom image including the required network tools (telnet, tcpdump, ...) and exposing all the network ports needed by routing protocols for peering. TCP port 179 has to be exposed by the container and mapped on the Docker host when using bgpd to allow BGP peering outside of the Docker network.
# Sample Dockerfile exposing TCP port 179 FROM frrouting/frr EXPOSE 179
Build the custom Docker image and run it using Docker commands:
docker build -t packettracernetwork/frr . docker run -d --name=frr3 --privileged=1 -p179:179 packettracernetwork/frr:latest
Configuring FRRouting routing protocols daemons
Before starting FRRouting, edit the /etc/frr/daemons file to enable each routing daemon required for the target environment. For example, to enable BGP, set bgpd to yes. The zebra daemon is enabled by default and does not have to be enables in deamons file anymore. Please note that all of the routing protocol daemons are dependent and started by the main zebra deamon.
bgpd=yes ospfd=no ospf6d=no ripd=no ripngd=no isisd=no fabricd=no pimd=no ldpd=no nhrpd=no eigrpd=no babeld=no sharpd=no pbrd=no vrrpd=no ...
All the network configuration is stored in /etc/frr/frr.conf and can be edited using the vtysh command line interface (CLI).
switch# write memory Building Configuration... Integrated configuration saved to /etc/frr/frr.conf [OK] switch# exit