๐ Congestion ์ด๋?
ํผ์ก์ด๋ผ๋ ๋ป์ ๊ฐ์ง๋ฉฐ, ๋คํธ์ํฌ ์์์ ํจํท๋ค์ด ๋๋ฌด ๋ง์ ํผ์ก์ด ๋ฐ์ํ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.
์ฌ๊ธฐ์๋ Data traffic์ ํฌ์ปค์ค๋ฅผ ๋๊ณ ์ง์ผ๋ด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด, Router ๋ด๋ถ์ CPU์์ ํจํท์ ์ฒ๋ฆฌํ๋ ์๋๋ณด๋ค Router์ incoming buffer๋ก ํจํท์ด ๋ค์ด์ค๋ ์๋๊ฐ ๋ ๋น ๋ฅด๋ค๋ฉด incoming buffer์ ํจํท์ด ์์ด๊ฒ ๋ ๊ฒ์ด๋ค. ์ด๋ฅผ Congestion์ด๋ผ๊ณ ํ๋ค. ๋ค์์ ์์ธํ ๋ค๋ฃฐ ์์ ์ด๋ค.
์ด๋ฐ Congestion์ Controlํ๊ธฐ ์ํด์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค. ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ Traffic Congestion์ด ์ผ์ด๋ ์ํฉ์ ํผํ๋ ๊ฒ์ด๊ณ , ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ Congestion์ด ์ผ์ด๋ฌ์ ๋ ์ด๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋จผ์ Traffic์ ์ข ๋ฅ์ ๋ํด ์์๋ด์ผ ํ๋ค.
Traffic์ ํ์ผ๊ณผ ๊ฐ์ ์ผ๋ฐ ๋ฐ์ดํฐ ํธ๋ํฝ๊ณผ ๋น๋์ค ๊ฐ์ ์ค์๊ฐ์ฑ ํธ๋ํฝ์ด ์กด์ฌํ๋ค. ์ค์๊ฐ์ฑ ํธ๋ํฝ๋ค์ Delay์ Jitter๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํด์ผ ํ๋ค. ํนํ, ํจํท๊ฐ์ ๊ฐ๊ฒฉ์ด ์ผ์ ํ์ง ๋ชปํด์ ๋ฐ์ํ๋ Jitter์ ๊ฒฝ์ฐ๋ ๋๋ฌด ํจํท์ด ์ ๋ค์ด์ค๋ฉด ๋๊น์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Client๋ ๋ฒํผ๋ง์ ์ค์ ํจํท์ ๋ฐ์๋ ์กฐ๊ธ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์ฌ์ํ๋ ๋ฑ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
๋ฐ๋ฉด, ์ผ๋ฐ ๋ฐ์ดํฐ ํธ๋ํฝ์ ๋์ฐฉํ๋ ์๊ฐ์ ์กฐ๊ธ ๋ฆ์ด๋ ๊ด์ฐฎ์ง๋ง, ๋ฐ์ดํฐ์ ์์ค์ด ์ผ์ด๋์๋ ์๋๋ค. ์๋ฅผ ๋ค์ด, ๋น๋์ค์ ๊ฒฝ์ฐ์๋ ํ๋ฉด์ด ์กฐ๊ธ ๊นจ์ ธ๋ ๊ด์ฐฎ์ง๋ง, 1์ต์์ ์ก๊ธํ๋ ์ผ๋ฐ ๋ฐ์ดํฐ ํธ๋ํฝ์์ 0์ด ํ๋ ๋น ์ง๋ฉด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ณง ์ผ๋ฐ ๋ฐ์ดํฐ ํธ๋ํฝ์ ์๊ฐ์ ํฌ๊ฒ ๊ตฌ์ ๋ฐ์ง๋ ์์ง๋ง Loss๊ฐ ๋ฐ์ํด์๋ ์๋๋ค๋ ์๋ฏธ์ด๋ค. ๋ฐ๋ฉด, ๋น๋์ค์ ๊ฒฝ์ฐ์๋ ์ฝ๊ฐ์ ์์ค์ด ์๋๋ผ๋ ๋น ๋ฅธ ์ ์ก ์๋๋ฅผ ๋ณด์ฅ๋ฐ๋ ๊ฒ์ด ๋ ์ค์ํ๋ค. ์ด๋ ๊ฒ ๋ฐ์ดํฐ ํธ๋ํฝ๋ค์ ์๋ก ๋ค๋ฅธ ํน์ฑ๋ค์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊ธฐ ์ํ๋ ์๋น์ค์ ํ๋ฆฌํฐ๊ฐ ๋ค๋ฅด๋ค. ์ด๋ ๊ฒ ํธ๋ํฝ์ ์์ฑํ๋ application ๋จ์ ๋์์ ๋ง๊ฒ ๋คํธ์ํฌ ๋๋ฐ์ด์ค๊ฐ ํด๋น ์๋น์ค์ ํ๋ฆฌํฐ๋ฅผ ๋ง์กฑ์ํค๊ธฐ ์ํด ํ๋ ๋์์ QoS๋ผ๊ณ ํ๋ค.
๋ค์์ ๋ ๋ค๋ค๋ณด๊ธฐ๋ก ํ๊ณ ์ฐ์ ๋์ด๊ฐ๋ณด์.
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ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ Congestion์ด ์ผ์ด๋์ง ๋ชปํ๊ฒ ๋ง๋ ๋ฐฉ๋ฒ๊ณผ, ๋ฐ์ํ์ ๋ ์ด Congestion์ ๋ฒ๋ฆฌ๋ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ํ๋ค. ์ฌ๊ธฐ์ ๋ง๋ ๋ฐฉ๋ฒ์ด Open-loop Congestion Control ํน์ Preventive๋ผ๊ณ ํ๊ณ , ๋ฒ๋ฆฌ๋ ๋ฐฉ๋ฒ์ Closed-loop Congestion Control, Reactive ๋๋ Removal์ด๋ผ๊ณ ํ๋ค.

์ฌ๊ธฐ์ ๋ช ๊ฐ์ง๋ง ์ดํด๋ณด์.

3๋ฒ ์๋ฆฌ์์ Buffer Overflow๊ฐ ์ผ์ด๋ฌ๋ค๋ฉด, Congestion์ด ๋ฐ์ํ ๊ฒ์ด๋ค.
์ด Congestion์ด ๋ฐ์ํ ์ด์ ๋ input์ด ๋๋ฌด ๋นจ๋ฆฌ ๋ค์ด์๊ธฐ ๋๋ฌธ์ด๋ฏ๋ก, Congestion์ด ๋ฐ์ํ ๋ผ์ฐํฐ๋ congestion์ด ์ผ์ด๋ ์ธํฐํ์ด์ค๋ก ํจํท์ ์ ์กํ ๋ฐ๋ก ์ ๋จ๊ณ์ ๋ผ์ฐํฐ์๊ฒ ํธ๋ํฝ์ ๊ทธ๋ง๋ณด๋ด๋ผ๊ณ ์ ๋ฌํ๋ค.
์ด Backpressure ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ผ์ฐํฐ๋ Congestion์ด ์ด๋๊ฐ์์ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์์์ฑ๊ณ ๋ค์ ์์ ์ Source์๊ฒ ์ด ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค. ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ์ต์ข ์ ์ผ๋ก๋ Source host์๊ฒ ์ด ๋ฉ์์ง๊ฐ ์ ๋ฌ๋๋ ๋ฐฉ์์ด๋ค. ๋ง์น Datalink layer์ Flow Control์์ ๋ดค๋ busy ์์ ์ด๋ฒคํธ์ ์ ์ฌํ๋ค.
๊ทธ๋ฌ๋, ์ด ๋ฐฉ๋ฒ์ ์ค์ ๋ก IP์์๋ ์ฌ์ฉํ ์ ์๋ค. IP๋ Connectionless ํ ์๋น์ค๋ง์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๋ฉ์ปค๋์ฆ์ด ์กด์ฌํ์ง ์๋๋ค. ๊ทธ๋์ IP์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ด๋ค.

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๋ฅผ ํฅ์์ํค๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ ์ฌ์ฉํด์ผ ํ๋ค.

์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ๋ผ์ฐํฐ์์ ์๊ฐํ๋ 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๋ ์ญ์ Congestion์ด ๋ฐ์ํ์ง ์๋๋ก ํด์ค๋ค.
์์ Congestion์ ํธ๋ํฝ์ด Burstyํ๊ฒ ๋ค์ด์ฌ ๋ ๋ฐ์ํ ์ ์๋ค๊ณ ํ๋ค. ์ด Traffic shaping์ Burstyํ๊ฒ ๋ค์ด์จ ํธ๋ํฝ์ Constantํ๊ฒ ๋ฐ๊ฟ์ค ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ค ๋คํธ์ํฌ๊ฐ 300Mbps์ ์ฑ๋ฅ์ ๊ฐ์ง๋๋ฐ, ์ฌ๊ธฐ์ 1Gbps์ ํธ๋ํฝ์ ๋ฃ์ผ๋ฉด Congestion์ด ๋ฐ์ํ๋ค. ๊ทธ๋์ ์ด๋ฅผ 4์ด๋์ 250Mbps๋ก ๋ณด๋ด๋๋ก ๋ง๋ค์ด ๋ณด๋ด๋ ๊ฒ์ด๋ค. ์ฆ, Source๊ฐ ๋คํธ์ํฌ์ ์ ์กํ๋ ํธ๋ํฝ์ ์์ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ Traffic Shaping์ด๋ผ๊ณ ํ๋ค.
์๋ฅผ ๋ค๋ฉด, ํด๋ํฐ ์๊ธ์ ์์ ์ง์ ๋ ์ฉ๋์ ๋ค ์ฐ๋ฉด ์๋๊ฐ ๋๋ ค์ง๋ ๋ฌด์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ๋ก ์ด ๊ฒฝ์ฐ์ด๋ค.
๊ทธ๋์ ์ด Traffic Shaping์ด๋ผ๋ ๋คํธ์ํฌ์์ ๋คํธ์ํฌ๋ก ์ ์ก๋๋ ํธ๋ํฝ ์์ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ Leaky Bucket์ด๋ Token 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 ๋ฐฉ์์ ํ ํฐ์ด ์์ด์ผ๋ง 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์ ๋ฐ๋ฅธ๋ค.
๋ค์๊ณผ ๊ฐ์ ์ํฉ์ ํตํด ์ดํดํด๋ณด์.
์ฌ๊ธฐ์๋ 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๋ก ๊ณ ์ ๋๋ ๊ฒ์ด๋ค.
Resoure Reservation์ Source๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋, ์ด ๋ฐ์ดํฐ๋ Bandwidth๊ฐ ์ด์ ๋์ด๋๊น ๋ชจ๋ ๋ผ์ฐํฐ๋ค์๊ฒ ์ด ์ ๋์ Bandwidth๋ฅผ ๋ณด์ฅํด์ค์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ๋น๋จ, Bandwidth ๋ฟ๋ง ์๋๋ผ Resource, Velocity, Bandwidth ๋ฑ์ ํฌํจํ๋ค.
์๋ฅผ ๋ค์ด, ํ์ฌ๋ค์ด ISP์๊ฒ ์ผ๋ง๋งํผ์ ๋์ ์คํ
๋ ์ ์ฒด ๋ผ์ธ ์ค์์ 10MBps์ ์๋๋ฅผ ๋์๊ฒ ๋ณด์ฅํด๋ฌ๋ผ! ๋ผ๊ณ ์๊ตฌํ๋ ๊ฒ์ด Resource Reservation์ด ๋ ์ ์๊ฒ ๋ค.
์ด๋ ๊ฒ ํ์ฌ๋ค์ด ISP์๊ฒ Resource Reservation์ ์์ฒญํ๋ค๊ณ ํด๋ณด์. ์๋ฅผ ๋ค์ด ์ ์ฒด 1GBps์ ์๋๋ฅผ ๊ฐ์ง๋ ์์์ ํ์ฌ 5๊ฐ๊ฐ 300MBps์ฉ Resource Reservation์ ์์ฒญํ๋ค๋ฉด, ๋จผ์ ์์ฝํ 3๊ฐ์ ํ์ฌ๋ค์๊ฒ๋ ๊ฐ๋ฅํ์ง๋ง ์ดํ ํ์ฌ๋ค์๊ฒ ์์ ์์ฝ์ ์ฝ์ํ๋ค๋ฉด ์ ์ฒด ์ฑ๋ฅ์ด ๋จ์ด์ง๊ฒ ๋์ด ๋ณด์ฅํ๊ฒ ๋ค๊ณ ํ ์ฑ๋ฅ์ ์งํค์ง ๋ชปํ๊ฒ ๋๋ค.
์ด๋ ๊ฒ Resource Reservation์ ์์ฒญํ์ ๋ ์ด๋ฅผ ๋ฐ์ ์ ์๋ ์ง ์๋ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ด Admission Control์ด๋ค.
์ฌ๊ธฐ์ Resource Reservation๊ณผ Admission Control์ ๊ฐ๋ ๋ง ์์๋ ์ถฉ๋ถํ๋ค.