Approfondimenti Voip.
Nella telefonia tradizionale, indicata con la sigla PSTN (Public Switched Telephone Network), la voce umana, attraverso il microfono della cornetta telefonica, viene convertita in un segnale elettrico analogico ed inviata attraverso il doppino telefonico verso la centrale telefonica dove viene instradata attraverso le reti di dorsale fino all'apparecchio del chiamato, dove il segnale elettrico viene tradotto in voce attraverso l'altoparlante della cornetta telefonica. La principale caratteristica di questa tecnologia è la creazione e l'utilizzo di un canale fisico, detto circuito, che connette il chiamante e il chiamato utilizzato esclusivamente per il trasporto del segnale elettrico in cui è tradotta la voce. Quando viene effettuata una chiamata, questo circuito resta attivo indipendentemente dal fatto che le parti siano in conversazione o in silenzio.
Le reti telefoniche tradizionali sono connesse attraverso un doppino di rame alla rete dorsale a commutazione di circuito. Quando un utente compone un numero, questo causa la creazione di un circuito fisico fino a raggiungere l’utente chiamato, identificato in maniera univoca dal numero composto. La rete pubblica (PSTN) è divisa in tanti distretti ognuna gestita da un commutatore (centrale) capace di commutare da un minimo di alcune decine di utenti fino ad un milione di linee. Le centrali di commutazione identificate dalle prime cifre del numero di telefono composto, appena dopo il prefisso. Mentre invece le ultime 4 cifre del numero telefonico identificano l’utente all’interno della centrale. Una volta che il circuito è stato stabilito, il telefono dell’utente incomincia a squillare e il segnale vocale transita sul circuito.
Usando invece la VoIP la voce umana è tradotta in una serie di campioni numerici dal telefono o dal softphone IP, che vengono poi raggruppati in pacchetti e spediti alla destinazione, dove vengono assemblati e riconvertiti in segnali vocali. La trasmissione di questi pacchetti avviene attraverso Internet, la rete che permette ai computer di parlare tra di loro, utilizzando il protocollo IP. Questo significa inviare l’informazione contenuta nella voce in forma digitale piuttosto che attraverso i tradizionali protocolli a commutazione di circuito delle tradizionali PSTN. Cerchiamo adesso di approfondire i vari concetti.
I computer possono avere sistemi operativi diversi ma quando sono collegati tra loro, devono “parlare” la stessa lingua, hanno bisogno di un Protocollo, cioè di una serie di norme comuni, che assicuri il corretto scambio di informazioni. Il Protocollo IP implementa le regole per trasmettere i dati e gestire il traffico fra i diversi computer collegati ad Internet; esso impacchetta i dati in uscita e li invia scegliendo la strada migliore per arrivare a destinazione. Il Protocollo IP basa l’invio dei dati su di un sistema di indirizzi numerici univoci. Ogni computer collegato in Rete viene infatti individuato da un solo indirizzo numerico, nella forma XXX.XXX.XXX.XXX, determinato da quattro campi separati tra loro da un punto, in cui ogni campo può assumere valori da 0 a 255. Come esempio, si può paragonare l’IP ad una targa automobilistica con un numero univoco che permette di sapere chi è il proprietario dell’autovettura.
Gli ISP (Internet Service Providers) che ci forniscono accesso alla Rete, ci prestano una delle loro targhe (l’indirizzo IP) e tengono un registro dove viene annotato a chi, a che ora e per quanto tempo, la targa è stata assegnata.
Le tecniche di codifica della voce per la VoIP sono chiamate CoDec (CoDec = Compressione Decompressione) e vengono classificate in base alla banda, misurata in Kbit al secondo(un Kbit corrisponde a 1024 bit), in cui trasformano il flusso vocale. I Codec con alto flusso di bit consumano più banda ma richiedono meno capacità elaborativa da parte della CPU del sistema. Viceversa i bit con elevato fattore di compressione generano dei flussi di bit assai più contenuti ma richiedono maggiore potenza elaborativa da parte del terminale.
Di seguito riportiamo i principali Codecs implementati:
G.711 (64 Kb/s) è lo standard internazionale per la codifica del segnale audio telefonico su un canale a 64 Kbps. È uno schema di modulazione di codice di impulso (PCM) che funziona con una frequenza di campionamento di 8 KHz, con 8 bit per campione. Questo standard ha due forme, i.e. A-Law e µ-Law. La A-Law è lo standard per tutti i circuiti internazionali. G.711 è il codec comunemente usato per la trasmissione di voce digitale nella rete PSTN. Ma a seguito del suo alto consumo di banda, se raffrontato con altri codificatori è usato ugualmente nelle tecnologie di voce su IP, anche se è il solo codificatore esplicitamente consigliato nelle raccomandazioni.
G.722 (64/56/48 Kb/s) ITU-T G.722 è lo standard di riferimento per le trasmissioni di voce ad alta qualità a larga banda. Come tutti i codificatori vocali a larga band, anche in G.722 il segnale vocale è campionato a 16 KHz. G.722 può gestire la banda di segnali vocali e segnali audio fino a 7 KHz, in rapporto ai 3.6 KHz dei codificatori vocali a banda stretta. Il codificatore G.722 è basato sul principio Sub Band - Adaptive Differential Pulse Code Modulation (SB-ADPCM). I sistemi che utilizzano il codificatore G.722 possono funzionare in tre modi: 64, 56 e 48 Kbps.
G.723.1 (6.3 Kb/s) É lo standard ITU-T per un codificatore vocale a 2 rate, per la compressione del segnale vocale ad alta qualità (frequenza di campionamento 8 KHz). Le applicazioni tipiche di questo codificatore vocale sono nella telefonia su reti a pacchetto di telefonia, come VoIP. Questo codificatore vocale è usato frequentemente per la codifica del componente vocale nei sistemi di videoconferenza e fa parte della famiglia degli standard H. 324. Questo codificatore ha due bit rate: 5.3 e 6.3 Kbps.
G.726 (32 Kb/s) Funziona a 4 bit rate, cioè 16, 24, 32 e 40 Kbps. Questo è un codificatore di forma d’onda basato sul principio di Differential Pulse Code Modulation (ADPCM). Questo codificatore riceve in ingresso segnali campionati a 8 KHz e li converte in un formato compresso, a seconda del bit rate.
G.729 (8 Kb/s) L'appendice A (G.729A) è un campione basso del codificatore di discorso di tasso di punta da ITU-T, per discorso di compressione di qualità del tributo. G.729A è algoritmicamente più semplice ai codificatori G.729 del G.729. The e G.729A sono inter-operabili. Le applicazioni tipiche di questo codificatore di discorso sono nelle reti eccessive del pacchetto di telefonia, come VoIP.
CELP (da 2 a 44 kb/s) La tecnica di CELP è basata su tre concetti. Il primo è l'uso di un modello lineare di previsione (LP) per modellare il tratto vocale. Il secondo è l'uso delle entrate (adattabili e fisse) del codebook come input (eccitazione) del modello del LP. Il terzo è la ricerca effettuata in circuito chiuso “perceptually weighted domain”. Il codec di CELP è inoltre open source ed è disponibile con lo pseudonimo di speex (http://www.speex.org/). Speex è basato su CELP ed è destinato a comprimere la voce ai tassi di punta che variano da 2 a 44 kbps. Altre caratteristiche sono la codifica stereo di intensità, la dissimulazione di perdita del pacchetto, funzionamento Variable Bit Rate (VBR) e Voice Activity Detection (VAD).
Per instaurare una chiamata VoIP è necessario non solo disporre di Codec per il trasporto della voce, ma è anche necessario avere un protocollo per il settaggio della chiamata stessa. Come avviene nelle reti PSTN, anche in VoIP i vari utenti, chiamati client, devono essere connessi a server locali che a loro volta sono connessi ad altri server nel mondo. Diversi protocolli sono stati implementati per fare comunicare i vari server, tra cui ricordiamo H.323, MGCP, SIP.
Il protocollo ITU-T H.323 segue una architettura client-server assai simile all’approccio PSTN. I vari client interagiscono sia per lo streaming audio che per il controllo della chiamata con un insieme di nodi che coordinano e gestiscono la chiamata. Poichè SIP (Session Initation Protocol) sta diventando il protocollo più diffuso nel mondo delle telecomunicazioni, in questa sede descriviamo le caratteristiche più salienti solo di SIP trascurando gli altri protocolli.
Il protocollo SIP è alla base del VoIP ed è uno standard della Internet Engineering Task Force (IETF) come RFC3261 per l'inizializzazione di una sessione interattiva dell'utente che coinvolge elementi multimediali quali video, voce e chat. Come l’HTTP o lo SMTP, il protocollo per gestire le e-mail, SIP opera nello strato applicativo del modello di comunicazione Open Systems Interconnection (OSI). Lo strato applicativo è il livello responsabile della verifica che la comunicazione sia possibile. SIP può stabilire sessioni multimediali (come ad esempio giochi interattivi, chat, .. ) o chiamate via Internet per poi modificare i parametri on line ed infine terminarle. Il protocollo può anche invitare partecipanti a sessioni unicast o multicast che non necessariamente coinvolgono l'iniziatore. A differenza di H.323, SIP implementa una architettura distribuita in cui i vari server sono solo usati per localizzare gli utenti, avvicinandosi quindi maggiormente al paradigma Peer to Peer (P2P) che recentemente sta conoscendo un grande successo: basti pensare a Skype. Poiché il SIP supporta servizi di mapping e redirezione, è possibile per gli utenti inizializzare e ricevere comunicazioni da qualunque località e per le reti identificare gli utenti ovunque essi siano.
La pila del nucleo del protocollo SIP include:
- Supporto per Session Initiation Protocol (SIP)
- Supporto per Session Description Protocol (SDP)
- Supporto per Real Time Protocol (RTP)
- Supporto per Point to Point calling (One active Call)
- Supporto per SIP-INFO Payload
- Supporto per UDP Signalling
- Supporto per Basic, Redirection and Negotiation features

In figura riportiamo il flusso dei messaggi SIP necessari per instaurare una conversazione telefonica tra due utenti (chiamati UA: User Agent), in questo caso tra due softphone il primo funzionante su un PAD e il secondo su un computer portatile. SIP richiede che gli UA siano registrati presso un SIP proxy server. Il messaggio per settare la chiamata si chiama INVITE e viene inviato al proxy che lo redirige ad un altro SIP proxy in base alla tabella interna di instradamento delle chiamate.
Se il secondo proxy SIP conosce la locazione dell’UA invia l’invite al dispositivo con cui l’utente è registrato. Per semplicità abbiamo supposto nell’esempio che entrambi gli UA siano registrati sullo stesso SIP proxy. Il protocollo SIP richiede che alla ricezione dell’INVITE il proxy (o l’UA) rispondano immediatamente con un messaggio indicante lo stato della transazione: TRYING, RINGING, o ERRORE. Alla ricezione del messaggio di OK (l’utente ha accettato la conversazione), lo UA che ha iniziato la transazione invia direttamente, senza passare più per il proxy, l’ACK per poi iniziare il flusso audio RTP tra i due peer. Da notare che come per l’ultimo ACK, il flusso voce, trasportato da RTP, sia instaurato in modalità peer to peer direttamente tra i due client senza coinvolgere ulteriormente i server SIP.

In figura mostriamo l’intera pila protocollare IETF SIP, con le molte estensioni possibili, spesso ancora in fase di standardizzazione da parte di IETF. Lo stesso SIP fornisce tuttora poche tipologie di messaggi basati su testo che possono essere scambiati in una transazione tra due peer SIP. La sessione è descritta a due livelli. La parte protocollare SIP contiene gli indirizzi delle due parti e le caratteristiche dei media coinvolti, con il corpo del messaggio contenete i parametri SDP (Service Delivery Protocol),che è il protocollo di testo usato per la parte multimediale. Da notare che SDP non deve necessariamente descrivere una sessione VoIP, ma può riferirsi a qualsiasi flusso multimediale (video, Istantant Message, Video gaming, …) essendo completamente trasparente rispetto a SIP. A puro titolo di esempio ricordiamo le estensioni SIP per la notifica degli eventi (RFC 3265), l’update di sessione (RFC 3311), il trasferimento di chiamata (call transfer) e la chiamata in attesa (call hold).
Attualmente esistono diversi sistemi di VoIP su rete fissa. Il primo, che chiamiamo telefono a telefono, utilizza dei mediagateway che trasformano i segnali di voce dei telefoni tradizionali in pacchetti VoIP in maniera del tutto trasparente per l'utilizzatore finale. Sebbene il costo per postazione sia inferiore rispetto al costo di un (buon) telefono IP, queste soluzioni non permettono di beneficiare dei vantaggi del VoIP poichè non permettono di implementare completamente i nuovi servizi. Il secondo sistema, quello PC a PC, spesso in modalità peer to peer , cioè senza un proxy in mezzo, permette di instaurare una chiamata VoIp direttamente tra i due computer dell'utente senza usare la rete telefonica pubblica. Il terzo sistema, che chiamiamo PC a telefono, permette di collegare dei telefoni tradizionali ad una rete IP attraverso del gateway che eseguono le operazioni di traduzione necessarie per far parlare gli utenti connessi con un PC alla telefonia tradizionale. Questo pero' richiede cheente VoIP abbia anche un numero di telefono tradizionale od usi un operatore che gli offra questo servizio (come SkypeIN).

