From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 7CF84FA4F for ; Mon, 16 Jan 2017 04:09:00 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP; 15 Jan 2017 19:08:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,237,1477983600"; d="scan'208";a="1083411054" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga001.jf.intel.com with ESMTP; 15 Jan 2017 19:08:58 -0800 Received: from fmsmsx157.amr.corp.intel.com (10.18.116.73) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Sun, 15 Jan 2017 19:08:57 -0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX157.amr.corp.intel.com (10.18.116.73) with Microsoft SMTP Server (TLS) id 14.3.248.2; Sun, 15 Jan 2017 19:08:57 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.20]) by shsmsx102.ccr.corp.intel.com ([169.254.2.88]) with mapi id 14.03.0248.002; Mon, 16 Jan 2017 11:07:35 +0800 From: "Liu, Yong" To: "Mo, YufengX" , "dts@dpdk.org" CC: "Mo, YufengX" Thread-Topic: [dts] [PATCH V1 1/2] Packet capture: upload automation test plan Thread-Index: AQHSb6Lyr61GbAWqFUqn1QC7ngB4zqE6Zucw Date: Mon, 16 Jan 2017 03:07:35 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E62D479A0@SHSMSX103.ccr.corp.intel.com> References: <1484534927-45556-1-git-send-email-yufengx.mo@intel.com> <1484534927-45556-2-git-send-email-yufengx.mo@intel.com> In-Reply-To: <1484534927-45556-2-git-send-email-yufengx.mo@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH V1 1/2] Packet capture: upload automation 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: Mon, 16 Jan 2017 03:09:01 -0000 Yufen, Please make sure all lines in test plan and commit are limited to 79 charac= ters. And some comments and questions below. Thanks, Marvin > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of yufengx.mo@intel.com > Sent: Monday, January 16, 2017 10:49 AM > To: dts@dpdk.org > Cc: Mo, YufengX > Subject: [dts] [PATCH V1 1/2] Packet capture: upload automation test plan >=20 > From: yufengmx >=20 >=20 > Packet capture framework feature support packet capturing on dpdk etherne= t > devices. > DPDK provides dpdk-pdump tool under app/pdump directory for packet > capturing on dpdk. >=20 > The tool is a Data Plane Development Kit (DPDK) tool that runs as a DPDK > secondary process and is capable of enabling packet capture on dpdk ports= . > * The tool depends on libpcap based PMD which is disabled > by default in the build configuration files, > owing to an external dependency on the libpcap development files > which must be installed on the board. > Once the libpcap development files are installed, the libpcap based P= MD > can be enabled by setting CONFIG_RTE_LIBRTE_PMD_PCAP=3Dy and > recompiling the DPDK. >=20 > Signed-off-by: yufengmx > --- > test_plans/packet_capture_test_plan.rst | 376 > ++++++++++++++++++++++++++++++++ > 1 file changed, 376 insertions(+) > create mode 100644 test_plans/packet_capture_test_plan.rst >=20 > diff --git a/test_plans/packet_capture_test_plan.rst > b/test_plans/packet_capture_test_plan.rst > new file mode 100644 > index 0000000..6a51cf9 > --- /dev/null > +++ b/test_plans/packet_capture_test_plan.rst > @@ -0,0 +1,376 @@ > +.. Copyright (c) <2016> 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. > + > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + packet capture framework feature > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Packet capture framework feature support packet capturing on dpdk ethern= et > devices. > +DPDK provides dpdk-pdump tool under app/pdump directory for packet > capturing on dpdk. > + > +The dpdk-pdump application will act as the secondary process. The EAL > +thread polls for packet capture fd. If fd polled matches packet capture > +fd, it will initiate packet capture processing. > + > +The testpmd application will act as the primary process. The primary > +process create socket for packet capture connection with the secondary > +process and registers socket with packet capture epoll event. Packet cap= ture > event will be polled as part of interrupt thread. > + > +The primary process creates mempool and two rte_rings for packets > +duplication and sharing packet info with the secondary process respectiv= ely. > + > +Upon receiving packet capture event, the primary process receive either > +register RX/TX callbacks or remove RX/TX callbacks message from the > +secondary process on socket.If packet matches, reference count of > +packet will be incremented and enqueued to second rte_ring for the secon= dary > process to use. > + > +Prerequisites > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +* 2x NICs (2 full duplex ports per NIC) plugged into the available > +slots on a platform, another two nic ports are linked with cables. > + > +Test cases > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +The testpmd application act as server process with port-topology > +chained mode, the dpdk-pdump act as client process to dump capture > +packet with different options setting. Select one port of tester as tx > +port, another port of tester as rx port, send different type packets > +from two ports, check pcap files' content dumped by scapy and tcpdump to > confirm testpmd working correctly, check pcap files' content dumped by > tcpdump and dpdk-pdump to confirm dpdk-pdump working correctly. > + > +dpdk-pdump command format > +-------------------------- > +* packet capture framework tool dpdk-pdump command format, parameters > +inside the parenthesis represents the mandatory parametersm parameters Typo issue, "parametersm" should be ? > +inside the square brackets represents optional > +parameters:: > +./x86_64-native-linuxapp-gcc/app/dpdk-pdump -- --pdump=3D '(port =3D > + |device_id =3D ), (queue=3D), > +(rx-dev=3D | tx-dev=3D= ), > +[ring-size=3D], [mbuf-size=3D], [total-num-mbufs=3D]' > + > +transmission packets' format > +-------------------------- > +* IP_RAW > + [Ether()/IP()/Raw('\0'*60)] > +* TCP > + [Ether()/IP()/TCP()/Raw('\0'*60)] > +* UDP > + [Ether()/IP()/UDP()/Raw('\0'*60)] > +* SCTP > + [Ether()/IP()/SCTP()/Raw('\0'*40)] > +* IPv6_TCP > + [Ether()/IPv6()/TCP()/Raw('\0'*60)] > +* IPv6_UDP > + [Ether()/IPv6()/UDP()/Raw('\0'*60)] > +* IPv6_SCTP > + [Ether()/IP()/IPv6()/SCTP()/Raw('\0'*40)] > +* VLAN_UDP > + [Ether()/Dot1Q()/IP()/UDP()/Raw('\0'*40)] > +* TIMESYNC > + [Ether(dst=3D'FF:FF:FF:FF:FF:FF',type=3D0x88f7)/"\\x00\\x02"] > +* ARP > + [Ether(dst=3D'FF:FF:FF:FF:FF:FF')/ARP()] > +* LLDP > + [Ether()/LLDP()/LLDPManagementAddress()] > + notice: LLDP()/LLDPManagementAddress() method are in dts/dep/lldp.py > + > +port configuration > +-------------------------- > +* confirm two NICs physical link on a platform: > + dut port 0 <---> tester port 0 > + dut port 1 <---> tester port 1 > + > +* Bind two port on DUT:: > + ./tools/dpdk_nic_bind.py --bind=3Digb_uio +port 1 pci address> > + Tools folder has been changed to usertools. > +* On dut, use port 0 as rx/tx port. > + If dut port 0 rx dump is set, scapy send packet from tester port 0 > +and tcpdump dumps tester > + port 1's packet. > + > + If dut port 0 tx dump is set, scapy send packet from tester port 1 > + and tcpdump dumps tester port 0's packet. > + > +* If using interfaces as dpdk-pdump vdev, prepare two ports on DUT, > +which haven't been binded > + to dpdk and have been in linked status > + > +Test Case 1: test pdump port > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > +test different port options:: > +* port=3D > +* device_id=3D > + > +Boot up dpdk's testpmd with chained option:: > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i --port- > topology=3Dchained > + testpmd> set fwd io > + testpmd> start > + Recommend to remove targets which will be change between executions. > +When test VLAN_UDP type packet transmission, set vlan: > + testpmd> vlan set filter off 1 > + testpmd> start > + > +Boot up dpdk-pdump:: > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -- --pdump ' option>,queue=3D*,\ > + tx-dev=3D/tmp/pdump-tx.pcap,rx-dev=3D/tmp/pdump-rx.pcap' > + > +Set up linux's tcpdump to receiver packet on tester:: > + tcpdump -i -w /tmp/sniff-.pcap > + tcpdump -i -w /tmp/sniff-.pcap > + > +Send packet on tester by port 0:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Send packet on tester by port 1:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Test Case 2: test pdump queue > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > +test different queue options:: > +* first queue: > + queue=3D0 > +* all: > + queue=3D* Please add some basic description of this parameter. Like "Capture first qu= eue traffic". > + > +Boot up dpdk's testpmd with chained option:: > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i --port- > topology=3Dchained > + testpmd> set fwd io > + testpmd> start > + > +When test VLAN_UDP type packet transmission, set vlan: > + testpmd> vlan set filter off 1 > + testpmd> start > + > +Boot up dpdk-pdump:: > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -- --pdump 'port=3D0, option>,\ > + tx-dev=3D/tmp/pdump-tx.pcap,rx-dev=3D/tmp/pdump-rx.pcap' > + > +Set up linux's tcpdump to receiver packet on tester:: > + tcpdump -i -w /tmp/sniff-.pcap > + tcpdump -i -w /tmp/sniff-.pcap > + > +Send packet on tester by port 0:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Send packet on tester by port 1:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Test Case 3: test pdump dev pcap > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D Underscore please align with test case name. > +test different dump options:: > +* tx-dev=3D/tmp/pdump-tx.pcap,rx-dev=3D/tmp/pdump-rx.pcap > +* rx-dev=3D/tmp/pdump-rx.pcap > +* tx-dev=3D/tmp/pdump-tx.pcap Same as previous comment, add basic descriptions for these parameters. > + > +Boot up dpdk's testpmd with chained option:: > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i --port- > topology=3Dchained > + testpmd> set fwd io > + testpmd> start > + > +When test VLAN_UDP type packet transmission, set vlan: > + testpmd> vlan set filter off 1 > + testpmd> start > + > +Boot up dpdk-pdump with pdump options:: > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -- --pdump > 'port=3D0,queue=3D*,' > + > +Set up linux's tcpdump to receiver packet on tester:: > + tcpdump -i -w /tmp/sniff-.pcap > + tcpdump -i -w /tmp/sniff-.pcap > + > +Send packet on tester by port 0:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by > tcpdump(ignore when only set tx-dev). > + > +Send packet on tester by port 1:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by > tcpdump(ignore when only set rx-dev). > + > +Test Case 4: test pdump dev iface > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > +test different dump options:: > +* tx-dev=3D,rx-dev=3D > +* rx-dev=3D > +* tx-dev=3D > + > +Boot up dpdk's testpmd with chained option:: > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i --port- > topology=3Dchained > + testpmd> set fwd io > + testpmd> start > + > +When test VLAN_UDP type packet transmission, set vlan: > + testpmd> vlan set filter off 1 > + testpmd> start > + > +Boot up dpdk-pdump with pdump options:: > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -- --pdump > 'port=3D0,queue=3D*,' > + > +Set up linux's tcpdump to receiver packet on tester:: > + tcpdump -i -w /tmp/sniff-.pcap > + tcpdump -i -w /tmp/sniff-.pcap > + > +Set up linux's tcpdump to receiver packet of dpdk-pdump on Dut:: > + when rx-dev is set > + tcpdump -i -w /tmp/pdump-rx.pcap > + > + when tx-dev is set > + tcpdump -i -w /tmp/pdump-tx.pcap > + > +Send packet on tester by port 0:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by > tcpdump(ignore when only set tx-dev). > + > +Send packet on tester by port 1:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by > tcpdump(ignore when only set rx-dev).=09 > + > +Test Case 5: test pdump ring size > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > +test ring size option, set value within 2^[1~27] > + > +Boot up dpdk's testpmd with chained option:: > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i --port- > topology=3Dchained > + testpmd> set fwd io > + testpmd> start > + > +When test VLAN_UDP type packet transmission, set vlan: > + testpmd> vlan set filter off 1 > + testpmd> start > + > +Boot up dpdk-pdump with pdump options:: > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -- --pdump > 'port=3D0,queue=3D*,\ > + tx-dev=3D/tmp/pdump-tx.pcap,rx-dev=3D/tmp/pdump-rx.pcap,ring-size=3D= 1024' > + > +Set up linux's tcpdump to receiver packet on tester:: > + tcpdump -i -w /tmp/sniff-.pcap > + tcpdump -i -w /tmp/sniff-.pcap > + > +Send packet on tester by port 0:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Send packet on tester by port 1:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Test Case 6: test pdump mbuf size > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > +test mbuf size option, set value within [252~59520]. min value is > +decided by single packet size, max value is decided by test platform mem= ery > size. Typo issue, should be "memory". Should here to verify what will be happened when packet size is over mbuf s= ize? Suggest add one case for jumbo frame packet capture, not sure whether jumbo= frame should be validated here. > + > + > +Boot up dpdk's testpmd with chained option:: > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i --port- > topology=3Dchained > + testpmd> set fwd io > + testpmd> start > + > +When test VLAN_UDP type packet transmission, set vlan: > + testpmd> vlan set filter off 1 > + testpmd> start > + > +Boot up dpdk-pdump with pdump options:: > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -- --pdump > 'port=3D0,queue=3D*,\ > + tx-dev=3D/tmp/pdump-tx.pcap,rx-dev=3D/tmp/pdump-rx.pcap,mbuf-size=3D= 2048' > + > +Set up linux's tcpdump to receiver packet on tester:: > + tcpdump -i -w /tmp/sniff-.pcap > + tcpdump -i -w /tmp/sniff-.pcap > + > +Send packet on tester by port 0:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Send packet on tester by port 1:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Test Case 7: test pdump total num mbufs > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > +test total-num-mbufs option, set value within [1025~65535] What will be affected when change the number? I think mbuf will be freed a= fter packet saved into pcap file. Will it affect the performance? > + > +Boot up dpdk's testpmd with chained option:: > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i --port- > topology=3Dchained > + testpmd> set fwd io > + testpmd> start > + > +When test VLAN_UDP type packet transmission, set vlan: > + testpmd> vlan set filter off 1 > + testpmd> start > + > +Boot up dpdk-pdump with pdump options:: > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -- --pdump > 'port=3D0,queue=3D*,\ > + tx-dev=3D/tmp/pdump-tx.pcap,rx-dev=3D/tmp/pdump-rx.pcap,total-num- > mbufs=3D8191' > + > +Set up linux's tcpdump to receiver packet on tester:: > + tcpdump -i -w /tmp/sniff-.pcap > + tcpdump -i -w /tmp/sniff-.pcap > + > +Send packet on tester by port 0:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > +Send packet on tester by port 1:: > + sendp(, iface=3D) > + > +Compare pcap file of scapy with the pcap file dumped by tcpdump. > +Compare pcap file dumped by dpdk-pdump with pcap files dumped by tcpdump= . > + > -- > 1.9.3