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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
78
結局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
94
パタヘネ輪読: 第一章
kota_yata
0
360
2023年秋 中村研 WIP発表資料
kota_yata
0
160
Other Decks in Programming
See All in Programming
アクセシビリティから考える情報設計
high_g_engineer
0
380
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
120
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
140
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
120
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7.2k
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
120
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
170
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
0
160
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
380
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
140
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
230
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.3k
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
320
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
650
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
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.