Skip to content

โœจ๐ŸŽ€ Tragbare Stream Transportation ๐ŸŽ

License

Notifications You must be signed in to change notification settings

zako-ac/protofish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

59 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

banner

Dedicated to the one who is an author of the name Protofish.

Protofish

โœจ๐ŸŽ€ Tragbare Stream Transportation ๐ŸŽ

๋‹ค์ค‘ํ™”๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ŠคํŠธ๋ฆผ์„ ์œ„ํ•œ ์ถ”์ƒ ์ „์†ก ํ”„๋กœํ† ์ฝœ

์™œ Protofish๋ฅผ ์“ฐ๋‚˜์š”?

Protofish๊ฐ€ ๊ณ ์•ˆ๋˜๊ธฐ ์ „๊นŒ์ง€ TapHub๋Š” ์ „ํ†ต์ ์ธ HTTP/WS ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ์˜ค๋””์˜ค ์ŠคํŠธ๋ฆผ์„ ์ „์†กํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€์žฅ ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ด ๋ฐฉ๋ฒ•์€ ๊ธˆ์ƒˆ ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ๋“ค์˜ ๋ฒ ์ผ์„ ๋ฒ—๊ฒจ๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฑ•ํ„ฐ๋Š” ์ด์ „ ๋ฐฉ์‹์˜ ์ฃผ์š” ๋ฌธ์ œ์ ๊ณผ Protofish๊ฐ€ ๊ทธ๋“ค์„ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

๋ช…์„ธ์„œ

์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฌธ์„œ์— ๋ฒˆ์—ญ, ๋ฌธ์žฅ ๋‹ค๋“ฌ๊ธฐ, ๊ธฐ์ˆ ์  ์ˆ˜์ • ๋“ฑ์˜ ๊ธฐ์—ฌ๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค.

Protofish๊ฐ€ ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ

TCP Head-of-Line ๋ฌธ์ œ

hol TapHub๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” HTTP/1.1์€ TCP ๊ธฐ๋ฐ˜์ด๊ธฐ์—, TCP์˜ HOL ๋ฌธ์ œ๋ฅผ ์ˆ˜๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. TCP๋Š” ํŒจํ‚ท์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ํŒจํ‚ท ์ˆœ์„œ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž˜๋ชป๋œ ํŒจํ‚ท(๊ทธ๋ฆผ์—์„œ 6๋ฒˆ ํŒจํ‚ท)์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด ๊ทธ ํŒจํ‚ท์ด ๋ณต๊ตฌ๋  ๋•Œ๊นŒ์ง€ ์ „์ฒด ์ŠคํŠธ๋ฆผ์€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
Protofish๋Š” UDP๋ฅผ ํ†ตํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. Zako2 Infrastructure์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ Protofish ์—…์ŠคํŠธ๋ฆผ ๊ตฌํ˜„์ฒด์ธ QUICfish๋Š” UDP๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ์ธ QUIC์ด ์ œ๊ณตํ•˜๋Š” ๋น„์‹ ๋ขฐ ์ŠคํŠธ๋ฆผ(Unreliable Stream)์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ „ํ†ต์ ์ธ UDP๊ธฐ๋ฐ˜ ์†์‹ค ์˜ค๋””์˜ค ์ „์†ก ์‹œ์Šคํ…œ์— QUIC์˜ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๋ฐ ์•ˆ์ •์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

HTTP์˜ ์ผํšŒ์„ฑ

taphub-principle TapHub๋Š” ์ตœ์†Œํ•œ 2๊ฐœ์˜ ์‘๋‹ต ํŒจํ‚ท์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. TapHub๊ฐ€ Tap์—๊ฒŒ ์˜ค๋””์˜ค ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ, ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ƒ๋žตํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ACK ํ•ด๋‹น Tap์ด ์˜จ๋ผ์ธ์ด๊ณ  ์Œ์›์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ž„์„ ํ‘œ์‹œ
  • RES ์‹ค์ œ ์Œ์› ๋ฐ์ดํ„ฐ HTTP ๊ธฐ๋ฐ˜์˜ ์‘๋‹ต์—์„œ TapHub๋Š” HTTP ์†Œ์ผ“์˜ ์‹œ์ž‘์„ ACK, ๊ทธ๊ฒƒ์˜ ๋ฐ์ดํ„ฐ๋Š” RES๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
  • ํ†ต์ƒ์ ์ด์ง€ ์•Š์€ HTTP์˜ ๊ธฐ๋Šฅ์„ ์ค‘์š” ๋กœ์ง์— ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ €์ˆ˜์ค€ HTTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€์ ์ธ ํŒจํ‚ท ํ™•์žฅ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Protofish๋Š” Context ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์˜ ์ฑ„๋„์„ ํ†ตํ•ด ํ•œ ๊ฐœ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ๋Œ€ํ™” ์„ธ์…˜์„ ํšจ์œจ์ ์œผ๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

All-in-One

์ด ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํ•˜๋‚˜์˜ ํ”„๋กœํ† ์ฝœ์— ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฐœ์˜ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ๋งŒ์œผ๋กœ ์•ˆ์ •์ ์ธ Tap ์—ฐ๊ฒฐ์˜ ์œ ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Protofish, QUICfish, Zakofish

Protofish, QUICfish, Zakofish๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

Protofish

Protofish๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ŠคํŠธ๋ฆผ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ์˜ค๋””์˜ค๋‚˜ Zako2์— ๊ด€ํ•œ ์ง์ ‘์ ์ธ ์—ฐ๊ด€์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ถ”์ƒ์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์˜ ์„ค๋ช…์ด๊ธฐ์— Protofish ๋ช…์„ธ๋งŒ์œผ๋ก  IP๊ธฐ๋ฐ˜ ๋„คํŠธ์›Œํฌ ์œ„์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

QUICfish

QUICfish๋Š” Protofish๋ฅผ ์ฝ˜ํฌ๋ฆฌํŠธํ•œ QUIC ํ”„๋กœํ† ์ฝœ ์œ„์— ๊ตฌํ˜„ํ•œ ์กด์žฌ์ž…๋‹ˆ๋‹ค. QUICfish๋Š” ์ง์ ‘์ ์œผ๋กœ IP ๋„คํŠธ์›Œํฌ ์œ„์—์„œ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zakofish

Zakofish๋Š” Zako2 Infrastructure์˜ ์ „ํ†ต์ ์ธ HTTP/WS ์‹œ์Šคํ…œ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด QUICfish ์œ„์—์„œ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„๋œ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. Zakofish๋Š” HTTP๊ธฐ๋ฐ˜ Zako2 Tap ํ†ต์‹ ์„ ์™„์ „ํžˆ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. (๋‹จ, ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด HTTP/WS ์‹œ์Šคํ…œ์€ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.)

๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์ˆ  ๊ตฌํ˜„์€ ๋ฌผ๋ก  ๋ฒˆ์—ญ, ๋ฌธ์žฅ ์žฌ๊ตฌ์„ฑ ๋“ฑ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๊ธฐ์—ฌ๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค.

์ฃผ์˜ ์‚ฌํ•ญ

  • ๋ฌธ์„œ์˜ ์งœ์ž„ ํ˜•ํƒœ๋ฅผ ๋ณด์กดํ•ด์ฃผ์„ธ์š”.
  • ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

๊ฒฐ๋ก 

Protofish๋Š” Zako2 Infrastructure๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋˜์—ˆ์ง€๋งŒ, ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆผ ์ „์†ก์— ํŠนํ™”๋œ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ž์ฝ”๋Š” ๊ท€์—ฝ์Šต๋‹ˆ๋‹ค.

Credits

  • MincoMK (@minco_rl)

About

โœจ๐ŸŽ€ Tragbare Stream Transportation ๐ŸŽ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •