From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 639C9C1EE for ; Wed, 6 Jun 2018 07:34:49 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Jun 2018 22:34:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,482,1520924400"; d="scan'208";a="56906090" Received: from shecgisg006.sh.intel.com ([10.239.39.68]) by orsmga003.jf.intel.com with ESMTP; 05 Jun 2018 22:34:47 -0700 Received: from shecgisg006.sh.intel.com (localhost [127.0.0.1]) by shecgisg006.sh.intel.com with ESMTP id w565Yk3e023318; Wed, 6 Jun 2018 13:34:46 +0800 Received: (from yufengmx@localhost) by shecgisg006.sh.intel.com with œ id w565Ykgo023314; Wed, 6 Jun 2018 13:34:46 +0800 From: yufengx.mo@intel.com To: dts@dpdk.org Cc: yufengmx Date: Wed, 6 Jun 2018 13:34:43 +0800 Message-Id: <1528263286-23120-2-git-send-email-yufengx.mo@intel.com> X-Mailer: git-send-email 1.7.0.7 In-Reply-To: <1528263286-23120-1-git-send-email-yufengx.mo@intel.com> References: <1528263286-23120-1-git-send-email-yufengx.mo@intel.com> Subject: [dts] [PATCH V1 1/4] ipfix_flow_classify: upload test plan X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jun 2018 05:34:50 -0000 From: yufengmx This test plan is for flow classify feature. DPDK provides a Flow Classification library that provides the ability to classify an input packet by matching it against a set of Flow rules. The implementation supports counting of IPv4 5-tuple packets which match a particular Flow rule only. flow_classify is the tool to call flow_classify lib for group of packets, just after receiving them or before transmitting them. Signed-off-by: yufengmx --- test_plans/ipfix_flow_classify_test_plan.rst | 246 +++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 test_plans/ipfix_flow_classify_test_plan.rst diff --git a/test_plans/ipfix_flow_classify_test_plan.rst b/test_plans/ipfix_flow_classify_test_plan.rst new file mode 100644 index 0000000..9492be1 --- /dev/null +++ b/test_plans/ipfix_flow_classify_test_plan.rst @@ -0,0 +1,246 @@ +.. Copyright (c) <2018>, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +==================== +ipfix flow classify +==================== + +This document provides test plan for flow classify feature. + +Flow Classify provides flow record information with some measured properties. + +DPDK provides a Flow Classification library that provides the ability +to classify an input packet by matching it against a set of Flow rules. +The implementation supports counting of IPv4 5-tuple packets which match a +particular Flow rule only. + +flow_classify is the tool to call flow_classify lib for group of packets, +just after receiving them or before transmitting them. It provide the flow type +interested in, measurement to apply to that flow in rte_flow_classify_create() +API, and should providerte_flow_classify object and storage to put results in +rte_flow_classify_query() API. + +DPDK technical doc refer to:: +dpdk/doc/guides/sample_app_ug/flow_classify.rst +dpdk/doc/guides/prog_guide/flow_classify_lib.rst + +Prerequisites +------------- + +2xNICs (2 full duplex optical ports per NIC) +Flow Classify should run on 2 pair link peer at least. +No limitation about nic type. + +HW configuration +------------- + Tester DUT + .-------. .-------. + | port0 | <------------------> | port0 | + | port1 | <------------------> | port1 | + '-------' '-------' + +Stream configuration +------------- + +UDP_1: +Frame Data/Protocols: Ethernet 2 0800, IPv4,UDP/IP, Fixed 64. +IPv4 Header Page: Dest Address: 2.2.2.7 Src Address: 2.2.2.3 +UDP Header: Src Port: 32 Dest Port: 33 + +UDP_2: +Frame Data/Protocols: Ethernet 2 0800, IPv4,UDP/IP, Fixed 64. +IPv4 Header Page: Dest Address: 9.9.9.7 Src Address: 9.9.9.3 +UDP Header: Src Port: 32 Dest Port: 33 + +UDP_invalid: +Frame Data/Protocols: Ethernet 2 0800, IPv4,UDP/IP, Fixed 64. +IPv4 Header Page: Dest Address: 9.8.7.6 Src Address: 192.168.0.36 +UDP Header: Src Port: 10 Dest Port: 11 + +TCP_1: +Frame Data/Protocols: Ethernet 2 0800, IPv4,TCP/IP, Fixed 64. +IPv4 Header Page: Dest Address: 9.9.9.7 Src Address: 9.9.9.3 +TCP Header: Src Port: 32 Dest Port: 33 + +TCP_2: +Frame Data/Protocols: Ethernet 2 0800, IPv4,TCP/IP, Fixed 64. +IPv4 Header Page: Dest Address: 9.9.8.7 Src Address: 9.9.8.3 +TCP Header: Src Port: 32 Dest Port: 33 + +TCP_invalid: +Frame Data/Protocols: Ethernet 2 0800, IPv4,TCP/IP, Fixed 64. +IPv4 Header Page: Dest Address: 9.8.7.6 Src Address: 192.168.0.36 +TCP Header: Src Port: 10 Dest Port: 11 + +SCTP_1: +Frame Data/Protocols: Ethernet 2 0800, IPv4, None, Fixed 256. +IPv4 Header Page: Dest Address: 2.3.4.5 Src Address: 6.7.8.9 +SCTP Header: Src Port: 32 Dest Port: 33 +Protocol: 132-SCTP + +SCTP_invalid: +Frame Data/Protocols: Ethernet 2 0800, IPv4, None, Fixed 256. +IPv4 Header Page: Dest Address: 9.8.7.6 Src Address: 192.168.0.36 +SCTP Header: Src Port: 10 Dest Port: 11 +Protocol: 132-SCTP + +ixia config for stream(ixia tcl command): +---------- +each stream should be 32 burst packets, stream interval should be as the +following command limitaion. + +stream config -numBursts 32 +stream config -gapUnit gapMilliSeconds +stream config -ifg 10 +stream config -ibg 1 +stream config -isg 1000 +stream config -dma stopStream + +Compilation: +---------- +cd $DPDK_PATH +export RTE_TARGET=$DPDK_PATH +export RTE_SDK=`pwd` +make -C examples/flow_classify + +Flow classify bin file under: +$DPDK_PATH/examples/flow_classify/build/flow_classify + +rule config file(default): +$DPDK_PATH/examples/flow_classify/ipv4_rules_file.txt + +Test cases +---------- +The idea behind the testing process is to compare packet count sending by +ixia packet generater with packet count filtered by flow_classify. Valid +packets should be in flow_classify output and invalid packets should be ignored. +The rules are configured in a txt file. Testing content includes different +udp/tcp/sctp stream and multiple rules. + +Test Case : check valid rule with udp stream (performance) +========================================== +Send one valid 32 packets burst stream(UDP_1 or UDP_2 in Stream configuration), +then check the total received packets in flow_classify's output message. + +*. boot up flow_classify + ./flow_classify -c 4 -n 4 -- --rule_ipv4= + +*. send stream by ixia + +*. check flow_classify output contain the following message + rule[0] count=1 + or + rule[1] count=1 + +Test Case : check invalid rule with udp stream (performance) +========================================== +Send one invalid 32 packets burst stream(UDP_invalid in Stream configuration), +then check flow_classify's output message has no count message + +*. boot up flow_classify + ./flow_classify -c 4 -n 4 -- --rule_ipv4= + +*. send stream by ixia + +*. check flow_classify output has no message as "rule[xxx] count=xxx", such as + rule[0] count=1 + +Test Case : check valid rule with tcp stream (performance) +========================================== +Send one valid 32 packets burst stream(TCP_1 or TCP_2 in Stream configuration), +then check the total received packets in flow_classify's output message. + +*. boot up flow_classify + ./flow_classify -c 4 -n 4 -- --rule_ipv4= + +*. send stream by ixia + +*. check flow_classify output contain the following message + rule[2] count=1 + or + rule[3] count=1 + +Test Case : check invalid rule with tcp stream (performance) +========================================== +Send one invalid 32 packets burst stream(TCP_invalid in Stream configuration), +then check flow_classify's output message has no count message + +*. boot up flow_classify + ./flow_classify -c 4 -n 4 -- --rule_ipv4= + +*. send stream by ixia + +*. check flow_classify output has no message as "rule[xxx] count=xxx", such as + rule[2] count=1 + +Test Case : check valid rule with sctp stream (performance) +========================================== +Send one valid 32 packets burst stream(SCTP_1 in Stream configuration), +then check the total received packets in flow_classify's output message. + +*. boot up flow_classify + ./flow_classify -c 4 -n 4 -- --rule_ipv4= + +*. send stream by ixia + +*. check flow_classify output contain the following message + rule[4] count=1 + +Test Case : check invalid rule with sctp stream (performance) +========================================== +Send one invalid 32 packets burst stream(SCTP_invalid in Stream configuration), +then check flow_classify's output message has no count message + +*. boot up flow_classify +./flow_classify -c 4 -n 4 -- --rule_ipv4= + +*. send stream by ixia + +*. check flow_classify output has no "rule[xxx] count=xxx" message, such as + rule[4] count=1 + +Test Case mixed stream: (performance) +========================================== +Send mixed 32 packets burst stream(all types in Stream configuration), +then check if they are ignored or filtered by flow_classify + +*. boot up flow_classify + ./flow_classify -c 4 -n 4 -- --rule_ipv4= + +*. send mixed stream by ixia as above + +*. check flow_classify output only contain the following count message + rule[0] count=1 + rule[1] count=1 + rule[2] count=1 + rule[3] count=1 + rule[4] count=1 -- 1.9.3