SlideShare a Scribd company logo
1 of 73
Download to read offline
Barangolás a WebRTC
világában.
Hol tartunk ma?
Mészáros Mihály
2017.11.15.
WebRTC, rtcweb
Multimédia Motor a böngészőben
RTC
● Valós Idejű Kommunikáció
– Hang, Mozgókép, Adat
● Real Time Communication
– VoIP
– Telepresence
– Streaming
– Adat Kollaboráció
● Együtt rajzolás
– stb.
Forrás: https://geek-and-poke.com
Definíció
●
Mission: To enable rich, high-quality RTC applications to be
developed for the browser, mobile platforms, and IoT devices, and
allow them all to communicate via a common set of protocols.
●
WebRTC: “A framework, protocols and application programming
interface that provide real time interactive voice, video and data in
web browsers and other applications”
● WebRTC is a free, open project that provides browsers and mobile
applications with Real-Time Communications (RTC) capabilities via
simple APIs. The WebRTC components have been optimized to best
serve this purpose.
WebRTC == ?
● Amit biztos ismerünk:
– Skype
– Facebook messenger
– appear.in (?)
● Google Refrencia app
– https://appr.tc/
● Mi történik a háttérben
– about:webrtc
– chrome:webrtc-internals
Előnyök
● Pluginok nélkül
● Installáció nélkül
● Univerzális Multimédia Motor
– hang,videó,adat
– szinkronizáció
● Peer 2 Peer
● Tűzfalátjárás/Kapcsolat életben
tartás
● Web API elrejti a komplexitást
● Biztonság tervezéstől
– Magánélet védelme
– Azonosítás, Titkosítás
● Implementáció elérhető
– Natív/Mobil platformokon is
● Tetszőleges Signaling protokoll
● Alacsony késleltetés
● Adaptív Torlódásvezérlés
● FEC
Számokban
● Új piac
● >1,5 milliárd perc audio/video kommunikáció/hét
– 45%-kal nőtt a tavalyi év óta
● >1300 Vendor és Projekt ami WebRTC-t használ
● ~ 3,5-4Mrd aktív böngésző (2016 Nov)
– 2 Mrd aktív Chrome (57,1% piaci részesedés)
● 80% a böngészőknek WebRTC képes
– chrome, firefox, opera, edge, safari
● Temérdek felhasználási lehetőség
● CPaaS (Communications Platform as a Service)
Felhasználási lehetőségek
● Távoktatás/Korrepetálás
– WebTut
● VIDEOTORIUM
– CDN, webtorrent
● Streaminng/Webcast
– Böngészőből szemináriumok közvetítése
● 4K/(8K?), 360fok imerzív videó átvitel
● Közös Tábla/rajzolás
● Adatgyűjtés/Control IoT
● Alacsony késleltetésű audio átvitel /Együtt Zenélés?/
● stb.
Architektúra
Mi van a motorháztető alatt?
WebRTC != egyszerű portéka
SSRC
1
SSRC
N
SRTP
keying
Data
SCTP
SRTP DTLSSTUN
UDP
IP
. . .
Media
Channel
Data
Channel
NAT
Traversal
Forrás:
https://upload.wikimedia.org/wikipedia/commons/7/7f/Pile_de_protocoles_d%27%C3%A9change_de_m%C3%A9dias_WebRTC.svgForrás: https://geek-and-poke.com
Architektúra
Forrás: https://webrtc.org/architecture/
Történelem
Egyszer volt, hol nem volt...
Web-en innen és túl..
7 éve egy nyári napon...
2010 2017
A kezdet
● 2009 Google Chrome csapat WebRTC gondolat megszületése
● 2010 Nyarán IETF 78 Informális ebéd Google, Microsoft, Apple, Mozilla,
Skype, Ericsson, stb.
● 1 napos workshop http://rtc-web.alvestrand.com/
– IETF WG, W3C WG
● 2011 Januárban lezárult a Global IP Solutions Google általi felvásárlása
● 2011 Május 5. W3C WebRTC WG hivatalosan is elindul
● 2011 Június 1. Google bejelenti WebRTC nyílt forrású sw
csomagot(GIPS), és a chrome integrációt.
● 2011 November Chrome 23 WebRTC támogatás
Első fecskék
● 2013 Január - Firefox 20 WebRTC támogatás (csak GuM)
● 2013 Február - Chrome Mozilla/Firefox interoperabilitás
● 2013 Július - Chrome for Android WebRTC támogatás
● 2013 Szeptember - Firefox for Android WebRTC támogatás
● 2013. Október 30. - Open H.264 (Cisco+Mozilla)
● 2013 Október - Opera 18 Beta WebRTC debütálás
Codec
Mandatory To Implement
● MTI Audio codec:
– Opus és G711
● MTI Video
– konfliktus az RTCWEB munkacsoportban (IETF)
– MTI Video Codec (Codec háború)
● VP8 vs H.264
● (VP9 vs H.265)
● Alliance for Open Media
– AOMedia Video 1 (AV1) Fejlesztés
– Amazon, Cisco, Google, Intel, Microsoft, Mozilla, Netflix stb.
Folyamatos fejlődés
● 2014 Szeptember OpenWebRTC (Ericsson)
● 2014 Október MicroSoft Edge ORTC támogatás bejelentés
● 2014 November MTI Video Codec konszenzus
– A böngészőknek VP8 és H.264 is kötelezően implementálandó
● 2015 Szeptember MicroSoft Edge ORTC/WebRTC támogatás
● 2015 November Mozilla Canvas CaptureStream
● 2016 Január VP9 Chrome
● 2016 Április ICE Restart FireFox 48
Napjaink
● 2017 A fő cél befejezni a WebRTC 1.0 szabványosítását
– Stabilitás és megbízhatóság a fő cél
– Feature freeze
– Csak hibajavítások
● 2017 Június - Safari 11 WebRTC támogatás
● 2017 Október - KITE WebRTC paltform test (google/cosmo)
● 2017 Október - Third Party Audio codec támogatás
● 2017 November - WebRTC PeerConnection CR
Szabványosítás
Hol tartunk ma?
Egy szabvány mindenek felett!
Forrás: https://xkcd.com
Forrás: https://geek-and-poke.com
Forrás:
https://upload.wikimedia.org/wikipedia/commons/6/63/AnneauUnique.png
Szabványosítás
● API és Szabványosítás
– W3C (WEBRTC) HTML5 részeként JS API
● A cél komplexitás elrejtése a Web programozók elől
– IETF (RTCWEB)
● Nem csak szabvány, hanem Referencia Implementáció is
● By Design
– Titkosítás és Magánélet védelme, Tűzfalátjárás ICE, IPv6!
● Offer / Answer alapokon (SDP) vs. ORTC!
● Nem definiál a Signaling protokollt! (Bármi SIP/XMPP stb.)
JSEP
JavaScript Session Establishment Protocol
Forrás: http://html5rocks.appspot.com/en/tutorials/webrtc/basics/jsep.png
WebRTC 1.0-hoz vezető út
Státuszjelentés
● W3C
– WebRTC 1.0
● → Candidate Release
– Media Capture and Streams
● Candidate Release
– Stats
● Working Document
● IETF
– JSEP
● → RFC
– DataChannel
● ~ RFC
– RTP Usage
● ~ RFC
– A/V Codecs
● RFC
Adapter.js
● Élő szabvány
● Implementációs hézagok
áthidalása
● Hézagok
– Szabványosítás és
implementáció
– Implementáció és
implementáció
Forrás:
http://art.fritsahlefeldt.com/photo/2415/Mind-the-gap-no-text-Color-illustration.html
WebRTC-NV
forrás:
http://art.fritsahlefeldt.com/photo/2045/Goal-is-closer-than-you-think-Color-illustration.html
AAI & WebRTC
Identity
Azonosítás
● SRTP-DTLS titkosítás
● Személyazonosság és
titkosító kulcs kriptográfiai
összekapcsolása
● WebRTC Biztonsági modell
– OpenID Connect
– BrowserID
– (SAML lásd: TF-WebRTC)
Forrás:
https://hikingartist.com/2012/01/03/cat-and-dog-online-2-0/
TŰZFAL/NAT átjárás
Hogyan megy át a tű fokán a teve,
ezen fő a napkeleti bölcseknek a feje.
A Tűzfal kívül tartja
a nem kívánatos forgalmat..
Egyben megnehezíti a valós idejű
kommunikációt. :-/
Cél: Szabványos NAT / Tűzfal-átjárás
biztosítás az RTC szolgáltatások számára
● Miért gond, ha befalazzuk az
ajtót és az ablakot?
● Az Internet ma:
– NAT (különböző fajtái),
– Tűzfal (csomagszűrés),
– IPv4 => IPv6 áttérés,
– Multihomed eszközök, stb.
● TCP nem ideális valós idejű
tartalmak számára.
A Jég és a Tűz
ICE működése
● Discovery and Candidate gathering
– Allocation
● Prioritisation
● Exchange
● Connectivity Check
– Frozen Algorithm
● Coordination
● Communication
IP cím, és port felfedezés
● Candidate pair
– IP address, port, protocol
● Types
– Relayed
– Reflexive
● Server, Peer
– Host
TURN
Server
NAT
UA
Y:y
X':x'
X:x
Public Internet
RFC4787
● REQ-1:
– A NAT MUST have an "Endpoint-Independent Mapping" behavior.
● REQ-8:
– If application transparency is most important, it is RECOMMENDED
that a NAT have "Endpoint-Independent Filtering" behavior. If a
more stringent filtering behavior is most important, it is
RECOMMENDED that a NAT have "Address-Dependent Filtering"
behavior.
● a) The filtering behavior MAY be an option configurable by the administrator of
the NAT.
RFC 4787 and RFC 5780 vs RFC 3489
● Mapping
– EIM
– ADM
– APDM
● Filtering
– EIF
– ADF
– APDF
Forrás: http://www.netmanias.com/en/?m=view&id=techdocs&no=6065
Mapping
Forrás: https://www.netmanias.com/ko/?m=view&id=blog&no=6263
Mapping Felismerés
● TEST I
– Primary IP, Primary Port
● TEST II
– Alternate IP, Primary Port
● TEST III
– Alternate IP, Alternate Port
Forrás:
http://www.netmanias.com/en/post/techdocs/6067/nat-stun/nat-behavior-discovery-using-stun-rfc-5780
Filtering
Forrás: https://www.netmanias.com/ko/?m=view&id=blog&no=6263
Filtering Felismerés
● TEST I
– Primary IP, Primary Port
● TEST II
– Change Request IP and Port
● TEST III
– Change Request Port
Forrás:
http://www.netmanias.com/en/post/techdocs/6067/nat-stun/nat-behavior-discovery-using-stun-rfc-5780
Linux NAT
● Symmetric NAT
– Address and Port dependent Mapping
– Address and Port dependent Filtering
● iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
--random
● Port restricted Cone NAT
– Endpoint Independent Mapping
– Address and Port dependent Filtering
● iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Port Randomizálás
● Recommendations for Transport-Protocol Port Randomization
– https://tools.ietf.org/html/rfc6056
●
Updates to Network Address Translation (NAT) Behavioral
Requirements (RFC4787++)
– https://tools.ietf.org/html/rfc7857
● Min segít? pl. DNS cache mérgezés / Kaminsky támadás
– http://unixwiz.net/techtips/iguide-kaminsky-dns-vuln.html
●
De még a port randomizálás sem véd minden támadás ellen.
– https://arxiv.org/pdf/1205.5190.pdf
Szimmetrikus NAT felismerés
böngészőből
● https://webrtchacks.com/symmetric-nat/
● https://jsfiddle.net/5ftsd5c2/17/
STUN
Server #1
STUN
Server #2
A címed:
192.0.2.10:8000
A címed:
192.0.2.10:7000
NAT Behaviour Discovery (RFC5780)
Symmetric NAT minta kimenet
$ turnutils_natdiscovery -f -m rfc5780.turn.geant.org
…
========================================
NAT with Address and Port Dependent Mapping!
========================================
…
========================================
NAT with Address and Port Dependent Filtering!
========================================
$
Campus NAT Behaviors
EIM/EIF EIM/ADF EIM/APDF APDM/APDF
Linux Default --random
--random-fully
BSD static-port Default
Juniper
vSRX
"persistent-nat
any-remote-host"
"persistent-nat
target-host"
"persistent-nat
target-host-
port"
Default
Cisco ios Default
Checkpoint
21400
Default
SOHO NAT Behaviors
EIM/EIF EIM/ADF EIM/APDF APDM/APDF
TP-Link Default
Mikrotik
RouterBOARD
Default
Lede 17.0.2
(Linux)
Default --random
PF-Sense
(BSD)
static-port Default
Internet Megosztás NAT Behaviors
EIM/EIF EIM/ADF EIM/APDF APDM/APDF
Win 10 Pro Default
macOS Default
iOS Default
Android Default
TURN biztos hogy kell?
callstats.io
WEBRTC - METRICS REPORT - 2017/01
GÉANT
STUN/TURN pilot
Knockplop
GÉANT TURN Pilot
● https://turn.geant.org
● 3 féle authentikáció
● Elosztott infrastruktúra
● Európai közös erőfeszítés
● Szabványosítás (W3C, IETF)
● Cél
– Legközelebbi szerver
használata
– Média forgalom GÉANT
hálózaton belül tartása
STUN/TURN Infrastruktúra
Hol is?
Demo:
https://turn.geant.org
Long Term Credential
● Firefox TURN setup
– media.peerconnection.use_document_iceservers
– media.peerconnection.default_iceservers
● CSipSimple
– https://en.wikipedia.org/wiki/CSipSimple
– PJSIP
Knockplop
● Alap WebMeeting
● Szobák
– Képernyő megosztás
– Chat
● P2P
– Teljes Összekapcsolt
– Full Mesh
● Fogd és vidd rendezés
● MIT licenc
● node.js
– web/https: express
– signaling: socket.io
● Gulp
● GÉANT TURN
– RTT TURN test
● Test mirror
– https://github.com/so010/knockplop
Knockplop Demo
moodle-knockplop
Tesztek
Hogy állunk?
Mikor érünk már oda?
Ott vagyunk már?
WPT és KITE
Forrás: https://www.w3.org/2011/04/webrtc/wiki/images/8/8a/WebRTCWG-2017-TPAC.pdf
W3C: Test the Web Forward
Forrás: https://sny.no/2014/09/twpwd/testtwf.png
Eszközök
● Test the Web Forward / WebPlatformTests(WPT)
– Stand-alone tests
– https://wpt.fyi/webrtc
– http://web-platform-tests.org/
– http://testthewebforward.org/
● KITE (Karoshi Interoperability Testing Engine)
– COSMO consulting (http://webrtcbydralex.com/)
– Manually testing webrtc interop felt like “death by overwork”
● https://drive.google.com/file/d/0B398g_p42xgrdWVxaXU3amh2VUU/view
status.skyway.io
Is WebRTC Ready yet?
http://iswebrtcreadyyet.com
● Kész van?
● Mikor használható élesben?
A kezdet vége
WebRTC 1.0 PR a láthatáron!
(Az ördög a részletekben..)
Összegzés
● WebRTC 1.0 avagy a web multimédia képessé tétele jól halad!
● Nagy gyártók viszonylag harmonikusan, vállvetve dolgoznak
– Nyílt Szabvány, Nyílt Forrás, Referencia implementáció
– Mára az összes nagyobb böngésző támogatja
● Összefogás a szabvány fejlesztésére
– Google, Mozilla, Cisco, Microsoft, stb.
– Sok nagy cég, sok üzleti érdek => Ezek sokszor nehezen összehangolhatóak
●
eddig jól sikerült kezelni a konfliktusokat
● WebRTC NV = Mélyebb API-k
– QUIC, Pokolba az SDP-vel => ORTC, AR/VR, SVC, Simulcast, Snowflake, stb.
Divatos Hívószavak vs. WebRTC
● Big Data
– Hívás Statisztikák elemzése
pl. ELK + Knockplop
● IoT (> Raspberry Pi)
– Videómegfigyelés
– DataChannel
valósidejű adatgyűjtés
● AI/Machine Learning
– Computer Vision
●
TensorFlow + GuM demo
● 5G
– Smooth roaming
● ICE Restart, STUN API snowflake
● Mobile First
– iOS, Android sdk
● Serverless Architecture
– WebTorrent
– Video CDN (Peer5)
●
Blockchain
– NIMIQ (P2P kommunikáció WebRTC data
Channel)
– Netflix vizsgálja (CDN)
●
Codec
– AV1
– Simulcast, SVC, AR/VR, Audio Codec plugin
– Nagy felbontás
●
4K PSNC Demó
Köszönöm a
Figyelmet!
● https://webrtc.org
● https://codelabs.developers.google.com/codelabs/webrtc-web
● https://turn.geant.org
● https://api.turn.geant.org
● https://meet.uninett.no
● https://lutra.lab.vvc.niif.hu
● https://github.com/up2university/docker-moodle
● https://webtorrent.io
● https://instant.io
● https://wiki.mozilla.org/Media/WebRTC/Privacy
● https://idevelop.ro/ascii-camera
Hivatkozások

More Related Content

Similar to WebRTC - Hol tartunk ma?

A mi hackathonunk: Egy kihívásokkal teli IoT projekt tapasztalatai
A mi hackathonunk: Egy kihívásokkal teli IoT projekt tapasztalataiA mi hackathonunk: Egy kihívásokkal teli IoT projekt tapasztalatai
A mi hackathonunk: Egy kihívásokkal teli IoT projekt tapasztalataiGyörgy Balássy
 
A világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isA világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isKálmán "KAMI" Szalai
 
POZITEAM Bővített Műhely Tudásbázison alapuló együttműködés Geoview szemszögből
POZITEAM Bővített Műhely Tudásbázison alapuló együttműködés Geoview szemszögbőlPOZITEAM Bővített Műhely Tudásbázison alapuló együttműködés Geoview szemszögből
POZITEAM Bővített Műhely Tudásbázison alapuló együttműködés Geoview szemszögbőlPOZITEAM
 
Webes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaWebes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaAntal Bodnar
 
Android vs Firefox OS - Vissza a jövőbe: Firefox OS
Android vs Firefox OS - Vissza a jövőbe: Firefox OSAndroid vs Firefox OS - Vissza a jövőbe: Firefox OS
Android vs Firefox OS - Vissza a jövőbe: Firefox OSKálmán "KAMI" Szalai
 
Gazdag Ferenc_IDC_KormanyzatiFelho
Gazdag Ferenc_IDC_KormanyzatiFelhoGazdag Ferenc_IDC_KormanyzatiFelho
Gazdag Ferenc_IDC_KormanyzatiFelhoFerenc GAZDAG
 
Firefox Thunderbird Seamonkey - felpörgetve!
Firefox Thunderbird Seamonkey - felpörgetve!Firefox Thunderbird Seamonkey - felpörgetve!
Firefox Thunderbird Seamonkey - felpörgetve!Kálmán "KAMI" Szalai
 
Grid Underground projekt
Grid Underground projektGrid Underground projekt
Grid Underground projektFerenc Szalai
 
Nagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseNagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseJános Pásztor
 
StreamProxy - University of Pannonia
StreamProxy - University of PannoniaStreamProxy - University of Pannonia
StreamProxy - University of PannoniaBálint Szekeres
 
Deep reinforcement learning with DonkeyCar
Deep reinforcement learning with DonkeyCarDeep reinforcement learning with DonkeyCar
Deep reinforcement learning with DonkeyCarLeventeDmsa1
 
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényen
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényenFirefox OS előadás a Corvinus Nyári Egyetem rendezvényen
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényenKálmán "KAMI" Szalai
 
Firefox OS - Az Open Web megérkezik az okostelefonokra
Firefox OS - Az Open Web megérkezik az okostelefonokraFirefox OS - Az Open Web megérkezik az okostelefonokra
Firefox OS - Az Open Web megérkezik az okostelefonokraKálmán "KAMI" Szalai
 
Kubernetes 1x1
Kubernetes 1x1Kubernetes 1x1
Kubernetes 1x1Péter Tar
 
Sa performance vision_hu
Sa performance vision_huSa performance vision_hu
Sa performance vision_huZoltan Cziraky
 

Similar to WebRTC - Hol tartunk ma? (20)

A mi hackathonunk: Egy kihívásokkal teli IoT projekt tapasztalatai
A mi hackathonunk: Egy kihívásokkal teli IoT projekt tapasztalataiA mi hackathonunk: Egy kihívásokkal teli IoT projekt tapasztalatai
A mi hackathonunk: Egy kihívásokkal teli IoT projekt tapasztalatai
 
A világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isA világ változik, változik a Mozilla is
A világ változik, változik a Mozilla is
 
POZITEAM Bővített Műhely Tudásbázison alapuló együttműködés Geoview szemszögből
POZITEAM Bővített Műhely Tudásbázison alapuló együttműködés Geoview szemszögbőlPOZITEAM Bővített Műhely Tudásbázison alapuló együttműködés Geoview szemszögből
POZITEAM Bővített Műhely Tudásbázison alapuló együttműködés Geoview szemszögből
 
Firefox OS beszámoló
Firefox OS beszámolóFirefox OS beszámoló
Firefox OS beszámoló
 
Webes alkalmazások optimalizálása
Webes alkalmazások optimalizálásaWebes alkalmazások optimalizálása
Webes alkalmazások optimalizálása
 
Android vs Firefox OS - Vissza a jövőbe: Firefox OS
Android vs Firefox OS - Vissza a jövőbe: Firefox OSAndroid vs Firefox OS - Vissza a jövőbe: Firefox OS
Android vs Firefox OS - Vissza a jövőbe: Firefox OS
 
NETaudIT
NETaudITNETaudIT
NETaudIT
 
Gazdag Ferenc_IDC_KormanyzatiFelho
Gazdag Ferenc_IDC_KormanyzatiFelhoGazdag Ferenc_IDC_KormanyzatiFelho
Gazdag Ferenc_IDC_KormanyzatiFelho
 
Firefox Thunderbird Seamonkey - felpörgetve!
Firefox Thunderbird Seamonkey - felpörgetve!Firefox Thunderbird Seamonkey - felpörgetve!
Firefox Thunderbird Seamonkey - felpörgetve!
 
Grid Underground projekt
Grid Underground projektGrid Underground projekt
Grid Underground projekt
 
Nagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztéseNagy terhelésű webes rendszerek fejlesztése
Nagy terhelésű webes rendszerek fejlesztése
 
StreamProxy - University of Pannonia
StreamProxy - University of PannoniaStreamProxy - University of Pannonia
StreamProxy - University of Pannonia
 
Deep reinforcement learning with DonkeyCar
Deep reinforcement learning with DonkeyCarDeep reinforcement learning with DonkeyCar
Deep reinforcement learning with DonkeyCar
 
Voip
VoipVoip
Voip
 
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényen
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényenFirefox OS előadás a Corvinus Nyári Egyetem rendezvényen
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényen
 
A Firefox-on túl is Mozilla
A Firefox-on túl is MozillaA Firefox-on túl is Mozilla
A Firefox-on túl is Mozilla
 
Firefox OS - Az Open Web megérkezik az okostelefonokra
Firefox OS - Az Open Web megérkezik az okostelefonokraFirefox OS - Az Open Web megérkezik az okostelefonokra
Firefox OS - Az Open Web megérkezik az okostelefonokra
 
Kubernetes 1x1
Kubernetes 1x1Kubernetes 1x1
Kubernetes 1x1
 
Sok a szöveg?
Sok a szöveg?Sok a szöveg?
Sok a szöveg?
 
Sa performance vision_hu
Sa performance vision_huSa performance vision_hu
Sa performance vision_hu
 

More from Mihály Mészáros (13)

GÉANT TURN pilot
GÉANT TURN pilotGÉANT TURN pilot
GÉANT TURN pilot
 
SIP Tutorial/Workshop 0
SIP Tutorial/Workshop 0SIP Tutorial/Workshop 0
SIP Tutorial/Workshop 0
 
SIP Tutorial/Workshop 3
SIP Tutorial/Workshop 3SIP Tutorial/Workshop 3
SIP Tutorial/Workshop 3
 
SIP Tutorial/Workshop 2
SIP Tutorial/Workshop 2SIP Tutorial/Workshop 2
SIP Tutorial/Workshop 2
 
SIP Tutorial/Workshop 4
SIP Tutorial/Workshop 4SIP Tutorial/Workshop 4
SIP Tutorial/Workshop 4
 
SIP Tutorial/Workshop 1
SIP Tutorial/Workshop 1SIP Tutorial/Workshop 1
SIP Tutorial/Workshop 1
 
Webrtc puzzle
Webrtc puzzleWebrtc puzzle
Webrtc puzzle
 
5th tf webrtc-welcome
5th tf webrtc-welcome5th tf webrtc-welcome
5th tf webrtc-welcome
 
OAuth and STUN, TURN in WebRTC context RFC7635
OAuth and STUN, TURN  in WebRTC context RFC7635OAuth and STUN, TURN  in WebRTC context RFC7635
OAuth and STUN, TURN in WebRTC context RFC7635
 
Stun turn poc_pilot
Stun turn poc_pilotStun turn poc_pilot
Stun turn poc_pilot
 
WebRTC Identity in SAML Federations
WebRTC Identity in SAML FederationsWebRTC Identity in SAML Federations
WebRTC Identity in SAML Federations
 
WebRTC eduCONF
WebRTC eduCONFWebRTC eduCONF
WebRTC eduCONF
 
Webrtc
WebrtcWebrtc
Webrtc
 

WebRTC - Hol tartunk ma?

  • 1.
  • 2. Barangolás a WebRTC világában. Hol tartunk ma? Mészáros Mihály 2017.11.15.
  • 4. RTC ● Valós Idejű Kommunikáció – Hang, Mozgókép, Adat ● Real Time Communication – VoIP – Telepresence – Streaming – Adat Kollaboráció ● Együtt rajzolás – stb. Forrás: https://geek-and-poke.com
  • 5. Definíció ● Mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols. ● WebRTC: “A framework, protocols and application programming interface that provide real time interactive voice, video and data in web browsers and other applications” ● WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
  • 6. WebRTC == ? ● Amit biztos ismerünk: – Skype – Facebook messenger – appear.in (?) ● Google Refrencia app – https://appr.tc/ ● Mi történik a háttérben – about:webrtc – chrome:webrtc-internals
  • 7. Előnyök ● Pluginok nélkül ● Installáció nélkül ● Univerzális Multimédia Motor – hang,videó,adat – szinkronizáció ● Peer 2 Peer ● Tűzfalátjárás/Kapcsolat életben tartás ● Web API elrejti a komplexitást ● Biztonság tervezéstől – Magánélet védelme – Azonosítás, Titkosítás ● Implementáció elérhető – Natív/Mobil platformokon is ● Tetszőleges Signaling protokoll ● Alacsony késleltetés ● Adaptív Torlódásvezérlés ● FEC
  • 8. Számokban ● Új piac ● >1,5 milliárd perc audio/video kommunikáció/hét – 45%-kal nőtt a tavalyi év óta ● >1300 Vendor és Projekt ami WebRTC-t használ ● ~ 3,5-4Mrd aktív böngésző (2016 Nov) – 2 Mrd aktív Chrome (57,1% piaci részesedés) ● 80% a böngészőknek WebRTC képes – chrome, firefox, opera, edge, safari ● Temérdek felhasználási lehetőség ● CPaaS (Communications Platform as a Service)
  • 9. Felhasználási lehetőségek ● Távoktatás/Korrepetálás – WebTut ● VIDEOTORIUM – CDN, webtorrent ● Streaminng/Webcast – Böngészőből szemináriumok közvetítése ● 4K/(8K?), 360fok imerzív videó átvitel ● Közös Tábla/rajzolás ● Adatgyűjtés/Control IoT ● Alacsony késleltetésű audio átvitel /Együtt Zenélés?/ ● stb.
  • 10. Architektúra Mi van a motorháztető alatt?
  • 11. WebRTC != egyszerű portéka SSRC 1 SSRC N SRTP keying Data SCTP SRTP DTLSSTUN UDP IP . . . Media Channel Data Channel NAT Traversal Forrás: https://upload.wikimedia.org/wikipedia/commons/7/7f/Pile_de_protocoles_d%27%C3%A9change_de_m%C3%A9dias_WebRTC.svgForrás: https://geek-and-poke.com
  • 13. Történelem Egyszer volt, hol nem volt... Web-en innen és túl..
  • 14. 7 éve egy nyári napon... 2010 2017
  • 15. A kezdet ● 2009 Google Chrome csapat WebRTC gondolat megszületése ● 2010 Nyarán IETF 78 Informális ebéd Google, Microsoft, Apple, Mozilla, Skype, Ericsson, stb. ● 1 napos workshop http://rtc-web.alvestrand.com/ – IETF WG, W3C WG ● 2011 Januárban lezárult a Global IP Solutions Google általi felvásárlása ● 2011 Május 5. W3C WebRTC WG hivatalosan is elindul ● 2011 Június 1. Google bejelenti WebRTC nyílt forrású sw csomagot(GIPS), és a chrome integrációt. ● 2011 November Chrome 23 WebRTC támogatás
  • 16. Első fecskék ● 2013 Január - Firefox 20 WebRTC támogatás (csak GuM) ● 2013 Február - Chrome Mozilla/Firefox interoperabilitás ● 2013 Július - Chrome for Android WebRTC támogatás ● 2013 Szeptember - Firefox for Android WebRTC támogatás ● 2013. Október 30. - Open H.264 (Cisco+Mozilla) ● 2013 Október - Opera 18 Beta WebRTC debütálás
  • 17. Codec Mandatory To Implement ● MTI Audio codec: – Opus és G711 ● MTI Video – konfliktus az RTCWEB munkacsoportban (IETF) – MTI Video Codec (Codec háború) ● VP8 vs H.264 ● (VP9 vs H.265) ● Alliance for Open Media – AOMedia Video 1 (AV1) Fejlesztés – Amazon, Cisco, Google, Intel, Microsoft, Mozilla, Netflix stb.
  • 18. Folyamatos fejlődés ● 2014 Szeptember OpenWebRTC (Ericsson) ● 2014 Október MicroSoft Edge ORTC támogatás bejelentés ● 2014 November MTI Video Codec konszenzus – A böngészőknek VP8 és H.264 is kötelezően implementálandó ● 2015 Szeptember MicroSoft Edge ORTC/WebRTC támogatás ● 2015 November Mozilla Canvas CaptureStream ● 2016 Január VP9 Chrome ● 2016 Április ICE Restart FireFox 48
  • 19. Napjaink ● 2017 A fő cél befejezni a WebRTC 1.0 szabványosítását – Stabilitás és megbízhatóság a fő cél – Feature freeze – Csak hibajavítások ● 2017 Június - Safari 11 WebRTC támogatás ● 2017 Október - KITE WebRTC paltform test (google/cosmo) ● 2017 Október - Third Party Audio codec támogatás ● 2017 November - WebRTC PeerConnection CR
  • 21. Egy szabvány mindenek felett! Forrás: https://xkcd.com Forrás: https://geek-and-poke.com Forrás: https://upload.wikimedia.org/wikipedia/commons/6/63/AnneauUnique.png
  • 22. Szabványosítás ● API és Szabványosítás – W3C (WEBRTC) HTML5 részeként JS API ● A cél komplexitás elrejtése a Web programozók elől – IETF (RTCWEB) ● Nem csak szabvány, hanem Referencia Implementáció is ● By Design – Titkosítás és Magánélet védelme, Tűzfalátjárás ICE, IPv6! ● Offer / Answer alapokon (SDP) vs. ORTC! ● Nem definiál a Signaling protokollt! (Bármi SIP/XMPP stb.)
  • 23. JSEP JavaScript Session Establishment Protocol Forrás: http://html5rocks.appspot.com/en/tutorials/webrtc/basics/jsep.png
  • 25. Státuszjelentés ● W3C – WebRTC 1.0 ● → Candidate Release – Media Capture and Streams ● Candidate Release – Stats ● Working Document ● IETF – JSEP ● → RFC – DataChannel ● ~ RFC – RTP Usage ● ~ RFC – A/V Codecs ● RFC
  • 26. Adapter.js ● Élő szabvány ● Implementációs hézagok áthidalása ● Hézagok – Szabványosítás és implementáció – Implementáció és implementáció Forrás: http://art.fritsahlefeldt.com/photo/2415/Mind-the-gap-no-text-Color-illustration.html
  • 29. Azonosítás ● SRTP-DTLS titkosítás ● Személyazonosság és titkosító kulcs kriptográfiai összekapcsolása ● WebRTC Biztonsági modell – OpenID Connect – BrowserID – (SAML lásd: TF-WebRTC) Forrás: https://hikingartist.com/2012/01/03/cat-and-dog-online-2-0/
  • 30. TŰZFAL/NAT átjárás Hogyan megy át a tű fokán a teve, ezen fő a napkeleti bölcseknek a feje.
  • 31. A Tűzfal kívül tartja a nem kívánatos forgalmat..
  • 32. Egyben megnehezíti a valós idejű kommunikációt. :-/
  • 33. Cél: Szabványos NAT / Tűzfal-átjárás biztosítás az RTC szolgáltatások számára
  • 34. ● Miért gond, ha befalazzuk az ajtót és az ablakot? ● Az Internet ma: – NAT (különböző fajtái), – Tűzfal (csomagszűrés), – IPv4 => IPv6 áttérés, – Multihomed eszközök, stb. ● TCP nem ideális valós idejű tartalmak számára.
  • 35. A Jég és a Tűz
  • 36. ICE működése ● Discovery and Candidate gathering – Allocation ● Prioritisation ● Exchange ● Connectivity Check – Frozen Algorithm ● Coordination ● Communication
  • 37. IP cím, és port felfedezés ● Candidate pair – IP address, port, protocol ● Types – Relayed – Reflexive ● Server, Peer – Host TURN Server NAT UA Y:y X':x' X:x Public Internet
  • 38. RFC4787 ● REQ-1: – A NAT MUST have an "Endpoint-Independent Mapping" behavior. ● REQ-8: – If application transparency is most important, it is RECOMMENDED that a NAT have "Endpoint-Independent Filtering" behavior. If a more stringent filtering behavior is most important, it is RECOMMENDED that a NAT have "Address-Dependent Filtering" behavior. ● a) The filtering behavior MAY be an option configurable by the administrator of the NAT.
  • 39. RFC 4787 and RFC 5780 vs RFC 3489 ● Mapping – EIM – ADM – APDM ● Filtering – EIF – ADF – APDF Forrás: http://www.netmanias.com/en/?m=view&id=techdocs&no=6065
  • 41. Mapping Felismerés ● TEST I – Primary IP, Primary Port ● TEST II – Alternate IP, Primary Port ● TEST III – Alternate IP, Alternate Port Forrás: http://www.netmanias.com/en/post/techdocs/6067/nat-stun/nat-behavior-discovery-using-stun-rfc-5780
  • 43. Filtering Felismerés ● TEST I – Primary IP, Primary Port ● TEST II – Change Request IP and Port ● TEST III – Change Request Port Forrás: http://www.netmanias.com/en/post/techdocs/6067/nat-stun/nat-behavior-discovery-using-stun-rfc-5780
  • 44. Linux NAT ● Symmetric NAT – Address and Port dependent Mapping – Address and Port dependent Filtering ● iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE --random ● Port restricted Cone NAT – Endpoint Independent Mapping – Address and Port dependent Filtering ● iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • 45. Port Randomizálás ● Recommendations for Transport-Protocol Port Randomization – https://tools.ietf.org/html/rfc6056 ● Updates to Network Address Translation (NAT) Behavioral Requirements (RFC4787++) – https://tools.ietf.org/html/rfc7857 ● Min segít? pl. DNS cache mérgezés / Kaminsky támadás – http://unixwiz.net/techtips/iguide-kaminsky-dns-vuln.html ● De még a port randomizálás sem véd minden támadás ellen. – https://arxiv.org/pdf/1205.5190.pdf
  • 46. Szimmetrikus NAT felismerés böngészőből ● https://webrtchacks.com/symmetric-nat/ ● https://jsfiddle.net/5ftsd5c2/17/ STUN Server #1 STUN Server #2 A címed: 192.0.2.10:8000 A címed: 192.0.2.10:7000
  • 48. Symmetric NAT minta kimenet $ turnutils_natdiscovery -f -m rfc5780.turn.geant.org … ======================================== NAT with Address and Port Dependent Mapping! ======================================== … ======================================== NAT with Address and Port Dependent Filtering! ======================================== $
  • 49. Campus NAT Behaviors EIM/EIF EIM/ADF EIM/APDF APDM/APDF Linux Default --random --random-fully BSD static-port Default Juniper vSRX "persistent-nat any-remote-host" "persistent-nat target-host" "persistent-nat target-host- port" Default Cisco ios Default Checkpoint 21400 Default
  • 50. SOHO NAT Behaviors EIM/EIF EIM/ADF EIM/APDF APDM/APDF TP-Link Default Mikrotik RouterBOARD Default Lede 17.0.2 (Linux) Default --random PF-Sense (BSD) static-port Default
  • 51. Internet Megosztás NAT Behaviors EIM/EIF EIM/ADF EIM/APDF APDM/APDF Win 10 Pro Default macOS Default iOS Default Android Default
  • 53. callstats.io WEBRTC - METRICS REPORT - 2017/01
  • 55. GÉANT TURN Pilot ● https://turn.geant.org ● 3 féle authentikáció ● Elosztott infrastruktúra ● Európai közös erőfeszítés ● Szabványosítás (W3C, IETF) ● Cél – Legközelebbi szerver használata – Média forgalom GÉANT hálózaton belül tartása
  • 59. Long Term Credential ● Firefox TURN setup – media.peerconnection.use_document_iceservers – media.peerconnection.default_iceservers ● CSipSimple – https://en.wikipedia.org/wiki/CSipSimple – PJSIP
  • 60. Knockplop ● Alap WebMeeting ● Szobák – Képernyő megosztás – Chat ● P2P – Teljes Összekapcsolt – Full Mesh ● Fogd és vidd rendezés ● MIT licenc ● node.js – web/https: express – signaling: socket.io ● Gulp ● GÉANT TURN – RTT TURN test ● Test mirror – https://github.com/so010/knockplop
  • 63. Tesztek Hogy állunk? Mikor érünk már oda? Ott vagyunk már?
  • 64. WPT és KITE Forrás: https://www.w3.org/2011/04/webrtc/wiki/images/8/8a/WebRTCWG-2017-TPAC.pdf
  • 65. W3C: Test the Web Forward Forrás: https://sny.no/2014/09/twpwd/testtwf.png
  • 66. Eszközök ● Test the Web Forward / WebPlatformTests(WPT) – Stand-alone tests – https://wpt.fyi/webrtc – http://web-platform-tests.org/ – http://testthewebforward.org/ ● KITE (Karoshi Interoperability Testing Engine) – COSMO consulting (http://webrtcbydralex.com/) – Manually testing webrtc interop felt like “death by overwork” ● https://drive.google.com/file/d/0B398g_p42xgrdWVxaXU3amh2VUU/view
  • 68. Is WebRTC Ready yet? http://iswebrtcreadyyet.com ● Kész van? ● Mikor használható élesben?
  • 69. A kezdet vége WebRTC 1.0 PR a láthatáron! (Az ördög a részletekben..)
  • 70. Összegzés ● WebRTC 1.0 avagy a web multimédia képessé tétele jól halad! ● Nagy gyártók viszonylag harmonikusan, vállvetve dolgoznak – Nyílt Szabvány, Nyílt Forrás, Referencia implementáció – Mára az összes nagyobb böngésző támogatja ● Összefogás a szabvány fejlesztésére – Google, Mozilla, Cisco, Microsoft, stb. – Sok nagy cég, sok üzleti érdek => Ezek sokszor nehezen összehangolhatóak ● eddig jól sikerült kezelni a konfliktusokat ● WebRTC NV = Mélyebb API-k – QUIC, Pokolba az SDP-vel => ORTC, AR/VR, SVC, Simulcast, Snowflake, stb.
  • 71. Divatos Hívószavak vs. WebRTC ● Big Data – Hívás Statisztikák elemzése pl. ELK + Knockplop ● IoT (> Raspberry Pi) – Videómegfigyelés – DataChannel valósidejű adatgyűjtés ● AI/Machine Learning – Computer Vision ● TensorFlow + GuM demo ● 5G – Smooth roaming ● ICE Restart, STUN API snowflake ● Mobile First – iOS, Android sdk ● Serverless Architecture – WebTorrent – Video CDN (Peer5) ● Blockchain – NIMIQ (P2P kommunikáció WebRTC data Channel) – Netflix vizsgálja (CDN) ● Codec – AV1 – Simulcast, SVC, AR/VR, Audio Codec plugin – Nagy felbontás ● 4K PSNC Demó
  • 73. ● https://webrtc.org ● https://codelabs.developers.google.com/codelabs/webrtc-web ● https://turn.geant.org ● https://api.turn.geant.org ● https://meet.uninett.no ● https://lutra.lab.vvc.niif.hu ● https://github.com/up2university/docker-moodle ● https://webtorrent.io ● https://instant.io ● https://wiki.mozilla.org/Media/WebRTC/Privacy ● https://idevelop.ro/ascii-camera Hivatkozások