Routing daemons commonly describe the next hop of a route with a separate
kernel nexthop object that the route refers to by id, and ask the kernel to
report nothing but that id.  ovn-controller learned nothing from such
routes.  This series resolves the id against the kernel nexthop table, which
the 'nexthop_exchange' node already maintains for EVPN, and keeps the routes
learned from it up to date as the nexthop objects change.

Route learning is then made incremental: a route or nexthop notification is
applied to what was previously read from the table, instead of reading all
watched tables again.  With 10000 routes in one table a notification costs
25 ms where it used to cost 92 ms.

Patch 1 and patch 4 fix pre-existing bugs found on the way.

Patch 2 needs the OVS side to parse RTA_NH_ID, posted as "route-table:
Support routes resolving through a nexthop object.".  The submodule bump is
left out until that is merged.

Han Zhou (7):
  controller: Fix use-after-free of nexthop group members.
  controller: Learn routes referencing a kernel nexthop object.
  controller: Only relearn routes when a nexthop they use changes.
  controller: Resync netlink tables after missed notifications.
  controller: Keep the content of route notifications.
  controller: Split route learning into reading and resolving.
  controller: Learn routes incrementally.

 .../topics/dynamic-routing/architecture.rst   |  27 +-
 NEWS                                          |   5 +
 controller/nexthop-exchange.c                 |  60 +--
 controller/nexthop-exchange.h                 |  56 +++
 controller/ovn-controller.c                   | 320 ++++++++++---
 controller/ovn-netlink-notifier.c             |  60 ++-
 controller/ovn-netlink-notifier.h             |   1 +
 controller/route-exchange-netlink.c           | 312 +++++++++++--
 controller/route-exchange-netlink.h           |  65 ++-
 controller/route-exchange.c                   | 420 +++++++++++++++---
 controller/route-exchange.h                   |  37 +-
 tests/ovn-inc-proc-graph-dump.at              |   3 +-
 tests/system-ovn-netlink.at                   | 234 +++++++++-
 tests/system-ovn.at                           |  77 ++++
 tests/test-ovn-netlink.c                      | 213 ++++++++-
 15 files changed, 1665 insertions(+), 225 deletions(-)

-- 
2.38.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to