Webrtc puzzle

29
The WebRTC LEGO box / Puzzle Implementations of STUN/TURN, MCU/SFU, Gateway, Recording/Streaming/Archiving Mészáros Mihály Governmental Information-Technology Development Agency 5 th TF-WEBRTC meeting - Helsinki 2016

Transcript of Webrtc puzzle

The WebRTC LEGO box / PuzzleImplementations of

STUN/TURN, MCU/SFU, Gateway, Recording/Streaming/Archiving

Mészáros MihályGovernmental Information-Technology Development Agency

5th TF-WEBRTC meeting - Helsinki2016

Table of Contents

· Implementations

· The devil is in the details

· STUN/TURN

· Standardization

· Multipoint: SFU/MCU

· Gateway

· Record, Stream, Archive

· Summary

The “LEGO bricks”

WebRTC Service

· A service builds up from components

· Native/Web

· Even P2P

· Web Server

· Signaling

· Media· NAT / Firewall Traversal

· Etc.

Implementations

· Devil is in the details

· The standard is complex

· The implementations too

· (In)compatibility

· Various Languages

· Web IDL, HTML5, JS

· C, C++, JAVA

· Complex code

Complexity and small differences makes hard to put the pieces together

STUN / TURN

WebRTC & Firewall / NAT Traversal

OAuthRFC 7635

Standardization

· OAuth + Stun in WebRTC PeerConnection (W3C)

· github.com/w3c/webrtc-pc

· credential parameter passing issue

· I opened issue 714

· Submitted fix (Pull Request)

· List discussion

· Interim meeting 2016 August 23:· https://www.w3.org/2016/08/WebRTCWG-2016-08-23.pdf

· https://www.w3.org/2011/04/webrtc/wiki/August_23_2016

STUN / TURN + OAuth

· RFC7635

· W3C Interim confusion

· Two ways

· Add one field for token

· Bigger change

· Step by Step

· WebRTC-PC issues

· My AFAIU Presentation:http://goo.gl/BS2ZcT

OAuthBrowser Implementation Status

· Chrome

· Open Issue 4907: https://goo.gl/Z69q6I

· Not happen in Q1

· Firefox

· Open Bug 1247616: https://goo.gl/6n78rL

· Not implemented warning for App Devs from Mozilla 47

coTURNTURN with co-location of multiple realms

· coturn.net - https://github.com/coturn/coturn

· Open Source STUN/TURN implementation

· Written in C, Rock Solid and, low HW intensity

· It follows IETF TRAM WG works very closely.

· Supports multiple backend database types (5)

· STUN over UDP/TCP/TLS/DTLS/SCTP

· TCP/UDP (Relay)

· Auth methods: LTC, REST (Time limited LTC), OAuth

· IPv4 and IPv6

coTURN

· The most commonly used STUN/TURN server.

· e.g. appear.in, apprtc, many stun/service providers

· I have 2 Pull Request

· Utility to test NAT Behavior Discovery RFC5780

· OAuth utility to create Access Token. RFC7635

· Oleg asked my help and involved me more in coTURN

· Oleg announced on coturn list: “Mészáros Mihály agreed to take more active part in the development of the TURN server, and he will be transitioning to the major team member.”

STUN/TURN PoC Service

· Clean and Re-factor Code (REST API, Web Page)

· Clean and Re-factor Ansible playbook, let’s encrypt ..

· Move domain name (lab.vvc.niif.hu to GÉANT?)

· Implement OAuth long term K (AS-RS, Auth key) distribution (REST API)

· Involve other institutes (e.g. US, Australia, MAGIC)

· Investigate and implement ANYCAST STUN/TURN discovery. See: draft-ietf-tram-turn-server-discovery-09

STUN/TURN PoC monitoring

· Munin plugin

· RoundTripTime

· Jitter

· Lost dropped

· Total Transmit time

MCU / SFU

Open Source MCU / SFU

· Mixer/MCU

· FreeSwitch

· Kurento Media Server

· Medooze MCU Media Server

· Licode Erizo

· SFU

· JITSI Video Bridge

· Kurento Media Server

· Janus (meetecho)

· MediaSoup

· Licode Erizo

MCU vs SFU

· Mixer

· Continuous Presence

· Layouts

· Wider Compatibility

· Gateway functionality

· Interoperability

· DTMF

· Not code audio/video

· rtp audio level indication

· RFC6464

· Smaller Latency

· Simulcast

· Send multiple resolution

· Last N

· Based on audio activity

· http://goo.gl/ucHnWp

Record/Stream/VoD

Open Source Record

· Server Side Implementations

· Kurento Media Server

· Licode Erizo

· Janus

· FreeSwitch

· Post Processing

· Cut, Clean, Upload

· Client Recording

· GuM

· Screen Capture

· Dom Capture

Live Stream

· Kurento

· RTP, HTTP POST, WebRTC

· JANUS

· RTP, RTSP, WebRTC

· Streaming

· HLS

· MPEG-DASH

· Server

· Live streaming server· I2cat

· Nginx-rtmp-module

· gpac.io dashcast

· Codecs, Transcoding, Scaling, segmentation

Gateway

Gateway (Backward compatibility)

· rtpengine

· No transcoding

· Janus

· Kurento

· FreeSwitch

· JITsi Gatway to Sip (JIGASI)

· audio only

Kurento

Esperanto(Stream)=Kurento

· Kurento Media Server

· GStreamer

· JSON RPC over WS API· http://goo.gl/buVW8A

· TLS

· KMS API· Client JS

· JAVA

· Node.js

· PHP

· ElasticRTC

· Amazon Web Services

· Kurento-Tree

· Kurento-Room

Kurento

· Multipoint

· MCU/SFU

· Recording

· Streaming

· Extra

· VR / AR

· CV

· GStreamer filters

· Extensions

Summary

· Many TODOs on STUN/TURN PoC service

· More involvement in coTURN (takes my time).

· Monitoring, Refactoring, Tidy code, etc.

· STUN + OAuth standardization

· Someone need to help and continue, (take over) my work on MCU/GW/STREAMING.

· We need to improve our collaboration, work more tightly together.

· We should have a short term plan with achievable goals, tangible results.

Questions ?

[email protected]: