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์˜ ๋™์ž‘์€ ํฌ๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค:

  1. TURN ์„œ๋ฒ„ ํ• ๋‹น (Allocation): ํด๋ผ์ด์–ธํŠธ๊ฐ€ TURN ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์™ธ๋ถ€ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ์ด ํ• ๋‹น์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์™ธ๋ถ€์™€ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์—”๋“œํฌ์ธํŠธ ์—ญํ• ์„ ํ•œ๋‹ค.

  2. Permission ์ƒ์„ฑ: ํด๋ผ์ด์–ธํŠธ๋Š” TURN ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•  ๋Œ€์ƒ์˜ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ๋ช…์‹œํ•˜์—ฌ permission์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋Š” TURN ์„œ๋ฒ„๊ฐ€ ํ—ˆ์šฉ๋œ ์™ธ๋ถ€ ์—”๋“œํฌ์ธํŠธ๋กœ๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•˜๋„๋ก ํ•˜๋Š” ์•ˆ์ „ ์žฅ์น˜์ด๋‹ค.

  3. 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