Running a Sample Application L3fwd Server
Following is an overview of the Layer 3 forwarding sample application, in which the forwarding decision is based on information read from the input packet. This is intended as a quick-start resource. For more information, see the Sample Applications User Guides at:
https://doc.dpdk.org/guides/sample_app_ug/l3_forward.html
- To compile a sample application with Meson, use the configure command.
A single application can be compiled by passing in the application’s name. Alternatively, all sample applications can be compiled by specifying ‘all’. Run the meson command from the DPDK ‘build’ directory.
### Move into build directory
cd dpdk-22.11/build
### Compile and build L3 Forwarding Sample Application
meson configure -Dexamples=l3fwd
ninja - Run the application from the examples directory under build.
The full path would look like:
./dpdk-22.11/build/examples/dpdk-l3fwd
The following are some usage examples of the application.
4 cores command line option:
./dpdk-l3fwd -l 22,24,26,28 -n 6 -- -p 0x0 --config="(0,0,22),(0,1,24),(0,2,26),(0,3,28)"2 cores command line option:
./dpdk-l3fwd/build/l3fwd -l 3-4 -n 4 -a 18:00.0 -- -p 0x1 --parse-ptype --config="(0,0,3),(0,1,4)" -PIn these commands:
- The -l option enables cores 22,24,26,28.
- The -p option enables port 0,
- The -config option enables one queue on each port and maps each (port,queue) pair to a specific core. For example, (0,0,22) maps queue 0 from port 0 to lcore 22.
Please review Section 20.3, Running the Application in the Sample Applications User Guides for a complete explanation of all flag options.
Example l3fwd output:
./dpdk-l3fwd -l 22,24,26,28 -n 6 -- -p 0x0 --config="(0,0,22),(0,1,24),(0,2,26),(0,3,28)"
EAL: Detected 88 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: Probing VFIO support...
EAL: PCI device 0000:00:04.0 on NUMA socket 0
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:00:04.1 on NUMA socket 0
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:00:04.2 on NUMA socket 0
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:00:04.3 on NUMA socket 0
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:00:04.4 on NUMA socket 0
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:00:04.5 on NUMA socket 0
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:00:04.6 on NUMA socket 0
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:00:04.7 on NUMA socket 0
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:3d:00.0 on NUMA socket 0
EAL: probe driver: 8086:37d2 net_i40e
EAL: PCI device 0000:3d:00.1 on NUMA socket 0
EAL: probe driver: 8086:37d2 net_i40e
EAL: PCI device 0000:80:04.0 on NUMA socket 1
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:80:04.1 on NUMA socket 1
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:80:04.2 on NUMA socket 1
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:80:04.3 on NUMA socket 1
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:80:04.4 on NUMA socket 1
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:80:04.5 on NUMA socket 1
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:80:04.6 on NUMA socket 1
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:80:04.7 on NUMA socket 1
EAL: probe driver: 8086:2021 rawdev_ioat
EAL: PCI device 0000:86:00.0 on NUMA socket 1
EAL: probe driver: 8086:10c9 net_e1000_igb
EAL: PCI device 0000:86:00.1 on NUMA socket 1
EAL: probe driver: 8086:10c9 net_e1000_igb
EAL: PCI device 0000:af:00.0 on NUMA socket 1
EAL: probe driver: 8086:1592 net_ice
ice_load_pkg_type(): Active package is: 1.3.28.0, ICE OS Default Package
ice_init_proto_xtr(): Protocol extraction is not supported
LPM or EM none selected, default LPM on
Initializing port 0 ... Creating queues: nb_rxq=4 nb_txq=4... Port 0 modified RSS hash function based on hardware support,requested:0xa38c configured:0x2288
Address:68:05:CA:5C:CF:A8, Destination:02:00:00:00:00:00, Allocated mbuf pool on socket 1
LPM: Adding route 192.18.0.0 / 24 (0)
LPM: Adding route 192.18.1.0 / 24 (1)
LPM: Adding route 192.18.2.0 / 24 (2)
LPM: Adding route 192.18.3.0 / 24 (3)
LPM: Adding route 192.18.4.0 / 24 (4)
LPM: Adding route 192.18.5.0 / 24 (5)
LPM: Adding route 192.18.6.0 / 24 (6)
LPM: Adding route 192.18.7.0 / 24 (7)
LPM: Adding route 2001:200:: / 48 (0)
LPM: Adding route 2001:200:0:0:1:: / 48 (1)
LPM: Adding route 2001:200:0:0:2:: / 48 (2)
LPM: Adding route 2001:200:0:0:3:: / 48 (3)
LPM: Adding route 2001:200:0:0:4:: / 48 (4)
LPM: Adding route 2001:200:0:0:5:: / 48 (5)
LPM: Adding route 2001:200:0:0:6:: / 48 (6)
LPM: Adding route 2001:200:0:0:7:: / 48 (7)
txq=22,0,1 txq=24,1,1 txq=26,2,1 txq=28,3,1
Initializing rx queues on lcore 22 ... rxq=0,0,1
Initializing rx queues on lcore 24 ... rxq=0,1,1
Initializing rx queues on lcore 26 ... rxq=0,2,1
Initializing rx queues on lcore 28 ... rxq=0,3,1
Checking link status..........................................................................................done
Port 0 Link Down
L3FWD: entering main loop on lcore 24
L3FWD: -- lcoreid=24 portid=0 rxqueueid=1
L3FWD: entering main loop on lcore 26
L3FWD: -- lcoreid=26 portid=0 rxqueueid=2
L3FWD: entering main loop on lcore 22
L3FWD: -- lcoreid=22 portid=0 rxqueueid=0
L3FWD: entering main loop on lcore 28
L3FWD: -- lcoreid=28 portid=0 rxqueueid=3