The application startup command line is::
- ip_pipeline [EAL_ARGS] -- [-s SCRIPT_FILE] [-h HOST] [-p PORT]
+ dpdk-ip_pipeline [EAL_ARGS] -- [-s SCRIPT_FILE] [-h HOST] [-p PORT]
The application startup arguments are:
.. code-block:: console
- $ ./build/ip_pipeline -c 0x3 -- -s examples/route_ecmp.cli
+ $ ./<build_dir>/examples/dpdk-ip_pipeline -c 0x3 -- -s examples/route_ecmp.cli
The application should start successfully and display as follows:
Initialization
~~~~~~~~~~~~~~
-During this stage, EAL layer is initialised and application specific arguments are parsed. Furthermore, the data strcutures
+During this stage, EAL layer is initialised and application specific arguments are parsed. Furthermore, the data structures
(i.e. linked lists) for application objects are initialized. In case of any initialization error, an error message
is displayed and the application is terminated.
Run-time
~~~~~~~~
-The master thread is creating and managing all the application objects based on CLI input.
+The main thread is creating and managing all the application objects based on CLI input.
Each data plane thread runs one or several pipelines previously assigned to it in round-robin order. Each data plane thread
executes two tasks in time-sharing mode:
1. *Packet processing task*: Process bursts of input packets read from the pipeline input ports.
2. *Message handling task*: Periodically, the data plane thread pauses the packet processing task and polls for request
- messages send by the master thread. Examples: add/remove pipeline to/from current data plane thread, add/delete rules
+ messages send by the main thread. Examples: add/remove pipeline to/from current data plane thread, add/delete rules
to/from given table of a specific pipeline owned by the current data plane thread, read statistics, etc.
Examples
+-----------------------+----------------------+----------------+------------------------------------+
| IP routing | LPM (IPv4) | Forward | 1. Mempool Create |
| | | | 2. Link create |
- | | * Key = IP dest addr | | 3. Pipeline creat |
+ | | * Key = IP dest addr | | 3. Pipeline create |
| | * Offset = 286 | | 4. Pipeline port in/out |
| | * Table size = 4K | | 5. Pipeline table |
| | | | 6. Pipeline port in table |
txq <n_queues> <queue_size> promiscuous on | off
[rss <qid_0> ... <qid_n>]
+ Note: The PCI device name must be specified in the Domain:Bus:Device.Function format.
+
Mempool
~~~~~~~
tmgr subport profile
<tb_rate> <tb_size>
- <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>
+ <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate>
+ <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate>
+ <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate>
<tc_period>
-
Add traffic manager pipe profile ::
tmgr pipe profile
<tb_rate> <tb_size>
- <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>
+ <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate>
+ <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate>
+ <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate>
<tc_period>
- <tc_ov_weight> <wrr_weight0..15>
+ <tc_ov_weight>
+ <wrr_weight0..3>
Create traffic manager port ::
rate <rate>
spp <n_subports_per_port>
pps <n_pipes_per_subport>
- qsize <qsize_tc0>
- <qsize_tc1> <qsize_tc2> <qsize_tc3>
- fo <frame_overhead> mtu <mtu> cpu <cpu_id>
+ fo <frame_overhead>
+ mtu <mtu>
+ cpu <cpu_id>
Configure traffic manager subport ::
[thread <thread_id>]
+Cryptodev
+~~~~~~~~~
+
+ Create cryptodev port ::
+
+ cryptodev <cryptodev_name>
+ dev <DPDK Cryptodev PMD name>
+ queue <n_queues> <queue_size>
+
Action profile
~~~~~~~~~~~~~~
[ttl drop | fwd
stats none | pkts]
[stats pkts | bytes | both]
+ [sym_crypto cryptodev <cryptodev_name>
+ mempool_create <mempool_name> mempool_init <mempool_name>]
[time]
[ttl dec | keep]
[stats]
[time]
+ [sym_crypto
+ encrypt | decrypt
+ type
+ | cipher
+ cipher_algo <algo> cipher_key <key> cipher_iv <iv>
+ | cipher_auth
+ cipher_algo <algo> cipher_key <key> cipher_iv <iv>
+ auth_algo <algo> auth_key <key> digest_size <size>
+ | aead
+ aead_algo <algo> aead_key <key> aead_iv <iv> aead_aad <aad>
+ digest_size <size>
+ data_offset <data_offset>]
where:
<pa> ::= g | y | r | drop