Hi all, Yesterday I was partying that I was able to inject static MAC-IP routes into EVPN on Bird 3.3.0 with the correct VNI using the mpls_label attribute. The joy was disturbed today, when I tried to set a different bgp_next_hop than the local host. As soon as I set the bgp_next_hop this forces the VNI/mpls_label to be encoded as 0. While the local export table shows the configured mpls_label, the remote side receives VNI=0.
From reading the code, I suspect that https://gitlab.nic.cz/labs/bird/-/blob/v3.3.0/proto/bgp/packets.c#L1321 is triggering this behaviour. I have no real clue how to get values into nhloc->labels (statically).
I found a workaround in explicitly setting next hop address in the BGP protocol's evpn channel. Yet my expectation would be that explicitly setting bgp_next_hop does not have any influence on treating the VNI/mpls_label. Abbreviated config: evpn table t_evpn; protocol static { evpn { table t_evpn; }; route evpn mac 172.25.110.202:100 0 c0:12:34:56:78:9a 2001:db8::1 drop; } filter export_evpn { if ( net.evpn_type = NET_EVPN_MAC ) then { bgp_ext_community.add((generic, 0x30c0000, 0x8)); bgp_ext_community.add((rt, 10, my_vlan)); bgp_ext_community.add((generic, 0x6000000, 0x0)); mpls_label = 100100; bgp_next_hop = 10.49.0.0; } accept; } protocol bgp core01 { local as my_asn; evpn { table t_evpn; import none; export filter export_evpn; next hop address 10.49.0.0; }; neighbor 172.25.110.201 as my_asn; } With this configuration the VNI in outbound UPDATE is set to 0. Without bgp_next_hop in the filter the BGP UPDATE contains VNI 100100. Best wishes, André -- André Grüneberg, Managing Director andre.grueneberg@bcix.de +49 30 2332195 42 BCIX Management GmbH Albrechtstr. 110 12103 Berlin Germany Geschäftsführer/Managing Directors: Jens Lietzmann, André Grüneberg Handelsregister: Amtsgericht Charlottenburg, HRB 143581 B