Dedicated to the one who is an author of the name Protofish.
โจ๐ Tragbare Stream Transportation ๐
๋ค์คํ๋ ๋ฐ์ด๋๋ฆฌ ์คํธ๋ฆผ์ ์ํ ์ถ์ ์ ์ก ํ๋กํ ์ฝ
Protofish๊ฐ ๊ณ ์๋๊ธฐ ์ ๊น์ง TapHub๋ ์ ํต์ ์ธ HTTP/WS ๋ฐฉ์์ ์ฌ์ฉํด ์ค๋์ค ์คํธ๋ฆผ์ ์ ์กํ์ต๋๋ค. ์ด๋ ๊ฐ์ฅ ์ฝ๊ณ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฌ๋, ์ด ๋ฐฉ๋ฒ์ ๊ธ์ ์ฌ๋ฌ ๋ฌธ์ ์ ๋ค์ ๋ฒ ์ผ์ ๋ฒ๊ฒจ๋์ต๋๋ค. ๋ค์ ์ฑํฐ๋ ์ด์ ๋ฐฉ์์ ์ฃผ์ ๋ฌธ์ ์ ๊ณผ Protofish๊ฐ ๊ทธ๋ค์ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ๊ดํ ๊ฐ๋ตํ ์ค๋ช ์ ๋๋ค.
์ฌ๊ธฐ ์์ต๋๋ค. ๋ชจ๋ ๋ฌธ์์ ๋ฒ์ญ, ๋ฌธ์ฅ ๋ค๋ฌ๊ธฐ, ๊ธฐ์ ์ ์์ ๋ฑ์ ๊ธฐ์ฌ๋ ์ธ์ ๋ ํ์์ ๋๋ค.
TapHub๊ฐ ์ฌ์ฉํ๋ HTTP/1.1์ TCP ๊ธฐ๋ฐ์ด๊ธฐ์, TCP์ HOL ๋ฌธ์ ๋ฅผ ์๋ฐํฉ๋๋ค. TCP๋ ํจํท์ ๋ฌด๊ฒฐ์ฑ๊ณผ ํจํท ์์์ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ชป๋ ํจํท(๊ทธ๋ฆผ์์ 6๋ฒ ํจํท)์ด ๋ค์ด์จ๋ค๋ฉด ๊ทธ ํจํท์ด ๋ณต๊ตฌ๋ ๋๊น์ง ์ ์ฒด ์คํธ๋ฆผ์ ์ค๋จ๋ฉ๋๋ค.
Protofish๋ UDP๋ฅผ ํตํด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. Zako2 Infrastructure์์ ์ฌ์ฉ๋๋ ํ์ค Protofish ์
์คํธ๋ฆผ ๊ตฌํ์ฒด์ธ QUICfish๋ UDP๊ธฐ๋ฐ ํ๋กํ ์ฝ์ธ QUIC์ด ์ ๊ณตํ๋ ๋น์ ๋ขฐ ์คํธ๋ฆผ(Unreliable Stream)์ ์ด์ฉํฉ๋๋ค. ์ด๋ ์ ํต์ ์ธ UDP๊ธฐ๋ฐ ์์ค ์ค๋์ค ์ ์ก ์์คํ
์ QUIC์ ๊ฐ๋ ฅํ ๋ณด์ ๋ฐ ์์ ์ฑ์ ์ถ๊ฐํฉ๋๋ค.
TapHub๋ ์ต์ํ 2๊ฐ์ ์๋ต ํจํท์ ํ์๋ก ํฉ๋๋ค. TapHub๊ฐ Tap์๊ฒ ์ค๋์ค ์์ฒญ์ ๋ณด๋์ ๋, ์์ธํ ๋ด์ฉ์ ์๋ตํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ACK ํด๋น Tap์ด ์จ๋ผ์ธ์ด๊ณ ์์์ ์์ฑํ ์ ์๋ ์ํ์์ ํ์
- RES ์ค์ ์์ ๋ฐ์ดํฐ HTTP ๊ธฐ๋ฐ์ ์๋ต์์ TapHub๋ HTTP ์์ผ์ ์์์ ACK, ๊ทธ๊ฒ์ ๋ฐ์ดํฐ๋ RES๋ก ํ๋จํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์กด์ฌํฉ๋๋ค.
- ํต์์ ์ด์ง ์์ HTTP์ ๊ธฐ๋ฅ์ ์ค์ ๋ก์ง์ ์ด์ฉํฉ๋๋ค.
- ์ ์์ค HTTP ํด๋ผ์ด์ธํธ๊ฐ ํ์ํฉ๋๋ค.
- ์ถ๊ฐ์ ์ธ ํจํท ํ์ฅ์ด ์ด๋ ต์ต๋๋ค. Protofish๋ Context ์์คํ ์ ํตํด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ํ๋กํ ์ฝ์ ์ฑ๋์ ํตํด ํ ๊ฐ์ ์์ฒญ์ ๋ํ ์ฌ๋ฌ ๋ฒ์ ๋ํ ์ธ์ ์ ํจ์จ์ ์ผ๋ก ์ถ์ ํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ธฐ๋ฅ์ด ํ๋์ ํ๋กํ ์ฝ์ ๋ด๊ฒจ ์์ต๋๋ค. ํ ๊ฐ์ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ๋ง์ผ๋ก ์์ ์ ์ธ Tap ์ฐ๊ฒฐ์ ์ ์ง๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Protofish, QUICfish, Zakofish๋ ๋ชจ๋ ๋ค๋ฅธ ๊ฐ๋ ์ ๋๋ค.
Protofish๋ ๋ฐ์ด๋๋ฆฌ ์คํธ๋ฆผ๊ณผ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ ๋๋ค. ์ค์๊ฐ ์ค๋์ค๋ Zako2์ ๊ดํ ์ง์ ์ ์ธ ์ฐ๊ด์ ์กด์ฌํ์ง ์์ต๋๋ค. ๋ํ, ์ถ์์ ์ธ ์๋ ๋ฐฉ์์ ์ค๋ช ์ด๊ธฐ์ Protofish ๋ช ์ธ๋ง์ผ๋ก IP๊ธฐ๋ฐ ๋คํธ์ํฌ ์์์ ๋์ํ ์ ์์ต๋๋ค.
QUICfish๋ Protofish๋ฅผ ์ฝํฌ๋ฆฌํธํ QUIC ํ๋กํ ์ฝ ์์ ๊ตฌํํ ์กด์ฌ์ ๋๋ค. QUICfish๋ ์ง์ ์ ์ผ๋ก IP ๋คํธ์ํฌ ์์์ ํต์ ํ ์ ์์ต๋๋ค.
Zakofish๋ Zako2 Infrastructure์ ์ ํต์ ์ธ HTTP/WS ์์คํ ์ ๋ณด์ํ๊ธฐ ์ํด QUICfish ์์์ ๋์ํ๋๋ก ์ค๊ณ๋ ํต์ ํ๋กํ ์ฝ์ ๋๋ค. Zakofish๋ HTTP๊ธฐ๋ฐ Zako2 Tap ํต์ ์ ์์ ํ ๋์ฒดํฉ๋๋ค. (๋จ, ํ์ ํธํ์ฑ์ ์ํด HTTP/WS ์์คํ ์ ๋ณด์กด๋ฉ๋๋ค.)
๊ธฐ์ ๊ตฌํ์ ๋ฌผ๋ก ๋ฒ์ญ, ๋ฌธ์ฅ ์ฌ๊ตฌ์ฑ ๋ฑ์ ํฌํจํ ๋ชจ๋ ์ข ๋ฅ์ ๊ธฐ์ฌ๋ ์ธ์ ๋ ํ์์ ๋๋ค.
- ๋ฌธ์์ ์ง์ ํํ๋ฅผ ๋ณด์กดํด์ฃผ์ธ์.
- ์ดํดํ๊ธฐ ์ฝ๊ฒ ์์ฑํด์ฃผ์ธ์.
Protofish๋ Zako2 Infrastructure๋ฅผ ์ต์ ํํ๊ธฐ ์ํด ๊ณ ์๋์์ง๋ง, ์ค์๊ฐ ์คํธ๋ฆผ ์ ์ก์ ํนํ๋ ๋ค์ํ ๋ถ์ผ์ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ์ต์ ํ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ฝ๋ ๊ท์ฝ์ต๋๋ค.
- MincoMK (@minco_rl)
