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
階層独立性の高いプロトコルスタックの設計と実装
Search
Hiroki Watanabe (nelio)
March 22, 2019
Programming
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
階層独立性の高いプロトコルスタックの設計と実装
2019年3月22日に行われた「第8期サイボウズ・ラボユース成果発表会」にて使用したスライド(一部変更あり)
Hiroki Watanabe (nelio)
March 22, 2019
More Decks by Hiroki Watanabe (nelio)
See All by Hiroki Watanabe (nelio)
L4周辺の高機能通信路とネットワークの階層構造の再考
negli0
1
850
Other Decks in Programming
See All in Programming
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
330
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.7k
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
420
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
8
13k
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
180
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
2.1k
AIが無かった頃の素敵な出会いの話
codmoninc
1
220
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
190
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
340
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
310
We Have a Design System, Now What?
morganepeng
55
8.2k
From π to Pie charts
rasagy
0
240
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
It's Worth the Effort
3n
188
29k
Automating Front-end Workflow
addyosmani
1370
210k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
RailsConf 2023
tenderlove
30
1.5k
Visualization
eitanlees
152
17k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
380
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
470
Transcript
֊ಠཱੑͷߴ͍ ϓϩτίϧελοΫͷ ઃܭͱ࣮ ୈظαΠϘζɾϥϘϢʔεՌൃදձ!$ZCP[V౦ژΦϑΟε .BS )JSPLJ8"5"/"#& ެ։൛
• OFMJP - 5XJUUFS!@@OFMJP@@ - )1https://negli0.github.io - ݱࡏܚጯٛक़େֶ% - ϝϯλʔޫ͞Μ
• ݚڀ/FUXPSL4ZTUFN - &EHF$PNQVUJOH 4FSWJDF$IBJOJOH - "EWBODFE3PVUJOHɼ1SPUPDPM4UBDL झຯ 2 )JSPLJ8BUBOBCF
• ͘Β͍ເͯͨ͠ϞϊΛ࡞Δ - ֊ಠཱੑͷߴ͍ϓϩτίϧελοΫlFYMBZz • ΧʔωϧϓϩάϥϛϯάΛ͍ͨ͠ - ΄ͱΜͲͬͨ͜ͱ͕ͳ͔ͬͨͷͰ • ϥϘϢʔεલΧʔωϧ͔ͬ৮ͬͯͨ
• ޙϢʔβۭؒʢ1P$ʣ࣮ - ͋ͱݚڀͷࢹΛ͛ΔͨΊ • ࣮υϦϒϯͳݚڀͱͯ͠Ґஔ͚ͮΔ - ීஈݚڀυϦϒϯͳ࣮ • ࣮υϦϒϯͰ͖Δͱָͦ͠͏ Ͱ͖ͨ΄͏͕ྑ͍ 3 ϥϘϢʔεʹ͓͚Δୡඪ
• ݱࡏͷϓϩτίϧελοΫ ҎԼ୯ʹελοΫ - ϓϩτίϧͷػೳͱ֊͕ີ݁߹ ϞϊϦγοΫ • FH
&UIFSOFUୈ֊ɼ*1ୈ֊ɼʜ - طʹఆٛ͞Εͨ֊ߏΛར༻͢ΔϞσϧ • ֤ϓϩτίϧͷػೳͱ֊ҐஔΛ - ֊ಠཱੑ͕ߴ͘ͳΔ • ϓϩτίϧػೳͱ֊Ґஔͷ͕ؔرബʹ - ϓϩτίϧͷ֓೦Λ͋Δఔ·ͰҰൠԽͰ͖Δ • ػೳ͕ҟͳΔ͚ͩͰஔ͖͑Մೳ 4 ͡Ίʹ
5 Πϝʔδ Prot. W Prot. X Prot. Z App. App.
App. Prot. Y Prot. X Prot. W Prot. Y Prot. Z App. App. App. Prot. Y Prot. Z Prot. X Prot. W Prot. Y Prot. W Prot. Z Prot. W Prot. X ϞϊϦγοΫͳελοΫ ֊ಠཱੑ͕ߴ͍ελοΫ ֤ϓϩτίϧΛͲ͜ʹҐஔ͚ͮΔ͔ "QQ͝ͱʹҧͬͯྑ͍
• ϓϩτίϧ֓೦ͷҰൠԽ - ஔ͖͑Մೳɼػೳ͕֊ҐஔʹറΒΕͳ͍ • FH *1͚ͩΛผͷ-ϓϩτίϧʹஔ͖͑ • FH ಠࣗͷελοΫΛఆٛՄೳ
- ੍ϓϩτίϧಠࣗͷૢ࡞͕͘͠ͳΔ • ϓϩτίϧ࣮ͷ࠶ར༻ - ϓϩτίϧ͕ΞϓϦʹ౷߹͞Εͳ͍ˠ͍ճ͠ • ٯʹݴ͑ΞϓϦ͝ͱʹ࠷దԽͰ͖ͳ͍ - ৽ͨͳಠࣗϓϩτίϧͷ࣮ݧ͕༰қ • Ұ࡞Ε্ҐԼҐΛվΊͯ࡞Βͳͯ͘ྑ͍ 6 ֊ಠཱੑΛߴΊΔՁ
• ϓϩτίϧૢ࡞ͷநԽ - ͲΜͳॱংͰੵΈ্͛ΒΕͯػೳ͢ΔΑ͏ʹ • 1SPUPDPM1SPUPDPM*'ͷ͋ΔఔͷҰൠԽ • ελοΫͱΞϓϦΛ͢Δ - ϓϩτίϧ࣮ଞͷελοΫͰ͍ճͤΔ
• $1MBOFαϙʔτ - ֤ϓϩτίϧʹ͓͚Δ௨৴૬खΛಈతʹܾఆՄ • "31ɼ/%1ͳͲ 7 ཁٻࣄ߲
• 04*ࢀরϞσϧΛ࣮͠Α͏ͱͨ͠ - ֤ͷ*'ڞ௨ • ͋ΒΏΔ-ϓϩτίϧ ڞ௨*'Ͱ-ϓϩτίϧͱ ΓऔΓՄೳ - ֤ؒͷ*'ผ
• --*'ͱ--*'ผ 8 ؔ࿈ٕज़4ZTUFN7453&".4 • Transport Provider Interface Specification ◦ http://www.openss7.org/docs/tpi.pdf • Network Provider Interface Specification ◦ http://www.openss7.org/docs/npi.pdf • Datalink Provider Interface Specification ◦ http://www.openss7.org/docs/dlpi.pdf Layer 1 Layer 2 Layer 3 Layer 4 Layer 7 ... L1-L2 I/F L2-L3 I/F L3-L4 I/F ϓϩτίϧ͕֊Ґஔʹଋറ͞Ε͍ͯΔͱ͍͑Δ
• ͷநԽߏ छͷ*' - ߴͰ༏ΕͨநԽ - 1SPUPDPM1SPUPDPM*'ෆఆ • 'SFF#4%protosw
Ͱ நԽ • -JOVYʜʁ • Ұൠʹ֊ߏ੩తఆٛ - વܾΊଧͪ͢Δ΄͏͕ߴ 9 ؔ࿈ٕज़#4%4PDLFU Driver Socket App Protocol-Driver I/F Protocol Stack App.-Socket I/F Socket-Protocol I/F Protocol
• 1SPUPDPM1SPUPDPM*'ͷநԽ - "QQY,FSOFMɼ Y,FSOFM%SJDFSநԽ - 453&".4ͱ#4%4PDLFU ͷ͍͍ͱ͜औΓΛࢦͨ͠ • ֊ߏ੩తఆٛ
- ఆٛΛมߋ͢Δʹ ΧʔωϧίϯύΠϧ͕ඞཁ - ଟ༷ͳελοΫΛදݱՄೳ 10 ؔ࿈ٕज़x,FSOFM Driver App x-Kernel-Driver I/F App.-x-Kernel I/F Protocol-Protocol I/F x-Kernel /$)VUDIJOTPOBOE--1FUFSTPO 5IFY,FSOFMBOBSDIJUFDUVSFGPSJNQMFNFOUJOHOFUXPSLQSPUPDPMT JO*&&& 5SBOTBDUJPOTPO4PGUXBSF&OHJOFFSJOH WPM OP QQ +BOจ63-
• Y,FSOFMΛࠓ෩ʹϦΞϨϯδ - $-*ͰϓϩτίϧΛFYMBZTUBDLʹϩʔυ - ϩʔυ͞ΕͨϓϩτίϧΛ༻͍ͯ"QQ͕ ελοΫΛఆٛ • ϓϩτίϧ࣮ -
TIBSFEMJCSBSZ • 1P$ͬͪ͜ - LFSOFMNPEVMF • ࠓޙ࣮ݱ͍ͨ͠ 11 FYMBZ Driver App exlay-Driver I/F App.-exlay I/F Protocol-Protocol I/F exlay stack Protocol List CLI
• ϓϩτίϧ։ൃͷͨΊͷܗ - OBNFϓϩτίϧ໊ - IES@TJ[FϔομαΠζ - VQQFS@TJ[F্Ґ*%αΠζ • JQQSPUPDPM
• FUIFSOFUUZQF - E@JOQVUE@PVUQVU • ड৴ૹ৴ϋϯυϥ - D@QVMMD@QVTI • $1MBOFϋϯυϥ 12 நԽϓϩτίϧQSPUPDPMPCK name d_input d_output c_pull c_push hdr_size bind_size upper_size dial listen close - EJBMMJTUFODMPTF • ελοΫཱ֬ղ์ϋϯυϥ ͕͜͜؊ɼ͔ͭ·ͩෆेͳͷͰߟ͑ଓ͚Δ
root ethernet ipv4 arp uplyr mac1 upper1 mac1 upper2 fbind
fbind uplyr fp is_top ip1 upper3 ip1 upper4 fbind is_top fbind udp uplyr fbind port1 upper5 is_top • FYMBZͷΤϯυϙΠϯτΛಛఆ͢Δ 13 CJOEJOHUSFF GCJOE QUSUPGPSXBSECJOEJOH ݱ֊ͷ֘ϓϩτίϧͷ MPDBMCJOEJOHͷϦετΛࢦ͢ GQ QUSUPGPSXBSEQSPUP ݱ֊ͷϓϩτίϧͷ ϦετΛࢦ͢ VQMZS QUSUPVQQFSMBZFS ݱ֊ʹ͓͍ͯಛఆ͞Εͨ MPDBMCJOEJOHͷ্Ґ ϓϩτίϧͷϦετΛࢦ͢
14 FYMBZ"1*ͱ࣮ঢ়گ ໊ؔ ಈ࡞ ࣮ঢ়گ FY@DSFBUF@TUBDL ελοΫΛએݴॳظԽ ✔ FY@TFU@CJOEJOH MPDBMͷ*1BEES
QPSUͳͲͷઃఆ ✔ FY@TFU@SFNPUF SFNPUFͷ*1BEES QPSUͳͲͷઃఆ ✔ FY@CJOE@TUBDL ελοΫΛఆٛ ✔ FY@EJBM@TUBDL $0SJFOUFEͳϓϩτίϧͷଓཁٻ FY@MJTUFO@TUBDL $0SJFOUFEͳϓϩτίϧͷଓԠ FY@TFOE@TUBDL ఆٛͨ͠ελοΫʹσʔλΛૹ৴ ✔ FY@SFDW@TUBDL ఆٛͨ͠ελοΫ͔ΒσʔλΛड৴ ✔ FY@DMPTF@TUBDL ఆٛͨ͠ελοΫΛղ์
• MJTUՃࡁΈϓϩτίϧऔಘ • BEE༻ՄೳϓϩτίϧͷՃ • EFMϓϩτίϧͷআ 15 $-*͔Βͷૢ࡞ Ұ෦ൈਮ
16 "QQ࣮Πϝʔδ
• UFTU@FUIFSOFUϓϩτίϧΛՃ • ֊ UFTU@FUIFSOFU ελοΫΛఆٛ - ѼઌΤϯυϙΠϯτෆ໌ͷ߹υϩοϓ - ѼઌΤϯυϙΠϯτ͕߹க͢Δͱදࣔ
• σʔλͷૹ৴ड৴ - ϝοηʔδͷදࣔ - XJSFTIBSLͰຊʹͦͷσʔλ͔Ͳ͏͔֬ೝ 17 σϞ
• τϯωϧΤϯυϙΠϯτΛ࡞Δ - ݱঢ়VOEFSMBZ͔Βࢦఆ͠ͳ͍ͱ͍͚ͳ͍ • τϯωϦϯάͰͳ͍ʜ • ֤ϓϩτίϧͷॆ࣮ͱ$1MBOFରԠ - Έ߹ΘͤΔϓϩτίϧ͕ແ͍ͱແҙຯ
• Χʔωϧಈ࡞ - TIBSFEMJCˠLFSOFMNPEVMF - 'SFF#4%Ͱಈ͔͍ͨ͠ • QSPUPTX NCVGΛྲྀ༻͍ͨ͠ 18 ࠓޙͷల
• ݱࡏͷϓϩτίϧελοΫ - ϓϩτίϧͷػೳͱ֊͕ີ݁߹ • FYMBZϓϩτίϧͷػೳͱ֊ҐஔΛ - ֊ಠཱੑ͕ߴ͘ͳΔ • ύζϧͷΑ͏ʹϢʔβ͕ελοΫΛఆٛͰ͖Δ
- ϓϩτίϧͷ֓೦Λ͋Δఔ·ͰҰൠԽͰ͖Δ • σϞ - ࣗ࡞ϓϩτίϧΛ༻͍ͨಠࣗελοΫΛఆٛ - σʔλૹड৴͕Ͱ͖ͨ 19 ·ͱΊ
• وॏͳܦݧ͕Ͱ͖·ͨ͠ - ͖ͳ044࡞͓͍͚ͬͯۚͨͩͯʜ • ྑ͍ҙݟΛࢁ͍͖ͨͩ·ͨ͠ - ޫ͞Μɼ͞Μɼ͋Γ͕ͱ͏͍͟͝·ͨ͠ • େֶͰ։ൃʹ͍ͭͯฉ͚Δ૬ख͕΄΅͍ͳ͍
• ಠྗେࣄ͕ͩ։ൃ্खͳਓʹֶͿͷେࣄ • ϥϘϢʔεΛΊ·͢ - ੍ΛͬͨΒߦ͖͍ͨਓ݁ߏ͍Δͱࢥ͏ 20 ͓ΘΓʹ