[ovs-dev] [RFC PATCH ovn 4/7] northd-ddlog: Use address sets for ARP responder flows for VIPs.
Dumitru Ceara
dceara at redhat.com
Thu Nov 25 21:34:58 UTC 2021
Partial port of c1e3896c0a39 ("northd: Use address sets for ARP
responder flows for VIPs."); it adds a FIXME to also port
beed00c9206d ("northd: Always generate valid load balancer address set
names.").
Signed-off-by: Dumitru Ceara <dceara at redhat.com>
---
northd/ovn_northd.dl | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/northd/ovn_northd.dl b/northd/ovn_northd.dl
index c5406191a..f4e1d65b9 100644
--- a/northd/ovn_northd.dl
+++ b/northd/ovn_northd.dl
@@ -5815,6 +5815,8 @@ LogicalRouterNdFlow(.lr = r,
false -> None
}.
+//FIXME: this should generate unique address set compatible names instead, e.g.:
+// _rtr_lb_${router_sb_tunnel_key}_ip4
for (&RouterPort(.lrp = lrp,
.router = router@&Router{._uuid = lr_uuid},
.json_name = json_name,
@@ -5825,22 +5827,18 @@ for (&RouterPort(.lrp = lrp,
true -> Some{i"is_chassis_resident(${json_escape(chassis_redirect_name(lrp.name))})"},
false -> None
} in {
- var all_ipv4s = union(lbips.lb_ipv4s_routable, lbips.lb_ipv4s_unroutable) in
- not all_ipv4s.is_empty() in
LogicalRouterArpFlow(.lr = router,
.lrp = Some{lrp},
- .ip = i"{ ${all_ipv4s.to_vec().join(\", \")} }",
+ .ip = i"_rtr_lb_${router.name}_ip4",
.mac = rEG_INPORT_ETH_ADDR(),
.extra_match = residence_check,
.drop = false,
.priority = 90,
.stage_hint = 0);
- var all_ipv6s = union(lbips.lb_ipv6s_routable, lbips.lb_ipv6s_unroutable) in
- not all_ipv6s.is_empty() in
LogicalRouterNdFlowLB(.lr = router,
.lrp = Some{lrp},
- .ip = ("{ " ++ all_ipv6s.to_vec().join(", ") ++ " }").intern(),
+ .ip = i"_rtr_lb_${router.name}_ip6",
.mac = rEG_INPORT_ETH_ADDR(),
.extra_match = residence_check,
.stage_hint = 0)
@@ -5848,6 +5846,22 @@ for (&RouterPort(.lrp = lrp,
}
}
+for (&Router(._uuid = lr_uuid, .name = rtr_name)) {
+ for (lbips in &LogicalRouterLBIPs(.lr = lr_uuid)) {
+ var as_name = i"_rtr_lb_${rtr_name}_ip4" in
+ var all_ipv4s = union(lbips.lb_ipv4s_routable, lbips.lb_ipv4s_unroutable) in
+ sb::Out_Address_Set(hash128(as_name), as_name, all_ipv4s)
+ }
+}
+
+for (&Router(._uuid = lr_uuid, .name = rtr_name)) {
+ for (lbips in &LogicalRouterLBIPs(.lr = lr_uuid)) {
+ var as_name = i"_rtr_lb_${rtr_name}_ip6" in
+ var all_ipv6s = union(lbips.lb_ipv6s_routable, lbips.lb_ipv6s_unroutable) in
+ sb::Out_Address_Set(hash128(as_name), as_name, all_ipv6s)
+ }
+}
+
/* Drop IP traffic destined to router owned IPs except if the IP is
* also a SNAT IP. Those are dropped later, in stage
* "lr_in_arp_resolve", if unSNAT was unsuccessful.
More information about the dev
mailing list