WebRTC 및 SFU

이영민·2021년 12월 10일
0

WebRTC(Web Real-Time Communication)의 기술 및 프로토콜 소개

ICE(Interactive Connectivity Establishment)

브라우저가 peer를 통한 연결이 가능해주도록 해주는 프레임워크.
Peer간 단순 연결 시 작동하지 않는 이유

  • 연결을 시도하는 방화벽을 통과해야 함.
  • 단말에 Public IP가 없다면 유일한 주소값을 할당해야 함.
  • 라우터가 Peer간의 직접 연결을 허용하지 않아 데이터를 릴레이해야 하는 경우가 있음.

이를 해결하기 위해 ICE는 STUN과 TURN 서버 둘 다 혹은 둘 중 하나를 이용함.

NAT(Network Address Translation)

단말에 Public IP 주소를 할당하기 위해 사용.
라우터는 Public IP 주소를 갖고 있고, 라우터에 연결된 단말들은 Private IP 주소를 가짐.
NAT은 단말들의 Private IP를 라우터의 Public IP와 포트 기반에 매핑.
몇몇 라우터들은 Symmetric NAT을 채용함.

  • 이 경우 같은 포트에 다시 소켓을 열어도 NAT쪽 포트가 달라질 수 있음.

STUN(Session Traversal Utilities for NAT) 서버

클라이언트 자신의 Public Address(IP:PORT)를 알려줌.
클라이언트는 인터넷을 통해 클라이언트의 Public Address와 라우터의 NAT 뒤에 있는 클라이언트가 접근 가능한지에 대한 답변을 요청.
해결할 수 없는 경우

  • 두 Client가 같은 네트워크에 있는 경우
  • Symmetric NAT을 사용할 경우

TURN(Traversal Using Relays around NAT) 서버

Public IP들을 가지고 미디어를 릴레이하기 때문에 네트워크 및 컴퓨팅 자원이 사용됨.

1. TURN Client가 Allocate Request를 보냄.
2. 1이 성공하면 TURN Server는 해당 Client에 할당된 Relayed Transport Address를 포함한 응답을 보냄.
3. TURN Client는 통신하고자 하는 Peer에게 이 주소 전달.
4. Peer는 이 Address:Port로 TURN Server에 접근하여 최종적으로 TURN Server를 거쳐 TURN Client와 P2P 연결이 맺어짐.

SFU(Selective Forwarding Unit) 서버


종단 간 미디어 트래픽을 중계하는 중앙 서버 방식.
서버가 각각의 Client에게 Peer로서 동작함.
클라이언트는 서버에게만 자신의 영상 데이터를 보내면 됨.(Uplink가 한 개)
상대방의 수만큼 데이터를 받아야 함.(Downlink가 peer의 수만큼)
1:N 혹은 소규모 N:M형식의 실시간 스트리밍에 적합.
클라이언트의 부하 및 서버의 부하 둘 다 적당함.

SFU에서의 STUN/TURN 서버

SFU의 경우 서버가 직접 Peer로서 작동하고 서버는 IP가 공개되어 있으므로 사실 STUN이나 TURN이 필요 없지만, 유저의 네트워크를 직접 제어할 수 없으므로 SFU에 접속하는 Client는 TURN/STUN ICE Server 및 자격 증명이 필요함. 그래서 SFU라 하더라도 STUN이나 TURN 서버가 필요함.

  • 즉 webRTC 프로토콜을 사용해 만든 개념이기 때문.

참고자료

profile
중니어 개발자

0개의 댓글