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
2024年秋 中村研 WIP発表資料
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kota-yata
January 30, 2025
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2024年秋 中村研 WIP発表資料
kota-yata
January 30, 2025
More Decks by kota-yata
See All by kota-yata
リアルな遅延を測る仕様
kota_yata
1
150
Arch輪読: 詳解システムパフォーマンス 第二版 第6章
kota_yata
0
71
RG-Arch 輪講資料: Binary Hacks Rebooted 数値演算など
kota_yata
0
79
結局QUICで通信は速くなるの?
kota_yata
10
8k
RG-Arch輪考資料: QUIC is not Quick Enough over Fast Internet
kota_yata
0
190
RG-Arch輪考資料: Implementation and Performance Evaluation of the QUIC Protocol in Linux Kernel
kota_yata
0
220
パタヘネ輪読: 第五章
kota_yata
0
95
パタヘネ輪読: 第一章
kota_yata
0
370
2023年秋 中村研 WIP発表資料
kota_yata
0
160
Other Decks in Programming
See All in Programming
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
650
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
200
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
210
wkhtmltopdfの次どうするか問題2026
willnet
2
1.6k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
510
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
240
FreeBSDでZabbixを動かす
kenkino
0
320
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.9k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.3k
JRuby: Past, Present, and Future
headius
0
170
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
1.2k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Chasing Engaging Ingredients in Design
codingconduct
0
320
Testing 201, or: Great Expectations
jmmastey
46
8.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
4 Signs Your Business is Dying
shpigford
187
23k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.9k
The Language of Interfaces
destraynor
162
27k
Designing Experiences People Love
moore
143
24k
Scaling GitHub
holman
464
140k
Believing is Seeing
oripsolob
1
220
Transcript
RISC-V向けOS上でのICMPプロトコルスタック実装 Arch B2 Kota 親: macchan
背景 2 • ⼤学⼊学時からトランスポートプロトコルに興味がある ◦ 特にQUIC • IETFに参加した際に、カーネルの知識不⾜から満⾜に議論に参加できなかった • またQUICに関する調査を進める中で低いレイヤーのコードを読む必要が⽣ま
れ、背景知識を得る必要が⽣まれた • 今期はよりコンピュータアーキテクチャ、ネットワークアーキテクチャの理解 を深めるためにICMP Echo Request/Reply送受信(ping)に対応するプロトコ ルスタックを実装した
ベースにしたOS 3 • 「1000⾏で作るOS」[1] ◦ RISC-V 32bits向け ◦ OpenSBI[2]を⽤いてQEMU[3]上で動作する ◦
より⼤規模のOS実装も検討したが時間の制約により⼩さな実装に⽌まった • プロセス切り替え時のメモリ解放など、50⾏ほど追加機能を拡張した
プロトコルスタックの実装 4 • OS上でICMP送受信の実装を⾏った ◦ 準仮想デバイス virtio-net[4]を利⽤ ◦ Ethernet/IP/ICMPとARPに対応する簡易的なプ ロトコルスタックを実装
• 追加した実装が700⾏ほど ◦ ARP Request/Reply ◦ ICMP Echo Request/Reply リポジトリ: https://github.com/kota-yata/small-nick-os
⾃作プロトコルスタックからICMPリクエストを送信する際のシーケンス 5 • 最初の通信時のみARP Request/Replyのやり取りが発⽣する • 2回⽬以降はすでに対応表が存在するのでICMPの往復だけで通信は完了する
ICMPリクエストを受信する際のシーケンス 6 • 最初の通信時のみARP Request/Replyのやり取りが発⽣する • 2回⽬以降はすでに対応表が存在するのでICMPの往復だけで通信は完了する
結果 7 ⾃作プロトコルスタックからのリクエスト送信と応答のパケットキャプチャの結果 ↑⾃作PSからEcho Requestを送信。ARPの送受信後Echo Replyが返ってきた ↑⾃作PS宛てのEcho RequestにEcho Replyで応答
今後の計画 8 • TCP/UDP/QUICのプロトコルスタックを設計/実装する ◦ ネットワークソケットの実装 ◦ ステートフルな通信の処理を書く • 物理NIC(e1000など)でネットワーク処理を書く
◦ virtioに関する実装はほとんどが共有メモリの初期化作業だった ◦ あまりNICを触っているという気持ちにならなかった ◦ 本物のNICのための処理を書いてみたい 本実装に関する今後の計画
参考⽂献 9 [1] "Operating System in 1000 Lines." Operating System
in 1000 Lines, n.d., https://operating-system-in-1000-lines.vercel.app/ja/. [2] "RISC-V Open Source Supervisor Binary Interface (OpenSBI)." GitHub, n.d., https://github.com/riscv-software-src/opensbi. [3] QEMU Project. “QEMU - The Fast Processor Emulator.” QEMU, n.d, https://www.qemu.org. [4] Tsirkin, Michael S., and Cornelia Huck, editors. Virtual I/O Device (VIRTIO) Version 1.1. OASIS, 20 Dec. 2018, https://docs.oasis-open.org/virtio/virtio/v1.1/csprd01/virtio-v1.1-csprd01.html.