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
NICのデバドラ開発
Search
khwarizmi
March 22, 2019
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NICのデバドラ開発
khwarizmi
March 22, 2019
More Decks by khwarizmi
See All by khwarizmi
IntelNIC 送受信を学ぶ
khwarizmi
3
1k
ハードウェア乱数を用いた謝辞代表者の決定
khwarizmi
0
130
僕はDPDKをやっている人ではありません(XDP・netmap入門)
khwarizmi
1
880
ネットワーク性能調査ちょっとやってみる
khwarizmi
0
280
klab インターン成果物発表
khwarizmi
0
370
Z4「高速なFW/IDSの実装」
khwarizmi
0
210
HIGHSPEED PACKET IO
khwarizmi
0
140
Other Decks in Programming
See All in Programming
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
800
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
150
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
220
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
7
3.2k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.1k
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
継続モナドとリアクティブプログラミング
yukikurage
3
440
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
140
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
5k
関数型プログラミングのメリットって何だろう?
wanko_it
0
150
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
15
3k
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
2.8k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
Odyssey Design
rkendrick25
PRO
2
730
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
HDC tutorial
michielstock
2
730
Deep Space Network (abreviated)
tonyrice
0
220
The SEO Collaboration Effect
kristinabergwall1
1
500
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Speed Design
sergeychernyshev
33
1.9k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Automating Front-end Workflow
addyosmani
1370
210k
How STYLIGHT went responsive
nonsquared
100
6.2k
Transcript
NICデバドラ開発 ド入門からの開発
自己紹介 - 河原颯太(かわはらそうた) @khwarizmi6514 - 法政大学応用情報工学科 学部4年(春からM1) 金井(ネットワークセキュリティ)研 究室所属 -
小学5年から野球を初めて高校3年までやっていた. - 春日部高校出身です! (これを言うといろんなところで先輩後輩が釣れることに最近 気が付いた) - パソコンとは無縁の生活だったが, 大学入学時, 気が付いたらパソコンをやらなけ ればいけなくなっていた. - 一緒に研究をしてくれる後輩募集中 (一人で研究をしていて寂しい)
最近やってた(やってる)こと - ネットワークスタック実装 - DPDK・netmap・XDP (XDPが激アツ) - NICのハードウェア機能活用による性能比較調査 - Linuxネットワークパフォーマンス調査
*最近やりたいこと* - FreeBSDで性能調査(ネットワークスタック参照したりしときながら触ったことがな い) - FPGA(購入してLEDチカチカまでしてそのままタンスの奥にいる) - EDM作りたみがある(動画音楽編集全般
採択からテーマ決めまでの経緯 何をもってネットワーク入門とするか
何を持ってネットワーク入門とするか - WEB系 - ルーティング・ネットワーク構築 - ネットワークプログラミング - ネットワークスタック -
ソフト的パケットIO - ハード的パケットIO - NW機器自作
僕の考えるネットワーク入門 - WEB系 - ルーティング・ネットワーク構築 - ネットワークプログラミング - ネットワークスタック -
ソフト的パケットIO - ハード的パケットIO - NW機器自作
採択からテーマ決めまでの経緯 当時ネットワークスタック実装初期で, それをテーマに応募. ↓ 採択後間が空いてしまいその間にUDPまで動いてかつTCPも目処が立っていた. ↓ パケットIOの勉強がしたく, NICのデバドラの開発を希望した.
ここまでで学習したことをざっと
STEP1 カーネルに機能追加をする Linuxはカーネルモジュールをロードすることで機能追加が可能. ↓ デバイス固有の動作を定義するデバイスドライバもこれで実現されることが多い. ↓ カーネルモジュール開発入門
STEP1 カーネルに機能追加をする サイボウズ技術顧問の @satoru_takeuchi さんの入門記事 https://qiita.com/satoru_takeuchi/items/83c8e2f38176d2724f48 電子書籍もあった https://windhole.booth.pm/items/1169009
STEP2 デバイスファイル Linuxの主要機能ファイルシステム. デバイスもファイルとして扱われる. 「キャラクタデバイス」「ブロックデバイス」がある. ↓ キャラクタデバイスを実装してみる
STEP2 デバイスファイル *ポイントっぽいところ* - メジャー番号の動的割り当て - alloc_chrdev_regionを使う. - デバイスメソッド -
struct file_operations という構造体を初期化することで動作を定義できる . - デバイスの登録 - void cdev_init(struct cdev *cdev, struct file_operations *fops); - int cdev_add(struct cdev *dev, dev_t num, unsigned int count);
STEP3 ネットワークデバイス ネットワークデバイスはブロックデバイスと似ているが, - デバイスファイルを持たない - インタフェースが異なる - デバイスからの非同期アクセスがある(パケットの受信) といった相違点がある.
STEP4 物理NICを操作する - PCI操作等のインタフェースの操作 - ハードウェア固有の操作を理解しなければならない
初めてのカーネル空間で大変なこと デバッグが超大変
デバッグ手法 - kgdb, kdb gbdサーバ的なものがカーネル内 にいるような使い方 - kprobes カーネル空間にブレークポイント を仕込める
今後やっていくこと - まだ物理 NICを相手にちゃんと動いていないので動かす - 高速なパケットIOを目指す - NAPI (ポーリング) -
カーネルバイパスなメモリアクセスの実装 将来的に趣味でできたらいいなと思うこと - FPGAで自作NICして自作ドライバでパケットIOする
何を持ってネットワーク入門とするか - WEB系 - ルーティング・ネットワーク構築 - ネットワークプログラミング - ネットワークスタック -
ソフト的パケットIO - ハード的パケットIO - NW機器自作