Upload
mihaly-meszaros
View
211
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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 (Backward compatibility)
· rtpengine
· No transcoding
· Janus
· Kurento
· FreeSwitch
· JITsi Gatway to Sip (JIGASI)
· audio only
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.