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
