[Computer Network] - Congestion Control & QoS

์˜คํ˜„์„ยท2024๋…„ 10์›” 14์ผ
1

Computer Network

๋ชฉ๋ก ๋ณด๊ธฐ
10/25

Congestion

๐Ÿ“Œ Congestion ์ด๋ž€?
ํ˜ผ์žก์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๋ฉฐ, ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ํŒจํ‚ท๋“ค์ด ๋„ˆ๋ฌด ๋งŽ์•„ ํ˜ผ์žก์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ๋Š” Data traffic์— ํฌ์ปค์Šค๋ฅผ ๋‘๊ณ  ์ง€์ผœ๋ด์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Router ๋‚ด๋ถ€์˜ CPU์—์„œ ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์†๋„๋ณด๋‹ค Router์˜ incoming buffer๋กœ ํŒจํ‚ท์ด ๋“ค์–ด์˜ค๋Š” ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๋‹ค๋ฉด incoming buffer์— ํŒจํ‚ท์ด ์Œ“์ด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ Congestion์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋’ค์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.

์ด๋Ÿฐ Congestion์„ Controlํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ Traffic Congestion์ด ์ผ์–ด๋‚  ์ƒํ™ฉ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ Congestion์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ์ด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

QoS

๋จผ์ € Traffic์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ด์•ผ ํ•œ๋‹ค.

Traffic์€ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ๊ณผ ๋น„๋””์˜ค ๊ฐ™์€ ์‹ค์‹œ๊ฐ„์„ฑ ํŠธ๋ž˜ํ”ฝ์ด ์กด์žฌํ•œ๋‹ค. ์‹ค์‹œ๊ฐ„์„ฑ ํŠธ๋ž˜ํ”ฝ๋“ค์€ Delay์™€ Jitter๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค. ํŠนํžˆ, ํŒจํ‚ท๊ฐ„์˜ ๊ฐ„๊ฒฉ์ด ์ผ์ •ํ•˜์ง€ ๋ชปํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” Jitter์˜ ๊ฒฝ์šฐ๋Š” ๋„ˆ๋ฌด ํŒจํ‚ท์ด ์•ˆ ๋“ค์–ด์˜ค๋ฉด ๋Š๊น€์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Client๋Š” ๋ฒ„ํผ๋ง์„ ์ค˜์„œ ํŒจํ‚ท์„ ๋ฐ›์•„๋„ ์กฐ๊ธˆ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์žฌ์ƒํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฐ˜๋ฉด, ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์€ ๋„์ฐฉํ•˜๋Š” ์‹œ๊ฐ„์€ ์กฐ๊ธˆ ๋Šฆ์–ด๋„ ๊ดœ์ฐฎ์ง€๋งŒ, ๋ฐ์ดํ„ฐ์˜ ์†์‹ค์ด ์ผ์–ด๋‚˜์„œ๋Š” ์•ˆ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋น„๋””์˜ค์˜ ๊ฒฝ์šฐ์—๋Š” ํ™”๋ฉด์ด ์กฐ๊ธˆ ๊นจ์ ธ๋„ ๊ดœ์ฐฎ์ง€๋งŒ, 1์–ต์›์„ ์†ก๊ธˆํ•˜๋Š” ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์—์„œ 0์ด ํ•˜๋‚˜ ๋น ์ง€๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ด๋Š” ๊ณง ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์€ ์‹œ๊ฐ„์— ํฌ๊ฒŒ ๊ตฌ์• ๋ฐ›์ง€๋Š” ์•Š์ง€๋งŒ Loss๊ฐ€ ๋ฐœ์ƒํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋ฐ˜๋ฉด, ๋น„๋””์˜ค์˜ ๊ฒฝ์šฐ์—๋Š” ์•ฝ๊ฐ„์˜ ์†์‹ค์ด ์žˆ๋”๋ผ๋„ ๋น ๋ฅธ ์ „์†ก ์†๋„๋ฅผ ๋ณด์žฅ๋ฐ›๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ํŠน์„ฑ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ธฐ ์›ํ•˜๋Š” ์„œ๋น„์Šค์˜ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค. ์ด๋ ‡๊ฒŒ ํŠธ๋ž˜ํ”ฝ์„ ์ƒ์„ฑํ•˜๋Š” application ๋‹จ์˜ ๋™์ž‘์— ๋งž๊ฒŒ ๋„คํŠธ์›Œํฌ ๋””๋ฐ”์ด์Šค๊ฐ€ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•˜๋Š” ๋™์ž‘์„ QoS๋ผ๊ณ  ํ•œ๋‹ค.

๋’ค์—์„œ ๋” ๋‹ค๋ค„๋ณด๊ธฐ๋กœ ํ•˜๊ณ  ์šฐ์„  ๋„˜์–ด๊ฐ€๋ณด์ž.

Traffic ์ข…๋ฅ˜

Traffic ์ข…๋ฅ˜๋ฅผ ๋‹ค์‹œ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Constant bit rate๋ฅผ ๊ฐ€์ง€๋Š” ํŠธ๋ž˜ํ”ฝ์€ ์ดˆ๋‹น ์ „์†ก๋˜๋Š” ๋น„ํŠธ์œจ์ด ํ•ญ์ƒ ์ผ์ •ํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ๋žŒ์˜ ๋ชฉ์†Œ๋ฆฌ๋ฅผ PCM์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ๋ง์„ ํ•˜๊ฑฐ๋‚˜ ์•ˆํ•˜๊ฑฐ๋‚˜ ์ƒ๊ด€์—†์ด 1/8000์ดˆ ๋‹น 8๋น„ํŠธ๊ฐ€ ์ „์†ก๋œ๋‹ค.

Variable bit rate๋ฅผ ๊ฐ€์ง€๋Š” ํŠธ๋ž˜ํ”ฝ์€ ์˜ํ™” ๊ฐ™์ด ๋•Œ์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ ์–‘์ด ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์˜ํ™”์—์„œ ๋ฐฐ๊ฒฝ์ด ๋งŽ์ด ๋ฐ”๋€Œ๋Š” ์žฅ๋ฉด์—์„œ๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์ด ๋ฐœ์ƒ๋˜์ง€๋งŒ, ๋ฐฐ๊ฒฝ์ด ๋™์ผํ•œ ์ •์ ์ธ ์žฅ๋ฉด์—์„œ๋Š” ๋ฐฐ๊ฒฝ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒˆ๋กœ ์ž˜ ๋“ค์–ด์˜ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋ž˜ํ”ฝ์ด ์ ์–ด์ง„๋‹ค.

๋งˆ์ง€๋ง‰, Bursty ํ•œ ํŠธ๋ž˜ํ”ฝ์€ ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๊ทน๋‹จ์ ์ธ Variable bit rate๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•œ๋ฒˆ ํด๋ฆญ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ๋“ค์€ ํ•œ๋ฒˆ์— ๋งŽ์ด ์ƒ๊ฒผ๋‹ค๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํŠธ๋ž˜ํ”ฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

์ด ํŠธ๋ž˜ํ”ฝ๋“ค์€ ๊ฐ CBR, VBR, Bursty data Traffic์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, CBR์ด ๊ฐ€์žฅ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ˆ˜์›”ํ•˜๊ณ , Bursty data๊ฐ€ ๊ฐ€์žฅ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ Congestion์€ ๋ฌด์Šจ ์ƒํ™ฉ์„ ๋งํ•˜๋Š”๊ฑฐ๊ณ  ์–ด๋–ป๊ฒŒ ์ผ์–ด๋‚ ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ๋ผ์šฐํ„ฐ๋Š” ํ‰๊ท  300Mbps์˜ ์†๋„๋กœ ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด๋Ÿฐ ๋ผ์šฐํ„ฐ์— Constant bit rate traffic์ด ๋ฐœ์ƒํ•˜์—ฌ ์ผ์ •ํ•˜๊ฒŒ 200Mbps์˜ ์†๋„๋กœ ํŒจํ‚ท์„ ๋ผ์šฐํ„ฐ๋กœ ๋ณด๋‚ธ๋‹ค๋ฉด, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, Constant bit rate traffic์ด ์•„๋‹ˆ๋ผ Bursty data traffic์ด๋ผ๊ณ  ํ•ด๋ณด์ž. ์ด๋Ÿฐ ํŠธ๋ž˜ํ”ฝ์ด๋ผ๋ฉด, ์ฒ˜์Œ 1์ดˆ ๋™์•ˆ์€ 1Gbps์˜ ์†๋„๋กœ ํŒจํ‚ท์„ ๋ณด๋‚ด๋‹ค๊ฐ€ ๋‹ค์Œ 1~4์ดˆ๋™์•ˆ์€ ํŒจํ‚ท์„ ๋ณด๋‚ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.(0Mbps์˜ ์†๋„)

์ด๋ ‡๊ฒŒ ๋˜๋ฉด, ํ‰๊ท ์ ์œผ๋กœ๋Š” 250Mbps์˜ ์†๋„๋กœ ํŒจํ‚ท์„ ๋ณด๋‚ธ ๊ฒƒ์ด์ง€๋งŒ, ์ฒ˜์Œ 1์ดˆ ๋™์•ˆ์€ ํ•ด๋‹น ๋ผ์šฐํ„ฐ๊ฐ€ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ, ์ฆ‰ ํ•ด๋‹น ๋„คํŠธ์›Œํฌ๊ฐ€ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ๋ณด๋‹ค ๋” ๋งŽ์€ ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด, incoming buffer์— ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์˜ ์†๋„๊ฐ€ ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์˜ ์†๋„๋ณด๋‹ค ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— buffer์— ์Œ“์ด๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” Overflow๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ  ์ด ํ˜„์ƒ์„ Congestion์ด๋ผ๊ณ  ํ•œ๋‹ค.

๐Ÿ”ฅ Congestion ๐Ÿ”ฅ
Network์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ๋Ÿ‰๋ณด๋‹ค ๋” ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์˜จ ๊ฒฝ์šฐ, Buffer์—์„œ Overflow๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ

๋ฐ˜๋Œ€๋กœ, incoming buffer๊ฐ€ ์•„๋‹Œ outgoing buffer์—์„œ๋„ Congestion์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. CPU์—์„œ outgoing buffer๋กœ ํŒจํ‚ท์„ ๋„ฃ๋Š” ์†๋„๋ณด๋‹ค outgoing buffer์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์˜ ์†๋„๊ฐ€ ๋” ๋А๋ฆฌ๋‹ค๋ฉด outgoing buffer์— ํŒจํ‚ท์ด ์Œ“์—ฌ Congestion์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, Congestion์€ ๋ฒ„ํผ ๋“ฑ์—์„œ Waiting์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์ผ์–ด๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

Congestion Control (Open-loop VS Closed-loop)

์•ž์„  ์„ค๋ช…์—์„œ Congestion์„ Controlํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Congestion์ด ์ผ์–ด๋‚˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰๋Š” ๋ฐฉ๋ฒ•๊ณผ, ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด Congestion์„ ๋ฒ„๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ง‰๋Š” ๋ฐฉ๋ฒ•์ด Open-loop Congestion Control ํ˜น์€ Preventive๋ผ๊ณ  ํ•˜๊ณ , ๋ฒ„๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ Closed-loop Congestion Control, Reactive ๋˜๋Š” Removal์ด๋ผ๊ณ  ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ช‡ ๊ฐ€์ง€๋งŒ ์‚ดํŽด๋ณด์ž.

Backpressure method

3๋ฒˆ ์ž๋ฆฌ์—์„œ Buffer Overflow๊ฐ€ ์ผ์–ด๋‚ฌ๋‹ค๋ฉด, Congestion์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค.

์ด Congestion์ด ๋ฐœ์ƒํ•œ ์ด์œ ๋Š” input์ด ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋“ค์–ด์™”๊ธฐ ๋•Œ๋ฌธ์ด๋ฏ€๋กœ, Congestion์ด ๋ฐœ์ƒํ•œ ๋ผ์šฐํ„ฐ๋Š” congestion์ด ์ผ์–ด๋‚œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํŒจํ‚ท์„ ์ „์†กํ•œ ๋ฐ”๋กœ ์ „ ๋‹จ๊ณ„์˜ ๋ผ์šฐํ„ฐ์—๊ฒŒ ํŠธ๋ž˜ํ”ฝ์„ ๊ทธ๋งŒ๋ณด๋‚ด๋ผ๊ณ  ์ „๋‹ฌํ•œ๋‹ค.

์ด Backpressure ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์€ ๋ผ์šฐํ„ฐ๋Š” Congestion์ด ์–ด๋”˜๊ฐ€์—์„œ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์ฑ„๊ณ  ๋‹ค์‹œ ์ž์‹ ์˜ Source์—๊ฒŒ ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ๋Š” Source host์—๊ฒŒ ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋งˆ์น˜ Datalink layer์˜ Flow Control์—์„œ ๋ดค๋˜ busy ์ˆ˜์‹  ์ด๋ฒคํŠธ์™€ ์œ ์‚ฌํ•˜๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, ์ด ๋ฐฉ๋ฒ•์€ ์‹ค์ œ๋กœ IP์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. IP๋Š” Connectionless ํ•œ ์„œ๋น„์Šค๋งŒ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ IP์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์“ด๋‹ค.

Choke packet

Congestion์ด ์ผ์–ด๋‚œ ๋ผ์šฐํ„ฐ๊ฐ€ ํŒจํ‚ท์„ ๋ฒ„๋ฆฌ๊ณ , ํŒจํ‚ท์„ ๋ณด๋‚ธ Source์—๊ฒŒ ๋ฐ”๋กœ ๋„ˆ ๋•Œ๋ฌธ์— Loss๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋‹ˆ ๊ทธ๋งŒ ๋ณด๋‚ด๋ผ! ๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ”๋กœ ICMP Message์˜ Source quench์ด๋‹ค. ์ด Source quench ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์€ Source๋Š” ๋ณด๋‚ด๋Š” ํŠธ๋ž˜ํ”ฝ์˜ ์–‘์„ ์ค„์—ฌ Congestion์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
์ด๋•Œ, IPv6์—์„œ ์‚ฌ์šฉํ•˜๋Š” ICMPv6์—์„œ๋Š” Source quench๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์ด IPv6์—์„œ๋Š” Transport layer์—์„œ Destination์ด Source์—๊ฒŒ Congestion์ด ๋‚ฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

Loss์™€ Congestion์˜ ์ฐจ์ด
Congestion์€ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ด ๊ณผ๋„ํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ž์›์ด ํฌํ™”๋˜๋Š” ํ˜„์ƒ์ด๋‹ค. ์ด Congestion์˜ ๊ฒฐ๊ณผ๋กœ Buffer์—์„œ Overflow๊ฐ€ ์ผ์–ด๋‚˜ Loss๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ๋Š” Loss๋Š” ๋‹จ์ˆœํžˆ ์ธ์ ‘ ์žฅ์น˜ ๊ฐ„์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๊ณ , Congestion์€ ํ•œ ๊ณณ์—์„œ ์ผ์–ด๋‚˜๋ฉด ์ด๋กœ ์ธํ•ด ๋‹ค๋ฅธ ๊ณณ๋“ค์—๋„ ๋‹ค ํผ์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด Congestion์ด๋‹ค. Loss๊ฐ€ ์ผ์–ด๋‚œ๋‹ค๊ณ  ์ธ์ ‘ํ•œ ๋„คํŠธ์›Œํฌ์— Loss๊ฐ€ ์ผ์–ด๋‚˜์ง„ ์•Š์ง€๋งŒ(๋‹จ์ˆœ ์ „ํŒŒ ๋ฐฉํ•ด ๋“ฑ์˜ ์ด์œ ๋ฉด ์—ฌ๊ธฐ๋งŒ ์—†์–ด์ง„๊ฑด๋ฐ), Congestion์ด ์ผ์–ด๋‚˜๋ฉด ์ธ์ ‘ํ•œ ๋„คํŠธ์›Œํฌ์—๋„ Congestion์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค(๋„คํŠธ์›Œํฌ์˜ ์šฉ๋Ÿ‰์„ ๋„˜์–ด์„  ํŠธ๋ž˜ํ”ฝ์ด๋ฏ€๋กœ ์ „์ฒด์ ์œผ๋กœ ์˜ํ–ฅ์ด ๊ฐ).

QoS

๋‹ค์Œ์€ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์˜ ํŠน์„ฑ๋“ค์„ ๋‚˜์—ดํ•œ ๊ฒƒ์ด๋‹ค.

  • Reliability : ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์˜จ์ „ํžˆ ๋ชจ๋‘ ์ „์†ก๋˜์–ด์•ผ ํ•จ.
    - ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์ด ์ด๋Ÿฐ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • Delay : Sender๊ฐ€ ๋ณด๋‚ธ ๊ฒƒ์„ Receiver๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋„ˆ๋ฌด ๋Šฆ์ง€ ์•Š์€ ์‹œ๊ฐ„์— ์ˆ˜์‹ ํ•ด์•ผ ํ•œ๋‹ค.
  • Jitter : ํŒจํ‚ท๊ณผ ํŒจํ‚ท ๊ฐ„์˜ ๊ฐ„๊ฒฉ์ด ๋„ˆ๋ฌด ์ผ์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์•ˆ๋œ๋‹ค.
  • Bandwidth : ์ดˆ๋‹น ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์–ด๋А ์ •๋„ ์ด์ƒ์„ ๋ณด์žฅํ–ˆ์œผ๋ฉด ํ•œ๋‹ค.

์ด๋Ÿฐ ํŠน์ง•๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ QoS๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

Scheduling

์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ผ์šฐํ„ฐ์—์„œ ์ƒ๊ฐํ–ˆ๋˜ Buffer๊ฐ€ Queue์˜ ์—ญํ• ์„ ํ•˜์—ฌ FIFOํ•˜๊ฒŒ ํŒจํ‚ท์ด ์ฒ˜๋ฆฌ๋œ๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋Ÿฐ ๋ฐฉ์‹์€ ํŠธ๋ž˜ํ”ฝ์„ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋ž˜ํ”ฝ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋น„๋””์˜ค ํŠธ๋ž˜ํ”ฝ๊ณผ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์™”์„ ๋•Œ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ์ด ๋จผ์ € ๋งŽ์ด ๋“ค์–ด์™€์žˆ๋‹ค๋ฉด, ๋น„๋””์˜ค ํŠธ๋ž˜ํ”ฝ์€ Delay์™€ Jitter์— ์˜ˆ๋ฏผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ‚ท์ด ๋นจ๋ฆฌ ์ „์†ก๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ๋“ค๋กœ ์ธํ•ด ์ „์†ก๋˜๋Š” ์‹œ๊ฐ„์ด ๋Šฆ์–ด์ง€๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค.

Buffer๋ฅผ 2๊ฐœ ๋‘์–ด ํ•ด๊ฒฐํ•œ๋‹ค. ํ•œ์ชฝ์€ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋“ค์ด ๋“ค์–ด์˜ค๋Š” queue๋กœ ์„ค์ •ํ•˜๊ณ , ๋‹ค๋ฅธ ์ชฝ์€ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋“ค์ด ๋“ค์–ด์˜ค๋Š” queue๋กœ ์„ค์ •ํ•˜์—ฌ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ queue์— ์žˆ๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๋จผ์ € ์ „์†ก๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์„ Priority queueing์ด๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, ์ด ๋ฐฉ์‹๋„ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. High priority queue๊ฐ€ ๊ณ„์† ์ฑ„์›Œ์ ธ์žˆ๋‹ค๋ฉด Low priority queue์— ๋“ค์–ด๊ฐ„ ํŠธ๋ž˜ํ”ฝ์ด ๋‚˜๊ฐˆ ์ˆ˜๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ๋Šฆ๊ฒŒ ๋น ์ ธ๋‚˜๊ฐ€๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ ๋‹จ์ ์„ ๊ฐœ์„ ํ•œ ๋ฐฉ์‹์ด Round Robin ๋ฐฉ์‹์œผ๋กœ Schedulingํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ queue์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์˜ queue์—์„œ ํŒจํ‚ท์ด ๋น ์ ธ๋‚˜๊ฐ€์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ RR์„ ์กฐ๊ธˆ ๋ณ€ํ˜•ํ•ด์„œ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๊ฐ€์ค‘์น˜๋ฅผ ๋‘์–ด ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•˜๋ฉด Weighted Fair Queueing์ด๋ผ๊ณ  ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์„ ์ˆ˜๋ก ๊ฐ€์ค‘์น˜๋ฅผ ๋†’๊ฒŒ ์„ค์ •ํ•˜์—ฌ ๊ฐ€์ค‘์น˜๋งŒํผ ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์˜ ๊ทธ๋ฆผ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ๋“ค์–ด์˜จ ํŒจํ‚ท์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•˜๋Š”๊ฑธ๊นŒ?

์ •๋‹ต์€ Header์˜ Service Type์„ ๋ณด๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ๋Š” Service Type์˜ Diffserv๋ฅผ ๋ณด๊ณ  ๊ฒฐ์ •ํ•œ๋‹ค. ์ด ํ•„๋“œ๋Š” 6bit๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด 2^6๊ฐœ ๋งŒํผ์˜ ํŠธ๋ž˜ํ”ฝ ํƒ€์ž…์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, 2^6๊ฐœ๋งŒํผ์˜ ์šฐ์„ ์ˆœ์œ„ queue(incoming buffer)๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

_์ถ”๊ฐ€๋กœ Service Type์˜ ECN์€ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก ์ƒํ™ฉ์„ ์•Œ๋ ค์ฃผ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๋งŒ์•ฝ ๋„คํŠธ์›Œํฌ์— ํ˜ผ์žก์ด ๋ฐœ์ƒํ•˜๋ฉด, ๋ผ์šฐํ„ฐ๊ฐ€ ํŒจํ‚ท์˜ ECN ๋น„ํŠธ๋ฅผ ์„ค์ •ํ•œ๋‹ค. ์ด ํŒจํ‚ท์„ ๋ฐ›์€ ์ˆ˜์‹ ์ž๋Š” ์†ก์‹ ์ž์—๊ฒŒ ํ˜ผ์žก ์ƒํ™ฉ์„ ์•Œ๋ ค์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์†ก์‹ ์ž๋Š” ์ „์†ก ์†๋„๋ฅผ ์ค„์—ฌ์„œ ๋„คํŠธ์›Œํฌ ํ˜ผ์žก์„ ํ•ด์†Œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค.

Traffic Shaping

Traffic Shaping๋„ ์—ญ์‹œ Congestion์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ด์ค€๋‹ค.
์•ž์„œ Congestion์€ ํŠธ๋ž˜ํ”ฝ์ด Burstyํ•˜๊ฒŒ ๋“ค์–ด์˜ฌ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด Traffic shaping์€ Burstyํ•˜๊ฒŒ ๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ Constantํ•˜๊ฒŒ ๋ฐ”๊ฟ”์ค„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ๋„คํŠธ์›Œํฌ๊ฐ€ 300Mbps์˜ ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๋Š”๋ฐ, ์—ฌ๊ธฐ์— 1Gbps์˜ ํŠธ๋ž˜ํ”ฝ์„ ๋„ฃ์œผ๋ฉด Congestion์ด ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฅผ 4์ดˆ๋™์•ˆ 250Mbps๋กœ ๋ณด๋‚ด๋„๋ก ๋งŒ๋“ค์–ด ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, Source๊ฐ€ ๋„คํŠธ์›Œํฌ์— ์ „์†กํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์˜ ์–‘์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ Traffic Shaping์ด๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด, ํœด๋Œ€ํฐ ์š”๊ธˆ์ œ์—์„œ ์ง€์ •๋œ ์šฉ๋Ÿ‰์„ ๋‹ค ์“ฐ๋ฉด ์†๋„๊ฐ€ ๋А๋ ค์ง€๋Š” ๋ฌด์ œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐ”๋กœ ์ด ๊ฒฝ์šฐ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ด Traffic Shaping์ด๋ผ๋Š” ๋„คํŠธ์›Œํฌ์—์„œ ๋„คํŠธ์›Œํฌ๋กœ ์ „์†ก๋˜๋Š” ํŠธ๋ž˜ํ”ฝ ์–‘์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Leaky Bucket์ด๋ž‘ Token Bucket์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

Leaky Bucket

์ด๋ ‡๊ฒŒ Leaky Bucket์€ ์ผ์ •ํ•˜์ง€ ์•Š์€ flow์˜ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์™€๋„ ์ผ์ •ํ•œ ์‹œ๊ฐ„๊ณผ ์–‘์œผ๋กœ ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฆ‰, Burstyํ•œ ํŠธ๋ž˜ํ”ฝ์ด Serialํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
์ด ๋ฐฉ๋ฒ•์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

//Leaky Bucket
if (packet arrive){
	if (buffer is full) 
    	discard(packet);
    else 
    	stored(packet);
    
    run(timer)
    
    while(buffer is not empty){
    	if (timeout){
    		if (buffer is not empty) 
        		send(packet);
            	rerun(timer);		//๋‹ค์‹œ ํƒ€์ด๋จธ๋ฅผ ๊ตฌ๋™์‹œํ‚ค๊ณ  ๋‹ค์‹œ timeout ๋˜๋ฉด ์‹œํ–‰ 
        	else
        		reset(timer);
    	}
    }
}

Token Bucket

Token Bucket ๋ฐฉ์‹์€ ํ† ํฐ์ด ์žˆ์–ด์•ผ๋งŒ Buffer์—์„œ ํŒจํ‚ท์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ํŒจํ‚ท์ด ๋“ค์–ด์˜ค๋ฉด Buffer์— ํŒจํ‚ท์„ ์ €์žฅํ•˜๊ณ , ํ† ํฐ์ด ์žˆ์œผ๋ฉด ํŒจํ‚ท์„ ํ•˜๋‚˜ ๋ณด๋‚ด๋ฉด์„œ ํ† ํฐ์„ ์—†์•ค๋‹ค. ์ด ํ† ํฐ์€ ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์ƒ์„ฑ๋œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ํ† ํฐ์ด 3๊ฐœ ์žˆ๋Š” ์ƒํƒœ์—์„œ ํŒจํ‚ท๋“ค์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด, ํ•œ๋ฒˆ์— ํŒจํ‚ท 3๊ฐœ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ† ํฐ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ ์‹œ์ ์—์„œ๋Š” ํ† ํฐ์ด ๋“ค์–ด์˜ค๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋“ค์–ด์˜ค์ž๋งˆ์ž ๋ฐ”๋กœ ํ•˜๋‚˜์”ฉ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ฒ˜์Œ์—๋Š” ์™€๋ฅด๋ฅด ๋ณด๋‚ด๋‹ค๊ฐ€ ๊ทธ ๋’ค๋กœ๋Š” ์ผ์ •ํ•œ ์–‘๊ณผ ์†๋„๋กœ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ด Token Bucket ๋ฐฉ์‹์ด๋‹ค. ์ด๋•Œ, Bucket์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ† ํฐ์˜ ์ˆ˜๋Š” ์ •ํ•ด์ ธ์žˆ๋‹ค.

์ด Token Bucket ๋ฐฉ์‹์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

//Token Bucket์œผ๋กœ ํŒจํ‚ท ์ฒ˜๋ฆฌ 
if(packet arrive){
	if (buffer is full) 
    	discard(packet);
    else
    	stored(packet);
    
    while(token && (buffer is not empty)){
    	send(packet);
        token--;
    }
}
===================================================
//Timer๋กœ ํ† ํฐ ์ƒ์„ฑ
void generateToken(){
if (token.size() < bucketSize){
	token++;
}

while (buffer is not empty && token.size() > 0){
	send(packet);
    token--;
}

run(timer.generateToken());
}

๊ฐ€๋ณ๊ฒŒ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋กœ ๋ด์ฃผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋™์ž‘ ๋ฐฉ์‹๋“ค์€ Token Bucket์„ ๋”ฐ๋ฅธ๋‹ค.

Traffic Shapping Example

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์„ ํ†ตํ•ด ์ดํ•ดํ•ด๋ณด์ž.

  • ์ปดํ“จํ„ฐ๋Š” 25Mbytes/sec์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณต(200Mbps)ํ•œ๋‹ค.
  • ๋ผ์šฐํ„ฐ๋Š” ์งง์€ ์ธํ„ฐ๋ฒŒ๋™์•ˆ ์˜ค์ง 25Mbytes/sec๋ฅผ ๋‹ค๋ฃฌ๋‹ค.(200Mbps)
  • ์˜ค๋žœ ์ธํ„ฐ๋ฒŒ ๋™์•ˆ์€ ์ตœ๊ณ ์˜ rate๋ฅผ ์ œ๊ณตํ•˜๋Š” ์†๋„๋Š” 2Mbytes/sec๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ์ผํ•œ๋‹ค.(16Mbps)
  • Bucket์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ํŒจํ‚ท์˜ ์†๋„๋Š” 25MB/sec์˜ ์†๋„๋กœ 40msec ๋™์•ˆ ๋“ค์–ด์˜จ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” sec์™€ msec๊ฐ€ ํ˜ผ์šฉ๋˜์–ด ์‚ฌ์šฉ๋˜๋ฏ€๋กœ, msec ๋‹จ์œ„๋กœ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค.

์ดˆ๊ธฐ์— ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Burstyํ•˜๊ฒŒ ๋“ค์–ด์˜ค์ง€๋งŒ, Traffic Shaping์„ ์‚ฌ์šฉํ•ด๋ณด์ž.

๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. Leaky Bucket์€ ์†๋„๊ฐ€ ์ผ์ •ํ•œ ๋ฐ˜๋ฉด, Token Bucket์€ ์ฒ˜์Œ์—๋Š” ์ตœ๊ณ  ์†๋„๋กœ ๋น ์ ธ๋‚˜๊ฐ€๋‹ค๊ฐ€ ๋’ค๋กœ๋Š” ๊ฐ์†Œ๋œ ์†๋„๋กœ ์ผ์ •ํ•˜๊ฒŒ ๊ฐ„๋‹ค. ์ž์„ธํ•˜๊ฒŒ ๊ณ„์‚ฐํ•ด๋ณด์ž.

Leaky Bucket ๋ฐฉ์‹์€ ์–ด์ฐจํ”ผ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ์†๋„๊ฐ€ ์ผ์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ด ์†๋„๊ฐ€ ์˜ˆ์‹œ์—์„œ ๊ทœ์ •ํ•œ 2MBps๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, 1msec ๋‹น ๋น ์ ธ๋‚˜๊ฐ€๋Š” ํŒจํ‚ท์˜ ์–‘์€ 2KByte๊ฐ€ ๋œ๋‹ค. ์ด ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์€ 1msec ๋‹น 25KByte์˜ ์–‘์ด 40msec ๋™์•ˆ ๋“ค์–ด์˜ค๋ฏ€๋กœ 1MByte์ด๋‹ค. ์ด 1MByte๋ฅผ 2KByte/msec์˜ ์†๋„๋กœ ์ „์†กํ•˜๋ฉด ์ด 500msec์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

Token Bucket ๋ฐฉ์‹์€ ์ข€ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ๋‹ค. ์—ญ์‹œ ์ด ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 25KByte/msec์˜ ์†๋„๋กœ Buffer๋กœ ํŒจํ‚ท์ด ๋“ค์–ด์˜จ๋‹ค. ์ด๋•Œ, ํ† ํฐ์„ ๋‹ด๊ณ  ์žˆ๋Š” Bucket์˜ ํฌ๊ธฐ๊ฐ€ 250KB์ด๊ณ , ํ† ํฐ์ด ๋“ค์–ด์˜ค๋Š” ์†๋„๊ฐ€ 2MBps, ์ฆ‰ 2KByte/msec์˜ ์†๋„๋กœ ํ† ํฐ์ด ๋“ค์–ด์˜จ๋‹ค.
์ด๋•Œ, ๋ฒ„์ผ“์€ ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ํ† ํฐ์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ๊ธฐ์กด ๋ฒ„์ผ“์—์„œ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•  ํ† ํฐ์˜ ์–‘์€ 1msec ๋‹น 25KByte - 2KByte = 23KByte๊ฐ€ ๋œ๋‹ค. ๋ฒ„์ผ“์˜ ์ด ์šฉ๋Ÿ‰์€ 250KB์ด๊ธฐ ๋•Œ๋ฌธ์—, 250KB/23KB = 11s๋ผ๋Š” ์‹œ๊ฐ„ ๋™์•ˆ์—๋Š” ๋ฒ„์ผ“์— ํ† ํฐ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ๋น ๋ฅธ ์†๋„์ธ 25MBps, ์ฆ‰ 25KByte/msec๋กœ ํŒจํ‚ท์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. 11์ดˆ ์ดํ›„๋ถ€ํ„ฐ๋Š” ๋ฒ„์ผ“์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ† ํฐ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐ์ด ๋‹ค์‹œ ๋“ค์–ด์˜ค๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋“ค์–ด์˜ค์ž๋งˆ์ž ๋ฐ”๋กœ ํ† ํฐ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ 2MB/sec์˜ ์†๋„๋กœ ํ† ํฐ์ด ์ถฉ์ „๋˜๊ธฐ ๋•Œ๋ฌธ์— 11์ดˆ ์ดํ›„์˜ ํŒจํ‚ท ์ „์†ก ์†๋„๋Š” 2MB/sec๋กœ ๊ณ ์ •๋˜๋Š” ๊ฒƒ์ด๋‹ค.

Resource Reservation

Resoure Reservation์€ Source๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ, ์ด ๋ฐ์ดํ„ฐ๋Š” Bandwidth๊ฐ€ ์ด์ •๋„์ด๋‹ˆ๊นŒ ๋ชจ๋“  ๋ผ์šฐํ„ฐ๋“ค์—๊ฒŒ ์ด ์ •๋„์˜ Bandwidth๋ฅผ ๋ณด์žฅํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋น„๋‹จ, Bandwidth ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Resource, Velocity, Bandwidth ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ํšŒ์‚ฌ๋“ค์ด ISP์—๊ฒŒ ์–ผ๋งˆ๋งŒํผ์˜ ๋ˆ์„ ์ค„ํ…Œ๋‹ˆ ์ „์ฒด ๋ผ์ธ ์ค‘์—์„œ 10MBps์˜ ์†๋„๋ฅผ ๋‚˜์—๊ฒŒ ๋ณด์žฅํ•ด๋‹ฌ๋ผ! ๋ผ๊ณ  ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด Resource Reservation์ด ๋  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

Admission control

์ด๋ ‡๊ฒŒ ํšŒ์‚ฌ๋“ค์ด ISP์—๊ฒŒ Resource Reservation์„ ์š”์ฒญํ–ˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์˜ˆ๋ฅผ ๋“ค์–ด ์ „์ฒด 1GBps์˜ ์†๋„๋ฅผ ๊ฐ€์ง€๋Š” ์ž์›์„ ํšŒ์‚ฌ 5๊ฐœ๊ฐ€ 300MBps์”ฉ Resource Reservation์„ ์š”์ฒญํ–ˆ๋‹ค๋ฉด, ๋จผ์ € ์˜ˆ์•ฝํ•œ 3๊ฐœ์˜ ํšŒ์‚ฌ๋“ค์—๊ฒŒ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ดํ›„ ํšŒ์‚ฌ๋“ค์—๊ฒŒ ์ž์› ์˜ˆ์•ฝ์„ ์•ฝ์†ํ•œ๋‹ค๋ฉด ์ „์ฒด ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ฒŒ ๋˜์–ด ๋ณด์žฅํ•˜๊ฒ ๋‹ค๊ณ  ํ•œ ์„ฑ๋Šฅ์„ ์ง€ํ‚ค์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค.
์ด๋ ‡๊ฒŒ Resource Reservation์„ ์š”์ฒญํ–ˆ์„ ๋•Œ ์ด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ง€ ์—†๋Š” ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด Admission Control์ด๋‹ค.

์—ฌ๊ธฐ์„œ Resource Reservation๊ณผ Admission Control์€ ๊ฐœ๋…๋งŒ ์•Œ์•„๋„ ์ถฉ๋ถ„ํ•˜๋‹ค.

profile
๋‹คํ•จ๊ป˜ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ธ์ƒ์„ ๊ฟˆ๊พธ๋Š” MLOps ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค๐Ÿ˜ ์ž‘์„ฑ ๋‹น์‹œ ์ œ ์ƒ๊ฐ์˜ ํ๋ฆ„์„ ๋…์ž ๋ชจ๋‘๊ฐ€ ๊ณต๊ฐํ•˜๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์กฐ์–ธ์ด๋‚˜ ์งˆ๋ฌธ์€ ์–ธ์ œ๋“  ํ™˜์˜์ž…๋‹ˆ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€