Hello again - a couple of days ago I converted one of my test route-server setups from „dual BIRD-1.6.3“ to „single BIRD-2.0.0“ by simply „merging“ bird6.conf and bird.conf into a single (unified) new bird.conf - also observing the guidelines laid out in https://gitlab.labs.nic.cz/labs/bird/wikis/transition-notes-to-bird-2 <https://gitlab.labs.nic.cz/labs/bird/wikis/transition-notes-to-bird-2> . The results of this simple approach are between weird and stunning: I now have a bird process which is consuming 100% of one CPU. It is still talking to me through birdc, but is very sluggish, i.e. bringing up peers or tearing them down takes a long time - you even see states, like „flushing“ in „show proto all XXX“ for quite some time, which you normally don’t even notice, because they are usually very transitive :-) I haven’t gotten deeper into the problem, yet, but there appears to be a loop involving the affected peer’s Export Updates: Route change stats: received rejected filtered ignored accepted Import updates: 670962 0 0 0 670962 Import withdraws: 216 0 --- 0 216 Export updates: 317034802 159525749 157509053 --- 0 Export withdraws: 468 --- --- --- 0 (those numbers are increasing fast) Some of my peers were/are already MP-BGP capable and so some IPv6 peers now came up with „Hey, you speak IPv4 too? Cool! Here are some 700.000 routes for your, my friend!“, which is totally explicable, yet it surprised my a teeny bit, anyway :-) It should be made clear in the documentation, that BGP protocol definitions without explicit address-family → „channel“ definitions my eventually (see below) ending up MP-BGP sessions with the above effect!? Most surprising: My multiple-inheritance approach, using multiple, chained template definitions for my BGP „protocols“/sessions/peers broke in the weirdest way: I now have multiple IPv6 and IPv4 channels on some of my protocols with different parameterizations: bird> show protocols all BOGONS6 Name Proto Table State Since Info BOGONS6 BGP --- up 17:04:11.929 Established BGP state: Established Neighbor address: 2620:0:6b0::26e5:4207 Neighbor AS: 65332 Neighbor ID: 38.229.66.20 Local capabilities Multiprotocol AF announced: ipv4 ipv4 ipv6 ipv6 Route refresh Graceful restart Restart time: 120 AF supported: ipv4 ipv6 AF preserved: 4-octet AS numbers ADD-PATH RX: ipv4 ipv6 TX: ipv4 ipv6 Enhanced refresh Neighbor capabilities Multiprotocol AF announced: ipv6 Route refresh 4-octet AS numbers Session: external multihop AS4 Source address: 2001:XXXXXXXXXXXX:2c9b Hold timer: 120.187/240 Keepalive timer: 2.682/80 Channel ipv6 State: UP Table: master6 Preference: 100 Input filter: ACCEPT Output filter: REJECT Routes: 0 imported, 0 filtered, 0 exported Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 0 0 --- 0 0 Export updates: 49787 0 49787 --- 0 Export withdraws: 261 --- --- --- 0 BGP Next hop: 2001:XXXXXXXXXXXX:2c9b IGP IPv6 table: master6 Channel ipv4 State: DOWN Table: master4 Preference: 100 Input filter: ACCEPT Output filter: REJECT IGP IPv4 table: master4 Channel ipv6 State: UP Table: master6 Preference: 100 Input filter: no_defaults Output filter: REJECT Routes: 0 imported, 0 exported Route change stats: received rejected filtered ignored accepted Import updates: 0 0 0 0 0 Import withdraws: 0 0 --- 0 0 Export updates: 49787 0 49787 --- 0 Export withdraws: 261 --- --- --- 0 BGP Next hop: 2001:XXXXXXXXXXX:2c9b IGP IPv6 table: master6 Channel ipv4 State: DOWN Table: master4 Preference: 100 Input filter: no_defaults Output filter: REJECT IGP IPv4 table: master4 This appears to be the result of template bgp ALL_BGP { local as MY_AS; ipv6 { add paths on; graceful restart on; import keep filtered on; }; ipv4 { add paths on; graceful restart on; import keep filtered on; }; } template bgp UPLINK from ALL_BGP { allow local as 4; ipv6 { export none; import filter no_defaults; }; ipv4 { export none; import filter no_defaults; }; } protocol bgp BOGONS6 from UPLINK { neighbor 2620:0:6B0::26E5:4207 as 65332; source address 2001:XXXXXXXXXX:fe00:2c9b; multihop 255; } (which is, as explained above, a result of simply merging former bird6.conf and bird.conf files) Again, this is somehow „explicable“, yet completely surprising and „Something must be done against that!!!!11!!11 BURN THE WITCH!!!“ ;-), either within the documentation or within the code. (it seems the ipv6/ipv4 channel definitions within the templates each create their own instances instead of inheriting/enhancing (from) the ones upstream???) @Ondrej, et.al., is this even a „supported mode of operation“ → multiple IPv6 and IPv4 channels within one protocol? So this still somehow works, yet still with the 100% CPU consumption. @bird-devs: How would you like to address above issues? Yes, I can probably clean up the config file, which would probably even make the 100%-issue go away. But imho it shouldn’t be possible in the first place to create configs like these without BIRD at least kicking and screaming loudly about it. NB: This a a test-setup on a test-machine, so I’ll happily create accounts for you, if you send me an ssh-pubkey through email, if you like to have a „live look“ at the beast!? (it practically lives in your garden anyway → 14ms RTT to nic.cz :-) Liebe Grüße aus Berlin, Clemens