summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--conf/integration/02_vswitch.conf5
-rw-r--r--conf/integration/03_traffic.conf62
-rw-r--r--core/results/results_constants.py1
-rw-r--r--core/vswitch_controller_op2p.py79
-rwxr-xr-xdocs/userguide/integration.rst414
-rwxr-xr-xdocs/userguide/testusage.rst1
-rw-r--r--testcases/testcase.py3
-rw-r--r--tools/report/report.jinja3
-rw-r--r--tools/report/report_rst.jinja4
9 files changed, 404 insertions, 168 deletions
diff --git a/conf/integration/02_vswitch.conf b/conf/integration/02_vswitch.conf
index f2fa0a4c..6bdf79d3 100644
--- a/conf/integration/02_vswitch.conf
+++ b/conf/integration/02_vswitch.conf
@@ -24,4 +24,7 @@ TUNNEL_EXTERNAL_BRIDGE_IP = '192.168.240.1/24'
TUNNEL_TYPE = 'vxlan'
# The receiving NIC of VXLAN traffic
-DUT_NIC1_MAC = '00:1b:21:b3:48:a9'
+# Used for OVS Vanilla Decap
+DUT_NIC1_MAC = ''
+# Used for OVS DPDK Decap
+DUT_NIC2_MAC = ''
diff --git a/conf/integration/03_traffic.conf b/conf/integration/03_traffic.conf
index 501a3ea8..0b46cea0 100644
--- a/conf/integration/03_traffic.conf
+++ b/conf/integration/03_traffic.conf
@@ -31,15 +31,17 @@ VXLAN_VNI = '99'
# 'dstmac':
# '00:1b:21:b3:48:a9'}
-VXLAN_FRAME_L2 = {'srcmac': '',
- 'dstmac': '',
+VXLAN_FRAME_L2 = {'srcmac': '01:02:03:04:05:06',
+ 'dstmac': DUT_NIC2_MAC,
}
+# VXLAN is supported both in IxNetwork and IXIA IxExplorer
# FOR IXIA IxExplorer - VXLAN INNER FRAME
# The following lines can be removed if IXIA support will be dropped:
# 'protocolpad': 'true',
# 'protocolpadbytes':
-# '080000000000630006050403020101020304050608004500002e000000004011095bc0a8000ac0a8f0090bb80bb9001a2e93000102030405060708090a0b0c0d0e0f1011',
+# '080000000000630006050403020101020304050608004500002e000000004011095bc0a' \
+# '8000ac0a8f0090bb80bb9001a2e93000102030405060708090a0b0c0d0e0f1011',
# protocolpadbytes contains the following values:
# VxLAN header with VNI 99 (0x63)
# Inner SRC 01:02:03:04:05:06
@@ -54,72 +56,68 @@ VXLAN_FRAME_L2 = {'srcmac': '',
VXLAN_FRAME_L3 = {'proto': 'udp',
'packetsize': 64,
'srcip': TRAFFICGEN_PORT1_IP,
- 'dstip': '',
+ 'dstip': '192.168.240.1',
}
-VXLAN_FRAME_l4 = {'srcport': 4789,
+VXLAN_FRAME_L4 = {'srcport': 4789,
'dstport': 4789,
'vni': VXLAN_VNI,
- 'inner_srcmac': '',
- 'inner_dstmac': '',
- 'inner_srcip': '',
- 'inner_dstip': '',
- 'inner_proto': 'tcp',
+ 'inner_srcmac': '01:02:03:04:05:06',
+ 'inner_dstmac': '06:05:04:03:02:01',
+ 'inner_srcip': '192.168.0.10',
+ 'inner_dstip': '192.168.240.9',
+ 'inner_proto': 'udp',
'inner_srcport': 3000,
'inner_dstport': 3001,
- 'protocolpad': '',
- 'protocolpadbytes': '',
}
# TEST frame
# dstmac should be set to the MAC address of the DUT's receiving port
-GRE_FRAME_L2 = {'srcmac': '',
- 'dstmac': '',
+GRE_FRAME_L2 = {'srcmac': '01:02:03:04:05:06',
+ 'dstmac': DUT_NIC2_MAC,
}
GRE_FRAME_L3 = {'proto': 'gre',
'packetsize': 64,
'srcip': TRAFFICGEN_PORT1_IP,
- 'dstip': '',
+ 'dstip': '192.168.240.1',
}
-GRE_FRAME_l4 = {'srcport': 0,
+GRE_FRAME_L4 = {'srcport': 0,
'dstport': 0,
- 'inner_srcmac': '',
- 'inner_dstmac': '',
- 'inner_srcip': '',
- 'inner_dstip': '',
- 'inner_proto': 'tcp',
+ 'inner_srcmac': '01:02:03:04:05:06',
+ 'inner_dstmac': '06:05:04:03:02:01',
+ 'inner_srcip': '192.168.0.10',
+ 'inner_dstip': '192.168.240.9',
+ 'inner_proto': 'udp',
'inner_srcport': 3000,
'inner_dstport': 3001,
- 'protocolpad': '',
- 'protocolpadbytes': '',
}
# TEST frame
# dstmac should be set to the MAC address of the DUT's receiving port
-GENEVE_FRAME_L2 = {'srcmac': '',
- 'dstmac': '',
+GENEVE_FRAME_L2 = {'srcmac': '01:02:03:04:05:06',
+ 'dstmac': DUT_NIC2_MAC,
}
GENEVE_FRAME_L3 = {'proto': 'udp',
'packetsize': 64,
'srcip': TRAFFICGEN_PORT1_IP,
- 'dstip': '',
+ 'dstip': '192.168.240.1',
}
# UDP source/destination port (OUTER FRAME)
# Variables with prefix inner_ are for the
# INNER_FRAME
-GENEVE_FRAME_l4 = {'srcport': 6081,
+GENEVE_FRAME_L4 = {'srcport': 6081,
'dstport': 6081,
'geneve_vni': 0,
- 'inner_srcmac': '',
- 'inner_dstmac': '',
- 'inner_srcip': '',
- 'inner_dstip': '',
- 'inner_proto': 'tcp',
+ 'inner_srcmac': '01:02:03:04:05:06',
+ 'inner_dstmac': '06:05:04:03:02:01',
+ 'inner_srcip': '192.168.0.10',
+ 'inner_dstip': '192.168.240.9',
+ 'inner_proto': 'udp',
'inner_srcport': 3000,
'inner_dstport': 3001,
}
diff --git a/core/results/results_constants.py b/core/results/results_constants.py
index fcf068b7..1049e89b 100644
--- a/core/results/results_constants.py
+++ b/core/results/results_constants.py
@@ -23,6 +23,7 @@ class ResultsConstants(object):
DEPLOYMENT = 'deployment'
TRAFFIC_TYPE = 'traffic_type'
GUEST_LOOPBACK = 'guest_loopback_app'
+ TUNNEL_TYPE = 'tunnel_type'
UNKNOWN_VALUE = "Unknown"
diff --git a/core/vswitch_controller_op2p.py b/core/vswitch_controller_op2p.py
index 609e5d95..77797b8f 100644
--- a/core/vswitch_controller_op2p.py
+++ b/core/vswitch_controller_op2p.py
@@ -55,7 +55,10 @@ class VswitchControllerOP2P(IVswitchController):
if self._tunnel_operation == "encapsulation":
self._setup_encap()
else:
- self._setup_decap()
+ if settings.getValue('VSWITCH').endswith('Vanilla'):
+ self._setup_decap_vanilla()
+ else:
+ self._setup_decap()
def _setup_encap(self):
""" Sets up the switch for overlay P2P encapsulation test
@@ -169,10 +172,6 @@ class VswitchControllerOP2P(IVswitchController):
self._vswitch.set_tunnel_arp(tgen_ip1,
settings.getValue('TRAFFICGEN_PORT1_MAC'),
bridge)
- self._vswitch.set_tunnel_arp(bridge_ext_ip.split('/')[0],
- settings.getValue('DUT_NIC1_MAC'),
- bridge_ext)
-
# Test is unidirectional for now
self._vswitch.del_flow(bridge_ext)
flow1 = add_ports_to_flow(_FLOW_TEMPLATE, phy3_number,
@@ -183,6 +182,76 @@ class VswitchControllerOP2P(IVswitchController):
self._vswitch.stop()
raise
+ def _setup_decap_vanilla(self):
+ """ Sets up the switch for overlay P2P decapsulation test
+ """
+ self._logger.debug('Setup decap vanilla ' + str(self._vswitch_class))
+
+ try:
+ self._vswitch.start()
+ bridge = settings.getValue('TUNNEL_INTEGRATION_BRIDGE')
+ bridge_ext = settings.getValue('TUNNEL_EXTERNAL_BRIDGE')
+ bridge_ext_ip = settings.getValue('TUNNEL_EXTERNAL_BRIDGE_IP')
+ tgen_ip1 = settings.getValue('TRAFFICGEN_PORT1_IP')
+ self._vswitch.add_switch(bridge)
+
+ tasks.run_task(['sudo', 'ifconfig', bridge,
+ settings.getValue('TUNNEL_INT_BRIDGE_IP')],
+ self._logger, 'Assign ' +
+ settings.getValue('TUNNEL_INT_BRIDGE_IP') + ' to ' + bridge, False)
+
+ tunnel_type = self._traffic['tunnel_type']
+
+ self._vswitch.add_switch(bridge_ext)
+ self._vswitch.add_phy_port(bridge_ext)
+ (_, phy2_number) = self._vswitch.add_phy_port(bridge)
+
+ if tunnel_type == "vxlan":
+ vxlan_vni = 'options:key=' + settings.getValue('VXLAN_VNI')
+ self._vswitch.add_tunnel_port(bridge, tgen_ip1, tunnel_type,
+ params=[vxlan_vni])
+ else:
+ self._vswitch.add_tunnel_port(bridge, tgen_ip1, tunnel_type)
+
+ tasks.run_task(['sudo', 'ip', 'addr', 'add',
+ bridge_ext_ip,
+ 'dev', bridge_ext],
+ self._logger, 'Assign ' +
+ bridge_ext_ip
+ + ' to ' + bridge_ext)
+
+ tasks.run_task(['sudo', 'ip', 'link', 'set', 'dev', bridge_ext,
+ 'up'],
+ self._logger,
+ 'Set ' + bridge_ext + ' status to up')
+
+ tg_port2_mac = settings.getValue('TRAFFICGEN_PORT2_MAC')
+ vtep_ip2 = settings.getValue('TRAFFICGEN_PORT2_IP')
+
+ self._vswitch.set_tunnel_arp(vtep_ip2,
+ tg_port2_mac,
+ bridge_ext)
+
+ self._vswitch.add_route(bridge,
+ settings.getValue('VTEP_IP2_SUBNET'),
+ bridge)
+
+
+ tasks.run_task(['sudo', 'arp', '-s', vtep_ip2, tg_port2_mac],
+ self._logger,
+ 'Set ' + bridge_ext + ' status to up')
+
+
+ # Test is unidirectional for now
+ self._vswitch.del_flow(bridge_ext)
+
+ flow1 = add_ports_to_flow(_FLOW_TEMPLATE, phy2_number, 'LOCAL')
+ self._vswitch.add_flow(bridge_ext, flow1)
+
+ except:
+ self._vswitch.stop()
+ raise
+
def stop(self):
"""Tears down the switch created in setup().
"""
diff --git a/docs/userguide/integration.rst b/docs/userguide/integration.rst
index 6f9621e1..dc871280 100755
--- a/docs/userguide/integration.rst
+++ b/docs/userguide/integration.rst
@@ -9,67 +9,72 @@ VSPERF includes a set of integration tests defined in conf/integration.
These tests can be run by specifying --run-integration as a parameter to vsperf.
Current tests in conf/integration are Overlay tests.
-
-Executing Tunnel encapsulation tests
-------------------------------------
-
VSPERF supports VXLAN, GRE and GENEVE tunneling protocols.
Testing of these protocols is limited to unidirectional traffic and
P2P (Physical to Physical scenarios).
+NOTE: The configuration for overlay tests provided in this guide is for unidirectional traffic only.
+
+Executing Tunnel encapsulation tests
+------------------------------------
+
The VXLAN OVS DPDK encapsulation tests requires IPs, MAC addresses,
bridge names and WHITELIST_NICS for DPDK.
Default values are already provided. To customize for your environment, override
the following variables in you user_settings.py file:
-# Variables defined in conf/integration/02_vswitch.conf
-# Tunnel endpoint for Overlay P2P deployment scenario
-# used for br0
-VTEP_IP1 = '192.168.0.1/24'
+ .. code-block:: python
-# Used as remote_ip in adding OVS tunnel port and
-# to set ARP entry in OVS (e.g. tnl/arp/set br-ext 192.168.240.10 02:00:00:00:00:02
-VTEP_IP2 = '192.168.240.10'
+ # Variables defined in conf/integration/02_vswitch.conf
+ # Tunnel endpoint for Overlay P2P deployment scenario
+ # used for br0
+ VTEP_IP1 = '192.168.0.1/24'
-# Network to use when adding a route for inner frame data
-VTEP_IP2_SUBNET = '192.168.240.0/24'
+ # Used as remote_ip in adding OVS tunnel port and
+ # to set ARP entry in OVS (e.g. tnl/arp/set br-ext 192.168.240.10 02:00:00:00:00:02
+ VTEP_IP2 = '192.168.240.10'
-# Bridge names
-TUNNEL_INTEGRATION_BRIDGE = 'br0'
-TUNNEL_EXTERNAL_BRIDGE = 'br-ext'
+ # Network to use when adding a route for inner frame data
+ VTEP_IP2_SUBNET = '192.168.240.0/24'
-# IP of br-ext
-TUNNEL_EXTERNAL_BRIDGE_IP = '192.168.240.1/24'
+ # Bridge names
+ TUNNEL_INTEGRATION_BRIDGE = 'br0'
+ TUNNEL_EXTERNAL_BRIDGE = 'br-ext'
-# vxlan|gre|geneve
-TUNNEL_TYPE = 'vxlan'
+ # IP of br-ext
+ TUNNEL_EXTERNAL_BRIDGE_IP = '192.168.240.1/24'
-# Variables defined conf/integration/03_traffic.conf
-# For OP2P deployment scenario
-TRAFFICGEN_PORT1_MAC = '02:00:00:00:00:01'
-TRAFFICGEN_PORT2_MAC = '02:00:00:00:00:02'
-TRAFFICGEN_PORT1_IP = '1.1.1.1'
-TRAFFICGEN_PORT2_IP = '192.168.240.10'
+ # vxlan|gre|geneve
+ TUNNEL_TYPE = 'vxlan'
+ # Variables defined conf/integration/03_traffic.conf
+ # For OP2P deployment scenario
+ TRAFFICGEN_PORT1_MAC = '02:00:00:00:00:01'
+ TRAFFICGEN_PORT2_MAC = '02:00:00:00:00:02'
+ TRAFFICGEN_PORT1_IP = '1.1.1.1'
+ TRAFFICGEN_PORT2_IP = '192.168.240.10'
To run VXLAN encapsulation tests:
.. code-block:: console
- ./vsperf --conf-file user_settings.py --run-integration --test-param 'tunnel_type=vxlan' overlay_p2p_tput
+ ./vsperf --conf-file user_settings.py --run-integration
+ --test-params 'tunnel_type=vxlan' overlay_p2p_tput
To run GRE encapsulation tests:
.. code-block:: console
- ./vsperf --conf-file user_settings.py --run-integration --test-param 'tunnel_type=gre' overlay_p2p_tput
+ ./vsperf --conf-file user_settings.py --run-integration
+ --test-params 'tunnel_type=gre' overlay_p2p_tput
To run GENEVE encapsulation tests:
.. code-block:: console
- ./vsperf --conf-file user_settings.py --run-integration --test-param 'tunnel_type=geneve' overlay_p2p_tput
+ ./vsperf --conf-file user_settings.py --run-integration
+ --test-params 'tunnel_type=geneve' overlay_p2p_tput
To run OVS NATIVE tunnel tests (VXLAN/GRE/GENEVE):
@@ -77,26 +82,28 @@ To run OVS NATIVE tunnel tests (VXLAN/GRE/GENEVE):
.. code:: console
- cd src/ovs/ovs
- sudo -E make modules_install
+ cd src/ovs/ovs
+ sudo -E make modules_install
2. Set the following variables:
- .. code-block:: console
+ .. code-block:: python
- VSWITCH = 'OvsVanilla'
- VSWITCH_VANILLA_PHY_PORT_NAMES = ['nic1name', 'nic2name']
- # Specify vport_* kernel module to test.
- VSWITCH_VANILLA_KERNEL_MODULES = ['vport_vxlan',
- 'vport_gre',
- 'vport_geneve',
- os.path.join(OVS_DIR_VANILLA, 'datapath/linux/openvswitch.ko')]
+ VSWITCH = 'OvsVanilla'
+ VSWITCH_VANILLA_PHY_PORT_NAMES = ['nic1name', 'nic2name']
+ # Specify vport_* kernel module to test.
+ VSWITCH_VANILLA_KERNEL_MODULES = ['vport_vxlan',
+ 'vport_gre',
+ 'vport_geneve',
+ os.path.join(OVS_DIR_VANILLA,
+ 'datapath/linux/openvswitch.ko')]
3. Run tests:
.. code-block:: console
- ./vsperf --conf-file user_settings.py --run-integration --test-param 'tunnel_type=vxlan' overlay_p2p_tput
+ ./vsperf --conf-file user_settings.py --run-integration
+ --test-params 'tunnel_type=vxlan' overlay_p2p_tput
Executing VXLAN decapsulation tests
@@ -106,44 +113,39 @@ To run VXLAN decapsulation tests:
1. Set the variables used in "Executing Tunnel encapsulation tests"
-2. Set IXNET_TCL_SCRIPT, VXLAN_FRAME_L2, VLXAN_FRAME_L3 and DUT_NIC1_MAC of your settings file to:
+2. Set dstmac of DUT_NIC2_MAC to the MAC adddress of the 2nd NIC of your DUT
- .. code-block:: console
+ .. code-block:: python
- IXNET_TCL_SCRIPT='ixnetrfc2544v2.tcl'
-
- VXLAN_FRAME_L2 = {'srcmac':
- '01:02:03:04:05:06',
- 'dstmac':
- '<DUT's NIC1 MAC>',
- }
-
- VXLAN_FRAME_L3 = {'proto': 'udp',
- 'packetsize': 64,
- 'srcip': '1.1.1.1',
- 'dstip': '192.168.240.1',
- }
-
- VXLAN_FRAME_L4 = {'srcport': 4789,
- 'dstport': 4789,
- 'vni': VXLAN_VNI,
- 'inner_srcmac': '01:02:03:04:05:06',
- 'inner_dstmac': '06:05:04:03:02:01',
- 'inner_srcip': '192.168.0.10',
- 'inner_dstip': '192.168.240.9',
- 'inner_proto': 'udp',
- 'inner_srcport': 3000,
- 'inner_dstport': 3001,
- }
-
- # The receiving NIC of VXLAN traffic
- DUT_NIC1_MAC = '<mac address>'
+ DUT_NIC2_MAC = '<DUT NIC2 MAC>'
3. Run test:
.. code-block:: console
- ./vsperf --conf-file user_settings.py --run-integration overlay_p2p_decap_cont
+ ./vsperf --conf-file user_settings.py --run-integration overlay_p2p_decap_cont
+
+If you want to use different values for your VXLAN frame, you may set:
+
+ .. code-block:: python
+
+ VXLAN_FRAME_L3 = {'proto': 'udp',
+ 'packetsize': 64,
+ 'srcip': TRAFFICGEN_PORT1_IP,
+ 'dstip': '192.168.240.1',
+ }
+ VXLAN_FRAME_L4 = {'srcport': 4789,
+ 'dstport': 4789,
+ 'vni': VXLAN_VNI,
+ 'inner_srcmac': '01:02:03:04:05:06',
+ 'inner_dstmac': '06:05:04:03:02:01',
+ 'inner_srcip': '192.168.0.10',
+ 'inner_dstip': '192.168.240.9',
+ 'inner_proto': 'udp',
+ 'inner_srcport': 3000,
+ 'inner_dstport': 3001,
+ }
+
Executing GRE decapsulation tests
---------------------------------
@@ -152,43 +154,40 @@ To run GRE decapsulation tests:
1. Set the variables used in "Executing Tunnel encapsulation tests"
-2. Set IXNET_TCL_SCRIPT, GRE_FRAME_L2, GRE_FRAME_L3 and DUT_NIC1_MAC of your settings file to:
+2. Set dstmac of DUT_NIC2_MAC to the MAC adddress of the 2nd NIC of your DUT
- .. code-block:: console
+ .. code-block:: python
- IXNET_TCL_SCRIPT='ixnetrfc2544v2.tcl'
-
- GRE_FRAME_L2 = {'srcmac':
- '01:02:03:04:05:06',
- 'dstmac':
- '<DUT's NIC2 MAC>',
- }
-
- GRE_FRAME_L3 = {'proto': 'gre',
- 'packetsize': 64,
- 'srcip': '1.1.1.1',
- 'dstip': '192.168.240.1',
- }
-
- GRE_FRAME_L4 = {'srcport': 0,
- 'dstport': 0
- 'inner_srcmac': '01:02:03:04:05:06',
- 'inner_dstmac': '06:05:04:03:02:01',
- 'inner_srcip': '192.168.0.10',
- 'inner_dstip': '192.168.240.9',
- 'inner_proto': 'udp',
- 'inner_srcport': 3000,
- 'inner_dstport': 3001,
- }
-
- # The receiving NIC of GRE traffic
- DUT_NIC1_MAC = '<mac address>'
+ DUT_NIC2_MAC = '<DUT NIC2 MAC>'
3. Run test:
.. code-block:: console
- ./vsperf --conf-file user_settings.py --test-param 'tunnel_type=gre' --run-integration overlay_p2p_decap_cont
+ ./vsperf --conf-file user_settings.py --test-params 'tunnel_type=gre'
+ --run-integration overlay_p2p_decap_cont
+
+
+If you want to use different values for your GRE frame, you may set:
+
+ .. code-block:: python
+
+ GRE_FRAME_L3 = {'proto': 'gre',
+ 'packetsize': 64,
+ 'srcip': TRAFFICGEN_PORT1_IP,
+ 'dstip': '192.168.240.1',
+ }
+
+ GRE_FRAME_L4 = {'srcport': 0,
+ 'dstport': 0
+ 'inner_srcmac': '01:02:03:04:05:06',
+ 'inner_dstmac': '06:05:04:03:02:01',
+ 'inner_srcip': '192.168.0.10',
+ 'inner_dstip': '192.168.240.9',
+ 'inner_proto': 'udp',
+ 'inner_srcport': 3000,
+ 'inner_dstport': 3001,
+ }
Executing GENEVE decapsulation tests
@@ -199,60 +198,219 @@ template, GeneveIxNetTemplate.xml_ClearText.xml, should be imported
into IxNET for this testcase to work.
To import the template do:
+
1. Run the IxNetwork TCL Server
2. Click on the Traffic menu
3. Click on the Traffic actions and click Edit Packet Templates
-4. On the Template editor window, click Import.
- Select the template tools/pkt_gen/ixnet/GeneveIxNetTemplate.xml_ClearText.xml
+4. On the Template editor window, click Import. Select the template
+ tools/pkt_gen/ixnet/GeneveIxNetTemplate.xml_ClearText.xml
and click import.
-
+5. Restart the TCL Server.
To run GENEVE decapsulation tests:
1. Set the variables used in "Executing Tunnel encapsulation tests"
-2. Set IXNET_TCL_SCRIPT, GENEVE_FRAME_L2, GENEVE_FRAME_L3 and DUT_NIC1_MAC of your settings file to:
+2. Set dstmac of DUT_NIC2_MAC to the MAC adddress of the 2nd NIC of your DUT
+
+ .. code-block:: python
+
+ DUT_NIC2_MAC = '<DUT NIC2 MAC>'
+
+3. Run test:
.. code-block:: console
- IXNET_TCL_SCRIPT='ixnetrfc2544v2.tcl'
+ ./vsperf --conf-file user_settings.py --test-params 'tunnel_type=geneve'
+ --run-integration overlay_p2p_decap_cont
- GENEVE_FRAME_L2 = {'srcmac':
- '01:02:03:04:05:06',
- 'dstmac':
- '<DUT's NIC2 MAC>',
+
+If you want to use different values for your GENEVE frame, you may set:
+
+ .. code-block:: python
+
+ GENEVE_FRAME_L3 = {'proto': 'udp',
+ 'packetsize': 64,
+ 'srcip': TRAFFICGEN_PORT1_IP,
+ 'dstip': '192.168.240.1',
}
- GENEVE_FRAME_L3 = {'proto': 'udp',
+ GENEVE_FRAME_L4 = {'srcport': 6081,
+ 'dstport': 6081,
+ 'geneve_vni': 0,
+ 'inner_srcmac': '01:02:03:04:05:06',
+ 'inner_dstmac': '06:05:04:03:02:01',
+ 'inner_srcip': '192.168.0.10',
+ 'inner_dstip': '192.168.240.9',
+ 'inner_proto': 'udp',
+ 'inner_srcport': 3000,
+ 'inner_dstport': 3001,
+ }
+
+
+Executing Native/Vanilla OVS VXLAN decapsulation tests
+------------------------------------------------------
+
+To run VXLAN decapsulation tests:
+
+1. Set the following variables in your user_settings.py file:
+
+ .. code-block:: python
+
+ VSWITCH_VANILLA_KERNEL_MODULES = ['vport_vxlan',
+ os.path.join(OVS_DIR_VANILLA,
+ 'datapath/linux/openvswitch.ko')]
+
+ DUT_NIC1_MAC = '<DUT NIC1 MAC ADDRESS>'
+
+ TRAFFICGEN_PORT1_IP = '172.16.1.2'
+ TRAFFICGEN_PORT2_IP = '192.168.1.11'
+
+ VTEP_IP1 = '172.16.1.2/24'
+ VTEP_IP2 = '192.168.1.1'
+ VTEP_IP2_SUBNET = '192.168.1.0/24'
+ TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
+ TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
+
+ VXLAN_FRAME_L2 = {'srcmac':
+ '01:02:03:04:05:06',
+ 'dstmac': DUT_NIC1_MAC
+ }
+
+ VXLAN_FRAME_L3 = {'proto': 'udp',
'packetsize': 64,
- 'srcip': '1.1.1.1',
- 'dstip': '192.168.240.1',
- 'geneve_vni': 0,
- 'inner_srcmac': '01:02:03:04:05:06',
- 'inner_dstmac': '06:05:04:03:02:01',
- 'inner_srcip': '192.168.0.10',
- 'inner_dstip': '192.168.240.9',
- 'inner_proto': 'udp',
+ 'srcip': TRAFFICGEN_PORT1_IP,
+ 'dstip': '172.16.1.1',
}
- GENEVE_FRAME_L4 = {'srcport': 6081,
- 'dstport': 6081,
- 'geneve_vni': 0,
+
+ VXLAN_FRAME_L4 = {
+ 'srcport': 4789,
+ 'dstport': 4789,
+ 'protocolpad': 'true',
+ 'vni': 99,
'inner_srcmac': '01:02:03:04:05:06',
'inner_dstmac': '06:05:04:03:02:01',
- 'inner_srcip': '192.168.0.10',
- 'inner_dstip': '192.168.240.9',
+ 'inner_srcip': '192.168.1.2',
+ 'inner_dstip': TRAFFICGEN_PORT2_IP,
'inner_proto': 'udp',
'inner_srcport': 3000,
'inner_dstport': 3001,
}
+2. Run test:
+
+ .. code-block:: console
- # The receiving NIC of GENEVE traffic
- DUT_NIC1_MAC = '<mac address>'
+ ./vsperf --conf-file user_settings.py --run-integration
+ --test-params 'tunnel_type=vxlan' overlay_p2p_decap_cont
-3. Run test:
+Executing Native/Vanilla OVS GRE decapsulation tests
+----------------------------------------------------
+
+To run GRE decapsulation tests:
+
+1. Set the following variables in your user_settings.py file:
+
+ .. code-block:: python
+
+ VSWITCH_VANILLA_KERNEL_MODULES = ['vport_gre',
+ os.path.join(OVS_DIR_VANILLA,
+ 'datapath/linux/openvswitch.ko')]
+
+ DUT_NIC1_MAC = '<DUT NIC1 MAC ADDRESS>'
+
+ TRAFFICGEN_PORT1_IP = '172.16.1.2'
+ TRAFFICGEN_PORT2_IP = '192.168.1.11'
+
+ VTEP_IP1 = '172.16.1.2/24'
+ VTEP_IP2 = '192.168.1.1'
+ VTEP_IP2_SUBNET = '192.168.1.0/24'
+ TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
+ TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
+
+ GRE_FRAME_L2 = {'srcmac':
+ '01:02:03:04:05:06',
+ 'dstmac': DUT_NIC1_MAC
+ }
+
+ GRE_FRAME_L3 = {'proto': 'udp',
+ 'packetsize': 64,
+ 'srcip': TRAFFICGEN_PORT1_IP,
+ 'dstip': '172.16.1.1',
+ }
+
+ GRE_FRAME_L4 = {
+ 'srcport': 4789,
+ 'dstport': 4789,
+ 'protocolpad': 'true',
+ 'inner_srcmac': '01:02:03:04:05:06',
+ 'inner_dstmac': '06:05:04:03:02:01',
+ 'inner_srcip': '192.168.1.2',
+ 'inner_dstip': TRAFFICGEN_PORT2_IP,
+ 'inner_proto': 'udp',
+ 'inner_srcport': 3000,
+ 'inner_dstport': 3001,
+ }
+
+2. Run test:
+
+ .. code-block:: console
+
+ ./vsperf --conf-file user_settings.py --run-integration
+ --test-params 'tunnel_type=gre' overlay_p2p_decap_cont
+
+Executing Native/Vanilla OVS GENEVE decapsulation tests
+-------------------------------------------------------
+
+To run GENEVE decapsulation tests:
+
+1. Set the following variables in your user_settings.py file:
+
+ .. code-block:: python
+
+ VSWITCH_VANILLA_KERNEL_MODULES = ['vport_geneve',
+ os.path.join(OVS_DIR_VANILLA,
+ 'datapath/linux/openvswitch.ko')]
+
+ DUT_NIC1_MAC = '<DUT NIC1 MAC ADDRESS>'
+
+ TRAFFICGEN_PORT1_IP = '172.16.1.2'
+ TRAFFICGEN_PORT2_IP = '192.168.1.11'
+
+ VTEP_IP1 = '172.16.1.2/24'
+ VTEP_IP2 = '192.168.1.1'
+ VTEP_IP2_SUBNET = '192.168.1.0/24'
+ TUNNEL_EXTERNAL_BRIDGE_IP = '172.16.1.1/24'
+ TUNNEL_INT_BRIDGE_IP = '192.168.1.1'
+
+ GENEVE_FRAME_L2 = {'srcmac':
+ '01:02:03:04:05:06',
+ 'dstmac': DUT_NIC1_MAC
+ }
+
+ GENEVE_FRAME_L3 = {'proto': 'udp',
+ 'packetsize': 64,
+ 'srcip': TRAFFICGEN_PORT1_IP,
+ 'dstip': '172.16.1.1',
+ }
+
+ GENEVE_FRAME_L4 = {'srcport': 6081,
+ 'dstport': 6081,
+ 'protocolpad': 'true',
+ 'geneve_vni': 0,
+ 'inner_srcmac': '01:02:03:04:05:06',
+ 'inner_dstmac': '06:05:04:03:02:01',
+ 'inner_srcip': '192.168.1.2',
+ 'inner_dstip': TRAFFICGEN_PORT2_IP,
+ 'inner_proto': 'udp',
+ 'inner_srcport': 3000,
+ 'inner_dstport': 3001,
+ }
+
+2. Run test:
.. code-block:: console
- ./vsperf --conf-file user_settings.py --test-param 'tunnel_type=geneve' --run-integration overlay_p2p_decap_cont
+ ./vsperf --conf-file user_settings.py --run-integration
+ --test-params 'tunnel_type=geneve' overlay_p2p_decap_cont
diff --git a/docs/userguide/testusage.rst b/docs/userguide/testusage.rst
index 098a9d95..c20651b5 100755
--- a/docs/userguide/testusage.rst
+++ b/docs/userguide/testusage.rst
@@ -403,6 +403,7 @@ Supported Packet Forwarding applications are:
1. Update your ''10_custom.conf'' file to use the appropriate variables
for selected Packet Forwarder:
+
.. code-block:: console
# testpmd configuration
diff --git a/testcases/testcase.py b/testcases/testcase.py
index 8d23014c..dfc766d2 100644
--- a/testcases/testcase.py
+++ b/testcases/testcase.py
@@ -253,7 +253,8 @@ class TestCase(object):
item[ResultsConstants.SCAL_PRE_INSTALLED_FLOWS] = self._traffic['pre_installed_flows']
if len(self.guest_loopback):
item[ResultsConstants.GUEST_LOOPBACK] = ' '.join(self.guest_loopback)
-
+ if self._tunnel_type:
+ item[ResultsConstants.TUNNEL_TYPE] = self._tunnel_type
return results
def _copy_fwd_tools_for_guest(self):
diff --git a/tools/report/report.jinja b/tools/report/report.jinja
index 884cb20e..8354835c 100644
--- a/tools/report/report.jinja
+++ b/tools/report/report.jinja
@@ -112,6 +112,9 @@ Below are test details:
- Traffic type: {{ "%s"|format(test.result['type']) }}
- Packet size: {{ "%s"|format(test.result['packet_size']) }}
- Bidirectional : {{ "%s"|format(test.conf['biDirectional']) }}
+{%- if test.result['tunnel_type'] %}
+- Tunnel type: {{ "%s"|format(test.result['tunnel_type']) }}
+{%- endif %}
{% endfor %}
<a name="DetailedTestResults"></a>
diff --git a/tools/report/report_rst.jinja b/tools/report/report_rst.jinja
index 9daa009a..545dd493 100644
--- a/tools/report/report_rst.jinja
+++ b/tools/report/report_rst.jinja
@@ -35,7 +35,9 @@ Below are test details:
* Deployment: {{ "%s"|format(tests[0].deployment) }}
* Traffic type: {{ "%s"|format(tests[0].result['type']) }}
* Bidirectional : {{ "%s"|format(tests[0].conf['biDirectional']) }}
-
+{%- if tests[0].result['tunnel_type'] %}
+* Tunnel type: {{ "%s"|format(tests[0].result['tunnel_type']) }}
+{%- endif %}
{% for test in tests %}
Test results for packet size: {{ "%s"|format(test.result['packet_size']) }}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~