VoIP tra teoria e pratica Michele O-Zone Pinassi
Breve storia della telefonia Il telefono è stato inventato attorno al 1860 da Antonio Meucci. Brevemente, l'apparecchio era dotato di un microfono e di un altoparlante che era fisicamente collegato, tramite un filo, ad un'altro apparecchio. La voce captata dal microfono era amplificata e trasmessa all'altoparlante dell'altro apparecchio. Il segnale elettrico inviato lungo il filo si dice analogico ed ogni apparecchio, per comunicare, deve essere fisicamente connesso all'altro, attraverso i commutatori presenti nei centralini del provider.
PSTN vs INTERNET Alice e Bob devono essere connessi entrambi alla stessa centrale telefonica Alie verrà connessa fisicamente al telefono di Bob Comunicazione analogica Alice e Bob devono essere clienti e pagare le tariffe al provider TLC Alice e Bob devono essere connessi ad Internet Alice invia su Internet pacchetti di dati destinati a Bob Comunicazione digitale a pacchetti Alice e Bob devono essere connessi ad Internet
L'idea Già dal 1995 ci furono i primi protocolli per trasmettere voce in tempo reale tramite reti IP. Di fatto nacque il VoIP: Voice over IP Si tratta, in pratica, di campionare l'audio, codificarlo ed inserirlo nel frame IP per poi trasmetterlo ad destinatario che provvede a decondificare i dati audio e riprodurli sullo speaker.
Le Implementazioni Il VoIP è fatto di due tipi di protocollo: sessione e trasporto. Attualmente esistono decine di implementazioni per il VoIP. I più famosi sono due protocolli standard: SIP (IETF) H.323 (ITU) ed uno proprietario: Skype (Skype Technology S.A.)
Sessione Per sessione si intende tutti quei dati che regolano la trasmissione, ad esempio l'autenticazione sul server VoIP, chi è il chiamante, l'id della chiamata, il codec usato per l'audio, se c'è un NAT in mezzo, etc. etc. REGISTER sip:213@10.10.10.100 SIP/2.0 Via: SIP/2.0/UDP 10.10.10.9:5069;rport CSeq: 3943 REGISTER To: sip:213@10.10.10.100 From: sip:213@10.10.10.100 Expires: 900 Call ID: 400763441@10.10.10.9 Authorization: Digest username="213", realm="asterisk", nonce="3c306025", uri="sip:213@10.10.10.100", response="00e1699f3675d646a0ad322e30b5ff5a" User Agent: UniversalSIPClient/0.0.1.1 Contact: <sip:213@10.10.10.9:5069> Content Length: 0
Trasporto Per trasporto si intende il modo in cui vengono trasmessi i dati della comunicazione. In genere si utilizza un protocollo chiamato RTP (Real Time Protocol) incapsulato in pacchetti UDP per la trasmissione su reti IP. IP UDP RTP
PBX? Teoricamente per chiamare via Internet non c'è bisogno di intermediari (le cosiddette chiamate Peer to Peer). In realtà è piuttosto scomodo dover sempre sapere che IP ha l'altra persona percui è comodo avere dei SERVIZI DI REGISTRAZIONE, o CENTRALINO (PBX) a cui posso dire qualcosa come: Hey, sono Alice ed il mio IP è 10.0.0.132 così quando Bob vorrà chiamare Alice può chiedere qualcosa come: Ciao, sono Bob ed il mio IP è 10.10.0.87 e vorrei chiamare Alice. ed il server potrà dire qualcosa come Si, te la chiamo oppure No, non c'è!.
Un pò di TEORIA: il SIP! SIP (Session Initiation Protocol) è un protocollo di segnalazione testuale simile all'http usato per iniziare, mantenere e chiudere una sessione (ad esempio una telefonata, una partita ad un gioco, etc.). La definizione del protocollo ed il suo funzionamento sono definiti nell' RFC3261. Distinguamo adesso da dispositivo utente (UA) e Proxy seguendo passo passo una sessione di CHIAMATA sul Proxy tramite protocollo SIP.
SIP
Schema architettura VoIP
Asterisk: PBX libero Asterisk è una implementazione libera di un software PBX che permette di ottenere le stesse funzioni offerte da altri sistemi proprietari con una spesa decisamente inferiore ed una maggiore flessibilità. La prima stesura di Asterisk venne realizzata da Mark Spencer, un ingegnere informatico statunitense che, attorno all'anno 2000, fondò una società che sviluppa schede d'interfaccia FXS ed FXO. Spencer sviluppò Asterisk per favorire la diffusione delle interfacce Digium e, permettendone la libera distribuzione, solleticò l'interesse di moltissimi utilizzatori professionali ed appassionati, diffondendone largamente così la conoscenza. Asterisk è oggi un punto di riferimento nel settore. La completezza dei suoi contenuti e la sua affidabilità lo rendono una piattaforma ideale per una vasta gamma di applicazioni: è utilizzato come elemento portante per realizzare mediatori RTG/IP (centralini in grado cioè di utilizzare sia le linee telefoniche tradizionali sia i canali IP), sistemi Centrex (PBX "virtuali" e centralizzati), applicazioni per la gestione di Call Center ed altro ancora. Fonte: Wikipedia (http://it.wikipedia.org/wiki/asterisk_pbx)
Cosa posso fare con Asterisk? Asterisk è una soluzione completa per realizzare il Vs PBX sia in ambito casalingo che aziendale. Offre: Caselle di posta vocale IVR (Intercative Voice Response ) Routing condizionale Multipli codec audio e video...molto altro ancora!!! La configurazione, purtroppo, avviene attraverso uno pseudo linguaggio di programmazione (ampiamente documentato) che però non è proprio banale: exten => s,n(a35),gotoif($[$["${calltrace_hunt}"!= "" ] & $["${RingGroupMethod}" = "memoryhunt" ]]?a36:a50) exten => s,n(a36),set(ctloop=0) exten => s,n(a37),gotoif($[${ctloop} > ${HuntLoop}]?a42) exten => s,n,set(ct_exten=${cut(filtered_dial,,$[${ctloop} + 1])}) exten => s,n,set(db(calltrace/${ct_exten})=${calltrace_hunt}) exten => s,n,set(ctloop=$[1 + ${CTLoop}]) exten => s,n,goto(s,a37)...
La soluzione definitiva: FreePBX La mancanza di una GUI di gestione ha portato alcuni sviluppatori a lavorare su un sistema pratico e comodo per la configurazione e la gestione di un PBX Asterisk. Posso dirvi che, IMHO, FreePBX è il miglior sistema open source di configurazione e gestione di Asterisk: Installazione facile ed intuitiva Sviluppato in PHP ed interamente basato su interfaccia Web Aggiornamenti pratici ed affidabili Internazionalizzazione (si, è anche in Italiano!) Include anche interfaccia ARI per la gestione delle caselle vocali FOP: Flash Operator Panel per una panoramica del nostro sistema VoIP Gestione estensioni (utenti), IVR, VoiceBox, suonerie, code... Invio e ricezione FAX...e molto altro ancora!
Interfacciarsi La Digium (ed anche altri) produce delle schede PCI per connettere normali linee PSTN (Analogiche) ad un PBX Asterisk. (http://www.digium.com) Ultimamente anche Skype ha avviato, insieme alla Digium, un programma di sperimentazione (attualmente Beta) per interfacciare Asterisk a Skype. Esistono comunque prodotti commerciali che già permettono di comunicare via Skype attraverso un centralino Asterisk.
Telefoni VoIP
Links http://www.asterisk.org Asterisk Il sito web di riferimento per il PBX OpenSource più famoso al mondo http://www.freepbx.org FreePBX Gestire Asterisk via web in maniera facile ed efficace http://www.voip info.org A reference guide to VoIP World Assolutamente un must! http://www.euteliavoip.com Il servizio VoIP di Eutelia interamente basato su Asterisk: potete registrare un numero geografico gratuitamente ed usarlo per ricevere/fare telefonate via VoIP! http://www.zerozone.it Il mio sito web. Troverete questa presentazione ed anche altro, oltre ai riferimenti se volete contattarmi : )
Grazie per l'attenzione! Domande?