[dpdk-dev] [PATCH v4 00/49] ip_pipeline: refactoring
Jasvinder Singh
jasvinder.singh at intel.com
Thu Mar 29 20:31:19 CEST 2018
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
More information about the dev
mailing list