DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 00/29] Packet Framework
@ 2014-05-27 17:09 Cristian Dumitrescu
  2014-05-27 17:09 ` [dpdk-dev] [PATCH 01/29] librte_lpm: rule_is_present Cristian Dumitrescu
                   ` (30 more replies)
  0 siblings, 31 replies; 38+ messages in thread
From: Cristian Dumitrescu @ 2014-05-27 17:09 UTC (permalink / raw)
  To: dev

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 (29):
  librte_lpm: rule_is_present
  hexdump: fixed minor build issue
  log: added log IDs for Packet Framework libraries
  mbuf: added offset of packet meta-data in the packet buffer just
    after mbuf
  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: Makefile
  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: Makefile
  Packet Framework librte_pipeline: Pipeline
  Packet Framework librte_pipeline: Makefile
  librte_cfgfile: interpret config files
  librte_cfgfile: Makefile
  Packet Framework: build infrastructure
  Packet Framework performance application
  Packet Framework IPv4 pipeline sample app
  app/Makefile: enable app/test-pipeline
  Packet Framework unit tests

 app/Makefile                                       |    1 +
 app/test-pipeline/Makefile                         |   66 +
 app/test-pipeline/config.c                         |  252 +++
 app/test-pipeline/init.c                           |  305 ++++
 app/test-pipeline/main.c                           |  181 ++
 app/test-pipeline/main.h                           |  148 ++
 app/test-pipeline/pipeline_acl.c                   |  274 +++
 app/test-pipeline/pipeline_hash.c                  |  496 +++++
 app/test-pipeline/pipeline_lpm.c                   |  196 ++
 app/test-pipeline/pipeline_lpm_ipv6.c              |  198 ++
 app/test-pipeline/pipeline_stub.c                  |  167 ++
 app/test-pipeline/runtime.c                        |  188 ++
 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                              |  207 +++
 app/test/test_table_acl.c                          |  591 ++++++
 app/test/test_table_acl.h                          |   36 +
 app/test/test_table_combined.c                     |  745 ++++++++
 app/test/test_table_combined.h                     |   56 +
 app/test/test_table_pipeline.c                     |  590 ++++++
 app/test/test_table_pipeline.h                     |   36 +
 app/test/test_table_ports.c                        |  215 +++
 app/test/test_table_ports.h                        |   43 +
 app/test/test_table_tables.c                       |  801 ++++++++
 app/test/test_table_tables.h                       |   51 +
 config/common_bsdapp                               |   25 +
 config/common_linuxapp                             |   24 +
 examples/ip_pipeline/Makefile                      |   67 +
 examples/ip_pipeline/cmdline.c                     | 1909 ++++++++++++++++++++
 examples/ip_pipeline/config.c                      |  381 ++++
 examples/ip_pipeline/init.c                        |  637 +++++++
 examples/ip_pipeline/ip_pipeline.cfg               |   56 +
 examples/ip_pipeline/ip_pipeline.sh                |   18 +
 examples/ip_pipeline/main.c                        |  170 ++
 examples/ip_pipeline/main.h                        |  306 ++++
 examples/ip_pipeline/pipeline_firewall.c           |  311 ++++
 .../ip_pipeline/pipeline_flow_classification.c     |  300 +++
 examples/ip_pipeline/pipeline_ipv4_frag.c          |  183 ++
 examples/ip_pipeline/pipeline_ipv4_ras.c           |  179 ++
 examples/ip_pipeline/pipeline_passthrough.c        |  211 +++
 examples/ip_pipeline/pipeline_routing.c            |  459 +++++
 examples/ip_pipeline/pipeline_rx.c                 |  380 ++++
 examples/ip_pipeline/pipeline_tx.c                 |  281 +++
 lib/Makefile                                       |    4 +
 lib/librte_cfgfile/Makefile                        |   53 +
 lib/librte_cfgfile/rte_cfgfile.c                   |  326 ++++
 lib/librte_cfgfile/rte_cfgfile.h                   |   90 +
 lib/librte_eal/common/include/rte_hexdump.h        |    2 +
 lib/librte_eal/common/include/rte_log.h            |    3 +
 lib/librte_lpm/rte_lpm.c                           |   26 +
 lib/librte_lpm/rte_lpm.h                           |   18 +
 lib/librte_lpm/rte_lpm6.c                          |   30 +
 lib/librte_lpm/rte_lpm6.h                          |   18 +
 lib/librte_mbuf/rte_mbuf.h                         |   17 +
 lib/librte_pipeline/Makefile                       |   54 +
 lib/librte_pipeline/rte_pipeline.c                 | 1336 ++++++++++++++
 lib/librte_pipeline/rte_pipeline.h                 |  651 +++++++
 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                    |  254 +++
 lib/librte_port/rte_port.h                         |  190 ++
 lib/librte_port/rte_port_ethdev.c                  |  306 ++++
 lib/librte_port/rte_port_ethdev.h                  |   86 +
 lib/librte_port/rte_port_frag.c                    |  230 +++
 lib/librte_port/rte_port_frag.h                    |   94 +
 lib/librte_port/rte_port_ras.c                     |  259 +++
 lib/librte_port/rte_port_ras.h                     |   83 +
 lib/librte_port/rte_port_ring.c                    |  242 +++
 lib/librte_port/rte_port_ring.h                    |   82 +
 lib/librte_port/rte_port_sched.c                   |  237 +++
 lib/librte_port/rte_port_sched.h                   |   82 +
 lib/librte_port/rte_port_source_sink.c             |  159 ++
 lib/librte_port/rte_port_source_sink.h             |   70 +
 lib/librte_table/Makefile                          |   85 +
 lib/librte_table/rte_lru.h                         |  198 ++
 lib/librte_table/rte_table.h                       |  201 ++
 lib/librte_table/rte_table_acl.c                   |  463 +++++
 lib/librte_table/rte_table_acl.h                   |   95 +
 lib/librte_table/rte_table_array.c                 |  198 ++
 lib/librte_table/rte_table_array.h                 |   76 +
 lib/librte_table/rte_table_hash.h                  |  349 ++++
 lib/librte_table/rte_table_hash_ext.c              | 1070 +++++++++++
 lib/librte_table/rte_table_hash_key16.c            | 1086 +++++++++++
 lib/librte_table/rte_table_hash_key32.c            | 1100 +++++++++++
 lib/librte_table/rte_table_hash_key8.c             | 1372 ++++++++++++++
 lib/librte_table/rte_table_hash_lru.c              | 1021 +++++++++++
 lib/librte_table/rte_table_lpm.c                   |  332 ++++
 lib/librte_table/rte_table_lpm.h                   |  115 ++
 lib/librte_table/rte_table_lpm_ipv6.c              |  340 ++++
 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 +
 96 files changed, 26239 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

^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2014-06-05 13:22 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-27 17:09 [dpdk-dev] [PATCH 00/29] Packet Framework Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 01/29] librte_lpm: rule_is_present Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 02/29] hexdump: fixed minor build issue Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 03/29] log: added log IDs for Packet Framework libraries Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 04/29] mbuf: added offset of packet meta-data in the packet buffer just after mbuf Cristian Dumitrescu
2014-05-28 12:03   ` Ivan Boule
2014-05-29 22:28     ` Dumitrescu, Cristian
2014-06-02 12:24       ` Ivan Boule
2014-06-05 13:22         ` Dumitrescu, Cristian
2014-05-29 22:37     ` Dumitrescu, Cristian
2014-05-27 17:09 ` [dpdk-dev] [PATCH 05/29] Packet Framework librte_port: Port API Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 06/29] Packet Framework librte_port: ethdev ports Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 07/29] Packet Framework librte_port: ring ports Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 08/29] Packet Framework librte_port: IPv4 frag port Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 09/29] Packet Framework librte_port: IPv4 reassembly Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 10/29] Packet Framework librte_port: hierarchical scheduler port Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 11/29] Packet Framework librte_port: Source/Sink ports Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 12/29] Packet Framework librte_port: Makefile Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 13/29] Packet Framework librte_table: Table API Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 14/29] Packet Framework librte_table: LPM IPv4 table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 15/29] Packet Framework librte_table: LPM IPv6 table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 16/29] Packet Framework librte_table: ACL table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 17/29] Packet Framework librte_table: Hash tables Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 18/29] Packet Framework librte_table: array table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 19/29] Packet Framework librte_table: Stub table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 20/29] Packet Framework librte_table: Makefile Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 21/29] Packet Framework librte_pipeline: Pipeline Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 22/29] Packet Framework librte_pipeline: Makefile Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 23/29] librte_cfgfile: interpret config files Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 24/29] librte_cfgfile: Makefile Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 25/29] Packet Framework: build infrastructure Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 26/29] Packet Framework performance application Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 27/29] Packet Framework IPv4 pipeline sample app Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 28/29] app/Makefile: enable app/test-pipeline Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 29/29] Packet Framework unit tests Cristian Dumitrescu
2014-05-27 19:47 ` [dpdk-dev] [PATCH 00/29] Packet Framework Neil Horman
2014-05-29 20:06   ` Dumitrescu, Cristian
2014-06-04 14:16 ` Cao, Waterman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).