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