From 8ee2450bd267c7dc173f62909a8a4ebe13feab84 Mon Sep 17 00:00:00 2001 From: Dino Simeon Madarang Date: Tue, 2 Feb 2016 08:32:01 +0000 Subject: tunneling: Vanilla OVS decapsulation tests 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 Signed-off-by: Martin Klozik Reviewed-by: Maryam Tahhan Reviewed-by: Al Morton Reviewed-by: Brian Castelli --- docs/userguide/integration.rst | 414 ++++++++++++++++++++++++++++------------- 1 file changed, 286 insertions(+), 128 deletions(-) (limited to 'docs/userguide/integration.rst') 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': - '', - } - - 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 = '' + 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': - '', - } - - 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 = '' + 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 = '' + +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': - '', + +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 = '' + + 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 = '' + ./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 = '' + + 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 = '' + + 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 -- cgit 1.2.3-korg