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, Tieto and others.
10 VSPERF includes a set of integration tests defined in conf/integration.
11 These tests can be run by specifying --integration as a parameter to vsperf.
12 Current tests in conf/integration include switch functionality and Overlay
15 Tests in the conf/integration can be used to test scaling of different switch
16 configurations by adding steps into the test case.
18 For the overlay tests VSPERF supports VXLAN, GRE and GENEVE tunneling protocols.
19 Testing of these protocols is limited to unidirectional traffic and
20 P2P (Physical to Physical scenarios).
22 NOTE: The configuration for overlay tests provided in this guide is for
23 unidirectional traffic only.
25 NOTE: The overlay tests require an IxNet traffic generator. The tunneled traffic
26 is configured by ``ixnetrfc2544v2.tcl`` script. This script can be used
27 with all supported deployment scenarios for generation of frames with VXLAN, GRE
28 or GENEVE protocols. In that case options "Tunnel Operation" and
29 "TRAFFICGEN_IXNET_TCL_SCRIPT" must be properly configured at testcase definition.
31 Executing Integration Tests
32 ---------------------------
34 To execute integration tests VSPERF is run with the integration parameter. To
35 view the current test list simply execute the following command:
37 .. code-block:: console
39 ./vsperf --integration --list
41 The standard tests included are defined inside the
42 ``conf/integration/01_testcases.conf`` file.
44 Executing Tunnel encapsulation tests
45 ------------------------------------
47 The VXLAN OVS DPDK encapsulation tests requires IPs, MAC addresses,
48 bridge names and WHITELIST_NICS for DPDK.
50 NOTE: Only Ixia traffic generators currently support the execution of the tunnel
51 encapsulation tests. Support for other traffic generators may come in a future
54 Default values are already provided. To customize for your environment, override
55 the following variables in you user_settings.py file:
57 .. code-block:: python
59 # Variables defined in conf/integration/02_vswitch.conf
60 # Tunnel endpoint for Overlay P2P deployment scenario
62 VTEP_IP1 = '192.168.0.1/24'
64 # Used as remote_ip in adding OVS tunnel port and
65 # to set ARP entry in OVS (e.g. tnl/arp/set br-ext 192.168.240.10 02:00:00:00:00:02
66 VTEP_IP2 = '192.168.240.10'
68 # Network to use when adding a route for inner frame data
69 VTEP_IP2_SUBNET = '192.168.240.0/24'
72 TUNNEL_INTEGRATION_BRIDGE = 'br0'
73 TUNNEL_EXTERNAL_BRIDGE = 'br-ext'
76 TUNNEL_EXTERNAL_BRIDGE_IP = '192.168.240.1/24'
81 # Variables defined conf/integration/03_traffic.conf
82 # For OP2P deployment scenario
83 TRAFFICGEN_PORT1_MAC = '02:00:00:00:00:01'
84 TRAFFICGEN_PORT2_MAC = '02:00:00:00:00:02'
85 TRAFFICGEN_PORT1_IP = '1.1.1.1'
86 TRAFFICGEN_PORT2_IP = '192.168.240.10'
88 To run VXLAN encapsulation tests:
90 .. code-block:: console
92 ./vsperf --conf-file user_settings.py --integration \
93 --test-params 'TUNNEL_TYPE=vxlan' overlay_p2p_tput
95 To run GRE encapsulation tests:
97 .. code-block:: console
99 ./vsperf --conf-file user_settings.py --integration \
100 --test-params 'TUNNEL_TYPE=gre' overlay_p2p_tput
102 To run GENEVE encapsulation tests:
104 .. code-block:: console
106 ./vsperf --conf-file user_settings.py --integration \
107 --test-params 'TUNNEL_TYPE=geneve' overlay_p2p_tput
109 To run OVS NATIVE tunnel tests (VXLAN/GRE/GENEVE):
111 1. Install the OVS kernel modules
116 sudo -E make modules_install
118 2. Set the following variables:
120 .. code-block:: python
122 VSWITCH = 'OvsVanilla'
123 # Specify vport_* kernel module to test.
124 PATHS['vswitch']['OvsVanilla']['src']['modules'] = [
128 'datapath/linux/openvswitch.ko',
131 **NOTE:** In case, that Vanilla OVS is installed from binary package, then
132 please set ``PATHS['vswitch']['OvsVanilla']['bin']['modules']`` instead.
136 .. code-block:: console
138 ./vsperf --conf-file user_settings.py --integration \
139 --test-params 'TUNNEL_TYPE=vxlan' overlay_p2p_tput
142 Executing VXLAN decapsulation tests
143 ------------------------------------
145 To run VXLAN decapsulation tests:
147 1. Set the variables used in "Executing Tunnel encapsulation tests"
151 .. code-block:: console
153 ./vsperf --conf-file user_settings.py --integration overlay_p2p_decap_cont
155 If you want to use different values for your VXLAN frame, you may set:
157 .. code-block:: python
159 VXLAN_FRAME_L3 = {'proto': 'udp',
161 'srcip': TRAFFICGEN_PORT1_IP,
162 'dstip': '192.168.240.1',
164 VXLAN_FRAME_L4 = {'srcport': 4789,
167 'inner_srcmac': '01:02:03:04:05:06',
168 'inner_dstmac': '06:05:04:03:02:01',
169 'inner_srcip': '192.168.0.10',
170 'inner_dstip': '192.168.240.9',
171 'inner_proto': 'udp',
172 'inner_srcport': 3000,
173 'inner_dstport': 3001,
177 Executing GRE decapsulation tests
178 ---------------------------------
180 To run GRE decapsulation tests:
182 1. Set the variables used in "Executing Tunnel encapsulation tests"
186 .. code-block:: console
188 ./vsperf --conf-file user_settings.py --test-params 'TUNNEL_TYPE=gre' \
189 --integration overlay_p2p_decap_cont
192 If you want to use different values for your GRE frame, you may set:
194 .. code-block:: python
196 GRE_FRAME_L3 = {'proto': 'gre',
198 'srcip': TRAFFICGEN_PORT1_IP,
199 'dstip': '192.168.240.1',
202 GRE_FRAME_L4 = {'srcport': 0,
204 'inner_srcmac': '01:02:03:04:05:06',
205 'inner_dstmac': '06:05:04:03:02:01',
206 'inner_srcip': '192.168.0.10',
207 'inner_dstip': '192.168.240.9',
208 'inner_proto': 'udp',
209 'inner_srcport': 3000,
210 'inner_dstport': 3001,
214 Executing GENEVE decapsulation tests
215 ------------------------------------
217 IxNet 7.3X does not have native support of GENEVE protocol. The
218 template, GeneveIxNetTemplate.xml_ClearText.xml, should be imported
219 into IxNET for this testcase to work.
221 To import the template do:
223 1. Run the IxNetwork TCL Server
224 2. Click on the Traffic menu
225 3. Click on the Traffic actions and click Edit Packet Templates
226 4. On the Template editor window, click Import. Select the template
227 located at ``3rd_party/ixia/GeneveIxNetTemplate.xml_ClearText.xml``
229 5. Restart the TCL Server.
231 To run GENEVE decapsulation tests:
233 1. Set the variables used in "Executing Tunnel encapsulation tests"
237 .. code-block:: console
239 ./vsperf --conf-file user_settings.py --test-params 'tunnel_type=geneve' \
240 --integration overlay_p2p_decap_cont
243 If you want to use different values for your GENEVE frame, you may set:
245 .. code-block:: python
247 GENEVE_FRAME_L3 = {'proto': 'udp',
249 'srcip': TRAFFICGEN_PORT1_IP,
250 'dstip': '192.168.240.1',
253 GENEVE_FRAME_L4 = {'srcport': 6081,
256 'inner_srcmac': '01:02:03:04:05:06',
257 'inner_dstmac': '06:05:04:03:02:01',
258 'inner_srcip': '192.168.0.10',
259 'inner_dstip': '192.168.240.9',
260 'inner_proto': 'udp',
261 'inner_srcport': 3000,
262 'inner_dstport': 3001,
266 Executing Native/Vanilla OVS VXLAN decapsulation tests
267 ------------------------------------------------------
269 To run VXLAN decapsulation tests:
271 1. Set the following variables in your user_settings.py file:
273 .. code-block:: python
275 PATHS['vswitch']['OvsVanilla']['src']['modules'] = [
277 'datapath/linux/openvswitch.ko',
280 TRAFFICGEN_PORT1_IP = '172.16.1.2'
281 TRAFFICGEN_PORT2_IP = '192.168.1.11'
283 VTEP_IP1 = '172.16.1.2/24'
284 VTEP_IP2 = '192.168.1.1'
285 VTEP_IP2_SUBNET = '192.168.1.0/24'
286 TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
287 TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
289 VXLAN_FRAME_L2 = {'srcmac':
295 VXLAN_FRAME_L3 = {'proto': 'udp',
297 'srcip': TRAFFICGEN_PORT1_IP,
298 'dstip': '172.16.1.1',
304 'protocolpad': 'true',
306 'inner_srcmac': '01:02:03:04:05:06',
307 'inner_dstmac': '06:05:04:03:02:01',
308 'inner_srcip': '192.168.1.2',
309 'inner_dstip': TRAFFICGEN_PORT2_IP,
310 'inner_proto': 'udp',
311 'inner_srcport': 3000,
312 'inner_dstport': 3001,
315 **NOTE:** In case, that Vanilla OVS is installed from binary package, then
316 please set ``PATHS['vswitch']['OvsVanilla']['bin']['modules']`` instead.
320 .. code-block:: console
322 ./vsperf --conf-file user_settings.py --integration \
323 --test-params 'tunnel_type=vxlan' overlay_p2p_decap_cont
325 Executing Native/Vanilla OVS GRE decapsulation tests
326 ----------------------------------------------------
328 To run GRE decapsulation tests:
330 1. Set the following variables in your user_settings.py file:
332 .. code-block:: python
334 PATHS['vswitch']['OvsVanilla']['src']['modules'] = [
336 'datapath/linux/openvswitch.ko',
339 TRAFFICGEN_PORT1_IP = '172.16.1.2'
340 TRAFFICGEN_PORT2_IP = '192.168.1.11'
342 VTEP_IP1 = '172.16.1.2/24'
343 VTEP_IP2 = '192.168.1.1'
344 VTEP_IP2_SUBNET = '192.168.1.0/24'
345 TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
346 TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
348 GRE_FRAME_L2 = {'srcmac':
354 GRE_FRAME_L3 = {'proto': 'udp',
356 'srcip': TRAFFICGEN_PORT1_IP,
357 'dstip': '172.16.1.1',
363 'protocolpad': 'true',
364 'inner_srcmac': '01:02:03:04:05:06',
365 'inner_dstmac': '06:05:04:03:02:01',
366 'inner_srcip': '192.168.1.2',
367 'inner_dstip': TRAFFICGEN_PORT2_IP,
368 'inner_proto': 'udp',
369 'inner_srcport': 3000,
370 'inner_dstport': 3001,
373 **NOTE:** In case, that Vanilla OVS is installed from binary package, then
374 please set ``PATHS['vswitch']['OvsVanilla']['bin']['modules']`` instead.
378 .. code-block:: console
380 ./vsperf --conf-file user_settings.py --integration \
381 --test-params 'tunnel_type=gre' overlay_p2p_decap_cont
383 Executing Native/Vanilla OVS GENEVE decapsulation tests
384 -------------------------------------------------------
386 To run GENEVE decapsulation tests:
388 1. Set the following variables in your user_settings.py file:
390 .. code-block:: python
392 PATHS['vswitch']['OvsVanilla']['src']['modules'] = [
394 'datapath/linux/openvswitch.ko',
397 TRAFFICGEN_PORT1_IP = '172.16.1.2'
398 TRAFFICGEN_PORT2_IP = '192.168.1.11'
400 VTEP_IP1 = '172.16.1.2/24'
401 VTEP_IP2 = '192.168.1.1'
402 VTEP_IP2_SUBNET = '192.168.1.0/24'
403 TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
404 TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
406 GENEVE_FRAME_L2 = {'srcmac':
412 GENEVE_FRAME_L3 = {'proto': 'udp',
414 'srcip': TRAFFICGEN_PORT1_IP,
415 'dstip': '172.16.1.1',
418 GENEVE_FRAME_L4 = {'srcport': 6081,
420 'protocolpad': 'true',
422 'inner_srcmac': '01:02:03:04:05:06',
423 'inner_dstmac': '06:05:04:03:02:01',
424 'inner_srcip': '192.168.1.2',
425 'inner_dstip': TRAFFICGEN_PORT2_IP,
426 'inner_proto': 'udp',
427 'inner_srcport': 3000,
428 'inner_dstport': 3001,
431 **NOTE:** In case, that Vanilla OVS is installed from binary package, then
432 please set ``PATHS['vswitch']['OvsVanilla']['bin']['modules']`` instead.
436 .. code-block:: console
438 ./vsperf --conf-file user_settings.py --integration \
439 --test-params 'tunnel_type=geneve' overlay_p2p_decap_cont
442 Executing Tunnel encapsulation+decapsulation tests
443 --------------------------------------------------
445 The OVS DPDK encapsulation/decapsulation tests requires IPs, MAC addresses,
446 bridge names and WHITELIST_NICS for DPDK.
448 The test cases can test the tunneling encap and decap without using any ingress
449 overlay traffic as compared to above test cases. To achieve this the OVS is
450 configured to perform encap and decap in a series on the same traffic stream as
453 TRAFFIC-IN --> [ENCAP] --> [MOD-PKT] --> [DECAP] --> TRAFFIC-OUT
456 Default values are already provided. To customize for your environment, override
457 the following variables in you user_settings.py file:
459 .. code-block:: python
461 # Variables defined in conf/integration/02_vswitch.conf
464 TUNNEL_EXTERNAL_BRIDGE1 = 'br-phy1'
465 TUNNEL_EXTERNAL_BRIDGE2 = 'br-phy2'
466 TUNNEL_MODIFY_BRIDGE1 = 'br-mod1'
467 TUNNEL_MODIFY_BRIDGE2 = 'br-mod2'
470 TUNNEL_MODIFY_BRIDGE_IP1 = '10.0.0.1/24'
473 TUNNEL_MODIFY_BRIDGE_MAC1 = '00:00:10:00:00:01'
476 TUNNEL_MODIFY_BRIDGE_IP2 = '20.0.0.1/24'
479 TUNNEL_MODIFY_BRIDGE_MAC2 = '00:00:20:00:00:01'
481 # vxlan|gre|geneve, Only VXLAN is supported for now.
482 TUNNEL_TYPE = 'vxlan'
484 To run VXLAN encapsulation+decapsulation tests:
486 .. code-block:: console
488 ./vsperf --conf-file user_settings.py --integration \