SlideShare a Scribd company logo
1 of 17
Download to read offline
DPDKを拡張してみた話し 
Nov 18th, 2014 
IGEL Co.,Ltd. 
Tetsuya Mukawa 
武川 哲也
あなたは誰ですか? 
10年くらい組込みLinuxをやってきました。 
Lagopusの開発に参加させていただき、 DPDKを触っています。 
開発内容 
–ゲスト上のDPDKアプリと、ホスト上のDPDKアプリが高速 通信可能な方式の検討実装 
–DPDKにたいして、動的ポート追加削除機能の実装 
2
話しの内容は?? 
私達が開発中で、DPDK-2.0にマージされるか もしれない機能のデモをやります。 
3
Demoの内容は? 
4 
ゲスト上のDPDKア プリと、ホスト上の DPDKアプリを高速 通信させるデモ 
Keywords 
•QEMU 
•NFV 
•vhost-user 
Demo1 
DPDKアプリの動作 中にポートを動的に 追加削除するデモ 
Keywords 
•PCI Hotplug 
•virtual device Hotplug 
Demo2
用語解説: PMD 
Poll Mode Driverの略です。 
ユーザ空間で動作するデバイスドライバです。 
実デバイスに対するPMDと、仮想デバイスに対する PMDが存在します。 
5
用語解説: Null PMD 
/dev/nullライクなPMDです。自分で書いてみました。 
–幾らでもパケットを受信できる。 
–幾らでもパケットを送信できる。 
仮想デバイスに対するPMD 
http://dpdk.org/dev/patchwork/patch/686/ 
実デバイスを必要とせず、高速に動作するので、デ バッグやパフォーマンス調査に超便利 
もちろん、マージされてません。(T_T) 
6
用語解説: testpmd 
DPDKに標準で添付されるサンプルアプリ 
いろいろな動作オプションがありますが、とりあえず、 以下のように動作すると思ってください。 
7 
testpmd 
port0 
port1 
portN 
portN+1 
・・・・・ 
(Nは偶数) 
2つのポート間で双方向にパ ケットを転送
Demo1: デモ環境 
8 
testpmd on guest 
testpmd on host 
p0 
p1 
p0 
p1 
基本的なアイデアは、左図の 通り。 ゲストとホストの上で、 testpmdを動作させ、左のよ うに結線すれば、可能な限り 早くパケット転送する。 あとは、どのくらいのパケット が転送されたかを表示してみ る。
Demo1: 昔ながらの通信方法の場合 ~virtio-net & pcap経由~ 
9 
kernel space on host 
user space on host 
DPDK App1 
Guest 
QEMU 
kernel space on VM 
user space on VM 
DPDK App2 
virtio-net 
virtio-net PMD 
pcap PMD 
tap driver 
uio 
tap client 
この線が2つあるのが、 今回のデモ構成
Demo1: 実際のデモ 
10
Demo1:なんで、こんなに遅いの? 
参考 https://www.nic.ad.jp/ja/materials/iw/2011/proceedings/s09/s09-02.pdf 
Guest 
Host 
Kernel 
User 
DPDK App1 
pcap PMD 
tap driver 
QEMU 
tap client 
virtio-net 
KVM 
DPDK App2 
virtio-net PMD 
uio 
コピー 
コピー 
パケット バッファ 
コピー 
コピー 
割り込み 
割り込み 
割り込み 
※注意 黒線をまたぐと コンテキストスイッチ発生
Demo1: vhost-userを使った場合 ~virtio-net & vhost-user backend経由~ 
12 
kernel space on host 
user space on host 
DPDK App1 
Guest 
QEMU 
kernel space on VM 
user space on VM 
DPDK App2 
virtio-net 
virtio PMD 
vhost- user backend 
QEMU-2.1以上では、vhost-net のバックエンドを、ユーザ空間にイ ンプリさせるための仕組みが実装 されている(vhost-user)。 なお、この仕組みでは、ゲストの 物理メモリは、hugetlbfsから取得 する必要がある。 
eventfd
Demo1: 実際のデモ 
13
Demo1: なんで、こんなに速いの? 
参考 https://www.nic.ad.jp/ja/materials/iw/2011/proceedings/s09/s09-02.pdf 
Guest 
Host 
Kernel 
User 
DPDK App1 
vhost -user backend 
QEMU 
KVM 
DPDK App2 
virtio-net PMD 
uio 
パケット バッファ 
コピー 
割り込み 
割り込み 
割り込み 
※注意 黒線をまたぐと コンテキストスイッチ発生 
eventfd 
割り込み 
App1とApp2 が共にポーリ ングしている ので、通知は 必要なし!
Demo2: 動的なポート追加削除 
DPDK-2.0にマージされることを目指して開発中 
–DPDK MLにSubmit済み 
–動的にポートを追加削除可能なAPIをDPDKに追加 
–DPDKアプリ側でも対応が必要 
–サンプルとして、testpmdに動的にポートを追加削除 する機能を実装。 
–今回のデモでは、動的にポートを追加削除することが 可能となるパッチを適用したうえで、testpmdを改造 
15
Demo2: 実際のデモ 
16
終わりに 
駆け足で説明したので、分け分からんという方 は、この後の懇親会で聞いてください。 
DPDKについては、下記のような資料も作って いるので、参考にしてください。 
–“CELF Jamboree 50”で検索! 
–http://elinux.org/images/8/80/Introduction_to_Intel_DPDK_v2.pdf 
17

More Related Content

What's hot

FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
Takefumi MIYOSHI
 

What's hot (20)

fpgax #13.pptx
fpgax #13.pptxfpgax #13.pptx
fpgax #13.pptx
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!Lxc で始めるケチケチ仮想化生活?!
Lxc で始めるケチケチ仮想化生活?!
 
Linuxのsemaphoreとmutexを見る 
Linuxのsemaphoreとmutexを見る Linuxのsemaphoreとmutexを見る 
Linuxのsemaphoreとmutexを見る 
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
(公開版)FPGAエクストリームコンピューティング2017
(公開版)FPGAエクストリームコンピューティング2017 (公開版)FPGAエクストリームコンピューティング2017
(公開版)FPGAエクストリームコンピューティング2017
 
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
Telecom Infra Projectの取り組み -光伝送におけるハードとソフトの分離-
 
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
 
ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料ACRiウェビナー:小野様ご講演資料
ACRiウェビナー:小野様ご講演資料
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginners
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版hbstudy# 28 SELinux HandsOn 公開版
hbstudy# 28 SELinux HandsOn 公開版
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
TripleO Deep Dive
TripleO Deep DiveTripleO Deep Dive
TripleO Deep Dive
 

Similar to DPDKを拡張してみた話し

Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
Shugo Numano
 

Similar to DPDKを拡張してみた話し (20)

Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
近頃のDockerネットワーク
近頃のDockerネットワーク近頃のDockerネットワーク
近頃のDockerネットワーク
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
 
2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
 
Dockerを支える技術
Dockerを支える技術Dockerを支える技術
Dockerを支える技術
 
Lagopus Router v19.07.1
Lagopus Router v19.07.1Lagopus Router v19.07.1
Lagopus Router v19.07.1
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
 

DPDKを拡張してみた話し