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.
11 Suite Setup Suite Setup
12 Suite Teardown Suite Teardown
13 Test Setup VpnOperations.VNI Test Setup
14 Test Teardown VpnOperations.VNI Test Teardown
15 Library OperatingSystem
16 Library RequestsLibrary
18 Resource ../../../libraries/DevstackUtils.robot
19 Resource ../../../libraries/KarafKeywords.robot
20 Resource ../../../variables/netvirt/Variables.robot
21 Resource ../../../libraries/OpenStackOperations.robot
22 Resource ../../../libraries/OVSDB.robot
23 Resource ../../../libraries/SetupUtils.robot
24 Resource ../../../libraries/Utils.robot
25 Resource ../../../libraries/VpnOperations.robot
26 Resource ../../../variables/netvirt/Variables.robot
27 Resource ../../../variables/Variables.robot
33 ${VNI_SECURITY_GROUP} vni_sg
34 @{VNI_NETWORKS} vni_l3_net_0 vni_l3_net_1 vni_l3_net_2 vni_l3_net_3 vni_l3_net_4 vni_l3_net_5
35 @{VNI_SUBNETS} vni_l3_sub_0 vni_l3_sub_1 vni_l3_sub_2 vni_l3_sub_3 vni_l3_sub_4 vni_l3_sub_5
36 @{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
37 @{VNI_NET_0_PORTS} vni_l3_net_0_port_1 vni_l3_net_0_port_2
38 @{VNI_NET_1_PORTS} vni_l3_net_1_port_1 vni_l3_net_1_port_2
39 @{VNI_NET_2_PORTS} vni_l3_net_2_port_1 vni_l3_net_2_port_2
40 @{VNI_NET_3_PORTS} vni_l3_net_3_port_1 vni_l3_net_3_port_2
41 @{VNI_NET_4_PORTS} vni_l3_net_4_port_1 vni_l3_net_4_port_2
42 @{VNI_NET_5_PORTS} vni_l3_net_5_port_1 vni_l3_net_5_port_2
43 @{VNI_NET_0_VMS} vni_l3_net_0_vm
44 @{VNI_NET_1_VMS} vni_l3_net_1_vm
45 @{VNI_NET_2_VMS} vni_l3_net_2_vm
46 @{VNI_NET_3_VMS} vni_l3_net_3_vm
47 @{VNI_NET_4_VMS} vni_l3_net_4_vm
48 @{VNI_NET_5_VMS} vni_l3_net_5_vm
49 @{VNI_ROUTER} vni_l3_router1 vni_l3_router2
50 @{VNI_BGPVPN} vni_l3_bgpvpn
51 @{VNI_RDS} ["2200:2"] ["2300:2"] ["2400:2"] ["2500:2"]
52 @{VNI_VPN_NAMES} vni_l3_vpn_1 vni_l3_vpn_2 vni_l3_vpn_3 vni_l3_vpn_4
53 @{VNI_VPN_INSTANCE_IDS} 4ae8cd92-48ca-49b5-94e1-b2921a261441 4ae8cd92-48ca-49b5-94e1-b2921a261442 4ae8cd92-48ca-49b5-94e1-b2921a261443 4ae8cd92-48ca-49b5-94e1-b2921a261444
56 VNI Based L3 Forwarding
57 [Documentation] verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
58 BuiltIn.Pass Execution If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" "Test is not supported for combo node"
59 Wait Until Keyword Succeeds 60s 5s OVSDB.Verify Vni Segmentation Id and Tunnel Id @{VNI_NET_0_PORTS}[0] @{VNI_NET_1_PORTS}[0] @{VNI_NETWORKS}[0]
60 ... @{VNI_NETWORKS}[1] @{NET_0_VM_IPS}[0] @{NET_1_VM_IPS}[0] ${IP}
62 VNI Based L3 Forwarding With BGPVPN Router Association
63 [Documentation] verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
64 ... With Router associated to a BGPVPN.
65 BuiltIn.Pass Execution If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" "Test is not supported for combo node"
66 ${net_id} = OpenStackOperations.Get Net Id @{VNI_NETWORKS}[0]
67 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
68 VpnOperations.VPN Create L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[0] name=@{VNI_VPN_NAMES}[0] rd=@{VNI_RDS}[0] exportrt=@{VNI_RDS}[0] importrt=@{VNI_RDS}[0] tenantid=${tenant_id}
69 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[0]
70 BuiltIn.Should Contain ${resp} @{VNI_VPN_INSTANCE_IDS}[0]
71 ${router_id} = OpenStackOperations.Get Router Id @{VNI_ROUTER}[0]
72 VpnOperations.Associate VPN to Router routerid=${router_id} vpnid=@{VNI_VPN_INSTANCE_IDS}[0]
73 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[0]
74 BuiltIn.Should Contain ${resp} ${router_id}
75 BuiltIn.Wait Until Keyword Succeeds 60s 5s OVSDB.Verify Vni Segmentation Id and Tunnel Id @{VNI_NET_0_PORTS}[0] @{VNI_NET_1_PORTS}[0] @{VNI_NETWORKS}[0]
76 ... @{VNI_NETWORKS}[1] @{NET_0_VM_IPS}[0] @{NET_1_VM_IPS}[0] ${IP}
78 VNI Based L3 Forwarding With BGPVPN Network Association
79 [Documentation] verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
80 ... With Networks associated to a BGPVPN.
81 BuiltIn.Pass Execution If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" "Test is not supported for combo node"
82 OpenStackOperations.Create Network @{VNI_NETWORKS}[2]
83 OpenStackOperations.Create Network @{VNI_NETWORKS}[3]
84 OpenStackOperations.Create SubNet @{VNI_NETWORKS}[2] @{VNI_SUBNETS}[2] @{VNI_SUBNET_CIDRS}[2]
85 OpenStackOperations.Create SubNet @{VNI_NETWORKS}[3] @{VNI_SUBNETS}[3] @{VNI_SUBNET_CIDRS}[3]
86 OpenStackOperations.Create Port @{VNI_NETWORKS}[2] @{VNI_NET_2_PORTS}[0] sg=${VNI_SECURITY_GROUP}
87 OpenStackOperations.Create Port @{VNI_NETWORKS}[3] @{VNI_NET_3_PORTS}[0] sg=${VNI_SECURITY_GROUP}
88 ${net_id} = OpenStackOperations.Get Net Id @{VNI_NETWORKS}[2]
89 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
90 BuiltIn.Log @{VNI_RDS}[1]
91 VpnOperations.VPN Create L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[1] name=@{VNI_VPN_NAMES}[1] rd=@{VNI_RDS}[1] exportrt=@{VNI_RDS}[1] importrt=@{VNI_RDS}[1] tenantid=${tenant_id}
92 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
93 BuiltIn.Should Contain ${resp} @{VNI_VPN_INSTANCE_IDS}[1]
94 ${network2_id} = OpenStackOperations.Get Net Id @{VNI_NETWORKS}[2]
95 ${network3_id} = OpenStackOperations.Get Net Id @{VNI_NETWORKS}[3]
96 VpnOperations.Associate L3VPN To Network networkid=${network2_id} vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
97 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
98 BuiltIn.Should Contain ${resp} ${network2_id}
99 VpnOperations.Associate L3VPN To Network networkid=${network3_id} vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
100 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[1]
101 BuiltIn.Should Contain ${resp} ${network3_id}
102 OpenStackOperations.Create Vm Instance With Port On Compute Node @{VNI_NET_2_PORTS}[0] @{VNI_NET_2_VMS}[0] ${OS_CMP1_HOSTNAME} sg=${VNI_SECURITY_GROUP}
103 OpenStackOperations.Create Vm Instance With Port On Compute Node @{VNI_NET_3_PORTS}[0] @{VNI_NET_3_VMS}[0] ${OS_CMP2_HOSTNAME} sg=${VNI_SECURITY_GROUP}
104 @{NET_2_VM_IPS} ${NET_2_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_2_VMS}
105 @{NET_3_VM_IPS} ${NET_3_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_3_VMS}
106 BuiltIn.Set Suite Variable @{NET_2_VM_IPS}
107 BuiltIn.Set Suite Variable @{NET_3_VM_IPS}
108 BuiltIn.Should Not Contain ${NET_2_VM_IPS} None
109 BuiltIn.Should Not Contain ${NET_3_VM_IPS} None
110 BuiltIn.Should Not Contain ${NET_2_DHCP_IP} None
111 BuiltIn.Should Not Contain ${NET_3_DHCP_IP} None
112 BuiltIn.Wait Until Keyword Succeeds 60s 5s OVSDB.Verify Vni Segmentation Id and Tunnel Id @{VNI_NET_2_PORTS}[0] @{VNI_NET_3_PORTS}[0] @{VNI_NETWORKS}[2]
113 ... @{VNI_NETWORKS}[3] @{NET_2_VM_IPS}[0] @{NET_3_VM_IPS}[0] ${IP}
115 VNI Based L3 Forwarding With BGPVPN With Irt Ert
116 [Documentation] verify VNI id for L3 Unicast frames exchanged over OVS datapaths that are on different hypervisors
117 ... With two Networks associated to two BGPVPN.
118 BuiltIn.Pass Execution If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp" "Test is not supported for combo node"
119 OpenStackOperations.Create Network @{VNI_NETWORKS}[4]
120 OpenStackOperations.Create Network @{VNI_NETWORKS}[5]
121 OpenStackOperations.Create SubNet @{VNI_NETWORKS}[4] @{VNI_SUBNETS}[4] @{VNI_SUBNET_CIDRS}[4]
122 OpenStackOperations.Create SubNet @{VNI_NETWORKS}[5] @{VNI_SUBNETS}[5] @{VNI_SUBNET_CIDRS}[5]
123 OpenStackOperations.Create Port @{VNI_NETWORKS}[4] @{VNI_NET_4_PORTS}[0] sg=${VNI_SECURITY_GROUP}
124 OpenStackOperations.Create Port @{VNI_NETWORKS}[5] @{VNI_NET_5_PORTS}[0] sg=${VNI_SECURITY_GROUP}
125 ${net_id} = OpenStackOperations.Get Net Id @{VNI_NETWORKS}[4]
126 ${tenant_id} = OpenStackOperations.Get Tenant ID From Network ${net_id}
127 BuiltIn.Log @{VNI_RDS}[2]
128 VpnOperations.VPN Create L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[2] name=@{VNI_VPN_NAMES}[2] rd=@{VNI_RDS}[2] exportrt=@{VNI_RDS}[2] importrt=@{VNI_RDS}[3] tenantid=${tenant_id}
129 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[2]
130 BuiltIn.Should Contain ${resp} @{VNI_VPN_INSTANCE_IDS}[2]
131 ${network4_id} = OpenStackOperations.Get Net Id @{VNI_NETWORKS}[4]
132 VpnOperations.Associate L3VPN To Network networkid=${network4_id} vpnid=@{VNI_VPN_INSTANCE_IDS}[2]
133 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[2]
134 BuiltIn.Should Contain ${resp} ${network4_id}
135 BuiltIn.Log @{VNI_RDS}[3]
136 VpnOperations.VPN Create L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[3] name=@{VNI_VPN_NAMES}[3] rd=@{VNI_RDS}[3] exportrt=@{VNI_RDS}[3] importrt=@{VNI_RDS}[2] tenantid=${tenant_id}
137 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[3]
138 BuiltIn.Should Contain ${resp} @{VNI_VPN_INSTANCE_IDS}[3]
139 ${network5_id} = OpenStackOperations.Get Net Id @{VNI_NETWORKS}[5]
140 VpnOperations.Associate L3VPN To Network networkid=${network5_id} vpnid=@{VNI_VPN_INSTANCE_IDS}[3]
141 ${resp} = VpnOperations.VPN Get L3VPN vpnid=@{VNI_VPN_INSTANCE_IDS}[3]
142 BuiltIn.Should Contain ${resp} ${network5_id}
143 OpenStackOperations.Create Vm Instance With Port On Compute Node @{VNI_NET_4_PORTS}[0] @{VNI_NET_4_VMS}[0] ${OS_CMP1_HOSTNAME} sg=${VNI_SECURITY_GROUP}
144 OpenStackOperations.Create Vm Instance With Port On Compute Node @{VNI_NET_5_PORTS}[0] @{VNI_NET_5_VMS}[0] ${OS_CMP2_HOSTNAME} sg=${VNI_SECURITY_GROUP}
145 @{NET_4_VM_IPS} ${NET_4_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_4_VMS}
146 @{NET_5_VM_IPS} ${NET_5_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_5_VMS}
147 BuiltIn.Set Suite Variable @{NET_4_VM_IPS}
148 BuiltIn.Set Suite Variable @{NET_5_VM_IPS}
149 BuiltIn.Should Not Contain ${NET_4_VM_IPS} None
150 BuiltIn.Should Not Contain ${NET_5_VM_IPS} None
151 BuiltIn.Should Not Contain ${NET_4_DHCP_IP} None
152 BuiltIn.Should Not Contain ${NET_5_DHCP_IP} None
153 BuiltIn.Wait Until Keyword Succeeds 60s 5s OVSDB.Verify Vni Segmentation Id and Tunnel Id @{VNI_NET_4_PORTS}[0] @{VNI_NET_5_PORTS}[0] @{VNI_NETWORKS}[4]
154 ... @{VNI_NETWORKS}[5] @{NET_4_VM_IPS}[0] @{NET_5_VM_IPS}[0] ${IP}
158 [Documentation] Create Basic setup for the feature. Creates single network, subnet, two ports and two VMs.
159 ... Create Two VMs for TC1 : (VM1, N1, Compute1) and (VM2, N2, Compute2) and R1
160 BuiltIn.Return From Keyword If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"
161 VpnOperations.Basic Suite Setup
162 OpenStackOperations.Create Allow All SecurityGroup ${VNI_SECURITY_GROUP}
163 OpenStackOperations.Create Network @{VNI_NETWORKS}[0]
164 OpenStackOperations.Create Network @{VNI_NETWORKS}[1]
165 OpenStackOperations.Create SubNet @{VNI_NETWORKS}[0] @{VNI_SUBNETS}[0] @{VNI_SUBNET_CIDRS}[0]
166 OpenStackOperations.Create SubNet @{VNI_NETWORKS}[1] @{VNI_SUBNETS}[1] @{VNI_SUBNET_CIDRS}[1]
167 OpenStackOperations.Create Port @{VNI_NETWORKS}[0] @{VNI_NET_0_PORTS}[0] sg=${VNI_SECURITY_GROUP}
168 OpenStackOperations.Create Port @{VNI_NETWORKS}[1] @{VNI_NET_1_PORTS}[0] sg=${VNI_SECURITY_GROUP}
169 OpenStackOperations.Create Router @{VNI_ROUTER}[0]
170 OpenStackOperations.Add Router Interface @{VNI_ROUTER}[0] @{VNI_SUBNETS}[0]
171 OpenStackOperations.Add Router Interface @{VNI_ROUTER}[0] @{VNI_SUBNETS}[1]
172 ${interface_output} = OpenStackOperations.Show Router Interface @{VNI_ROUTER}[0]
173 ${GWMAC_ADDRS} ${GWIP_ADDRS} = VpnOperations.Get Gateway MAC And IP Address @{VNI_ROUTER}[0]
174 BuiltIn.Set Suite Variable ${GWMAC_ADDRS}
175 BuiltIn.Set Suite Variable ${GWIP_ADDRS}
176 ${router_list} = BuiltIn.Create List @{VNI_ROUTER}[0]
177 OpenStackOperations.Create Vm Instance With Port On Compute Node @{VNI_NET_0_PORTS}[0] @{VNI_NET_0_VMS}[0] ${OS_CMP1_HOSTNAME} sg=${VNI_SECURITY_GROUP}
178 OpenStackOperations.Create Vm Instance With Port On Compute Node @{VNI_NET_1_PORTS}[0] @{VNI_NET_1_VMS}[0] ${OS_CMP2_HOSTNAME} sg=${VNI_SECURITY_GROUP}
179 @{NET_0_VM_IPS} ${NET_0_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_0_VMS}
180 @{NET_1_VM_IPS} ${NET_1_DHCP_IP} = OpenStackOperations.Get VM IPs @{VNI_NET_1_VMS}
181 BuiltIn.Set Suite Variable @{NET_0_VM_IPS}
182 BuiltIn.Set Suite Variable @{NET_1_VM_IPS}
183 BuiltIn.Should Not Contain ${NET_0_VM_IPS} None
184 BuiltIn.Should Not Contain ${NET_1_VM_IPS} None
185 BuiltIn.Should Not Contain ${NET_0_DHCP_IP} None
186 BuiltIn.Should Not Contain ${NET_1_DHCP_IP} None
187 OpenStackOperations.Show Debugs @{VNI_NET_0_VMS} @{VNI_NET_1_VMS}
188 OpenStackOperations.Get Suite Debugs
191 BuiltIn.Return From Keyword If "${OPENSTACK_TOPO}" == "1cmb-0ctl-0cmp"
192 OpenStackOperations.OpenStack Suite Teardown