WebRTC의 다양한 방식들

devkwon·2023년 1월 11일
0

WebRTC

목록 보기
1/2

WebRTC에서 개발자가 구현할 수 있는 서버는 크게 3가지가 있는데, Signaling, SFU, MCU이다.

Signaling

peer간의 offer,answer라는 session 정보 signal만 중계한다. 따라서 처음 WebRTC가 peer간의 정보를 중계할 때만 서버에 부하가 발생한다.
1:1 역할에 적합하다.

장점으로는 서버의 부하가 적기 때문에 서버 자원이 적게 든다.
또한 peer간의 직접 연결로 데이터를 송수신하기 때문에 실시간성이 보장된다.

단점으로는 N:M 연결에서 클라이트의 과부하가 급격하게 증가한다.예를 들어 5명과 연결이 되어 있다면, 10개(upload, download)의 link를 유지하며 데이터를 송수신하기 때문에 과부하가 생긴다.

SFU(Selective Forwading Unit)

종단 간 미디어 트래픽을 중계하는 중앙 서버 방식이다.
p2p연결이 아닌, 서버와 클라이언트 간의 peer를 연결한다.
따라서 N:M 관계에서 모든 사용자에게 데이터를 보낼 필요 없이 서버에게만 자신의 데이터를 보내면 된다. 하지만 상대방의 수만큼 download 링크가 필요하기 때문에 upload 링크 1개, download 링크 N개 구조를 갖게 된다. 1:N 또는 소규모 N:M 형식의 실시간 스트리밍에 적합하다.

장점으로는 데이터가 서버를 거치기 때문에 Signaling(P2P)보단 느리긴 하지만 비슷한 실시간성을 유지할 수 있다.
또 링크의 수가 줄어들었기 때문에 Singaling 서버를 사용하는 것보다 클라이언트의 부하가 줄어든다.

단점으로는 서버의 역할이 더 많이 필요해 더 많은 자원이 필요하므로, 서버 비용이 증가한다. 대규모 N:M 구조에서는 여전히 클라이언트가 많은 부하를 감당해야 한다.

MCU(Multi-point Control Unit)

다수의 송출 미디어(여러 peer의 video와 audio)를 중앙 서버에서 혼합(muxing) 또는 가공(transcoding)하여 수신측으로 전달하는 중앙 서버 방식이다.

Muxing(Multiplexing, 다중화)이란 저수준의 채널들을 하나의 고수준의 채널로 통합하는 과정이다. 역다중화를 통해 원래의 채널 정보들을 추출할 수 있다. 각각의 채널들은 미리 정의된 부호화 틀을 통해 구분한다.

Transcoding은 대상 장치가 파일 형식을 지원하지 않거나, 제한된 저장 용량을 사용하여 파일 크기를 줄이거나, 최신 형식으로 변환해야하는 경우 데이터를 변환하는 것을 의미한다.

SFU와 마찬가지로 서버와 클라이언트 간의 peer를 연결한다.
SFU와 다른 점은 서버에게서 하나의 download 링크를 통해 데이터를 받는다는 것이다. 따라서 클라이언트의 부하를 줄지만 중앙 서버의 부하가 늘어난다.

장점으로는 upload, download 링크가 각각 1개가 되었기 때문에 부하가 현저히 줄어든다. 그렇기 때문에 다른 서버들에 비해 좀 더 큰 규모의 N:M 구조에 사용할 수 있다.

단점으로는 모든 클라이언트의 정보를 수신하고 이를 혼합 및 가공해야하기 때문에 실시간성이 떨어지고, video,audio 결합 과정에서 서버에 많은 비용이 발생한다.

참고:
https://millo-l.github.io/WebRTC-%EA%B5%AC%ED%98%84-%EB%B0%A9%EC%8B%9D-Mesh-SFU-MCU/

https://gilssang97.tistory.com/80?category=1065324

https://idchowto.com/video-audio-muxing-%ED%95%98%EA%B8%B0/

https://www.lonelyplanit.com/6

0개의 댓글