VoIP

VoIP e Software Libero – LinuxDay 2010

Presentazione sul VoIP e le soluzioni di software libero tenuta al Linux Day 2010, scaricabile da slideshare.

L’EVOLUZIONE DELLE RETI TELEFONICHE DA PSTN (analogiche)
ALLE NUOVE TECNOLOGIE SU IP (digitali)

Come funziona la telefonia tradizionale?

Quando alziamo la cornetta ci colleghiamo alla centrale telefonica più vicina tramite un circuito elettrico, la centrale ci trasmette il tono di libero.

Il numero composto tramite toni (DTMF) o impulsi viene interpretato dai circuiti elettrici della centrale a cui siamo connessi.

La centrale comunica con le altre centrali creando un circuito elettrico unico (commutazione) tra il chiamate e il chiamato.

La telefonia tradizionale è morta

Sono anni ormai che le centrali della vecchia “SIP” sono “digitali”, sfruttano le tecnologie VoIP per trasmettere le voce da un punto all’altro della rete telefonica. Resta “tradizionale” soltanto il così detto “ultimo miglio”.

Altri operatori, oggi, come ad esempio fastweb, tiscali, superano già il concetto di “ultimo miglio” portando nelle nostre case gateway VoIP che simulano le linee telefoniche.

Come funziona la telefonia digitale?

Le segnalazioni tra centrali non sono più codificate tramite impulsi elettrici ma tramite protocolli informatici (commutazione a pacchetto).

La voce non viaggia più come un onda elettrica ma è convertita in dati: allo stesso modo in cui oggi non abbiamo più il disco di vinile ma l’MP3.

Non esiste più un unico circuito ma “n” percorsi che i pacchetti dati intraprendono lungo la rete.

Il protocollo “IP” è il nuovo mezzo trasmissivo.

Concetti di base:
il significato di “VoIP”
e la trasmissione della “voce”

Cosa significa VoIP?

VoIP in inglese è la sigla per “Voice Over IP”.

Ovvero la traduzione in italiano di “tecnologia di trasmissione della voce tramite commutazione a pacchetto IP”.

Trasmissione della voce

La trasmissione della voce si basa sul convertire la “pressione dell’aria” registrata da un microfono in un segnale elettrico

Solo le frequenze da 300 a 4000 Hz (spettro) vengono trasmesse, una piccola parte delle nostre capacità uditive

Digitalizzazione e campionamento

Nel VoIP il segnale elettrico proveniente dal microfono viene “campionato” a 8000 Hz e “quantizzato” (compresso) secondo determinati algoritmi matematici.

La qualità rispetto alla telefonia tradizionale non cambia in quanto lo spettro delle frequenze utilizzato e il medesimo della telefonia analogica

I Codec

L’algoritmo matematico utilizzato per la “quantizzazione” (codifica) è in gergo detto “codec”.

I codec comprimono i dati provenienti dal “campionatore” riducendo il numero di dati che vengono trasmessi a scapito della quantità di CPU utilizzata per comprimere questi dati e della qualità della voce.

I principali codec

A 8000 Hz il campionamento di 1 secondo a 16bit di audio produce 128 Kbps (di dati) che vengono compressi con:

– PCM (G.711 U/A) 64 Kbps

–G.729a: 8 Kbps

–G.726 (ADPCM): 16, 24, 32 e 40 Kbps

–G.723.1: 5.3 Kbps

–GSM Full Rate: 13 Kbps

–iLBC: 16.2 Kbps

–Speex: da 2 a 44 Kbps (configurabile)

Il problema del payload

●Siccome il protocollo IP si comporta come un TIR in cui una motrice trasporta un rimorchio con le merci, allo stesso modo la quantità di dati trasmessi su una linea dati aumenta

●Esempio: 1 secondo di conversazione in G.711 che contiene 64 Kbps di dati viene trasmesso utilizzando 80Kbps di banda (!)

●Infatti quando si parla di Kbps in relazione a dei codec voip si intende la quantità di dati da trasmettere non l’effetiva occupazione di banda IP

Codec e brevetti

●I brevetti incidono sul VOIP

●In particolare il codec G.729

–uno dei più usati perché offre uno dei migliori rapporti qualità/compressione

–È brevettato, richiede pagamento di royalty per l’utilizzo

–In alcuni casi è possibile l’utilizzo gratuito per privati o no-profit (*)

I codec del futuro

Attualmente la qualità audio è la stessa degli ultimi 40 anni.

La famiglia di codec G.722 permette:

–Campionamento a 16.000Hz

–Spettro di frequenze maggiore

–Fattore di compressione elevati

Purtroppo non tutti i provider supportano questo codec. Il G.722 richiede inoltre che il telefono sia dotato di una cornetta speciale (spettro più ampio).

I PROTOCOLLI DI SEGNALAZIONE:
come e dove trasmettiamo la voce

Protocolli di segnalazione

I protocolli di segnalazione consentono di effettuare chiamate, trasferimenti e altre funzioni.

Il protocollo di segnalazione usato dai principali provider è il S.I.P. (Session Initialization Protocol)

Con il SIP potete:

–comunicare punto-punto con un altro utente/apparecchiatura

–tramite un “proxy” tramite comunicare con utenti “registrati” sullo stesso provider

–tramite un “gateway” comunicare con utenti e apparecchiature “non-SIP”

Perché SIP e non Skype?

Skype è un protocollo proprietario

Skype non è adatto per creare un servizio pubblico

Skype è peer-to-peer, anche se voi non fate nulla, altri utenti utilizzano la vostra ADSL per comunicare con terzi (*2008)

Non c’è certezza di come Skype utilizza i vostri dati personali, log, conversazioni, ecc. (*2008)

Perché SIP ?

SIP è stato progettato appositamente per creare infrastrutture telefoniche su rete IP.

SIP consente l’iterazione tra gestori diversi.

SIP è estensibile.

SIP è un protocollo pubblico disponibile tramite RFC

SIP è royalty free

Come funziona il SIP ?

Il SIP si basa sul concetto di “user agent” (client)

Lo user agent deve “registrarsi” presso un server per essere raggiungibile dagli altri utenti, praticamente è simile a un operazione di “login”.

A questo punto tramite un “proxy” le nostre chiamate vengono inoltrate a altri utenti dello stesso proxy, di altri proxy o della rete telefonica pubblica (“gateway”).

Come effettuo una chiamata SIP ?

Tramite un client:

–SOFTWARE: Ekiga, Kphone, LinPhone, Zoiper, ecc. (per windows: Zoiper, X-Lite)

–Riutilizzando un vecchio telefono analogico e collegandolo a uno speciale apparecchio (ATA) che trasforma il segnale del telefono in VOIP-SIP; es. Linksys PAP2T

–Utilizzando un telefono nativo VOIP (Grandstream, Snom, Aastra, etc.)

Ovviamente in questo modo potete chiamare un altro utente solo conoscendone l’indirizzo IP.

Come posso chiamare chiunque?

Occorre un abbonamento presso un “provider” VoIP, in Italia ci sono:

–Eutelia

–Exsorsa

–Messagenet

–McLink

–LeVoIP.it

–Squillo (NGI)

–Parla

–Univoice

–Ecc., ecc., ecc.

Il centralino VoIP

Tutti i centralini tradizionali possono essere aggiornati con costose schede per effettuare un upgrade al VoIP.

In alternativa si può utilizzare Asterisk, FreeSwitch (o qualsiasi altro software simile) possibilmente annegati in una distribuzione Linux già pronta per velocizzare l’installazione.

ATTENZIONE: far funzionare Asterisk (pensato per gli USA) in Italia non è uno scherzo (*2008)

Soluzioni “free software”

●Librerie di sviluppo:

–Sofia (Nokia) usata internamente da FreeSwitch

–GNU “oSIP” usata internamente da LinPhone

–PJSIP

●Registrar/Proxy SIP:

–Asterisk (dual licensing)

–FreeSwitch (MPL)

–Callweaver (GPL), progetto italiano!

–OpenSER => Kamailio, OpenSIPS

Qual’è il leader?

Non esiste un leader, ognuno dei progetti ha dei punti di forza non coperti dagli altri.

●Asterisk: supporto per schede telefoniche PCI e codec proprietario G.729

●Callweaver: supporto protocollo FAX T.38

●OpenSER: proxy per la gestione di grandi volumi di utenti

●FreeSwitch: riconoscimento vocale, sintetizzatore vocale, XML e LDAP, possibilità di gestire ogni aspetto del protocollo SIP, sistema di audio-conferenze avanzato

Quali applicazioni posso realizzare?

●Centrale telefonica tradizionale (PBX)

●Voicemail (segreteria telefonica + email)

●Risponditore vocale (premere 1 per X, ecc.) con menù ad albero

●Smistamento automatico delle chiamate (se la chiamata arriva dal numero X, sulla linea Y, smistala all’interno Z)

●Integrazione dei dati aziendali con la fonia

●Diventare operatore di telefonia

Un esempio di programmazione
Asterisk (semplificato)

exten=>10,1,Answer()

exten=>10,2,PlayBack(tutte-gli-operatori-sono-ora-impegnati.wav)

exten=>10,3,VoiceMail(paolo)

exten=>10,4,Hangup()

Un esempio di programmazione con FreeSwitch

<extension name=”Esempio1″>

<condition field=”destination_number” expression=”^(\d+)$”/>

<action application=”bridge” data=”sofia/profilename/$1@voip.provider.it”/>

</condition>

</extension>

CallWeaver, Asterisk, FreeSwitch

CallWeaver

●Progetto italiano

●Leader: Massimo Cetra

●Motivazioni: stack SIP, T.38

●Punti di forza: qualità, stabilità

●Punti deboli: asterisk 1.2, funzionalità mancanti, mISDN non funzionante

●Sito: www.callweaver.org

Asterisk

●Pro: possibilità di inserire e utilizzare schede telefoniche PCI per i vari allacci telefonici (PSTN, ISDN, Pri-ISDN)

●Tantissime API e funzioni che estendono la piattaforma

●Contro:

●dual licensing? (*)

●Stack SIP rozzo

●Gethostbyname() e altre chiamate bloccanti (!)

●Non scala oltre le 250 chiamate

●Insicuro (*)

FreeSwitch

●Pro:

●Gestito da 3 persone che moderano e coordinano i contributi

●XML e altre tecnologie moderne

●Stack SIP di Nokia (libsofia)

●Gestisce migliaia di chiamate

●Contro:

●Ostico per i principianti o per chi viene dal mondo asterisk (?)

●Manca l’applicazione Queue (?)

●Non supporta schede ISDN nativamente

●Sicurezza

Approfondimenti

Confronto tra Asterisk e Freeswitch (inglese):

http://www.freeswitch.org/node/117

“Asterisk e Dintorni” (e-book):

http://www.apogeonline.com/libri/88-503-1041-2/ebook/libro

Mia user page su Freeswitch:

http://wiki.freeswitch.org/wiki/User:Agx