Skip to content

2024/4/26更新

Ubuntu22.04 にDPDK22をインストール

A. はじめに

我が家のベアメタルUbuntu22.04機にDPDK対応のNIC(Intel X550他)が入っているので、DPDK SDKの最新LTS(22.11.5)を入れてみました。そのときのメモです。

注:本記事記載の操作はrootアカウントで行っています。十分ご注意ください。

# cat /etc/issue
Ubuntu 22.04.4 LTS \n \l

# lspci | grep Ethernet
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V
01:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10G X550T (rev 01)
01:00.1 Ethernet controller: Intel Corporation Ethernet Controller 10G X550T (rev 01)
02:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

B. 手順

B.1 まず、python3.8のインストール

DPDK22はpython3.6ではビルドできず、python3.7以降にする必要がありますが、すでに3.10となってました。

# python3 -V
Python 3.10.12
# pip3 --version
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)

B.2 つづいてMeson/Ninjaのインストール

# pip3 install pyelftools
# pip3 install meson ninja
# meson --version
0.61.2
# ninja --version
1.11.1.git.kitware.jobserver-1

B.3 DPDK22のソースをダウンロードしてビルド/インストール

LTS(long term support)バージョンを入れないと余計な苦労をするハメになるので、ちゃんとここから最新LTSバージョンをダウンロードします。

なお、2024/4/26時点のLTSは22.11.5となっています。

# cd /home
# wget https://fast.dpdk.org/rel/dpdk-22.11.5.tar.xz
# tar xJvf dpdk-22.11.2.tar.xz

Meson/Ninjaでビルド/インストールします。

# cd dpdk-stable-22.11.2/
# meson build
# cd build
# ninja
# ninja install

以上でビルドとインストールは完了。恐ろしく簡単です(時間はかかります)。/usr/local/binや /usr/local/includeにSDKの各種ファイルがちゃんとインストールされています。

root@pc11:/home/dpdk-stable-22.11.5/build# modprobe vfio-pci
root@pc11:/home/dpdk-stable-22.11.5/build# modprobe uio_pci_generic
root@pc11:/home/dpdk-stable-22.11.5/build# dpdk-devbind.py -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 *Active*
0000:01:00.1 'Ethernet Controller 10G X550T 1563' if=enp1s0f1 drv=ixgbe unused=vfio-pci,uio_pci_generic
0000:02:00.0 '82574L Gigabit Network Connection 10d3' if=enp2s0 drv=e1000e unused=vfio-pci,uio_pci_generic
(後略)

DPDK対応ドライバのvfio-pciやuio_pci_genericも使えそうです。

C. 今後

dpdk-devbindとかDPDK22の各種ツールを試してみたいと思います。。