[dpdk-dev] [PATCH 00/37] ip_pipeline: refactoring
Jasvinder Singh
jasvinder.singh at intel.com
Fri Mar 9 19:23:49 CET 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.
Jasvinder Singh (37):
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: 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 | 48 +-
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 | 165 +
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 | 2484 +++++++++++-
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 | 2084 ++++++++++
lib/librte_pipeline/rte_table_action.h | 853 ++++
106 files changed, 13032 insertions(+), 27218 deletions(-)
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
More information about the dev
mailing list