This series allows to advertise routes for Load Balancer VIPs and NAT external addresses to the network fabric.
The reason why this is posted as an RFC is because it depends on two in-flight patch series in OVN: * OVN Fabric integration: Northd (v4)[0] * OVN Fabric integration: Ovn-controller (v5)[1] v4 -> v5: * Included northd processing changes proposed by Dumitru (I will add you to co-authors for the final version @dceara) * Added optional tracked_port member to parsed_route struct. * Added tracked ports for NAT routes * Added advertising of external NAT IPs of neighboring routers. * Added advertising of LBs * tracked ports for LBs still missing * LBs from enighboring routers are not yet advertised * I kept the changes from v4 in a separate commit for easier review of changes. v3 -> v4: * This is just a preview to get feedback on the new design that splits processing of different route types in northd engine. Main goal is to avoid recomputing logical flows when NAT/LB routes are changed. * Approach from v3 was almost completely scrapped. * rebased on latest dependency patches [3] * This being WIP, it lacks: * setting "tracked_port" for routes * processing of LBs * tests/documentation v2 -> v3: * Actually use the install_lflow attribute of the parsed_route * Fix install_lflow ddtribute not being set in parsed_route_clone fuinction. * fix get_lb_addresses because it actually modified the behavior of get_nad_addresses by unconditionally overwriting "central_ip_address". Now it does "|=" instead of "=" * Added unit tests for advertising NAT and LB VIPs (IPv4 and IPv6) * Added optimizations suggested by Felix in v2 review. v2: * rebased on latest dependency patches [2] * get_nat_addresses refactored to extract functionality for getting LB addresses independently. The new function is called get_lb_addresses. The original behavior of get_nat_addresses is unchanged. * Added 'install_lflow' bool member to 'parsed_route' struct. This controls whether northd installs logical flows for given route (cc @felix.huettner) * Based on suggestion from dceara, "lr_stateful" input was added to en_routes node. This allows for easier iteration over logical router's load balancers. * Based on suggestion from fnordahl, functionality was added to advertise NAT/LB IPs of neighboring routers, if they have have "add_route" option set to "true". * A unit test was added to test this functionality. * Based on the discussion about the option naming, the names were changed to 'dynamic-routing-nat' and 'dynamic-routing-lb-vips'. This will likely change when dependency patch series gets updated to use 'dynamic-routing=<comma_separated_values>' [0] https://patchwork.ozlabs.org/project/ovn/cover/cover.1737472971.git.felix.huettner@stackit.cloud/ [1] https://patchwork.ozlabs.org/project/ovn/cover/cover.1738148851.git.felix.huettner@stackit.cloud/ [2] https://github.com/dceara/ovn/tree/tmp-bgp-ovn-controller-v5 [3] https://github.com/dceara/ovn/tree/tmp-bgp-v7 Frode Nordahl (1): northd: Allow IPv6 in get_nat_addresses(). Martin Kalcok (3): northd: Extract get_lb_addresses functionality. WIP: Advertisement of NAT/LB addresses as routes. WIP: Advertisement of NAT/LB pt.2. lib/stopwatch-names.h | 1 + northd/en-advertised-route-sync.c | 179 +++++++++++++---- northd/en-advertised-route-sync.h | 4 + northd/en-learned-route-sync.c | 3 +- northd/en-northd-output.c | 8 + northd/en-northd-output.h | 2 + northd/inc-proc-northd.c | 8 + northd/northd.c | 319 ++++++++++++++++++++++++++---- northd/northd.h | 24 ++- 9 files changed, 476 insertions(+), 72 deletions(-) -- 2.43.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev