diff options
-rw-r--r-- | conf/integration/02_vswitch.conf | 5 | ||||
-rw-r--r-- | conf/integration/03_traffic.conf | 62 | ||||
-rw-r--r-- | core/results/results_constants.py | 1 | ||||
-rw-r--r-- | core/vswitch_controller_op2p.py | 79 | ||||
-rwxr-xr-x | docs/userguide/integration.rst | 414 | ||||
-rwxr-xr-x | docs/userguide/testusage.rst | 1 | ||||
-rw-r--r-- | testcases/testcase.py | 3 | ||||
-rw-r--r-- | tools/report/report.jinja | 3 | ||||
-rw-r--r-- | tools/report/report_rst.jinja | 4 |
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']) }} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |