[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