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
890
ネットワーク性能調査ちょっとやってみる
khwarizmi
0
290
klab インターン成果物発表
khwarizmi
0
370
Z4「高速なFW/IDSの実装」
khwarizmi
0
210
HIGHSPEED PACKET IO
khwarizmi
0
140
Other Decks in Programming
See All in Programming
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.3k
이 함수, 실패하면 어떻게 되나요? null부터 Rich Errors까지, Kotlin 에러 처리 15년
haeti2
0
120
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
110
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
120
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
110
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
2
280
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
260
XHTMLが残したもの
yosuke_furukawa
PRO
1
380
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
160
Press start. Python's next generation.
willingc
PRO
3
300
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
350
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
490
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Building Adaptive Systems
keathley
44
3.2k
Embracing the Ebb and Flow
colly
88
5.2k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
310
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
230
The agentic SEO stack - context over prompts
schlessera
0
880
Navigating Weather and Climate Data
rabernat
0
510
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
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機器自作