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 4AF58A04BA; Thu, 1 Oct 2020 19:16:31 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 98FFC1D56C; Thu, 1 Oct 2020 19:16:29 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by dpdk.org (Postfix) with ESMTP id E20171D568 for ; Thu, 1 Oct 2020 19:16:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1601572586; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=zuGVvDf7KcOF9Lc5QJrYmwD6KRF/RkXf7dkAWjR753w=; b=CpsgjUrrRuUfOe9g6CqMDPvzi8QSMu0aT2/CVY2JWm/2KZymn3GulN/lIdhkj8Xr2fwbYT rBI8xXmCVcbC3uW8TjNv64A6yWkJGxi0Szam86DCw8asJwyQDJjlfwKv0dNwmavcOwQZHQ 4VDIJv9k4HFeLmSXUf9zLf8tjU/5gEA= Received: from mail-vk1-f198.google.com (mail-vk1-f198.google.com [209.85.221.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-466-YNA2YhBjPdKMGIkU01BAdw-1; Thu, 01 Oct 2020 13:16:11 -0400 X-MC-Unique: YNA2YhBjPdKMGIkU01BAdw-1 Received: by mail-vk1-f198.google.com with SMTP id p196so665475vkp.22 for ; Thu, 01 Oct 2020 10:16:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zuGVvDf7KcOF9Lc5QJrYmwD6KRF/RkXf7dkAWjR753w=; b=X1g6ewzDRf9tVCv1CjhbuxKMqoKhcFkNHrpwAeq1DkDGWxCNRuhglyHo+HcR6bH1u5 PbjrgKBlHUKCAjqIgFB8Grk3HDqYIPaQQwSw7qM2AyA/U/sMJ2ZHLPMK5x01RgfH9vSS XcZGqwoEhkf+EdrLWWd+iTBhkgo9qXCUk90kXYD75yqh+E3J6ol26ByJ8YQtS+tVP8DL SO8Z7mBLvcnIysi7OQ+42V60ie0bXwoE9iYWSG3ebair6K8L8Mxdwaul4MhvxHCzJ9lA 6jmc37AVHxNnYnE8cONDK9JkJj7N2OWn0zSC/0uN/RL5S1UoQgs5ZxKmIYQLbLIcPwYc hOpA== X-Gm-Message-State: AOAM530gcZlcWa8EsJ38Gcgf8I8Vo5HPq9ObiiJWjh0y9t7ToV5sRmjP +O1ZXRUT/eWWZHhMyZgjD9KS/pEEBUTEltBkRQwTD/tlaeETZaYMfjR5AOzrLlxjKNPGuTWIxY0 2iukK7qkCwIiWDGsiXRQ= X-Received: by 2002:ab0:20a:: with SMTP id 10mr5601700uas.86.1601572570775; Thu, 01 Oct 2020 10:16:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz8e7lkkI5KYUzoi2TjYaqV4KqXTiFqxar05e8mTezzbBIQPOHj1Yk/k3io6z3bVuLxDmeIVCpAVTMqvGXZsZU= X-Received: by 2002:ab0:20a:: with SMTP id 10mr5601672uas.86.1601572570495; Thu, 01 Oct 2020 10:16:10 -0700 (PDT) MIME-Version: 1.0 References: <20200930063416.68428-2-cristian.dumitrescu@intel.com> <20201001102010.36861-1-cristian.dumitrescu@intel.com> In-Reply-To: <20201001102010.36861-1-cristian.dumitrescu@intel.com> From: David Marchand Date: Thu, 1 Oct 2020 19:15:59 +0200 Message-ID: To: Cristian Dumitrescu Cc: dev , Thomas Monjalon Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dmarchan@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v7 00/42] Pipeline alignment with the P4 language X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Thu, Oct 1, 2020 at 12:20 PM Cristian Dumitrescu wrote: > > This patch set introduces a new pipeline type that combines the DPDK > performance with the flexibility of the P4-16 language[1]. The new API > can be used either by itself to code a complete software switch (SWX) > or data plane app, or in combination with the open-source P4 compiler > P4C [2], potentially acting as a P4C back-end, thus allowing the P4 > programs to be translated to the DPDK API and run on multi-core CPUs. > > Main new features: > > * Nothing is hard-wired, everything is dynamically defined: The packet > headers (i.e. protocols), the packet meta-data, the actions, the > tables and the pipeline itself are dynamically defined instead of > having to be selected from a pre-defined set. > > * Instructions: The actions and the life of the packet through the > pipeline are defined with instructions that manipulate the pipeline > objects mentioned above. The pipeline is the main function of the > packet program, with actions as subroutines triggered by the tables. > > * Call external plugins: Extern objects and functions can be defined > to call functionality that cannot be efficiently implemented with > the existing pipeline-oriented instruction set, such as: special > error detecting/correcting codes, crypto, meters, stats arrays, > heuristics, etc. > > * Better control plane interaction: Transaction-oriented table update > mechanism that supports multi-table atomic updates. Multiple tables > can be updated in a single step with only the before and after table > sets visible to the packets. Alignment with P4Runtime [3]. > > * Performance: Multiple packets are in-flight within the pipeline at > any moment. Each packet is owned by a different time-sharing thread > in run-to-completion, with the thread pausing before memory access > operations such as packet I/O and table lookup to allow the memory > prefetch to complete. The instructions are verified and translated > at initialization time with no run-time impact. The instructions are > also optimized to detect and "fuse" frequently used patterns into > vector-like instructions transparently to the user. > > API deprecation and maturing roadmap: > * The existing pipeline stable API (rte_pipeline.h) to be deprecated > prior to and removed as part of the DPDK 21.11 LTS release. > * The new SWX pipeline experimental API (rte_swx_pipeline.h) to mature > and become stable as part of the same DPDK 21.11 LTS release. > > V7 changes: > * Set copyright year to 2020 for all new files. > * Fixed two Doxygen warnings. > > V6 changes: > * Fixed issues in the example app Makefile. > * Used rte_eth_link_speed_to_str() in the example app. > * Added release notes update. > > V5 changes: > * Upper case abberviations in some commit titles. > * Added new example app in the MAINTAINERS file. > * Absolutely no code changes. > > V4 changes: > * Spell check fixes. > > V3 changes: > * Removed the library Makefile support to align with the latest DPDK. > > V2 changes: > * Updated the title and commit messages to reflect the introduction of > the new SWX pipeline type. > * Added the API deprecation and maturing roadmap to the cover letter. > * Added support for building the SWX pipeline based on specification > file with syntax aligned to the P4 language. The spec file may be > generated by the P4C compiler in the future (see patch 32). Reworked > the examples accordingly (see patches 39, 40 and 41). > * Added support for the SWX sink port (used for packet drop or log) > when PCAP library is disabled from the build. > * Added checks to the application CLI commands to prevent execution > when dependencies of the current command have previously failed (see > patch 38). > * Fixed build warning for 32-bit targets due to the printing of 64-bit > statistics counters (see patch 38). > > [1] P4-16 specification: https://p4.org/p4-spec/docs/P4-16-v1.2.1.pdf > [2] P4-16 compiler: https://github.com/p4lang/p4c > [3] P4Runtime specification: > https://p4.org/p4runtime/spec/v1.2.0/P4Runtime-Spec.pdf > > Cristian Dumitrescu (41): > pipeline: add new SWX pipeline type > pipeline: add SWX pipeline input port > pipeline: add SWX pipeline output port > pipeline: add SWX headers and meta-data > pipeline: add SWX extern objects and funcs > pipeline: add SWX pipeline action > pipeline: add SWX pipeline tables > pipeline: add SWX pipeline instructions > pipeline: add SWX Rx and extract instructions > pipeline: add SWX Tx and emit instructions > pipeline: add header validate and invalidate SWX instructions > pipeline: add SWX move instruction > pipeline: add SWX DMA instruction > pipeline: introduce SWX add instruction > pipeline: introduce SWX subtract instruction > pipeline: introduce SWX ckadd instruction > pipeline: introduce SWX cksub instruction > pipeline: introduce SWX and instruction > pipeline: introduce SWX or instruction > pipeline: introduce SWX XOR instruction > pipeline: introduce SWX SHL instruction > pipeline: introduce SWX SHR instruction > pipeline: introduce SWX table instruction > pipeline: introduce SWX extern instruction > pipeline: introduce SWX jump and return instructions > pipeline: add SWX instruction description > pipeline: add SWX instruction verifier > pipeline: add SWX instruction optimizer > pipeline: add SWX pipeline query API > pipeline: add SWX pipeline flush > pipeline: add SWX table update high level API > pipeline: add SWX pipeline specification file > port: add ethernet device SWX port > port: add source and sink SWX ports > table: add exact match SWX table > examples/pipeline: add new example application > examples/pipeline: add message passing mechanism > examples/pipeline: add configuration commands > examples/pipeline: add l2fwd example > examples/pipeline: add l2fwd with MAC swap example > examples/pipeline: add VXLAN encapsulation example > doc: add new SWX pipeline type to release notes > - Fixed pipeline .map file - Annotated/sorted the experimental symbols in .map files touched by this series, - Updated doxygen index to include the new headers, - Switched the vxlan python script (coming with the pipeline example) to python3 + fixed some pylint trivial warnings, Series applied. -- David Marchand