Page MenuHomeVyOS Platform

VRRP with BFD Failure Detection
Closed, ResolvedPublicFEATURE REQUEST

Description

In many vendor products it is possible to use BFD to quickly detect failures and perform a VRRP transition. This should provide a much quicker response time, and therefore less packet loss:
https://tools.ietf.org/id/draft-nitish-vrrp-bfd-p2p-01.html

Can this be considered for a future feature? Here are a few vendors that support it:
https://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k_r4-1/addr_serv/configuration/guide/ipaddr_cg41a9k_chapter10.html#con_1134347
https://www.arista.com/en/um-eos/eos-section-37-2-bfd-configuration#ww1114343
https://support.huawei.com/enterprise/en/doc/EDOC1100102953/c69cbfd6/bfd-for-vrrp

Details

Difficulty level
Unknown (require assessment)
Version
-
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Perfectly compatible
Issue type
Feature (new functionality)

Event Timeline

Availible in keepalived, thus kt could be considered for 1.3

"the VRRP instance will only be able to come up if both VRRP instance are running, which somewhat defeats the purpose of VRRP. " ref https://manpages.debian.org/buster/keepalived/keepalived.conf.5.en.html

Not sure that is a good idea

global_defs {
    dynamic_interfaces
    script_user root
    notify_fifo /run/keepalived_notify_fifo
    notify_fifo_script /usr/libexec/vyos/system/keepalived-fifo.py
}

## MY BFD INSTANCE
bfd_instance bfd-inst-01 {
    neighbor_ip 192.0.2.56
    source_ip 192.0.2.55
    min_tx 100
    min_rx 100
    max_hops 255
}


vrrp_instance GRP {
    
    state BACKUP
    interface eth1
    virtual_router_id 99
    priority 90
    advert_int 1

        preempt_delay 0
    
        unicast_peer { 192.0.2.56 }
    
    
    
    
    virtual_ipaddress {
            192.0.2.1/32
        }
    track_bfd { bfd-inst-01 }
    
    }

With only one instance it fails

root@r5-roll:/home/vyos# systemctl status keepalived
● keepalived.service - Keepalive Daemon (LVS and VRRP)
   Loaded: loaded (/lib/systemd/system/keepalived.service; disabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/keepalived.service.d
           └─override.conf
   Active: active (running) since Mon 2021-01-18 22:44:22 EET; 9s ago
 Main PID: 24401 (keepalived)
    Tasks: 2 (limit: 546)
   Memory: 3.4M
   CGroup: /system.slice/keepalived.service
           ├─24401 /usr/sbin/keepalived --dont-fork --snmp
           └─30436 /usr/sbin/keepalived --dont-fork --snmp

Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30423) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30424) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30425) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30426) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30427) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30428) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30429) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30430) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30433) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30434) died: Respawning
Jan 18 22:44:32 r5-roll Keepalived[24401]: BFD child process(30436) died: Respawning
root@r5-roll:/home/vyos#
trae32566 claimed this task.

Interesting. I agree, I think that defeats the purpose of VRRP if both have to be running. I guess we can go ahead and close this as not feasible at this time.

erkin set Issue type to Feature (new functionality).Aug 29 2021, 1:56 PM
erkin removed a subscriber: Active contributors.