FRR - FRRouting Configuration
FRRouting (FRR) is a modular, open-source suite of routing daemons that provides the implementation of the core routing protocols in VyOS.
Overview
VyOS uses FRRouting as the control plane for dynamic routing. FRR is a fork of Quagga and supports modern routing protocols with active development and community support.
What is FRR
FRRouting (FRR):
- An IP routing protocol suite for Linux and Unix platforms
- Includes daemons for BGP, OSPF, RIP, IS-IS, PIM, LDP, BFD, and other protocols
- Modular architecture with an independent daemon for each protocol
- A vtysh CLI interface similar to Cisco/Juniper
- Used in the production environments of large ISPs and data centers
FRR Architecture
FRR consists of several independent daemons:
Core daemons:
- zebra - the FRR core; manages the routing table and interacts with the kernel
- bgpd - the Border Gateway Protocol daemon
- ospfd - the OSPF daemon for IPv4
- ospf6d - the OSPF daemon for IPv6
- ripd - the RIP daemon for IPv4
- ripngd - the RIPng daemon for IPv6
- isisd - the IS-IS daemon
- pimd - the PIM daemon (Protocol Independent Multicast)
- ldpd - the Label Distribution Protocol daemon for MPLS
- bfdd - the Bidirectional Forwarding Detection daemon
- staticd - the static routes daemon
- fabricd - the OpenFabric daemon
Why configure FRR
Configuring FRR at the system level lets you:
- Integrate SNMP monitoring for routing daemons
- Optimize performance (file descriptors for BGP)
- Enable additional features (BMP, IRDP)
- Tune daemon parameters
- Get direct access to vtysh for debugging
- Import/export FRR configurations
vtysh - CLI Shell
vtysh is the integrated shell for managing FRR daemons through a single CLI interface.
vtysh basics
Characteristics:
- Cisco-like CLI interface
- A single management point for all FRR daemons
- Modes: User EXEC, Privileged EXEC, Configuration
- Tab completion and context-sensitive help
- Automatic synchronization with the VyOS configuration
Accessing vtysh
# Enter the vtysh shell
vtysh
# Run a command directly
vtysh -c "show ip bgp summary"
# Multiple commands
vtysh -c "configure terminal" -c "router bgp 65001" -c "no synchronization"vtysh modes
User EXEC Mode (viewing information):
vyos@router:~$ vtysh
router# show ip route
router# show ip bgp summary
router# show running-configPrivileged EXEC Mode (advanced commands):
router# show debugging bgp
router# clear ip bgp *
router# write memoryConfiguration Mode (changing the configuration):
router# configure terminal
router(config)# router bgp 65001
router(config-router)# neighbor 192.168.1.1 remote-as 65002
router(config-router)# exit
router(config)# exit
router# write memoryBasic vtysh commands
# System information
show version
show daemons
# Routing table
show ip route
show ipv6 route
# BGP
show ip bgp summary
show ip bgp neighbors
show ip bgp
# OSPF
show ip ospf neighbor
show ip ospf database
show ip ospf route
# Interfaces
show interface
show interface eth0
# Running configuration
show running-config
# Saving the configuration
write memory
write fileBasic FRR configuration
Viewing active daemons
# Show the running FRR daemons
show system frr daemons
# From vtysh
vtysh -c "show daemons"Output:
zebra: running
bgpd: running
ospfd: running
bfdd: running
staticd: runningFRR system parameters
VyOS lets you configure global FRR parameters:
# Basic configuration (usually not required)
# Daemons are managed automatically through the VyOS CLI
# Commit and save
commit
saveSNMP integration with FRR
FRR supports SNMP for monitoring the state of routing protocols through standard MIBs.
Enabling SNMP for FRR daemons
# SNMP for BGP
set system frr snmp bgpd
# SNMP for OSPF
set system frr snmp ospfd
# SNMP for OSPF IPv6
set system frr snmp ospf6d
# SNMP for RIP
set system frr snmp ripd
# SNMP for ISIS
set system frr snmp isisd
# SNMP for LDP
set system frr snmp ldpd
# SNMP for Zebra (the core)
set system frr snmp zebra
commit
saveVerifying the SNMP integration
# Show the FRR SNMP configuration
show configuration system frr snmp
# Verify with snmpwalk (from another machine)
snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.15
# 1.3.6.1.2.1.15 - BGP4-MIB
# OSPF MIB
snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.14Available MIBs for FRR
BGP4-MIB (1.3.6.1.2.1.15):
- bgpPeerTable - information about BGP peers
- bgpVersion - the BGP version
- bgpLocalAs - the local AS
- bgpPeerState - the state of neighbors
OSPF-MIB (1.3.6.1.2.1.14):
- ospfGeneralGroup - general OSPF information
- ospfAreaTable - the table of areas
- ospfIfTable - OSPF interfaces
- ospfNbrTable - OSPF neighbors
IP-FORWARD-MIB (1.3.6.1.2.1.4.24):
- ipCidrRouteTable - routing table entries
File Descriptors Configuration
For BGP configurations with a large number of peers, you need to raise the limit on open file descriptors.
Configuring File Descriptors
# Set the maximum number of file descriptors
set system frr descriptors 4096
commit
saveWhen to use:
- A BGP router with 500+ peers
- A route reflector with many clients
- Large-scale BGP deployments
- “Too many open files” errors in the logs
Checking the current limits
# Check the current limits for FRR processes
ps aux | grep bgpd
cat /proc/$(pgrep bgpd)/limits | grep "open files"
# Or from vtysh
vtysh -c "show thread cpu"Default: 1024 (may be insufficient for large BGP deployments)
Recommended values:
- Small deployments (< 50 peers): 1024 (default)
- Medium deployments (50-500 peers): 2048-4096
- Large deployments (500+ peers): 4096-8192
BFD Support
Bidirectional Forwarding Detection (BFD) provides fast detection of link failures between routers.
Enabling BFD
# Enable BFD support in FRR
set system frr bfdd
commit
saveOnce enabled, the bfdd daemon starts automatically and becomes available for use with routing protocols (BGP, OSPF, IS-IS).
Using BFD with protocols
BGP + BFD:
set protocols bgp system-as 65001
set protocols bgp neighbor 192.168.1.1 remote-as 65002
set protocols bgp neighbor 192.168.1.1 bfd
commitOSPF + BFD:
set protocols ospf interface eth1 bfd
commitVerifying BFD
# BFD session status
show bfd peers
# Detailed information
vtysh -c "show bfd peers"
# BFD statistics
vtysh -c "show bfd peers counters"Output:
BFD Peers:
peer 192.168.1.1
ID: 1
Remote ID: 2
Status: up
Uptime: 1 day 5 hours
Diagnostics: ok
Remote diagnostics: ok
Local timers:
Transmit interval: 300 ms
Receive interval: 300 ms
Multiplier: 3BMP Support
BGP Monitoring Protocol (BMP) for exporting BGP information to monitoring systems.
Enabling BMP
# Enable BMP support
set system frr bmp
commit
saveBMP lets you export:
- The BGP RIB (Routing Information Base)
- BGP updates in real time
- Peer up/down events
- Route mirroring for analysis
Configuring BMP (via vtysh)
vtysh
configure terminal
router bgp 65001
bmp targets bmp-server
bmp connect 192.168.1.100 port 11019 min-retry 1000 max-retry 10000
bmp monitor ipv4 unicast post-policy
bmp monitor ipv4 unicast pre-policy
exit
exit
write memory
exitIRDP Support
ICMP Router Discovery Protocol (IRDP) for automatically discovering routers on the network.
Enabling IRDP
# Enable IRDP support
set system frr irdp
commit
saveIRDP (RFC 1256) lets hosts automatically discover routers in a segment without needing a static default-gateway configuration.
Configuring IRDP on an interface
# Enable IRDP on interface eth0
set interfaces ethernet eth0 ip router-advertisement send-advertisements true
set interfaces ethernet eth0 ip router-advertisement max-interval 600
set interfaces ethernet eth0 ip router-advertisement min-interval 200
commit
saveWorking with the FRR configuration directly
Viewing the FRR configuration
# Show the FRR running config
vtysh -c "show running-config"
# The configuration of a specific protocol
vtysh -c "show running-config bgpd"
vtysh -c "show running-config ospfd"
# The saved configuration
vtysh -c "show configuration"FRR configuration files
FRR stores its configurations in:
/run/frr/frr.conf- the main configuration (managed by VyOS)/run/frr/daemons- the list of active daemons
Warning: Editing these files directly is not recommended; use the VyOS CLI.
Exporting the FRR configuration
# Export the entire FRR configuration
vtysh -c "show running-config" > /tmp/frr-config.txt
# Export the BGP configuration
vtysh -c "show running-config bgpd" > /tmp/bgp-config.txt
# Copy to a remote server
scp /tmp/frr-config.txt user@192.168.1.100:/backups/Importing the FRR configuration
Warning: Importing a configuration directly into FRR can break the integration with VyOS. Use it only for testing or migration.
# Import the configuration into vtysh
vtysh
configure terminal
# Paste the configuration commands
exit
write memory
exit
# Or from a file (not recommended)
sudo cp frr-config.txt /run/frr/frr.conf
sudo systemctl restart frrDebugging and diagnosing FRR
FRR debug mode
# Enable debug for BGP
vtysh
configure terminal
debug bgp updates
debug bgp neighbor-events
exit
exit
# View the debug output
show debugging bgp
monitor logViewing FRR logs
# FRR logs in syslog
show log | match frr
show log | match bgp
show log | match ospf
# Direct access to the logs
tail -f /var/log/frr/frr.log
# The logs of a specific daemon
journalctl -u frr -fFRR statistics
# Daemon statistics
vtysh -c "show thread cpu"
# Memory usage
vtysh -c "show memory"
# The FRR version
vtysh -c "show version"Restarting FRR daemons
# Restart all of FRR (be careful!)
sudo systemctl restart frr
# Restart a specific daemon (from vtysh)
vtysh
clear ip bgp * # Soft reset BGP
exit
# Hard restart of a daemon (be careful!)
sudo systemctl restart frrConfiguration examples
Example 1: SNMP monitoring for BGP (Yandex Cloud)
Scenario: A Yandex Cloud VM running VyOS as a BGP router. SNMP monitoring is needed via Yandex Monitoring or an external NMS.
# BGP configuration
set protocols bgp system-as 65001
set protocols bgp parameters router-id 10.0.0.1
# ISP peer
set protocols bgp neighbor 84.201.135.210 remote-as 65000
set protocols bgp neighbor 84.201.135.210 address-family ipv4-unicast
# Announce network
set protocols bgp address-family ipv4-unicast network 10.128.0.0/24
# Enable SNMP for FRR BGP
set system frr snmp bgpd
set system frr snmp zebra
# SNMP configuration
set service snmp community monitoring authorization ro
set service snmp community monitoring network 10.128.0.0/24
set service snmp listen-address 10.128.0.5 port 161
set service snmp location 'Yandex Cloud - ru-central1-a'
set service snmp contact 'netadmin@example.com'
commit
saveVerification:
# On VyOS
show ip bgp summary
show configuration system frr
# From the monitoring server in Yandex Cloud
snmpwalk -v2c -c monitoring 10.128.0.5 BGP4-MIB::bgpPeerTable
snmpget -v2c -c monitoring 10.128.0.5 BGP4-MIB::bgpLocalAs.0Metrics to monitor:
- BGP peer state (Up/Down)
- Received prefixes count
- BGP message counters
- Last error codes
Example 2: Configuring File Descriptors for a large Route Reflector
Scenario: A VyOS Route Reflector with 500+ BGP clients in an enterprise network. The limits must be raised for stable operation.
# Raise the file descriptors
set system frr descriptors 8192
# BGP Route Reflector configuration
set protocols bgp system-as 65001
set protocols bgp parameters router-id 10.255.255.1
set protocols bgp parameters cluster-id 10.255.255.1
# Peer group for clients
set protocols bgp peer-group RR-CLIENTS remote-as 65001
set protocols bgp peer-group RR-CLIENTS address-family ipv4-unicast route-reflector-client
# Bulk addition of clients via a script is not shown
# Example clients
set protocols bgp neighbor 10.0.1.1 peer-group RR-CLIENTS
set protocols bgp neighbor 10.0.1.2 peer-group RR-CLIENTS
# ... 498 more clients
# BFD for fast failover
set system frr bfdd
set protocols bgp peer-group RR-CLIENTS bfd
commit
saveVerifying the limits:
# Verify that the limits are applied
ps aux | grep bgpd
cat /proc/$(pgrep bgpd)/limits | grep "open files"
# Should show: Max open files 8192
# BGP statistics
vtysh -c "show ip bgp summary"
vtysh -c "show thread cpu"Example 3: BFD integration for fast failover
Scenario: A dual-homed connection to two ISPs with a requirement for fast switchover on failure.
# Enable BFD
set system frr bfdd
# BGP configuration
set protocols bgp system-as 65001
set protocols bgp parameters router-id 10.0.0.1
# ISP1 with BFD
set protocols bgp neighbor 203.0.113.1 remote-as 65000
set protocols bgp neighbor 203.0.113.1 description 'ISP1 Primary'
set protocols bgp neighbor 203.0.113.1 address-family ipv4-unicast
set protocols bgp neighbor 203.0.113.1 bfd
# ISP2 with BFD
set protocols bgp neighbor 198.51.100.1 remote-as 65002
set protocols bgp neighbor 198.51.100.1 description 'ISP2 Backup'
set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast
set protocols bgp neighbor 198.51.100.1 bfd
# BFD profile for fast detection (300ms)
set protocols bfd profile bgp-peers interval transmit 300
set protocols bfd profile bgp-peers interval receive 300
set protocols bfd profile bgp-peers interval multiplier 3
# Apply the profile
set protocols bgp neighbor 203.0.113.1 bfd profile bgp-peers
set protocols bgp neighbor 198.51.100.1 bfd profile bgp-peers
commit
saveVerifying BFD:
# BFD peer status
show bfd peers
# Detailed information
vtysh -c "show bfd peers detail"
# On a link failure, BGP should switch over in ~1 second instead of 90+ secondsExample 4: Custom FRR daemon tuning (VK Cloud)
Scenario: A VK Cloud instance running VyOS for complex routing. Fine-grained OSPF tuning and SNMP monitoring are required.
# OSPF configuration
set protocols ospf parameters router-id 10.0.0.1
set protocols ospf area 0.0.0.0 network 192.168.1.0/24
set protocols ospf area 0.0.0.0 network 192.168.2.0/24
# SNMP for OSPF monitoring
set system frr snmp ospfd
set system frr snmp zebra
# SNMP configuration
set service snmp community vkcloud authorization ro
set service snmp community vkcloud network 192.168.1.0/24
set service snmp listen-address 192.168.1.1 port 161
# BFD for OSPF neighbors
set system frr bfdd
set protocols ospf interface eth1 bfd
set protocols ospf interface eth2 bfd
# File descriptors (if there are many OSPF neighbors)
set system frr descriptors 2048
commit
saveMonitoring via SNMP:
# From the NMS server
snmpwalk -v2c -c vkcloud 192.168.1.1 OSPF-MIB::ospfNbrTable
snmpwalk -v2c -c vkcloud 192.168.1.1 OSPF-MIB::ospfIfTable
# Check the neighbor state
snmpget -v2c -c vkcloud 192.168.1.1 OSPF-MIB::ospfNbrState.192.168.1.2.0Example 5: Debugging a BGP session through vtysh
# Enter vtysh
vtysh
# Enable debug
configure terminal
debug bgp neighbor-events
debug bgp updates in
debug bgp updates out
debug bgp keepalives
exit
# View the debug output in real time
terminal monitor
# Or view the logs
exit
monitor log
# Disable debug after diagnostics
vtysh
configure terminal
no debug bgp neighbor-events
no debug bgp updates
no debug bgp keepalives
exit
exitExample 6: Exporting and backing up the FRR configuration
# Create a directory for backups
mkdir -p /config/backups/frr
# Export the entire FRR configuration
vtysh -c "show running-config" > /config/backups/frr/frr-config-$(date +%Y%m%d-%H%M%S).txt
# Export per protocol
vtysh -c "show running-config bgpd" > /config/backups/frr/bgp-config-$(date +%Y%m%d-%H%M%S).txt
vtysh -c "show running-config ospfd" > /config/backups/frr/ospf-config-$(date +%Y%m%d-%H%M%S).txt
# Copy to a remote server
scp /config/backups/frr/frr-config-*.txt backup@192.168.1.100:/backups/vyos/
# Automation via cron
set system task-scheduler task backup-frr executable path /config/scripts/backup-frr.sh
set system task-scheduler task backup-frr interval 1d
commit
saveThe /config/scripts/backup-frr.sh script:
#!/bin/bash
DATE=$(date +%Y%m%d-%H%M%S)
BACKUP_DIR="/config/backups/frr"
mkdir -p $BACKUP_DIR
vtysh -c "show running-config" > $BACKUP_DIR/frr-config-$DATE.txt
# Delete old backups (older than 30 days)
find $BACKUP_DIR -name "frr-config-*.txt" -mtime +30 -deleteVerification commands
System commands
# Show the running FRR daemons
show system frr daemons
# Show the FRR configuration in VyOS
show configuration system frr
# The FRR version
vtysh -c "show version"vtysh commands
# General information
vtysh -c "show version"
vtysh -c "show daemons"
vtysh -c "show memory"
# Routing table
vtysh -c "show ip route"
vtysh -c "show ipv6 route"
# BGP
vtysh -c "show ip bgp summary"
vtysh -c "show ip bgp neighbors"
vtysh -c "show ip bgp"
# OSPF
vtysh -c "show ip ospf neighbor"
vtysh -c "show ip ospf interface"
vtysh -c "show ip ospf database"
# BFD
vtysh -c "show bfd peers"
vtysh -c "show bfd peers counters"
# Interfaces
vtysh -c "show interface"
vtysh -c "show interface eth0"
# Running configuration
vtysh -c "show running-config"SNMP checks (from a remote server)
# BGP
snmpwalk -v2c -c public 192.168.1.1 BGP4-MIB::bgpPeerTable
snmpget -v2c -c public 192.168.1.1 BGP4-MIB::bgpLocalAs.0
snmpget -v2c -c public 192.168.1.1 BGP4-MIB::bgpPeerState.192.168.1.2
# OSPF
snmpwalk -v2c -c public 192.168.1.1 OSPF-MIB::ospfNbrTable
snmpget -v2c -c public 192.168.1.1 OSPF-MIB::ospfRouterId.0
# IP Forwarding
snmpwalk -v2c -c public 192.168.1.1 IP-FORWARD-MIB::ipCidrRouteTableTroubleshooting
An FRR daemon does not start
Problem: An FRR daemon (bgpd, ospfd) does not start after configuration.
Diagnostics:
# Check the FRR status
systemctl status frr
# Check which daemons should be running
show system frr daemons
# FRR logs
show log | match frr
journalctl -u frr -n 50
# Check the FRR configuration
vtysh -c "show running-config"Solution:
# Restart FRR
sudo systemctl restart frr
# Check after the restart
vtysh -c "show daemons"
# If the problem persists, check the configuration syntax
sudo /usr/lib/frr/frrinit.sh startSNMP does not return data from FRR
Problem: An SNMP walk does not show BGP/OSPF data.
Diagnostics:
# Check that SNMP is enabled for the daemon
show configuration system frr snmp
# Check that the SNMP service is running
show service snmp
# Test locally
snmpwalk -v2c -c public localhost BGP4-MIB::bgpPeerTable
# Check that the MIBs are loaded
ls -la /usr/share/snmp/mibs/Solution:
# Enable SNMP for the required daemon
set system frr snmp bgpd
set system frr snmp zebra
# Make sure the SNMP service is configured
set service snmp community public authorization ro
set service snmp listen-address 0.0.0.0 port 161
commit
save
# Restart SNMP and FRR
sudo systemctl restart snmpd
sudo systemctl restart frrFile descriptors error in BGP
Problem: The logs show “Too many open files” for bgpd.
Diagnostics:
# Check the current limit
cat /proc/$(pgrep bgpd)/limits | grep "open files"
# Number of BGP peers
vtysh -c "show ip bgp summary" | grep -c "^[0-9]"
# Check the configuration
show configuration system frr descriptorsSolution:
# Raise the limit
set system frr descriptors 4096
commit
save
# Restart BGP (careful, this drops the sessions!)
sudo systemctl restart frr
# Verify that it is applied
cat /proc/$(pgrep bgpd)/limits | grep "open files"BFD sessions do not come up
Problem: BFD peers show the “Down” state.
Diagnostics:
# Check that the BFD daemon is running
vtysh -c "show daemons" | grep bfdd
# BFD peer status
show bfd peers
# Detailed information
vtysh -c "show bfd peers detail"
# Check that BFD is enabled in the protocol
show configuration protocols bgp | match bfdSolution:
# Make sure bfdd is enabled
set system frr bfdd
# Check that BFD is configured on the neighbor
set protocols bgp neighbor 192.168.1.1 bfd
# Check network connectivity
ping 192.168.1.1 count 5
# Check that the firewall does not block BFD (UDP 3784)
set firewall ipv4 input filter rule 200 action accept
set firewall ipv4 input filter rule 200 destination port 3784
set firewall ipv4 input filter rule 200 protocol udp
commit
savevtysh commands do not work
Problem: vtysh returns errors or fails to connect to the daemons.
Diagnostics:
# Check that vtysh is available
which vtysh
# Attempt to connect
vtysh
# If there is an error, check the FRR daemons
systemctl status frr
# Check the socket files
ls -la /run/frr/Solution:
# Restart FRR
sudo systemctl restart frr
# Check permissions
sudo chown frr:frrvty /run/frr/*
# Make sure the user is in the frrvty group
groups
# If not, add them
sudo usermod -a -G frrvty vyosThe FRR configuration is not preserved after reboot
Problem: After a VyOS reboot, the FRR configuration is reset.
Cause: The configuration made in vtysh is not synchronized with VyOS.
Solution:
- Always use the VyOS CLI to configure routing protocols
- After making changes through vtysh, run
commitandsavein VyOS - Do not edit
/run/frr/frr.confdirectly
# The correct way
configure
set protocols bgp system-as 65001
commit
save
# NOT recommended
vtysh
configure terminal
router bgp 65001
# This configuration will be lost after rebootBest practices
1. Configure through the VyOS CLI
Always use the VyOS CLI (configure, set, commit) instead of editing the FRR configuration directly. VyOS automatically synchronizes the configuration with FRR.
2. SNMP monitoring
Enable SNMP for critical routing daemons:
set system frr snmp bgpd
set system frr snmp ospfd
set system frr snmp zebraIntegrate with an NMS to monitor:
- BGP peer states
- OSPF neighbor adjacencies
- Routing table changes
- Protocol errors
3. File Descriptors for BGP
For BGP deployments with a large number of peers:
- < 50 peers: the default (1024) is enough
- 50-500 peers: 2048-4096
- 500+ peers: 4096-8192
set system frr descriptors 40964. BFD for fast failover
Use BFD for critical links:
set system frr bfdd
set protocols bgp neighbor X.X.X.X bfd
set protocols ospf interface ethX bfdBFD provides failure detection in seconds instead of minutes.
5. Back up FRR configurations
Export the FRR configuration regularly:
vtysh -c "show running-config" > /config/backups/frr-$(date +%Y%m%d).txtAutomate it with the task scheduler.
6. Debug with caution
Debug mode generates a large volume of logs:
# Enable only for diagnostics
vtysh -c "configure terminal" -c "debug bgp updates"
# Disable when done
vtysh -c "configure terminal" -c "no debug all"7. Performance monitoring
Check regularly:
vtysh -c "show thread cpu" # Daemon CPU usage
vtysh -c "show memory" # Memory usage
show system resources # System resources8. Document changes
Document every change to the FRR configuration:
- The date and time of the change
- The reason for the change
- The parameters that were changed
- The result of the change
9. Test before production
Test FRR changes in a lab environment:
- Check convergence time
- Test failover scenarios
- Check BFD timers
- Monitor resource usage
10. Keep FRR updated
VyOS regularly updates the FRR version. After a VyOS upgrade:
- Review the compatibility notes
- Test in a non-production environment
- Verify that all features work
- Update the documentation
Monitoring integration
Zabbix
Template for FRR/BGP monitoring:
Create items for monitoring:
Name: BGP Peer State - {#PEER_IP}
Type: SNMP agent
Key: bgpPeerState[{#PEER_IP}]
SNMP OID: BGP4-MIB::bgpPeerState.{#PEER_IP}Triggers:
Name: BGP Peer {#PEER_IP} is down
Expression: {VyOS:bgpPeerState[{#PEER_IP}].last()}≠6
Severity: HighPrometheus + SNMP Exporter
snmp.yml configuration:
modules:
vyos_frr:
walk:
- 1.3.6.1.2.1.15 # BGP4-MIB
- 1.3.6.1.2.1.14 # OSPF-MIB
metrics:
- name: bgpPeerState
oid: 1.3.6.1.2.1.15.3.1.2
type: gauge
help: BGP peer connection state
- name: bgpPeerFsmEstablishedTransitions
oid: 1.3.6.1.2.1.15.3.1.15
type: counter
help: BGP FSM established transitionsGrafana Dashboard:
- BGP peer status panel
- Received/Advertised prefixes graph
- OSPF neighbor states
- BFD session status
Logging integration
# Send FRR logs to a remote syslog
set system syslog host 192.168.1.100 facility daemon level info
# Local logs for quick troubleshooting
set system syslog file frr.log facility daemon level info
commit
saveConclusion
FRRouting in VyOS provides enterprise-grade routing functionality with rich configuration and monitoring capabilities. Key capabilities:
Core features:
- Modular architecture with an independent daemon for each protocol
- The vtysh CLI for direct management and debugging
- SNMP integration for monitoring routing protocols
- BFD for fast failure detection
- Performance tuning (file descriptors)
Monitoring integration:
- SNMP MIBs for BGP, OSPF, IS-IS
- Syslog for centralized logging
- Prometheus/Grafana for metrics
- Zabbix/Nagios for alerting
Production use:
- Yandex Cloud: BGP peering with SNMP monitoring
- VK Cloud: OSPF networks with BFD
- Enterprise: A Route Reflector with thousands of peers
- ISP: Multi-protocol routing with performance tuning
A proper FRR configuration provides a stable, scalable, and observable routing infrastructure. Use SNMP monitoring, enable BFD for critical links, tune file descriptors for large-scale BGP, and export configurations regularly for backup.
The VyOS abstraction over FRR simplifies management, but direct access through vtysh remains available for advanced troubleshooting and fine-tuning.