Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
僕はDPDKをやっている人ではありません(XDP・netmap入門)
Search
khwarizmi
March 12, 2019
Programming
1
820
僕はDPDKをやっている人ではありません(XDP・netmap入門)
khwarizmi
March 12, 2019
Tweet
Share
More Decks by khwarizmi
See All by khwarizmi
IntelNIC 送受信を学ぶ
khwarizmi
3
980
NICのデバドラ開発
khwarizmi
0
190
ハードウェア乱数を用いた謝辞代表者の決定
khwarizmi
0
110
ネットワーク性能調査ちょっとやってみる
khwarizmi
0
250
klab インターン成果物発表
khwarizmi
0
330
Z4「高速なFW/IDSの実装」
khwarizmi
0
200
HIGHSPEED PACKET IO
khwarizmi
0
120
Other Decks in Programming
See All in Programming
ゲームの物理 剛体編
fadis
0
350
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
100
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
500
マスタデータ問題、マイクロサービスでどう解くか
kts
0
110
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.3k
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
350
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
270
tparseでgo testの出力を見やすくする
utgwkk
2
250
WebRTC と Rust と8K 60fps
tnoho
2
2k
チームをチームにするEM
hitode909
0
340
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
510
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
350
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
180
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Unsuck your backbone
ammeep
671
58k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Faster Mobile Websites
deanohume
310
31k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
What's in a price? How to price your products and services
michaelherold
246
13k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
WCS-LA-2024
lcolladotor
0
380
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