Hi all, I'm a beginner with dpdk. With my team, we developed a dpdk app with the following pipeline:
NIC RX -> RX Thread -> Worker Thread -> TX Thread -> NIC TX. Within the RX Thread, we parse some headers. Within the worker thread, we're using the hierarchical scheduler. To sum up, we want to replace the HS with the traffic manager. However, it seems the TM can only be set up on a NIC. This is not what we want because we're doing some packet processing stuff within the TX Thread. Thus, we thought about the SoftNIC as a solution for our problem. Would it be possible to develop a pipeline like this ? NIC RX -> RX Thread -> SoftNIC with TM -> Worker Thread -> TX Thread -> NIC TX. It looks like the "firmware.cli" script and the packet framework offer us some freedom to make our pipeline. First and foremost, I tried to test the SoftNIC with the following command in the doc : ./testpmd -c 0x3 --vdev 'net_softnic0,firmware=<script path>/firmware.cli,cpu_id=0,conn_port=8086' -- -i --forward-mode=softnic --portmask=0x2 Below are my network devices with the command log: ./usertools/dpdk-devbind.py --status Network devices using DPDK-compatible driver ============================================ 0000:19:00.0 'Ethernet Controller X710 for 10GbE SFP+ 1572' drv=vfio-pci unused=i40e 0000:19:00.1 'Ethernet Controller X710 for 10GbE SFP+ 1572' drv=vfio-pci unused=i40e Network devices using kernel driver =================================== 0000:01:00.0 'I350 Gigabit Network Connection 1521' if=eno3 drv=igb unused=vfio-pci *Active* Other Network devices ===================== 0000:01:00.1 'I350 Gigabit Network Connection 1521' unused=igb,vfio-pci Then, the command log of test-pmd: sudo ./dpdk-testpmd --vdev 'net_softnic0,firmware=./firmware.cli,cpu_id=0,conn_port=8087' -- -i --forward-mode=softnic --portmask=0x2 [sudo] password for user: EAL: Detected CPU lcores: 32 EAL: Detected NUMA nodes: 2 EAL: Detected static linkage of DPDK EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: VFIO support initialized EAL: Using IOMMU type 8 (No-IOMMU) EAL: Probe PCI driver: net_i40e (8086:1572) device: 0000:19:00.0 (socket 0) EAL: Probe PCI driver: net_i40e (8086:1572) device: 0000:19:00.1 (socket 0) TELEMETRY: No legacy callbacks, legacy socket not created Interactive-mode selected Invalid softnic packet forwarding mode previous number of forwarding ports 3 - changed to number of configured ports 1 testpmd: create a new mbuf pool <mb_pool_0>: n=395456, size=2176, socket=0 testpmd: preferred mempool ops selected: ring_mp_mc testpmd: create a new mbuf pool <mb_pool_1>: n=395456, size=2176, socket=1 testpmd: preferred mempool ops selected: ring_mp_mc Warning! port-topology=paired and odd forward ports number, the last port will pair with itself. Configuring Port 0 (socket 0) Port 0: E4:43:4B:04:D1:4E Configuring Port 1 (socket 0) Port 1: E4:43:4B:04:D1:50 Configuring Port 2 (socket 0) ; SPDX-License-Identifier: BSD-3-Clause ; Copyright(c) 2018 Intel Corporation link LINK0 dev 0000:19:00.0 pipeline RX period 10 offset_port_id 0 pipeline RX port in bsz 32 link LINK0 rxq 0 pipeline RX port out bsz 32 swq RXQ0 pipeline RX table match stub pipeline RX port in 0 table 0 pipeline RX table 0 rule add match default action fwd port 0 pipeline TX period 10 offset_port_id 0 pipeline TX port in bsz 32 swq TXQ0 pipeline TX port out bsz 32 link LINK0 txq 0 pipeline TX table match stub pipeline TX port in 0 table 0 pipeline TX table 0 rule add match default action fwd port 0 thread 1 pipeline RX enable Command "thread pipeline enable" failed. thread 1 pipeline TX enable Command "thread pipeline enable" failed. Port 2: 00:00:00:00:00:00 Checking link statuses... Done testpmd> Port 0: link state change event Port 1: link state change event Can anyone please help us on this ? Regards, Max.