The DPDK18 SDK also made the DPDK driver, but it seems that it is standard to use the Linux standard driver for DPDK20. The driver (igb_uio) made with DPDK18 was stable, but I'm a little worried about the Linux standard driver.
igb_uio had to be remade every time the kernel was updated, but the standard Linux driver has the advantage of eliminating that hassle.
Various driver names will appear, so organize them first.
Driver name | DPDK compatible | Linux standard | Remarks |
---|---|---|---|
e1000e | NO | YES | Intel 1G NIC |
ixgbe | NO | YES | Intel 10G NIC |
igb_uio | YES | NO | Make with SDK |
uio_pci_generic | YES | YES | |
vfio-pci | YES | YES | IOMMU compatible |
Since the dpdk-devbind command is often used, it is shortened to db with alias as shown below.
alias db='/usr/local/bin/dpdk-devbind.py'
If you try using the db command without the DPDK driver registered, it will be as follows.
# db -s
Network devices using kernel driver
===================================
0000:00:1f.6 'Ethernet Connection (2) I219-V 15b8' if=eno1 drv=e1000e unused= *Active*
0000:01:00.0 'Ethernet Controller 10G X550T 1563' if=enp1s0f0 drv=ixgbe unused=
0000:01:00.1 'Ethernet Controller 10G X550T 1563' if=enp1s0f1 drv=ixgbe unused=
(Omitted)
You can see that the kernel standard drivers (e1000e and ixgbe) are assigned to the three NIC ports. If you register the DPDK compatible driver here and enter the same command again,
# modprobe uio
# modprobe uio_pci_generic
# modprobe vfio-pci
# db -s
Network devices using kernel driver
===================================
0000:00:1f.6 'Ethernet Connection (2) I219-V 15b8' if=eno1 drv=e1000e unused=vfio-pci,uio_pci_generic *Active*
0000:01:00.0 'Ethernet Controller 10G X550T 1563' if=enp1s0f0 drv=ixgbe unused=vfio-pci,uio_pci_generic
0000:01:00.1 'Ethernet Controller 10G X550T 1563' if=enp1s0f1 drv=ixgbe unused=vfio-pci,uio_pci_generic
(Omitted)
It is now displayed that "DKDK compatible driver" (vfio-pci and uio_pci_generic) can be applied to the three NIC ports. Note: Not yet applied. Try changing the two NIC ports of the X550T from the kernel standard driver (ixgbe) to one for DPDK (uio_pci_generic).
# db -b uio_pci_generic 0000:01:00.0
# db -b uio_pci_generic 0000:01:00.1
# db -s
Network devices using DPDK-compatible driver
============================================
0000:01:00.0 'Ethernet Controller 10G X550T 1563' drv=uio_pci_generic unused=ixgbe,vfio-pci
0000:01:00.1 'Ethernet Controller 10G X550T 1563' drv=uio_pci_generic unused=ixgbe,vfio-pci
Network devices using kernel driver
===================================
0000:00:1f.6 'Ethernet Connection (2) I219-V 15b8' if=eno1 drv=e1000e unused=vfio-pci,uio_pci_generic *Active*
(Omitted)
Checking with the nmcli command, the two NIC ports of the X550T are hidden from the kernel as shown below.
# nmcli d
DEVICE TYPE STATE CONNECTION
eno1 ethernet connected Wired connection 3
lo loopback unmanaged --
Try returning the two NIC ports of the X550T from the DPDK compatible (uio_pci_generic) to the kernel standard driver (ixgbe).
# db -b ixgbe 0000:01:00.0
# db -b ixgbe 0000:01:00.1
# nmcli d
DEVICE TYPE STATE CONNECTION
eno1 ethernet connected Wired connection 3
enp1s0f0 ethernet disconnected --
enp1s0f1 ethernet unavailable --
lo loopback unmanaged --
# db -s
Network devices using kernel driver
===================================
0000:00:1f.6 'Ethernet Connection (2) I219-V 15b8' if=eno1 drv=e1000e unused=vfio-pci,uio_pci_generic *Active*
0000:01:00.0 'Ethernet Controller 10G X550T 1563' if=enp1s0f0 drv=ixgbe unused=vfio-pci,uio_pci_generic
0000:01:00.1 'Ethernet Controller 10G X550T 1563' if=enp1s0f1 drv=ixgbe unused=vfio-pci,uio_pci_generic
(Omitted)
It's back.
Next time, I would like to set SR-IOV.
Recommended Posts