xeon dとlagopusと、pktgen dpdk

29
Xeon DLagopus と、Pktgen-DPDK July 24, 2015 Masaru OKI @masaru0714

Upload: masaru-oki

Post on 12-Aug-2015

282 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Xeon dとlagopusと、pktgen dpdk

Xeon DとLagopusと、Pktgen-DPDKJuly 24, 2015Masaru OKI @masaru0714

Page 2: Xeon dとlagopusと、pktgen dpdk

今回やってみたこと

Xeon Dマシンを2台使って

Xeon D + Lagopusの性能を確認してみる

トラフィックジェネレータとして

Pktgen-DPDKを使ってみる

Page 3: Xeon dとlagopusと、pktgen dpdk

キーワード

● Xeon D○ 2015年出荷、10G MACを内蔵したSoCのXeon○ 今回使うのはXeon D-1540 (2.0GHz; 8C16T; TDP45W)

● Lagopus○ オープンソースのOpenFlowソフトウェアスイッチ

● Pktgen-DPDK○ DPDKを用いたオープンソースのトラフィックジェネレータ○ Linux kernelのpktgenっぽいものだが直接関係はない

Page 4: Xeon dとlagopusと、pktgen dpdk

接続構成Xeon Dマシン(1)

X520-DA2 p1p1

p1p2

Xeon D-1540

i350-AT2

eth0

eth1

em1

em2

Xeon Dマシン(2)

X520-DA2p1p1

p1p2

Xeon D-1540

i350-AT2

eth0

eth1

em1

em2

制御ネットワーク

10GBaseT

10G SFP+Direct attach cable

Lagopus Pktgen-DPDK

Page 5: Xeon dとlagopusと、pktgen dpdk

ハードウェア

● SUPERMICRO X10SDV-TLN4F○ Mini-ITX form factor○ Xeon D-1540, 10GBaseT * 2, GbE * 2, IPMI

● 8GB ECC DIMM * 4 (32GB)● 120GB 2.5inch SATA SSD● X520-DA2 Converged Network Adapter

○ 10GbE * 2 (SFP+)● 400W Power Supply (SFX)

Page 6: Xeon dとlagopusと、pktgen dpdk

Xeon Dマシン近影

Page 7: Xeon dとlagopusと、pktgen dpdk

ソフトウェア

● OS: Ubuntu 14.04.2 LTS Server amd64● Hugepage: 1GB/pageを4ページ確保● ixgbe-4.0.3 (Xeon Dの10GBaseTに対応)

○ DPDKではPMDを使うので不要といえば不要

● DPDK: git先頭(2.1.0-rc1相当)○ gcc4なのでCONFIG_RTE_IXGBE_INC_VECTOR=n

● Ryu○ pip install ryu

Page 8: Xeon dとlagopusと、pktgen dpdk

Pktgen-DPDKのソース取得とビルド

git clone git://dpdk.org/apps/pktgen-dpdkexport RTE_SDK=$HOME/src/dpdkexport RTE_TARGET=buildcd pktgen-dpdk; make

Page 9: Xeon dとlagopusと、pktgen dpdk

Pktgen-DPDKの起動

sudo ./app/app/build/pktgen -cffff -n2 -- -P -T -m '[1-4:5-8].[0-3:0-3]'

○ -P promiscous mode○ -T 色つき表示○ -m [RecvCore:SendCore].[RecvPort:SendPort]

● 白地に黒前提なので背景黒だと見えません○ しかも終了時に色設定を戻さない……

● ウィンドウを広げないと表示が崩れる(118文字)

DPDKオプション16コア、2メモリチャネル

Page 10: Xeon dとlagopusと、pktgen dpdk

Pktgen-DPDKの画面

受信(fps)と送信(fps)を見る。

Mbits/sはあてにならない。

Page 11: Xeon dとlagopusと、pktgen dpdk

Pktgen-DPDK使い方

Pktgen> start 3 ポート3からパケット送信開始

Pktgen> stop 3 ポート3の送信停止

Pktgen> clear all 全ポートのカウンタ初期化

Pktgen> cls 画面が乱れたときに再描画

Pktgen> start all 全ポート一斉送信開始

Pktgen> stop all 全ポート停止

Page 12: Xeon dとlagopusと、pktgen dpdk

Pktgen-DPDK自身の性能は?

SFP+ポート同士を直接つないで転送。

ショートパケット性能: 14.5Mfpsワイヤーレートに惜しくも届かず。

Xeon Dマシン(2)

Pktgen-DPDK

SFP+

SFP+

RJ45

RJ45

em1

em2

Page 13: Xeon dとlagopusと、pktgen dpdk

Lagopusの使用準備

● Lagopusコンパイルとインストール./configure --with-dpdk-dir=$HOME/src/dpdkmake OPT_CFLAGS=-O3 -j 8; sudo make install

● 新lookupの使用はconfigureで選択--enable-mbtree をつけて再コンパイル

lagopus起動時に--no-cacheをつけると新lookupが動く

Page 14: Xeon dとlagopusと、pktgen dpdk

Lagopusの起動と設定

● 開発中バージョンを使っています。(0.2(仮))● 起動

○ sudo lagopus -d -- -cff -n2 -- -pf○ sudo lagopus -d -- -cff -n2 -- -pf --fifoness none

● lagoshを使って設定する○ Lagosh> configure○ Configure# edit テキストエディタで設定編集○ Configure# commit 設定を動作に反映○ Configure# save 起動時設定として保存

フォアグラウンド動作 8コア、2メモリチャネル 4ポート使用

パケット順序保証しない

Page 15: Xeon dとlagopusと、pktgen dpdk

Lagopus設定内容

● コンフィグ全体の説明は大きいので省きます● 設定のポイント

○ Agent関連: channel, controllerを設定○ Dataplane関連: interface, port, bridgeを設定○ ひとつのブリッジに4ポートを割り当てる○ コントローラIPアドレスは127.0.0.1 (自ホスト)

Page 16: Xeon dとlagopusと、pktgen dpdk

Lagopus設定: channel, controllerchannel { channel01 { dst-addr 127.0.0.1; }}controller { controller01 { channel channel01; }

}

channelと関連付け。roleなどの指定もできます。

自ホストで動くRyuとつなぐのでループバックアドレスを指定。

Page 17: Xeon dとlagopusと、pktgen dpdk

Lagopus設定: interfaceinterface { interface01 { type ethernet-dpdk-phy; port-number 2; } interface02 { type ethernet-dpdk-phy; port-number 3; } interface03 { type ethernet-dpdk-phy; port-number 0; } interface04 { type ethernet-dpdk-phy; port-number 1;

}}

port-numberはDPDKのportid。SFP+を先に使いたくて2, 3を先に割り当てています。

ethernet-rawsockでraw socket使用。そのときはdevice eth2;などと書きます。

Page 18: Xeon dとlagopusと、pktgen dpdk

Lagopus設定: portport { port01 { interface interface01; } port02 { interface interface02; } port03 { interface interface03; } port04 { interface interface04; }}

interfaceと関連付け。将来tunnel対応などの拡張によってパラメータが増える予定。

Page 19: Xeon dとlagopusと、pktgen dpdk

Lagopus設定: bridgebridge { bridge01 { dpid 1; controller controller01; port port01 1; port port02 2; port port03 3; port port04 4; fail-mode secure;

}

}

controllerとの関連付け。

datapath idを普通に数値で記述。

portとOpenFlowポート番号を関連付け。

Page 20: Xeon dとlagopusと、pktgen dpdk

Lagopusに流し込むフローエントリ

in_port=1,actions=output:2in_port=2,actions=output:1in_port=3,actions=output:4in_port=4,actions=output:3

テキストそのものでなく、Ryuアプリで上記相当の

OpenFlow flow_modをLagopusに送信。

Page 21: Xeon dとlagopusと、pktgen dpdk

測定の概要Xeon Dマシン(1)

Lagopus

SFP+

SFP+

Ryu

RJ45

RJ45

em1

em2

Xeon Dマシン(2)

Pktgen-DPDK

SFP+

SFP+

RJ45

RJ45

em1

em2

10GBaseT

10G SFP+Direct attach cable

in_port指定で他方にoutpputするフローエントリを4つ。SFP+間転送と10BaseT間。

Page 22: Xeon dとlagopusと、pktgen dpdk

測定項目

● Lagopusの動作設定○ flowcache有効/無効/新lookup(試験実装)○ パケットオーダー保証の有無

● Pktgen-DPDK負荷○ ショートパケット○ 送信パターン

■ 全ポート送信(4flow)■ Port1送信→Port0受信(10GBaseT; 1flow)■ Port3送信→Port2受信(SFP+; 1flow)

Page 23: Xeon dとlagopusと、pktgen dpdk

測定手順

1. Lagopusの設定を保存しておく2. Lagopusをコンパイル、インストール3. Pktgen-DPDK, Lagopus, Ryuを起動4. Pktgen-DPDKでパケット送信を開始(startコマンド)5. TotalRateの値を記録6. Pktgen-DPDKのパケット送信を停止(stopコマンド)

Page 24: Xeon dとlagopusと、pktgen dpdk

測定結果(fps)パケットオーダー Lagopus lookup 1flow 10GBaseT 1flow SFP+ 4flow

保証 cacheあり 2,585,453 6,778,297 9,698,277

no-cache 1,746,086 6,083,367 7,171,101

新lookup 1,941,983 6,391,310 8,507,494

保証しない cacheあり 6,396,016 9,401,647 12,108,205

no-cache 6,393,839 9,411,175 10,976,656

新lookup 6,394,800 9,411,294 10,998,775

Page 25: Xeon dとlagopusと、pktgen dpdk

TotalRate (4flow)

Page 26: Xeon dとlagopusと、pktgen dpdk

1flow 10GBaseT

Page 27: Xeon dとlagopusと、pktgen dpdk

1flow SFP+

Page 28: Xeon dとlagopusと、pktgen dpdk

解説

● 4エントリだとlookup方式での速度差は比較的少ない● 速度はcacheあり > 新lookup > no-cache

○ 数千、数万エントリ投入時の速度は要確認● パケットオーダー保証だと特定コアに処理が集中

○ 並べ替えない方式のため同じflowは同じコアで処理○ HTTのコアは使わない設定で動かしている

● なぜかSFP+のほうが性能が出ている(理由は未調査)

● 番外:pktgen-dpdkで送信停止・再開を繰り返すとよく落ちる

Page 29: Xeon dとlagopusと、pktgen dpdk

今後とまとめ

● Lagopus + Xeon Dでwire rate出したい○ perfやIntel PCMなどでボトルネックを調査○ lookupの高速化も引き続き取り組みます

● vector txをenableにして測定したい○ gcc4だと逆に速度が低下する。gcc5? icc?

● 個人レベルでXeonや10Gが扱える時代に○ しかしスイッチはまだまだ高いです

● Lagopus新バージョン、もう少しお待ちください