DPDK Interfaces Configuration [Документация VAS Experts]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:dpi:dpi_components:platform:dpi_config [2026/03/02 14:28] – [Ports configuration] elena.krasnobryzhen:dpi:dpi_components:platform:dpi_config [2026/06/03 11:33] (current) – [dpdk_engine=7: Explicit Dispatcher Configuration] elena.krasnobryzh
Line 396: Line 396:
   * TX queue count = number of processing threads. Processing threads write directly to their own TX queue on the card.   * TX queue count = number of processing threads. Processing threads write directly to their own TX queue on the card.
  
 +==== dpdk_engine=7: Explicit Dispatcher Configuration ====
 +<note important>This ''dpdk_engine'' is available starting from version 14.2!</note>
 +
 +This engine allows you to explicitly define which ports are served by each dispatcher. It is intended for complex and heterogeneous configurations where standard dispatcher distribution schemes are not suitable. For example, when a cluster contains ports with different performance characteristics (100G, 40G, 10G) or when individual processing parameters are required for specific groups of ports.
 +
 +The number of dispatchers is determined by the number of ''dpdk_dispatch'' parameters. If the ''rss=N'' parameter is specified for a dispatcher, N dispatchers will be created — one for each RX queue.
 +
 +A ''mempool'' must be specified for each dispatcher. The size and number of ''mempools'' are configured independently and may differ between dispatchers.
 +
 +This engine is universal and can be used to implement all dispatcher distribution schemes supported by other ''dpdk_engine'' values.
 +
 +Dispatchers are configured using ''dpdk_dispatch'' parameters.
 +
 +The following configuration errors are considered fatal:
 +  * a cluster port is not included in any ''<port-list>'' of a ''dpdk_dispatch'' parameter
 +  * a cluster port is included in the ''<port-list>'' of multiple ''dpdk_dispatch'' parameters
 +  * the ''<port-list>'' of a ''dpdk_dispatch'' parameter contains ports from different clusters — each dispatcher must serve ports belonging to a single cluster only
 +
 +This engine is universal and can be used to express all other engines, for example:
 +<code>
 +      dpdk_engine=0: one dispatcher for all ports
 +               in_dev=port1:port2
 +              out_dev=port3:port4
 +              dpdk_dispatch=port1,port2,port3,port4
 +
 +      dpdk_engine=1: dispatcher per direction
 +               in_dev=port1:port2
 +              out_dev=port3:port4
 +              dpdk_dispatch=port1,port2
 +              dpdk_dispatch=port3,port4
 +
 +      dpdk_engine=2: dispatcher per direction with RSS support
 +              dpdk_rss=4
 +               in_dev=port1:port2
 +              out_dev=port3:port4
 +              dpdk_dispatch=port1,port2;rss=4
 +              dpdk_dispatch=port3,port4;rss=4
 +
 +      dpdk_engine=3: dispatcher per bridge
 +               in_dev=port1:port2
 +              out_dev=port3:port4
 +              dpdk_dispatch=port1,port3
 +              dpdk_dispatch=port2,port4
 +
 +      dpdk_engine=4: dispatcher per port
 +               in_dev=port1:port2
 +              out_dev=port3:port4
 +              dpdk_dispatch=port1
 +              dpdk_dispatch=port2
 +              dpdk_dispatch=port3
 +              dpdk_dispatch=port4
 +
 +      dpdk_engine=6: dispatcher per bridge with RSS support
 +              dpdk_rss=4
 +               in_dev=port1:port2
 +              out_dev=port3:port4
 +              dpdk_dispatch=port1,port3;rss=4
 +              dpdk_dispatch=port2,port4;rss=4
 +</code>
 +
 +A ''mempool'' must be specified for each dispatcher.
 +
 +  * **''mempool'' descriptor** — available only for ''dpdk_engine=7''\\ Format: <code>dpdk_mempool=name=<name>;size=N</code>
 +    * ''name'' specifies the ''mempool'' name (maximum 15 characters)
 +    * ''size'' specifies the size (number of elements) of the ''mempool''
 +    * both parameters are mandatory\\ Multiple ''dpdk_mempool'' options can be specified, each describing a separate ''mempool'': <code>dpdk_mempool=...</code>
 +  * **''dpdk_max_memzone''** [cold] — sets the maximum number of ''memzone'' entries in DPDK. By default, DPDK uses a limit on the number of ''memzone'' entries (typically 5120, depending on the DPDK version). Increasing this value may be required for large configurations with many network interfaces and ''mempool'' instances.
 +    * ''0'' — use the default value defined in DPDK\\ If the following error occurs when starting fastDPI: ''Number of requested memzone segments exceeds maximum 5120'', increase the value of the ''dpdk_max_memzone'' parameter.
 +  * **Dispatcher descriptor** — available only for ''dpdk_engine=7''\\ Format: <code>dpdk_dispatch=<port-list>;mempool=<name>[;params]*</code>
 +    * ''<port-list>'' specifies which ports are served by this dispatcher
 +    * ''mempool=<name>'' specifies the ''mempool'' used by this dispatcher (mandatory parameter)
 +    * ''rss=N'' enables RSS on all ports of this dispatcher; N dispatchers will be created — one for each RX queue\\ Multiple ''dpdk_dispatch'' options can be specified, each describing a separate dispatcher (or a dispatcher group if ''rss'' is specified): <code>dpdk_dispatch=...</code>