junyeokk
Blog
Networkยท2025. 04. 14

TCP Congestion control

๐Ÿ“กย TCP AIMD

๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์ „์†กํ•˜๋ฉด ๋ผ์šฐํ„ฐ์˜ ๋ฒ„ํผ๊ฐ€ ๋„˜์น˜๋ฉด์„œ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ Congestion(ํ˜ผ์žก)์ด๋ผ๊ณ  ํ•œ๋‹ค. TCP๋Š” Congestion ์ƒํ™ฉ์—์„œ๋„ ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด congestion control ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

AIMD(Additive Increase Multiplicative Decrease)

image.png

TCP์˜ ํ˜ผ์žก ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ AIMD ๋ฐฉ์‹์„ ๋”ฐ๋ฅธ๋‹ค. AIMD๋Š” ๊ฐ€์‚ฐ ์ฆ๊ฐ€ ๊ณฑ์…ˆ ๊ฐ์†Œ๋ผ๋Š” ์˜๋ฏธ๋กœ, ๋„คํŠธ์›Œํฌ๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ๋™์ž‘ํ•  ๋•Œ๋Š” ์ „์†ก ์†๋„๋ฅผ ์กฐ๊ธˆ์”ฉ ๋Š˜๋ฆฌ๊ณ  ํ˜ผ์žก์ด ๊ฐ์ง€๋˜๋ฉด ์ „์†ก ์†๋„๋ฅผ ๊ธ‰๊ฒฉํžˆ ์ค„์ด๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • Additive Increase (๊ฐ€์‚ฐ์  ์ฆ๊ฐ€): ๋„คํŠธ์›Œํฌ๊ฐ€ ์–‘ํ˜ธํ•˜๋ฉด TCP๋Š” ๋งค RTTRoundย Tripย Time_{Round \space Trip \space Time}๋งˆ๋‹ค ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ 1MSSMaximumย Segmentย Size_{Maximum \space Segment \space Size}์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  • Multiplicative Decrease (๊ณฑ์…ˆ์  ๊ฐ์†Œ): ๋ฐ˜๋Œ€๋กœ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋ฉด ๋„คํŠธ์›Œํฌ๋ฅผ ํ˜ผ์žก์œผ๋กœ ํŒ๋‹จํ•˜๊ณ , cwnd๋ฅผ ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค.

๋ง์€ ๋˜๊ฒŒ ์–ด๋ ต๊ฒŒ ์ž‘์„ฑ๋œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ฆ๊ฐ€ํ•  ๋•Œ๋Š” 1์”ฉ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ , ๊ฐ์†Œํ•  ๋•Œ๋Š” ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

์ด ๋ฐฉ์‹์€ TCP์˜ ์ „์†ก ์†๋„๋ฅผ ํ†ฑ๋‹ˆsawtooth_{sawtooth} ๋ชจ์–‘์œผ๋กœ ๋ณ€ํ™”์‹œํ‚จ๋‹ค. ์†๋„๋ฅผ ์ ์ง„์ ์œผ๋กœ ์˜ฌ๋ ธ๋‹ค๊ฐ€ ํ˜ผ์žก์„ ๋งŒ๋‚˜๋ฉด ๊ธ‰๊ฒฉํžˆ ์ค„์ด๊ณ , ๋‹ค์‹œ ์„œ์„œํžˆ ์ฆ๊ฐ€ํ•˜๋Š” ์‹์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด TCP๋Š” ๋„คํŠธ์›Œํฌ์˜ ๊ฐ€์šฉ ๋Œ€์—ญํญ์„ ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ํƒ์ƒ‰probing_{probing}ํ•˜๊ฒŒ ๋œ๋‹ค.

plain
์†ก์‹ 
์†๋„
โ”‚
โ”‚    /\    /\    /\
โ”‚   /  \  /  \  /  \
โ”‚  /    \/    \/    \
โ”‚ /
โ”‚/
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ์‹œ๊ฐ„

TCP๋Š” ํŒจํ‚ท ์†์‹ค์„ ACK ํŒจํ‚ท ๋ฐ˜๋ณต ์ˆ˜์‹ (3์ค‘๋ณต ACK)์ด๋‚˜ ์ผ์ • ์‹œ๊ฐ„ ACK ๋ฏธ์ˆ˜์‹ (ํƒ€์ž„์•„์›ƒ)์œผ๋กœ ๊ฐ์ง€ํ•ด ๊ทธ์— ๋”ฐ๋ผ ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์กฐ์ ˆํ•œ๋‹ค. ์ด ๋ฐฉ์‹์€ Reno๋‚˜ Tahoe ๊ฐ™์€ TCP ๊ตฌํ˜„์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉ๋œ๋‹ค.

cwnd

image.png

TCP์—์„œ cwnd(congestion window, ํ˜ผ์žก ์œˆ๋„์šฐ)๋Š” ์†ก์‹ ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ์— ๋™์‹œ์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์–‘์˜ ์ƒํ•œ์„ ์„ ์˜๋ฏธํ•˜๋Š” ๋ณ€์ˆ˜๋‹ค. ํ˜ผ์žก ์œˆ๋„์šฐ๋Š” ๋„คํŠธ์›Œํฌ์˜ ํ˜ผ์žก ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•ด ์ „์†ก ์†๋„๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•œ๋‹ค.

TCP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

LastByteSentโˆ’LastByteAckedโ‰คcwndLastByteSent - LastByteAcked โ‰ค cwnd

์ด ์‹์€ ์•„์ง ACK๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ์ƒํƒœ๋กœ ๋„คํŠธ์›Œํฌ์— ๋‚จ์•„ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค. cwnd๊ฐ€ ์ž‘์œผ๋ฉด ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๊ณ , cwnd๊ฐ€ ํฌ๋ฉด ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค์งˆ์ ์ธ ์†ก์‹  ์†๋„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋œ๋‹ค.

์†ก์‹ ย ์†๋„โ‰ˆcwnd/RTTย (๋‹จ์œ„:๋ฐ”์ดํŠธ/์ดˆ)์†ก์‹  \space ์†๋„ โ‰ˆ cwnd / RTT \space (๋‹จ์œ„: ๋ฐ”์ดํŠธ/์ดˆ)

์ฆ‰, 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์˜ ๋™์ž‘ ๋ฐฉ์‹

image.png

Slow Start๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

  • ์—ฐ๊ฒฐ์ด ์‹œ์ž‘๋˜๋ฉด ํ˜ผ์žก ์œˆ๋„์šฐcwnd_{cwnd}๋ฅผ 1MSS๋กœ ์„ค์ •ํ•œ๋‹ค.
  • ๋งค ACK๋ฅผ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ 1MSS์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งค RTTRoundย Tripย ย Time_{Round \space Tripย \space Time}๋งˆ๋‹ค ํ˜ผ์žก ์œˆ๋„์šฐ๊ฐ€ 2๋ฐฐ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ์ง€์ˆ˜์  ์ฆ๊ฐ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋œ๋‹ค.

  • ์ฒซ RTT์—์„œ 1๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ ์ „์†ก
  • ๋‘ ๋ฒˆ์งธ RTT์—์„œ 2๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ ์ „์†ก
  • ์„ธ ๋ฒˆ์งธ RTT์—์„œ 4๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ ์ „์†ก
  • ๋„ค ๋ฒˆ์งธ RTT์—์„œ 8๊ฐœ์˜ ์„ธ๊ทธ๋จผํŠธ ์ „์†ก

์ด๋Ÿฐ ์‹์œผ๋กœ cwnd๊ฐ€ 1, 2, 4, 8, 16... ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Slow Start ์ž„๊ณ„๊ฐ’(ssthresh)

659172a2-090d-4b35-8fd0-eba1646c09ad.png

TCP๋Š” Slow Start๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•˜๋ฉด์„œ ์–ธ์ œ๊นŒ์ง€ ์ง€์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ฌ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ssthreshslowย startย threshold_{slow \space start \space threshold}๋ผ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ดˆ๊ธฐ์— 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๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

  1. ์ƒˆ๋กœ์šด ACK๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๋งˆ๋‹ค cwnd๋ฅผ MSS ร— (MSS/cwnd) ๋ฐ”์ดํŠธ๋งŒํผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  2. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ํ•˜๋‚˜์˜ 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 TahoeTCP 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 ๋™์ž‘ ์›๋ฆฌ

image.png

TCP CUBIC์€ TCP Reno์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค. ACK ์ˆ˜์‹  ์‹œ์—๋งŒ ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ, Slow Start์™€ Fast Recovery ๋‹จ๊ณ„๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋œ๋‹ค.

CUBIC์€ ์˜ค์ง Congestion Avoidance ๋‹จ๊ณ„๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•œ๋‹ค.

image.png
  • ๋งˆ์ง€๋ง‰์œผ๋กœ ์†์‹ค์ด ๋ฐœ์ƒํ•œ ์‹œ์ ์˜ cwnd๋ฅผ WmaxW_{max}๋ผ๊ณ  ํ•œ๋‹ค.
  • ์‹œ๊ฐ„ tt์ด ํ๋ฅผ์ˆ˜๋ก cwnd๋ฅผ ์ ์  ํ‚ค์›Œ๊ฐ„๋‹ค.
    • ๋‹จ, WmaxW_{max}์— ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก ์ฆ๊ฐ€ ์†๋„๋ฅผ ์ค„์ด๊ณ ,
    • WmaxW_{max}๋ณด๋‹ค ํ›จ์”ฌ ๋ฉ€์–ด์ง„ ์‹œ์ ์—๋Š” ๋‹ค์‹œ ๊ณผ๊ฐํžˆ ์ฆ๊ฐ€

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์˜ˆ์ „์— ์†์‹ค์ด ์žˆ์—ˆ๋˜ ๊ณณ ๊ทผ์ฒ˜์—์„œ๋Š” ์กฐ์‹ฌํžˆ ์˜ฌ๋ฆฌ๊ณ , ๊ทธ ์™ธ์—๋Š” ๊ณผ๊ฐํ•˜๊ฒŒ ์†๋„๋ฅผ ์˜ฌ๋ ค๋ณธ๋‹ค.

์ „์ฒด์ ์œผ๋กœ Fast Recovery ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์†์‹ค ๋Œ€์‘์†๋„ ํšŒ๋ณตํŠน์ง•
Tahoe๋ฌด์กฐ๊ฑด cwnd = 1 MSS, Slow Start๋กœ ๋ฆฌ์…‹๋А๋ฆผ๋งค์šฐ ๋ณด์ˆ˜์ , ๋‹จ์ˆœ
Reno3์ค‘๋ณต ACK โ†’ Fast Recovery์ ์ ˆํžˆ ๋น ๋ฆ„๋Œ€๋ถ€๋ถ„์˜ OS์—์„œ ๊ธฐ๋ณธ
CUBIC์„ธ์ œ๊ณฑ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜ ์ฆ๊ฐ€๋งค์šฐ ๋น ๋ฆ„๋Œ€์—ญํญ ํฐ ํ™˜๊ฒฝ์— ์ตœ์ 

๐Ÿ“กย TCP Congestion control์˜ ์ƒํƒœ ๋จธ์‹ (FSM)

image.png

TCP congestion control๋Š” ์ „์ฒด ๋™์ž‘์„ **์„ธ ๊ฐ€์ง€ ์ฃผ์š” ์ƒํƒœ(Slow Start, Congestion Avoidance, Fast Recovery)**๋กœ ๋‚˜๋ˆ„์–ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋“ค์€ ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ์œ ํ•œ ์ƒํƒœ ๋จธ์‹ (Finite State Machine, FSM)์ฒ˜๋Ÿผ ์ž‘๋™ํ•ด ๊ฐ ์ƒํƒœ๊ฐ€ ๋„คํŠธ์›Œํฌ์˜ ๋ฐ˜์‘์— ๋”ฐ๋ผ ์ „ํ™˜๋œ๋‹ค.

  1. ์ดˆ๊ธฐ ์ƒํƒœ
    • cwnd๋Š” 1 MSS๋กœ ์‹œ์ž‘ํ•˜๊ณ , TCP๋Š” Slow Start ๋‹จ๊ณ„๋กœ ์ง„์ž…ํ•œ๋‹ค.
  2. Slow Start
    • ๋งค RTT๋งˆ๋‹ค cwnd๊ฐ€ 2๋ฐฐ์”ฉ ์ฆ๊ฐ€
    • ํ˜ผ์žก ์‹ ํ˜ธ ๊ฐ์ง€ ์ „๊นŒ์ง€ ์ง€์ˆ˜์  ์ฆ๊ฐ€
    • cwnd โ‰ฅ ssthresh โ†’ Congestion Avoidance๋กœ ์ „ํ™˜
  3. Congestion Avoidance
    • cwnd๋Š” ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ (1 MSS์”ฉ)
    • 3์ค‘๋ณต ACK ๋ฐœ์ƒ โ†’ Fast Recovery
    • ํƒ€์ž„์•„์›ƒ ๋ฐœ์ƒ โ†’ Slow Start
  4. Fast Recovery
    • ์†์‹ค ์„ธ๊ทธ๋จผํŠธ ์žฌ์ „์†ก ํ›„ cwnd ์ฆ๊ฐ€ ์œ ์ง€
    • ์ƒˆ๋กœ์šด ACK ์ˆ˜์‹  ์‹œ โ†’ Congestion Avoidance๋กœ ๋ณต๊ท€
    • ํƒ€์ž„์•„์›ƒ ์‹œ โ†’ Slow Start๋กœ ๋ฆฌ์…‹

์•„๋ž˜์ฒ˜๋Ÿผ ํ‘œ๋กœ ์š”์•ฝํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ƒํƒœ์ด๋ฒคํŠธ๋™์ž‘์ „์ด
Slow StartACK ์ˆ˜์‹ cwnd += 1 MSS์œ ์ง€
cwnd โ‰ฅ ssthreshโ†’ Congestion Avoidance
3์ค‘๋ณต ACKssthresh = cwnd/2, cwnd = ssthresh + 3ร—MSSโ†’ Fast Recovery
ํƒ€์ž„์•„์›ƒssthresh = cwnd/2, cwnd = 1 MSS์œ ์ง€
Congestion AvoidanceACK ์ˆ˜์‹ cwnd += MSSร—(MSS/cwnd)์œ ์ง€
3์ค‘๋ณต ACKssthresh = cwnd/2, cwnd = ssthresh + 3ร—MSSโ†’ Fast Recovery
ํƒ€์ž„์•„์›ƒssthresh = cwnd/2, cwnd = 1 MSSโ†’ Slow Start
Fast Recovery์ค‘๋ณต ACKcwnd += 1 MSS์œ ์ง€
์ƒˆ๋กœ์šด ACKcwnd = ssthreshโ†’ Congestion Avoidance
ํƒ€์ž„์•„์›ƒssthresh = cwnd/2, cwnd = 1 MSSโ†’ Slow Start

๐Ÿ“กย ์ง€์—ฐ ๊ธฐ๋ฐ˜ TCP ํ˜ผ์žก ์ œ์–ด

image.png

์ „ํ†ต์ ์ธ TCP ํ˜ผ์žก ์ œ์–ด๋Š” ํŒจํ‚ท ์†์‹ค์„ ํ˜ผ์žก์˜ ์‹ ํ˜ธ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ํ˜ผ์žก์ด ์ด๋ฏธ ์‹ฌ๊ฐํ•œ ์ˆ˜์ค€์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ๋งŒ ๋ฐ˜์‘ํ•œ๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด '์ง€์—ฐ ๊ธฐ๋ฐ˜ ํ˜ผ์žก ์ œ์–ด' ๋ฐฉ์‹์ด ๋“ฑ์žฅํ–ˆ๋‹ค.

์ง€์—ฐ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ๋ฒ•์€ RTT์˜ ๋ณ€ํ™”๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ์ถ”๋ก ํ•œ๋‹ค. ๋จผ์ € ๋„คํŠธ์›Œํฌ๊ฐ€ ํ˜ผ์žกํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ์˜ ์ตœ์†Œ RTTRTTmin_{RTTmin}๋ฅผ ์ธก์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ์ธก์ •๋œ RTT๊ฐ€ RTTmin๋ณด๋‹ค ํ˜„์ €ํžˆ ์ฆ๊ฐ€ํ•˜๋ฉด ํŒจํ‚ท์ด ๋ผ์šฐํ„ฐ ํ์—์„œ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‹ ํ˜ธ์ด๋ฏ€๋กœ ํ˜ผ์žก์ด ์‹œ์ž‘๋˜๊ณ  ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ ์กฐ์ •ํ•ด ํ˜ผ์žก์„ ์™„ํ™”ํ•˜๊ณ  ํ์ž‰ ์ง€์—ฐ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค.

image.png

์ง€์—ฐ ๊ธฐ๋ฐ˜ TCP ํ˜ผ์žก ์ œ์–ด๋Š” ํŒจํ‚ท ์†์‹ค์„ ์ผ์œผํ‚ค์ง€ ์•Š๊ณ ๋„ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ์ ‘๊ทผ๋ฒ•์˜ ์•„์ด๋””์–ด๋Š” ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ๋„คํŠธ์›Œํฌ ํ˜ผ์žก ์ƒํƒœ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ „ํ†ต์ ์ธ TCP ํ˜ผ์žก ์ œ์–ด๋Š” ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•ด์•ผ๋งŒ ๋„คํŠธ์›Œํฌ๊ฐ€ ํ˜ผ์žกํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฏธ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ๋„คํŠธ์›Œํฌ๊ฐ€ ์ด๋ฏธ ์‹ฌ๊ฐํ•˜๊ฒŒ ํ˜ผ์žกํ•ด์กŒ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ๋ฐ˜๋ฉด, ์ง€์—ฐ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ๋ฒ•์€ RTTRoundย Tripย Time_{Round \space Trip \space Time}์˜ ์ฆ๊ฐ€๋ฅผ ๊ฐ์ง€ํ•ด ํ˜ผ์žก ์ƒํƒœ๋ฅผ ์˜ˆ์ธกํ•œ๋‹ค.

์ด ๋ฐฉ์‹์˜ ๋ชฉํ‘œ๋Š” ๋„คํŠธ์›Œํฌ ํŒŒ์ดํ”„๋ฅผ "๊ฝ‰ ์ฐจ๊ฒŒ ์œ ์ง€ํ•˜๋˜, ๋„˜์น˜์ง€ ์•Š๊ฒŒ" ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋„คํŠธ์›Œํฌ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ตœ๋Œ€ํ™”ํ•˜๋ฉด์„œ๋„ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋‚ฎ๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ท ํ˜•์ ์„ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ๋ณ‘๋ชฉ ๋งํฌ๊ฐ€ ํ•ญ์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก ์ค‘์ด์ง€๋งŒ, ํฐ ๋Œ€๊ธฐ์—ด์ด ํ˜•์„ฑ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

ํ˜„์žฌ ์—ฌ๋Ÿฌ TCP ๊ตฌํ˜„์ฒด๋“ค์ด ์ด๋Ÿฌํ•œ ์ง€์—ฐ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ๋ฒ•์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ํŠนํžˆ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ๊ฒƒ์€ Google์ด ์ž์‚ฌ์˜ ๋‚ด๋ถ€ ๋ฐฑ๋ณธ ๋„คํŠธ์›Œํฌ์— ๋ฐฐํฌํ•œ BBRBottleneckย Bandwidthย andย Roundโˆ’tripย propagationย time_{Bottleneck \space Bandwidth \space and \space Round-trip \space propagation \space time}๋‹ค.

BBR์€ ๋„คํŠธ์›Œํฌ์˜ ๋ณ‘๋ชฉ ๋Œ€์—ญํญ๊ณผ ์ตœ์†Œ RTT๋ฅผ ์ถ”์ •ํ•ด ์ตœ์ ์˜ ์ „์†ก ์†๋„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. BBR์€ ํŒจํ‚ท ์†์‹ค์„ ํ˜ผ์žก์˜ ์‹ ํ˜ธ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋Œ€์‹  ์ธก์ •๋œ ์ „์†ก ์†๋„์™€ ์ง€์—ฐ ์‹œ๊ฐ„์˜ ๋ณ€ํ™”๋ฅผ ๊ด€์ฐฐํ•œ๋‹ค. ์ด ์ ‘๊ทผ๋ฒ•์€ ์†์‹ค์ด ๋งŽ์€ ๋ฌด์„  ๋„คํŠธ์›Œํฌ๋‚˜ ๋ฒ„ํผ๊ฐ€ ํฐ ๋„คํŠธ์›Œํฌ(bufferbloat ํ˜„์ƒ์ด ์žˆ๋Š” ๋„คํŠธ์›Œํฌ)์—์„œ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค.

image.png

TCP ํ†ต์‹ ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ์ง€์› ํ˜ผ์žก ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ช…์‹œ์  ํ˜ผ์žก ์•Œ๋ฆผ(ECN)์ด๋‹ค. ECN์€ ๋„คํŠธ์›Œํฌ๊ฐ€ ํ˜ผ์žกํ•ด์ง€๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

์ž‘๋™ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • IP ํ—ค๋”์˜ ToSTypeย ofย Service_{Type \space of \space Service} ํ•„๋“œ์— ์žˆ๋Š” 2๊ฐœ์˜ ๋น„ํŠธ๊ฐ€ ๋„คํŠธ์›Œํฌ ๋ผ์šฐํ„ฐ์— ์˜ํ•ด ํ‘œ์‹œ๋œ๋‹ค. ๋ผ์šฐํ„ฐ๋Š” ์ž์‹ ์˜ ๋ฒ„ํผ๊ฐ€ ์ฐจ๊ณ  ์žˆ๊ฑฐ๋‚˜ ํ˜ผ์žก์ด ์˜ˆ์ƒ๋  ๋•Œ ์ด ๋น„ํŠธ๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ํ˜ผ์žก์„ ํŒ๋‹จํ•˜๊ณ  ํ‘œ์‹œํ• ์ง€๋Š” ๋„คํŠธ์›Œํฌ ์šด์˜์ž๊ฐ€ ๊ฒฐ์ •ํ•œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํ‘œ์‹œ๋œ ํ˜ผ์žก ์ •๋ณด๋Š” IP ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ํ†ตํ•ด ๋ชฉ์ ์ง€๊นŒ์ง€ ์ „๋‹ฌ๋œ๋‹ค. ์ฒ˜์Œ์—๋Š” ECN=10์œผ๋กœ ํ‘œ์‹œ๋˜์—ˆ๋‹ค๊ฐ€, ํ˜ผ์žก์ด ๊ฐ์ง€๋˜๋ฉด ๋ผ์šฐํ„ฐ๊ฐ€ ECN=11๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
  • ๋ชฉ์ ์ง€์— ๋„์ฐฉํ•˜๋ฉด, ์ˆ˜์‹  ์ธก TCP๋Š” ์ด ํ˜ผ์žก ํ‘œ์‹œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹ค์‹œ ์†ก์‹ ์ž์—๊ฒŒ ์•Œ๋ ค์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด TCP ACK ์„ธ๊ทธ๋จผํŠธ์˜ ECE(ECN-Echo) ๋น„ํŠธ๋ฅผ 1๋กœ ์„ค์ •ํ•œ๋‹ค.
  • ์†ก์‹ ์ž๋Š” ์ด ECE=1์ด ์„ค์ •๋œ ACK๋ฅผ ๋ฐ›์œผ๋ฉด ๋„คํŠธ์›Œํฌ์— ํ˜ผ์žก์ด ๋ฐœ์ƒํ–ˆ์Œ์„ ์ธ์‹ํ•˜๊ณ , ํ˜ผ์žก ์ œ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•ด ์ „์†ก ์†๋„๋ฅผ ์ค„์ธ๋‹ค.
  • ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์žฅ์ ์€ ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ํ˜ผ์žก์„ ๊ฐ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ์ „ํ†ต์ ์ธ TCP๋Š” ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•ด์•ผ๋งŒ ํ˜ผ์žก์„ ๊ฐ์ง€ํ–ˆ์ง€๋งŒ, ECN์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒจํ‚ท ์†์‹ค ์—†์ด๋„ ํ˜ผ์žก ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ECN์€ IP์™€ TCP ํ”„๋กœํ† ์ฝœ ๋ชจ๋‘์˜ ํ˜‘๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค. IP ํ—ค๋”์˜ ๋น„ํŠธ๋ฅผ ํ†ตํ•ด ํ˜ผ์žก์„ ํ‘œ์‹œํ•˜๊ณ , TCP ํ—ค๋”์˜ ๋น„ํŠธ๋ฅผ ํ†ตํ•ด ์ด ์ •๋ณด๋ฅผ ๋‹ค์‹œ ์†ก์‹ ์ž์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

๐Ÿ“กย ์ง„ํ™”ํ•˜๋Š” ์ „์†ก ๊ณ„์ธต ๊ธฐ๋Šฅ

image.png

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

image.png

QUIC์€ UDP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ๋กœ, HTTP์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค. Google์—์„œ ๊ฐœ๋ฐœํ•œ ์ด ํ”„๋กœํ† ์ฝœ์€ ํ˜„์žฌ ๋งŽ์€ Google ์„œ๋ฒ„์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Chrome ๋ธŒ๋ผ์šฐ์ €, ๋ชจ๋ฐ”์ผ YouTube ์•ฑ ๋“ฑ)์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ HTTP/3์˜ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ์ด ๋˜์—ˆ๋‹ค.

image.png

QUIC์€ ์•ž์„œ ํ•™์Šตํ•œ ์—ฐ๊ฒฐ ์„ค์ •, ์˜ค๋ฅ˜ ์ œ์–ด, ํ˜ผ์žก ์ œ์–ด ๋“ฑ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋„์ž…ํ–ˆ๋‹ค.

  • ์˜ค๋ฅ˜ ๋ฐ ํ˜ผ์žก ์ œ์–ด
    • QUIC ๋ช…์„ธ์— ๋”ฐ๋ฅด๋ฉด, โ€˜TCP์˜ ์†์‹ค ๊ฐ์ง€ ๋ฐ ํ˜ผ์žก ์ œ์–ด์— ์ต์ˆ™ํ•œ ๋…์ž๋“ค์€ ์—ฌ๊ธฐ์„œ ์ž˜ ์•Œ๋ ค์ง„ TCP ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์œ ์‚ฌํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฐœ๊ฒฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.โ€™๋ผ ๋˜์–ด ์žˆ๋‹ค.
  • ์—ฐ๊ฒฐ ์„ค์ •
    • ์‹ ๋ขฐ์„ฑ, ํ˜ผ์žก ์ œ์–ด, ์ธ์ฆ, ์•”ํ˜ธํ™” ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ๋‹จ ํ•˜๋‚˜์˜ RTTRoundย Tripย Time_{Round \space Trip \space Time}๋กœ ์„ค์ •ํ•œ๋‹ค.
  • ๋‹ค์ค‘ ์ŠคํŠธ๋ฆผ
    • ๋‹จ์ผ QUIC ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์˜ "์ŠคํŠธ๋ฆผ"์„ ๋‹ค์ค‘ํ™”ํ•œ๋‹ค.
    • ๊ฐœ๋ณ„ ์ŠคํŠธ๋ฆผ์€ ๋…๋ฆฝ์ ์ธ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก๊ณผ ๋ณด์•ˆ์„ ์ œ๊ณตํ•œ๋‹ค.
    • ๋ชจ๋“  ์ŠคํŠธ๋ฆผ์ด ๊ณตํ†ต์˜ ํ˜ผ์žก ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

QUIC์˜ ์—ฐ๊ฒฐ ์„ค์ • ๋น„๊ต

image.png

๊ธฐ์กด 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