EDIT : The tutorial that I followed to test SoftNIC ( https://doc.dpdk.org/guides-19.02/nics/softnic.html) is appropriate for DPDK 19.02 but not for the newer versions like 19.11.12, the one I use. We found out something :
" sudo ./dpdk-testpmd --vdev 'net_softnic0,firmware=./firmware.cli,cpu_id=0,conn_port=8086,sc=0' -- -i --portmask=0x2". We didn't really understand the impact of "sc=0" by the way. First line of firmware.cli file : "link LINK0 dev net_softnic0" instead of "link LINK0 dev 0000:19:00.0". Then, we switched the forwarding mode to Input/Output with the CLI. With all of that, it looked like it worked. We didn't have any error messages like before. If someone is comfortable with test pmd / softnic versions, help should be quite welcome. Then, can anyone help us on the pipeline we wanna design (first e-mail) ? Regards, Max. Le mar. 3 mai 2022 à 11:33, Maxime Ramiara <max1mo.r...@gmail.com> a écrit : > 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. >