2012-08-13 2 views
5

데이터 캐널을 통해 데이터를 보낼 때 WebRTC가 얼마나 많은 오버 헤드를 생성하는지 알고 싶습니다. 웹 소켓에 각 프레임 당 2 - 14 바이트의 오버 헤드가 있다는 것을 알고 있습니다. WebRTC는 더 많은 오버 헤드를 사용합니까? 웹에서 유용한 정보를 찾을 수 없습니다. 그것의 명확한, Datachannels는 지금 사용될 수 없다. Mediastreams에 얼마나 많은 오버 헤드가 사용됩니까?WebRTC 오버 헤드

감사합니다.

답변

2

WebRTC는 RTP를 사용하여 미디어를 보냅니다. RTP는 UDP를 통해 실행됩니다.

  1. 자체가 12 바이트에서 시작 사용됩니다 내용에 따라, 거기에서 성장할 수있는 RTP 헤더 : 보통 IP 및 UDP 헤더 게다가

    는 두 개의 추가 헤더가 있습니다.
  2. 페이로드 헤더 - 사용중인 특정 코덱의 각 데이터 패킷에 사용되는 헤더입니다. 이것은 코덱 자체에 달려 있습니다.

RTP는 미디어의 품질을 향상시키기 위해 가능한 많은 비트를 미디어 자체에 할당한다는 기본 추론으로 인해 페이로드에 대해 가능한 적은 오버 헤드를 갖도록 설계되었습니다.

+0

감사합니다, 어떻게 Datachannels 어떻습니까?UDP를 통해 DTLS를 통해 SCTP를 사용하고 있지만 응용 프로그램 계층에서 사용되는 프로토콜은 무엇입니까? – chaosbohne

+0

초안 - jesup - rtcweb - 데이터 프로토콜 - http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol – jesup

+1

그래서 WebRTC는 음성과 비디오를 위해 UDP를 통한 SRTP를 사용합니다 (일부 시간이 끝났습니다). UDP가 작동하지 않으면 TCP). 그러나 데이터 채널은 여기를 통해 전송되지 않습니다. 그것은 DTLS의 위에 SCTP에 보내진다. 위의 답변은 질문의 주제에서 약간 벗어났습니다. –

3

응용 프로그램 계층에서 DataChannel을 보내는 것으로 생각하고 을 SCTP를 통해받는 것으로 생각할 수 있습니다. SCTP 헤더의 PPID (Payload Protocol Identifier) ​​필드에서 Datachannel은 UTF-8을 전송하는 값인 0x51을 설정합니다. 데이터와 0x52는 이진 데이터입니다.

네, 맞습니다. RTCDataChannel은 DTLS와 UDP를 통한 SCTP를 사용합니다. DTLS는 보안에 사용됩니다. 그러나 SCTP는 대부분의 NAT/방화벽 설정을 가로 지르는 데 문제가 있습니다. 따라서이를 극복하기 위해 SCTP는 UDP를 통해 터널링됩니다. 그래서 데이터를 전송하는 전체 오버 헤드 는 오버 헤드가 될 것입니다 :

SCTP + DTLS + UDP + IP

을하고는 다음과 같습니다

28 bytes + 20-40 bytes + 8 bytes + 20 - 40 bytes

따라서, 오버 헤드가 rougly에 대한 120 바이트 될 것이다. WebRTC 클라이언트가 보낼 수있는 SCTP 패킷의 최대 크기는 1280 바이트입니다. 따라서 최대 값은 이며 SCTP 패킷 당 약 1160 바이트의 데이터를 보낼 수 있습니다.

0

enter image description here

여기 정확히 3 바이트 매 16ms (초당 ~ 60)에 전송하는 2 peer.js 인스턴스 (babylon.js 선단)의 스크린 샷이다.

프로파일 러는 30000 비트/초 보여준다 초 = 62.5 바이트 당 바이트/60 당

30000 비트/8 비트, 3 바이트 이후 I가 보낸다 그래서이야 ~ 59.5 바이트 프로파일에 따라 . 뭔가 수신에 계산되지 않은 경우에만 절반 프로파일 때문에

가 나는 확실하지 않다, 두 번째 15K 비트/