Hello,

I'm curious to understand how "Automatic channel reloads based on RPKI changes" 
works, as I've noticed that after I enabled RPKI reload, the daemon is 
constantly reloading the ingress policies/filters. I have set it up in the 
laboratory and observed that the ingress policies/filters are constantly 
re-processed even if the following:
- We don't have RPKI RTR sessions flapping, being renegotiated, and/or changing 
state.
- We don't have a refresh requested from/to the clients/neighbours BGP sessions.
- We don't have BGP updates coming or going from/to BGP clients/neighbours at 
the moment that I see the ingress policy/filter being re-processed in bird2.
- We don't have RPKI ROA update/changes for the specific prefix during this 
meantime.

>From Bird doc:
"BIRD offers crude automatic re-validating of affected routes after RPKI 
update, see option rpki reload.
...
In contrast to to other filter operators, this status for the same route may 
change as the content of ROA tables changes. When this option is active, BIRD 
activates automatic reload of affected channels whenever ROA tables are updated 
(after a short settle time)."

I sincerely expected that the automatic reload would be triggered after an 
event (RPKI RTR session flapping/changing state) or if the specific ROA changes 
(not any ROA changes).
For small deployments, the extra load wouldn't be an issue, but I have 
deployments with 3k active clients/neighbours, and the extra load concerns me 
to use this function in production.

The lab env is using as minimal configuration as possible, doing RPKI 
validation (one RTR session with routinator), and 2 clients/neighbours. I just 
added a "print" to ingress protocol filter to see each time that the daemon 
process it:
Oct 26 07:21:19 bird_lab-01 bird: Reconfigured                                  
                                                                                
                   
Oct 26 07:21:43 bird_lab-01 bird: Started                                       
                                                                                
                   
Oct 26 07:21:48 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                                                                                
                                
Oct 26 07:21:48 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                                                                                
                             
Oct 26 07:26:43 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 07:26:43 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 07:47:21 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 07:47:21 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 08:07:52 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 08:07:52 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 08:20:39 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 08:20:39 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 08:43:35 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 08:43:35 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 09:04:07 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 09:04:07 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 09:26:56 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 09:26:56 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 09:47:28 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 09:47:28 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 10:08:00 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)                                                                          
                       
Oct 26 10:08:00 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)                                                                          
                       
Oct 26 10:28:36 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)
Oct 26 10:28:36 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)
Oct 26 10:51:29 bird_lab-01 bird: INGRESS FILTER => 192.168.0.0/24 => (path 
65002)
Oct 26 10:51:29 bird_lab-01 bird: INGRESS FILTER => 192.168.1.0/24 => (path 
65003)
...

bird> show proto
Name       Proto      Table      State  Since         Info
device1    Device     ---        up     2021-10-26 07:21:43  
kernel1    Kernel     master4    up     2021-10-26 07:21:43  
rpki1      RPKI       ---        up     2021-10-26 07:21:43  Established
TEST       BGP        ---        up     2021-10-26 07:21:47  Established   
TEST2      BGP        ---        up     2021-10-26 07:21:47  Established 


Configuration snippet(not production configuration):
...
filter BGP_IN
{
  RPKI_IPV4(65002);
  print "INGRESS FILTER => ", net, " => ", bgp_path;
  accept;
}

protocol bgp TEST from PEERS {
  neighbor 192.168.242.49 as 65002;
  ipv4 {
    import keep filtered on;
    import table yes;
    import filter BGP_IN;
    export all;
    next hop keep;
  };
}
...

When/if I disable the automatic RPKI reload(comment out import table yes), this 
behaviour(constantly re-processing ingress filters) is gone. 

If possible, could you please help me to understand if this is the expected 
behaviour for the automatic RPKI reload?

Thanks in advance!


Best regards,

Tiago Felipe Gonçalves
PGP Fingerprint - A2:82:BD:48:EE:8D:C4:99:C2:4E:81:D4:C4:7B:1C:2E:C7:F3:04:C9

Reply via email to