From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id A9EA32C18 for ; Thu, 29 Mar 2018 20:32:11 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Mar 2018 11:32:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,378,1517904000"; d="scan'208";a="216058801" Received: from silpixa00381635.ir.intel.com (HELO silpixa00381635.ger.corp.intel.com) ([10.237.222.149]) by fmsmga005.fm.intel.com with ESMTP; 29 Mar 2018 11:32:08 -0700 From: Jasvinder Singh To: dev@dpdk.org Cc: cristian.dumitrescu@intel.com Date: Thu, 29 Mar 2018 19:31:19 +0100 Message-Id: <20180329183208.103844-1-jasvinder.singh@intel.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20180316175906.159198-2-jasvinder.singh@intel.com> References: <20180316175906.159198-2-jasvinder.singh@intel.com> Subject: [dpdk-dev] [PATCH v4 00/49] ip_pipeline: refactoring 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: , X-List-Received-Date: Thu, 29 Mar 2018 18:32:12 -0000 Refactored the IP pipeline application. As result, the code base size (lines of code) reduces by ~60%. 1. Moved table actions into the librte_pipeline library. As result, the pre-fabricated pipelines from the application pipeline folder were removed. The flexibility is greatly improved, as now any action can be combined with any match (i.e. table type), which was not possible before. 2. Removed configuration file as the initialization method. Now all the pipelines are set up and assigned to threads through CLI commands for improved flexibility. 3. Replaced the local CLI with remote CLI. Any standard TCP client (e.g. telnet, netcat) can now connect to the app, send request as command string through the network and wait for the response string before pushing the next command. Results in better flexibility and automation. v4: - add pipeline port action APIs. - add load balance pipeline table action. - add cli for adding bulk entries to pipeline table. - add check to return error when pipeline is not enabled on the thread. - add source and sink port params to cli v3: - add checksum update for TTL and NAT action - fix build warning v2: - split the patch that removes the existing pipeline components into multiple patches. - fix checkpatch errors. Jasvinder Singh (49): pipeline: add pipeline table action APIs pipeline: get pipeline table action params pipeline: add traffic metering action pipeline: add traffic manager action pipeline: add packet encapsulation action pipeline: add nat action pipeline: add ttl update action pipeline: add statistics read action pipeline: add timestamp action pipeline: add load balance action pipeline: add pipeline port in action APIs librte_table/acl: remove incorrect check ip_pipeline: remove passthrough pipeline ip_pipeline: remove routing pipeline ip_pipeline: remove flow classification pipeline ip_pipeline: remove flow actions pipeline ip_pipeline: remove firewall pipeline ip_pipeline: remove master pipeline ip_pipeline: remove config ip_pipeline: rework and improvements ip_pipeline: add cli interface ip_pipeline: add mempool object for pipeline ip_pipeline: add link object ip_pipeline: add software queue object ip_pipeline: add traffic manager object ip_pipeline: add tap object ip_pipeline: add kni object ip_pipeline: add action profile object ip_pipeline: add pipeline object ip_pipeline: add threads ip_pipeline: add thread runtime ip_pipeline: add cli to enable and disable pipeline ip_pipeline: add cli to enable and disable pipeline port ip_pipeline: add cli to read pipeline port and table stats ip_pipeline: add cli for pipeline table entry ip_pipeline: add cli to delete pipeline table entry ip_pipeline: add cli for bulk entries to pipeline table ip_pipeline: add cli to read pipeline table entry stats ip_pipeline: add cli to configure meter profile ip_pipeline: add cli to read meter stats ip_pipeline: add cli to update dscp table ip_pipeline: add cli to read ttl stats ip_pipeline: add cli for load balance action ip_pipeline: add l2fwd example ip_pipeline: add KNI port example ip_pipeline: add TAP port example ip_pipeline: add route example ip_pipeline: add firewall example ip_pipeline: add flow classification example doc/api/doxy-api-index.md | 1 + examples/ip_pipeline/Makefile | 49 +- examples/ip_pipeline/action.c | 289 ++ examples/ip_pipeline/action.h | 77 + examples/ip_pipeline/app.h | 1401 ------ examples/ip_pipeline/cli.c | 4814 ++++++++++++++++++++ examples/ip_pipeline/cli.h | 18 + examples/ip_pipeline/common.h | 12 + examples/ip_pipeline/config/action.cfg | 68 - examples/ip_pipeline/config/action.sh | 119 - examples/ip_pipeline/config/action.txt | 8 - examples/ip_pipeline/config/diagram-generator.py | 317 -- .../ip_pipeline/config/edge_router_downstream.cfg | 97 - .../ip_pipeline/config/edge_router_downstream.sh | 13 - .../ip_pipeline/config/edge_router_upstream.cfg | 124 - .../ip_pipeline/config/edge_router_upstream.sh | 33 - examples/ip_pipeline/config/firewall.cfg | 68 - examples/ip_pipeline/config/firewall.sh | 13 - examples/ip_pipeline/config/firewall.txt | 9 - examples/ip_pipeline/config/flow.cfg | 72 - examples/ip_pipeline/config/flow.sh | 25 - examples/ip_pipeline/config/flow.txt | 17 - examples/ip_pipeline/config/ip_pipeline.cfg | 9 - examples/ip_pipeline/config/ip_pipeline.sh | 5 - examples/ip_pipeline/config/kni.cfg | 67 - examples/ip_pipeline/config/l2fwd.cfg | 58 - examples/ip_pipeline/config/l3fwd.cfg | 68 - examples/ip_pipeline/config/l3fwd.sh | 33 - examples/ip_pipeline/config/l3fwd_arp.cfg | 70 - examples/ip_pipeline/config/l3fwd_arp.sh | 43 - examples/ip_pipeline/config/network_layers.cfg | 227 - examples/ip_pipeline/config/network_layers.sh | 79 - .../ip_pipeline/config/pipeline-to-core-mapping.py | 906 ---- examples/ip_pipeline/config/tap.cfg | 64 - examples/ip_pipeline/config/tm_profile.cfg | 105 - examples/ip_pipeline/config_check.c | 488 -- examples/ip_pipeline/config_parse.c | 3395 -------------- examples/ip_pipeline/config_parse_tm.c | 419 -- examples/ip_pipeline/conn.c | 326 ++ examples/ip_pipeline/conn.h | 47 + examples/ip_pipeline/cpu_core_map.c | 471 -- examples/ip_pipeline/cpu_core_map.h | 40 - examples/ip_pipeline/examples/firewall.cli | 59 + examples/ip_pipeline/examples/flow.cli | 60 + examples/ip_pipeline/examples/kni.cli | 69 + examples/ip_pipeline/examples/l2fwd.cli | 51 + examples/ip_pipeline/examples/route.cli | 60 + examples/ip_pipeline/examples/tap.cli | 66 + examples/ip_pipeline/{pipeline => }/hash_func.h | 3 +- .../ip_pipeline/{pipeline => }/hash_func_arm64.h | 0 examples/ip_pipeline/init.c | 1927 -------- examples/ip_pipeline/kni.c | 167 + examples/ip_pipeline/kni.h | 44 + examples/ip_pipeline/link.c | 268 ++ examples/ip_pipeline/link.h | 63 + examples/ip_pipeline/main.c | 259 +- examples/ip_pipeline/mempool.c | 81 + examples/ip_pipeline/mempool.h | 40 + examples/ip_pipeline/meson.build | 35 +- examples/ip_pipeline/parser.c | 16 +- examples/ip_pipeline/parser.h | 8 + examples/ip_pipeline/pipeline.c | 973 ++++ examples/ip_pipeline/pipeline.h | 389 +- .../ip_pipeline/pipeline/pipeline_actions_common.h | 202 - examples/ip_pipeline/pipeline/pipeline_common_be.c | 176 - examples/ip_pipeline/pipeline/pipeline_common_be.h | 134 - examples/ip_pipeline/pipeline/pipeline_common_fe.c | 1455 ------ examples/ip_pipeline/pipeline/pipeline_common_fe.h | 231 - examples/ip_pipeline/pipeline/pipeline_firewall.c | 1421 ------ examples/ip_pipeline/pipeline/pipeline_firewall.h | 60 - .../ip_pipeline/pipeline/pipeline_firewall_be.c | 856 ---- .../ip_pipeline/pipeline/pipeline_firewall_be.h | 147 - .../ip_pipeline/pipeline/pipeline_flow_actions.c | 1286 ------ .../ip_pipeline/pipeline/pipeline_flow_actions.h | 60 - .../pipeline/pipeline_flow_actions_be.c | 983 ---- .../pipeline/pipeline_flow_actions_be.h | 139 - .../pipeline/pipeline_flow_classification.c | 1878 -------- .../pipeline/pipeline_flow_classification.h | 106 - .../pipeline/pipeline_flow_classification_be.c | 723 --- .../pipeline/pipeline_flow_classification_be.h | 113 - examples/ip_pipeline/pipeline/pipeline_master.c | 20 - examples/ip_pipeline/pipeline/pipeline_master.h | 12 - examples/ip_pipeline/pipeline/pipeline_master_be.c | 141 - examples/ip_pipeline/pipeline/pipeline_master_be.h | 12 - .../ip_pipeline/pipeline/pipeline_passthrough.c | 45 - .../ip_pipeline/pipeline/pipeline_passthrough.h | 12 - .../ip_pipeline/pipeline/pipeline_passthrough_be.c | 929 ---- .../ip_pipeline/pipeline/pipeline_passthrough_be.h | 44 - examples/ip_pipeline/pipeline/pipeline_routing.c | 1613 ------- examples/ip_pipeline/pipeline/pipeline_routing.h | 71 - .../ip_pipeline/pipeline/pipeline_routing_be.c | 1966 -------- .../ip_pipeline/pipeline/pipeline_routing_be.h | 283 -- examples/ip_pipeline/pipeline_be.h | 322 -- examples/ip_pipeline/swq.c | 74 + examples/ip_pipeline/swq.h | 37 + examples/ip_pipeline/tap.c | 97 + examples/ip_pipeline/tap.h | 29 + examples/ip_pipeline/thread.c | 2796 +++++++++++- examples/ip_pipeline/thread.h | 75 +- examples/ip_pipeline/thread_fe.c | 457 -- examples/ip_pipeline/thread_fe.h | 72 - examples/ip_pipeline/tmgr.c | 227 + examples/ip_pipeline/tmgr.h | 70 + lib/librte_pipeline/Makefile | 7 +- lib/librte_pipeline/meson.build | 7 +- lib/librte_pipeline/rte_pipeline_version.map | 29 + lib/librte_pipeline/rte_port_in_action.c | 531 +++ lib/librte_pipeline/rte_port_in_action.h | 301 ++ lib/librte_pipeline/rte_table_action.c | 2386 ++++++++++ lib/librte_pipeline/rte_table_action.h | 905 ++++ lib/librte_table/rte_table_acl.c | 6 - 111 files changed, 15520 insertions(+), 27228 deletions(-) create mode 100644 examples/ip_pipeline/action.c create mode 100644 examples/ip_pipeline/action.h delete mode 100644 examples/ip_pipeline/app.h create mode 100644 examples/ip_pipeline/cli.c create mode 100644 examples/ip_pipeline/cli.h create mode 100644 examples/ip_pipeline/common.h delete mode 100644 examples/ip_pipeline/config/action.cfg delete mode 100644 examples/ip_pipeline/config/action.sh delete mode 100644 examples/ip_pipeline/config/action.txt delete mode 100755 examples/ip_pipeline/config/diagram-generator.py delete mode 100644 examples/ip_pipeline/config/edge_router_downstream.cfg delete mode 100644 examples/ip_pipeline/config/edge_router_downstream.sh delete mode 100644 examples/ip_pipeline/config/edge_router_upstream.cfg delete mode 100644 examples/ip_pipeline/config/edge_router_upstream.sh delete mode 100644 examples/ip_pipeline/config/firewall.cfg delete mode 100644 examples/ip_pipeline/config/firewall.sh delete mode 100644 examples/ip_pipeline/config/firewall.txt delete mode 100644 examples/ip_pipeline/config/flow.cfg delete mode 100644 examples/ip_pipeline/config/flow.sh delete mode 100644 examples/ip_pipeline/config/flow.txt delete mode 100644 examples/ip_pipeline/config/ip_pipeline.cfg delete mode 100644 examples/ip_pipeline/config/ip_pipeline.sh delete mode 100644 examples/ip_pipeline/config/kni.cfg delete mode 100644 examples/ip_pipeline/config/l2fwd.cfg delete mode 100644 examples/ip_pipeline/config/l3fwd.cfg delete mode 100644 examples/ip_pipeline/config/l3fwd.sh delete mode 100644 examples/ip_pipeline/config/l3fwd_arp.cfg delete mode 100644 examples/ip_pipeline/config/l3fwd_arp.sh delete mode 100644 examples/ip_pipeline/config/network_layers.cfg delete mode 100644 examples/ip_pipeline/config/network_layers.sh delete mode 100755 examples/ip_pipeline/config/pipeline-to-core-mapping.py delete mode 100644 examples/ip_pipeline/config/tap.cfg delete mode 100644 examples/ip_pipeline/config/tm_profile.cfg delete mode 100644 examples/ip_pipeline/config_check.c delete mode 100644 examples/ip_pipeline/config_parse.c delete mode 100644 examples/ip_pipeline/config_parse_tm.c create mode 100644 examples/ip_pipeline/conn.c create mode 100644 examples/ip_pipeline/conn.h delete mode 100644 examples/ip_pipeline/cpu_core_map.c delete mode 100644 examples/ip_pipeline/cpu_core_map.h create mode 100644 examples/ip_pipeline/examples/firewall.cli create mode 100644 examples/ip_pipeline/examples/flow.cli create mode 100644 examples/ip_pipeline/examples/kni.cli create mode 100644 examples/ip_pipeline/examples/l2fwd.cli create mode 100644 examples/ip_pipeline/examples/route.cli create mode 100644 examples/ip_pipeline/examples/tap.cli rename examples/ip_pipeline/{pipeline => }/hash_func.h (99%) rename examples/ip_pipeline/{pipeline => }/hash_func_arm64.h (100%) delete mode 100644 examples/ip_pipeline/init.c create mode 100644 examples/ip_pipeline/kni.c create mode 100644 examples/ip_pipeline/kni.h create mode 100644 examples/ip_pipeline/link.c create mode 100644 examples/ip_pipeline/link.h create mode 100644 examples/ip_pipeline/mempool.c create mode 100644 examples/ip_pipeline/mempool.h create mode 100644 examples/ip_pipeline/pipeline.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_actions_common.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_common_be.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_common_be.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_common_fe.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_common_fe.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_firewall.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_firewall.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_firewall_be.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_firewall_be.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_flow_actions.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_flow_actions.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_flow_actions_be.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_flow_actions_be.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_flow_classification.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_flow_classification.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_flow_classification_be.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_flow_classification_be.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_master.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_master.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_master_be.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_master_be.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_passthrough.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_passthrough.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_passthrough_be.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_passthrough_be.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_routing.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_routing.h delete mode 100644 examples/ip_pipeline/pipeline/pipeline_routing_be.c delete mode 100644 examples/ip_pipeline/pipeline/pipeline_routing_be.h delete mode 100644 examples/ip_pipeline/pipeline_be.h create mode 100644 examples/ip_pipeline/swq.c create mode 100644 examples/ip_pipeline/swq.h create mode 100644 examples/ip_pipeline/tap.c create mode 100644 examples/ip_pipeline/tap.h delete mode 100644 examples/ip_pipeline/thread_fe.c delete mode 100644 examples/ip_pipeline/thread_fe.h create mode 100644 examples/ip_pipeline/tmgr.c create mode 100644 examples/ip_pipeline/tmgr.h create mode 100644 lib/librte_pipeline/rte_port_in_action.c create mode 100644 lib/librte_pipeline/rte_port_in_action.h create mode 100644 lib/librte_pipeline/rte_table_action.c create mode 100644 lib/librte_pipeline/rte_table_action.h -- 2.9.3