SlideShare a Scribd company logo
Xeon DとLagopus
と、Pktgen-DPDK
July 24, 2015
Masaru OKI @masaru0714
今回やってみたこと
Xeon Dマシンを2台使って
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っぽいものだが直接関係はない
接続構成
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
ハードウェア
● 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)
Xeon Dマシン近影
ソフトウェア
● 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
Pktgen-DPDKのソース取得とビルド
git clone git://dpdk.org/apps/pktgen-dpdk
export RTE_SDK=$HOME/src/dpdk
export RTE_TARGET=build
cd pktgen-dpdk; make
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メモリチャネル
Pktgen-DPDKの画面
受信(fps)と
送信(fps)を見る。
Mbits/sはあてにならない。
Pktgen-DPDK使い方
Pktgen> start 3 ポート3からパケット送信開始
Pktgen> stop 3 ポート3の送信停止
Pktgen> clear all 全ポートのカウンタ初期化
Pktgen> cls 画面が乱れたときに再描画
Pktgen> start all 全ポート一斉送信開始
Pktgen> stop all 全ポート停止
Pktgen-DPDK自身の性能は?
SFP+ポート同士を直接つないで転送。
ショートパケット性能: 14.5Mfps
ワイヤーレートに惜しくも届かず。
Xeon Dマシン(2)
Pktgen-DPDK
SFP+
SFP+
RJ45
RJ45
em1
em2
Lagopusの使用準備
● Lagopusコンパイルとインストール
./configure --with-dpdk-dir=$HOME/src/dpdk
make OPT_CFLAGS=-O3 -j 8; sudo make install
● 新lookupの使用はconfigureで選択
--enable-mbtree をつけて再コンパイル
lagopus起動時に--no-cacheをつけると新lookupが動く
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ポート使用
パケット順序保証しない
Lagopus設定内容
● コンフィグ全体の説明は大きいので省きます
● 設定のポイント
○ Agent関連: channel, controllerを設定
○ Dataplane関連: interface, port, bridgeを設定
○ ひとつのブリッジに4ポートを割り当てる
○ コントローラIPアドレスは127.0.0.1 (自ホスト)
Lagopus設定: channel, controller
channel {
channel01 {
dst-addr 127.0.0.1;
}
}
controller {
controller01 {
channel channel01;
}
}
channelと関連付け。
roleなどの指定もできます。
自ホストで動くRyuとつなぐので
ループバックアドレスを指定。
Lagopus設定: interface
interface {
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;などと書きます。
Lagopus設定: port
port {
port01 {
interface interface01;
}
port02 {
interface interface02;
}
port03 {
interface interface03;
}
port04 {
interface interface04;
}
}
interfaceと関連付け。
将来tunnel対応などの拡張によって
パラメータが増える予定。
Lagopus設定: bridge
bridge {
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ポート番号を関連付け。
Lagopusに流し込むフローエントリ
in_port=1,actions=output:2
in_port=2,actions=output:1
in_port=3,actions=output:4
in_port=4,actions=output:3
テキストそのものでなく、Ryuアプリで上記相当の
OpenFlow flow_modをLagopusに送信。
測定の概要
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間。
測定項目
● Lagopusの動作設定
○ flowcache有効/無効/新lookup(試験実装)
○ パケットオーダー保証の有無
● Pktgen-DPDK負荷
○ ショートパケット
○ 送信パターン
■ 全ポート送信(4flow)
■ Port1送信→Port0受信(10GBaseT; 1flow)
■ Port3送信→Port2受信(SFP+; 1flow)
測定手順
1. Lagopusの設定を保存しておく
2. Lagopusをコンパイル、インストール
3. Pktgen-DPDK, Lagopus, Ryuを起動
4. Pktgen-DPDKでパケット送信を開始(startコマンド)
5. TotalRateの値を記録
6. Pktgen-DPDKのパケット送信を停止(stopコマンド)
測定結果(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
TotalRate (4flow)
1flow 10GBaseT
1flow SFP+
解説
● 4エントリだとlookup方式での速度差は比較的少ない
● 速度はcacheあり > 新lookup > no-cache
○ 数千、数万エントリ投入時の速度は要確認
● パケットオーダー保証だと特定コアに処理が集中
○ 並べ替えない方式のため同じflowは同じコアで処理
○ HTTのコアは使わない設定で動かしている
● なぜかSFP+のほうが性能が出ている(理由は未調査)
● 番外:pktgen-dpdkで送信停止・再開を繰り返すとよく落ちる
今後とまとめ
● Lagopus + Xeon Dでwire rate出したい
○ perfやIntel PCMなどでボトルネックを調査
○ lookupの高速化も引き続き取り組みます
● vector txをenableにして測定したい
○ gcc4だと逆に速度が低下する。gcc5? icc?
● 個人レベルでXeonや10Gが扱える時代に
○ しかしスイッチはまだまだ高いです
● Lagopus新バージョン、もう少しお待ちください

More Related Content

PDF
The linux networking architecture
PDF
Linux Training For Beginners | Linux Administration Tutorial | Introduction T...
PPSX
FD.io Vector Packet Processing (VPP)
PDF
Openstack trystack
PDF
High availability virtualization with proxmox
PPTX
Linux Operating System
PDF
Xen Project Contributor Training - Part 1 introduction v1.0
The linux networking architecture
Linux Training For Beginners | Linux Administration Tutorial | Introduction T...
FD.io Vector Packet Processing (VPP)
Openstack trystack
High availability virtualization with proxmox
Linux Operating System
Xen Project Contributor Training - Part 1 introduction v1.0

What's hot (20)

PDF
Overview of kubernetes network functions
PDF
Containers: The What, Why, and How
PDF
What CloudStackers Need To Know About LINSTOR/DRBD
PDF
Red Hat OpenShift Container Platform Overview
PDF
Network Automation with Ansible
PDF
L2/L3 für Fortgeschrittene - Helle und dunkle Magie im Linux-Netzwerkstack
PDF
DPDK In Depth
PPTX
Vxlan control plane and routing
PDF
Open vSwitch Introduction
PPTX
OpenvSwitch Deep Dive
PPTX
Revisit DCA, PCIe TPH and DDIO
PPTX
From Cisco ACS to ISE
PDF
LAS16-403: GDB Linux Kernel Awareness
PPTX
OVN - Basics and deep dive
PDF
Introducing GitLab (June 2018)
PDF
Container Networking Deep Dive
PDF
TD_complet_reseau__CISCO__Packet Tracer.pdf
PDF
Using Mikrotik Switch Features to Improve Your Network
PDF
DPDK: Multi Architecture High Performance Packet Processing
PDF
Cisco Router Basic Configuration
Overview of kubernetes network functions
Containers: The What, Why, and How
What CloudStackers Need To Know About LINSTOR/DRBD
Red Hat OpenShift Container Platform Overview
Network Automation with Ansible
L2/L3 für Fortgeschrittene - Helle und dunkle Magie im Linux-Netzwerkstack
DPDK In Depth
Vxlan control plane and routing
Open vSwitch Introduction
OpenvSwitch Deep Dive
Revisit DCA, PCIe TPH and DDIO
From Cisco ACS to ISE
LAS16-403: GDB Linux Kernel Awareness
OVN - Basics and deep dive
Introducing GitLab (June 2018)
Container Networking Deep Dive
TD_complet_reseau__CISCO__Packet Tracer.pdf
Using Mikrotik Switch Features to Improve Your Network
DPDK: Multi Architecture High Performance Packet Processing
Cisco Router Basic Configuration
Ad

Viewers also liked (20)

PDF
Dpdk環境の話
PDF
DPDKを拡張してみた話し
PDF
Disruptive IP Networking with Intel DPDK on Linux
PDF
Qemu上でlagopusを動かした話
PDF
Training Support Leadership
PDF
入門:Single / Two Rate Three Color Marker (srTCM / trTCM)
PDF
高速ネットワーク技術と周辺動向(特別講義)
PPTX
Bish Bash Bosh & Co
PDF
あなたの知らないネットワークプログラミングの世界
PDF
とある帽子の大蛇料理Ⅱ
PDF
πολλαπλασιασμοι ενοτητα 11
PDF
100Gbpsソフトウェアルータの実現可能性に関する論文
PDF
User-space Network Processing
PDF
xv6のコンテキストスイッチを読む
PDF
130831 fpgax3 yos
PDF
デバドラを書いてみよう!
PDF
I/O仮想化最前線〜ネットワークI/Oを中心に〜
PDF
x86とコンテキストスイッチ
PDF
クラウド環境におけるキャッシュメモリQoS制御の評価
PDF
Lagopus Switch Usecases
Dpdk環境の話
DPDKを拡張してみた話し
Disruptive IP Networking with Intel DPDK on Linux
Qemu上でlagopusを動かした話
Training Support Leadership
入門:Single / Two Rate Three Color Marker (srTCM / trTCM)
高速ネットワーク技術と周辺動向(特別講義)
Bish Bash Bosh & Co
あなたの知らないネットワークプログラミングの世界
とある帽子の大蛇料理Ⅱ
πολλαπλασιασμοι ενοτητα 11
100Gbpsソフトウェアルータの実現可能性に関する論文
User-space Network Processing
xv6のコンテキストスイッチを読む
130831 fpgax3 yos
デバドラを書いてみよう!
I/O仮想化最前線〜ネットワークI/Oを中心に〜
x86とコンテキストスイッチ
クラウド環境におけるキャッシュメモリQoS制御の評価
Lagopus Switch Usecases
Ad

Similar to Xeon dとlagopusと、pktgen dpdk (20)

PDF
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
PDF
Running lagopus on Xeon D
PDF
Lagopus + DockerのDPDK接続
PDF
Lagopus, raw socket build
PDF
Lagopus 0.2
PDF
Lagos running on small factor machine
PDF
Bird in show_net
PDF
DPDKによる高速コンテナネットワーキング
PPTX
Lagopus workshop@Internet weekのそば
PDF
Lagopus Project (Open Source Conference)
PDF
Lagopus Router
PDF
SDNソフトウェアスイッチlagopus for FreeBSD
PDF
Lagopus 0.2.2
PDF
Lagopus & NFV with Vhost (Tremaday#9)
PDF
Lagopus as open flow hybrid switch 実践編
PDF
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
PDF
Lagopus performance
PDF
Lagopus Router v19.07.1
PPTX
ネットワークプログラマビリティ勉強会
PDF
DPDKを用いたネットワークスタック,高性能通信基盤開発
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Running lagopus on Xeon D
Lagopus + DockerのDPDK接続
Lagopus, raw socket build
Lagopus 0.2
Lagos running on small factor machine
Bird in show_net
DPDKによる高速コンテナネットワーキング
Lagopus workshop@Internet weekのそば
Lagopus Project (Open Source Conference)
Lagopus Router
SDNソフトウェアスイッチlagopus for FreeBSD
Lagopus 0.2.2
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus as open flow hybrid switch 実践編
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Lagopus performance
Lagopus Router v19.07.1
ネットワークプログラマビリティ勉強会
DPDKを用いたネットワークスタック,高性能通信基盤開発

More from Masaru Oki (20)

PDF
NetBSD移植の昔話
PDF
Rust-DPDK
PDF
Rust-DPDK
PDF
Lagopusとvagrant
PDF
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
PDF
今よりも少し(?)昔、 Windowsを作ろうとした話
PDF
Onieで遊んでみようとした話
PDF
GPD WINが来た!
PDF
新生Lagopus2017(仮称)
PDF
LagopusでPPPoEを使えるか考えてみた件
PDF
Lagopus どれだけ速いのか
PDF
Lagopus 0.2.7
PDF
Ryu+Lagopusで OpenFlowの動きを見てみよう
PDF
Lagopus match improvements
PDF
Lagopus 0.2.4
PDF
Open flow tunnel extension on lagopus vswitch
PDF
Lagopus as open flow hybrid switch
PDF
Net bsd advent calendar 2015 bpf
PDF
Using rump on NetBSD 7.0
PDF
Rumpを使ってみる
NetBSD移植の昔話
Rust-DPDK
Rust-DPDK
Lagopusとvagrant
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
今よりも少し(?)昔、 Windowsを作ろうとした話
Onieで遊んでみようとした話
GPD WINが来た!
新生Lagopus2017(仮称)
LagopusでPPPoEを使えるか考えてみた件
Lagopus どれだけ速いのか
Lagopus 0.2.7
Ryu+Lagopusで OpenFlowの動きを見てみよう
Lagopus match improvements
Lagopus 0.2.4
Open flow tunnel extension on lagopus vswitch
Lagopus as open flow hybrid switch
Net bsd advent calendar 2015 bpf
Using rump on NetBSD 7.0
Rumpを使ってみる

Xeon dとlagopusと、pktgen dpdk