Enable automatic static route configuration when NAT is created with --ad-route option for gw routers similar to what is currently supported for distributed routers with gw_router_ports.
Reported-at: https://issues.redhat.com/browse/FDP-244 Signed-off-by: Lorenzo Bianconi <[email protected]> --- northd/northd.c | 2 +- tests/ovn-northd.at | 12 ++++++ tests/system-ovn.at | 90 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 1 deletion(-) diff --git a/northd/northd.c b/northd/northd.c index 7c731db6d..4d31b7e22 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -15340,7 +15340,7 @@ build_routable_flows_for_router_port( } if (lrp->nbrp->ha_chassis_group || - lrp->nbrp->n_gateway_chassis) { + lrp->nbrp->n_gateway_chassis || lrp->od->is_gw_router) { for (size_t j = 0; j < ra.n_addrs; j++) { struct lport_addresses *laddrs = &ra.laddrs[j]; for (size_t k = 0; k < laddrs->n_ipv4_addrs; k++) { diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at index 591ad5aad..098bec0bb 100644 --- a/tests/ovn-northd.at +++ b/tests/ovn-northd.at @@ -5040,6 +5040,18 @@ check ovn-nbctl --wait=sb lrp-del-gateway-chassis ro2-sw hv2 check_lflows 0 +AS_BOX([Checking that NAT flows are installed for gw routers]) + +check ovn-nbctl set logical_router ro1 options:chassis=hv1 +check ovn-nbctl --wait=sb set logical_router ro2 options:chassis=hv2 + +check_lflows 1 + +check ovn-nbctl clear logical_router ro1 options +check ovn-nbctl --wait=sb clear logical_router ro2 options + +check_lflows 0 + AS_BOX([Checking that NAT flows are installed for routers with HA_Chassis_Group]) check ovn-nbctl set logical_router_port ro1-sw ha_chassis_group="$grp1_uuid" diff --git a/tests/system-ovn.at b/tests/system-ovn.at index c22c7882f..b1fd1a937 100644 --- a/tests/system-ovn.at +++ b/tests/system-ovn.at @@ -12184,3 +12184,93 @@ OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d /connection dropped.*/d"]) AT_CLEANUP ]) + +OVN_FOR_EACH_NORTHD([ +AT_SETUP([IP NAT add-route]) +AT_KEYWORDS([ip-nat-add-route]) + +ovn_start +OVS_TRAFFIC_VSWITCHD_START() +ADD_BR([br-int]) + +check ovs-vsctl \ + -- set Open_vSwitch . external-ids:system-id=hv1 \ + -- set Open_vSwitch . external-ids:ovn-remote=unix:$ovs_base/ovn-sb/ovn-sb.sock \ + -- set Open_vSwitch . external-ids:ovn-encap-type=geneve \ + -- set Open_vSwitch . external-ids:ovn-encap-ip=169.0.0.1 \ + -- set bridge br-int fail-mode=secure other-config:disable-in-band=true + +start_daemon ovn-controller + +check ovn-nbctl lr-add lr0 +check ovn-nbctl set logical_router lr0 options:chassis=hv1 + +check ovn-nbctl lr-add lr1 +check ovn-nbctl set logical_router lr1 options:chassis=hv1 + +check ovn-nbctl ls-add sw0 +check ovn-nbctl ls-add sw1 +check ovn-nbctl ls-add join + +check ovn-nbctl lrp-add lr0 lr-sw0 00:00:01:01:02:03 192.168.0.1/24 +check ovn-nbctl lsp-add sw0 rp-sw0 -- set Logical_Switch_Port rp-sw0 \ + type=router options:router-port=lr-sw0 \ + -- lsp-set-addresses rp-sw0 router + +check ovn-nbctl lrp-add lr0 lr0-join 04:00:01:01:02:03 172.16.1.1/24 +check ovn-nbctl lsp-add join rp0-join -- set Logical_Switch_Port rp0-join \ + type=router options:router-port=lr0-join \ + -- lsp-set-addresses rp0-join router + +check ovn-nbctl lrp-add lr1 lr-sw1 00:00:02:01:02:03 192.168.1.1/24 +check ovn-nbctl lsp-add sw1 rp-sw1 -- set Logical_Switch_Port rp-sw1 \ + type=router options:router-port=lr-sw1 \ + -- lsp-set-addresses rp-sw1 router + +check ovn-nbctl lrp-add lr1 lr1-join 04:00:02:01:02:03 172.16.2.2/24 +check ovn-nbctl lsp-add join rp1-join -- set Logical_Switch_Port rp1-join \ + type=router options:router-port=lr1-join \ + -- lsp-set-addresses rp1-join router + +ADD_NAMESPACES(sw0-p0) +ADD_VETH(sw0-p0, sw0-p0, br-int, "192.168.0.2/24", "f0:00:00:01:02:03", "192.168.0.1") +check ovn-nbctl lsp-add sw0 sw0-p0 \ + -- lsp-set-addresses sw0-p0 "f0:00:00:01:02:03 192.168.0.2" + +ADD_NAMESPACES(sw1-p0) +ADD_VETH(sw1-p0, sw1-p0, br-int, "192.168.1.2/24", "f0:00:00:11:02:03", "192.168.1.1") +check ovn-nbctl lsp-add sw1 sw1-p0 \ + -- lsp-set-addresses sw1-p0 "f0:00:00:11:02:03 192.168.1.2" + +check ovn-nbctl --add-route lr-nat-add lr0 dnat_and_snat 172.16.1.100 192.168.0.2 sw0-p0 00:00:00:00:03:01 +check ovn-nbctl --add-route lr-nat-add lr1 dnat_and_snat 172.16.1.101 192.168.1.2 sw1-p0 00:00:00:00:04:01 + +wait_for_ports_up +check ovn-nbctl --wait=hv sync + +NS_CHECK_EXEC([sw0-p0], [ping -q -c 3 -i 0.3 -w 2 172.16.1.101 | FORMAT_PING], \ +[0], [dnl +3 packets transmitted, 3 received, 0% packet loss, time 0ms +]) + +NS_CHECK_EXEC([sw1-p0], [ping -q -c 3 -i 0.3 -w 2 172.16.1.100 | FORMAT_PING], \ +[0], [dnl +3 packets transmitted, 3 received, 0% packet loss, time 0ms +]) + +OVS_APP_EXIT_AND_WAIT([ovn-controller]) + +as ovn-sb +OVS_APP_EXIT_AND_WAIT([ovsdb-server]) + +as ovn-nb +OVS_APP_EXIT_AND_WAIT([ovsdb-server]) + +as northd +OVS_APP_EXIT_AND_WAIT([ovn-northd]) + +as +OVS_TRAFFIC_VSWITCHD_STOP(["/failed to query port patch-.*/d +/connection dropped.*/d"]) +AT_CLEANUP +]) -- 2.43.2 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
