Apologies for the late update and the fact that it's still RFC. I was stuck for the longest time on trying to figure out how to best advertise NAT/LB routes from a neighboring routers (more details in in- line comments).
Looking forward to feedback. Thanks, Martin. On Wed, 2025-02-12 at 02:43 +0100, Martin Kalcok wrote: > 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(-) > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev