From: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [v2 00/23] Packet Framework
Date: Wed, 4 Jun 2014 19:08:16 +0100 [thread overview]
Message-ID: <1401905319-8882-1-git-send-email-cristian.dumitrescu@intel.com> (raw)
(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
next reply other threads:[~2014-06-04 18:08 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-04 18:08 Cristian Dumitrescu [this message]
2014-06-04 18:08 ` [dpdk-dev] [v2 01/23] librte_lpm: rule_is_present Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 02/23] mbuf: meta-data Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 03/23] Packet Framework librte_port: Port API Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 04/23] Packet Framework librte_port: ethdev ports Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 05/23] Packet Framework librte_port: ring ports Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 06/23] Packet Framework librte_port: IPv4 frag port Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 07/23] Packet Framework librte_port: IPv4 reassembly Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 08/23] Packet Framework librte_port: hierarchical scheduler port Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 09/23] Packet Framework librte_port: Source/Sink ports Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 10/23] Packet Framework librte_port: Build infrastructure Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 11/23] Packet Framework librte_table: Table API Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 12/23] Packet Framework librte_table: LPM IPv4 table Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 13/23] Packet Framework librte_table: LPM IPv6 table Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 14/23] Packet Framework librte_table: ACL table Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 15/23] Packet Framework librte_table: Hash tables Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 16/23] Packet Framework librte_table: array table Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 17/23] Packet Framework librte_table: Stub table Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 18/23] Packet Framework librte_table: Build infrastructure Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 19/23] Packet Framework librte_pipeline: Pipeline Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 20/23] librte_cfgfile: interpret config files Cristian Dumitrescu
2014-10-16 16:46 ` Thomas Monjalon
2014-10-17 18:16 ` Dumitrescu, Cristian
2014-10-17 18:50 ` Thomas Monjalon
2014-06-04 18:08 ` [dpdk-dev] [v2 21/23] Packet Framework performance application Cristian Dumitrescu
2014-06-04 18:08 ` [dpdk-dev] [v2 22/23] Packet Framework IPv4 pipeline sample app Cristian Dumitrescu
2014-06-09 9:11 ` Olivier MATZ
2014-06-09 10:49 ` Dumitrescu, Cristian
2014-06-09 12:13 ` Olivier MATZ
2014-06-09 13:25 ` Dumitrescu, Cristian
2014-06-09 15:51 ` Olivier MATZ
2014-06-04 18:08 ` [dpdk-dev] [v2 23/23] Packet Framework unit tests Cristian Dumitrescu
2014-06-05 11:01 ` [dpdk-dev] [v2 00/23] Packet Framework De Lara Guarch, Pablo
2014-06-05 11:43 ` Cao, Waterman
2014-06-05 14:40 ` Ivan Boule
2014-06-17 1:27 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1401905319-8882-1-git-send-email-cristian.dumitrescu@intel.com \
--to=cristian.dumitrescu@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).