13์žฅ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก ์ œ์–ด ์™„์ „ ์ •๋ฆฌ

13.1 ํ˜ผ์žก์˜ ํšจ๊ณผ

ํ˜ผ์žก(Congestion)์˜ ์ •์˜

  • ํ˜ผ์žก: ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ํŒจํ‚ท์˜ ์ˆ˜๊ฐ€ ๋„คํŠธ์›Œํฌ์˜ ์ฒ˜๋ฆฌ ์šฉ๋Ÿ‰์— ๋„๋‹ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ฐœ์ƒ
  • ํ˜ผ์žก ์ œ์–ด(congestion control)์˜ ๋ชฉ์ : Network ์•ˆ์˜ packet์˜ ์ˆ˜๋ฅผ ์ผ์ •ํ•œ ๊ฐœ์ˆ˜ ์ดํ•˜๋กœ ์œ ์ง€ํ•˜์—ฌ network์˜ ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ๋–จ์–ด์ง€์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ

ํ˜ผ์žก ์ œ์–ด๋ฅผ ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์˜ ๋ฌธ์ œ์ 

๊ฒฝํ—˜์ ์œผ๋กœ queue์˜ ๊ธธ์ด๊ฐ€ 80% ์ด์ƒ ์ฐจ๋ฉด:

  • queue์˜ ๊ธธ์ด๋Š” ๋น ๋ฅธ ์†๋„๋กœ ์ฆ๊ฐ€
  • average packet delay๊ฐ€ ๋ฌดํ•œ๋Œ€๋กœ ์ฆ๊ฐ€
  • ์ฒ˜๋ฆฌ์–‘(Throughput)์€ โ€œ0โ€์œผ๋กœ ๋–จ์–ด์ง„๋‹ค

๋ฐ์ดํ„ฐ ๋„คํŠธ์›Œํฌ์˜ ํŠน์ง•

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ(queue)๋กœ ์ด๋ฃจ์–ด์ง„ ๋„คํŠธ์›Œํฌ
  • ๋…ธ๋“œ์—๋Š” ๊ฐ๊ฐ์˜ ์ถœ๋ ฅ ์ฑ„๋„์— ๋Œ€ํ•˜์—ฌ ํŒจํ‚ท ํ๊ฐ€ ์žˆ๋‹ค
  • node๋Š” ๊ฐ link๋งˆ๋‹ค:
    • ๋„์ฐฉํ•˜๋Š” packet์„ ์œ„ํ•œ buffer (input buffer)
    • ์ถœ๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” packet์„ ์œ„ํ•œ buffer (output buffer)
    • ๋‘ ๊ฐœ์˜ ํ•ฉ์€ ์ผ์ •ํ•˜๋‹ค

ํŒจํ‚ท ์ฒ˜๋ฆฌ ๊ณผ์ •

  1. packet์ด ๋„์ฐฉํ•˜๋ฉด ํ•ด๋‹น link์˜ input buffer์— ์ €์žฅ
  2. ๊ฒฝ๋กœ๊ฒฐ์ •์„ ํ•œ ํ›„ ํ•ด๋‹นํ•˜๋Š” output buffer๋กœ ์˜ฎ๊ฒจ์ง
  3. ๋ฒ„ํผ ํฌํ™” ์กฐ๊ฑด:
    • input buffer์—์„œ node๊ฐ€ ๊ฒฝ๋กœ๊ฒฐ์ •ํ•˜๋Š” ์†๋„๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ packet์ด ๋„์ฐฉํ•˜๊ฑฐ๋‚˜
    • output buffer์—์„œ packet์ด ๋– ๋‚˜๋Š” ์†๋„๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ packet์ด ๋„์ฐฉํ•˜๋ฉด
    • node์˜ ํŠน์ • link์˜ buffer๋Š” ํฌํ™”๋  ์ˆ˜ ์žˆ๋‹ค

ํ˜ผ์žก ์ œ์–ด์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

1) Input packet์„ ๋ฒ„๋ฆฐ๋‹ค

  • Output link์— ์‚ฌ์šฉ๋˜๋Š” buffer์˜ ์ˆ˜๋ฅผ ์ œํ•œ
  • buffer๊ฐ€ ์ฐจ๋ฉด, ๊ทธ output link๋กœ ๋‚˜๊ฐ€์•ผ ๋  packet์„ ๋ฒ„๋ฆฐ๋‹ค

2) Flow control์„ ํ–‰์‚ฌ

  • node๊ฐ€ ์ด์›ƒ node์— ๋Œ€ํ•ด flow control์„ ํ–‰์‚ฌํ•ด์„œ ํ•œ ์ง€์ ์—์„œ์˜ ๊ณผ์ž‰๋ฐ€์ง‘์ด network ์ „์ฒด์— ํผ์ง€๋„๋ก ํ•œ๋‹ค
  • ๋…ธ๋“œ 6์ด ๋…ธ๋“œ 5์— ๋Œ€ํ•ด์„œ ํŒจํ‚ท ํ๋ฆ„์„ ์ œ์–ดํ•˜๋ฉด ๋…ธ๋“œ 6์„ ํ–ฅํ•˜๋Š” ๋…ธ๋“œ 5์˜ ํ์—๋Š” ํŒจํ‚ท์ด ์Œ“์ผ ๊ฒƒ์ด๋‹ค
  • ๋„คํŠธ์›Œํฌ ์ƒ์˜ ํ•œ ์ง€์ ์˜ ํ˜ผ์žก(Congestion)์€ ์ „์ฒด ๋„คํŠธ์›Œํฌ ๋˜๋Š” ๊ตฌ์—ญ์œผ๋กœ ์ „ํŒŒ๋  ๊ฒƒ์ด๋‹ค
  • ํ๋ฆ„ ์ œ์–ด๋Š” ๊ฐ•๋ ฅํ•œ ์ˆ˜๋‹จ์œผ๋กœ์„œ ์ „์ฒด ๋„คํŠธ์›Œํฌ์˜ ํŠธ๋ž˜ํ”ฝ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค

13.1.1 ์ด์ƒ์ ์ธ ์„ฑ๋Šฅ

์ฒซ ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„ (Throughput vs Load)

  • ์†ก์‹ ์ž(source end)๊ฐ€ ์ „์†กํ•œ ๋„คํŠธ์›Œํฌ ์ž…๋ ฅ ๋กœ๋“œ(offered load)์— ๋Œ€ํ•ด์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•˜์—ฌ ๋ชฉ์ ์ง€(destination end)์— ์ „๋‹ฌ๋œ ํŒจํ‚ท์˜ ์ˆ˜๋กœ์„œ Steady-state total throughput(์ •์ƒ ์ƒํƒœ์ผ ๋•Œ)
  • Maximum theoretical throughput์— ๋Œ€ํ•ด์„œ ์ •๊ทœํ™”(normalized)ํ–ˆ๋‹ค
  • ์ด๋ก ์ ์œผ๋กœ: Offered load๋ฅผ ๋„คํŠธ์›Œํฌ ์šฉ๋Ÿ‰์˜ ์ตœ๋Œ€์น˜๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ๋„คํŠธ์›Œํฌ์˜ throughput์€ ์ฆ๊ฐ€ํ•œ๋‹ค
  • Input load๋ฅผ ๋„คํŠธ์›Œํฌ ์šฉ๋Ÿ‰์˜ ์ตœ๋Œ€์น˜ ์ด์ƒ ์˜ฌ๋ ค๋„ normalized throughput์€ โ€œ1โ€๋กœ ๋‚จ์•„ ์žˆ๋‹ค

๋‘ ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„ (Delay vs Load)

  • ์ด์ƒ์ ์ธ ๊ฒฝ์šฐ์˜ ํ‰๊ท ์ ์ธ ํŒจํ‚ท์˜ end-to-end delay
  • Load๊ฐ€ ์ ์„ ๊ฒฝ์šฐ: delay๋Š” source์—์„œ destination์œผ๋กœ ๊ฐ€๋Š” propagation delay์™€ ๋…ธ๋“œ์—์„œ์˜ processing delay์˜ ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ
  • Load๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ: ๋…ธ๋“œ์—์„œ queueing delay๊ฐ€ ์ถ”๊ฐ€์ ์œผ๋กœ ๋”ํ•ด์ง„๋‹ค
  • Load๊ฐ€ ๋„คํŠธ์›Œํฌ ์šฉ๋Ÿ‰์„ ๋„˜์–ด์„œ๋ฉด: ์ง€์—ฐ(delay)์€ ๋ฌดํ•œ๋Œ€๋กœ ๋Š˜์–ด๋‚œ๋‹ค

์ด์ƒ์ ์ธ ๊ฒฝ์šฐ์˜ ํŠน์ง•

  • ๋ฒ„ํผ๊ฐ€ infinite ์‚ฌ์ด์ฆˆ๋กœ ๊ฐ€์ •ํ•ด๋„ normalized throughput์€ 1.0์œผ๋กœ ์œ ์ง€
  • ๋„คํŠธ์›Œํฌ๋ฅผ ๋– ๋‚˜๋Š” ํŒจํ‚ท์˜ ๋น„์œจ์€ โ€œ1โ€์ด๋‹ค
  • ๋„คํŠธ์›Œํฌ๋กœ ๋“ค์–ด๊ฐ€๋Š” ํŒจํ‚ท์ด โ€œ1โ€๋ณด๋‹ค ํฌ๋ฉด ๋‚ด๋ถ€์ ์ธ ํ์˜ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€
  • ์ •์ƒ์ƒํƒœ์—์„œ ์ž…๋ ฅ์ด ์ถœ๋ ฅ๋ณด๋‹ค ํฌ๋ฉด queueing delay๋Š” ๋ฌดํ•œ๋Œ€๋กœ ๋Š˜์–ด๋‚œ๋‹ค

์„ธ ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„ (Power)

  • ํŒŒ์›Œ(power): ์ง€์—ฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋Ÿ‰์˜ ๋น„๋กœ ์ •์˜๋œ๋‹ค (ratio of throughput to delay)
  • Power = Normalized throughput/Delay

13.1.2 ์‹ค์ œ ์„ฑ๋Šฅ

์ด์ƒ์  ์„ฑ๋Šฅ๊ณผ์˜ ์ฐจ์ด์ 

๊ทธ๋ฆผ 13-3์€ ๋‹ค์Œ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜๋‹ค:

  • infinite buffer
  • ํŒจํ‚ท ์ „์†ก์ด๋‚˜ ํ˜ผ์žก์ œ์–ด ๊ฐ™์€ ์˜ค๋ฒ„ํ—ค๋“œ

์‹ค์ œ๋Š”:

  • ๋ฒ„ํผ๋Š” ์ œํ•œ๋˜์–ด ์žˆ์–ด์„œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ์ƒ๊น€
  • ํ˜ผ์žก ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ œ์–ด ํŒจํ‚ท์ด ๊ตํ™˜ํ•˜๋ฏ€๋กœ์„œ ๋„คํŠธ์›Œํฌ ์šฉ๋Ÿ‰์ด ๋‚ญ๋น„๋จ

์„ธ ์ง€์—ญ์œผ๋กœ ๋ถ„๋ฅ˜

1) No congestion (ํ˜ผ์žก ์—†์Œ)

  • Load๊ฐ€ ๊ฐ€๋ฒผ์šธ ๋•Œ
  • Offered load๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด throughput๋„ ๋”ฐ๋ผ์„œ ์ฆ๊ฐ€ํ•œ๋‹ค

2) Moderate Congestion (์ค‘๊ฐ„ ํ˜ผ์žก)

  • Load๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด moderate congestion์— ๋„๋‹ฌ
  • ํŠน์ง•: Throughput ์ฆ๊ฐ€ํ•˜๋Š” ์†๋„๊ฐ€ offered load๋ณด๋‹ค ๋Šฆ๋‹ค (์ด์ƒ์ ์ธ ๊ฒฝ์šฐ์—์„œ ๋ฉ€์–ด์ง)

๊ทธ ์ด์œ ๋“ค:

  • load๊ฐ€ ๋„คํŠธ์›Œํฌ์— ๊ณจ๊ณ ๋ฃจ ํผ์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค
  • ์–ด๋–ค ๋…ธ๋“œ๋Š” moderate congestion์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์–ด๋–ค ๋…ธ๋“œ๋Š” severe congestion์„ ๊ฒฝํ—˜ํ•˜๋ฉด์„œ ํŒจํ‚ท์„ ๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค
  • Load๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ๋„คํŠธ์›Œํฌ๋Š” ํŒจํ‚ท์„ ํ˜ผ์žก์ด ์—†๋Š” ์ง€์—ญ์œผ๋กœ ๋ณด๋‚ด์„œ ๋„คํŠธ์›Œํฌ์˜ ๊ท ํ˜•์„ ์žก์œผ๋ ค ํ•œ๋‹ค
  • ๋…ธ๋“œ ์‚ฌ์ด์— ํ˜ผ์žก์ง€์—ญ์„ ์„œ๋กœ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ Routing message๊ฐ€ ๊ตํ™˜์ด ๋˜๋ฉด์„œ overhead๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ์ด overhead๊ฐ€ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์— ์‚ฌ์šฉ๋˜๋Š” ๋„คํŠธ์›Œํฌ ์šฉ๋Ÿ‰(network capacity)์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค

3) Severe Congestion (์‹ฌ๊ฐํ•œ ํ˜ผ์žก)

  • Load๋ฅผ ๋” ์ฆ๊ฐ€์‹œํ‚ค๋ฉด severe congestion์— ๋„๋‹ฌ
  • ํŠน์ง•: Load๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด Throughput์ด ์˜คํžˆ๋ ค ๊ฐ์†Œํ•œ๋‹ค

๊ทธ ์ด์œ ๋“ค:

  • ๋…ธ๋“œ์˜ ๋ฒ„ํผ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ
  • ๋…ธ๋“œ์˜ ๋ฒ„ํผ๊ฐ€ ์ฐจ๋ฉด ๋…ธ๋“œ๋Š” ํŒจํ‚ท์„ ๋ฒ„๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค
  • ์†Œ์Šค ๋…ธ๋“œ๋Š” ์ƒˆ๋กœ์šด ํŒจํ‚ท์„ ์ „์†กํ•˜๋Š” ๋„์ค‘์— ๋ฒ„๋ ค์ง„ ํŒจํ‚ท์„ ์žฌ์ „์†กํ•ด์•ผ ํ•œ๋‹ค
  • ์ด๊ฒƒ์ด ์ƒํ™ฉ์„ ์•…ํ™”์‹œํ‚จ๋‹ค: ๋งŽ์€ ํŒจํ‚ท์ด ์žฌ์ „์†ก๋ ์ˆ˜๋ก ๋„คํŠธ์›Œํฌ์— load๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ๋ฒ„ํผ๊ฐ€ ํฌํ™”๋œ๋‹ค
  • ์žฌ์ „์†ก์ด ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ํ• ์ง€๋ผ๋„ higher layer์—์„œ (์˜ˆ: Transport layer) ACK(Acknowledgement packet)๋ฅผ ๋Šฆ๊ฒŒ ์‘๋‹ตํ•ด์„œ ์†ก์‹ ์ž๋Š” ์žฌ์ „์†ก์ด ์‹คํŒจํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋˜ ๋‹ค์‹œ ์žฌ์ „์†ก์„ ํ•ด์•ผํ•œ๋‹ค
  • ๊ฒฐ๊ณผ: ์ด ์ƒํƒœ์—์„œ ์‹œ์Šคํ…œ์€ throughput์ด โ€œzeroโ€๊ฐ€ ๋œ๋‹ค

13.2 ํ˜ผ์žก์ œ์–ด

13.2.1 ํ›„๋ฉด ์••๋ฐ•(Backpressure)

์ •์˜ ๋ฐ ๋™์ž‘

  • ํ›„๋ฉด ์••๋ฐ•์€ ๋งํฌ๋‚˜ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์ƒํƒœ(๊ฐ€์ƒํšŒ์„ )์—์„œ ์‚ฌ์šฉํ•œ๋‹ค
  • ๋…ธ๋“œ 6์ด ๋ฒ„ํผ๊ฐ€ ์ฐจ์„œ ํ˜ผ์žกํ•˜๋ฉด ๋…ธ๋“œ 6์€ ๋…ธ๋“œ5๋‚˜ ๋…ธ๋“œ 3์—์„œ ์˜ค๋Š” ํŒจํ‚ท์„ ์ฒœ์ฒœํžˆ ์˜ค๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ์ค‘๋‹จ์‹œํ‚จ๋‹ค
  • ๊ทธ๋Ÿฌ๋ฉด ๋…ธ๋“œ 5๋‚˜ ๋…ธ๋“œ 3๋„ ์ž์‹ ์—๊ฒŒ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ด๊ฑฐ๋‚˜ ์ •์ง€์‹œํ‚จ๋‹ค
  • ์ด๋Ÿฐ ํ๋ฆ„์ด ์†Œ์Šค๋ฅผ ํ–ฅํ•˜์—ฌ (๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์˜ ํ๋ฆ„์„ ๊ฑฐ์Šฌ๋Ÿฌ์„œ) ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ์ „ํŒŒ๋˜๋ฉฐ ์†Œ์Šค๋Š” ๋„คํŠธ์›Œํฌ์— ์ƒˆ๋กœ์šด ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์— ๋Œ€ํ•˜์—ฌ ์ œ์•ฝ์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค

ํ›„๋ฉด ์••๋ฐ•์˜ ์ œํ•œ์ 

์œ ์šฉ์„ฑ์ด ์ œํ•œ๋˜์–ด ์žˆ๋‹ค:

  • ํ™‰ ๋‹จ์œ„์˜ ํ๋ฆ„ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ์—ฐ๊ฒฐ ์œ„์ฃผ์˜ ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ X.25 (X dot 25๋กœ ์ฝ์Šต๋‹ˆ๋‹ค) ๊ธฐ๋ฐ˜์˜ ํŒจํ‚ท ๊ตํ™˜ ๋„คํŠธ์›Œํฌ๋Š” ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•œ๋‹ค
  • ํ”„๋ ˆ์ž„ ๋ฆด๋ ˆ์ด๋‚˜ ATM ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ํ™‰ ๋‹จ์œ„์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๋Šฅ๋ ฅ์ด ์—†๋‹ค
  • IP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ธํ„ฐ๋„ท์˜ ๊ฒฝ์šฐ์— ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ์„œ ๋ผ์šฐํ„ฐ์™€ ๋ผ์šฐํ„ฐ ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ทœ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†๋‹ค

13.2.2 ์ดˆํฌ ํŒจํ‚ท(Choke Packet)

์ •์˜ ๋ฐ ๋™์ž‘

  • ์ดˆํฌ ํŒจํ‚ท(choke packet): ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•˜์—ฌ โ€œํ˜ผ์žกํ•œ ๋…ธ๋“œโ€์—์„œ ์ƒ์„ฑ๋˜์–ด โ€œ์†Œ์Šค ๋…ธ๋“œโ€๋กœ ์—ญ์œผ๋กœ ์ „์†ก๋œ๋‹ค

์˜ˆ์ œ: ICMP Source Quench

  • ์˜ˆ์ œ: ICMP(Internet Control Message Protocol)์˜ ์†Œ์Šค ์ œ์ง€(Source Quench) ํŒจํ‚ท
  • ๋ผ์šฐํ„ฐ๋‚˜ ๋ชฉ์ ์ง€ ์‹œ์Šคํ…œ์ด ICMP Source Quench packet๋ฅผ ์†Œ์Šค๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ณ  ์†Œ์Šค ๋…ธ๋“œ์—๊ฒŒ ๋ชฉ์ ์ง€๋กœ ๋ณด๋‚ด๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ด๋„๋ก ์š”๊ตฌํ•œ๋‹ค
  • ์†Œ์Šค ์ œ์ง€ ํŒจํ‚ท์„ ๋ฐ›์€ ์†Œ์Šค๋Š” ๋‹ค์Œ์˜ ์†Œ์Šค ์ œ์ง€ ํŒจํ‚ท์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ํŠธ๋ž˜ํ”ฝ ์ „์†ก์„ ์ค„์ธ๋‹ค

์‚ฌ์šฉ ์‹œ์ 

  • ๋ฒ„ํผ๊ฐ€ ์ฐจ์„œ IP ๋ฐ์ดํ„ฐ๊ทธ๋žจ์„ ๋ฒ„๋ ค์•ผ ํ•˜๋Š” ๋ผ์šฐํ„ฐ๋‚˜ ํ˜ธ์ŠคํŠธ๊ฐ€ ์†Œ์Šค ์ œ์ง€ ํŒจํ‚ท์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๋˜ํ•œ ๋ฒ„ํผ๊ฐ€ ์ผ์ • ์ด์ƒ ์ฐจ์˜ค๋ฅด๊ฒŒ ๋˜๋ฉด ํ˜ผ์žก์„ ์˜ˆ์ƒํ•˜์—ฌ ์†Œ์Šค ์ œ์ง€ ํŒจํ‚ท์„ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค

13.2.3 ์•”์‹œ์ ์ธ ํ˜ผ์žก ์ œ์–ด ์‹ ํ˜ธ(Implicit Congestion Signaling)

๋™์ž‘ ์›๋ฆฌ

  • ๋„คํŠธ์›Œํฌ๊ฐ€ ํ˜ผ์žกํ•ด์ง€๋ฉด:
    1. ์†Œ์Šค์—์„œ ๋ชฉ์ ์ง€๊นŒ์ง€ ํŒจํ‚ท์˜ ์ „์†ก ์‹œ๊ฐ„์ด ์ฆ๊ฐ€
    2. ํŒจํ‚ท๋“ค์ด ๋ฒ„๋ ค์ง„๋‹ค
  • ์†Œ์Šค๊ฐ€ ์ง€์—ฐ์‹œ๊ฐ„์˜ ์ฆ๊ฐ€์™€ ํŒจํ‚ท์ด ๋ฒ„๋ ค์ง€๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ํ๋ฆ„์„ ์ค„์ธ๋‹ค๋ฉด ํ˜ผ์žก์€ ์ค„์–ด๋“ ๋‹ค
  • ํŠน์ง•: ์•”์‹œ์ ์ธ ์‹ ํ˜ธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ํ˜ผ์žก์ œ์–ด๋Š” ์–‘ ์ข…๋‹จ ์‹œ์Šคํ…œ์˜ ์ฑ…์ž„์ด๋ฉฐ ๋…ธ๋“œ๋Š” ์ƒ๊ด€ํ•˜์ง€ ์•Š๋Š”๋‹ค

์ ์šฉ ๋ถ„์•ผ

  • ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํŒจํ‚ท ๊ตํ™˜ ๋„คํŠธ์›Œํฌ๋‚˜ IP ๊ธฐ๋ฐ˜์˜ ์ธํ„ฐ๋„ท๊ฐ™์€ ๋น„์—ฐ๊ฒฐ ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ทธ๋žจ ๋„คํŠธ์›Œํฌ์—์„œ ํšจ๊ณผ์ ์ด๋‹ค
  • IP ๋ ˆ๋ฒจ์—์„œ๋Š” ํ๋ฆ„์„ ๊ทœ์ œํ•˜๋Š” ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์ด ์—†๋‹ค

TCP ๋ ˆ๋ฒจ์—์„œ ํ˜ผ์žก ์ œ์–ด

  • TCP์˜ ์„ธ๊ทธ๋ฉ˜ํŠธ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ์— ์†ก์‹ ์ธก์— ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • ์ง€์—ฐ์‹œ๊ฐ„์˜ ์ฆ๊ฐ€์™€ ์„ธ๊ทธ๋ฉ˜ํŠธ์˜ ๋ถ„์‹ค์„ ๊ฐ์ง€ํ•˜๋Š” ๋Šฅ๋ ฅ์— ๊ทผ๊ฑฐ
  • TCP์˜ ์†Œ์Šค์™€ ๋ชฉ์ ์ง€ ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ทœ์ œํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • 17์žฅ์—์„œ ๋‹ค๋ฃจ์–ด์ง„๋‹ค

13.2.4 ๋ช…์‹œ์ ์ธ ํ˜ผ์žก ์ œ์–ด (Explicit Congestion Signaling)

๊ธฐ๋ณธ ๊ฐœ๋…

  • ๋„คํŠธ์›Œํฌ์˜ ํ˜ผ์žก์ด ์ฆ๊ฐ€ํ•  ๋•Œ์— ๊ทธ๊ฒƒ์„ ์ข…๋‹จ ์‹œ์Šคํ…œ์— ๊ฒฝ๋ณด(alarm)ํ•˜๋ฉด ์ข…๋‹จ ์‹œ์Šคํ…œ์€ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค
  • ์—ฐ๊ฒฐ ์œ„์ฃผ(connection oriented)์˜ ๋„คํŠธ์›Œํฌ์— ์ ์šฉ๋  ์ˆ˜ ์žˆ๊ณ  ๊ฐ ์—ฐ๊ฒฐ์ƒ์˜ ํŒจํ‚ท ํ๋ฆ„์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ œ์–ดํ•˜๊ฒŒ ๋œ๋‹ค

๋ช…์‹œ์  ํ˜ผ์žก ์‹œ๊ทธ๋„๋ง์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

1) ์—ญ๋ฐฉํ–ฅ(Backward)
  • ์†Œ์Šค์—๊ฒŒ ํ†ต๋ณด๋ฅผ ์ˆ˜์‹ ํ•œ ๋ฐฉํ–ฅ์˜ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด์„œ โ€œํ˜ผ์žก ์ œ์–ดโ€ํ•  ๊ฒƒ์„ ํ†ต๋ณดํ•œ๋‹ค
  • ๋ฐฉ๋ฒ•:
    • ์†Œ์Šค๋กœ ํ–ฅํ•˜๋Š” ํŒจํ‚ท์˜ ํ—ค๋”์˜ ํŠน์ • ๋น„ํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜
    • ์†Œ์Šค๋กœ ๋ณ„๋„์˜ ํŒจํ‚ท์„ ์ „์†กํ•˜์—ฌ ํ†ต๋ณดํ•œ๋‹ค
2) ์ˆœ๋ฐฉํ–ฅ(Forward)
  • ์‚ฌ์šฉ์ž์—๊ฒŒ ํ†ต๋ณด๋ฅผ ์ˆ˜์‹ ํ•œ ๋ฐฉํ–ฅ๊ณผ ๊ฐ™์€ ๋ฐฉํ–ฅ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด์„œ โ€œํ˜ผ์žก ์ œ์–ดโ€ํ•  ๊ฒƒ์„ ํ†ต๋ณดํ•œ๋‹ค
  • ๋ฐฉ๋ฒ•:
    • ์‚ฌ์šฉ์ž๋กœ ํ–ฅํ•˜๋Š” ํŒจํ‚ท์˜ ํ—ค๋”์˜ ํŠน์ • ๋น„ํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜
    • ์‚ฌ์šฉ์ž๋กœ ๋ณ„๋„์˜ ํŒจํ‚ท์„ ์ „์†กํ•˜์—ฌ ํ†ต๋ณดํ•œ๋‹ค
  • ์ˆœ๋ฐฉํ–ฅ ํ†ต๋ณด๋ฅผ ๋ฐ›์€ ์ข…๋‹จ ์‹œ์Šคํ…œ์˜ ๋Œ€์‘:
    • ํ†ต๋ณด๋ฅผ ์†Œ์Šค์—๊ฒŒ ๋‹ค์‹œ ๋ฐ˜๋ณตํ•˜์—ฌ ์ „์†กํ•˜๊ฑฐ๋‚˜ (Echo Back)
    • ์ˆœ๋ฐฉํ–ฅ ํ†ต๋ณด๋ฅผ ๋ฐ›์€ ์ข…๋‹จ ์‹œ์Šคํ…œ์€ ์†Œ์Šค์—๊ฒŒ ํ๋ฆ„ ์ œ์–ด(Flow Control)๋ฅผ ํ–‰์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค (TCP ๋ ˆ๋ฒจ์—์„œ์˜ ํ๋ฆ„ ์ œ์–ด)

์„ธ ๊ฐ€์ง€ ๋ถ„๋ฅ˜ ๋ฐฉ๋ฒ•

1) ์ด์ง„(Binary)
  • ํ˜ผ์žกํ•œ ๋…ธ๋“œ๊ฐ€ ํŒจํ‚ท์„ ์ „๋‹ฌ(forward)ํ•  ๋•Œ์— ํ˜ผ์žก์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋น„ํŠธ๋ฅผ ์„ค์ •(set)ํ•œ๋‹ค
  • ์†Œ์Šค๊ฐ€ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์ƒ์—์„œ โ€œํ˜ผ์žก์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋น„ํŠธโ€๊ฐ€ ์„ค์ •(Set)๋œ ํŒจํ‚ท์„ ๋ฐ›์œผ๋ฉด ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค
2) ํฌ๋ ˆ๋”ง ๊ธฐ๋ฐ˜(Credit-based)
  • ํฌ๋ ˆ๋”ง: ์†Œ์Šค(๋…ธ๋“œ)๊ฐ€ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ท(๋˜๋Š” ์˜ฅํ…Ÿ)์˜ ์–‘
  • ํฌ๋ ˆ๋”ง์„ ๋‹ค ์‚ฌ์šฉํ•œ ์†Œ์Šค๋Š” ๋‚จ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€์˜ ํฌ๋ ˆ๋”ง์„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค
3) ์ „์†ก๋ฅ  ๊ธฐ๋ฐ˜(Rate-based)
  • ๋…ผ๋ฆฌ์ ์ธ ์—ฐ๊ฒฐ์—์„œ ์†Œ์Šค์—๊ฒŒ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก๋ฅ ์— ์ œํ•œ์„ ์ค€๋‹ค
  • ํ˜ผ์žก์ด ์ƒ๊ธฐ๋ฉด ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์ƒ์˜ ์ž„์˜์˜ ๋…ธ๋“œ๊ฐ€ ์†Œ์Šค์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†ก๋ฅ ์„ ๋‚ฎ์ถ”๋„๋ก ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค

13.4 ํŒจํ‚ท ๊ตํ™˜ ๋„คํŠธ์›Œํฌ์˜ ํ˜ผ์žก์ œ์–ด

1) Choke packet ์‚ฌ์šฉ

  • congested node๊ฐ€ ๋ชจ๋“  ๋˜๋Š” ์ผ๋ถ€์˜ source node๋กœ choke packet์„ ๋ณด๋‚ธ๋‹ค
  • choke packet์„ ๋ฐ›์€ source node๋Š” choke packet์„ ๋ฐ›์€ ์ดํ›„ ์ผ์ •์‹œ๊ฐ„ ๋™์•ˆ packet์„ ๋ณด๋‚ด๋Š” ์†๋„๋ฅผ x% ๊ฐ์†Œ์‹œํ‚จ๋‹ค
  • ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„ ๋‹ค์‹œ choke packet์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉด ์›๋ž˜์˜ ์†๋„๋กœ packet์„ ๋ณด๋‚ธ๋‹ค
  • choke packet์€ source node์˜ ์ „์†ก ์†๋„๋ฅผ ๋А๋ฆฌ๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋ฉˆ์ถ”๊ฒŒ ํ•ด์„œ network ์•ˆ์˜ ์ „์ฒด packet์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•œ๋‹ค
  • ๋‹จ์ : congestion์ด ์žˆ๋Š” ๋™์•ˆ ์ถ”๊ฐ€์˜ traffic์ด ์ƒ๊ธด๋‹ค

2) ๊ฒฝ๋กœ ๋ฐฐ์ •์— ์˜์กด

  • node๊ฐ€ ๋‹ค๋ฅธ node๋“ค์—๊ฒŒ link์˜ ์ง€์—ฐ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์„œ routing ๊ฒฐ์ •์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค
  • ์ด ์ •๋ณด๋Š” ์ƒˆ๋กœ์šด packet์˜ ์ƒ์„ฑ์œจ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค
  • ์‚ฌ์šฉ ์˜ˆ: ARPA Net์—์„œ ์‚ฌ์šฉ

3) End-to-end probe packet ์‚ฌ์šฉ [Probe packet]

  • sender๋Š” packet์„ destination node๋กœ ์ „์†กํ•˜๋Š” ๋„์ค‘์— ๋ถˆ๊ทœ์น™ํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ (์˜ˆ: 50 msec ~150 msec) probe packet์„ ๋ณด๋‚ธ๋‹ค
  • Destination์— congestion์ด ์—†์œผ๋ฉด: ACK๋ฅผ ๋ณด๋‚ด๊ณ  source๋Š” packet์„ ๋ณด๋‚ด๋Š” ์†๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค
  • Destination์— congestion์ด ์žˆ์œผ๋ฉด: probe packet์„ ๋ฌด์‹œํ•˜๊ณ  (ACK๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๊ณ ), source (sender)๋Š” ๊ณ„์† ๊ฐ™์€ ์†๋„๋ฅผ ์œ ์ง€

4) ํŒจํ‚ท์— ํ˜ผ์žก์— ๊ด€ํ•œ ์ •๋ณด ์ถ”๊ฐ€

์—ญ๋ฐฉํ–ฅ ์ •๋ณด ์ถ”๊ฐ€

  • Congestion์˜ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ(source node ๋ฐฉํ–ฅ์œผ๋กœ) ๊ฐ€๋Š” packet์— ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์•ž์—์„œ ๋ฐฐ์šด โ€˜์—ญ๋ฐฉํ–ฅโ€™ ๋ช…์‹œ ํ˜ผ์žก ์ œ์–ด ์‹œ๊ทธ๋„๋ง
  • ์žฅ์ : ์ œ์–ด ์ •๋ณด๊ฐ€ ๋…ธ๋“œ์— ๋นจ๋ฆฌ ๋„๋‹ฌํ•œ๋‹ค
  • ๊ฒฐ๊ณผ: source node์—์„œ ๋‚˜์˜ค๋Š” packet์˜ ํ๋ฆ„์„ ์ค„์ธ๋‹ค

์ˆœ๋ฐฉํ–ฅ ์ •๋ณด ์ถ”๊ฐ€

  • Congestion๊ณผ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋Š” packet์— โ€œํ˜ผ์žก์— ๊ด€ํ•œ ์ •๋ณดโ€๋ฅผ ์ถ”๊ฐ€
  • ์•ž์—์„œ ๋ฐฐ์šด โ€œ์ˆœ๋ฐฉํ–ฅโ€ ๋ช…์‹œ ํ˜ผ์žก ์ œ์–ด ์‹œ๊ทธ๋„๋ง
  • ๋™์ž‘:
    • destination node๊ฐ€ source node์—๊ฒŒ ๋ถ€ํ•˜ ์กฐ์ ˆ์„ ์š”์ฒญํ•˜๊ฑฐ๋‚˜
    • Destination ๋…ธ๋“œ๊ฐ€ ์†Œ์Šค ๋…ธ๋“œ์— ํŒจํ‚ท์„ ๋ณด๋‚ผ ๋•Œ์— (๋˜๋Š” ACK)๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์†Œ์Šค ๋…ธ๋“œ๋กœ ๋˜๋Œ์•„๊ฐ€๊ฒŒ ํ•œ๋‹ค
  • ์‚ฌ์šฉ ์˜ˆ: SNA์—์„œ ์‚ฌ์šฉ