SlideShare a Scribd company logo
2
Most read
6
Most read
8
Most read
DPDKを用いた
ネットワークスタック,
高性能通信基盤
サイボウズ・ラボユース成果報告
Hiroki SHIROKURA @slankdev
slank.dev@gmail.com
自己紹介
Hiroki SHIROKURA
- @slankdev
- Security Camp 15,16tutor
- 15年間 テニスプレーヤー (卒業)
- 2年間  パケリスト (卒業)
- 高速パケット仙道にすすむ (修行中)
開発物
- パケット解析ライブラリ
- Wireshark TUI版 のようなもの
- DPDKを用いたネットワークスタック
- DPDKを用いた高性能通信基盤(開発中)
ラボユース
- C++ソフトウェア開発
- テーマ : 高性能通信, C++11
- メンター: 光成滋生氏
活動の流れ2016年度
4, 5月
- DPDKの入門
- 使い方理解やドキュメント読経
6,7月
- ネットワークスタック開発のための
勉強開始
- BSD, Linuxの実装を見る
- C++に苦しみ、できないと
光成さんに泣きつく
- ネットワークスタック開発開始
8月 セキュキャンチューター , インターン
9,10,11,12月
- ARPの実装
- IP, ICMPの実装
- UDPの実装
- TCPの実装
- ここで一応目標達成
- 高性能通信勉強開始 (次の目標)
1, 2, 3月
- DPDKで高性能通信をするための勉強
- こまごましたものを実装しまくる
- 高速PCルーターなフレンズにスパイ活動
活動の流れ2016年度
4, 5月
- DPDKの入門
- 使い方理解やドキュメント読経
6,7月
- NW-Stack開発のための勉強開始
- BSD, Linuxの実装を見る
- C++に苦しみ、できないと
光成さんに泣きつく
- ネットワークスタック開発開始
8月 セキュキャンチューター , インターン
9,10,11,12月
- ARPの実装
- IP, ICMPの実装
- UDPの実装
- TCPの実装
- ここで一応目標達成
- 高性能通信勉強開始 (次の目標)
1, 2, 3月
- 真のDPDKの使い方勉強
- こまごましたものを実装しまくる
- 高速PCルーターなフレンズにスパイ活動
要約:
ネットワークスタック実装のための勉強
ネットワークスタック設計
ネットワークスタック実装
高性能通信の勉強
高性能通信の実験
高性能通信の実験を行うためのフレームワークを設計/開発
その他ツールをすこし開発
DPDKとは
カーネルをバイパスしてユーザランドから直接デバ
イスアクセスを行い高性能通信することを可能にし
たフレームワーク
コンテキストスイッチを抑制して、各 CPUでスレッド
固定をさせる
NICはビジーウェイトのpollingで監視してCPU使用
率は100%に張り付く
引用: http://www.accton.com/Newspage.asp?sno=87
ラボユース長期目標 理想と現実
目標: 高性能なネットワークスタック
DPDKをバックエンド
BSDの伝統的な実装を参考
機能目標
- Ether,ARP,IP,ICMP,UDP,TCP
性能目標
- Linuxより高性能
(高性能 ≡ 低遅延, 高スループット)
具体的にはどんな機能があったりするか
- Fragmentation
- Sliding Window
- 3 Way Handshake
- Retransmission
- Reply Ack
- Reorder
- etc...
IP
ラボユース長期目標 理想と現実
結果: Smallなネットワークスタック
- http://github.com/slankdev/stcp
- 実装した: Ether,ARP,IP,UDP,ICMP,TCP
- BSDとはだいぶ設計思想が違う
- マルチコアをほとんどつかってない
- DPDKのAPIと手実装がごちゃ混ぜ
- TCPの完成度以外は文句はなし
ifnet ifnet ifnet
dataplane
Ethernet
ARP
TCP UDPICMP
TCPsock
TCPsock
TCPsock
UDPsock
UDPsock
UDPsock
UDPsock
UDPsock
UDPsock
TCPsock
TCPsock
TCPsock
APIs
CPU0 CPU1
APP1
CPU2
APP2
NIC NIC NIC NIC NIC
青: STCP
灰: HW
DUTTESTER
ネットワークスタック開発
レイテンシ計測: 構成
計測ツール: Ping/Hping3 (高機能なping)
マシンスペック
- TESTER
- CPU : Core i7 2700K @3.5GHz 8Core
- NIC : Intel X540-T2 10GbE
- OS : Ubuntu 16.04 LTS
- DPDK: Version 16.07 LTS
- NetworkStack: STCP (1coreのみ使用)
- DUT
- CPU : Core i7 3930K @3.2GHz 12Core
- NIC : Intel X540-T2 10GbE
- OS : Ubuntu 16.04LTS
- NetworkStack: Linux 4.8.0-36-generic
10GNIC10GNIC
比較対象
- Linuxカーネルのnative NW Stack
- STCP (自作のNW Stack)
ネットワークスタック開発
レイテンシ計測: 結果
Linux 0.10 ms
STCP 0.05 ms
表. Pingレイテンシ
まあとりあえず, 2倍, Linuxより速いね, やったぜ
 ランバ・ラル
 「見事だな.しかし小僧,自分の力で勝ったのではないぞ .
そのDPDKの性能のおかげだという事を忘れるな .」
次は...
現状DPDKの性能は10%くらいしか引き出せていない
限界までDPDKを使うとどれくらい高性能通信できるのか
DPDKアプリケーション設計のベストプラクティス
プロ「完全にDPDKを使いこなすには、人間様によるチューニングが必要」
次のテーマ: 以下を達成する高性能通信基盤開発
- SWの高性能通信の限界を探す
- 自動チューニング機構 (人間様に頼らない)
高性能通信基盤開発
現状行ったこと
1. 理解不足な部分の勉強,実験など
- ハードウェア支援機構の理解の試験
- スレッドパターンの試験
2. フレームワークの開発
- ハードウェア支援機構の設定を簡単にする
- スレッド操作をしやすいようなフロントエンド
高性能通信基盤開発: ハードウェア支援機構
RSS (Receive Side Scaling)
MEM
CPU
NIC
NICが受け取ったパケットを HWで複数のCPUに振り分
けるためハードウェア支援機構
NICにQueueを持たせ、それぞれ別のメモリに DMAす
る、それらを別々のコアから監視して、スケールアウトさ
せる
Flowは4tuple (Srcip,Dstip,Srcport,Dstport)
使い方がよく分からなかったが
今週やっと方法がわかった。
パフォーマンス計測はまだ
Rx
Que
Rx
Que
Tx
Que
Hash func
CoreCore CoreCore
Rx
Thread
Rx
Thread
Tx
Thread
Thread
Phy
Dscrptr
Indirection
Table
Dscrptr Dscrptr
高性能通信基盤開発
スレッドパターンの最適化: Forwarderの場合
NIC0 Rx
NIC1 Rx
Rx
Thrd
NIC0 Tx
NIC1 Tx
Tx
Thrd
Wk
Thrd
NIC0 Rx
NIC0 Tx
Port0
Thrd
NIC1 Rx
NIC1 Tx
Port1
Thrd
Wk
Thrd
TxRx独立パターン
Rx 監視スレッド/Tx 監視スレッド
パケット処理を行うスレッド
ポート独立パターン
Port0 監視スレッド/Port1 監視スレッド
パケット処理を行うスレッド
ポートTxRx独立パターン
Port0 Rx 監視スレッド/Port0 Tx 監視スレッド
Port1 Rx 監視スレッド/Port1 Tx 監視スレッド
パケット処理を行うスレッド
フロー独立パターン
Flowスレッド 0→1
Flowスレッド 1→0
フローTxRx独立パターン
Flowスレッド 0→1/Flowスレッド 1→0
Port0 Rx 監視スレッド/Port0 Tx 監視スレッド
Port1 Rx 監視スレッド/Port1 Tx 監視スレッド
NIC0 Rx
NIC1 Rx
Port0
Rx
Thrd
NIC0 Tx
NIC1 Tx
Wk
Thrd
Port1
Rx
Thrd
Port0
Tx
Thrd
Port1
Tx
Thrd
NIC0
Rx
NIC1
Rx
NIC1
Tx
NIC0
Tx
Flow 1→0 Thrd
Flow 0 →1 Thrd
NIC0
Rx
NIC1
Rx
Rx0
Thrd
NIC1
Tx
NIC0
Tx
Rx1
Thrd
Tx1
Thrd
Tx0
Thrd
Flow 1→0
Thrd
Flow 0→1
Thrd
何を安定させたいかに
合わせて選択する
- 各ポートを安定
- tx,rxを安定
- フローを安定
10GbEくらいだと結構余裕
で性能がでた。
2portのNICは
性能が出しきれない ?
RSSで解決できるかも
高性能通信基盤開発
現時点での進捗
これらを自由に扱うためのフロントエンドの実装
- VTY Shell
- デバイスコンフィグ設定インターフェース
- スレッド動的操作インターフェース
- lthread C++ 対応 patch
- プロトコルアナライザ インターフェース
まとめ
- DPDKを用いたSmallなネットワークスタック
- DPDKを用いた高性能通信の試験
- 試験を行う用のフレームワーク
- C++の知識、設計技法
本やサイトに書いてあることは簡単だが、
それを実際に使えるようにするまでのコストが高い
最後に
Socketの使い方さえよく理解できてない状況から
始めたので一応結構成長できたが、まだまだ
lthread(DPDKの一部)のC++対応のpatchを
送ったらIntelのおじさんが賛成してくれた
https://mail-archive.com/dev@dpdk.org/msg606
86.html
in/outのバランスがむずい
- in 知識
- out 設計実装, 研究
光成さん、一年間本当にお世話になりました。
今後も精進します。

More Related Content

PDF
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
PPTX
FD.io VPP事始め
tetsusat
 
PDF
Ethernetの受信処理
Takuya ASADA
 
PDF
AlmaLinux と Rocky Linux の誕生経緯&比較
beyond Co., Ltd.
 
PDF
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
PDF
Scapyで作る・解析するパケット
Takaaki Hoyo
 
PPTX
地理分散DBについて
Kumazaki Hiroki
 
PDF
トランザクションの並行実行制御 rev.2
Takashi Hoshino
 
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
FD.io VPP事始め
tetsusat
 
Ethernetの受信処理
Takuya ASADA
 
AlmaLinux と Rocky Linux の誕生経緯&比較
beyond Co., Ltd.
 
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
Scapyで作る・解析するパケット
Takaaki Hoyo
 
地理分散DBについて
Kumazaki Hiroki
 
トランザクションの並行実行制御 rev.2
Takashi Hoshino
 

What's hot (20)

PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
PPTX
VPP事始め
npsg
 
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
PDF
Linux packet-forwarding
Masakazu Asama
 
PDF
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
PPTX
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PPTX
トランザクションの設計と進化
Kumazaki Hiroki
 
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
PDF
Quine・難解プログラミングについて
mametter
 
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PDF
10GbE時代のネットワークI/O高速化
Takuya ASADA
 
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PDF
Vacuum徹底解説
Masahiko Sawada
 
PDF
IPv4/IPv6 移行・共存技術の動向
Yuya Rin
 
PDF
TiDBのトランザクション
Akio Mitobe
 
PPTX
iostat await svctm の 見かた、考え方
歩 柴田
 
PDF
AS45679 on FreeBSD
Tomocha Potter
 
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
VPP事始め
npsg
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
Linux packet-forwarding
Masakazu Asama
 
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
トランザクションの設計と進化
Kumazaki Hiroki
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
Quine・難解プログラミングについて
mametter
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
10GbE時代のネットワークI/O高速化
Takuya ASADA
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
Vacuum徹底解説
Masahiko Sawada
 
IPv4/IPv6 移行・共存技術の動向
Yuya Rin
 
TiDBのトランザクション
Akio Mitobe
 
iostat await svctm の 見かた、考え方
歩 柴田
 
AS45679 on FreeBSD
Tomocha Potter
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Ad

Similar to DPDKを用いたネットワークスタック,高性能通信基盤開発 (20)

PDF
Kernel vm-2014-05-25
Hirochika Asai
 
PPTX
Lagopus workshop@Internet weekのそば
Yoshihiro Nakajima
 
PDF
Router board勉強会vol2(配布用)
milk hanakara
 
PDF
Faster SRv6 D-plane with XDP
Ryoga Saito
 
PDF
High Performance Networking with DPDK & Multi/Many Core
slankdev
 
PDF
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
PPTX
フロー技術によるネットワーク管理
Motonori Shindo
 
PDF
20170421 tensor flowusergroup
ManaMurakami1
 
PDF
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
Hitoshi Sato
 
PPTX
Network as a Service - Data plane evolution and abstraction by NSM
Miya Kohno
 
PPTX
Software forwarding path
Tomofumi Hayashi
 
PDF
20170329 container technight-第一回勉強会
Minehiko Nohara
 
PDF
20170329 container technight-第一回勉強会
Minehiko Nohara
 
PDF
20170726 py data.tokyo
ManaMurakami1
 
PPT
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
 
PDF
Lagopus + DockerのDPDK接続
Tomoya Hibi
 
PDF
Ictsc9 infra解説スライド
nasuhorse
 
PDF
Singularityで分散深層学習
Hitoshi Sato
 
PDF
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
PDF
Lagopus Router v19.07.1
Tomoya Hibi
 
Kernel vm-2014-05-25
Hirochika Asai
 
Lagopus workshop@Internet weekのそば
Yoshihiro Nakajima
 
Router board勉強会vol2(配布用)
milk hanakara
 
Faster SRv6 D-plane with XDP
Ryoga Saito
 
High Performance Networking with DPDK & Multi/Many Core
slankdev
 
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
フロー技術によるネットワーク管理
Motonori Shindo
 
20170421 tensor flowusergroup
ManaMurakami1
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
Hitoshi Sato
 
Network as a Service - Data plane evolution and abstraction by NSM
Miya Kohno
 
Software forwarding path
Tomofumi Hayashi
 
20170329 container technight-第一回勉強会
Minehiko Nohara
 
20170329 container technight-第一回勉強会
Minehiko Nohara
 
20170726 py data.tokyo
ManaMurakami1
 
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
 
Lagopus + DockerのDPDK接続
Tomoya Hibi
 
Ictsc9 infra解説スライド
nasuhorse
 
Singularityで分散深層学習
Hitoshi Sato
 
OpenStackを利用したNFVの商用化 - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
Lagopus Router v19.07.1
Tomoya Hibi
 
Ad

More from slankdev (14)

PDF
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
slankdev
 
PDF
Kernel vm13lt
slankdev
 
PDF
OSC2017Hokkaido
slankdev
 
PDF
Offloading BPF Implementation to FPGA-NIC したいねって話
slankdev
 
PDF
Seccamp 2016 チューター成果報告
slankdev
 
PPTX
サイボウズ・ラボユース中間報告会
slankdev
 
PDF
OSC 2016 Hokkaido セミナー資料
slankdev
 
PDF
サイボウズ・ラボユース成果報告会
slankdev
 
PPTX
Seurity Camp Award 2016
slankdev
 
PDF
OSC2016 Tokyo/Spring LT
slankdev
 
PDF
OSC2016 Tokyo/Spring セミナー資料
slankdev
 
PDF
LibPGEN 1st Step Guide
slankdev
 
PDF
libpgenでパケット操作
slankdev
 
PPTX
ARPSpoofing攻撃によるMITM攻撃
slankdev
 
動的なVNFの性能調節フレームワーク開発と それを用いたNFV基盤の開発
slankdev
 
Kernel vm13lt
slankdev
 
OSC2017Hokkaido
slankdev
 
Offloading BPF Implementation to FPGA-NIC したいねって話
slankdev
 
Seccamp 2016 チューター成果報告
slankdev
 
サイボウズ・ラボユース中間報告会
slankdev
 
OSC 2016 Hokkaido セミナー資料
slankdev
 
サイボウズ・ラボユース成果報告会
slankdev
 
Seurity Camp Award 2016
slankdev
 
OSC2016 Tokyo/Spring LT
slankdev
 
OSC2016 Tokyo/Spring セミナー資料
slankdev
 
LibPGEN 1st Step Guide
slankdev
 
libpgenでパケット操作
slankdev
 
ARPSpoofing攻撃によるMITM攻撃
slankdev
 

DPDKを用いたネットワークスタック,高性能通信基盤開発