From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 35B2E726F for ; Fri, 16 Mar 2018 18:56:53 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Mar 2018 10:56:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,316,1517904000"; d="scan'208";a="38616533" Received: from silpixa00381635.ir.intel.com (HELO silpixa00381635.ger.corp.intel.com) ([10.237.222.149]) by fmsmga001.fm.intel.com with ESMTP; 16 Mar 2018 10:56:50 -0700 From: Jasvinder Singh To: dev@dpdk.org Cc: cristian.dumitrescu@intel.com Date: Fri, 16 Mar 2018 17:56:05 +0000 Message-Id: <20180316175649.159107-1-jasvinder.singh@intel.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20180312172615.6621-2-jasvinder.singh@intel.com> References: <20180312172615.6621-2-jasvinder.singh@intel.com> Subject: [dpdk-dev] [PATCH v3 00/44] 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: Fri, 16 Mar 2018 17:56:55 -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. v3: - add IPv4, TCP/UDP checksum update for NAT action. - add IPv4 Checksum update for TTL action. - fix compilation warning v2: - split the patch that removes the existing pipeline components into multiple patches. - fix checkpatch errors. Jasvinder Singh (44): 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 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 entries ip_pipeline: add cli to delete pipeline table entry 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 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 | 165 + examples/ip_pipeline/action.h | 44 + examples/ip_pipeline/app.h | 1401 ------- examples/ip_pipeline/cli.c | 4261 ++++++++++++++++++++ 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 | 53 + 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 | 253 +- 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 | 930 +++++ examples/ip_pipeline/pipeline.h | 373 +- .../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 | 2485 +++++++++++- 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 | 6 +- lib/librte_pipeline/meson.build | 7 +- lib/librte_pipeline/rte_pipeline_version.map | 21 + lib/librte_pipeline/rte_table_action.c | 2284 +++++++++++ lib/librte_pipeline/rte_table_action.h | 853 ++++ 108 files changed, 13445 insertions(+), 27218 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_table_action.c create mode 100644 lib/librte_pipeline/rte_table_action.h -- 2.9.3