SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
da sipML5 a Janus
Telefono WebRTC nel tuo browser
@ale_polidori
@alepolidori
medium.com/@ale_polidori
ale_polidori
WebRTC: Web Real Time Communication
● Progetto del 2011 promosso da Google
● API Javascript che consentono comunicazioni audio/video
● Supporto nativo del browser
● Comunicazione Real-Time p2p
● 3 Componenti
○ getUserMedia: accesso a camera, microfono e screen
○ RTCPeerConnection: negoziazione, codifica, decodifica, nat traversal
○ DataChannel: invio dati tra browser
● Mercato in espansione
ale_polidori
Protocolli
● Richiede 2 tipi di protocolli
○ trasporto - RTP
○ segnalazione - SIP (Session Initiation Protocol)
● RTP - SRTP (Secure Real-time Transport Protocol)
○ secure real-time transport protocol
○ crittografia
○ autenticazione messaggi
○ integrità dei dati
● RTCP - SRTCP (Secure Real-time Transport Control Protocol)
● SDP - descrive flussi audio video
● STUN, TURN, ICE (Interactive Connectivity Establishment: comunicazione p2p)
ale_polidori
Schema
IP PBX
VoIP gateway
PSTN
router
Internet
VoIP
Provider
Rete
aziendale
ale_polidori
sipML5
ale_polidori
sipML5
● Prima realizzazione di Client SIP HTML5 Open Source (Doubango Telecom 2012)
● 100% Javascript: NO PLUGIN !!! Finalmente …
● Media stack su WebRTC
● Protocollo SIP su WebSocket (UDP, TCP, TLS)
● Chiamate Audio / Video
● Messaggistica istantanea
● Presence / Condivisione screen
● Desktop & Mobile - Chrome, Firefox, Opera, Safari → supporto nativo WebRTC
● Presentato al Google I/O 2012
ale_polidori
sipML5: architettura
Javascript SIP
Javascript SDP
WebRTC
PBX (Asterisk)
HTML5 Client
websocket
PSTN
SIP Net
UDP/TCP/TLS
SRTP/SRTCP/ICE
ale_polidori
sipML5: CoDec
● Riduzione/Compressione/Decompressione di flussi dati
● Banda / Qualità (MOS) / Latenza
● Audio
○ G.711 (64 kbps)
○ Opus (6-510 kbps - costante e variabile)
● Video
○ VP8
○ H.264
ale_polidori
sipML5: un pò di codice
1. Inizializzazione Engine
2. Avvio Stack SIP
3. Registrazione Interno Telefonico
4. Avvio chiamata Audio/Video
S I P m l global object
SIPml.init
new SIPml.Stack
newSession(‘register’..
newSession(‘call-audio’..
ale_polidori
sipML5: libreria
ale_polidori
1. sipML5: inizializzazione engine
ale_polidori
2. sipML5: avvio stack SIP
ale_polidori
3. sipML5: registrazione interno telefonico
ale_polidori
4. sipML5: chiamata
ale_polidori
VoIP PBX
ale_polidori
NethServer VoIP PBX
● PBX: software che connette telefoni interni all’azienda e con la rete tradizionale PSTN
● Progetto OpenSource
● Basato su Asterisk e FreePBX
● Community: community.nethserver.org
● github.com/alepolidori/nethserver-voip-pbx-guide (6 steps)
ale_polidori
Asterisk
● PBX Open Source (Mark Spencer)
● Rete telefonica aziendale collegata a PSTN/Mobile e VoIP
● Supporta SIP su WebSocket
● Risparmio sul numero di canali in affitto dal provider
● CTI - Computer Telephony Integration
PROVIDER
AZIENDA ANALOGICO
PROVIDER
AZIENDA ASTERISK
ale_polidori
Janus Gateway
ale_polidori
Janus
● Gateway general purpose by Meetecho → WebRTC Gateway
● Comunicazione audio/video WebRTC con il browser
● Scambio messaggi JSON
● Inoltro messaggi RTP/RTCP tra browser e server-side app
● Plugin → SIP Gateway
● Adattabile anche su piccoli device
● Monitoraggio
● Interfacce: HTTP, WebSocket, RabbitMQ, ...
ale_polidori
server
Janus: architettura
janus.js
PBX (Asterisk)
HTML5 Client
HTTPS
PSTN
SIP Net
Apache ProxyPass
UDP/TCP/TLS
ale_polidori
Janus: un pò di codice
1. Inizializzazione Engine
2. Creazione di una sessione
3. Collegare il plugin SIP
4. Avvio chiamata Audio/Video
J a n u s global object
Janus.init
new Janus({...});
Janus.attach({...});
pluginHandle.createOffer
ale_polidori
Janus: libreria
● Adattatore WebRTC
webrtc/adapter
● Lib Client Janus
meetecho/janus-gateway
ale_polidori
1. Janus: inizializzazione engine
ale_polidori
2. Janus: creazione di una sessione
ale_polidori
3. Janus: collegare il plugin SIP
Handle per interagire con il plugin
ale_polidori
4. Janus: chiamata audio/video
Destinatario da chiamare
ale_polidori
5. Janus: risposta a chiamata
Accettazione della chiamata in arrivo
ale_polidori
Motivazioni tecniche
● sipML5
○ bleeding edge
○ github
○ community
○ nuove funzionalità
● Janus
○ comunicazione col webserver apache
○ supporto tecnico meetecho
○ stessa configurazione interni telefonici
○ indipendenza dal browser e implementazioni varie
○ monitoraggio
ale_polidori
Enterprise production -
● ~ 3000 installazioni ● 1000 interni ● centinaia di chiamate contemporanee
ale_polidori
https://joind.in/talk/2f4ad
ale_polidori
Riferimenti
● demo sipML5: https://github.com/alepolidori/sipml5-webrtc-phone
● demo Janus: https://github.com/alepolidori/janus-webrtc-phone
● setup VoIP PBX: https://github.com/alepolidori/nethserver-voip-pbx-guide
● sipML5
○ gruppo google: discuss-doubango
○ sito: www.doubango.org/sipml5
○ github: https://github.com/DoubangoTelecom/sipml5
● Janus
○ gruppo google: meetecho-janus
○ sito: janus.conf.meetecho.com
○ github: https://github.com/NethServer/janus-gateway
● NethCTI 3 video: https://goo.gl/oZuHhA
@ale_polidori
@alepolidori
G r a z i e !
medium.com/@ale_polidori

Weitere ähnliche Inhalte

Ähnlich wie Telefono SIP WebRTC nel tuo browser: da sipML5 a Janus

Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPCAndrea Dottor
 
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK Riccardo Galletti
 
Come funziona il voip
Come funziona il voipCome funziona il voip
Come funziona il voipLuca
 
SignalR, il WebSocket che tanto ci mancava
SignalR, il WebSocket che tanto ci mancavaSignalR, il WebSocket che tanto ci mancava
SignalR, il WebSocket che tanto ci mancavaAndrea Tosato
 
Presentazione Corso Mini centralino
Presentazione Corso Mini centralinoPresentazione Corso Mini centralino
Presentazione Corso Mini centralinoGiuseppe Mazzucato
 
Il futuro di Windows Phone
Il futuro di Windows PhoneIl futuro di Windows Phone
Il futuro di Windows PhoneMatteo Pagani
 
Gordionet Education Seminario ICT Digitalizzazione e Comunicazione
Gordionet Education Seminario ICT Digitalizzazione e ComunicazioneGordionet Education Seminario ICT Digitalizzazione e Comunicazione
Gordionet Education Seminario ICT Digitalizzazione e ComunicazioneGordionet
 
Ekiga: telefonare con Gnu/Linux
Ekiga: telefonare con Gnu/LinuxEkiga: telefonare con Gnu/Linux
Ekiga: telefonare con Gnu/Linuxliviux76
 
We Tv Oghenoa
We Tv OghenoaWe Tv Oghenoa
We Tv Oghenoamarco
 
Ekiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/LinuxEkiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/LinuxStefano Sabatini
 
Integrazione fra sistemi telefonici e sistemi informativi:grazie a SIP cade u...
Integrazione fra sistemi telefonici e sistemi informativi:grazie a SIP cade u...Integrazione fra sistemi telefonici e sistemi informativi:grazie a SIP cade u...
Integrazione fra sistemi telefonici e sistemi informativi:grazie a SIP cade u...GoWireless
 
Smau Padova 2018 - Elmat&Cambium Networks
Smau Padova 2018 - Elmat&Cambium NetworksSmau Padova 2018 - Elmat&Cambium Networks
Smau Padova 2018 - Elmat&Cambium NetworksSMAU
 
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)Andrea Grandi
 
Cloudup, cloud server al minuto
Cloudup, cloud server al minutoCloudup, cloud server al minuto
Cloudup, cloud server al minutoENTER S.r.l.
 
IoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architettureIoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architettureStefano Valle
 

Ähnlich wie Telefono SIP WebRTC nel tuo browser: da sipML5 a Janus (20)

Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
 
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
Tesi Asterisk: CONFIGURAZIONE DI UN SERVIZIO VOIP CON ASTERISK
 
Come funziona il voip
Come funziona il voipCome funziona il voip
Come funziona il voip
 
SignalR, il WebSocket che tanto ci mancava
SignalR, il WebSocket che tanto ci mancavaSignalR, il WebSocket che tanto ci mancava
SignalR, il WebSocket che tanto ci mancava
 
Presentazione Corso Mini centralino
Presentazione Corso Mini centralinoPresentazione Corso Mini centralino
Presentazione Corso Mini centralino
 
Corso Centralino Libero
Corso Centralino LiberoCorso Centralino Libero
Corso Centralino Libero
 
Il futuro di Windows Phone
Il futuro di Windows PhoneIl futuro di Windows Phone
Il futuro di Windows Phone
 
Socket python
Socket pythonSocket python
Socket python
 
Connext ita
Connext itaConnext ita
Connext ita
 
Gordionet Education Seminario ICT Digitalizzazione e Comunicazione
Gordionet Education Seminario ICT Digitalizzazione e ComunicazioneGordionet Education Seminario ICT Digitalizzazione e Comunicazione
Gordionet Education Seminario ICT Digitalizzazione e Comunicazione
 
Ekiga: telefonare con Gnu/Linux
Ekiga: telefonare con Gnu/LinuxEkiga: telefonare con Gnu/Linux
Ekiga: telefonare con Gnu/Linux
 
We Tv Oghenoa
We Tv OghenoaWe Tv Oghenoa
We Tv Oghenoa
 
Ekiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/LinuxEkiga - telefonare con GNU/Linux
Ekiga - telefonare con GNU/Linux
 
Integrazione fra sistemi telefonici e sistemi informativi:grazie a SIP cade u...
Integrazione fra sistemi telefonici e sistemi informativi:grazie a SIP cade u...Integrazione fra sistemi telefonici e sistemi informativi:grazie a SIP cade u...
Integrazione fra sistemi telefonici e sistemi informativi:grazie a SIP cade u...
 
Smau Padova 2018 - Elmat&Cambium Networks
Smau Padova 2018 - Elmat&Cambium NetworksSmau Padova 2018 - Elmat&Cambium Networks
Smau Padova 2018 - Elmat&Cambium Networks
 
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)
L'uso del VOIP in azienda (LinuxDay 2010 - Pistoia)
 
il VoIP
il VoIPil VoIP
il VoIP
 
Cloudup, cloud server al minuto
Cloudup, cloud server al minutoCloudup, cloud server al minuto
Cloudup, cloud server al minuto
 
beroNet GmbH
beroNet GmbHberoNet GmbH
beroNet GmbH
 
IoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architettureIoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architetture
 

Mehr von Alessandro Polidori

JS Audio/Video Streaming: WebRTC APIs 101 explained
JS Audio/Video Streaming: WebRTC APIs 101 explainedJS Audio/Video Streaming: WebRTC APIs 101 explained
JS Audio/Video Streaming: WebRTC APIs 101 explainedAlessandro Polidori
 
Presentation @ Node.js Global Summit 2020 - Online
Presentation @ Node.js Global Summit 2020 - OnlinePresentation @ Node.js Global Summit 2020 - Online
Presentation @ Node.js Global Summit 2020 - OnlineAlessandro Polidori
 
Presentation at ClueCon 2019 - Chicago, IL, USA 🇺🇸
Presentation at ClueCon 2019 - Chicago, IL, USA 🇺🇸Presentation at ClueCon 2019 - Chicago, IL, USA 🇺🇸
Presentation at ClueCon 2019 - Chicago, IL, USA 🇺🇸Alessandro Polidori
 
Presentation at JSConf.be 2019 - Alessandro Polidori
Presentation at JSConf.be 2019 - Alessandro PolidoriPresentation at JSConf.be 2019 - Alessandro Polidori
Presentation at JSConf.be 2019 - Alessandro PolidoriAlessandro Polidori
 
Asterisk WebRTC frontier: make client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: make client SIP Phone with sipML5 and Janus GatewayAsterisk WebRTC frontier: make client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: make client SIP Phone with sipML5 and Janus GatewayAlessandro Polidori
 
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus GatewayAsterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus GatewayAlessandro Polidori
 
Alessandro polidori nextcloud conf 2018
Alessandro polidori   nextcloud conf 2018Alessandro polidori   nextcloud conf 2018
Alessandro polidori nextcloud conf 2018Alessandro Polidori
 

Mehr von Alessandro Polidori (7)

JS Audio/Video Streaming: WebRTC APIs 101 explained
JS Audio/Video Streaming: WebRTC APIs 101 explainedJS Audio/Video Streaming: WebRTC APIs 101 explained
JS Audio/Video Streaming: WebRTC APIs 101 explained
 
Presentation @ Node.js Global Summit 2020 - Online
Presentation @ Node.js Global Summit 2020 - OnlinePresentation @ Node.js Global Summit 2020 - Online
Presentation @ Node.js Global Summit 2020 - Online
 
Presentation at ClueCon 2019 - Chicago, IL, USA 🇺🇸
Presentation at ClueCon 2019 - Chicago, IL, USA 🇺🇸Presentation at ClueCon 2019 - Chicago, IL, USA 🇺🇸
Presentation at ClueCon 2019 - Chicago, IL, USA 🇺🇸
 
Presentation at JSConf.be 2019 - Alessandro Polidori
Presentation at JSConf.be 2019 - Alessandro PolidoriPresentation at JSConf.be 2019 - Alessandro Polidori
Presentation at JSConf.be 2019 - Alessandro Polidori
 
Asterisk WebRTC frontier: make client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: make client SIP Phone with sipML5 and Janus GatewayAsterisk WebRTC frontier: make client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: make client SIP Phone with sipML5 and Janus Gateway
 
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus GatewayAsterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
 
Alessandro polidori nextcloud conf 2018
Alessandro polidori   nextcloud conf 2018Alessandro polidori   nextcloud conf 2018
Alessandro polidori nextcloud conf 2018
 

Telefono SIP WebRTC nel tuo browser: da sipML5 a Janus