junyeokk
Blog
Networkยท2025. 04. 20

Fairness

๐Ÿ“กย Fairness

์™œ Fairness๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?

์ง€๊ธˆ๊นŒ์ง€ TCP ํ˜ผ์žก ์ œ์–ด๋Š” ํ•œ ์—ฐ๊ฒฐ์ด ์ž์‹ ์˜ ์†๋„๋ฅผ ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ์‹์— ์ง‘์ค‘ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์‹ค์—์„œ๋Š” ์ˆ˜๋งŽ์€ TCP ์—ฐ๊ฒฐ์ด ๋™์‹œ์— ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์ž์›์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋•Œ ๋ˆ„๊ตฐ๊ฐ€ ํ˜ผ์ž๋งŒ ์†๋„๋ฅผ ์˜ฌ๋ฆฌ๊ณ , ๋‹ค๋ฅธ ์—ฐ๊ฒฐ์ด ์†ํ•ด๋ฅผ ๋ณธ๋‹ค๋ฉด?

๋ฐ”๋กœ ์—ฌ๊ธฐ์„œ Fairness(๊ณต์ •์„ฑ) ๊ฐœ๋…์ด ํ•„์š”ํ•˜๋‹ค. Fairness๋Š” ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ์„œ๋กœ ๋ฐฐ๋ คํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๋„๋ก ๋งŒ๋“œ๋Š” TCP ์„ค๊ณ„ ์ฒ ํ•™์ด๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ์—๋Š” bottleneck link(๋ณ‘๋ชฉ ๋งํฌ)๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ฒฝ๋กœ ์ค‘ ๊ฐ€์žฅ ๋Œ€์—ญํญ์ด ๋‚ฎ์€ ์ง€์ ์œผ๋กœ, congestion์ด ๊ฐ€์žฅ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ณณ์ด๋‹ค. bottleneck link๋ฅผ ์ง€๋‚˜๋ ค๋Š” ์—ฌ๋Ÿฌ TCP ์—ฐ๊ฒฐ์ด ์žˆ์„ ๋•Œ, ์ด์ƒ์ ์ธ ์ƒํ™ฉ์€ ๋ชจ๋“  ์—ฐ๊ฒฐ์ด ๋Œ€์—ญํญ์„ ๊ณตํ‰ํ•˜๊ฒŒ ๋‚˜๋ˆ  ๊ฐ–๋Š” ๊ฒƒ์ด๋‹ค.

image.png

bottleneck link์˜ ๋ผ์šฐํ„ฐ์—๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ ํŒจํ‚ท ํ๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค. ์ด ํ๊ฐ€ ๋„˜์น˜๋ฉด ํŒจํ‚ท ์†์‹ค์ด ๋ฐœ์ƒํ•œ๋‹ค. TCP ์†ก์‹ ๋ฅ ์ด bottleneck link์˜ ์šฉ๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๋ฉด, ์ดˆ๊ณผ๋ถ„์˜ ํŒจํ‚ท์€ ํ์— ์Œ“์ด๊ฒŒ ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด RTT๋Š” ์ฆ๊ฐ€ํ•˜์ง€๋งŒ, ์‹ค์ œ ์ข…๋‹จ ๊ฐ„ ์ฒ˜๋ฆฌ๋Ÿ‰์€ ๋ณ‘๋ชฉ ๋งํฌ์˜ ์šฉ๋Ÿ‰ ์ด์ƒ์œผ๋กœ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋ณ‘๋ชฉ ๋งํฌ์˜ ๋Œ€์—ญํญ์ด 100Mbps์ด๊ณ , 4๊ฐœ์˜ TCP ์—ฐ๊ฒฐ์ด ์žˆ๋‹ค๋ฉด ๊ฐ ์—ฐ๊ฒฐ์€ 25Mbps์”ฉ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒŒ ๊ณต์ •ํ•œ ์ƒํƒœ์ผ ๊ฒƒ์ด๋‹ค.

TCP๋Š” ์ด๋ฅผ ์œ„ํ•ด cwnd๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์‹ ์˜ ์ „์†ก ์†๋„๋ฅผ ์กฐ์ ˆํ•ด ๊ณต์ •ํ•œ ์ž์› ์‚ฌ์šฉ์„ ์œ ๋„ํ•œ๋‹ค.

image.png

์ด์ƒ์ ์ธ ์ƒํƒœ๋Š” "pipe just full, but not fuller"์ด๋‹ค. bottleneck link๋ฅผ ์™„์ „ํžˆ ํ™œ์šฉํ•˜๋˜, ๊ณผ๋„ํ•œ ํ์ž‰์€ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋‹ค. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ชจ๋˜ TCP ๊ตฌํ˜„์€ ํŒจํ‚ท ์†์‹ค์—๋งŒ ์˜์กดํ•˜์ง€ ์•Š๊ณ  RTT ๋ณ€ํ™”๋„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด ํ˜ผ์žก์„ ์กฐ๊ธฐ์— ๊ฐ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

TCP Fairness

image.png

TCP ํ˜ผ์žก ์ œ์–ด์˜ ์ค‘์š”ํ•œ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๋Š” ์—ฌ๋Ÿฌ TCP ์—ฐ๊ฒฐ์ด ๋„คํŠธ์›Œํฌ ์ž์›์„ ๊ณต์ •ํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํŠนํžˆ KK๊ฐœ์˜ TCP ์—ฐ๊ฒฐ์ด ๋™์ผํ•œ ๋ณ‘๋ชฉ ๋งํฌ(๋Œ€์—ญํญ RR)๋ฅผ ๊ณต์œ ํ•  ๋•Œ, ์ด์ƒ์ ์œผ๋กœ๋Š” ๊ฐ ์—ฐ๊ฒฐ์ด ํ‰๊ท ์ ์œผ๋กœ R/KR/K์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์–ป์–ด์•ผ ํ•œ๋‹ค.

image.png

TCP์˜ AIMD ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ณต์ •์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ๋น„์ค‘์žˆ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋‘ ๊ฐœ์˜ TCP ์„ธ์…˜์ด ๊ฒฝ์Ÿํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด๋ณด์ž.

  • ๊ฐ ์—ฐ๊ฒฐ์€ ํ˜ผ์žก์ด ๊ฐ์ง€๋˜์ง€ ์•Š์„ ๋•Œ ๊ฐ€์‚ฐ์ ์œผ๋กœadditively_{additively} ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. ์ด๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰ ์ธก๋ฉด์—์„œ ๋ณผ ๋•Œ 45๋„ ๊ฐ๋„์˜ ๊ธฐ์šธ๊ธฐ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ํ˜ผ์žก์ด ๋ฐœ์ƒํ•˜๋ฉด(ํŒจํ‚ท ์†์‹ค ๋ฐœ์ƒ ์‹œ), ๋‘ ์—ฐ๊ฒฐ ๋ชจ๋‘ ์Šน๋ฒ•์ ์œผ๋กœmultiplicatively_{multiplicatively} ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ํ˜ผ์žก ์œˆ๋„์šฐ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค.

์ด๋Ÿฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋‘ ์—ฐ๊ฒฐ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๊ณตํ‰ํ•œ ๋Œ€์—ญํญ ๊ณต์œ  ์ƒํƒœ, ์ฆ‰ ๋Œ€๊ฐ์„ (45๋„ ์„ )์„ ์ค‘์‹ฌ์œผ๋กœ ์ง„๋™ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ์ด๋ก ์ ์œผ๋กœ AIMD๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ƒ์ ์ธ ๊ฐ€์ • ํ•˜์—์„œ ๊ณต์ •์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

  • ๋ชจ๋“  ์—ฐ๊ฒฐ์ด ๊ฐ™์€ RTT๋ฅผ ๊ฐ€์งˆ ๋•Œ
  • ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์„ ๋•Œ
  • ๋ชจ๋“  ์—ฐ๊ฒฐ์ด ํ˜ผ์žก ํšŒํ”ผ ๋‹จ๊ณ„์— ์žˆ์„ ๋•Œ

ํ˜„์‹ค์—์„œ๋Š” ๊นจ์ง€๋Š” ๊ณต์ •์„ฑ

image.png

ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด โ€˜๊ณต์ •ํ•˜๊ฒŒโ€™ ํ–‰๋™ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์•ฑ๋“ค์€ ์ข…์ข… congestion control์ด ์—†๋Š” UDP๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. congestion์ด ๋ฐœ์ƒํ•ด๋„ ์ „์†ก๋ฅ ์„ ์ค„์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๊ณต์ •ํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š” TCP๋ฅผ ๋ฐ€์–ด๋‚ธ๋‹ค.

UDP์—๋Š” ํ˜ผ์žก ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ, UDP ํŠธ๋ž˜ํ”ฝ์€ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก ์ƒํ™ฉ์—์„œ๋„ ์ž์‹ ์˜ ์ „์†ก๋ฅ ์„ ์ค„์ด์ง€ ์•Š๋Š”๋‹ค. ๋ฐ˜๋ฉด TCP๋Š” congestion์— ๋Œ€์‘ํ•ด ์ „์†ก๋ฅ ์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด UDP ํŠธ๋ž˜ํ”ฝ์ด TCP ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ€์–ด๋‚ด๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •์งํ•œ TCP๋งŒ ์†ํ•ด๋ฅผ ๋ณธ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์‚ฌ๋žŒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— congestion control์˜ ์‚ฌ์šฉ์„ ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‘ ํ˜ธ์ŠคํŠธ ๊ฐ„์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ณ‘๋ ฌ TCP ์—ฐ๊ฒฐ์„ ์—ด ์ˆ˜ ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋‹ค.

๋Œ€์—ญํญ์ด RR์ธ ๋ณ‘๋ชฉ ๋งํฌ์— ์ด๋ฏธ 9๊ฐœ์˜ TCP ์—ฐ๊ฒฐ์ด ์กด์žฌํ•˜๊ณ , ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด

  • 1๊ฐœ์˜ TCP ์—ฐ๊ฒฐ์„ ์—ด๋ฉด R/10R/10
  • 11๊ฐœ์˜ TCP ์—ฐ๊ฒฐ์„ ์—ด๋ฉด R/2R/2

๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค. TCP๊ฐ€ ์—ฐ๊ฒฐ ๋‹จ์œ„๋กœ ๊ณต์ •์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊ตฌ์กฐ์  ํ•œ๊ณ„๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์ง„์ •ํ•œ ๊ณต์ •์„ฑ์ด ๋ฌด๋„ˆ์ง„๋‹ค.

์š”์•ฝ

  • TCP Fairness๋Š” ๋„คํŠธ์›Œํฌ ์ž์›์„ ๋ชจ๋“  ์—ฐ๊ฒฐ์ด ๊ณตํ‰ํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.
  • AIMD ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด๋Ÿฌํ•œ ๊ณต์ •์„ฑ์„ ์ˆ˜๋ ด์‹œํ‚ค๋Š” ์„ค๊ณ„ ์›๋ฆฌ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ UDP ํŠธ๋ž˜ํ”ฝ๊ณผ ๋ฉ€ํ‹ฐ ์—ฐ๊ฒฐ ์ „๋žต ๊ฐ™์€ ํ˜„์‹ค์  ์š”์ธ๋“ค์€ ๊ณต์ •์„ฑ์„ ์‰ฝ๊ฒŒ ๊นจ๋œจ๋ฆฐ๋‹ค.
  • TCP๋Š” ์—ฐ๊ฒฐ ๋‹จ์œ„์˜ ๊ณต์ •์„ฑ์€ ์ œ๊ณตํ•˜์ง€๋งŒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์œ„์˜ ๊ณต์ •์„ฑ์€ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.