Hello K.

Thanks for checking in this issue.
But, I can't understand.
If it was because of the iptables, it would have been a problem for BGP as well.
And I'm not using iptables rules, So Any packets weren't dropped.

* iptables status
============================================================
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
============================================================

* Port status
============================================================ 
# netstat -lnp | grep bird
tcp        0      0 0.0.0.0:179             0.0.0.0:*               LISTEN      44890/bird
udp        0      0 0.0.0.0:3784            0.0.0.0:*                           44890/bird
udp        0      0 0.0.0.0:4784            0.0.0.0:*                           44890/bird
unix  2      [ ACC ]     STREAM     LISTENING     320049   44890/bird           /run/bird/bird.ctl
unix  2      [ ACC ]     STREAM     LISTENING     398938   44893/bird6          /run/bird/bird6.ctl
============================================================  

* BIRD Status
============================================================ 
# birdc show bfd sessions
BIRD 1.6.8 ready.
bfd1:
IP address                Interface  State      Since       Interval  Timeout
10.11.251.4               ---        Init       09:37:57      2.000    6.000
10.11.250.4               ---        Init       09:37:56      2.000    6.000

# birdc show protocols
BIRD 1.6.8 ready.
name     proto    table    state  since       info
kernel1  Kernel   master   up     09:37:52
direct1  Direct   master   up     09:37:52
device1  Device   master   up     09:37:52
static1  Static   master   up     09:37:52
bfd1     BFD      master   up     09:37:52
as1      BGP      master   up     09:37:56    Established
as2      BGP      master   up     09:37:57    Established
============================================================  

Is it related to the increase in this value?
============================================================
# netstat -s
...
Udp:
    52759 packets received
    0 packets to unknown port received
    0 packet receive errors
    34365164 packets sent
    0 receive buffer errors
    0 send buffer errors
    IgnoredMulti: 3399
...
============================================================

Please check it.

Regards.

2020년 7월 16일 (목) 오후 8:05, Kees Meijs | Nefos <kees@nefos.nl>님이 작성:
Hi Seunghwan,

It might be your problem isn't BIRD but packet filter related.

Please check the BFD packets are allowed in iptables c.q. netfilter using the correct ports and/or addresses.

A possible reason why it starts working after a manual protocol restart is a ESTABLISHED, RELATED rule.

References:

K.

On 16-07-2020 11:00, seunghwan hwang wrote:
Hello.
BFD is Not working normally.
My configuration is shown below.

OS: Ubuntu 18.04
Kernel: 4.15.0-54-generic
BIRD ver: 1.6.8
==================================
protocol bfd {
        multihop {
            min rx interval 300 ms;
            min tx interval 300 ms;
            multiplier 3;
        };
}

protocol bgp as1 {
        import all;
        export all;

        local ~ as ~;
        neighbor ~  as ~;  
        enable route refresh off;
        hold time 90;
        bfd on;
}

protocol bgp as2 {
        import all;
        export all;

        local ~ as ~;
        neighbor ~  as ~;  
        enable route refresh off;
        hold time 90;
        bfd on;  
}
==================================  

After system reboot(# shutdown -r now), BGP neighbor is established, But BFD sessions are stuck in 'INIT' status. And BIRD does not send BFD packets.
BFD sessions have recovered after restart protocol bfd1(# birdc restart bfd1).

Is it a normal situation?
I think BFD has to start the mechanism after BGP neighbor is UP.
Is there any missing part of my configurations?
Please check it.

Regards