[ovs-dev] [v4 04/12] docs/dpdk/bridge: add miniflow extract section.

Amber, Kumar kumar.amber at intel.com
Tue Jun 29 03:55:37 UTC 2021


Hi Flavio ,

Thanks Again replies inline.

> -----Original Message-----
> From: Flavio Leitner <fbl at sysclose.org>
> Sent: Monday, June 28, 2021 8:23 AM
> To: Amber, Kumar <kumar.amber at intel.com>
> Cc: dev at openvswitch.org; i.maximets at ovn.org
> Subject: Re: [ovs-dev] [v4 04/12] docs/dpdk/bridge: add miniflow extract
> section.
> 
> On Thu, Jun 17, 2021 at 09:57:46PM +0530, Kumar Amber wrote:
> > This commit adds a section to the dpdk/bridge.rst netdev
> > documentation, detailing the added miniflow functionality. The newly
> > added commands are documented, and sample output is provided.
> >
> > The use of auto-validator and special study function is also described
> > in detail as well as running fuzzy tests.
> 
> Usually we require to add the NEWS entry and documentation in the same
> patch adding the feature because they help to document the patch and keep
> sources integrity when bisecting.
> 

Split NEWS and Documentation into patches in v5.
> >
> > Signed-off-by: Kumar Amber <kumar.amber at intel.com>
> > Co-authored-by: Cian Ferriter <cian.ferriter at intel.com>
> > Signed-off-by: Cian Ferriter <cian.ferriter at intel.com>
> > Co-authored-by: Harry van Haaren <harry.van.haaren at intel.com>
> > Signed-off-by: Harry van Haaren <harry.van.haaren at intel.com>
> > ---
> >  Documentation/topics/dpdk/bridge.rst | 105
> +++++++++++++++++++++++++++
> >  NEWS                                 |   3 +
> >  2 files changed, 108 insertions(+)
> >
> > diff --git a/Documentation/topics/dpdk/bridge.rst
> > b/Documentation/topics/dpdk/bridge.rst
> > index f59e26cbe..b262b98f8 100644
> > --- a/Documentation/topics/dpdk/bridge.rst
> > +++ b/Documentation/topics/dpdk/bridge.rst
> > @@ -256,3 +256,108 @@ The following line should be seen in the
> > configure output when the above option  is used ::
> >
> >      checking whether DPIF AVX512 is default implementation... yes
> > +
> > +Miniflow Extract
> > +----------------
> > +
> > +Miniflow extract (MFEX) performs parsing of the raw packets and
> > +extracts the important header information into a compressed miniflow.
> > +This miniflow is composed of bits and blocks where the bits signify
> > +which blocks are set or have values where as the blocks hold the
> > +metadata, ip, udp, vlan, etc. These values are used by the datapath for
> switching decisions later.
> > +
> > +Most modern CPUs are have SIMD capabilities. These SIMD instructions
> > +are able
>                     ^^^^^^^^
> Have?
> 

Fixed the typo.

> > +to process a vector rather than act on one single data. OVS provides
> > +multiple implementations of miniflow extract. This allows the user to
> > +take advantage of SIMD instructions like AVX512 to gain additional
> performance.
> > +
> > +A list of implementations can be obtained by the following command.
> > +The command also shows whether the CPU supports each
> implementation ::
> > +
> > +    $ ovs-appctl dpif-netdev/miniflow-parser-get
> > +        Available Optimized Miniflow Extracts:
> > +          autovalidator (available: True)
> > +          disable (available: True)
> > +          study (available: True)
> > +          avx512_ip_udp (available: True)
> > +
> > +An implementation can be selected manually by the following command
> ::
> > +
> > +    $ ovs-appctl dpif-netdev/miniflow-parser-set study
> > +
> > +Also user can select the study implementation which studies the
> > +traffic for a specific number of packets by applying all availbale
> > +implementaions of
> 
> Typos already mentioned.
> 

Fixed and moved to unit test commit.

> > +miniflow extract and than chooses the one with most optimal result
> > +for that traffic pattern.
> > +
> > +Miniflow Extract Validation
> > +~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > +
> > +As multiple versions of miniflow extract can co-exist, each with
> > +different CPU ISA optimizations, it is important to validate that
> > +they all give the exact same results. To easily test all miniflow
> > +implementations, an ``autovalidator`` implementation of the miniflow
> > +exists. This implementation runs all other available miniflow extract
> > +implementations, and verifies that the results are identical.
> > +
> > +Running the OVS unit tests with the autovalidator enabled ensures all
> > +implementations provide the same results.
> > +
> > +To set the Miniflow autovalidator, use this command ::
> > +
> > +    $ ovs-appctl dpif-netdev/miniflow-parser-set autovalidator
> > +
> > +Unit Test Miniflow Extract
> > +++++++++++++++++++++++++++
> > +
> > +Unit test can also be used to test the workflow mentioned above by
> > +running the following test-case in tests/system-dpdk.at ::
> > +
> > +    make check-dpdk TESTSUITEFLAGS=6
> > +    6: OVS-DPDK - MFEX Autovalidator
> 
> This will change over time. Can we use -k <keyword> instead?
> 
Fixed and moved to unit test commit.

> > +
> > +The unit test uses mulitple traffic type to test the correctness of
> > +the implementaions.
> > +
> > +Running Fuzzy test with Autovalidator
> > ++++++++++++++++++++++++++++++++++++++
> > +
> > +Fuzzy tests can also be done on minfilow extract with the help of
> 
> Typo.
> 
Fixed and moved to unit test commit.

> > +auto-validator and Scapy. The steps below describes the steps to
> > +reproduce the setup with IP being fuzzed to generate packets.
> > +
> > +Scapy is used to create fuzzy IP packets and save them into a PCAP ::
> > +
> > +    pkt = fuzz(Ether()/IP()/TCP())
> > +
> > +Set the miniflow extract to autovalidator using ::
> > +
> > +    $ ovs-appctl dpif-netdev/miniflow-parser-set autovalidator
> > +
> > +OVS is configured to receive the generated packets ::
> > +
> > +    $ ovs-vsctl add-port br0 pcap0 -- \
> > +        set Interface pcap0 type=dpdk options:dpdk-devargs=net_pcap0
> > +        "rx_pcap=fuzzy.pcap"
> 
> This comes back to the point of adding the doc along with the test because I
> can't see how the test works in this patch.
> 
> 
Fixed and moved to unit test commit.

> > +
> > +With this workflow, the autovalidator will ensure that all MFEX
> > +implementations are classifying each packet in exactly the same way.
> > +If an optimized MFEX implementation causes a different miniflow to be
> > +generated, the autovalidator has ovs_assert and logging statements
> > +that will inform about the issue.
> > +
> > +Unit Fuzzy test with Autovalidator
> > ++++++++++++++++++++++++++++++++++++++
> > +
> > +The prerquiste before running the unit test is to run the script provided ::
> > +
> > +    tests/pcap/fuzzy.py
> > +
> > +This script generates a pcap with mulitple type of fuzzed packets to
> > +be used in the below unit test-case.
> > +
> > +Unit test can also be used to test the workflow mentioned above by
> > +running the following test-case in tests/system-dpdk.at ::
> > +
> > +    make check-dpdk TESTSUITEFLAGS=7
> 
> Same comment about using some keyword to identify the test.
>

Fixed and moved to unit test commit.
 
> > +    7: OVS-DPDK - MFEX Autovalidator Fuzzy
> > diff --git a/NEWS b/NEWS
> > index bc1db7948..63a485309 100644
> > --- a/NEWS
> > +++ b/NEWS
> > @@ -21,6 +21,9 @@ Post-v2.15.0
> >       * Enable the AVX512 DPCLS implementation to use VPOPCNT
> instruction if the
> >         CPU supports it. This enhances performance by using the native
> vpopcount
> >         instructions, instead of the emulated version of vpopcount.
> > +     * An optimized miniflow extract (mfex) implementation is now
> available,
> > +       which uses CPU SIMD ISA to parse specific traffic profiles efficiently.
> > +       Refer to the documentation for details on how to enable it at
> runtime.
> 
> Not yet! :)

Yea moved the NEWS sections accordingly .
> fbl
> 
> >     - ovs-ctl:
> >       * New option '--no-record-hostname' to disable hostname
> configuration
> >         in ovsdb on startup.
> > --
> > 2.25.1
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> 
> --
> fbl


More information about the dev mailing list