Uploaded image for project: 'Fast Datapath Product'
  1. Fast Datapath Product
  2. FDP-1416

[EVPN] Add (OVS/OVN) library support for monitoring and interacting with Linux neighbor (fdb/arp/nd) tables.

    • Icon: Story Story
    • Resolution: Done
    • Icon: Major Major
    • None
    • None
    • ovn25.09
    • None
    • 8
    • False
    • Hide

      None

      Show
      None
    • False
    • Hide

      Given a host running ovn-controller that is built with the new OVS/OVN neighbour-table helper library enabled,

      When either the kernel generates a netlink-neighbor (RTNLGRP_NEIGH) notification or ovn-controller needs to add or delete a static FDB/ARP entry,

      Then ovn-controller correctly processes or injects the entry, covering both IPv4 and IPv6 so that EVPN control plane components always see accurate MAC/IP information and data plane traffic is forwarded without loss.

      Show
      Given a host running ovn-controller that is built with the new OVS/OVN neighbour-table helper library enabled, When either the kernel generates a netlink-neighbor (RTNLGRP_NEIGH) notification or ovn-controller needs to add or delete a static FDB/ARP entry, Then ovn-controller correctly processes or injects the entry, covering both IPv4 and IPv6 so that EVPN control plane components always see accurate MAC/IP information and data plane traffic is forwarded without loss.
    • ovn25.09-25.09.0-beta.3.el9fdp
    • rhel-9
    • None
    • rhel-net-ovn
    • ssg_networking
    • OVN FDP Sprint 6, OVN FDP Sprint 7
    • 2

      In specific deployments (e.g., with BGP EVPN configured for OVN switches/routers), ovn-controller needs the ability to monitor changes in the host FDB (mac cache) and IPv4 ARP/IPv6 ND (cache) tables.

      Similar to the support for getting routing table notifications and pushing changes (route-table-notify.c/route-exchange-netlink.c) ovn-controller could use existing OVS infrastructure to:

      • register itself for NETLINK_ROUTE notifications sent to the RTNLGRP_NEIGH netlink multicast group
      • inject permanent (static) entries in the host FDB/neigh tables

      Netlink neigh messages are of type "struct ndmsg":
      https://elixir.bootlin.com/linux/v6.14.7/source/include/uapi/linux/neighbour.h#L8

      struct ndmsg {
          __u8        ndm_family;
          __u8        ndm_pad1;
          __u16        ndm_pad2;
          __s32        ndm_ifindex;
          __u16        ndm_state;
          __u8        ndm_flags;
          __u8        ndm_type;
      }; 

      Note: ovn-controller will probably need to be able to filter notifications based on interface name.  This information is not part of the ndmsg structure; ndmsg structures only store the ifindex of the interface for which entries are updated.  That means it might be required to use/extend the OVS rtnetlink library to also monitor link updates in OVN in order to get the mapping between interfaces and ifindex. The OVS 'struct if_notifier' (lib/if-notifier.[hc]) data structure can be used to monitor interface (link) changes - therefore there's no need for any special change in OVS, it will be up to the user of the neighbor-management library to monitor and  maintain the mapping between name and ifindex.

              dceara@redhat.com Dumitru Ceara
              dceara@redhat.com Dumitru Ceara
              Jianlin Shi Jianlin Shi
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: