[dpdk-dev] [v2 00/23] Packet Framework

De Lara Guarch, Pablo pablo.de.lara.guarch at intel.com
Thu Jun 5 13:01:11 CEST 2014


Acked-by: Pablo de Lara Guarch <pablo.de.lara.guarch at intel.com>

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Cristian Dumitrescu
> Sent: Wednesday, June 04, 2014 7:08 PM
> To: dev at dpdk.org
> Subject: [dpdk-dev] [v2 00/23] Packet Framework
> 
> (Version 2 changes are exclusively style changes (checkpatch.pl) and patch
> consolidation, no functional change)
> 
> Intel DPDK Packet Framework provides a standard methodology (logically
> similar to OpenFlow) for rapid development of complex packet processing
> pipelines out of ports, tables and actions.
> 
> A pipeline is constructed by connecting its input ports to its output ports
> through a chain of lookup tables. As result of lookup operation into the
> current table, one of the table entries (or the default table entry, in case of
> lookup miss) is identified to provide the actions to be executed on the
> current packet and the associated action meta-data. The behavior of user
> actions is defined through the configurable table action handler, while the
> reserved actions define the next hop for the current packet (either another
> table, an output port or packet drop) and are handled transparently by the
> framework.
> 
> Three new Intel DPDK libraries are introduced for Packet Framework:
> librte_port, librte_table, librte_pipeline. Please check the Intel DPDK
> Programmer's Guide for full description of the Packet Framework design.
> 
> Two sample applications are provided for Packet Framework: app/test-
> pipeline and examples/ip_pipeline. Please check the Intel Sample Apps Guide
> for a detailed description of how these sample apps.
> 
> Cristian Dumitrescu (23):
>   librte_lpm: rule_is_present
>   mbuf: meta-data
>   Packet Framework librte_port: Port API
>   Packet Framework librte_port: ethdev ports
>   Packet Framework librte_port: ring ports
>   Packet Framework librte_port: IPv4 frag port
>   Packet Framework librte_port: IPv4 reassembly
>   Packet Framework librte_port: hierarchical scheduler port
>   Packet Framework librte_port: Source/Sink ports
>   Packet Framework librte_port: Build infrastructure
>   Packet Framework librte_table: Table API
>   Packet Framework librte_table: LPM IPv4 table
>   Packet Framework librte_table: LPM IPv6 table
>   Packet Framework librte_table: ACL table
>   Packet Framework librte_table: Hash tables
>   Packet Framework librte_table: array table
>   Packet Framework librte_table: Stub table
>   Packet Framework librte_table: Build infrastructure
>   Packet Framework librte_pipeline: Pipeline
>   librte_cfgfile: interpret config files
>   Packet Framework performance application
>   Packet Framework IPv4 pipeline sample app
>   Packet Framework unit tests
> 
>  app/Makefile                                       |    1 +
>  app/test-pipeline/Makefile                         |   66 +
>  app/test-pipeline/config.c                         |  248 +++
>  app/test-pipeline/init.c                           |  295 +++
>  app/test-pipeline/main.c                           |  180 ++
>  app/test-pipeline/main.h                           |  148 ++
>  app/test-pipeline/pipeline_acl.c                   |  278 +++
>  app/test-pipeline/pipeline_hash.c                  |  487 +++++
>  app/test-pipeline/pipeline_lpm.c                   |  196 ++
>  app/test-pipeline/pipeline_lpm_ipv6.c              |  200 ++
>  app/test-pipeline/pipeline_stub.c                  |  165 ++
>  app/test-pipeline/runtime.c                        |  185 ++
>  app/test/Makefile                                  |    6 +
>  app/test/commands.c                                |    4 +-
>  app/test/test.h                                    |    1 +
>  app/test/test_table.c                              |  220 +++
>  app/test/test_table.h                              |  204 ++
>  app/test/test_table_acl.c                          |  593 ++++++
>  app/test/test_table_acl.h                          |   35 +
>  app/test/test_table_combined.c                     |  784 ++++++++
>  app/test/test_table_combined.h                     |   55 +
>  app/test/test_table_pipeline.c                     |  603 ++++++
>  app/test/test_table_pipeline.h                     |   35 +
>  app/test/test_table_ports.c                        |  224 +++
>  app/test/test_table_ports.h                        |   42 +
>  app/test/test_table_tables.c                       |  907 +++++++++
>  app/test/test_table_tables.h                       |   50 +
>  config/common_bsdapp                               |   25 +
>  config/common_linuxapp                             |   24 +
>  doc/doxy-api-index.md                              |   17 +
>  doc/doxy-api.conf                                  |    3 +
>  examples/ip_pipeline/Makefile                      |   67 +
>  examples/ip_pipeline/cmdline.c                     | 1976 ++++++++++++++++++++
>  examples/ip_pipeline/config.c                      |  420 +++++
>  examples/ip_pipeline/init.c                        |  614 ++++++
>  examples/ip_pipeline/ip_pipeline.cfg               |   56 +
>  examples/ip_pipeline/ip_pipeline.sh                |   18 +
>  examples/ip_pipeline/main.c                        |  171 ++
>  examples/ip_pipeline/main.h                        |  306 +++
>  examples/ip_pipeline/pipeline_firewall.c           |  313 ++++
>  .../ip_pipeline/pipeline_flow_classification.c     |  306 +++
>  examples/ip_pipeline/pipeline_ipv4_frag.c          |  184 ++
>  examples/ip_pipeline/pipeline_ipv4_ras.c           |  181 ++
>  examples/ip_pipeline/pipeline_passthrough.c        |  213 +++
>  examples/ip_pipeline/pipeline_routing.c            |  474 +++++
>  examples/ip_pipeline/pipeline_rx.c                 |  385 ++++
>  examples/ip_pipeline/pipeline_tx.c                 |  283 +++
>  lib/Makefile                                       |    4 +
>  lib/librte_cfgfile/Makefile                        |   53 +
>  lib/librte_cfgfile/rte_cfgfile.c                   |  354 ++++
>  lib/librte_cfgfile/rte_cfgfile.h                   |  195 ++
>  lib/librte_eal/common/include/rte_hexdump.h        |    2 +
>  lib/librte_eal/common/include/rte_log.h            |    3 +
>  lib/librte_lpm/rte_lpm.c                           |   29 +
>  lib/librte_lpm/rte_lpm.h                           |   19 +
>  lib/librte_lpm/rte_lpm6.c                          |   31 +
>  lib/librte_lpm/rte_lpm6.h                          |   19 +
>  lib/librte_mbuf/rte_mbuf.h                         |   25 +
>  lib/librte_pipeline/Makefile                       |   54 +
>  lib/librte_pipeline/rte_pipeline.c                 | 1373 ++++++++++++++
>  lib/librte_pipeline/rte_pipeline.h                 |  664 +++++++
>  lib/librte_port/Makefile                           |   72 +
>  lib/librte_port/ipv4_frag_tbl.h                    |  403 ++++
>  lib/librte_port/ipv4_rsmbl.h                       |  429 +++++
>  lib/librte_port/rte_ipv4_frag.h                    |  253 +++
>  lib/librte_port/rte_port.h                         |  190 ++
>  lib/librte_port/rte_port_ethdev.c                  |  305 +++
>  lib/librte_port/rte_port_ethdev.h                  |   86 +
>  lib/librte_port/rte_port_frag.c                    |  235 +++
>  lib/librte_port/rte_port_frag.h                    |   94 +
>  lib/librte_port/rte_port_ras.c                     |  256 +++
>  lib/librte_port/rte_port_ras.h                     |   83 +
>  lib/librte_port/rte_port_ring.c                    |  237 +++
>  lib/librte_port/rte_port_ring.h                    |   82 +
>  lib/librte_port/rte_port_sched.c                   |  239 +++
>  lib/librte_port/rte_port_sched.h                   |   82 +
>  lib/librte_port/rte_port_source_sink.c             |  158 ++
>  lib/librte_port/rte_port_source_sink.h             |   70 +
>  lib/librte_table/Makefile                          |   85 +
>  lib/librte_table/rte_lru.h                         |  213 +++
>  lib/librte_table/rte_table.h                       |  202 ++
>  lib/librte_table/rte_table_acl.c                   |  490 +++++
>  lib/librte_table/rte_table_acl.h                   |   95 +
>  lib/librte_table/rte_table_array.c                 |  204 ++
>  lib/librte_table/rte_table_array.h                 |   76 +
>  lib/librte_table/rte_table_hash.h                  |  350 ++++
>  lib/librte_table/rte_table_hash_ext.c              | 1122 +++++++++++
>  lib/librte_table/rte_table_hash_key16.c            | 1100 +++++++++++
>  lib/librte_table/rte_table_hash_key32.c            | 1120 +++++++++++
>  lib/librte_table/rte_table_hash_key8.c             | 1398 ++++++++++++++
>  lib/librte_table/rte_table_hash_lru.c              | 1065 +++++++++++
>  lib/librte_table/rte_table_lpm.c                   |  347 ++++
>  lib/librte_table/rte_table_lpm.h                   |  115 ++
>  lib/librte_table/rte_table_lpm_ipv6.c              |  361 ++++
>  lib/librte_table/rte_table_lpm_ipv6.h              |  119 ++
>  lib/librte_table/rte_table_stub.c                  |   65 +
>  lib/librte_table/rte_table_stub.h                  |   62 +
>  mk/rte.app.mk                                      |   16 +
>  98 files changed, 26951 insertions(+), 1 deletions(-)
>  create mode 100644 app/test-pipeline/Makefile
>  create mode 100644 app/test-pipeline/config.c
>  create mode 100644 app/test-pipeline/init.c
>  create mode 100644 app/test-pipeline/main.c
>  create mode 100644 app/test-pipeline/main.h
>  create mode 100644 app/test-pipeline/pipeline_acl.c
>  create mode 100644 app/test-pipeline/pipeline_hash.c
>  create mode 100644 app/test-pipeline/pipeline_lpm.c
>  create mode 100644 app/test-pipeline/pipeline_lpm_ipv6.c
>  create mode 100644 app/test-pipeline/pipeline_stub.c
>  create mode 100644 app/test-pipeline/runtime.c
>  create mode 100644 app/test/test_table.c
>  create mode 100644 app/test/test_table.h
>  create mode 100644 app/test/test_table_acl.c
>  create mode 100644 app/test/test_table_acl.h
>  create mode 100644 app/test/test_table_combined.c
>  create mode 100644 app/test/test_table_combined.h
>  create mode 100644 app/test/test_table_pipeline.c
>  create mode 100644 app/test/test_table_pipeline.h
>  create mode 100644 app/test/test_table_ports.c
>  create mode 100644 app/test/test_table_ports.h
>  create mode 100644 app/test/test_table_tables.c
>  create mode 100644 app/test/test_table_tables.h
>  create mode 100644 examples/ip_pipeline/Makefile
>  create mode 100644 examples/ip_pipeline/cmdline.c
>  create mode 100644 examples/ip_pipeline/config.c
>  create mode 100644 examples/ip_pipeline/init.c
>  create mode 100644 examples/ip_pipeline/ip_pipeline.cfg
>  create mode 100644 examples/ip_pipeline/ip_pipeline.sh
>  create mode 100644 examples/ip_pipeline/main.c
>  create mode 100644 examples/ip_pipeline/main.h
>  create mode 100644 examples/ip_pipeline/pipeline_firewall.c
>  create mode 100644 examples/ip_pipeline/pipeline_flow_classification.c
>  create mode 100644 examples/ip_pipeline/pipeline_ipv4_frag.c
>  create mode 100644 examples/ip_pipeline/pipeline_ipv4_ras.c
>  create mode 100644 examples/ip_pipeline/pipeline_passthrough.c
>  create mode 100644 examples/ip_pipeline/pipeline_routing.c
>  create mode 100644 examples/ip_pipeline/pipeline_rx.c
>  create mode 100644 examples/ip_pipeline/pipeline_tx.c
>  create mode 100644 lib/librte_cfgfile/Makefile
>  create mode 100644 lib/librte_cfgfile/rte_cfgfile.c
>  create mode 100644 lib/librte_cfgfile/rte_cfgfile.h
>  create mode 100644 lib/librte_pipeline/Makefile
>  create mode 100644 lib/librte_pipeline/rte_pipeline.c
>  create mode 100644 lib/librte_pipeline/rte_pipeline.h
>  create mode 100644 lib/librte_port/Makefile
>  create mode 100644 lib/librte_port/ipv4_frag_tbl.h
>  create mode 100644 lib/librte_port/ipv4_rsmbl.h
>  create mode 100644 lib/librte_port/rte_ipv4_frag.h
>  create mode 100644 lib/librte_port/rte_port.h
>  create mode 100644 lib/librte_port/rte_port_ethdev.c
>  create mode 100644 lib/librte_port/rte_port_ethdev.h
>  create mode 100644 lib/librte_port/rte_port_frag.c
>  create mode 100644 lib/librte_port/rte_port_frag.h
>  create mode 100644 lib/librte_port/rte_port_ras.c
>  create mode 100644 lib/librte_port/rte_port_ras.h
>  create mode 100644 lib/librte_port/rte_port_ring.c
>  create mode 100644 lib/librte_port/rte_port_ring.h
>  create mode 100644 lib/librte_port/rte_port_sched.c
>  create mode 100644 lib/librte_port/rte_port_sched.h
>  create mode 100644 lib/librte_port/rte_port_source_sink.c
>  create mode 100644 lib/librte_port/rte_port_source_sink.h
>  create mode 100644 lib/librte_table/Makefile
>  create mode 100644 lib/librte_table/rte_lru.h
>  create mode 100644 lib/librte_table/rte_table.h
>  create mode 100644 lib/librte_table/rte_table_acl.c
>  create mode 100644 lib/librte_table/rte_table_acl.h
>  create mode 100644 lib/librte_table/rte_table_array.c
>  create mode 100644 lib/librte_table/rte_table_array.h
>  create mode 100644 lib/librte_table/rte_table_hash.h
>  create mode 100644 lib/librte_table/rte_table_hash_ext.c
>  create mode 100644 lib/librte_table/rte_table_hash_key16.c
>  create mode 100644 lib/librte_table/rte_table_hash_key32.c
>  create mode 100644 lib/librte_table/rte_table_hash_key8.c
>  create mode 100644 lib/librte_table/rte_table_hash_lru.c
>  create mode 100644 lib/librte_table/rte_table_lpm.c
>  create mode 100644 lib/librte_table/rte_table_lpm.h
>  create mode 100644 lib/librte_table/rte_table_lpm_ipv6.c
>  create mode 100644 lib/librte_table/rte_table_lpm_ipv6.h
>  create mode 100644 lib/librte_table/rte_table_stub.c
>  create mode 100644 lib/librte_table/rte_table_stub.h
> 
> --
> 1.7.7.6



More information about the dev mailing list