Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
僕はDPDKをやっている人ではありません(XDP・netmap入門)
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
khwarizmi
March 12, 2019
Programming
1
850
僕はDPDKをやっている人ではありません(XDP・netmap入門)
khwarizmi
March 12, 2019
Tweet
Share
More Decks by khwarizmi
See All by khwarizmi
IntelNIC 送受信を学ぶ
khwarizmi
3
1k
NICのデバドラ開発
khwarizmi
0
200
ハードウェア乱数を用いた謝辞代表者の決定
khwarizmi
0
120
ネットワーク性能調査ちょっとやってみる
khwarizmi
0
270
klab インターン成果物発表
khwarizmi
0
350
Z4「高速なFW/IDSの実装」
khwarizmi
0
200
HIGHSPEED PACKET IO
khwarizmi
0
130
Other Decks in Programming
See All in Programming
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
120
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
4.9k
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
290
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
4
2.2k
The free-lunch guide to idea circularity
hollycummins
0
390
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
130
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
130
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
270
飯MCP
yusukebe
0
410
Ruby and LLM Ecosystem 2nd
koic
1
1.4k
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
700
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
1.2k
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.1k
The Language of Interfaces
destraynor
162
26k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Designing for Timeless Needs
cassininazir
0
180
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
54k
New Earth Scene 8
popppiees
2
1.9k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
500
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
Transcript
僕はDPDKをやっている人ではありません (XDP・netmap 入門)
自己紹介 - 河原颯太(かわはらそうた) @khwarizmi6514 - 法政大学応用情報工学科 学部4年 金井(ネットワークセキュリティ)研究室所属 - 小学5年から野球を初めて高校3年までやっていた.
- 春日部高校出身です! (これを言うといろんなところで先輩後輩が釣れることに最近 気が付いた) - パソコンとは無縁の生活だったが, 大学入学時, 気が付いたらパソコンをやらなけ ればいけなくなっていた. - 一緒に研究をしてくれる後輩募集中 (一人で研究をしていて寂しい)
最近やってること - NICのデバドラ開発 - NICのハードウェア機能活用による性能比較調査 - Linuxネットワークパフォーマンス調査 - XDPとnetmap *最近やりたいこと*
- FreeBSDで性能調査(ネットワークスタック参照したりしときながら触ったことがな い) - 自作キーボード(家でやったらニッパがざこくてまだ完成してない) - FPGA(購入してLEDチカチカまでしてそのままタンスの奥にいる) - EDM作りたみがある
題名の意図 先輩の影響もあって(研究室内での)DPDKのイメージが割と強い DPDKに強いこだわりがあるわけではなくてレイヤの低いところを手広くやりたいだけな ので, 後輩の印象を操作しておきたかった
高速パケットIOフレームワーク カーネルのパケット IO に関するコストを大きく引き下げることがで きるようなフレームワークやライブラリ
メモリコピー ソフトウェア割り込み, ソケットキュー, ユーザ空間, それぞれへのコピーが発生する. 6
カーネルバイパスなメモリアクセス
netmap カーネルバイパスなメモリアクセスにより高速なパケットIOを実現 しているnetmapを使ってみます.
やってみる netmapAPIから利用できる仮想ポートであるVALEポートを用いて, pkt-genでパケット 転送テストをします
環境 - OS: ubuntu16.04 - kernel: 4.10.0-19-generic - インタフェース(NIC): VALEポート
ビルド・モジュールロード $ sudo apt install linux-headers-`uname -r` $ git clone
https://github.com/luigirizzo/netmap.git $ cd netmap $ make $ insmod netmap.ko
pkt-gen $ cd apps/pkt-gen $ make $ sudo ./pkt-gen -i
vale0:rx -f rx $ ./pkt-gen -i vale0:tx -f tx -R 1
None
XDP - eXpress Data Path - Linuxカーネル内で動作するebpfを用いた技術 - なんかすげえ流行ってるけど思いの外使ったことある人は少なめだった
XDP
XDPのポイント - カーネルの機能利用することができる - 透過的に現在利用しているアプリケーションに利用できる - 動的に使える - 下手するとカーネルパニック -
eBPF verifierによる事前静的検証 - ループを許可しない (単純なループのみ許可する方向で話が進んでいるらしい - プログラムの長さを制限 (tail call で回避可能
やってみる Generic XDP(skbを割り当ててから処理を行う)を用いる - NICのサポートがなくてもXDPが使用できる - パフォーマンスは犠牲になっている
環境 - OS: Fedora 29-1.2 (ubuntuだと動かなかった) - kernel: 4.20.13 (
>= 4.12) - プログラムローダ: iproute2-ss190107
コード 全ドロップ
コンパイル&ロード $ clang -O2 -Wall -target bpf -c xdp_drop.c -o
xdp_drop.o $ sudo ip link set dev enp0s8 xdp obj xdp_drop.o
確認とアンロード $ sudo ip link set dev enp0s8 xdp off
None
None