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

Reply via email to