Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:dpi:dpi_components:platform:dpi_config [2025/04/29 07:42] – elena.krasnobryzh | en:dpi:dpi_components:platform:dpi_config [2026/06/03 11:33] (current) – [dpdk_engine=7: Explicit Dispatcher Configuration] elena.krasnobryzh | ||
|---|---|---|---|
| Line 11: | Line 11: | ||
| ===== Ports configuration ===== | ===== Ports configuration ===== | ||
| + | |||
| + | <note important> | ||
| + | Please note that Mellanox network interface cards cannot be switched to DPDK using the driverctl utility — their driver is installed in a different way. They also remain under operating system control, therefore the interfaces will still appear in the output of ip/ipconfig utilities. | ||
| + | If it is necessary to install a driver to support DPDK on Mellanox network cards, please [[en: | ||
| + | </ | ||
| The network cards that Stingray will work with are removed from the control of the operating system and therefore are not visible as Ethernet devices to the operating system. | The network cards that Stingray will work with are removed from the control of the operating system and therefore are not visible as Ethernet devices to the operating system. | ||
| Line 357: | Line 362: | ||
| * RX queue count = 1 | * RX queue count = 1 | ||
| * TX queue count = The processing threads write directly each to its own TX queue card. | * TX queue count = The processing threads write directly each to its own TX queue card. | ||
| + | |||
| + | ==== dpdk_engine=6: | ||
| + | <note important> | ||
| + | This engine is intended for configurations with multiple bridges (dev1: | ||
| + | |||
| + | < | ||
| + | in_dev=41-00.0: | ||
| + | out_dev=41-00.1: | ||
| + | |||
| + | dpdk_engine=6 | ||
| + | dpdk_rss=4 | ||
| + | num_threads=64 | ||
| + | |||
| + | dpdk_mempool_size=256000 | ||
| + | mem_tracking_flow=40000000 | ||
| + | mem_tracking_ip=40000000 | ||
| + | dpdk_emit_mempool_size=256000 | ||
| + | mem_ssl_parsers=18000000 | ||
| + | mem_http_parsers=512000 | ||
| + | </ | ||
| + | This example creates 24 dispatcher threads — 4 dispatchers per bridge. | ||
| + | |||
| + | <note tip> | ||
| + | Total number of dispatchers = '' | ||
| + | For 100G+ NICs, with a ratio of 1 dispatcher per 10G, the minimum number of dispatchers is 10.\\ | ||
| + | Starting from version 14.0, the maximum number of dispatchers is 32. | ||
| + | </ | ||
| + | |||
| + | |||
| + | On-stick devices are supported.\\ | ||
| + | SSG configures the cards as follows: | ||
| + | * RX queue count = '' | ||
| + | * TX queue count = number of processing threads. Processing threads write directly to their own TX queue on the card. | ||
| + | |||
| + | ==== dpdk_engine=7: | ||
| + | <note important> | ||
| + | |||
| + | 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 '' | ||
| + | |||
| + | A '' | ||
| + | |||
| + | This engine is universal and can be used to implement all dispatcher distribution schemes supported by other '' | ||
| + | |||
| + | Dispatchers are configured using '' | ||
| + | |||
| + | The following configuration errors are considered fatal: | ||
| + | * a cluster port is not included in any ''< | ||
| + | * a cluster port is included in the ''< | ||
| + | * the ''< | ||
| + | |||
| + | This engine is universal and can be used to express all other engines, for example: | ||
| + | < | ||
| + | dpdk_engine=0: | ||
| + | | ||
| + | out_dev=port3: | ||
| + | dpdk_dispatch=port1, | ||
| + | |||
| + | dpdk_engine=1: | ||
| + | | ||
| + | out_dev=port3: | ||
| + | dpdk_dispatch=port1, | ||
| + | dpdk_dispatch=port3, | ||
| + | |||
| + | dpdk_engine=2: | ||
| + | dpdk_rss=4 | ||
| + | | ||
| + | out_dev=port3: | ||
| + | dpdk_dispatch=port1, | ||
| + | dpdk_dispatch=port3, | ||
| + | |||
| + | dpdk_engine=3: | ||
| + | | ||
| + | out_dev=port3: | ||
| + | dpdk_dispatch=port1, | ||
| + | dpdk_dispatch=port2, | ||
| + | |||
| + | dpdk_engine=4: | ||
| + | | ||
| + | out_dev=port3: | ||
| + | dpdk_dispatch=port1 | ||
| + | dpdk_dispatch=port2 | ||
| + | dpdk_dispatch=port3 | ||
| + | dpdk_dispatch=port4 | ||
| + | |||
| + | dpdk_engine=6: | ||
| + | dpdk_rss=4 | ||
| + | | ||
| + | out_dev=port3: | ||
| + | dpdk_dispatch=port1, | ||
| + | dpdk_dispatch=port2, | ||
| + | </ | ||
| + | |||
| + | A '' | ||
| + | |||
| + | * **'' | ||
| + | * '' | ||
| + | * '' | ||
| + | * both parameters are mandatory\\ Multiple '' | ||
| + | * **'' | ||
| + | * '' | ||
| + | * **Dispatcher descriptor** — available only for '' | ||
| + | * ''< | ||
| + | * '' | ||
| + | * '' | ||