TCP Congestion control
๐กย TCP AIMD
๋คํธ์ํฌ์์ ๋ฐ์ดํฐ๋ฅผ ๋๋ฌด ๋น ๋ฅด๊ฒ ์ ์กํ๋ฉด ๋ผ์ฐํฐ์ ๋ฒํผ๊ฐ ๋์น๋ฉด์ ํจํท ์์ค์ด ๋ฐ์ํ ์ ์๋ค. ์ด๋ฌํ ์ํฉ์ Congestion(ํผ์ก)์ด๋ผ๊ณ ํ๋ค. TCP๋ Congestion ์ํฉ์์๋ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด congestion control ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.
AIMD(Additive Increase Multiplicative Decrease)
TCP์ ํผ์ก ์ ์ด ๋ฉ์ปค๋์ฆ์ AIMD ๋ฐฉ์์ ๋ฐ๋ฅธ๋ค. AIMD๋ ๊ฐ์ฐ ์ฆ๊ฐ ๊ณฑ์
๊ฐ์๋ผ๋ ์๋ฏธ๋ก, ๋คํธ์ํฌ๊ฐ ์ํํ๊ฒ ๋์ํ ๋๋ ์ ์ก ์๋๋ฅผ ์กฐ๊ธ์ฉ ๋๋ฆฌ๊ณ ํผ์ก์ด ๊ฐ์ง๋๋ฉด ์ ์ก ์๋๋ฅผ ๊ธ๊ฒฉํ ์ค์ด๋ ๋ฐฉ์์ด๋ค.
- Additive Increase (๊ฐ์ฐ์ ์ฆ๊ฐ): ๋คํธ์ํฌ๊ฐ ์ํธํ๋ฉด TCP๋ ๋งค RTT๋ง๋ค ํผ์ก ์๋์ฐ๋ฅผ 1MSS์ฉ ์ฆ๊ฐ์ํจ๋ค.
- Multiplicative Decrease (๊ณฑ์ ์ ๊ฐ์): ๋ฐ๋๋ก ํจํท ์์ค์ด ๋ฐ์ํ๋ฉด ๋คํธ์ํฌ๋ฅผ ํผ์ก์ผ๋ก ํ๋จํ๊ณ , cwnd๋ฅผ ๋ฐ์ผ๋ก ์ค์ธ๋ค.
๋ง์ ๋๊ฒ ์ด๋ ต๊ฒ ์์ฑ๋ ๊ฒ ๊ฐ์ง๋ง ์ฆ๊ฐํ ๋๋ 1์ฉ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๊ณ , ๊ฐ์ํ ๋๋ ์ ๋ฐ์ผ๋ก ์ค์ด๋ ๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค.
์ด ๋ฐฉ์์ TCP์ ์ ์ก ์๋๋ฅผ ํฑ๋ ๋ชจ์์ผ๋ก ๋ณํ์ํจ๋ค. ์๋๋ฅผ ์ ์ง์ ์ผ๋ก ์ฌ๋ ธ๋ค๊ฐ ํผ์ก์ ๋ง๋๋ฉด ๊ธ๊ฒฉํ ์ค์ด๊ณ , ๋ค์ ์์ํ ์ฆ๊ฐํ๋ ์์ด๋ค. ์ด๋ฅผ ํตํด TCP๋ ๋คํธ์ํฌ์ ๊ฐ์ฉ ๋์ญํญ์ ์กฐ์ฌ์ค๋ฝ๊ฒ ํ์ํ๊ฒ ๋๋ค.
์ก์
์๋
โ
โ /\ /\ /\
โ / \ / \ / \
โ / \/ \/ \
โ /
โ/
โโโโโโโโโโโโโโโโโโโโโโ ์๊ฐ
TCP๋ ํจํท ์์ค์ ACK ํจํท ๋ฐ๋ณต ์์ (3์ค๋ณต ACK)์ด๋ ์ผ์ ์๊ฐ ACK ๋ฏธ์์ (ํ์์์)์ผ๋ก ๊ฐ์งํด ๊ทธ์ ๋ฐ๋ผ ํผ์ก ์๋์ฐ๋ฅผ ๋ค๋ฅด๊ฒ ์กฐ์ ํ๋ค. ์ด ๋ฐฉ์์ Reno๋ Tahoe ๊ฐ์ TCP ๊ตฌํ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ์ฉ๋๋ค.
cwnd
TCP์์ cwnd(congestion window, ํผ์ก ์๋์ฐ)๋ ์ก์ ์๊ฐ ๋คํธ์ํฌ์ ๋์์ ์ ์กํ ์ ์๋ ๋ฐ์ดํฐ ์์ ์ํ์ ์ ์๋ฏธํ๋ ๋ณ์๋ค. ํผ์ก ์๋์ฐ๋ ๋คํธ์ํฌ์ ํผ์ก ์ํ๋ฅผ ๋ฐ์ํด ์ ์ก ์๋๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๋ค.
TCP๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค.
์ด ์์ ์์ง ACK๋ฅผ ๋ฐ์ง ๋ชปํ ์ํ๋ก ๋คํธ์ํฌ์ ๋จ์ ์๋ ๋ฐ์ดํฐ์ ์์ด ํผ์ก ์๋์ฐ๋ฅผ ์ด๊ณผํ ์ ์์์ ์๋ฏธํ๋ค. cwnd๊ฐ ์์ผ๋ฉด ์ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ผ ํ๊ณ , cwnd๊ฐ ํฌ๋ฉด ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ ์กํ ์ ์๋ค.
์ค์ง์ ์ธ ์ก์ ์๋๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐ๋๋ค.
์ฆ, cwnd์ ํฌ๊ธฐ์ RTT๊ฐ TCP์ ์ ์ก ์๋๋ฅผ ๊ฒฐ์ ํ๋ ์์๊ฐ ๋๋ค.
TCP๋ AIMD ๋ฐฉ์ ๋ฑ์ ํตํด cwnd์ ํฌ๊ธฐ๋ฅผ ์ ์ง์ ์ผ๋ก ์กฐ์ ํ๋ฉด์ ํผ์ก์ ํํผํ๊ณ ๋์์ ๋คํธ์ํฌ์ ๊ฐ์ฉ ๋์ญํญ์ ์ต๋ํ ํ์ฉํ๋ ค๊ณ ํ๋ค.
์ด๋ ๊ฒ AIMD๋ TCP์ ์ ์ฒด congestion control ๋ฐฉ์์์์ ๊ธฐ๋ณธ ์๋ฆฌ๋ก ์๊ฐํ๋ฉด ๋๋ค. ํ์ง๋ง, TCP๋ ์ฐ๊ฒฐ์ด ์ฒ์ ์์๋ ๋๋ถํฐ congestion control๊น์ง ์ฌ๋ฌ ๋จ๊ณ๋ก ํผ์ก ์ํฉ์ ๋์ํ๋ค. ๋ํ์ ์ผ๋ก Slow Start, Congestion Avoidance, Fast Retransmit, Fast Recovery ๋ฑ์ด ์๊ณ ์ด๋ค ๊ฐ ๋จ๊ณ๋ AIMD ์์น์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค.
TCP ์ฐ๊ฒฐ ์ด๊ธฐ ๋จ๊ณ์์ ์ฌ์ฉ๋๋ Slow Start ๋จผ์ ์ดํด๋ณด์.
๐กย Slow Start
Slow Start์ ๊ฐ๋
TCP ์ฐ๊ฒฐ์ด ์ฒ์ ์์๋ ๋, ์ก์ ์๋ ๋คํธ์ํฌ์ ์ฉ๋(๋์ญํญ๊ณผ ์ง์ฐ ๋ฑ)์ ์ ์ ์๋ค. ๋๋ฌด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํ๊บผ๋ฒ์ ๋ณด๋ด๋ฉด congestion์ ์ ๋ฐํ๊ณ , ๋๋ฌด ์ ๊ฒ ๋ณด๋ด๋ฉด ์์์ ๋นํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด TCP๋ Slow Start๋ผ๋ congestion control ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค. ์ด๋ฆ๊ณผ ๋ค๋ฅด๊ฒ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ค์ ๋ก cwnd๋ฅผ ์ง์์ ์ผ๋ก ๋น ๋ฅด๊ฒ ์ฆ๊ฐ์ํค๋ ๋ฐฉ์์ ์ฌ์ฉํด โ๋น ๋ฅธ ์์โ์ ๊ฐ๊น๊ธด ํ๋ค.
Slow Start์ ๋์ ๋ฐฉ์
Slow Start๋ ์๋์ ๊ฐ์ด ๋์ํ๋ค.
- ์ฐ๊ฒฐ์ด ์์๋๋ฉด ํผ์ก ์๋์ฐ๋ฅผ 1MSS๋ก ์ค์ ํ๋ค.
- ๋งค ACK๋ฅผ ๋ฐ์ ๋๋ง๋ค ํผ์ก ์๋์ฐ๋ฅผ 1MSS์ฉ ์ฆ๊ฐ์ํจ๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด ๋งค RTT๋ง๋ค ํผ์ก ์๋์ฐ๊ฐ 2๋ฐฐ๋ก ์ฆ๊ฐํ๋ค.
์ด๋ฌํ ์ง์์ ์ฆ๊ฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋๋ค.
- ์ฒซ RTT์์ 1๊ฐ์ ์ธ๊ทธ๋จผํธ ์ ์ก
- ๋ ๋ฒ์งธ RTT์์ 2๊ฐ์ ์ธ๊ทธ๋จผํธ ์ ์ก
- ์ธ ๋ฒ์งธ RTT์์ 4๊ฐ์ ์ธ๊ทธ๋จผํธ ์ ์ก
- ๋ค ๋ฒ์งธ RTT์์ 8๊ฐ์ ์ธ๊ทธ๋จผํธ ์ ์ก
์ด๋ฐ ์์ผ๋ก cwnd๊ฐ 1, 2, 4, 8, 16... ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
Slow Start ์๊ณ๊ฐ(ssthresh)
TCP๋ Slow Start๋ฅผ ๊ณ์ ์งํํ๋ฉด์ ์ธ์ ๊น์ง ์ง์์ ์ผ๋ก ์ฆ๊ฐ์ํฌ์ง ๊ฒฐ์ ํด์ผ ํ๋ค. ์ด๋ฅผ ์ํด ssthresh๋ผ๋ ๊ฐ์ ์ฌ์ฉํ๋ค.
์ด๊ธฐ์ ssthresh๋ ๋ณดํต ํฐ ๊ฐ์ผ๋ก ์ค์ ๋์ด ์๋ค(์: 65KB). cwnd๊ฐ ssthresh์ ๋๋ฌํ๋ฉด TCP๋ Slow Start ๋จ๊ณ๋ฅผ ์ข ๋ฃํ๊ณ 'Congestion Avoidance' ๋จ๊ณ๋ก ์ ํํ๋ค. ์ด ๋จ๊ณ์์๋ cwnd๊ฐ ์ ํ์ ์ผ๋ก(๋งค RTT๋ง๋ค 1MSS์ฉ) ์ฆ๊ฐํ๋ค.
ํจํท ์์ค์ด ๋ฐ์ํ๋ฉด ssthresh๋ ์์ค ๋ฐ์ ์ง์ ์ cwnd ๊ฐ์ ์ ๋ฐ์ผ๋ก ์ฌ์ค์ ๋๋ค. ์ด๋ ๋คํธ์ํฌ ์ฉ๋์ ๊ทผ์ ํ๋ค๋ ์ ํธ๋ก ํด์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๐กย Congestion Avoidance
Congestion Avoidance(ํผ์ก ํํผ)๋ TCP๊ฐ ๋คํธ์ํฌ congestion์ ๊ฐ๊น์์ก๋ค๊ณ ํ๋จํ์ ๋, ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ธ ๋ ์กฐ์ฌ์ค๋ฝ๊ฒ ๋ณด๋ด๊ธฐ ์์ํ๋ ๋จ๊ณ๋ค. ์ ์ก ์๋๋ฅผ ๊ธ๊ฒฉํ ๋๋ฆฌ๋ ๋์ ์ํฉ์ ๋ณด๋ฉฐ ์ฒ์ฒํ ์ฆ๊ฐ์ํค๋ ๋ฐฉ์์ ์ทจํ๋ค. ์ผ๋ฐ์ ์ผ๋ก Slow Start ๊ณผ์ ์์ cwnd๊ฐ ssthresh์ ๋๋ฌํ์ ๋ ์์๋๋ค.
Congestion Avoidance ๋จ๊ณ์ ์ง์ ํ ๋ cwnd๋ ๋๊ฐ ์ด์ ์ ํผ์ก์ด ๊ฐ์ง๋์์ ๋์ ๊ฐ์ ์ฝ ์ ๋ฐ์ผ๋ก ๋คํธ์ํฌ๊ฐ ๋ค์ ํผ์ก ์ํ์ ๋น ์ง ์ํ์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ TCP๋ Slow Start์ ์ง์์ ์ฆ๊ฐ ๋ฐฉ์๋ณด๋ค ๋ ๋ณด์์ ์ธ ์ ๊ทผ๋ฒ์ ์ทจํ๊ณ , RTT๋ง๋ค cwnd๋ฅผ 1 MSS๋งํผ๋ง ์ฆ๊ฐ์ํจ๋ค.
๋์ ์๋ฆฌ
Congestion Avoidance ๋จ๊ณ์์ cwnd๋ ๋ค์๊ณผ ๊ฐ์ด ์ฆ๊ฐํ๋ค.
- ์๋ก์ด ACK๊ฐ ๋์ฐฉํ ๋๋ง๋ค cwnd๋ฅผ MSS ร (MSS/cwnd) ๋ฐ์ดํธ๋งํผ ์ฆ๊ฐ์ํจ๋ค.
- ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํ๋์ RTT ๋์ ๋ชจ๋ ์ธ๊ทธ๋จผํธ์ ACK๋ฅผ ๋ฐ์ผ๋ฉด cwnd๋ ์ ํํ 1 MSS๋งํผ ์ฆ๊ฐํ๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด, MSS๊ฐ 1,460๋ฐ์ดํธ์ด๊ณ cwnd๊ฐ 14,600๋ฐ์ดํธ๋ผ๋ฉด ์ด ์์ ์ ์ก์ ์๋ ํ ๋ฒ์ 10๊ฐ์ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณด๋ผ ์ ์๋ค. ์ด๋ ๊ฐ ACK๊ฐ ์ฌ ๋๋ง๋ค cwnd๋ 1/10 MSS์ฉ ๋์ด๋๊ณ , ๊ฒฐ๊ตญ ํ RTT๊ฐ ๋๋๋ฉด 1 MSS๋งํผ ์ฆ๊ฐํ๊ฒ ๋๋ค.
๊ฐ ACK๊ฐ ๋์ฐฉํ ๋๋ง๋ค cwnd๋ 1/10 MSS๋งํผ ์ฆ๊ฐํ๊ณ , 10๊ฐ์ ์ธ๊ทธ๋จผํธ์ ๋ํ ๋ชจ๋ ACK๊ฐ ๋์ฐฉํ๋ฉด cwnd๋ ์ด 1 MSS๋งํผ ์ฆ๊ฐํ ์ํ๊ฐ ๋๋ค.
์ข ๋ฃ ์กฐ๊ฑด
Congestion Avoidance์ ์ ํ์ ์ฆ๊ฐ๋ ์ธ์ ๋๋์ผ ํ ๊น? TCP๋ ํจํท ์์ค์ด ๊ฐ์ง๋ ๋๊น์ง ์ด ๊ณผ์ ์ ๊ณ์ํ๋ค. ํจํท ์์ค์ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ฐ์ง๋ ์ ์๋ค.
- ํ์์์ ๋ฐ์ ์
- Slow Start์์์ ๋ง์ฐฌ๊ฐ์ง๋ก cwnd๋ฅผ 1 MSS๋ก ์ค์ ํ๊ณ , ssthresh๋ฅผ ์์ค ๋ฐ์ ์์ ์ cwnd์ ์ ๋ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค. ๊ทธ๋ฆฌ๊ณ Slow Start ๋จ๊ณ๋ก ๋์๊ฐ๋ค.
- 3์ค๋ณต ACK ๋ฐ์ ์
- ์ด ๊ฒฝ์ฐ ๋คํธ์ํฌ๋ ์ฌ์ ํ ์ผ๋ถ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ๋ฌํ๊ณ ์๋ ์ํ์ด๋ฏ๋ก, ํ์์์๋ณด๋ค ๋ ๊ธ๊ฒฉํ ๋์์ด ํ์ํ๋ค. cwnd๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ด๊ณ (3 MSS๋ฅผ ๋ํด 3์ค๋ณต ACK๋ฅผ ๊ณ ๋ ค), ssthresh๋ฅผ 3์ค๋ณต ACK ๋ฐ์ ์์ ์ cwnd์ ์ ๋ฐ์ผ๋ก ์ค์ ํ๋ค. ๊ทธ๋ฐ ๋ค์ Fast Recovery ๋จ๊ณ๋ก ์ง์ ํ๋ค.
๐กย Fast Recovery
Fast Recovery๋ TCP๊ฐ ๋คํธ์ํฌ congestion์ ํจ์จ์ ์ผ๋ก ์ ์ดํ๊ธฐ ์ํด ๋์ ํ ๊ธฐ๋ฒ์ด๋ค. ๊ธฐ์กด์ TCP Tahoe๋ ํจํท ์์ค์ ๋ฐ๊ฒฌํ๋ฉด ํญ์ cwnd๋ฅผ 1 MSS๋ก ๋ฆฌ์ ํ๊ณ Slow Start๋ถํฐ ๋ค์ ์์ํ๊ธฐ ๋๋ฌธ์, ๋คํธ์ํฌ ์ํ๊ฐ ๋์์ง ์์๋ ์ฑ๋ฅ์ ํฌ๊ฒ ๋ฎ์ถ๋ ๋จ์ ์ด ์์๋ค.
์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด TCP Reno๋ 3์ค๋ณต ACK์ ํตํด ๋ฐ์ํ ์์ค์ ๋ํด ๋ ์ ๊ตํ๊ฒ ๋์ํ๋ Fast Recovery ์๊ณ ๋ฆฌ์ฆ์ ๋์ ํ๋ค.
๋์ ์๋ฆฌ
Fast Recovery๋ 3์ค๋ณต ACK๋ก ํจํท ์์ค์ด ๊ฐ์ง๋์์ ๋ ์๋์ ๊ฐ์ด ๋์ํ๋ค.
- ์์ค์ด ๊ฐ์ง๋๋ฉด ssthresh๋ฅผ cwnd / 2๋ก ์ค์ ํ๋ค.
- ์์ค๋ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ ์กํ๋ค.
- cwnd๋ฅผ ssthresh + 3 MSS๋ก ์ค์ ํ๋ค.
- 3๊ฐ์ ์ค๋ณต ACK๊ฐ ๋์ฐฉํ ๋งํผ์ ์ด๋ฏธ ์์ ์์ ๋๋ฌํ์ผ๋ฏ๋ก ๊ทธ๋งํผ ๋ณด๋ด๋ ๊ฑด ํ์ฉํ๋ค.
- ์ดํ ์ค๋ณต ACK๋ง๋ค cwnd๋ฅผ 1 MSS์ฉ ์ฆ๊ฐ์ํจ๋ค.
- ์ฝ๊ฐ์ฉ ์ ์ก๋์ ๋๋ฆฌ๋ฉฐ ๋คํธ์ํฌ ์ํฉ์ ํ์ํ๋ค.
- ์์ค๋ ์ธ๊ทธ๋จผํธ์ ๋ํ ์๋ก์ด ACK๋ฅผ ๋ฐ์ผ๋ฉด,
- cwnd๋ฅผ ssthresh ๊ฐ์ผ๋ก ์ค์ ํ๊ณ Congestion Avoidance ๋จ๊ณ๋ก ์ ํํ๋ค.
TCP Tahoe vs. TCP Reno
TCP Tahoe์ Reno๋ ํจํท ์์ค์ ์ด๋ป๊ฒ ๋ฐ์ํ๋๊ฐ์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋ค.
| ๊ตฌ๋ถ | TCP Tahoe | TCP Reno |
|---|---|---|
| ์์ค ๊ฐ์ง ๋ฐฉ์ | ํ์์์, 3์ค๋ณต ACK ๋์ผ ์ฒ๋ฆฌ | ๊ฐ์ง ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ |
| ๋์ ๋ฐฉ์ | ํญ์ cwnd = 1 MSS, Slow Start๋ก ๋ฆฌ์ | 3์ค๋ณต ACK ์ Fast Recovery, ํ์์์ ์๋ง Slow Start |
| ํ๋ณต ์๋ | ๋๋ฆผ (์ง์ ์ฆ๊ฐ) | ๋น ๋ฆ (์ ํ ์ฆ๊ฐ ์ ์ง) |
| ์ฑ๋ฅ ํน์ฑ | ๋งค์ฐ ๋ณด์์ | ์ค์ฉ์ , ๋๋ถ๋ถ์ ์์คํ ์์ ์ฑํ๋จ |
TCP CUBIC์ ๋ฐฐ๊ฒฝ๊ณผ ํ์์ฑ
TCP Reno์ Fast Recovery๋ ์ผ์ ์์ค์ ์์ค์๋ ์ ๋์ํ์ง๋ง, ์ด๊ณ ์ ๋คํธ์ํฌ๋ ์ฅ๊ฑฐ๋ฆฌ ๋์ญํญ ํ๊ฒฝ์์๋ ์ฌ์ ํ ๋๋ฌด ๋ณด์์ ์ด์๋ค. ์๋ฅผ ๋ค์ด, ์์ค์ด ํ ๋ฒ ๋ฐ์ํ๋ค๊ณ ํด์ ๊ฐ์๊ธฐ ์ ์ก ์๋๋ฅผ ๋ฐํ ๋ง ๋ด๋ ๊ฑด ์์ ๋ญ๋น์ผ ์ ์๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด TCP CUBIC์ด๋ค. ์ด๋ฆ์ฒ๋ผ cwnd ํฌ๊ธฐ๋ฅผ ์ธ์ ๊ณฑ ํจ์(cubic) ํํ๋ก ์ฆ๊ฐ์ํค๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
CUBIC ๋์ ์๋ฆฌ
TCP CUBIC์ TCP Reno์ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค. ACK ์์ ์์๋ง ํผ์ก ์๋์ฐ๋ฅผ ์ฆ๊ฐ์ํค๋ฉฐ, Slow Start์ Fast Recovery ๋จ๊ณ๋ ๋์ผํ๊ฒ ์ ์ง๋๋ค.
CUBIC์ ์ค์ง Congestion Avoidance ๋จ๊ณ๋ง ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ๋ค.
- ๋ง์ง๋ง์ผ๋ก ์์ค์ด ๋ฐ์ํ ์์ ์ cwnd๋ฅผ ๋ผ๊ณ ํ๋ค.
- ์๊ฐ ์ด ํ๋ฅผ์๋ก cwnd๋ฅผ ์ ์ ํค์๊ฐ๋ค.
- ๋จ, ์ ๊ฐ๊น์์ง์๋ก ์ฆ๊ฐ ์๋๋ฅผ ์ค์ด๊ณ ,
- ๋ณด๋ค ํจ์ฌ ๋ฉ์ด์ง ์์ ์๋ ๋ค์ ๊ณผ๊ฐํ ์ฆ๊ฐ
์ฝ๊ฒ ๋งํ๋ฉด ์์ ์ ์์ค์ด ์์๋ ๊ณณ ๊ทผ์ฒ์์๋ ์กฐ์ฌํ ์ฌ๋ฆฌ๊ณ , ๊ทธ ์ธ์๋ ๊ณผ๊ฐํ๊ฒ ์๋๋ฅผ ์ฌ๋ ค๋ณธ๋ค.
์ ์ฒด์ ์ผ๋ก Fast Recovery ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ฆฌํ๋ฉด ์๋์ ๊ฐ๋ค.
| ์๊ณ ๋ฆฌ์ฆ | ์์ค ๋์ | ์๋ ํ๋ณต | ํน์ง |
|---|---|---|---|
| Tahoe | ๋ฌด์กฐ๊ฑด cwnd = 1 MSS, Slow Start๋ก ๋ฆฌ์ | ๋๋ฆผ | ๋งค์ฐ ๋ณด์์ , ๋จ์ |
| Reno | 3์ค๋ณต ACK โ Fast Recovery | ์ ์ ํ ๋น ๋ฆ | ๋๋ถ๋ถ์ OS์์ ๊ธฐ๋ณธ |
| CUBIC | ์ธ์ ๊ณฑ ํจ์ ๊ธฐ๋ฐ ์ฆ๊ฐ | ๋งค์ฐ ๋น ๋ฆ | ๋์ญํญ ํฐ ํ๊ฒฝ์ ์ต์ |
๐กย TCP Congestion control์ ์ํ ๋จธ์ (FSM)
TCP congestion control๋ ์ ์ฒด ๋์์ **์ธ ๊ฐ์ง ์ฃผ์ ์ํ(Slow Start, Congestion Avoidance, Fast Recovery)**๋ก ๋๋์ด ์ค๋ช ํ ์ ์๋ค. ์ด๋ค์ ์๋ก ์ฐ๊ฒฐ๋ ์ ํ ์ํ ๋จธ์ (Finite State Machine, FSM)์ฒ๋ผ ์๋ํด ๊ฐ ์ํ๊ฐ ๋คํธ์ํฌ์ ๋ฐ์์ ๋ฐ๋ผ ์ ํ๋๋ค.
- ์ด๊ธฐ ์ํ
- cwnd๋ 1 MSS๋ก ์์ํ๊ณ , TCP๋ Slow Start ๋จ๊ณ๋ก ์ง์ ํ๋ค.
- Slow Start
- ๋งค RTT๋ง๋ค cwnd๊ฐ 2๋ฐฐ์ฉ ์ฆ๊ฐ
- ํผ์ก ์ ํธ ๊ฐ์ง ์ ๊น์ง ์ง์์ ์ฆ๊ฐ
- cwnd โฅ ssthresh โ Congestion Avoidance๋ก ์ ํ
- Congestion Avoidance
- cwnd๋ ์ ํ์ ์ผ๋ก ์ฆ๊ฐ (1 MSS์ฉ)
- 3์ค๋ณต ACK ๋ฐ์ โ Fast Recovery
- ํ์์์ ๋ฐ์ โ Slow Start
- Fast Recovery
- ์์ค ์ธ๊ทธ๋จผํธ ์ฌ์ ์ก ํ cwnd ์ฆ๊ฐ ์ ์ง
- ์๋ก์ด ACK ์์ ์ โ Congestion Avoidance๋ก ๋ณต๊ท
- ํ์์์ ์ โ Slow Start๋ก ๋ฆฌ์
์๋์ฒ๋ผ ํ๋ก ์์ฝํด๋ณผ ์ ์๋ค.
| ์ํ | ์ด๋ฒคํธ | ๋์ | ์ ์ด |
|---|---|---|---|
| Slow Start | ACK ์์ | cwnd += 1 MSS | ์ ์ง |
| cwnd โฅ ssthresh | โ Congestion Avoidance | ||
| 3์ค๋ณต ACK | ssthresh = cwnd/2, cwnd = ssthresh + 3รMSS | โ Fast Recovery | |
| ํ์์์ | ssthresh = cwnd/2, cwnd = 1 MSS | ์ ์ง | |
| Congestion Avoidance | ACK ์์ | cwnd += MSSร(MSS/cwnd) | ์ ์ง |
| 3์ค๋ณต ACK | ssthresh = cwnd/2, cwnd = ssthresh + 3รMSS | โ Fast Recovery | |
| ํ์์์ | ssthresh = cwnd/2, cwnd = 1 MSS | โ Slow Start | |
| Fast Recovery | ์ค๋ณต ACK | cwnd += 1 MSS | ์ ์ง |
| ์๋ก์ด ACK | cwnd = ssthresh | โ Congestion Avoidance | |
| ํ์์์ | ssthresh = cwnd/2, cwnd = 1 MSS | โ Slow Start |
๐กย ์ง์ฐ ๊ธฐ๋ฐ TCP ํผ์ก ์ ์ด
์ ํต์ ์ธ TCP ํผ์ก ์ ์ด๋ ํจํท ์์ค์ ํผ์ก์ ์ ํธ๋ก ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์ ํผ์ก์ด ์ด๋ฏธ ์ฌ๊ฐํ ์์ค์ ๋๋ฌํ์ ๋๋ง ๋ฐ์ํ๋ค๋ ํ๊ณ๊ฐ ์๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด '์ง์ฐ ๊ธฐ๋ฐ ํผ์ก ์ ์ด' ๋ฐฉ์์ด ๋ฑ์ฅํ๋ค.
์ง์ฐ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ RTT์ ๋ณํ๋ฅผ ํตํด ๋คํธ์ํฌ ์ํ๋ฅผ ์ถ๋ก ํ๋ค. ๋จผ์ ๋คํธ์ํฌ๊ฐ ํผ์กํ์ง ์์ ์ํ์์์ ์ต์ RTT๋ฅผ ์ธก์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ์ธก์ ๋ RTT๊ฐ RTTmin๋ณด๋ค ํ์ ํ ์ฆ๊ฐํ๋ฉด ํจํท์ด ๋ผ์ฐํฐ ํ์์ ๋๊ธฐํ๊ณ ์๋ค๋ ์ ํธ์ด๋ฏ๋ก ํผ์ก์ด ์์๋๊ณ ์๋ค๊ณ ํ๋จํ๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ํจํท ์์ค์ด ๋ฐ์ํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ํผ์ก ์๋์ฐ๋ฅผ ์กฐ์ ํด ํผ์ก์ ์ํํ๊ณ ํ์ ์ง์ฐ์ ์ต์ํํ๋ค.
์ง์ฐ ๊ธฐ๋ฐ TCP ํผ์ก ์ ์ด๋ ํจํท ์์ค์ ์ผ์ผํค์ง ์๊ณ ๋ ๋คํธ์ํฌ ํผ์ก์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด๋ค. ์ด ์ ๊ทผ๋ฒ์ ์์ด๋์ด๋ ํจํท ์์ค์ด ๋ฐ์ํ๊ธฐ ์ ์ ๋คํธ์ํฌ ํผ์ก ์ํ๋ฅผ ๊ฐ์งํ๊ณ ๋์ํ๋ ๊ฒ์ด๋ค.
์ ํต์ ์ธ TCP ํผ์ก ์ ์ด๋ ํจํท ์์ค์ด ๋ฐ์ํด์ผ๋ง ๋คํธ์ํฌ๊ฐ ํผ์กํ๋ค๊ณ ํ๋จํ๋ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ ํจํท ์์ค์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋คํธ์ํฌ๊ฐ ์ด๋ฏธ ์ฌ๊ฐํ๊ฒ ํผ์กํด์ก๋ค๋ ์๋ฏธ๋ค. ๋ฐ๋ฉด, ์ง์ฐ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ RTT์ ์ฆ๊ฐ๋ฅผ ๊ฐ์งํด ํผ์ก ์ํ๋ฅผ ์์ธกํ๋ค.
์ด ๋ฐฉ์์ ๋ชฉํ๋ ๋คํธ์ํฌ ํ์ดํ๋ฅผ "๊ฝ ์ฐจ๊ฒ ์ ์งํ๋, ๋์น์ง ์๊ฒ" ํ๋ ๊ฒ์ด๋ค. ์ฆ, ๋คํธ์ํฌ ์ฒ๋ฆฌ๋์ ์ต๋ํํ๋ฉด์๋ ์ง์ฐ ์๊ฐ์ ๋ฎ๊ฒ ์ ์งํ๋ ๊ท ํ์ ์ ์ฐพ๋ ๊ฒ์ด๋ค. ์ด์์ ์ผ๋ก๋ ๋ณ๋ชฉ ๋งํฌ๊ฐ ํญ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ก ์ค์ด์ง๋ง, ํฐ ๋๊ธฐ์ด์ด ํ์ฑ๋์ง ์๋ ์ํ๋ฅผ ์ ์งํ๋ค.
ํ์ฌ ์ฌ๋ฌ TCP ๊ตฌํ์ฒด๋ค์ด ์ด๋ฌํ ์ง์ฐ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ ์ฑํํ๊ณ ์๋ค. ๊ทธ ์ค์์๋ ํนํ ์ฃผ๋ชฉํ ๋งํ ๊ฒ์ Google์ด ์์ฌ์ ๋ด๋ถ ๋ฐฑ๋ณธ ๋คํธ์ํฌ์ ๋ฐฐํฌํ BBR๋ค.
BBR์ ๋คํธ์ํฌ์ ๋ณ๋ชฉ ๋์ญํญ๊ณผ ์ต์ RTT๋ฅผ ์ถ์ ํด ์ต์ ์ ์ ์ก ์๋๋ฅผ ๊ฒฐ์ ํ๋ค. BBR์ ํจํท ์์ค์ ํผ์ก์ ์ ํธ๋ก ์ฌ์ฉํ์ง ์๊ณ , ๋์ ์ธก์ ๋ ์ ์ก ์๋์ ์ง์ฐ ์๊ฐ์ ๋ณํ๋ฅผ ๊ด์ฐฐํ๋ค. ์ด ์ ๊ทผ๋ฒ์ ์์ค์ด ๋ง์ ๋ฌด์ ๋คํธ์ํฌ๋ ๋ฒํผ๊ฐ ํฐ ๋คํธ์ํฌ(bufferbloat ํ์์ด ์๋ ๋คํธ์ํฌ)์์ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
TCP ํต์ ์์๋ ๋คํธ์ํฌ ์ง์ ํผ์ก ์ ์ด๋ฅผ ๊ตฌํํ๋๋ฐ, ์ด๊ฒ์ด ๋ช ์์ ํผ์ก ์๋ฆผ(ECN)์ด๋ค. ECN์ ๋คํธ์ํฌ๊ฐ ํผ์กํด์ง๋ฉด ๋ช ์์ ์ผ๋ก ์๋ ค์ฃผ๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
์๋ ๋ฐฉ์์ ์๋์ ๊ฐ๋ค.
- IP ํค๋์ ToS ํ๋์ ์๋ 2๊ฐ์ ๋นํธ๊ฐ ๋คํธ์ํฌ ๋ผ์ฐํฐ์ ์ํด ํ์๋๋ค. ๋ผ์ฐํฐ๋ ์์ ์ ๋ฒํผ๊ฐ ์ฐจ๊ณ ์๊ฑฐ๋ ํผ์ก์ด ์์๋ ๋ ์ด ๋นํธ๋ฅผ ์ค์ ํ๋ค. ์ด๋ค ๊ธฐ์ค์ผ๋ก ํผ์ก์ ํ๋จํ๊ณ ํ์ํ ์ง๋ ๋คํธ์ํฌ ์ด์์๊ฐ ๊ฒฐ์ ํ๋ค.
- ์ด๋ ๊ฒ ํ์๋ ํผ์ก ์ ๋ณด๋ IP ๋ฐ์ดํฐ๊ทธ๋จ์ ํตํด ๋ชฉ์ ์ง๊น์ง ์ ๋ฌ๋๋ค. ์ฒ์์๋
ECN=10์ผ๋ก ํ์๋์๋ค๊ฐ, ํผ์ก์ด ๊ฐ์ง๋๋ฉด ๋ผ์ฐํฐ๊ฐECN=11๋ก ๋ณ๊ฒฝํ๋ค. - ๋ชฉ์ ์ง์ ๋์ฐฉํ๋ฉด, ์์ ์ธก TCP๋ ์ด ํผ์ก ํ์๋ฅผ ํ์ธํ๊ณ ๋ค์ ์ก์ ์์๊ฒ ์๋ ค์ผ ํ๋ค. ์ด๋ฅผ ์ํด TCP ACK ์ธ๊ทธ๋จผํธ์ ECE(ECN-Echo) ๋นํธ๋ฅผ 1๋ก ์ค์ ํ๋ค.
- ์ก์ ์๋ ์ด ECE=1์ด ์ค์ ๋ ACK๋ฅผ ๋ฐ์ผ๋ฉด ๋คํธ์ํฌ์ ํผ์ก์ด ๋ฐ์ํ์์ ์ธ์ํ๊ณ , ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์คํํด ์ ์ก ์๋๋ฅผ ์ค์ธ๋ค.
- ์ด ๋ฉ์ปค๋์ฆ์ ์ฅ์ ์ ํจํท ์์ค์ด ๋ฐ์ํ๊ธฐ ์ ์ ํผ์ก์ ๊ฐ์งํ๊ณ ๋์ํ ์ ์๋ค๋ ์ ์ด๋ค. ์ ํต์ ์ธ TCP๋ ํจํท ์์ค์ด ๋ฐ์ํด์ผ๋ง ํผ์ก์ ๊ฐ์งํ์ง๋ง, ECN์ ์ฌ์ฉํ๋ฉด ํจํท ์์ค ์์ด๋ ํผ์ก ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ค.
- ECN์ IP์ TCP ํ๋กํ ์ฝ ๋ชจ๋์ ํ๋ ฅ์ด ํ์ํ๋ค. IP ํค๋์ ๋นํธ๋ฅผ ํตํด ํผ์ก์ ํ์ํ๊ณ , TCP ํค๋์ ๋นํธ๋ฅผ ํตํด ์ด ์ ๋ณด๋ฅผ ๋ค์ ์ก์ ์์๊ฒ ์ ๋ฌํ๋ค.
๐กย ์งํํ๋ ์ ์ก ๊ณ์ธต ๊ธฐ๋ฅ
TCP์ UDP๋ ์ง๋ 40๋ ๊ฐ ์ธํฐ๋ท์ ์ฃผ์ ์ ์ก ํ๋กํ ์ฝ๋ก ์ฌ์ฉ๋์ด ์๋ค. ํ์ง๋ง ๋คํธ์ํฌ ํ๊ฒฝ๊ณผ ์๊ตฌ์ฌํญ์ด ๋ค์ํด์ง์ ๋ฐ๋ผ ์ ์ก ๊ณ์ธต๋ ๊ณ์ ์งํํด์๋ค.
๋ค์ํ ์๋๋ฆฌ์ค์ ๋ง์ถฐ ์ฌ๋ฌ โ์ข ๋ฅโ์ TCP๊ฐ ๊ฐ๋ฐ๋์๋ค.
- ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํ long, fat pipe
- ๋ง์ ํจํท์ด ๋์์ ์ ์ก ์ค์ผ ๋ ํ๋์ ํจํท ์์ค์ด ๋ฐ์ํ๋ฉด ์ ์ฒด ํ์ดํ๋ผ์ธ์ด ์ค๋จ๋๋ ๋ฌธ์ ๊ฐ ์๋ค.
- ์ด๋ฅผ ์ํด ํฐ ์๋์ฐ ํฌ๊ธฐ์ ํจ์จ์ ์ธ ๋ณต๊ตฌ ๋ฉ์ปค๋์ฆ์ ๊ฐ์ถ TCP ๋ณํ์ด ๊ฐ๋ฐ๋์๋ค.
- ๋ฌด์ ๋คํธ์ํฌ
- ๋ฌด์ ๋งํฌ์ ๋ ธ์ด์ฆ๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ ์ด๋์ผ๋ก ์ธํ ํจํท ์์ค์ด ๋ฐ์ํ๋ค.
- TCP๋ ์ด๋ฌํ ์์ค์ ํผ์ก์ผ๋ก ์ค์ธํด ๋ถํ์ํ๊ฒ ์ ์ก ์๋๋ฅผ ์ค์ด๋ ๋ฌธ์ ๊ฐ ์๋ค.
- ๋ฌด์ ํ๊ฒฝ์ ์ต์ ํ๋ TCP ๋ณํ์ ์ด๋ฐ ํ๊ฒฝ์์์ ์์ค์ ๊ตฌ๋ถํด ์ฒ๋ฆฌํ๋ค.
- long-delay links
- ์์ฑ ํต์ ๊ณผ ๊ฐ์ด RTT๊ฐ ๋งค์ฐ ๊ธด ๊ฒฝ์ฐ, ๊ธฐ์กด TCP์ ๋๋ฆฐ ์์๊ณผ ํผ์ก ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ด ์ฑ๋ฅ์ ํฌ๊ฒ ์ ํ์ํจ๋ค.
- ์ด๋ฐ ํ๊ฒฝ์ ์ํ TCP ๋ณํ์ ๊ธด RTT์ ๋ ํจ๊ณผ์ ์ผ๋ก ๋์ํ๋ค.
- ๋ฐ์ดํฐ์ผํฐ ๋คํธ์ํฌ
- ์ง์ฐ์ ๋งค์ฐ ๋ฏผ๊ฐํ ํ๊ฒฝ์ผ๋ก, ๋ฐ๋ฆฌ์ด ๋จ์์ ์ง์ฐ๋ ์ค์ํ๋ค.
- ๋ฐ์ดํฐ ์ผํฐ์ ์ต์ ํ๋ TCP๋ ๋น ๋ฅธ ์๋ต ์๊ฐ๊ณผ ๋์ ์ฒ๋ฆฌ๋์ ๋ชจ๋ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋ ํธ๋ํฝ flows
- ์ฌ์ฉ์ ๊ฒฝํ์ ์ง์ ์ ์ธ ์ํฅ์ ์ฃผ์ง ์๋ ๋ฎ์ ์ฐ์ ์์์ ํธ๋ํฝ์ ์ํ TCP ๋ณํ์ด๋ค.
- ์ด๋ฐ TCP๋ ๋ค๋ฅธ ์ค์ํ ํธ๋ํฝ์ ์ํฅ์ ์ต์ํํ๋ฉด์ ๋จ์ ๋์ญํญ์ ํ์ฉํ๋ค.
์ต๊ทผ์๋ ์ ์ก ๊ณ์ธต์ ๊ธฐ๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ผ๋ก ์ด๋์ํค๋ ๊ฒฝํฅ๋ ์๋ค. ํนํ UDP ์์์ ๊ตฌํ๋ HTTP/3์ QUIC(Quick UDP Internet Connections) ํ๋กํ ์ฝ์ด ๋ํ์ ์ด๋ค. QUIC์ UDP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉด์๋ TCP์ ์ ์ฌํ ์ ๋ขฐ์ฑ๊ณผ ํผ์ก ์ ์ด๋ฅผ ์ ๊ณตํ๋ค. ๋์์ ์ฐ๊ฒฐ ์ค์ ์๊ฐ์ ์ค์ด๊ณ ํค๋ ์ค๋ธ ๋ผ์ธ ์ฐจ๋จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฑ์ ์ฅ์ ์ ์ ๊ณตํ๋ค.
QUIC
QUIC์ UDP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต ํ๋กํ ์ฝ๋ก, HTTP์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ค๊ณ๋์๋ค. Google์์ ๊ฐ๋ฐํ ์ด ํ๋กํ ์ฝ์ ํ์ฌ ๋ง์ Google ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ (Chrome ๋ธ๋ผ์ฐ์ , ๋ชจ๋ฐ์ผ YouTube ์ฑ ๋ฑ)์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ HTTP/3์ ๊ธฐ๋ฐ ๊ธฐ์ ์ด ๋์๋ค.
QUIC์ ์์ ํ์ตํ ์ฐ๊ฒฐ ์ค์ , ์ค๋ฅ ์ ์ด, ํผ์ก ์ ์ด ๋ฑ์ ์ ๊ทผ ๋ฐฉ์์ ๋์ ํ๋ค.
- ์ค๋ฅ ๋ฐ ํผ์ก ์ ์ด
- QUIC ๋ช ์ธ์ ๋ฐ๋ฅด๋ฉด, โTCP์ ์์ค ๊ฐ์ง ๋ฐ ํผ์ก ์ ์ด์ ์ต์ํ ๋ ์๋ค์ ์ฌ๊ธฐ์ ์ ์๋ ค์ง TCP ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ ์ฌํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๊ฒฌํ ๊ฒ์ ๋๋ค.โ๋ผ ๋์ด ์๋ค.
- ์ฐ๊ฒฐ ์ค์
- ์ ๋ขฐ์ฑ, ํผ์ก ์ ์ด, ์ธ์ฆ, ์ํธํ ๋ฑ์ ์ํ๋ฅผ ๋จ ํ๋์ RTT๋ก ์ค์ ํ๋ค.
- ๋ค์ค ์คํธ๋ฆผ
- ๋จ์ผ QUIC ์ฐ๊ฒฐ์ ํตํด ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ "์คํธ๋ฆผ"์ ๋ค์คํํ๋ค.
- ๊ฐ๋ณ ์คํธ๋ฆผ์ ๋ ๋ฆฝ์ ์ธ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก๊ณผ ๋ณด์์ ์ ๊ณตํ๋ค.
- ๋ชจ๋ ์คํธ๋ฆผ์ด ๊ณตํต์ ํผ์ก ์ ์ด๋ฅผ ์ฌ์ฉํ๋ค.
QUIC์ ์ฐ๊ฒฐ ์ค์ ๋น๊ต
๊ธฐ์กด TCP+TLS ๋ฐฉ์
- TCP ํธ๋์ ฐ์ดํฌ (์ ์ก ๊ณ์ธต)
- TLS ํธ๋์
ฐ์ดํฌ (๋ณด์)
- ๋ ๊ฐ์ ์ง๋ ฌ ํธ๋์ ฐ์ดํฌ๊ฐ ํ์ํ๋ค.
- TCP(์ ๋ขฐ์ฑ, ํผ์ก ์ ์ด ์ํ) + TLS(์ธ์ฆ, ์ํธํ ์ํ) ์ค์ ์ ์ด 2-3 RTT๊ฐ ์์๋๋ค.
QUIC ๋ฐฉ์
- QUIC ํธ๋์
ฐ์ดํฌ
- ๋จ ํ๋์ ํธ๋์ ฐ์ดํฌ๋ก ์ถฉ๋ถํ๋ค.
- ์ ๋ขฐ์ฑ, ํผ์ก ์ ์ด, ์ธ์ฆ, ์ํธํ ์ํ๋ฅผ ๋ชจ๋ 1 RTT ๋ด์ ์ค์ ํ๋ค.
- ์ด์ ์ ์ฐ๊ฒฐํ๋ ์๋ฒ์ ์ฌ์ฐ๊ฒฐํ ๊ฒฝ์ฐ 0-RTT๋ก ์ฆ์ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ค.
QUIC ์คํธ๋ฆผ: ๋ณ๋ ฌ์ฑ ๋ฐ HOL ์ฐจ๋จ ๋ฐฉ์ง
TCP๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋จ์ผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ํ๋์ ํจํท์ด ์์ค๋๋ฉด ๊ทธ ๋ค์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก์ด ์ผ์ ์ค๋จ๋๋ค. ์ด๊ฒ์ Head-of-Line(HOL) ์ฐจ๋จ์ด๋ผ๊ณ ํ๋ค.
QUIC์ ์ฌ๋ฌ ์คํธ๋ฆผ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ๊ฐ HTTP ์์ฒญ์ ๋ณ๋์ QUIC ์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
- ํ๋์ ์คํธ๋ฆผ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์คํธ๋ฆผ์ ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
- ๋จ์ผ ์ฐ๊ฒฐ ๋ด์์ ์ฌ๋ฌ ์คํธ๋ฆผ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ๋ชจ๋ ์คํธ๋ฆผ์ด ๊ณตํต๋ ํผ์ก ์ ์ด๋ฅผ ์ฌ์ฉํ๋ฉด์๋ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ์ค๋ฅ ๋ณต๊ตฌ๋ฅผ ์ํํ๋ค.
์ด๋ฌํ ํน์ฑ ๋๋ถ์ QUIC์ ํจํท ์์ค์ด ๋ฐ์ํ๋๋ผ๋ ์ ์ฒด ์ฐ๊ฒฐ์ ์ฒ๋ฆฌ๋์ ์ต๋ํ ์ ์งํ ์ ์๊ณ ์น ํ์ด์ง ๋ก๋ฉ ์๊ฐ์ ํฌ๊ฒ ๋จ์ถ์ํฌ ์ ์๋ค.
references
- Computer Networking: A Top-Down Approach, 8th edition
- COMP0414 ์์ ๋ด์ฉ