From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 0D7E11B4AA for ; Fri, 1 Feb 2019 06:43:51 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Jan 2019 21:43:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,547,1539673200"; d="scan'208";a="140668538" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga004.fm.intel.com with ESMTP; 31 Jan 2019 21:43:50 -0800 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 31 Jan 2019 21:43:50 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx117.amr.corp.intel.com (10.18.116.17) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 31 Jan 2019 21:43:49 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.102]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.109]) with mapi id 14.03.0415.000; Fri, 1 Feb 2019 13:43:47 +0800 From: "Chen, Zhaoyan" To: yufengmx <"yufengx.mo@intel.com"@intel.com>, "dts@dpdk.org" CC: "Chen, Zhaoyan" Thread-Topic: [dts] [PATCH V2][bonding/802.3ad]: test plan for testpmd bonding/802.3ad mode Thread-Index: AQHUuS5SvPjiVTPEREWpCOB8HT296aXIZMyAgAIK7cA= Date: Fri, 1 Feb 2019 05:43:47 +0000 Message-ID: <9DEEADBC57E43F4DA73B571777FECECA41C279F6@SHSMSX104.ccr.corp.intel.com> References: <1548916305-182681-1-git-send-email-yufengx.mo@intel.com> <1548916305-182681-2-git-send-email-yufengx.mo@intel.com> In-Reply-To: <1548916305-182681-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.400.15 dlp-reaction: no-action 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 V2][bonding/802.3ad]: test plan for testpmd bonding/802.3ad mode 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: Fri, 01 Feb 2019 05:43:52 -0000 Acked-by: Zhaoyan Chen Regards, Zhaoyan Chen > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of yufengmx > Sent: Thursday, January 31, 2019 2:32 PM > To: dts@dpdk.org > Cc: yufengmx <"yufengx.mo@intel.com"@intel.com> > Subject: [dts] [PATCH V2][bonding/802.3ad]: test plan for testpmd > bonding/802.3ad mode >=20 >=20 > link bonding mode 4 is IEEE 802.3ad Dynamic link aggregation. Creates agg= regation > groups that share the same speed and duplex settings. Utilizes all slaves= in the active > aggregator according to the 802.3ad specification. DPDK realize it based = on 802.1AX > specification, it includes LACP protocal and Marker protocol. This mode r= equires a > switch that supports IEEE 802.3ad Dynamic link aggregation. >=20 > Signed-off-by: yufengmx > --- > test_plans/pmd_bonded_8023ad_test_plan.rst | 421 > +++++++++++++++++++++++++++++ > 1 file changed, 421 insertions(+) > create mode 100644 test_plans/pmd_bonded_8023ad_test_plan.rst >=20 > diff --git a/test_plans/pmd_bonded_8023ad_test_plan.rst > b/test_plans/pmd_bonded_8023ad_test_plan.rst > new file mode 100644 > index 0000000..140f83c > --- /dev/null > +++ b/test_plans/pmd_bonded_8023ad_test_plan.rst > @@ -0,0 +1,421 @@ > +.. 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. > + > +Link Bonding for mode 4 (802.3ad) > +=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 > + > +This test plan is mainly to test link bonding mode 4(802.3ad) function > +via testpmd. > + > +link bonding mode 4 is IEEE 802.3ad Dynamic link aggregation. Creates > +aggregation groups that share the same speed and duplex settings. > +Utilizes all slaves in the active aggregator according to the 802.3ad > +specification. DPDK realize it based on 802.1AX specification, it > +includes LACP protocal and Marker protocol. This mode requires a switch > +that supports IEEE 802.3ad Dynamic link aggregation. > + > +note: Slave selection for outgoing traffic is done according to the > +transmit hash policy, which may be changed from the default simple XOR l= ayer2 > policy. > + > +Requirements > +------------ > + > +#. Bonded ports shall maintain statistics similar to normal port. > + > +#. The slave links shall be monitor for link status change. See also the= concept > + of up/down time delay to handle situations such as a switch reboots, = it is > + possible that its ports report "link up" status before they become us= able. > + > +#. Upon unbonding the bonding PMD driver must restore the MAC addresses = that > the > + slaves had before they were enslaved. > + > +#. According to the bond type, when the bond interface is placed in prom= iscuous > + mode it will propagate the setting to the slave devices. > + > +#. LACP control packet filtering offload. It is a idea of performance > + improvement, which use hardware offloads to improve packet classifica= tion. > + > +#. support three 802.3ad aggregation selection logic modes (stable/bandw= idth/ > + count). The Selection Logic selects a compatible Aggregator for a por= t, using > + the port LAG ID. The Selection Logic may determine that the link shou= ld be > + operated as a standby link if there are constraints on the simultaneo= us > + attachment of ports that have selected the same Aggregator. > + > +#. technical details refer to content attached in website:: > + > + http://dpdk.org/ml/archives/dev/2017-May/066143.html > + > +#. DPDK technical details refer to:: > + > + dpdk/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst: > + ``Link Aggregation 802.3AD (Mode 4)`` > + > +#. linux technical document of 802.3ad as testing reference document:: > + > + > + https://www.kernel.org/doc/Documentation/networking/bonding.txt:``802. > + 3ad`` > + > +Prerequisites for Bonding > +=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 > +all link ports of switch/dut should be the same data rate and support fu= ll-duplex. > + > +Functional testing hardware configuration > +----------------------------------------- > +NIC and DUT ports requirements: > + > +- Tester: 2 ports of nic > +- DUT: 2 ports of nic > + > +port topology diagram:: > + > + Tester DUT > + .-------. .-------. > + | port0 | <------------------> | port0 | > + | port1 | <------------------> | port1 | > + '-------' '-------' > + > +Test Case : basic behavior start/stop > +=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 > +#. check bonded device stop/start action under frequency operation > +status > + > +steps > +----- > + > +#. bind two ports:: > + > + ./usertools/dpdk-devbind.py --bind=3Digb_uio + address 2> > + > +#. boot up testpmd:: > + > + ./testpmd -c 0xXXXXX -n 4 -- -i --tx-offloads=3D0xXXXX > + > +#. run testpmd command of bonding:: > + > + testpmd> port stop all > + testpmd> create bonded device 4 0 > + testpmd> add bonding slave 0 2 > + testpmd> add bonding slave 1 2 > + > +#. loop execute this step 10 times, check if bonded device still work:: > + > + testpmd> port stop all > + testpmd> port start all > + testpmd> start > + testpmd> show bonding config 2 > + testpmd> stop > + > +#. quit testpmd:: > + > + testpmd> stop > + testpmd> quit > + > +Test Case : basic behavior mac > +=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 > +#. bonded device's default mac is one of each slave's mac after one slav= e has > + been added. > +#. when no slave attached, mac should be 00:00:00:00:00:00 #. slave's > +mac restore the MAC addresses that the slave has before they were > +enslaved. > + > +steps > +----- > + > +#. bind two ports:: > + > + ./usertools/dpdk-devbind.py --bind=3Digb_uio + address 2> > + > +#. boot up testpmd:: > + > + ./testpmd -c 0xXXXXX -n 4 -- -i --tx-offloads=3D0xXXXX > + > +#. run testpmd command of bonding:: > + > + testpmd> port stop all > + testpmd> create bonded device 4 0 > + > +#. check bond device mac should be 00:00:00:00:00:00:: > + > + testpmd> show bonding config 2 > + > +#. add two slaves to bond port:: > + > + testpmd> add bonding slave 0 2 > + testpmd> add bonding slave 1 2 > + testpmd> port start all > + > +#. check bond device mac should be one of each slave's mac:: > + > + testpmd> show bonding config 0 > + testpmd> show bonding config 1 > + testpmd> show bonding config 2 > + > +#. quit testpmd:: > + > + testpmd> stop > + testpmd> quit > + > +Test Case : basic behavior link up/down > +=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=3D=3D > +#. bonded device should be down status without slaves. > +#. bonded device device should have the same status of link status. > +#. Active Slaves status should change with the slave status change. > + > +steps > +----- > + > +#. bind two ports:: > + > + ./usertools/dpdk-devbind.py --bind=3Digb_uio + address 2> > + > +#. boot up testpmd:: > + > + ./testpmd -c 0xXXXXX -n 4 -- -i --tx-offloads=3D0xXXXX > + > +#. run testpmd command of bonding:: > + > + testpmd> port stop all > + testpmd> create bonded device 4 0 > + testpmd> add bonding slave 0 2 > + testpmd> add bonding slave 1 2 > + > +#. stop bonded device and check bonded device/slaves link status:: > + > + testpmd> port stop 2 > + testpmd> show bonding config 2 > + testpmd> show bonding config 1 > + testpmd> show bonding config 0 > + > +#. start bonded device and check bonded device/slaves link status:: > + > + testpmd> port start 2 > + testpmd> show bonding config 2 > + testpmd> show bonding config 1 > + testpmd> show bonding config 0 > + > +#. quit testpmd:: > + > + testpmd> stop > + testpmd> quit > + > +Test Case : basic behavior promiscuous mode > +=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=3D=3D=3D=3D=3D=3D=3D > +#. bonded device promiscuous mode should be ``enabled`` by default. > +#. bonded device/slave device should have the same status of promiscuous= mode. > + > +steps > +----- > + > +#. bind two ports:: > + > + ./usertools/dpdk-devbind.py --bind=3Digb_uio + address 2> > + > +#. boot up testpmd:: > + > + ./testpmd -c 0xXXXXX -n 4 -- -i --tx-offloads=3D0xXXXX > + > +#. run testpmd command of bonding:: > + > + testpmd> port stop all > + testpmd> create bonded device 4 0 > + > +#. check if bonded device promiscuous mode is ``enabled``:: > + > + testpmd> show bonding config 2 > + > +#. add two slaves and check if promiscuous mode is ``enabled``:: > + > + testpmd> add bonding slave 0 2 > + testpmd> add bonding slave 1 2 > + testpmd> show bonding config 0 > + testpmd> show bonding config 1 > + > +#. disable bonded device promiscuous mode and check promiscuous mode:: > + > + testpmd> set promisc 2 off > + testpmd> show bonding config 2 > + > +#. enable bonded device promiscuous mode and check promiscuous mode:: > + > + testpmd> set promisc 2 on > + testpmd> show bonding config 2 > + > +#. check slaves' promiscuous mode:: > + > + testpmd> show bonding config 0 > + testpmd> show bonding config 1 > + > +#. quit testpmd:: > + > + testpmd> stop > + testpmd> quit > + > +Test Case : basic behavior agg mode > +=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 > +#. stable is the default agg mode. > +#. check 802.3ad aggregation mode configuration, support :: > + ``count`` > + ``stable`` > + ``bandwidth`` > + > +steps > +----- > + > +#. bind two ports:: > + > + ./usertools/dpdk-devbind.py --bind=3Digb_uio + address 2> > + > +#. boot up testpmd:: > + > + ./testpmd -c 0xXXXXX -n 4 -- -i --tx-offloads=3D0xXXXX > + > +#. run testpmd command of bonding:: > + > + testpmd> port stop all > + testpmd> create bonded device 4 0 > + testpmd> add bonding slave 0 2 > + testpmd> add bonding slave 1 2 > + testpmd> port start all > + testpmd> show bonding config 2 > + testpmd> set bonding agg_mode 2 > + > +#. check if agg_mode set successful:: > + > + testpmd> show bonding config 2 > + Bonding mode: 4 > + IEEE802.3AD Aggregator Mode: > + Slaves (2): [0 1] > + Active Slaves (2): [0 1] > + Primary: [0] > + > +#. quit testpmd:: > + > + testpmd> stop > + testpmd> quit > + > +Test Case : basic behavior dedicated queues > +=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=3D=3D=3D=3D=3D=3D > +#. check 802.3ad dedicated queues is ``disable`` by default #. check > +802.3ad set dedicated queues, support :: > + ``disable`` > + ``enable`` > + > +steps > +----- > + > +#. bind two ports:: > + > + ./usertools/dpdk-devbind.py --bind=3Digb_uio + address 2> > + > +#. boot up testpmd:: > + > + ./testpmd -c 0xXXXXX -n 4 -- -i --tx-offloads=3D0xXXXX > + > +#. run testpmd command of bonding:: > + > + testpmd> port stop all > + testpmd> create bonded device 4 0 > + testpmd> add bonding slave 0 2 > + testpmd> add bonding slave 1 2 > + testpmd> show bonding config 2 > + > +#. check if dedicated_queues disable successful:: > + > + testpmd> set bonding lacp dedicated_queues 2 disable > + > +#. check if bonded port can start:: > + > + testpmd> port start all > + testpmd> start > + > +#. check if dedicated_queues enable successful:: > + > + testpmd> stop > + testpmd> port stop all > + testpmd> set bonding lacp dedicated_queues 2 enable > + > +#. check if bonded port can start:: > + > + testpmd> port start all > + testpmd> start > + > +#. quit testpmd:: > + > + testpmd> stop > + testpmd> quit > + > +Test Case : command line option > +=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 > +#. check command line option:: > + > + slave=3D<0000:xx:00.0> > + agg_mode=3D > + > +#. compare bonding configuration with expected configuration. > + > +steps > +----- > + > +#. bind two ports:: > + > + ./usertools/dpdk-devbind.py --bind=3Digb_uio + address 2> > + > +#. boot up testpmd :: > + > + ./testpmd -c 0x0f -n 4 \ > + --vdev > 'net_bonding0,slave=3D0000:xx:00.0,slave=3D0000:xx:00.1,mode=3D4,agg_mode= =3D on>' \ > + -- -i --port-topology=3Dchained > + > +#. run testpmd command of bonding:: > + > + testpmd> port stop all > + > +#. check if bonded device has been created and slaves have been bonded s= uccessful:: > + > + testpmd> show bonding config 2 > + Bonding mode: 4 > + IEEE802.3AD Aggregator Mode: > + Slaves (2): [0 1] > + Active Slaves (2): [0 1] > + Primary: [0] > + > +#. check if bonded port can start:: > + > + testpmd> port start all > + testpmd> start > + > +#. check if dedicated_queues enable successful:: > + > + testpmd> stop > + testpmd> port stop all > + > +#. quit testpmd:: > + > + testpmd> quit > \ No newline at end of file > -- > 1.9.3