Skip to content

Howto: DPDK with LKL

Hajime Tazaki edited this page Apr 3, 2016 · 2 revisions

This wiki page describes how to prepare, setup, and use Intel DPDK software with LKL. Since DPDK support in LKL is still not stable, which means you may need a couple of manual instructions to use it, the wiki is for the record of a particular experience during the development of this feature.

  • Tested Environment
  • Fedora 23 64bits
  • Intel DPDK v2.2.0 (from git)
  • on VMware Fusion with vmxnet3 driver (ethernet0.virtualDev = "vmxnet3" in .vmx)

Limitation

  • only tested dpdk-2.2.0, on vmxnet3 driver.
  • e1000/e1000e weren't working (it gives Error reading from file descriptor Input/output error) on VMWare Fusion 6.0.x

Todo

  • to implement RX interrupt mode PMD (but vmxnet3 doesn't support in 2.2.0, while e1000 supports) for efficient CPU usage

how to build it

  • Build DPDK
cd tools/lkl
./scripts/dpdk-sdk-build.sh
  • Build LKL
make dpdk=yes

How to configure dpdk

sudo modprobe uio
sudo insmod dpdk-2.2.0/build/kmod/igb_uio.ko

# setup hugepage (follow an instruction in the menu after setup.sh)
sudo ./dpdk-2.2.0/tools/setup.sh

# check your NIC's address
sudo ./dpdk-2.2.0/tools/dpdk_nic_bind.py --status
# disable your NIC
sudo ifconfig eth0 down
# Unbind your NIC driver
sudo ./dpdk-2.2.0/tools/dpdk_nic_bind.py -u 0000:03:00.0
# Bind your NIC driver for DPDK
sudo ./dpdk-2.2.0/tools/dpdk_nic_bind.py -b igb_uio 0000:03:00.0

Run a program with DPDK

sudo LKL_HIJACK_NET_IFTYPE=dpdk LKL_HIJACK_NET_IFPARAMS=dpdk0 \
 LKL_HIJACK_NET_IP=192.168.209.39 LKL_HIJACK_NET_NETMASK_LEN=24 \
 ./bin/lkl-hijack.sh ping 192.168.209.1