猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

CentOS6.3にDPDKをインストール

下書き。結局10Gbps対応のジェネレータがないため検証は途中で終わりました。それでもDPDKを利用すれば1Gbpsまででも転送速度は上昇します。

DPDK(version1.5)を用いて、L3 Forwardingの検証を行ってみました。
Intelの公式ドキュメントを参照しました。

DPDKのインストール

 必要なパッケージのインストールとソースコードの解凍を行った後に、スクリプトを用いてインストールを行います。

スクリプトでエラーが出る場合は、一度マシンを再起動してみてください。

# yum install -y gcc make kernel-headers.x86_64 kernel.x86_64  kernel-devel
# cd /opt
# wget http://dpdk.org/browse/dpdk/snapshot/dpdk-1.5.0r1.tar.gz
# tar zxvf dpdk-1.5.0r1.tar.gz
# cd dpdk-1.5.0r1
# ./tools/setup.sh

スクリプトの設定

 スクリプトで表示されるStepに従って、インストールの設定を行います。

Step1
Press enter to continue ...
----------------------------------------------------------
 Step 1: Select the DPDK environment to build
----------------------------------------------------------
[1] i686-default-linuxapp-gcc
[2] i686-default-linuxapp-icc
[3] x86_64-default-linuxapp-gcc
[4] x86_64-default-linuxapp-icc

⇒64bit環境でgccを利用しているため、3を選択します。
 コンパイルが完了し「Build complete」と表示されれば、Step1は完了です。
Step2
----------------------------------------------------------
 Step 2: Setup linuxapp environment
----------------------------------------------------------
[5] Insert IGB UIO module
[6] Insert KNI module
[7] Setup hugepage mappings for non-NUMA systems
[8] Setup hugepage mappings for NUMA systems
[9] Display current Ethernet device settings
[10] Bind Ethernet device to IGB UIO module

⇒公式ドキュメントによるとigb_uioモジュールおよびKNIモジュールが
 DPDKの動作に必要なため、5および6を選択します。

Option: 5

Unloading any existing DPDK UIO module
Loading uio module
Loading DPDK UIO module

Option: 6

Unloading any existing DPDK KNI module
Loading DPDK KNI module

 と表示され完了します。
以下のコマンドでnumaをサポートしているようなので、8を選択します。

# numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3
cpubind: 0
nodebind: 0
membind: 0

動作確認

helloworldアプリを実行します。

export RTE_SDK=/opt/dpdk-1.5.0r1/
export RTE_TARGET=x86_64-default-linuxapp-gcc