This commit enhances the "ovn multinode bgp L3 EVPN" multinode test
ensuring that OVN advertised logical router NAT and load balancer IPs
are indeed accessible from external hosts through an L3 EVPN fabric.

The functionality was already present, NAT/LB IP routes are advertised
as regular OVN routes in the VRF that's monitored by FRR, since v25.03,
so no code changes are required.  The FRR speaker further advertises
these as Type-5 EVPN routes for the external BGP speaker to use.

Reported-at: https://issues.redhat.com/browse/FDP-2079
Signed-off-by: Dumitru Ceara <[email protected]>
---
 tests/multinode.at | 73 +++++++++++++++++++++++++++++++---------------
 1 file changed, 49 insertions(+), 24 deletions(-)

diff --git a/tests/multinode.at b/tests/multinode.at
index 2c90e5d7d8..31b0ae47ef 100644
--- a/tests/multinode.at
+++ b/tests/multinode.at
@@ -3687,10 +3687,14 @@ ext_bgp_ip_gw1=42.10.$vni.11
 ext_bgp_mac_gw1=00:00:01:00:00:$vni
 host_bgp_ip_gw1=42.10.$vni.12
 host_bgp_mac_gw1=00:00:00:01:00:$vni
+nat_ip_gw1=42.10.$vni.13
+lb_ip_gw1=42.10.$vni.14
 ext_bgp_ip_gw2=42.20.$vni.21
 ext_bgp_mac_gw2=00:00:02:00:00:$vni
 host_bgp_ip_gw2=42.20.$vni.22
 host_bgp_mac_gw2=00:00:00:02:00:$vni
+nat_ip_gw2=42.20.$vni.23
+lb_ip_gw2=42.20.$vni.24
 
 # Create a flat, distributed OVN localnet switch, with EVPN configured.
  check m_as ovn-gw-1 ovs-vsctl set open . 
external-ids:ovn-bridge-mappings=public:br-ex
@@ -3729,32 +3733,38 @@ check m_as ovn-gw-2 ip link set lo-wl-$vni master 
vrf-$vni
 check m_as ovn-gw-2 ip a a dev lo-wl-$vni 77.77.2.$vni/32
 check m_as ovn-gw-2 ip link set lo-wl-$vni up
 
-check multinode_nbctl                                                     \
-    -- lr-add lr                                                          \
-      -- set logical_router lr options:dynamic-routing=true               \
-                               options:requested-tnl-key=$vni             \
-      -- lrp-add lr lr-gw1 $host_bgp_mac_gw1 $host_bgp_ip_gw1/24          \
-        -- lrp-set-gateway-chassis lr-gw1 ovn-gw-1 10                     \
-      -- lrp-add lr lr-gw2 $host_bgp_mac_gw2 $host_bgp_ip_gw2/24          \
-        -- lrp-set-gateway-chassis lr-gw2 ovn-gw-2 10                     \
-      -- lrp-add lr lr-int1 00:00:00:00:01:02 30.0.1.1/24                 \
-        -- lrp-set-options lr-int1 dynamic-routing-redistribute=connected \
-      -- lrp-add lr lr-int2 00:00:00:00:01:02 30.0.2.1/24                 \
-        -- lrp-set-options lr-int2 dynamic-routing-redistribute=connected \
-    -- ls-add ls                                                          \
-      -- lsp-add-localnet-port ls ls-ln public                            \
-      -- lsp-add-router-port ls ls-lr-gw1 lr-gw1                          \
-      -- lsp-add-router-port ls ls-lr-gw2 lr-gw2                          \
-    -- ls-add ls-int1                                                     \
-      -- lsp-add-router-port ls-int1 ls-int1-lr lr-int1                   \
-    -- ls-add ls-int2                                                     \
+check multinode_nbctl                                                          
  \
+    -- lr-add lr                                                               
  \
+      -- set logical_router lr options:dynamic-routing=true                    
  \
+                               options:requested-tnl-key=$vni                  
  \
+      -- lrp-add lr lr-gw1 $host_bgp_mac_gw1 $host_bgp_ip_gw1/24               
  \
+        -- lrp-set-gateway-chassis lr-gw1 ovn-gw-1 10                          
  \
+      -- lrp-add lr lr-gw2 $host_bgp_mac_gw2 $host_bgp_ip_gw2/24               
  \
+        -- lrp-set-gateway-chassis lr-gw2 ovn-gw-2 10                          
  \
+      -- lrp-add lr lr-int1 00:00:00:00:01:02 30.0.1.1/24                      
  \
+        -- lrp-set-options lr-int1 
dynamic-routing-redistribute=connected,nat,lb \
+      -- lrp-add lr lr-int2 00:00:00:00:01:02 30.0.2.1/24                      
  \
+        -- lrp-set-options lr-int2 
dynamic-routing-redistribute=connected,nat,lb \
+    -- ls-add ls                                                               
  \
+      -- lsp-add-localnet-port ls ls-ln public                                 
  \
+      -- lsp-add-router-port ls ls-lr-gw1 lr-gw1                               
  \
+      -- lsp-add-router-port ls ls-lr-gw2 lr-gw2                               
  \
+    -- ls-add ls-int1                                                          
  \
+      -- lsp-add-router-port ls-int1 ls-int1-lr lr-int1                        
  \
+    -- ls-add ls-int2                                                          
  \
       -- lsp-add-router-port ls-int2 ls-int2-lr lr-int2
 
-check multinode_nbctl                                       \
-    -- lsp-add ls-int1 w1                                   \
-      -- lsp-set-addresses w1 "00:00:00:00:00:01 30.0.1.11" \
-    -- lsp-add ls-int2 w2                                   \
-      -- lsp-set-addresses w2 "00:00:00:00:00:02 30.0.2.11"
+check multinode_nbctl                                                         \
+    -- lsp-add ls-int1 w1                                                     \
+      -- lsp-set-addresses w1 "00:00:00:00:00:01 30.0.1.11"                   \
+    -- lr-nat-add lr dnat_and_snat $nat_ip_gw1 30.0.1.11 w1 00:00:00:00:01:11 \
+    -- lb-add lb1 $lb_ip_gw1 30.0.1.11                                        \
+    -- lr-lb-add lr lb1                                                       \
+    -- lsp-add ls-int2 w2                                                     \
+      -- lsp-set-addresses w2 "00:00:00:00:00:02 30.0.2.11"                   \
+    -- lr-nat-add lr dnat_and_snat $nat_ip_gw2 30.0.2.11 w2 00:00:00:00:02:11 \
+    -- lb-add lb2 $lb_ip_gw2 30.0.2.11                                        \
+    -- lr-lb-add lr lb2
 
 check m_as ovn-gw-1 /data/create_fake_vm.sh w1 w1 \
     00:00:00:00:00:01 1500 30.0.1.11 24 30.0.1.1 1000::11/64 1000::1
@@ -3809,6 +3819,21 @@ OVS_WAIT_FOR_OUTPUT([m_as ovn-gw-2 ovs-ofctl dump-flows 
br-int table=OFTABLE_GET
 2
 ])
 
+AS_BOX([Check traffic to "fabric" hosts - ping from fabric towards NAT/LB IPs])
+OVS_WAIT_UNTIL([m_as ovn-gw-1 ip netns exec frr-ns ip vrf exec vrf-$vni ping 
-c1 $nat_ip_gw1])
+OVS_WAIT_UNTIL([m_as ovn-gw-1 ip netns exec frr-ns ip vrf exec vrf-$vni ping 
-c1 $lb_ip_gw1])
+OVS_WAIT_UNTIL([m_as ovn-gw-2 ip netns exec frr-ns ip vrf exec vrf-$vni ping 
-c1 $nat_ip_gw2])
+OVS_WAIT_UNTIL([m_as ovn-gw-2 ip netns exec frr-ns ip vrf exec vrf-$vni ping 
-c1 $lb_ip_gw2])
+
+check multinode_nbctl --wait=hv set logical_router lr \
+    options:dynamic-routing-redistribute-local-only=true
+
+AS_BOX([Check traffic to "fabric" hosts - ping from fabric towards NAT/LB IPs 
- local-only=true])
+OVS_WAIT_UNTIL([m_as ovn-gw-1 ip netns exec frr-ns ip vrf exec vrf-$vni ping 
-c1 $nat_ip_gw1])
+OVS_WAIT_UNTIL([m_as ovn-gw-1 ip netns exec frr-ns ip vrf exec vrf-$vni ping 
-c1 $lb_ip_gw1])
+OVS_WAIT_UNTIL([m_as ovn-gw-2 ip netns exec frr-ns ip vrf exec vrf-$vni ping 
-c1 $nat_ip_gw2])
+OVS_WAIT_UNTIL([m_as ovn-gw-2 ip netns exec frr-ns ip vrf exec vrf-$vni ping 
-c1 $lb_ip_gw2])
+
 AT_CLEANUP
 
 AT_SETUP([redirect-bridged to non-gw destination switch port])
-- 
2.51.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to