WebRTC Architecture

Overall Design

WebRTC Media Engine

WebRTC Media Engine

  • Packet loss concealment.
  • Echo cancellation.
  • Bandwidth adaptivity.
  • Dynamic jitter buffering.
  • Automatic gain control.
  • Noise reduction and suppression.
  • Image ‘cleaning’.

Protocol Stack

WebRTC Protocol Stack

  • Real Time Transport Protocol, RTP.
    • IP를 통해 미디어를 전달하기 위한 패킷 포맷을 정의.
    • UDP/IP 위에서 동작.
    • Uni-direction.
    • 헤더에 코덱 정보 포함 – 유동성 있는 Video, Audio 품질 전송 가능.
  • Real Time Control Protocol, RTCP.
    • RTP 데이터의 전송 상태 감시, 세션 관련 정보 전송 (상태 점검을 위한 Protocol) – Flow Control.
    • Report Packet: 보낸 패킷, 손실된 패킷, 패킷 수신 간격 변화.
    • Bi-direction.
  • Datagram Transport Layer Security, DTLS.
    • TLS를 UDP에 적용할 수 있는 보안 프로토콜.
  • User Datagram Protocol, UDP.
  • Stream Control Transmission Protocol, SCTP.
  • Interactive Connectivity Establishment, ICE.
  • Using by Session Description Protocol, SDP.
  • Session Traversal Utilities for NAT, STUN.
    • RFC 5389에 의거, 피어 발견을 위한 네트워크 프로토콜.
    • (*) Google Public STUN Server: stun.l.google.com:19302
  • Traversal Using Relays around NAT, TURN.
    • 종단 간 P2P 연결이 실패할 경우, 공용망에 위치한 서버를 통해 패킷을 중계.

    TURN

Core Specification

MediaStream (a.k.a getUserMedia())

  • Capture audio and video. (HTTPS only)
  • Constraints
    • e.g.,
      {
          audio: false,
          video: {
              mandatory: {
                  maxWidth: 640,
                  maxHeight: 480
              }
          }
      }
      
  • MediaStreamTracks
    • getAudioTracks()
    • getVideoTracks()
  • (* 현재 일자 기준, WebRTC Screen Sharing을 위한 getDisplayMedia() 함수 구현이 시험중에 있다.)

MediaRecorder

  • Record audio and video.

RTCPeerConnection

  • Stream audio and video between users.
  • Signaling
    • P2P 최초 연결을 위한 종단 간 탐색과 통신 및 시그널 메시지 교환을 위한 중계 서버.
    • WebRTC 비-명세로, 시그널링 채널 전문과 프로토콜을 상황에 맞게 정의하여 개발한다.
  • SDP Exchange.
  • ICE Framework.

RTCDataChannel

  • Streaming data between users.
    • i.e., text, file, binary, anybody…
  • Features.
    • RTCPeerConnection 세션 설정의 레버리징.
    • 우선순위가 있는 여러 개의 동시 채널.
    • 신뢰/비신뢰 전달 시멘틱.
    • Built-in security(DTLS) & 혼잡 제어.
    • Very fast~!!

JSEP Architecture

JSEP

  • JSEP는 초기 제안 뒤에 피호출자에 대한 후보들을 증분 제공하는 호출자를 가능하게 하는 ICE Candidate Trickling와 피호출자에게 호출시 동작을 시작하고 도착한 모든 후보들에 대한 대기없이 연결을 설정할 수 있는 기능을 지원.

References

Tags:

Updated:

Comments