From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 50C89A00E6 for ; Tue, 6 Aug 2019 12:08:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 458D41BE3B; Tue, 6 Aug 2019 12:08:04 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 4201E375B for ; Tue, 6 Aug 2019 12:08:02 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Aug 2019 03:08:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,353,1559545200"; d="scan'208";a="192632531" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga001.fm.intel.com with ESMTP; 06 Aug 2019 03:08:01 -0700 Received: from fmsmsx162.amr.corp.intel.com (10.18.125.71) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 6 Aug 2019 03:08:00 -0700 Received: from shsmsx153.ccr.corp.intel.com (10.239.6.53) by fmsmsx162.amr.corp.intel.com (10.18.125.71) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 6 Aug 2019 03:08:00 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.80]) by SHSMSX153.ccr.corp.intel.com ([169.254.12.215]) with mapi id 14.03.0439.000; Tue, 6 Aug 2019 18:07:58 +0800 From: "Tu, Lijuan" To: "Mo, YufengX" , "dts@dpdk.org" CC: "Mo, YufengX" Thread-Topic: [dts] [PATCH V3 1/2] test_plans/packet_capture: upload test plan Thread-Index: AQHVNszFYdAeU8V0Z0iDW/tBQzJDXKbuEAag Date: Tue, 6 Aug 2019 10:07:58 +0000 Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BAFD629@SHSMSX101.ccr.corp.intel.com> References: <1562728176-214925-1-git-send-email-yufengx.mo@intel.com> <1562728176-214925-2-git-send-email-yufengx.mo@intel.com> In-Reply-To: <1562728176-214925-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: dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDAzNWM1MTgtZTMzMC00MjRhLWJiMjItYjZhZWU5MjI1YzM2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiN29kVUxZRjE4RWlicm5WWkZPdFk3NElhV1FFRjRDb2xyazZ1T3J3OFBQXC9FMTNENlRzSTJ1NEFvd1J3ejc1ZWEifQ== 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 V3 1/2] test_plans/packet_capture: 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: , Errors-To: dts-bounces@dpdk.org Sender: "dts" Applied, thanks > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of yufengmx > Sent: Wednesday, July 10, 2019 11:10 AM > To: dts@dpdk.org > Cc: Mo, YufengX > Subject: [dts] [PATCH V3 1/2] test_plans/packet_capture: upload test plan >=20 >=20 > Packet capture framework feature support packet capturing on dpdk > ethernet 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= . >=20 > The tool depends on libpcap based PMD which is disabled by default in th= e > 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 PMD 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 | 542 > ++++++++++++++++++++++++++++++++ > 1 file changed, 542 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..05629d0 > --- /dev/null > +++ b/test_plans/packet_capture_test_plan.rst > @@ -0,0 +1,542 @@ > +.. Copyright (c) <2010-2019> 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 > +packet capture > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Packet capture framework feature support packet capturing on dpdk > +ethernet 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 > +capture 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 > secondary process to use. > + > +DPDK technical doc refer to:: > + > + dpdk/doc/guides/tools/pdump.rst > + > +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. > + > +Connections ports between TESTER and DUT:: > + > + TESTER DUT > + physical link > + .--------. .--------. > + | portA0 | <----------------------> | portB0 | > + | | | | > + | portA1 | <----------------------> | portB1 | > + '--------' | | > + ------> | portB2 | > + | | | > + ------> | portB3 | > + '--------' > + > +note: portB0/portB1 are the binded ports. > + portB2/portB3 keep link up status and don't bind to dpdk driver. > + Except portB0/portB1, DUT should have other two ports on link up > +status > + > +Test cases > +=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 file content dumped by scapy and tcpdump to > +confirm testpmd working correctly, check pcap file 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 parameters, parameters > +inside the square brackets represents optional > + > +parameters:: > + > + ./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 packet 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(LLDP()/LLDPManagementAddress() method are in dts/dep/lldp.py):: > + > + [Ether()/LLDP()/LLDPManagementAddress()] > + > +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:: > + > + ./usertools/dpdk_nic_bind.py --bind=3Digb_uio + address> > + > +#. 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. I= f > dut > + port 0 tx dump is set, scapy send packet from tester port 1 and tcpdu= mp > dumps > + tester port 0's packet. > + > +#. If using interfaces as dpdk-pdump vdev, prepare two ports on DUT, whi= ch > + haven't been binded to dpdk and have been in linked status > + > +Test Case: 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 > + > +Test different port type definition options:: > + > + port=3D > + device_id=3D > + > +steps: > + > +#. Boot up dpdk's testpmd with chained option:: > + > + ./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:: > + > + ./app/dpdk-pdump -- --pdump ',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:: > + > + pkt=3Drdpcap('xxxx1.pcap') > + pkt[0].show2() > + pkt=3Drdpcap('xxxx2.pcap') > + pkt[0].show2() > + > + > +Test Case: 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 > + > +Capture first queue traffic. > + > +test different queue options:: > + > + first queue 'queue=3D0' > + all queue 'queue=3D*' > + > +steps: > + > +#. Boot up dpdk's testpmd with chained option:: > + > + ./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:: > + > + ./app/dpdk-pdump -- --pdump 'port=3D0,,\ > + 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:: > + > + pkt=3Drdpcap('xxxx1.pcap') > + pkt[0].show2() > + pkt=3Drdpcap('xxxx2.pcap') > + pkt[0].show2() > + > + > +Test Case: 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 > + > +Dump rx/tx transmission packets into a specified pcap files. > + > +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 > + > +steps: > + > +#. Boot up dpdk's testpmd with chained option:: > + > + ./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(other packet > ignore this step):: > + > + testpmd> vlan set filter off 1 > + testpmd> start > + > +#. Boot up dpdk-pdump with pdump options:: > + > + ./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):: > + > + pkt=3Drdpcap('xxxx1.pcap') > + pkt[0].show2() > + pkt=3Drdpcap('xxxx2.pcap') > + pkt[0].show2() > + > + > +Test Case: 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 > + > +Dump rx/tx transmission packets to a specified port, which is on link st= atus. > + > +test different dump options:: > + > + tx-dev=3D,rx-dev=3D > + rx-dev=3D > + tx-dev=3D > + > +steps: > + > +#. Boot up dpdk's testpmd with chained option:: > + > + ./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(other packet > ignore this step):: > + > + testpmd> vlan set filter off 1 > + testpmd> start > + > +#. Boot up dpdk-pdump with pdump options:: > + > + ./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, use 'tcpdump -i -w /tmp/pdump= - > rx.pcap' > + when tx-dev is set, use '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):: > + > + pkt=3Drdpcap('xxxx1.pcap') > + pkt[0].show2() > + pkt=3Drdpcap('xxxx2.pcap') > + pkt[0].show2() > + > + > +Test Case: 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 > + > +Test ring size option, set value within 2^[1~27]. > + > +steps: > + > +#. Boot up dpdk's testpmd with chained option:: > + > + ./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:: > + > + ./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:: > + > + pkt=3Drdpcap('xxxx1.pcap') > + pkt[0].show2() > + pkt=3Drdpcap('xxxx2.pcap') > + pkt[0].show2() > + > + > +Test Case: 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 > + > +Test mbuf size option, set value within [252~50000]. min value is > +decided by single packet size, max value is decided by test platform > memory size. > + > +steps: > + > +#. Boot up dpdk's testpmd with chained option:: > + > + ./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:: > + > + ./app/dpdk-pdump -- --pdump 'port=3D0,queue=3D*,\ > + tx-dev=3D/tmp/pdump-tx.pcap,rx-dev=3D/tmp/pdump-rx.pcap,mbuf- > size=3D2048' > + > +#. 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:: > + > + pkt=3Drdpcap('xxxx1.pcap') > + pkt[0].show2() > + pkt=3Drdpcap('xxxx2.pcap') > + pkt[0].show2() > + > + > +Test Case: 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=3D=3D=3D=3D > + > +Test total-num-mbufs option, set value within [1025~65535] > + > +steps: > + > +#. Boot up dpdk's testpmd with chained option:: > + > + ./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:: > + > + ./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:: > + > + pkt=3Drdpcap('xxxx1.pcap') > + pkt[0].show2() > + pkt=3Drdpcap('xxxx2.pcap') > + pkt[0].show2() > \ No newline at end of file > -- > 1.9.3