tunneling: Vanilla OVS decapsulation tests 91/10891/6
authorDino Simeon Madarang <dino.simeonx.madarang@intel.com>
Tue, 2 Feb 2016 08:32:01 +0000 (08:32 +0000)
committerMaryam Tahhan <maryam.tahhan@intel.com>
Wed, 16 Mar 2016 15:05:00 +0000 (15:05 +0000)
Add Vanilla OVS VXLAN/GRE/GENEVE decapsulation tests
Recent changes:
* Line wrap
* Fix GENEVE IP settings
* Add GRE and GENEVE steps to integration.rst
* Add DUT_NIC1_MAC and DUT_NIC2_MAC
* Remove unnecessary call to vswitch.set_tunnel_arp
* Move optional VXLAN/GRE/GENEVE decap settings to a different section
* Add tunnel type to report files md and rst
* Fix typo error: l4 to L4 in conf/integration/03_traffic.conf

Change-Id: I8a43521668d5870ec893aed1df49467f0a84a07d
JIRA: VSPERF-180
Signed-off-by: Dino Simeon Madarang <dino.simeonx.madarang@intel.com>
Signed-off-by: Martin Klozik <martinx.klozik@intel.com>
Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Reviewed-by: Al Morton <acmorton@att.com>
Reviewed-by: Brian Castelli <brian.castelli@spirent.com>
conf/integration/02_vswitch.conf
conf/integration/03_traffic.conf
core/results/results_constants.py
core/vswitch_controller_op2p.py
docs/userguide/integration.rst
docs/userguide/testusage.rst
testcases/testcase.py
tools/report/report.jinja
tools/report/report_rst.jinja

index f2fa0a4..6bdf79d 100644 (file)
@@ -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 = ''
index 501a3ea..0b46cea 100644 (file)
@@ -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,
                   }
index fcf068b..1049e89 100644 (file)
@@ -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"
 
index 609e5d9..77797b8 100644 (file)
@@ -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().
         """
index 6f9621e..dc87128 100755 (executable)
@@ -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
 
index 098a9d9..c20651b 100755 (executable)
@@ -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
index 8d23014..dfc766d 100644 (file)
@@ -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):
index 884cb20..8354835 100644 (file)
@@ -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>
index 9daa009..545dd49 100644 (file)
@@ -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']) }}
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~