1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. (c) OPNFV, Intel Corporation, AT&T and others.
8 VSPERF includes a set of integration tests defined in conf/integration.
9 These tests can be run by specifying --run-integration as a parameter to vsperf.
10 Current tests in conf/integration are Overlay tests.
12 VSPERF supports VXLAN, GRE and GENEVE tunneling protocols.
13 Testing of these protocols is limited to unidirectional traffic and
14 P2P (Physical to Physical scenarios).
16 NOTE: The configuration for overlay tests provided in this guide is for unidirectional traffic only.
18 Executing Tunnel encapsulation tests
19 ------------------------------------
21 The VXLAN OVS DPDK encapsulation tests requires IPs, MAC addresses,
22 bridge names and WHITELIST_NICS for DPDK.
24 Default values are already provided. To customize for your environment, override
25 the following variables in you user_settings.py file:
27 .. code-block:: python
29 # Variables defined in conf/integration/02_vswitch.conf
30 # Tunnel endpoint for Overlay P2P deployment scenario
32 VTEP_IP1 = '192.168.0.1/24'
34 # Used as remote_ip in adding OVS tunnel port and
35 # to set ARP entry in OVS (e.g. tnl/arp/set br-ext 192.168.240.10 02:00:00:00:00:02
36 VTEP_IP2 = '192.168.240.10'
38 # Network to use when adding a route for inner frame data
39 VTEP_IP2_SUBNET = '192.168.240.0/24'
42 TUNNEL_INTEGRATION_BRIDGE = 'br0'
43 TUNNEL_EXTERNAL_BRIDGE = 'br-ext'
46 TUNNEL_EXTERNAL_BRIDGE_IP = '192.168.240.1/24'
51 # Variables defined conf/integration/03_traffic.conf
52 # For OP2P deployment scenario
53 TRAFFICGEN_PORT1_MAC = '02:00:00:00:00:01'
54 TRAFFICGEN_PORT2_MAC = '02:00:00:00:00:02'
55 TRAFFICGEN_PORT1_IP = '1.1.1.1'
56 TRAFFICGEN_PORT2_IP = '192.168.240.10'
58 To run VXLAN encapsulation tests:
60 .. code-block:: console
62 ./vsperf --conf-file user_settings.py --run-integration
63 --test-params 'tunnel_type=vxlan' overlay_p2p_tput
65 To run GRE encapsulation tests:
67 .. code-block:: console
69 ./vsperf --conf-file user_settings.py --run-integration
70 --test-params 'tunnel_type=gre' overlay_p2p_tput
72 To run GENEVE encapsulation tests:
74 .. code-block:: console
76 ./vsperf --conf-file user_settings.py --run-integration
77 --test-params 'tunnel_type=geneve' overlay_p2p_tput
79 To run OVS NATIVE tunnel tests (VXLAN/GRE/GENEVE):
81 1. Install the OVS kernel modules
86 sudo -E make modules_install
88 2. Set the following variables:
90 .. code-block:: python
92 VSWITCH = 'OvsVanilla'
93 VSWITCH_VANILLA_PHY_PORT_NAMES = ['nic1name', 'nic2name']
94 # Specify vport_* kernel module to test.
95 VSWITCH_VANILLA_KERNEL_MODULES = ['vport_vxlan',
98 os.path.join(OVS_DIR_VANILLA,
99 'datapath/linux/openvswitch.ko')]
103 .. code-block:: console
105 ./vsperf --conf-file user_settings.py --run-integration
106 --test-params 'tunnel_type=vxlan' overlay_p2p_tput
109 Executing VXLAN decapsulation tests
110 ------------------------------------
112 To run VXLAN decapsulation tests:
114 1. Set the variables used in "Executing Tunnel encapsulation tests"
116 2. Set dstmac of DUT_NIC2_MAC to the MAC adddress of the 2nd NIC of your DUT
118 .. code-block:: python
120 DUT_NIC2_MAC = '<DUT NIC2 MAC>'
124 .. code-block:: console
126 ./vsperf --conf-file user_settings.py --run-integration overlay_p2p_decap_cont
128 If you want to use different values for your VXLAN frame, you may set:
130 .. code-block:: python
132 VXLAN_FRAME_L3 = {'proto': 'udp',
134 'srcip': TRAFFICGEN_PORT1_IP,
135 'dstip': '192.168.240.1',
137 VXLAN_FRAME_L4 = {'srcport': 4789,
140 'inner_srcmac': '01:02:03:04:05:06',
141 'inner_dstmac': '06:05:04:03:02:01',
142 'inner_srcip': '192.168.0.10',
143 'inner_dstip': '192.168.240.9',
144 'inner_proto': 'udp',
145 'inner_srcport': 3000,
146 'inner_dstport': 3001,
150 Executing GRE decapsulation tests
151 ---------------------------------
153 To run GRE decapsulation tests:
155 1. Set the variables used in "Executing Tunnel encapsulation tests"
157 2. Set dstmac of DUT_NIC2_MAC to the MAC adddress of the 2nd NIC of your DUT
159 .. code-block:: python
161 DUT_NIC2_MAC = '<DUT NIC2 MAC>'
165 .. code-block:: console
167 ./vsperf --conf-file user_settings.py --test-params 'tunnel_type=gre'
168 --run-integration overlay_p2p_decap_cont
171 If you want to use different values for your GRE frame, you may set:
173 .. code-block:: python
175 GRE_FRAME_L3 = {'proto': 'gre',
177 'srcip': TRAFFICGEN_PORT1_IP,
178 'dstip': '192.168.240.1',
181 GRE_FRAME_L4 = {'srcport': 0,
183 'inner_srcmac': '01:02:03:04:05:06',
184 'inner_dstmac': '06:05:04:03:02:01',
185 'inner_srcip': '192.168.0.10',
186 'inner_dstip': '192.168.240.9',
187 'inner_proto': 'udp',
188 'inner_srcport': 3000,
189 'inner_dstport': 3001,
193 Executing GENEVE decapsulation tests
194 ------------------------------------
196 IxNet 7.3X does not have native support of GENEVE protocol. The
197 template, GeneveIxNetTemplate.xml_ClearText.xml, should be imported
198 into IxNET for this testcase to work.
200 To import the template do:
202 1. Run the IxNetwork TCL Server
203 2. Click on the Traffic menu
204 3. Click on the Traffic actions and click Edit Packet Templates
205 4. On the Template editor window, click Import. Select the template
206 tools/pkt_gen/ixnet/GeneveIxNetTemplate.xml_ClearText.xml
208 5. Restart the TCL Server.
210 To run GENEVE decapsulation tests:
212 1. Set the variables used in "Executing Tunnel encapsulation tests"
214 2. Set dstmac of DUT_NIC2_MAC to the MAC adddress of the 2nd NIC of your DUT
216 .. code-block:: python
218 DUT_NIC2_MAC = '<DUT NIC2 MAC>'
222 .. code-block:: console
224 ./vsperf --conf-file user_settings.py --test-params 'tunnel_type=geneve'
225 --run-integration overlay_p2p_decap_cont
228 If you want to use different values for your GENEVE frame, you may set:
230 .. code-block:: python
232 GENEVE_FRAME_L3 = {'proto': 'udp',
234 'srcip': TRAFFICGEN_PORT1_IP,
235 'dstip': '192.168.240.1',
238 GENEVE_FRAME_L4 = {'srcport': 6081,
241 'inner_srcmac': '01:02:03:04:05:06',
242 'inner_dstmac': '06:05:04:03:02:01',
243 'inner_srcip': '192.168.0.10',
244 'inner_dstip': '192.168.240.9',
245 'inner_proto': 'udp',
246 'inner_srcport': 3000,
247 'inner_dstport': 3001,
251 Executing Native/Vanilla OVS VXLAN decapsulation tests
252 ------------------------------------------------------
254 To run VXLAN decapsulation tests:
256 1. Set the following variables in your user_settings.py file:
258 .. code-block:: python
260 VSWITCH_VANILLA_KERNEL_MODULES = ['vport_vxlan',
261 os.path.join(OVS_DIR_VANILLA,
262 'datapath/linux/openvswitch.ko')]
264 DUT_NIC1_MAC = '<DUT NIC1 MAC ADDRESS>'
266 TRAFFICGEN_PORT1_IP = '172.16.1.2'
267 TRAFFICGEN_PORT2_IP = '192.168.1.11'
269 VTEP_IP1 = '172.16.1.2/24'
270 VTEP_IP2 = '192.168.1.1'
271 VTEP_IP2_SUBNET = '192.168.1.0/24'
272 TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
273 TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
275 VXLAN_FRAME_L2 = {'srcmac':
277 'dstmac': DUT_NIC1_MAC
280 VXLAN_FRAME_L3 = {'proto': 'udp',
282 'srcip': TRAFFICGEN_PORT1_IP,
283 'dstip': '172.16.1.1',
289 'protocolpad': 'true',
291 'inner_srcmac': '01:02:03:04:05:06',
292 'inner_dstmac': '06:05:04:03:02:01',
293 'inner_srcip': '192.168.1.2',
294 'inner_dstip': TRAFFICGEN_PORT2_IP,
295 'inner_proto': 'udp',
296 'inner_srcport': 3000,
297 'inner_dstport': 3001,
302 .. code-block:: console
304 ./vsperf --conf-file user_settings.py --run-integration
305 --test-params 'tunnel_type=vxlan' overlay_p2p_decap_cont
307 Executing Native/Vanilla OVS GRE decapsulation tests
308 ----------------------------------------------------
310 To run GRE decapsulation tests:
312 1. Set the following variables in your user_settings.py file:
314 .. code-block:: python
316 VSWITCH_VANILLA_KERNEL_MODULES = ['vport_gre',
317 os.path.join(OVS_DIR_VANILLA,
318 'datapath/linux/openvswitch.ko')]
320 DUT_NIC1_MAC = '<DUT NIC1 MAC ADDRESS>'
322 TRAFFICGEN_PORT1_IP = '172.16.1.2'
323 TRAFFICGEN_PORT2_IP = '192.168.1.11'
325 VTEP_IP1 = '172.16.1.2/24'
326 VTEP_IP2 = '192.168.1.1'
327 VTEP_IP2_SUBNET = '192.168.1.0/24'
328 TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
329 TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
331 GRE_FRAME_L2 = {'srcmac':
333 'dstmac': DUT_NIC1_MAC
336 GRE_FRAME_L3 = {'proto': 'udp',
338 'srcip': TRAFFICGEN_PORT1_IP,
339 'dstip': '172.16.1.1',
345 'protocolpad': 'true',
346 'inner_srcmac': '01:02:03:04:05:06',
347 'inner_dstmac': '06:05:04:03:02:01',
348 'inner_srcip': '192.168.1.2',
349 'inner_dstip': TRAFFICGEN_PORT2_IP,
350 'inner_proto': 'udp',
351 'inner_srcport': 3000,
352 'inner_dstport': 3001,
357 .. code-block:: console
359 ./vsperf --conf-file user_settings.py --run-integration
360 --test-params 'tunnel_type=gre' overlay_p2p_decap_cont
362 Executing Native/Vanilla OVS GENEVE decapsulation tests
363 -------------------------------------------------------
365 To run GENEVE decapsulation tests:
367 1. Set the following variables in your user_settings.py file:
369 .. code-block:: python
371 VSWITCH_VANILLA_KERNEL_MODULES = ['vport_geneve',
372 os.path.join(OVS_DIR_VANILLA,
373 'datapath/linux/openvswitch.ko')]
375 DUT_NIC1_MAC = '<DUT NIC1 MAC ADDRESS>'
377 TRAFFICGEN_PORT1_IP = '172.16.1.2'
378 TRAFFICGEN_PORT2_IP = '192.168.1.11'
380 VTEP_IP1 = '172.16.1.2/24'
381 VTEP_IP2 = '192.168.1.1'
382 VTEP_IP2_SUBNET = '192.168.1.0/24'
383 TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
384 TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
386 GENEVE_FRAME_L2 = {'srcmac':
388 'dstmac': DUT_NIC1_MAC
391 GENEVE_FRAME_L3 = {'proto': 'udp',
393 'srcip': TRAFFICGEN_PORT1_IP,
394 'dstip': '172.16.1.1',
397 GENEVE_FRAME_L4 = {'srcport': 6081,
399 'protocolpad': 'true',
401 'inner_srcmac': '01:02:03:04:05:06',
402 'inner_dstmac': '06:05:04:03:02:01',
403 'inner_srcip': '192.168.1.2',
404 'inner_dstip': TRAFFICGEN_PORT2_IP,
405 'inner_proto': 'udp',
406 'inner_srcport': 3000,
407 'inner_dstport': 3001,
412 .. code-block:: console
414 ./vsperf --conf-file user_settings.py --run-integration
415 --test-params 'tunnel_type=geneve' overlay_p2p_decap_cont