Free Range Routing (FRR) is a highly modular, open-source IP routing software suite designed for Linux and Unix platforms. It acts as a virtual control plane that transforms a standard operating system or container into an advanced enterprise router.
Here are the key characteristics of FRR:
• Protocol Powerhouse: It natively runs all major industry-standard routing protocols including BGP (including EVPN), OSPF (v2/v3), IS-IS, RIP, PIM (Multicast), and LDP (MPLS).
• Architecture: FRR uses a unique, decoupled architecture where each protocol runs as its own separate background engine (daemon). These engines are managed by a central supervisor daemon called Zebra, which builds the master routing table and interacts with the operating system's kernel data plane.
• Industry Standard Interface: It provides a unified Command Line Interface (CLI) called vtysh, which uses an interactive syntax that closely mirrors commercial systems like Cisco IOS or Arista EOS.
• Massive Adoption: Due to its speed, low resource footprint, and cloud-scale stability, FRR is widely deployed in modern data center fabrics, network simulation labs (like GNS3), and powers the core routing brains inside next-generation network operating systems like SONiC and Cumulus Linux.
Dockerfile:
FROM quay.io/frrouting/frr:10.7.0
# 1. Create the persistent vtysh.conf configuration file
RUN touch /etc/frr/vtysh.conf && echo "service integrated-vtysh-config" > /etc/frr/vtysh.conf
# 2. Rewrite the daemons file with all key routing protocols pre-enabled
RUN echo 'zebra=yes' > /etc/frr/daemons && \
echo 'bgpd=yes' >> /etc/frr/daemons && \
echo 'ospfd=yes' >> /etc/frr/daemons && \
echo 'ospf6d=yes' >> /etc/frr/daemons && \
echo 'isisd=yes' >> /etc/frr/daemons && \
echo 'ripd=yes' >> /etc/frr/daemons && \
echo 'pimd=yes' >> /etc/frr/daemons && \
echo 'ldpd=yes' >> /etc/frr/daemons && \
echo 'staticd=yes' >> /etc/frr/daemons && \
echo 'bfdd=yes' >> /etc/frr/daemons && \
echo 'fabricd=yes' >> /etc/frr/daemons && \
echo 'watchfrr_enable=yes' >> /etc/frr/daemons
Building Dockerfile:
$ docker build -t my-custom-frr:latest .