Try DPDK20 SDK on CentOS7 (2) Control DPDK driver

Introduction

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

Try using the "remove driver" command dpdk-devbind

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 preview

Next time, I would like to set SR-IOV.

Recommended Posts

Try DPDK20 SDK on CentOS7 (2) Control DPDK driver
Try DPDK20 SDK on CentOS7 â‘ Install
Try OpenLiteSpeed on CentOS8
Try RabbitMQ + PHP on CentOS
Try putting CentOS 8 on Raspberry Pi 3
Try local file search using Fess on CentOS7
Try local file search using Fess on CentOS8
OpenVPN on CentOS 8
Maven on CentOS 7 tutorial
Try DisplayLink on Ubuntu 20.04
Docker installation on CentOS 6
Use perltidy on CentOS 8
Install Golang on CentOS 8
Install Neo4j 4.1.3 on centOS
Tomcat v8 on CentOS7
Install Vertica 10.0 on CentOS 6.10
Zabbix 5 installation on CentOS 8
Use mod_auth_cas on CentOS 8
Install PostgreSQL 12 on Centos8
Install nginx on centOS7
Install Python 3 on CentOS 7
Install kuromoji on CentOS7
Use bat on Centos.
Jetty v8 on CentOS7
OpenJDK installation on CentOS 7
Install Mattermost on CentOS 7
Install PostGIS 2.5.5 on CentOS7
Try actions on GitHub [actions]
Install jpndistrict on CentOS 7
Install Redmine 4.1.1 on CentOS 7
Smokeping Install on CentOS7
Install PostgreSQL 13 on CentOS 7.5