This series allows to advertise routes for Load Balancer VIPs and
NAT external addresses to the network fabric.
v6 -> v7:
* When redistributing NAT/LBs from neighboring routers, watch
from changes in LSs, not just LRs. This is required because
the CRPs that we set as tracked ports are in LS.
* Verify that the nat record is valid before we use it to set
tracked port.
* more tests.
v5 -> v6:
* rebased on main
* included patches from dceara that populate l3dgw in ovn_nat
structure.
* Tracked ports for LBs are properly set
* LB VIPs from neighboring routers are readvertised.
* tests and documentation
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/[email protected]/
[1]
https://patchwork.ozlabs.org/project/ovn/cover/[email protected]/
[2] https://github.com/dceara/ovn/tree/tmp-bgp-ovn-controller-v5
[3] https://github.com/dceara/ovn/tree/tmp-bgp-v7
Dumitru Ceara (2):
northd: Expose the is_l3dgw_port() function to other modules.
northd: Check and populate NAT entry fields early in the I-P engine.
Martin Kalcok (1):
northd: Redistribution of NAT/LB routes.
TODO.rst | 10 +
lib/stopwatch-names.h | 1 +
northd/en-advertised-route-sync.c | 198 ++++++--
northd/en-advertised-route-sync.h | 3 +
northd/en-learned-route-sync.c | 3 +-
northd/en-lr-nat.c | 234 +++++++++-
northd/en-lr-nat.h | 24 +-
northd/inc-proc-northd.c | 5 +
northd/northd.c | 581 +++++++++++++----------
northd/northd.h | 54 ++-
ovn-nb.xml | 36 ++
tests/ovn-northd.at | 628 +++++++++++++++++++++++++
tests/system-ovn.at | 738 ++++++++++++++++++++++++++++++
13 files changed, 2190 insertions(+), 325 deletions(-)
--
2.43.0
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev