,

[WebRTC] STUN과 TURN, 언제 무엇을 — NAT 종류 × 성공률 매트릭스

결론 먼저 — Symmetric NAT가 양쪽이면 STUN은 0%다

A 측 NATB 측 NATSTUN만으로 P2P 가능?fallback 필요
Full Cone아무거나O
Restricted ConeFull / RestrictedO
Restricted ConeSymmetricX (조건부)TURN
Port RestrictedPort RestrictedO
Port RestrictedSymmetricXTURN
SymmetricSymmetric0%TURN 필수

“기본은 STUN, 안 되면 TURN” — 표준 fallback 패턴은 모든 1:1 통화 인프라에서 동일하다. 차이는 비용과 운영 책임을 어디까지 가져갈 것인가에서 갈린다.

STUN과 TURN의 역할

  • STUN (RFC 8489) — 단말이 NAT 뒤에서 자기 공인 IP/Port를 알아내게 도와주는 “거울” 서버. 서버는 패킷을 중계하지 않는다.
  • TURN (RFC 8656) — STUN으로 안 될 때 패킷을 실제로 중계해 주는 relay 서버. 양쪽 트래픽이 모두 서버를 통과하므로 대역폭과 비용이 든다.

핵심: STUN은 거의 공짜에 가깝고, TURN은 실제 트래픽이 흐르므로 통화 분당 비용이 발생한다.

NAT 4종류와 STUN의 한계

NAT 종류외부 → 내부 매핑 규칙STUN으로 P2P 가능?
Full Cone한 번 매핑되면 외부 누구나 들어올 수 있음가장 쉬움
Restricted Cone같은 IP만 들어올 수 있음가능
Port Restricted Cone같은 IP+Port만가능
Symmetric외부 목적지마다 다른 매핑을 만든다STUN으로 안 됨

Symmetric NAT는 단말이 STUN 서버에 보낸 매핑과 상대 단말에 보낼 매핑이 다르다. 그래서 STUN이 알려준 주소는 상대 단말 입장에서 무효다. 두 사람이 모두 Symmetric NAT 뒤에 있으면 어떤 STUN 마법으로도 P2P 경로가 만들어지지 않는다.

현실 비율 — 실제 트래픽에서 TURN으로 떨어지는 비율

대중적으로 인용되는 숫자는 모바일 환경 약 8–20%, 사무실/공공 Wi-Fi 환경에서 더 높은 비율로 TURN relay가 필요하다는 보고다 (출처: 각 WebRTC 인프라 벤더의 공개 통계, 아래 인용 참조). 절댓값은 회선·국가·통신사 분포에 따라 달라지지만, “한 자리 % 미만”인 경우는 사실상 없다.

운영 의미: TURN을 안 깔면 N분의 1의 통화가 무조건 실패한다. 1:1 통화 서비스에서 이 비율은 그대로 사용자 이탈률이 된다.

의사결정 — 외부 TURN을 쓸 것인가, 직접 띄울 것인가

외부 TURN 서비스self-host (Coturn / Pion TURN)
월 통화 1만분 비용 (대중적 가격대 기준)수만~수십만 원VM 한 대 고정비
지연 (지역 라우팅)글로벌 PoP, 보통 우수본인이 deploy한 리전에 의존
인증·자격증명 회전SDK 제공직접 구현 (HMAC 토큰 등)
운영 책임 (장애·확장)벤더본인
트래픽 사용 가시성벤더 대시보드본인 메트릭 수집 필요

의사결정 기준:

  • 월 통화량이 매우 적고 출시 초기다 → 외부 TURN이 압도적으로 싸고 운영도 가볍다.
  • 통화량이 늘어 월 비용이 self-host VM 비용을 넘기 시작한다 → 자체 운영을 검토할 시점.
  • 지역별 latency를 직접 통제해야 한다 (의료·상담·교육 등) → self-host가 유리할 수 있음.
  • 인증 자격증명을 자기 시스템 안에서만 발급하고 싶다 → self-host 또는 hybrid.

개인 메모 — STUN과 TURN의 경계를 직접 그려보기 전까지

WebRTC를 처음 공부할 때 헷갈렸던 부분이 “STUN과 TURN 둘 다 필요하다”는 표현이었다. 보통 자료에는 “기본은 STUN, fallback이 TURN” 정도까지만 적혀 있어서, 둘의 경계가 어디서 갈리는지 감이 잘 잡히지 않았다.

RFC 4787과 RFC 8489를 천천히 읽고, 다른 네트워크 환경(개인 인터넷·모바일 핫스팟·공용 Wi-Fi)에서 Pion 데모를 직접 띄워 본 뒤에야 경계가 명확해졌다 — Symmetric NAT 양쪽이 만나면 STUN의 거울 동작 자체가 무효라는 사실, 그리고 그런 NAT가 사무실/공공 Wi-Fi 환경에서 결코 드물지 않다는 점이었다. 이걸 알고 나니, 이후 1:1 통화 인프라를 짠다면 TURN을 처음부터 함께 두는 쪽이 자연스러운 결론이라는 생각이 됐다 — relay 비용은 정량 가능한 비용이지만, 연결 실패는 추적 자체가 어려운 비용이기 때문이다.

참고

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다