@@ -2795,7 +2795,9 @@ check_fake_multinode_setup_by_nodes 'ovn-chassis-1 ovn-chassis-2 ovn-chassis-3'
2795
2795
cleanup_multinode_resources_by_nodes 'ovn-chassis-1 ovn-chassis-2 ovn-chassis-3'
2796
2796
2797
2797
m_as ovn-chassis-1 ip link del migrator-p
2798
- m_as ovn-chassis-2 ip link del sw0p2-p
2798
+ m_as ovn-chassis-2 ip link del sw0-port1-p
2799
+ m_as ovn-chassis-2 ip link del sw0-port2-p
2800
+ m_as ovn-chassis-2 ip link del sw0-port3-p
2799
2801
m_as ovn-chassis-3 ip link del migrator-p
2800
2802
2801
2803
OVS_WAIT_UNTIL([m_as ovn-chassis-1 ip link show | grep -q genev_sys])
@@ -2829,7 +2831,7 @@ check_ping() {
2829
2831
dst_chassis=$(multinode_sbctl --bare --columns name list chassis $dst_chassis_uuid)
2830
2832
dst_ip=$(multinode_nbctl lsp-get-addresses $dst_port | awk '{print $2}')
2831
2833
echo "$src_port on $src_chassis => $dst_port on $dst_chassis(requested_chassis=$requested_chassis_uuid)"
2832
- M_NS_CHECK_EXEC([$src_chassis], [$src_ns], [ping -q -c 3 -i 0.3 -w 2 $dst_ip | FORMAT_PING], \
2834
+ M_NS_CHECK_EXEC([$src_chassis], [$src_ns], [ping -q -c 3 -i 0.1 -w 2 $dst_ip | FORMAT_PING], \
2833
2835
[0], [stdout])
2834
2836
if [[ "$status" == "success" ]]; then
2835
2837
AT_CHECK([cat stdout | grep -c "3 packets transmitted, 3 received, 0% packet loss"], [0], [dnl
@@ -2851,85 +2853,115 @@ check_ping() {
2851
2853
2852
2854
check multinode_nbctl ls-add sw0
2853
2855
check multinode_nbctl lsp-add sw0 migrator
2854
- check multinode_nbctl lsp-set-addresses migrator "50:54:00:00:00:03 10.0.0.3 1000::3"
2855
- check multinode_nbctl lsp-add sw0 sw0-port2
2856
- check multinode_nbctl lsp-set-addresses sw0-port2 "50:54:00:00:00:04 10.0.0.4 1000::4"
2856
+ check multinode_nbctl lsp-set-addresses migrator "50:54:00:00:00:09 10.0.0.9 1000::9"
2857
+ for i in 1 2 3; do
2858
+ check multinode_nbctl lsp-add sw0 sw0-port${i}
2859
+ check multinode_nbctl lsp-set-addresses sw0-port${i} "50:54:00:00:00:0${i} 10.0.0.${i} 1000::${i}"
2860
+ done
2857
2861
2858
2862
# Set requested chassis before creating migrator on chassis-3
2859
2863
check multinode_nbctl --wait=hv set Logical_Switch_Port migrator options:requested-chassis=ovn-chassis-1
2860
2864
2861
- m_as ovn-chassis-1 /data/create_fake_vm.sh migrator migrator 50:54:00:00:00:03 1342 10.0.0.3 24 10.0.0.1 1000::3/64 1000::a
2862
- m_as ovn-chassis-3 /data/create_fake_vm.sh migrator migrator 50:54:00:00:00:03 1342 10.0.0.3 24 10.0.0.1 1000::3/64 1000::a
2863
- m_as ovn-chassis-2 /data/create_fake_vm.sh sw0-port2 sw0-port2 50:54:00:00:00:04 1342 10.0.0.4 24 10.0.0.1 1000::4/64 1000::a
2865
+ m_as ovn-chassis-1 /data/create_fake_vm.sh migrator migrator 50:54:00:00:00:09 1342 10.0.0.9 24 10.0.0.10 1000::9/64 1000::a
2866
+ m_as ovn-chassis-3 /data/create_fake_vm.sh migrator migrator 50:54:00:00:00:09 1342 10.0.0.9 24 10.0.0.10 1000::9/64 1000::a
2867
+ for i in 1 2 3; do
2868
+ m_as ovn-chassis-${i} /data/create_fake_vm.sh sw0-port${i} sw0-port${i} 50:54:00:00:00:0${i} 1342 10.0.0.${i} 24 10.0.0.10 1000::${i}/64 1000::a
2869
+ done
2864
2870
2865
2871
m_wait_for_ports_up
2866
2872
2867
2873
M_START_TCPDUMP([ovn-chassis-1], [-neei genev_sys_6081 arp or ip], [ch1_genev])
2868
2874
M_START_TCPDUMP([ovn-chassis-1], [-neei migrator-p arp or ip], [ch1_migrator])
2869
2875
M_START_TCPDUMP([ovn-chassis-2], [-neei genev_sys_6081 arp or ip], [ch2_genev])
2870
- M_START_TCPDUMP([ovn-chassis-2], [-neei sw0-port2-p arp or ip], [ch2_sw0p2])
2876
+ for i in 1 2 3; do
2877
+ M_START_TCPDUMP([ovn-chassis-${i}], [-neei sw0-port${i}-p arp or ip], [ch${i}_sw0-port${i}])
2878
+ done
2871
2879
M_START_TCPDUMP([ovn-chassis-3], [-neei genev_sys_6081 arp or ip], [ch3_genev])
2872
2880
M_START_TCPDUMP([ovn-chassis-3], [-neei migrator-p arp or ip], [ch3_migrator])
2873
2881
2874
2882
AS_BOX([Migration with vifs])
2875
- check_ping migrator ovn-chassis-1 sw0-port2
2876
- check_ping sw0-port2 ovn-chassis-2 migrator
2883
+ for i in 1 2 3; do
2884
+ check_ping migrator ovn-chassis-1 sw0-port${i}
2885
+ check_ping sw0-port${i} ovn-chassis-${i} migrator
2886
+ done
2877
2887
2878
2888
echo "== Starting migration =="
2879
2889
check multinode_nbctl --wait=hv set Logical_Switch_Port migrator options:requested-chassis=ovn-chassis-1,ovn-chassis-3
2880
2890
2881
- check_ping migrator ovn-chassis-1 sw0-port2
2882
- check_ping migrator ovn-chassis-3 sw0-port2
2883
-
2884
- check_ping sw0-port2 ovn-chassis-2 migrator "potential-duplicates"
2891
+ for i in 1 2 3; do
2892
+ check_ping migrator ovn-chassis-1 sw0-port${i}
2893
+ check_ping migrator ovn-chassis-3 sw0-port${i}
2894
+ check_ping sw0-port${i} ovn-chassis-${i} migrator "potential-duplicates"
2895
+ done
2885
2896
2886
2897
echo "== Finalizing migration =="
2887
2898
check multinode_nbctl --wait=hv set Logical_Switch_Port migrator options:requested-chassis=ovn-chassis-3
2888
2899
2889
- check_ping migrator ovn-chassis-3 sw0-port2
2890
- check_ping sw0-port2 ovn-chassis-2 migrator
2900
+ for i in 1 2 3; do
2901
+ check_ping migrator ovn-chassis-1 sw0-port${i} "lost"
2902
+ check_ping migrator ovn-chassis-3 sw0-port${i}
2903
+ check_ping sw0-port${i} ovn-chassis-${i} migrator
2904
+ done
2891
2905
2892
2906
AS_BOX([Migration with container ports])
2893
2907
# Create container ports.
2894
2908
check multinode_nbctl ls-add sw1
2895
2909
check multinode_nbctl lsp-add sw1 mig-cont migrator 10 \
2896
- -- lsp-set-addresses mig-cont "f0:00:00:01:02:03 20.0.0.3"
2897
- check multinode_nbctl lsp-add sw1 cont2 sw0-port2 10 \
2898
- -- lsp-set-addresses cont2 "f0:00:00:01:02:04 20.0.0.4"
2910
+ -- lsp-set-addresses mig-cont "f0:00:00:01:02:09 20.0.0.9"
2911
+ for i in 1 2 3; do
2912
+ check multinode_nbctl lsp-add sw1 cont${i} sw0-port${i} 10 \
2913
+ -- lsp-set-addresses cont${i} "f0:00:00:01:02:0${i} 20.0.0.${i}"
2914
+ done
2899
2915
2900
2916
# Create the interface for lport mig-cont
2901
2917
M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ip link add link migrator name cont type vlan id 10], [0])
2902
- M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ip link set cont address f0:00:00:01:02:03 ], [0])
2918
+ M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ip link set cont address f0:00:00:01:02:09 ], [0])
2903
2919
M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ip link set cont up], [0])
2904
- M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ip addr add 20.0.0.3 /24 dev cont], [0])
2920
+ M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ip addr add 20.0.0.9 /24 dev cont], [0])
2905
2921
2906
2922
M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ip link add link migrator name cont type vlan id 10], [0])
2907
- M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ip link set cont address f0:00:00:01:02:03 ], [0])
2923
+ M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ip link set cont address f0:00:00:01:02:09 ], [0])
2908
2924
M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ip link set cont up], [0])
2909
- M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ip addr add 20.0.0.3/24 dev cont], [0])
2910
-
2911
- # Create the interface for lport sw1-port2
2912
- M_NS_CHECK_EXEC([ovn-chassis-2], [sw0-port2], [ip link add link sw0-port2 name cont2 type vlan id 10], [0])
2913
- M_NS_CHECK_EXEC([ovn-chassis-2], [sw0-port2], [ip link set cont2 address f0:00:00:01:02:04], [0])
2914
- M_NS_CHECK_EXEC([ovn-chassis-2], [sw0-port2], [ip link set cont2 up], [0])
2915
- M_NS_CHECK_EXEC([ovn-chassis-2], [sw0-port2], [ip addr add 20.0.0.4/24 dev cont2], [0])
2925
+ M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ip addr add 20.0.0.9/24 dev cont], [0])
2926
+
2927
+ # Create the cont interface for lport sw0-port1, sw0-port2, sw0-port3
2928
+ for i in 1 2 3; do
2929
+ M_NS_CHECK_EXEC([ovn-chassis-${i}], [sw0-port${i}], [ip link add link sw0-port${i} name cont${i} type vlan id 10], [0])
2930
+ M_NS_CHECK_EXEC([ovn-chassis-${i}], [sw0-port${i}], [ip link set cont${i} address f0:00:00:01:02:0${i}], [0])
2931
+ M_NS_CHECK_EXEC([ovn-chassis-${i}], [sw0-port${i}], [ip link set cont${i} up], [0])
2932
+ M_NS_CHECK_EXEC([ovn-chassis-${i}], [sw0-port${i}], [ip addr add 20.0.0.${i}/24 dev cont${i}], [0])
2933
+ done
2916
2934
2917
- check_ping mig-cont ovn-chassis-3 cont2
2918
- check_ping cont2 ovn-chassis-2 mig-cont
2935
+ for i in 1 2 3; do
2936
+ check_ping mig-cont ovn-chassis-3 cont${i}
2937
+ check_ping cont${i} ovn-chassis-${i} mig-cont
2938
+ check_ping migrator ovn-chassis-3 cont${i}
2939
+ check_ping cont${i} ovn-chassis-${i} migrator
2940
+ done
2919
2941
2920
2942
echo "== Starting migration back =="
2921
2943
check multinode_nbctl --wait=hv set Logical_Switch_Port migrator options:requested-chassis=ovn-chassis-3,ovn-chassis-1
2922
2944
2923
- check_ping mig-cont ovn-chassis-3 cont2
2924
- check_ping mig-cont ovn-chassis-1 cont2
2925
- check_ping cont2 ovn-chassis-2 mig-cont "potential-duplicates"
2945
+ for i in 1 2 3; do
2946
+ check_ping mig-cont ovn-chassis-3 cont${i}
2947
+ check_ping mig-cont ovn-chassis-1 cont${i}
2948
+ check_ping cont${i} ovn-chassis-${i} mig-cont "potential-duplicates"
2949
+ check_ping migrator ovn-chassis-3 cont${i}
2950
+ check_ping migrator ovn-chassis-1 cont${i}
2951
+ check_ping cont${i} ovn-chassis-${i} migrator "potential-duplicates"
2952
+ done
2926
2953
2927
2954
echo "== Finalizing migration =="
2928
2955
check multinode_nbctl --wait=hv set Logical_Switch_Port migrator options:requested-chassis=ovn-chassis-1
2929
2956
2930
- check_ping mig-cont ovn-chassis-3 cont2 "lost"
2931
- check_ping mig-cont ovn-chassis-1 cont2
2932
- check_ping cont2 ovn-chassis-2 mig-cont
2957
+ for i in 1 2 3; do
2958
+ check_ping mig-cont ovn-chassis-3 cont${i} "lost"
2959
+ check_ping mig-cont ovn-chassis-1 cont${i}
2960
+ check_ping cont${i} ovn-chassis-${i} mig-cont
2961
+ check_ping migrator ovn-chassis-3 cont${i} "lost"
2962
+ check_ping migrator ovn-chassis-1 cont${i}
2963
+ check_ping cont${i} ovn-chassis-${i} migrator
2964
+ done
2933
2965
2934
2966
echo "== Starting another migration, this time before starting dst VM =="
2935
2967
# Unbind migrator from chassis-3
@@ -2939,18 +2971,76 @@ check multinode_nbctl --wait=hv set Logical_Switch_Port migrator options:request
2939
2971
sleep 1
2940
2972
m_as ovn-chassis-3 ovs-vsctl -- set Interface migrator-p external_ids:iface-id=migrator
2941
2973
2942
-
2943
- check_ping mig-cont ovn-chassis-3 cont2
2944
- check_ping mig-cont ovn-chassis-1 cont2
2945
- check_ping cont2 ovn-chassis-2 mig-cont "potential-duplicates"
2946
-
2974
+ for i in 1 2 3; do
2975
+ check_ping mig-cont ovn-chassis-3 cont${i}
2976
+ check_ping mig-cont ovn-chassis-1 cont${i}
2977
+ check_ping cont${i} ovn-chassis-${i} mig-cont "potential-duplicates"
2978
+ check_ping migrator ovn-chassis-3 cont${i}
2979
+ check_ping migrator ovn-chassis-1 cont${i}
2980
+ check_ping cont${i} ovn-chassis-${i} migrator "potential-duplicates"
2981
+ done
2947
2982
2948
2983
echo "== Finalizing migration =="
2949
2984
check multinode_nbctl --wait=hv set Logical_Switch_Port migrator options:requested-chassis=ovn-chassis-3
2950
2985
2951
- check_ping mig-cont ovn-chassis-1 cont2 "lost"
2952
- check_ping mig-cont ovn-chassis-3 cont2
2953
- check_ping cont2 ovn-chassis-2 mig-cont
2986
+ for i in 1 2 3; do
2987
+ check_ping mig-cont ovn-chassis-1 cont${i} "lost"
2988
+ check_ping mig-cont ovn-chassis-3 cont${i}
2989
+ check_ping cont${i} ovn-chassis-${i} mig-cont
2990
+ check_ping migrator ovn-chassis-1 cont${i} "lost"
2991
+ check_ping migrator ovn-chassis-3 cont${i}
2992
+ check_ping cont${i} ovn-chassis-${i} migrator
2993
+ done
2994
+
2995
+ # Remove iface-id from src after migration is completed
2996
+ m_as ovn-chassis-1 ovs-vsctl -- remove Interface migrator-p external_ids iface-id
2997
+ check multinode_nbctl --wait=sb sync
2998
+
2999
+ for i in 1 2 3; do
3000
+ check_ping migrator ovn-chassis-1 sw0-port${i} "lost"
3001
+ check_ping mig-cont ovn-chassis-1 cont${i} "lost"
3002
+ check_ping migrator ovn-chassis-1 cont${i} "lost"
3003
+ check_ping migrator ovn-chassis-3 sw0-port${i}
3004
+ check_ping mig-cont ovn-chassis-3 cont${i}
3005
+ check_ping migrator ovn-chassis-3 cont${i}
3006
+ check_ping sw0-port${i} ovn-chassis-${i} migrator
3007
+ check_ping cont${i} ovn-chassis-${i} mig-cont
3008
+ check_ping cont${i} ovn-chassis-${i} migrator
3009
+ done
3010
+
3011
+ # Finally, remove interface from src after migration is completed
3012
+ m_as ovn-chassis-1 ovs-vsctl -- del-port migrator-p
3013
+ for i in 1 2 3; do
3014
+ check_ping migrator ovn-chassis-1 sw0-port${i} "lost"
3015
+ check_ping mig-cont ovn-chassis-1 cont${i} "lost"
3016
+ check_ping migrator ovn-chassis-1 cont${i} "lost"
3017
+ check_ping migrator ovn-chassis-3 sw0-port${i}
3018
+ check_ping mig-cont ovn-chassis-3 cont${i}
3019
+ check_ping migrator ovn-chassis-3 cont${i}
3020
+ check_ping sw0-port${i} ovn-chassis-${i} migrator
3021
+ check_ping cont${i} ovn-chassis-${i} mig-cont
3022
+ check_ping cont${i} ovn-chassis-${i} migrator
3023
+ done
3024
+
3025
+ # Also do some recomputes ...
3026
+ AS_BOX([Recompute after removing interface])
3027
+ for i in 1 2 3; do
3028
+ m_as ovn-chassis-${i} ovn-appctl -t ovn-controller recompute
3029
+ done
3030
+
3031
+ check multinode_nbctl --wait=sb sync
3032
+
3033
+ for i in 1 2 3; do
3034
+ check_ping migrator ovn-chassis-1 sw0-port${i} "lost"
3035
+ check_ping mig-cont ovn-chassis-1 cont${i} "lost"
3036
+ check_ping migrator ovn-chassis-1 cont${i} "lost"
3037
+ check_ping migrator ovn-chassis-3 sw0-port${i}
3038
+ check_ping mig-cont ovn-chassis-3 cont${i}
3039
+ check_ping migrator ovn-chassis-3 cont${i}
3040
+ check_ping sw0-port${i} ovn-chassis-${i} migrator
3041
+ check_ping cont${i} ovn-chassis-${i} mig-cont
3042
+ check_ping cont${i} ovn-chassis-${i} migrator
3043
+ done
2954
3044
2955
3045
m_as ovn-chassis-1 killall tcpdump
2956
3046
m_as ovn-chassis-2 killall tcpdump
0 commit comments