1. ํผ์ก ์ ์ด ๊ธฐ๋ฒ
Client์ Server๋ ํต์ ์ ํ๋ฉฐ ์๋ง์ ๋ฐ์ดํฐ๋ฅผ ํจํท์ผ๋ก ์ชผ๊ฒ ์ฃผ๊ณ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์ ํผ์ก ์ ์ด๋ฅผ ์ํด์ ๋คํธ์ํฌ ์ํฉ์ ๋ชจ๋ํฐ๋งํ๋ฉฐ NACK ํจํท ํน์ Timeout์ผ๋ก ์ฌ์ ์ก์ด ๋ง์์ง์ง๋ ์์๋์ง? ์ ์ ๋นํด์ ์๋ต ํจํท์ด ๋ฆ์ด์ง์ง๋ ์์๋์ง? ํ์ธํฉ๋๋ค. ์ด๋ฅผ ์ํด์ ์ก์ ์ธก์ ํ์ฌ ๋คํธ์ํฌ๊ฐ ์ํฉ์ ๋ฐ๋ผ์ ์ ์ก ์๋์ฐ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํฉ๋๋ค.
์ก์ ์ธก ์ ์ก ์๋์ฐ ์ฌ์ด์ฆ(AWND)๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด์๋ ์ฌ์ ์๋์ฐ ์ฌ์ด์ฆ์ ํผ์ก ์๋์ฐ ์ฌ์ด์ฆ ์ค ์ ์ ๊ฐ์ ์ ํํ์ฌ ๊ฒฐ์ ํฉ๋๋ค. ์ฌ์ ์๋์ฐ ์ฌ์ด์ฆ(RWND)๋ ์์ ์ธก์ด ์ง์์ ์ผ๋ก ์ ์กํด์ฃผ๊ณ ํผ์ก ์๋์ฐ ์ฌ์ด์ฆ๋(CWND)๋ ๊ธฐ๋ณธ๊ฐ MSS(Maximum Segment Size, 1460byte)๋ก ์ํฉ์ ๋ฐ๋ผ MSS ๋จ์๋ก ์กฐ์ ๋๋ฉฐ 5๊ฐ์ง ๊ธฐ๋ฒ์ด ์์ต๋๋ค.
AIMD(Additive Increse/Multicative Decrease)๋ ์ฒ์์ ํผ์ก ์๋์ฐ์ ๋ํดํธ ์ฌ์ด์ฆ์ธ 1 MSS๋ก ํจํท์ ๋ณด๋ด๊ณ ACK ํจํท์ ๋ฐ์ผ๋ฉด 1๊ฐ์ฉ ์ฆ๊ฐํ๋ ๋ฐฉ์์ ๋๋ค. ๋ง์ฝ ๋คํธ์ํฌ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ๋ฐ์ผ๋ก ๊ฐ์ํฉ๋๋ค.
๋๋ฆฐ ์์(Slow Start)์ ์ฒ์์ ํ๊ฐ์ฉ ํผ์ก ์๋์ฐ์ ๋ํดํธ ์ฌ์ด์ฆ์ธ 1 MSS๋ก ํจํท์ ๋ณด๋ด๊ณ ACK ํจํท ๋ฐ์ผ๋ฉด ๋ฐฐ๋ก ์ฆ๊ฐํ๋ ๋ฐฉ์์ ๋๋ค. ๋ง์ฝ ํ์ ์์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ๋ํดํธ ์ฌ์ด์ฆ๋ก ๋์๊ฐ๋๋ค.
ํผ์ก ํํผ(Congestion Avoidance)์ ๋๋ฆฐ ์์์ผ๋ก ์์ํ๋ฉด ํผ์ก ์๋์ฐ ์ฌ์ด์ฆ๊ฐ ๋ฐฐ๋ก ์ฆ๊ฐํ์ฌ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋ฉฐ ํผ์ก์ ์ํ์ฑ์ด ์ปค์ง๋๋ค. ์ด๋ฅผ ์ํด ์๊ณ์ (sshthresh, Slow Start Threshold)๋ฅผ ์ ํ๊ณ ์ด๋๋ถํฐ๋ 1๊ฐ์ฉ ์ฆ๊ฐํ๋ ๋ฐฉ์์ ๋๋ค. ๋ง์ฝ ํ์ ์์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ๋ํดํธ ์ฌ์ด์ฆ๋ก ๋์๊ฐ๋ฉฐ ์๊ณ์ ์ ํด๋น ์์ ์ ํผ์ก ์๋์ ์ฌ์ด์ฆ์ 1/2๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋น ๋ฅธ ์ฌ์ ์ก(Fast Retransmit)์ 3 Duplicate ACK ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ์ก์ ์ธก์ ์ฆ์ ํจํท์ ์ฌ์ ์กํ๋ ๋ฐฉ์์ ๋๋ค. ๋๋ถ์ด ํผ์กํ ์ํฉ์ด๋ผ ํ๋จํ๊ณ ํผ์ก ์๋์ฐ ์ฌ์ด์ฆ๋ ๋ํดํธ ์ฌ์ด์ฆ๋ก ๋์๊ฐ๋ฉฐ ์๊ณ์ ์ ํด๋น ์์ ์ ํผ์ก ์๋์ ์ฌ์ด์ฆ์ 1/2๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋น ๋ฅธ ํ๋ณต(Fast Recovery)์ ๋น ๋ฅธ ์ฌ์ ์ก๊ณผ ์ ์ฌํ์ง๋ง 3 Duplicate ACK ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ๋ํดํธ ์ฌ์ด์ฆ๋ก ๋์๊ฐ๋๊ฒ ์๋๋ผ ํด๋น ์์ ์ ํผ์ก ์๋์ฐ ์ฌ์ด์ฆ์ 1/2๋ก ๋์๊ฐ ํ ACK ํจํท์ ๋ฐ์ผ๋ฉด 1๊ฐ์ฉ ์ฆ๊ฐํ๋ ๋ฐฉ์์ ๋๋ค.
์ฌ๊ธฐ์ 3 Duplicate ACK๋ ์๋์ ๊ฐ์ด ์ฌ๋ผ์ด๋ฉ ์๋์ฐ์ ์ค๊ฐ ํจํท์ด ์ ์ค๋์ด ํน์ ACK ํจํท์ ์ธ๋ฒ ๋ฐ๋ ์ํฉ์ ๋๋ค. ๋น ๋ฅธ ์ฌ์ ์ก ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด NACK ํจํท์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ์ฌ์ ์ก ํ์ด๋จธ๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ์ฌ์ ์กํ ์ ์์ต๋๋ค.
2. TCP
TCP๋ ํผ์ก ์ ์ด๋ฅผ ์ํ์ฌ ๋ค์ํ ๊ธฐ๋ฒ์ ํผํฉํ์ฌ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๊ฐ์ฅ ์ค๋๋๊ณ ๊ธฐ๋ณธ์ด ๋๋ 2๊ฐ์ง ๋ฐฉ์์ด ์์ต๋๋ค.
Tahoe๋ ๋๋ฆฐ ์์, ํผ์ก ํํผ, ๋น ๋ฅธ ์ฌ์ ์ก์ด ํผํฉ๋ ๋ฐฉ์์ ๋๋ค. ๋คํธ์ํฌ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ๋ํดํธ ์ฌ์ด์ฆ๋ก ๋์๊ฐ์ ๋๋ฆฐ ์์์ผ๋ก ๋ค์ ์์ํฉ๋๋ค.
Reno๋ Tahoe, ๋น ๋ฅธ ํ๋ณต์ด ํผํฉ๋ ๋ฐฉ์์ ๋๋ค. 3 Duplicate ACK ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ํด๋น ์์ ์ ํผํฉ ์๋์ฐ ์ฌ์ด์ฆ์ 1/2๋ก ๋์๊ฐ ํ ACK ํจํท์ ๋ฐ์ผ๋ฉด 1๊ฐ์ฉ ์ฆ๊ฐํ๊ณ ํ์์์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ฉด ๋ํดํธ ์ฌ์ด์ฆ๋ก ๋์๊ฐ์ ๋๋ฆฐ ์์์ผ๋ก ๋ค์ ์์ํฉ๋๋ค. ๋คํธ์ํฌ ๋ฌธ์ ์์๋ 3 Dupilicate ACK ๋ฌธ์ ๋ณด๋ค ํ์์์ ๋ฌธ์ ๋ฅผ ๋ ํฐ ํผ์ก์ผ๋ก ๋ฐ์๋ค์ ๋๋ค.
๊ทธ ์ธ ๋ฐ์ ๋ ๋ค์ํ ๋ฐฉ์๋ค์ด ์์ผ๋ฉฐ OS ๋ฒ์ ์ ๋ฐ๋ผ ์ง์๋๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ค๋ฆ ๋๋ค. ํ์ฌ๋ CUBIC, Compound TCP, BBR ๋ฑ์ด ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
TCP ํจํท์ ์ง์ ๋ณด๋ฉด ์ฌ์ ์๋์ฐ ์ฌ์ด์ฆ๋ Client 131,840byte, Server 66,816byte๋ก ์์ํ์์ง๋ง ๊ณ์ ๋ณํํ๊ณ ์์์ ์ ์ ์์ต๋๋ค. Bytes in flight๋ ํ์ฌ ACK ํจํท์ ๋ฐ์ง ๋ชปํ ํจํท ์ฉ๋, Calculated window size๋ ์ค์ผ์ผ๋ง๊น์ง ๊ณ์ฐ๋ ์ฌ์ ์๋์ฐ ์ฌ์ด์ฆ์ ๋๋ค.
์ฐธ๊ณ : https://www.wikiwand.com/en/TCP_congestion_control
TCP congestion control | Wikiwand
Transmission Control Protocol uses a network congestion-avoidance algorithm that includes various aspects of an additive increase/multiplicative decrease scheme, along with other schemes including slow start and congestion window, to achieve congestion avo
www.wikiwand.com
https://evan-moon.github.io/2019/11/26/tcp-congestion-control/
์ฌ์ด ์ข๊ฒ ๋คํธ์ํฌ๋ฅผ ๋๋ ์ฐ๋ ๋ฐฉ๋ฒ, TCP์ ํผ์ก ์ ์ด
ํผ์ก ์ ์ด๋, ๋ง ๊ทธ๋๋ก ๋คํธ์ํฌ์ ํผ์ก ์ํ๋ฅผ ํ์ ํ๊ณ ๊ทธ ์ํ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐ์ดํฐ ์ ์ก์ ์ ์ดํ๋ ๊ฒ์ ์ด์ผ๊ธฐํ๋ค. ๋คํธ์ํฌ๋ ์๋ ๊ด๋ํ ๋ธ๋๋ฐ์ค์ด๊ธฐ ๋๋ฌธ์ ์ ํํ ์ด๋์ ์ด
evan-moon.github.io
'Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TCP/UDP ์ค๋ฅ์ ํ๋ฆ ์ ์ด (0) | 2021.08.02 |
---|---|
TCP Sequence Number์ ACK Number (2) | 2021.07.29 |
MTU์ TCP MSS, UDP (0) | 2021.07.25 |
ํ์ด์ฌ netmiko ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋คํธ์ํฌ ์ฅ๋น ์ ์ (3) | 2021.07.23 |
๋คํธ์ํฌ ์ฅ๋น ๊ตฌ์ฑ ์์ (0) | 2021.07.16 |