logo

FRRouting

What is FRRouting (FRR)?

FRRouting (FRR) is a free and open-source internet routing protocol suite for Linux, Solaris, OpenBSD, FreeBSD, and NetBSD platforms. In simpler terms, it's software that allows a standard computer operating system (primarily Linux) to function as a dedicated network router, speaking the same protocols used by expensive hardware routers from vendors like Cisco, Juniper, Arista, etc.

Think of it like this: Instead of buying a dedicated physical router box, you can install FRR on a server (physical or virtual) or even a container, and that machine can then participate in complex network routing.

Key Aspects

  1. Protocol Support: FRR implements a wide range of standard IPv4 and IPv6 routing protocols, including:

    • BGP (Border Gateway Protocol) - The core protocol of the internet.
    • OSPFv2 and OSPFv3 (Open Shortest Path First) - Common interior gateway protocols (IGPs).
    • RIPv1, RIPv2, and RIPng (Routing Information Protocol) - Older, simpler distance-vector protocols.
    • IS-IS (Intermediate System to Intermediate System) - Another widely used IGP, especially in large service provider networks.
    • PIM-SM/MSDP (Protocol Independent Multicast) - For multicast routing.
    • LDP (Label Distribution Protocol) - Part of MPLS signaling.
    • BFD (Bidirectional Forwarding Detection) - For fast failure detection.
    • And others like Babel, PBR, VRRP.
  2. Architecture: FRR uses a modular architecture inherited from its predecessor, Zebra/Quagga. It consists of:

    • A core daemon called zebra which acts as an abstraction layer to the underlying kernel's IP forwarding capabilities. It manages the Forwarding Information Base (FIB), essentially the kernel's routing table.
    • Separate daemons for each routing protocol (e.g., bgpd, ospfd, ospf6d, isisd). These daemons handle the protocol logic, communicate with other routers running the same protocol, and then tell zebra which routes they have learned.
  3. Command Line Interface (CLI): It features a command-line interface, accessed via the vtysh (Very TTY Shell) command, that is intentionally designed to be very similar to Cisco's IOS CLI. This makes it easier for network engineers familiar with traditional routers to configure and manage FRR.

  4. Fork of Quagga: FRR is a fork of the Quagga routing suite, initiated in 2016. The fork was created to foster a more open and faster-paced development community. FRR has since seen significantly more active development and features added compared to Quagga.

Why Use FRR?

  • Cost-Effective: Allows using commodity hardware (servers, VMs) instead of expensive proprietary routers.
  • Flexibility & Customization: Runs on a standard OS, allowing integration with other software, automation tools (Ansible, Salt, Chef, Puppet), and scripting.
  • Scalability: Leverage the scalability of server hardware.
  • Network Disaggregation: A key component in separating network hardware (white-box switches) from the network operating system (NOS).
  • Virtualization & Cloud: Ideal for virtualized environments (NFV - Network Function Virtualization) and cloud networking setups.
  • Specific Roles: Commonly used as BGP route reflectors, edge peering routers, data center leaf/spine routing (using BGP/OSPF), or within SD-WAN solutions.
  • Learning & Testing: An excellent platform for learning routing protocols in a lab environment without needing physical hardware.

Where to find the config file?

/etc/frr/frr.conf

Summary

FRRouting is a powerful, open-source software suite that enables standard Unix/Linux systems to perform sophisticated IP routing using standard protocols, offering a flexible and cost-effective alternative to traditional hardware routers.

Official website: https://frrouting.org/