FRR: The Free Range Routing Suite¶
Free Range Routing (FRR) powers BGP implementation in Red Hat OpenStack Platform as a containerized service integrated with OVN.
What is FRR?¶
Free Range Routing (FRR) is an IP routing protocol suite that maintains routing tables on OpenStack nodes. It forked from Quagga to overcome limitations and is officially included in Red Hat Enterprise Linux.
Key FRR components in OpenStack:
BGP daemon (``bgpd``): Implements BGP protocol v4, handling peer capabilities and communicating with the kernel through Zebra. Uses capability negotiation to detect remote peer capabilities.
BFD daemon (``bfdd``): Provides fast failure detection between adjacent forwarding engines.
Zebra daemon: Coordinates routing information from various FRR daemons and updates the kernel routing table.
VTY shell (``vtysh``): Command interface that aggregates all CLI commands from the daemons and presents them in a unified interface.
FRR Features in OpenStack¶
FRR provides several critical features for OpenStack:
Equal-Cost Multi-Path Routing (ECMP): Enables load balancing across multiple paths. Each protocol daemon in FRR uses different methods to manage ECMP policy.
Example configuration:
router bgp 65000 maximum-paths 8
BGP Advertisement Mechanism: Works with OVN BGP agent to advertise IP addresses from VMs and load balancers
Sample configuration template:
router bgp {{ bgp_as }} address-family ipv4 unicast import vrf {{ vrf_name }} exit-address-family address-family ipv6 unicast import vrf {{ vrf_name }} exit-address-family router bgp {{ bgp_as }} vrf {{ vrf_name }} bgp router-id {{ bgp_router_id }} address-family ipv4 unicast redistribute connected exit-address-family
Integration with OpenStack: Uses VRF (
bgp_vrf
) and a dummy interface (bgp-nic
) to redirect traffic between external networks and OVN
Why Red Hat Chose FRR¶
FRR was selected for OpenStack BGP implementation for these reasons:
Clean OVN Integration: Works seamlessly with the OVN BGP agent monitoring the OVN southbound database
Agent-FRR interaction:
# Agent communicates with FRR through VTY shell $ vtysh --vty_socket -c <command_file>
Direct Kernel Integration: Zebra daemon efficiently communicates with the kernel routing table
Enterprise BGP Features: Supports critical functionality: - BGP graceful restart for preserving forwarding state - BFD for sub-second failure detection - IPv4/IPv6 support - VRF for network separation
Graceful restart configuration:
router bgp 65000 bgp graceful-restart bgp graceful-restart notification bgp graceful-restart restart-time 60 bgp graceful-restart preserve-fw-state
RHEL Integration: Included with Red Hat Enterprise Linux, providing consistent support within the Red Hat ecosystem