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-config

Privileged EXEC Mode (advanced commands):

router# show debugging bgp
router# clear ip bgp *
router# write memory

Configuration 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 memory

Basic 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 file

Basic 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: running

FRR 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
save

SNMP 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
save

Verifying 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.14

Available 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
save

When 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
save

Once 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

commit

OSPF + BFD:

set protocols ospf interface eth1 bfd

commit

Verifying 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: 3

BMP Support

BGP Monitoring Protocol (BMP) for exporting BGP information to monitoring systems.

Enabling BMP

# Enable BMP support
set system frr bmp

commit
save

BMP 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
exit

IRDP Support

ICMP Router Discovery Protocol (IRDP) for automatically discovering routers on the network.

Enabling IRDP

# Enable IRDP support
set system frr irdp

commit
save

IRDP (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
save

Working 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 frr

Debugging 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 log

Viewing 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 -f

FRR 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 frr

Configuration 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
save

Verification:

# 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.0

Metrics 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
save

Verifying 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
save

Verifying 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+ seconds

Example 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
save

Monitoring 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.0

Example 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
exit

Example 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
save

The /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 -delete

Verification 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::ipCidrRouteTable

Troubleshooting

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 start

SNMP 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 frr

File 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 descriptors

Solution:

# 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 bfd

Solution:

# 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
save

vtysh 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 vyos

The 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 commit and save in VyOS
  • Do not edit /run/frr/frr.conf directly
# 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 reboot

Best 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 zebra

Integrate 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 4096

4. 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 bfd

BFD 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).txt

Automate 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 resources

8. 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: High

Prometheus + 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 transitions

Grafana 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
save

Conclusion

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.

Reviewed by OpenNix LLC · Last updated on