Export shows new filters after "configure soft" before any update
Hiho, I noticed that `birdc show route export <proto>` after a `configure soft` shows the state with the new export filter, even if no update ocurred. The PCAP also shows, as long as no external update comes in, no updates are send out on the wire. Using export tables makes it possible to see the "real" state. For example, until a new external update or a `reload out` it shows the "old filter" state. For import filters it's different. It shows the "old" state until an external update comes in or `reload in` is used. With or without import tables or `keep filtered on`. Since the help states: configure soft ["<file>"] [timeout [<sec>]] Reload configuration and ignore changes in filters it should be like for the import case and show the "old" state until an update comes in or `reload out` is used. Finally to my question: Is this behaviour intentional? Best would be to even make it possible to ignore the new filters until manual reload, but thats probably a bigger change ;) For testing I used 2 exabgp clients and BIRD as intermediate. Configs are attached below. The large community had been just increased to trigger changes. Thanks, Inrin ================================================================= BIRD config ----------------------------------------------------------------- debug protocols all; debug channels all; log syslog all; protocol device { } protocol direct { disabled; ipv4; ipv6; } protocol kernel { disabled; ipv4; } protocol kernel { disabled; ipv6; } template bgp clients { local as 64500; ipv4 { #import table on; #export table on; #import keep filtered on; import none; export none; }; ipv6 { import none; export none; }; } protocol bgp sender4 from clients { neighbor 198.51.100.3 as 64503; ipv4 { import filter { accept; }; export none; }; } protocol bgp receiver4 from clients { neighbor 198.51.100.4 as 64504; ipv4 { import none; export filter { bgp_large_community.add((7,7,7)); accept; }; }; } ----------------------------------------------------------------- Exabgp config sender ----------------------------------------------------------------- template { neighbor rsipv4 { local-address 198.51.100.3; local-as 64503; peer-as 64500; family { ipv4 unicast; } announce { ipv4 { unicast 192.0.2.0/24 next-hop self large-community [64503:4444:0]; } } } } neighbor 198.51.100.251 { inherit rsipv4; } ----------------------------------------------------------------- Exabgp config sender ----------------------------------------------------------------- template { neighbor rsipv4 { local-as 64504; peer-as 64500; local-address 198.51.100.4; family { ipv4 unicast; } } } neighbor 198.51.100.251 { inherit rsipv4; } -----------------------------------------------------------------
On Fri, Mar 22, 2024 at 03:56:12PM +0100, Inrin via Bird-users wrote:
Hiho,
I noticed that `birdc show route export <proto>` after a `configure soft` shows the state with the new export filter, even if no update ocurred. The PCAP also shows, as long as no external update comes in, no updates are send out on the wire.
Using export tables makes it possible to see the "real" state. For example, until a new external update or a `reload out` it shows the "old filter" state.
For import filters it's different. It shows the "old" state until an external update comes in or `reload in` is used. With or without import tables or `keep filtered on`.
Since the help states: configure soft ["<file>"] [timeout [<sec>]] Reload configuration and ignore changes in filters it should be like for the import case and show the "old" state until an update comes in or `reload out` is used.
Finally to my question: Is this behaviour intentional?
Hi It is intentional. Unless explicitly requested by 'show route import table' or 'show route export table', we use data from regular routing tables for this commands. Therefore, it shows routes that either really are in the routing table (i.e. 'old' state when import filters are changed), or compute current export filter for 'show route export'. We have to use the current export filter, as after reconfigure we do not keep the old one.
Best would be to even make it possible to ignore the new filters until manual reload, but thats probably a bigger change ;)
Yes, that is something that would make more sense. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) "To err is human -- to blame it on a computer is even more so."
On Fri, Mar 22, 2024 at 05:00:00PM +0100, Ondrej Zajicek via Bird-users wrote:
On Fri, Mar 22, 2024 at 03:56:12PM +0100, Inrin via Bird-users wrote:
Hiho,
I noticed that `birdc show route export <proto>` after a `configure soft` shows the state with the new export filter, even if no update ocurred. The PCAP also shows, as long as no external update comes in, no updates are send out on the wire.
Using export tables makes it possible to see the "real" state. For example, until a new external update or a `reload out` it shows the "old filter" state.
For import filters it's different. It shows the "old" state until an external update comes in or `reload in` is used. With or without import tables or `keep filtered on`.
Since the help states: configure soft ["<file>"] [timeout [<sec>]] Reload configuration and ignore changes in filters it should be like for the import case and show the "old" state until an update comes in or `reload out` is used.
Finally to my question: Is this behaviour intentional?
Hi Hi
It is intentional. Unless explicitly requested by 'show route import table' or 'show route export table', we use data from regular routing tables for this commands. Therefore, it shows routes that either really are in the routing table (i.e. 'old' state when import filters are changed), or compute current export filter for 'show route export'. We have to use the current export filter, as after reconfigure we do not keep the old one.
Thank you for the explanation and confirmation! -- Inrin
participants (2)
-
Inrin -
Ondrej Zajicek