Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
僕はDPDKをやっている人ではありません(XDP・netmap入門)
Search
khwarizmi
March 12, 2019
Programming
910
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
僕はDPDKをやっている人ではありません(XDP・netmap入門)
khwarizmi
March 12, 2019
More Decks by khwarizmi
See All by khwarizmi
IntelNIC 送受信を学ぶ
khwarizmi
3
1k
NICのデバドラ開発
khwarizmi
0
210
ハードウェア乱数を用いた謝辞代表者の決定
khwarizmi
0
130
ネットワーク性能調査ちょっとやってみる
khwarizmi
0
290
klab インターン成果物発表
khwarizmi
0
380
Z4「高速なFW/IDSの実装」
khwarizmi
0
220
HIGHSPEED PACKET IO
khwarizmi
0
140
Other Decks in Programming
See All in Programming
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
430
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
160
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
510
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
すこし踏み込む CancellationToken
htkym
2
1.7k
Featured
See All Featured
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Ethics towards AI in product and experience design
skipperchong
2
430
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Balancing Empowerment & Direction
lara
6
1.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
570
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
580
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
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