Re: [PATCH] net: bridge: vxlan: Protocol field in bridge fdb
Ido Schimmel <[email protected]> Thu, 11 Jun 2026 15:19:16 +0300
| Newsgroups | gmane.linux.network,gmane.linux.kernel,gmane.linux.network.bridge |
|---|---|
| Message-ID | <20260611121916.GA913575@shredder> |
On Tue, Jun 09, 2026 at 06:55:10PM -0400, Patrice Brissette wrote: > I'm following up on the status of this patch series. This feature is > critical for our EVPN Multihoming deployments, and the corresponding > FRRouting work is currently blocked pending support for this > functionality. > > Has there been any progress on this effort, or has someone else picked > it up? No. Assumption was that the author will follow up on the feedback. > What are the next steps? Before I answer this, I have some questions / comments below. > > For reference, the proposed work includes: > > Adding support for a protocol field to bridge and VXLAN FDB entries. > > Allowing the protocol field to identify the source of an FDB update, > for example: > > Zebra for control-plane-originated entries > > HW for data-plane-learned entries (e.g., ASIC-learned MACs) Note that entries installed by the kernel (as opposed to user space) will always be programmed with RTPROT_KERNEL, regardless of the data path in which they were learned (software / hardware). > > Extending iproute2 to support configuration and display of this new field. > > The primary use case is EVPN Multihoming with ARP/ND synchronization > for hosts that are multihomed to a set of routers. In this > environment, the same MAC address may be learned locally by hardware > when the host is directly attached, or installed by the control plane > when the entry is synchronized through BGP, as commonly occurs in > all-active scenarios. > > The protocol field allows FRRouting to distinguish > control-plane-installed entries from hardware-learned entries, > enabling correct MAC mobility handling, ES peer synchronization, and > proper processing of MAC ownership changes. Can't this be achieved by using "activity_notify"? See: https://git.kernel.org/pub/scm/network/iproute2/iproute2-next.git/commit/?id=e041178ba6bc2af0a1148145ee303c9db79fb4cb https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=5e88777a382480d0b1f7eafb6d0fb680ec7a40bb When an FDB entry is learned on an ES, install it with "activity_notify norefresh": es1# bridge fdb replace 00:aa:bb:cc:dd:ee dev bond1 master static activity_notify norefresh es1# # bridge -d fdb get 00:aa:bb:cc:dd:ee br br1 00:aa:bb:cc:dd:ee dev bond1 activity_notify master br1 static It will transition to "inactive" after the aging time elapsed: es1# bridge -d fdb get 00:aa:bb:cc:dd:ee br br1 00:aa:bb:cc:dd:ee dev bond1 activity_notify inactive master br1 static And install it as "activity_notify inactive" when synchronizing it to other ES peers: es2# bridge fdb add 00:aa:bb:cc:dd:ee dev bond1 master static activity_notify inactive es2# bridge -d fdb get 00:aa:bb:cc:dd:ee br br1 00:aa:bb:cc:dd:ee dev bond1 activity_notify inactive master br1 static Then entry will become active if later it is refreshed / learned by the data path: es2# bridge -d fdb get 00:aa:bb:cc:dd:ee br br1 00:aa:bb:cc:dd:ee dev bond1 activity_notify master br1 static