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
2024年秋 中村研 WIP発表資料
Search
kota-yata
January 30, 2025
Programming
100
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
Arch輪読: 詳解システムパフォーマンス 第二版 第6章
kota_yata
0
50
RG-Arch 輪講資料: Binary Hacks Rebooted 数値演算など
kota_yata
0
71
結局QUICで通信は速くなるの?
kota_yata
10
8k
RG-Arch輪考資料: QUIC is not Quick Enough over Fast Internet
kota_yata
0
170
RG-Arch輪考資料: Implementation and Performance Evaluation of the QUIC Protocol in Linux Kernel
kota_yata
0
200
パタヘネ輪読: 第五章
kota_yata
0
88
パタヘネ輪読: 第一章
kota_yata
0
340
2023年秋 中村研 WIP発表資料
kota_yata
0
150
2023年春 中澤大越研 WIP発表資料
kota_yata
0
110
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
290
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
140
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
570
AIが無かった頃の素敵な出会いの話
codmoninc
1
110
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
2.8k
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
510
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1k
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
590
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.2k
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
600
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Navigating Team Friction
lara
192
16k
Mobile First: as difficult as doing things right
swwweet
225
10k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
450
Tell your own story through comics
letsgokoyo
1
1k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
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.