Hello everyone, I’m having an issue with FRR running on Cumulus (4.0+cl3u10), which is peering BGP to BIRD (2.0.2, also tried 1.6.3).
When certain routes from FRR are advertised to BIRD (I configured them through vrf leaking on FRR, but not sure if that matters, or its just something with the routes), BIRD terminates the BGP session with an `Optional attribute error` (on BIRD 2.0.2, different error on 1.6.3) when receiving the BGP UPDATE message. I’m not sure if this an FRR or BIRD issue, so I'm hoping someone here could take a look if the UPDATE message from FRR could possibly be malformed, or is BIRD handling this in an odd way. I've attached the tcpdump as well as error logs from BIRD, along with the bird.conf, as well a portion of the FRR config. 100.91.38.1 is the host running BIRD. 100.91.38.61 is the host running FRR. Regards, Derrick
root@priv-ipvs101:~# !! bird -c /usr/local/etc/bird.conf -d bird: direct1: Channel ipv4 connected to table master4 bird: direct1: Initializing bird: uplink2: Channel ipv4 connected to table master4 bird: uplink2: Initializing bird: kernel1: Channel ipv4 connected to table master4 bird: kernel1: Initializing bird: device1: Initializing bird: bfd1: Initializing bird: device1: Starting bird: device1: Scanning interfaces bird: Missing broadcast address for interface bond0.1000 bird: device1: State changed to up bird: Chosen router ID 100.91.36.74 according to interface bond0 bird: direct1: Starting bird: direct1: State changed to up bird: uplink2: Starting bird: uplink2: State changed to start bird: kernel1: Starting bird: kernel1: State changed to up bird: bfd1: Starting bird: bfd1: State changed to up bird: Started bird: direct1 < interface lo goes up bird: direct1 < address 127.0.0.0/8 on interface lo added bird: direct1 < interface eno2 created bird: direct1 < interface bond0 goes up bird: direct1 < address 100.91.36.0/25 on interface bond0 added bird: direct1 < interface bond0.1000 goes up bird: direct1 < address 100.91.38.0/26 on interface bond0.1000 added bird: direct1 < address fe80::/64 on interface bond0.1000 added bird: direct1 < interface eno1 goes up bird: uplink2: Started bird: uplink2: Connect delayed by 5 seconds bird: kernel1 < interface lo goes up bird: kernel1 < interface eno2 created bird: kernel1 < interface bond0 goes up bird: kernel1 < interface bond0.1000 goes up bird: kernel1 < interface eno1 goes up bird: kernel1: Scanning routing table bird: kernel1: 0.0.0.0/0: [alien] ignored bird: kernel1: 100.91.36.126/32: [alien] ignored bird: kernel1: 0.0.0.0/0: [alien] ignored bird: kernel1: 100.91.36.126/32: [alien] ignored bird: kernel1: Pruning table master4 bird: uplink2: Connecting to 100.91.38.61 from local address 100.91.38.1 bird: uplink2: Connected bird: uplink2: Sending OPEN(ver=4,as=-22544387,hold=240,id=645b244a) bird: uplink2: Got OPEN(as=23456,hold=9,id=100.92.0.19) bird: uplink2: Got KEEPALIVE bird: uplink2: BGP session established bird: uplink2: State changed to up bird: uplink2: Sending KEEPALIVE bird: uplink2: Sending END-OF-RIB bird: uplink2: Got UPDATE bird: uplink2: Error: Optional attribute error bird: uplink2: BGP session closed bird: uplink2: State changed to stop bird: uplink2: Sending NOTIFICATION(code=3.9) bird: uplink2: Down bird: uplink2: State changed to flush bird: uplink2: State changed to down bird: uplink2: Starting bird: uplink2: State changed to start bird: uplink2: Startup delayed by 60 seconds due to errors bird: device1: Scanning interfaces bird: direct1 < interface eno2 goes up bird: kernel1 < interface eno2 goes up ^C root@priv-ipvs101:~#
bird_bgp_err.pcap
Description: Binary data
frr.conf
Description: Binary data
bird.conf
Description: Binary data