WebRTC : TURN (Traversal Using Relays around NAT)
TURN์ ๊ธฐ๋ณธ ๊ฐ์
TURN (Traversal Using Relays around NAT)์ WebRTC (Web Real-Time Communication) ํ๋กํ ์ฝ ์คํ์์ ์ค์ํ ์์ ์ค ํ๋๋ก, NAT (Network Address Translation) ๋ฐ ๋ฐฉํ๋ฒฝ์ ์ฐํํ์ฌ ์๋ฐฉํฅ P2P (Peer-to-Peer) ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ด๋ค. TURN์ ํนํ STUN (Session Traversal Utilities for NAT)๊ณผ ํจ๊ป ๋์ํ์ง๋ง, STUN๊ณผ ๋ฌ๋ฆฌ ์ง์ ์ฐ๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ ์ํฉ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ค๊ณ(relay)ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ด ๋๋ฌธ์ TURN์ NAT ํ๊ฒฝ์์ ์์ ์ ์ธ P2P ํต์ ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค.
TURN์ RFC 5766์ผ๋ก ํ์คํ๋์์ผ๋ฉฐ, ์ด ํ์ค์ ์ธํฐ๋ท ์์ง๋์ด๋ง ํ์คํฌ ํฌ์ค(IETF)์ ์ํด ๊ด๋ฆฌ๋๋ค. TURN์ ์ฃผ์ ๋ชฉ์ ์ ํด๋ผ์ด์ธํธ ๊ฐ ์ง์ ํต์ ์ด ๋ถ๊ฐ๋ฅํ ๋, ์ค๊ณ ์๋ฒ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํจ์ผ๋ก์จ ์ฐ๊ฒฐ์ ์ ์งํ๋ ๊ฒ์ด๋ค.
TURN์ ๋์ ์๋ฆฌ
TURN ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ํผ๋ธ๋ฆญ IP ์ฃผ์์ ํฌํธ๋ฅผ ํ ๋นํ์ฌ ์ธ๋ถ์์ ํต์ ์ ์ค๊ณํ๋ค. ํด๋ผ์ด์ธํธ๋ TURN ์๋ฒ๋ก ์์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ , TURN ์๋ฒ๋ ์ด๋ฅผ ์์ ์์๊ฒ ์ ๋ฌํ๋ค. ์ด๋ฌํ ์ค๊ณ ๊ณผ์ ์์ TURN ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ธ๋ถ IP ์ฃผ์์ ํฌํธ๋ฅผ ์ถ์ ํ๋ฉฐ, ํ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฐฉํฅ์ผ๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
TURN์ ๋์์ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ก ๊ตฌ๋ถํ ์ ์๋ค:
TURN ์๋ฒ ํ ๋น (Allocation): ํด๋ผ์ด์ธํธ๊ฐ TURN ์๋ฒ์ ์ฐ๊ฒฐ์ ์์ฒญํ๋ฉด, ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ฌ์ฉํ ์ ์๋ ์ธ๋ถ IP ์ฃผ์์ ํฌํธ๋ฅผ ํ ๋นํ๋ค. ์ด ํ ๋น์ ํด๋ผ์ด์ธํธ๊ฐ ์ธ๋ถ์ ํต์ ํ ๋ ์ฌ์ฉํ ์๋ํฌ์ธํธ ์ญํ ์ ํ๋ค.
Permission ์์ฑ: ํด๋ผ์ด์ธํธ๋ TURN ์๋ฒ๋ฅผ ํตํด ํต์ ํ ๋์์ IP ์ฃผ์์ ํฌํธ๋ฅผ ๋ช ์ํ์ฌ permission์ ์์ฑํ๋ค. ์ด๋ TURN ์๋ฒ๊ฐ ํ์ฉ๋ ์ธ๋ถ ์๋ํฌ์ธํธ๋ก๋ง ํธ๋ํฝ์ ์ ๋ฌํ๋๋ก ํ๋ ์์ ์ฅ์น์ด๋ค.
Channel Binding: ์ฑ๋ ๋ฐ์ธ๋ฉ์ ํน์ ์ธ๋ถ ์๋ํฌ์ธํธ์์ ํต์ ์ ์ํด TURN ์๋ฒ๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ต์ ํ๋ ๋ผ์ฐํ ์ ์ ๊ณตํ๋ ๊ณผ์ ์ด๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ์ก ์ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ค.
TURN๊ณผ STUN์ ์ฐจ์ด์ ๋ฐ ๋ณด์ ๊ด๊ณ
TURN๊ณผ STUN์ ๋ชจ๋ NAT ์ฐํ๋ฅผ ์ํ ๊ธฐ์ ์ด์ง๋ง, ๊ทธ ๋ชฉ์ ๊ณผ ๊ธฐ๋ฅ์๋ ์ฐจ์ด๊ฐ ์๋ค. STUN์ ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ ๊ณต์ฉ IP ์ฃผ์์ ํฌํธ๋ฅผ ์์๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, P2P ์ฐ๊ฒฐ์ ์ง์ ์๋ํ ์ ์๋๋ก ๋๋๋ค. ๋ฐ๋ฉด, STUN์ด ์คํจํ์ฌ P2P ์ฐ๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ, TURN์ ์ค๊ณ ์๋ฒ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํจ์ผ๋ก์จ ์ตํ์ ์๋จ์ผ๋ก ์ฌ์ฉ๋๋ค.
๊ตฌ์ฒด์ ์ผ๋ก, STUN์ ๋์นญ NAT(Symmetric NAT)๋ ๋ฐฉํ๋ฒฝ์ด ๊ฐ๋ ฅํ ๋ณด์์ ์ ์งํ๋ ํ๊ฒฝ์์๋ ์ ๋๋ก ๋์ํ์ง ์์ ์ ์๋ค. ์ด๋ฌํ ์ํฉ์์ TURN์ ํด๋ผ์ด์ธํธ๊ฐ ๊ณต์ฉ ์ธํฐ๋ท๊ณผ ์์ ํ๊ฒ ํต์ ํ ์ ์๋๋ก ๋ณด์ฅํ๋ค.
TURN ์๋ฒ ๊ตฌ์ฑ์ ๊ณ ๋ ค ์ฌํญ
TURN ์๋ฒ๋ฅผ ๋ฐฐํฌํ ๋, ๋คํธ์ํฌ ํ๊ฒฝ ๋ฐ ์ฑ๋ฅ ์๊ตฌ ์ฌํญ์ ์ ์คํ ๊ณ ๋ คํด์ผ ํ๋ค. TURN ์๋ฒ๋ ๋์ ๋์ญํญ์ ์๋ชจํ ์ ์์ผ๋ฉฐ, ํนํ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ค๊ณํด์ผ ํ ๊ฒฝ์ฐ ์๋ฒ์ ๋ฆฌ์์ค๊ฐ ๋น ๋ฅด๊ฒ ์์ง๋ ์ ์๋ค. ๋ฐ๋ผ์ TURN ์๋ฒ๋ฅผ ํจ์จ์ ์ผ๋ก ์ด์ํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ์์๋ค์ ๊ณ ๋ คํด์ผ ํ๋ค:
์๋ฒ ์์น: TURN ์๋ฒ๋ ์ง์ฐ(latency)์ ์ต์ํํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ์์ ๋ฌผ๋ฆฌ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊น์ด ์์น์ ๋ฐฐ์นํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๋์ญํญ ๊ด๋ฆฌ: TURN ์๋ฒ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ค๊ณํด์ผ ํ๋ฏ๋ก, ์ถฉ๋ถํ ๋คํธ์ํฌ ๋์ญํญ์ ํ๋ณดํด์ผ ํ๋ค. ๋์ญํญ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ, ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋ณด์: TURN ์๋ฒ๋ ์ค๊ณ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์, ์๋ฒ ์์ฒด์ ๋ณด์์ด ์ค์ํ๋ค. ๋ถ๋ฒ์ ์ธ ์ ๊ทผ์ ๋ง๊ธฐ ์ํด IP ํ์ดํธ๋ฆฌ์คํธ, ACL(Access Control List) ๋ฑ์ ๋ณด์ ์ค์ ์ด ํ์ํ๋ค.
์ค์ผ์ผ๋ง: ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ TURN ์๋ฒ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋ฒ ์์์ด ํ์ ๋๊ธฐ ๋๋ฌธ์ ์ค์ผ์ผ๋ง ์ ๋ต์ด ํ์ํ๋ค. ๋ก๋ ๋ฐธ๋ฐ์ฑ์ด๋ ์๋ฒ ํด๋ฌ์คํฐ๋ง์ ํตํด ์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
TURN ํ๋กํ ์ฝ์ ํ์ฅ์ฑ๊ณผ ๋ฐ์ ๊ฐ๋ฅ์ฑ
TURN์ WebRTC๋ฅผ ํฌํจํ ๋ค์ํ ์ค์๊ฐ ํต์ ์์คํ ์์ ํต์ฌ์ ์ธ ์ญํ ์ ํ๊ณ ์์ผ๋ฉฐ, ๋์์์ด ๋ฐ์ ํ๊ณ ์๋ค. ํนํ, ๋ณด์ ๊ฐํ์ ์ฑ๋ฅ ์ต์ ํ๊ฐ ์ฃผ์ ์ฐ๊ตฌ ๋ถ์ผ๋ก ๋ ์ค๋ฅด๊ณ ์๋ค. ์๋ฅผ ๋ค์ด, QUIC(Quick UDP Internet Connections) ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ TURN์ ๊ตฌํ์ด ๊ณ ๋ ค๋๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด TURN์ ์ ์ก ํจ์จ์ฑ๊ณผ ์์ ์ฑ์ ๋์ฑ ํฅ์์ํค๋ ค๋ ์๋๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์๋ค.
๋ํ, TURN ์๋ฒ์ ๋ถ์ฐํ์ P2P ๋คํธ์ํฌ์ ํผํฉ ์ฌ์ฉ์ ํตํด, ์ค์ ์ง์ค์ ์๋ฒ์ ๋จ์ ์ ๋ณด์ํ๊ณ ์ ์ฒด ์์คํ ์ ๊ฒฌ๊ณ ์ฑ์ ๋์ด๋ ์ฐ๊ตฌ๋ ํ๋ฐํ ์งํ๋๊ณ ์๋ค. ์ด๋ฌํ ์ฐ๊ตฌ๋ค์ TURN์ด ์์ผ๋ก ๋์ฑ ๋ฐ์ ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ค๋ค.
๊ด๋ จ ์๋ฃ:
RFC 5766 - Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN), Internet Engineering Task Force (IETF).
Understanding the Use of TURN in WebRTC, webrtc.org.
WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web, Alan B. Johnston and Daniel C. Burnett.
Last updated