2 Documentation Test Suite for vni-based-l2-l3-nat:
3 ... This feature attempts to realize the use of VxLAN VNI
4 ... (Virtual Network Identifier) for VxLAN tenant traffic
5 ... flowing on the cloud data-network. This is applicable
6 ... to L2 switching, L3 forwarding and NATing for all VxLAN
7 ... based provider networks. In doing so, it eliminates the
8 ... presence of LPort tags, ELAN tags and MPLS labels on the
9 ... wire and instead, replaces them with VNIs supplied by the
10 ... tenant’s OpenStack.
12 Library OperatingSystem
13 Library RequestsLibrary
15 Resource ../../../libraries/DevstackUtils.robot
16 Resource ../../../libraries/KarafKeywords.robot
17 Resource ../../../variables/netvirt/Variables.robot
18 Resource ../../../libraries/OpenStackOperations.robot
19 Resource ../../../libraries/OVSDB.robot
20 Resource ../../../libraries/SetupUtils.robot
21 Resource ../../../libraries/Utils.robot
22 Resource ../../../libraries/VpnOperations.robot
23 Resource ../../../variables/netvirt/Variables.robot
24 Resource ../../../variables/Variables.robot
26 Suite Setup Suite Setup
27 Suite Teardown Suite Teardown
28 Test Setup VpnOperations.VNI Test Setup
29 Test Teardown VpnOperations.VNI Test Teardown
36 ${VNI_SECURITY_GROUP} vni_sg
51 @{VNI_SUBNET_CIDRS} 61.1.1.0/24 62.1.1.0/24 63.1.1.0/24 64.1.1.0/24 65.1.1.0/24 66.1.1.0/24
52 @{VNI_NET_0_PORTS} vni_l3_net_0_port_1 vni_l3_net_0_port_2
53 @{VNI_NET_1_PORTS} vni_l3_net_1_port_1 vni_l3_net_1_port_2
54 @{VNI_NET_2_PORTS} vni_l3_net_2_port_1 vni_l3_net_2_port_2
55 @{VNI_NET_3_PORTS} vni_l3_net_3_port_1 vni_l3_net_3_port_2
56 @{VNI_NET_4_PORTS} vni_l3_net_4_port_1 vni_l3_net_4_port_2
57 @{VNI_NET_5_PORTS} vni_l3_net_5_port_1 vni_l3_net_5_port_2
58 @{VNI_NET_0_VMS} vni_l3_net_0_vm
59 @{VNI_NET_1_VMS} vni_l3_net_1_vm
60 @{VNI_NET_2_VMS} vni_l3_net_2_vm
61 @{VNI_NET_3_VMS} vni_l3_net_3_vm
62 @{VNI_NET_4_VMS} vni_l3_net_4_vm
63 @{VNI_NET_5_VMS} vni_l3_net_5_vm
64 @{VNI_ROUTER} vni_l3_router1 vni_l3_router2
65 @{VNI_BGPVPN} vni_l3_bgpvpn
66 @{VNI_RDS} ["2200:2"] ["2300:2"] ["2400:2"] ["2500:2"]
67 @{VNI_VPN_NAMES} vni_l3_vpn_1 vni_l3_vpn_2 vni_l3_vpn_3 vni_l3_vpn_4
68 @{VNI_VPN_INSTANCE_IDS}
69 ... 4ae8cd92-48ca-49b5-94e1-b2921a261441
70 ... 4ae8cd92-48ca-49b5-94e1-b2921a261442
71 ... 4ae8cd92-48ca-49b5-94e1-b2921a261443
72 ... 4ae8cd92-48ca-49b5-94e1-b2921a261444
76 VNI Based L3 Forwarding
77 [Documentation] verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
78 BuiltIn.Pass Execution If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" "Test is not supported for combo node"
79 Wait Until Keyword Succeeds
82 ... OVSDB.Verify Vni Segmentation Id and Tunnel Id
83 ... ${VNI_NET_0_PORTS}[0]
84 ... ${VNI_NET_1_PORTS}[0]
85 ... ${VNI_NETWORKS}[0]
86 ... ${VNI_NETWORKS}[1]
87 ... ${NET_0_VM_IPS}[0]
88 ... ${NET_1_VM_IPS}[0]
91 VNI Based L3 Forwarding With BGPVPN Router Association
92 [Documentation] verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
93 ... With Router associated to a BGPVPN.
94 BuiltIn.Pass Execution If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" "Test is not supported for combo node"
95 ${net_id} = OpenStackOperations.Get Net Id ${VNI_NETWORKS}[0]
96 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
97 VpnOperations.VPN Create L3VPN
98 ... vpnid=${VNI_VPN_INSTANCE_IDS}[0]
99 ... name=${VNI_VPN_NAMES}[0]
101 ... exportrt=${VNI_RDS}[0]
102 ... importrt=${VNI_RDS}[0]
103 ... tenantid=${tenant_id}
104 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[0]
105 BuiltIn.Should Contain ${resp} ${VNI_VPN_INSTANCE_IDS}[0]
106 ${router_id} = OpenStackOperations.Get Router Id ${VNI_ROUTER}[0]
107 VpnOperations.Associate VPN to Router routerid=${router_id} vpnid=${VNI_VPN_INSTANCE_IDS}[0]
108 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[0]
109 BuiltIn.Should Contain ${resp} ${router_id}
110 BuiltIn.Wait Until Keyword Succeeds
113 ... OVSDB.Verify Vni Segmentation Id and Tunnel Id
114 ... ${VNI_NET_0_PORTS}[0]
115 ... ${VNI_NET_1_PORTS}[0]
116 ... ${VNI_NETWORKS}[0]
117 ... ${VNI_NETWORKS}[1]
118 ... ${NET_0_VM_IPS}[0]
119 ... ${NET_1_VM_IPS}[0]
122 VNI Based L3 Forwarding With BGPVPN Network Association
123 [Documentation] verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
124 ... With Networks associated to a BGPVPN.
125 BuiltIn.Pass Execution If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" "Test is not supported for combo node"
126 OpenStackOperations.Create Network ${VNI_NETWORKS}[2]
127 OpenStackOperations.Create Network ${VNI_NETWORKS}[3]
128 OpenStackOperations.Create SubNet ${VNI_NETWORKS}[2] ${VNI_SUBNETS}[2] ${VNI_SUBNET_CIDRS}[2]
129 OpenStackOperations.Create SubNet ${VNI_NETWORKS}[3] ${VNI_SUBNETS}[3] ${VNI_SUBNET_CIDRS}[3]
130 OpenStackOperations.Create Port ${VNI_NETWORKS}[2] ${VNI_NET_2_PORTS}[0] sg=${VNI_SECURITY_GROUP}
131 OpenStackOperations.Create Port ${VNI_NETWORKS}[3] ${VNI_NET_3_PORTS}[0] sg=${VNI_SECURITY_GROUP}
132 ${net_id} = OpenStackOperations.Get Net Id ${VNI_NETWORKS}[2]
133 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
134 BuiltIn.Log ${VNI_RDS}[1]
135 VpnOperations.VPN Create L3VPN
136 ... vpnid=${VNI_VPN_INSTANCE_IDS}[1]
137 ... name=${VNI_VPN_NAMES}[1]
139 ... exportrt=${VNI_RDS}[1]
140 ... importrt=${VNI_RDS}[1]
141 ... tenantid=${tenant_id}
142 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[1]
143 BuiltIn.Should Contain ${resp} ${VNI_VPN_INSTANCE_IDS}[1]
144 ${network2_id} = OpenStackOperations.Get Net Id ${VNI_NETWORKS}[2]
145 ${network3_id} = OpenStackOperations.Get Net Id ${VNI_NETWORKS}[3]
146 VpnOperations.Associate L3VPN To Network networkid=${network2_id} vpnid=${VNI_VPN_INSTANCE_IDS}[1]
147 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[1]
148 BuiltIn.Should Contain ${resp} ${network2_id}
149 VpnOperations.Associate L3VPN To Network networkid=${network3_id} vpnid=${VNI_VPN_INSTANCE_IDS}[1]
150 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[1]
151 BuiltIn.Should Contain ${resp} ${network3_id}
152 OpenStackOperations.Create Vm Instance With Port On Compute Node
153 ... ${VNI_NET_2_PORTS}[0]
154 ... ${VNI_NET_2_VMS}[0]
155 ... ${OS_CMP1_HOSTNAME}
156 ... sg=${VNI_SECURITY_GROUP}
157 OpenStackOperations.Create Vm Instance With Port On Compute Node
158 ... ${VNI_NET_3_PORTS}[0]
159 ... ${VNI_NET_3_VMS}[0]
160 ... ${OS_CMP2_HOSTNAME}
161 ... sg=${VNI_SECURITY_GROUP}
162 @{NET_2_VM_IPS} ${NET_2_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_2_VMS}
163 @{NET_3_VM_IPS} ${NET_3_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_3_VMS}
164 BuiltIn.Set Suite Variable @{NET_2_VM_IPS}
165 BuiltIn.Set Suite Variable @{NET_3_VM_IPS}
166 BuiltIn.Should Not Contain ${NET_2_VM_IPS} None
167 BuiltIn.Should Not Contain ${NET_3_VM_IPS} None
168 BuiltIn.Should Not Contain ${NET_2_DHCP_IP} None
169 BuiltIn.Should Not Contain ${NET_3_DHCP_IP} None
170 BuiltIn.Wait Until Keyword Succeeds
173 ... OVSDB.Verify Vni Segmentation Id and Tunnel Id
174 ... ${VNI_NET_2_PORTS}[0]
175 ... ${VNI_NET_3_PORTS}[0]
176 ... ${VNI_NETWORKS}[2]
177 ... ${VNI_NETWORKS}[3]
178 ... ${NET_2_VM_IPS}[0]
179 ... ${NET_3_VM_IPS}[0]
182 VNI Based L3 Forwarding With BGPVPN With Irt Ert
183 [Documentation] verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
184 ... With two Networks associated to two BGPVPN.
185 BuiltIn.Pass Execution If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" "Test is not supported for combo node"
186 OpenStackOperations.Create Network ${VNI_NETWORKS}[4]
187 OpenStackOperations.Create Network ${VNI_NETWORKS}[5]
188 OpenStackOperations.Create SubNet ${VNI_NETWORKS}[4] ${VNI_SUBNETS}[4] ${VNI_SUBNET_CIDRS}[4]
189 OpenStackOperations.Create SubNet ${VNI_NETWORKS}[5] ${VNI_SUBNETS}[5] ${VNI_SUBNET_CIDRS}[5]
190 OpenStackOperations.Create Port ${VNI_NETWORKS}[4] ${VNI_NET_4_PORTS}[0] sg=${VNI_SECURITY_GROUP}
191 OpenStackOperations.Create Port ${VNI_NETWORKS}[5] ${VNI_NET_5_PORTS}[0] sg=${VNI_SECURITY_GROUP}
192 ${net_id} = OpenStackOperations.Get Net Id ${VNI_NETWORKS}[4]
193 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
194 BuiltIn.Log ${VNI_RDS}[2]
195 VpnOperations.VPN Create L3VPN
196 ... vpnid=${VNI_VPN_INSTANCE_IDS}[2]
197 ... name=${VNI_VPN_NAMES}[2]
199 ... exportrt=${VNI_RDS}[2]
200 ... importrt=${VNI_RDS}[3]
201 ... tenantid=${tenant_id}
202 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[2]
203 BuiltIn.Should Contain ${resp} ${VNI_VPN_INSTANCE_IDS}[2]
204 ${network4_id} = OpenStackOperations.Get Net Id ${VNI_NETWORKS}[4]
205 VpnOperations.Associate L3VPN To Network networkid=${network4_id} vpnid=${VNI_VPN_INSTANCE_IDS}[2]
206 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[2]
207 BuiltIn.Should Contain ${resp} ${network4_id}
208 BuiltIn.Log ${VNI_RDS}[3]
209 VpnOperations.VPN Create L3VPN
210 ... vpnid=${VNI_VPN_INSTANCE_IDS}[3]
211 ... name=${VNI_VPN_NAMES}[3]
213 ... exportrt=${VNI_RDS}[3]
214 ... importrt=${VNI_RDS}[2]
215 ... tenantid=${tenant_id}
216 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[3]
217 BuiltIn.Should Contain ${resp} ${VNI_VPN_INSTANCE_IDS}[3]
218 ${network5_id} = OpenStackOperations.Get Net Id ${VNI_NETWORKS}[5]
219 VpnOperations.Associate L3VPN To Network networkid=${network5_id} vpnid=${VNI_VPN_INSTANCE_IDS}[3]
220 ${resp} = VpnOperations.VPN Get L3VPN vpnid=${VNI_VPN_INSTANCE_IDS}[3]
221 BuiltIn.Should Contain ${resp} ${network5_id}
222 OpenStackOperations.Create Vm Instance With Port On Compute Node
223 ... ${VNI_NET_4_PORTS}[0]
224 ... ${VNI_NET_4_VMS}[0]
225 ... ${OS_CMP1_HOSTNAME}
226 ... sg=${VNI_SECURITY_GROUP}
227 OpenStackOperations.Create Vm Instance With Port On Compute Node
228 ... ${VNI_NET_5_PORTS}[0]
229 ... ${VNI_NET_5_VMS}[0]
230 ... ${OS_CMP2_HOSTNAME}
231 ... sg=${VNI_SECURITY_GROUP}
232 @{NET_4_VM_IPS} ${NET_4_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_4_VMS}
233 @{NET_5_VM_IPS} ${NET_5_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_5_VMS}
234 BuiltIn.Set Suite Variable @{NET_4_VM_IPS}
235 BuiltIn.Set Suite Variable @{NET_5_VM_IPS}
236 BuiltIn.Should Not Contain ${NET_4_VM_IPS} None
237 BuiltIn.Should Not Contain ${NET_5_VM_IPS} None
238 BuiltIn.Should Not Contain ${NET_4_DHCP_IP} None
239 BuiltIn.Should Not Contain ${NET_5_DHCP_IP} None
240 BuiltIn.Wait Until Keyword Succeeds
243 ... OVSDB.Verify Vni Segmentation Id and Tunnel Id
244 ... ${VNI_NET_4_PORTS}[0]
245 ... ${VNI_NET_5_PORTS}[0]
246 ... ${VNI_NETWORKS}[4]
247 ... ${VNI_NETWORKS}[5]
248 ... ${NET_4_VM_IPS}[0]
249 ... ${NET_5_VM_IPS}[0]
255 [Documentation] Create Basic setup for the feature. Creates single network, subnet, two ports and two VMs.
256 ... Create Two VMs for TC1 : (VM1, N1, Compute1) and (VM2, N2, Compute2) and R1
257 IF "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" RETURN
258 VpnOperations.Basic Suite Setup
259 OpenStackOperations.Create Allow All SecurityGroup ${VNI_SECURITY_GROUP}
260 OpenStackOperations.Create Network ${VNI_NETWORKS}[0]
261 OpenStackOperations.Create Network ${VNI_NETWORKS}[1]
262 OpenStackOperations.Create SubNet ${VNI_NETWORKS}[0] ${VNI_SUBNETS}[0] ${VNI_SUBNET_CIDRS}[0]
263 OpenStackOperations.Create SubNet ${VNI_NETWORKS}[1] ${VNI_SUBNETS}[1] ${VNI_SUBNET_CIDRS}[1]
264 OpenStackOperations.Create Port ${VNI_NETWORKS}[0] ${VNI_NET_0_PORTS}[0] sg=${VNI_SECURITY_GROUP}
265 OpenStackOperations.Create Port ${VNI_NETWORKS}[1] ${VNI_NET_1_PORTS}[0] sg=${VNI_SECURITY_GROUP}
266 OpenStackOperations.Create Router ${VNI_ROUTER}[0]
267 OpenStackOperations.Add Router Interface ${VNI_ROUTER}[0] ${VNI_SUBNETS}[0]
268 OpenStackOperations.Add Router Interface ${VNI_ROUTER}[0] ${VNI_SUBNETS}[1]
269 ${interface_output} = OpenStackOperations.Show Router Interface ${VNI_ROUTER}[0]
270 ${GWMAC_ADDRS} ${GWIP_ADDRS} = VpnOperations.Get Gateway MAC And IP Address ${VNI_ROUTER}[0]
271 BuiltIn.Set Suite Variable ${GWMAC_ADDRS}
272 BuiltIn.Set Suite Variable ${GWIP_ADDRS}
273 ${router_list} = BuiltIn.Create List ${VNI_ROUTER}[0]
274 OpenStackOperations.Create Vm Instance With Port On Compute Node
275 ... ${VNI_NET_0_PORTS}[0]
276 ... ${VNI_NET_0_VMS}[0]
277 ... ${OS_CMP1_HOSTNAME}
278 ... sg=${VNI_SECURITY_GROUP}
279 OpenStackOperations.Create Vm Instance With Port On Compute Node
280 ... ${VNI_NET_1_PORTS}[0]
281 ... ${VNI_NET_1_VMS}[0]
282 ... ${OS_CMP2_HOSTNAME}
283 ... sg=${VNI_SECURITY_GROUP}
284 @{NET_0_VM_IPS} ${NET_0_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_0_VMS}
285 @{NET_1_VM_IPS} ${NET_1_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_1_VMS}
286 BuiltIn.Set Suite Variable @{NET_0_VM_IPS}
287 BuiltIn.Set Suite Variable @{NET_1_VM_IPS}
288 BuiltIn.Should Not Contain ${NET_0_VM_IPS} None
289 BuiltIn.Should Not Contain ${NET_1_VM_IPS} None
290 BuiltIn.Should Not Contain ${NET_0_DHCP_IP} None
291 BuiltIn.Should Not Contain ${NET_1_DHCP_IP} None
292 OpenStackOperations.Show Debugs @{VNI_NET_0_VMS} @{VNI_NET_1_VMS}
293 OpenStackOperations.Get Suite Debugs
296 IF "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" RETURN
297 OpenStackOperations.OpenStack Suite Teardown