DPDK
setup
ビルドツールがmakeからmeson & ninjaに変わっていた(とりあえず確認 2020-09-22 DPDK 20.08.0)
$ sudo apt install meson ninja-build
とりあえずライブラリのインストールはこれで良さげ?
$ cd $RTE_SDK
$ meson build
$ cd build
$ ninja
$ sudo ninja install
$ sudo ldconfig
これにより、ビルドサブディレクトリに DPDK がコンパイルされ、結果として得られたライブラリ、ドライバ、ヘッダファイルがシステム上にインストールされます (通常は /usr/local)。DPDK 用のパッケージ設定ファイル libdpdk.pc もインストールされ、コンパイルやアプリケーションとのリンクが容易になります。
フラグの管理?にpkg-configを使ってるみたい
$ sudo apt install pkgconf
これで多分以前まで設定してた環境変数とかがいらなくなる感じ?
いやこれ別にそう言う話ではない.て言うか以前から使われていて,pkgconfがいないマシンで普通に動いてたんだけどなんだこれ.
このあと,helloworld動かすときに,なんかmeson.buildを編集する必要があった.
$ cd examples/helloworld
$ vim meson.build
+ project('dpdk-app', 'c')
+ dpdk = dependency('libdpdk')
+ sources = files('main.c')
+ executable('dpdk-app', sources, dependencies: dpdk)
※めんどいからサンプル丸投げしてるけど,本当ならちゃんと書き直すべき.
$ meson build
$ cd build
$ ninja
これでとりあえずビルドして実行までできた.
依然としてmakeもできるみたいだが,どうもできないような気がする...? そもそもTOPのMakefileのallターゲットが,meson&ninja使えよっていう文を出力してるだけになってるから 普通に無理じゃね?
また,将来は廃止されることが明記されていて,makeを利用した方法は推奨されていない.
以前のsetup
envs
$ echo "export RTE_SDK=$HOME/dpdk" >> $HOME/.bashrc
$ echo "export RTE_TARGET=x86_64-native-linuxapp-gcc" >> $HOME/.bashrc
packages
$ sudo apt install -y libpcap-dev python linux-headers-`uname -r` build-essential git libnuma-dev
clone and build DPDK
$ git clone http://dpdk.org/git/dpdk $RTE_SDK
$ cd $RTE_SDK
$ make install T=$RTE_TARGET
setup Hugepages
$ sudo vim /etc/default/grub
- GRUB_CMDLINE_LINUX=""
+ GRUB_CMDLINE_LINUX="hugepages=1024"
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
$ sudo mkdir -p /mnt/huge
$ sudo vim /etc/fstab
+ nodev /mnt/huge hugetlbfs defaults 0 0
$ reboot
helloworld
$ cd $RTE_SDK/examples/helloworld
$ make
$ sudo ./build/helloworld
bind NIC
comming soon
useage
skelton with tap
$ sudo ./build/basicfwd --vdev=net_tap0,iface=tap0 --vdev=net_tap1,iface=tap1
pktgen
dpdk v16.11
$ git clone https://github.com/slankdev/pktgen
$ sudo ./app/x86_64-native-linuxapp-gcc/pktgen -- -P -m "[1-7].0,[16-23].0,[8-15].1,[24-31].1"
command
再表示
redisplay