EVPN support in BIRD

Tim Weippert weiti+bird-users at weiti.org
Mon May 6 12:24:07 CEST 2024


Hi Ondrej, 

just a quick question, should bird2 announce type 2 prefixes 
in this state?

i do some tests with an FRR EVPN network and add one bird2 evpn node. I
receive evpn routes and see them in the appropriate tables (evpntab and
etab), but while on the FRR side i get only the l2 parts of a type 2
route if i interpret the output form FRR correctly:

Route Distinguisher: 100.192.1.7:2
 * i[2]:[0]:[48]:[52:42:00:6d:d1:7c]
                    0.0.0.0                  0    100      0 i
                    RT:16481:42
 *>i                 0.0.0.0                  0    100      0 i
                    RT:16481:42
 * i[2]:[0]:[48]:[52:42:42:95:3f:45]
                    0.0.0.0                  0    100      0 i
                    RT:16481:42
 *>i                 0.0.0.0                  0    100      0 i
                    RT:16481:42
 * i[3]:[0]:[32]:[100.192.1.7]
                    0.0.0.0                  0    100      0 i
                    RT:16481:42
 *>i                 0.0.0.0                  0    100      0 i
                    RT:16481:42

Two times as i had 2 RR in place for EVPN also FRR.

The bridge interface on the bird edge has an IPv4 and an IPv6 (ULA)
configured and i see them also in bird:

br42 up (index=17)
	MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500
	172.20.175.197/26 (Preferred, scope site)
	fdf7:17d5:de49::5/64 (Preferred, scope site)
	fe80::5042:ff:fe6d:d17c/64 (Preferred, scope link)

vni42 up (index=18 master=br42)
	MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500

Maybe i missed something?

---
protocol bgp RR01 {
	evpn {
		import all;
		export none;
	};

	local 100.192.1.7 as 4242423905;
	neighbor 100.192.1.4 as 4242423905;
	rr client;
}

protocol bgp RR02 {
	evpn {
		import all;
		export none;
	};

	local 100.192.1.7 as 4242423905;
	neighbor 100.192.1.3 as 4242423905;
	rr client;
}

eth table etab;

protocol bridge {
	eth {
		table etab;
		export all;
	};
	bridge device "br42";
	debug all;
};

protocol evpn {
	eth {
		table etab;
	};
	evpn { };
	rd 100.192.1.7:2;
	route target (rt, 16481, 42);
	tunnel device "vni42";
	router address 100.192.1.7;
	vni 42;
};
---

i do an export none to the RRs as with the announcements from bird, the
FRR EVPN Network is a bit broken ...

etab looks good for me, as all MACs are visible:

---
Table etab:
00:00:00:00:00:00    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.4 on vni42 mpls 42
                     unicast [evpn1 10:08:41.312] (80)
	via 100.192.1.3 on vni42 mpls 42
                     unicast [evpn1 10:08:41.312] (80)
	via 100.192.1.1 on vni42 mpls 42
                     unicast [evpn1 10:08:41.312] (80)
	via 100.192.1.6 on vni42 mpls 42
                     unicast [evpn1 10:08:41.312] (80)
	via 100.192.1.5 on vni42 mpls 42
                     unicast [evpn1 10:08:41.312] (80)
	via 100.192.1.2 on vni42 mpls 42
52:42:00:9c:43:36    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.3 on vni42 mpls 2
52:42:00:f2:bb:82    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.6 on vni42 mpls 2
52:42:00:c0:cd:b7    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.5 on vni42 mpls 2
52:42:00:47:3a:69    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.4 on vni42 mpls 2
02:42:ac:14:af:fd    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.3 on vni42 mpls 2
02:42:ac:14:af:fe    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.4 on vni42 mpls 2
52:42:00:2a:a5:2e    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.2 on vni42 mpls 2
52:42:42:95:3f:45    unicast [bridge1 09:52:45.136] * L (0)
	dev vni42
52:42:00:6d:d1:7c    unicast [bridge1 09:52:45.136] * L (0)
	dev br42
52:42:00:66:05:a5    unicast [evpn1 10:08:41.312] * (80)
	via 100.192.1.1 on vni42 mpls 2
---

evpntab also looks quite good from the FRR announcements:

---
Table evpntab:
evpn imet 100.192.1.4:2 0 100.192.1.4  [RR01 09:59:52.215 from 100.192.1.4] * (100) [i]
evpn mac 100.192.1.1:2 0 52:42:00:66:05:a5 fe80::5042:ff:fe66:5a5 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-de01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-de01 mpls 2
evpn mac 100.192.1.4:2 0 02:42:ac:14:af:fe fe80::42:acff:fe14:affe unicast [RR01 09:59:52.215 from 100.192.1.4] * (100/20) [i]
	dev ugw0r-dn42-rr01 mpls 2
evpn mac 100.192.1.5:2 0 52:42:00:c0:cd:b7 fdf7:17d5:de49::4 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-jp01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-jp01 mpls 2
evpn mac 100.192.1.7:2 0 52:42:42:95:3f:45 * mpls 42  [evpn1 10:08:41.312] * (120)
evpn mac 100.192.1.5:2 0 52:42:00:c0:cd:b7 fe80::5042:ff:fec0:cdb7 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-jp01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-jp01 mpls 2
evpn mac 100.192.1.7:2 0 52:42:00:6d:d1:7c * mpls 42  [evpn1 10:08:41.312] * (120)
evpn mac 100.192.1.1:2 0 52:42:00:66:05:a5 fdf7:17d5:de49::1 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-de01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-de01 mpls 2
evpn imet 100.192.1.7:2 0 100.192.1.7  [evpn1 10:08:41.312] * (120)
evpn mac 100.192.1.3:2 0 02:42:ac:14:af:fd fe80::42:acff:fe14:affd unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw0r-dn42-rr02 mpls 2
evpn imet 100.192.1.3:2 0 100.192.1.3  [RR02 09:59:52.197 from 100.192.1.3] * (100) [i]
evpn mac 100.192.1.2:2 0 52:42:00:2a:a5:2e fdf7:17d5:de49::3 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-au01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-au01 mpls 2
evpn mac 100.192.1.2:2 0 52:42:00:2a:a5:2e fe80::5042:ff:fe2a:a52e unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-au01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-au01 mpls 2
evpn mac 100.192.1.6:2 0 52:42:00:f2:bb:82 fe80::5042:ff:fef2:bb82 unicast [RR02 09:59:52.212 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-uk01 mpls 2
                     unicast [RR01 09:59:52.248 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-uk01 mpls 2
evpn mac 100.192.1.3:2 0 52:42:00:9c:43:36 fe80::5042:ff:fe9c:4336 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw0r-dn42-rr02 mpls 2
evpn mac 100.192.1.6:2 0 52:42:00:f2:bb:82 fdf7:17d5:de49::2 unicast [RR02 09:59:52.212 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-uk01 mpls 2
                     unicast [RR01 09:59:52.248 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-uk01 mpls 2
evpn mac 100.192.1.4:2 0 02:42:ac:14:af:fe fdf7:17d5:de49::254 unicast [RR01 09:59:52.215 from 100.192.1.4] * (100/20) [i]
	dev ugw0r-dn42-rr01 mpls 2
evpn mac 100.192.1.5:2 0 52:42:00:c0:cd:b7 172.20.175.196 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-jp01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-jp01 mpls 2
evpn imet 100.192.1.1:2 0 100.192.1.1  [RR02 09:59:52.197 from 100.192.1.3] * (100) [i]
                      [RR01 09:59:52.215 from 100.192.1.4] (100) [i]
evpn imet 100.192.1.6:2 0 100.192.1.6  [RR02 09:59:52.212 from 100.192.1.3] * (100) [i]
                      [RR01 09:59:52.248 from 100.192.1.4] (100) [i]
evpn mac 100.192.1.4:2 0 52:42:00:47:3a:69 fe80::5042:ff:fe47:3a69 unicast [RR01 09:59:52.215 from 100.192.1.4] * (100/20) [i]
	dev ugw0r-dn42-rr01 mpls 2
evpn mac 100.192.1.4:2 0 02:42:ac:14:af:fe * unicast [RR01 09:59:52.215 from 100.192.1.4] * (100/20) [i]
	dev ugw0r-dn42-rr01 mpls 2
evpn imet 100.192.1.5:2 0 100.192.1.5  [RR02 09:59:52.212 from 100.192.1.3] * (100) [i]
                      [RR01 09:59:52.248 from 100.192.1.4] (100) [i]
evpn mac 100.192.1.1:2 0 52:42:00:66:05:a5 172.20.175.193 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-de01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-de01 mpls 2
evpn imet 100.192.1.2:2 0 100.192.1.2  [RR02 09:59:52.197 from 100.192.1.3] * (100) [i]
                      [RR01 09:59:52.215 from 100.192.1.4] (100) [i]
evpn mac 100.192.1.2:2 0 52:42:00:2a:a5:2e 172.20.175.195 unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-au01 mpls 2
                     unicast [RR01 09:59:52.215 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-au01 mpls 2
evpn mac 100.192.1.3:2 0 02:42:ac:14:af:fd * unicast [RR02 09:59:52.197 from 100.192.1.3] * (100/20) [i]
	dev ugw0r-dn42-rr02 mpls 2
evpn mac 100.192.1.6:2 0 52:42:00:f2:bb:82 172.20.175.194 unicast [RR02 09:59:52.212 from 100.192.1.3] * (100/20) [i]
	dev ugw1e-dn42-uk01 mpls 2
                     unicast [RR01 09:59:52.248 from 100.192.1.4] (100/20) [i]
	dev ugw1e-dn42-uk01 mpls 2
---

Also i'm wondering should bird2 also add the corresponding arp entries
to the neigh table in kernel? 

Some hints for me where to look further on the issue?



regards, 
tim

On Mon, Mar 11, 2024 at 03:50:05AM +0100, Ondrej Zajicek via Bird-users wrote:
> Hello
> 
> Recently, we made a beta release of EVPN support in BIRD:
> 
> https://gitlab.nic.cz/labs/bird/-/tree/evpn
> 
> (branch 'evpn' in BIRD git repository)
> 
> You are welcome to try it and give us your feedback and suggestions.
> 
> The primary documentation is still missing, but there are comprehensive
> examples and comments here:
> 
> https://gitlab.nic.cz/labs/bird-tools/-/tree/master/netlab/cf-evpn-bgp
> (especially bird_m11.conf and bird_m12.conf)
> 
> For filter expressions related to EVPN, see function t_net_evpn() in:
> https://gitlab.nic.cz/labs/bird/-/blob/evpn/filter/test.conf
> 
> If you have any questions, feel free to ask here on the mailing list.
> 
> -- 
> Elen sila lumenn' omentielvo
> 
> Ondrej 'Santiago' Zajicek (email: santiago at crfreenet.org)
> "To err is human -- to blame it on a computer is even more so."

-- 
Tim Weippert
http://weiti.org - weiti at weiti.org
GPG Fingerprint - E704 7303 6FF0 8393 ADB1  398E 67F2 94AE 5995 7DD8


More information about the Bird-users mailing list