1.1. Introduzione
L'argomento Voce su IP è, sicuramente, uno dei più gettonati dell'intero
mondo del networking. Tecnicamente, con questa tecnologia si intende il
trasporto di traffico di tipo telefonico fonia)
( su una rete in tecnologia IP.
Considerando che la tecnologia telefonica è un'invenzione tutt'altro che recente e
che la possibilità di effettuare telefonate è ormai di dominio pubblico da oltre un
secolo, quali sono i motivi di tutta questa enfasi?
Per realizzare il circuito virtuale tra le parti è necessaria inoltre una fase di
segnalazione e di set-up che possono richiedere un tempo anche dell'ordine del
secondo, con un considerevole lavoro di gestione della chiamata da parte della
rete.
quindi la gestione più efficiente della banda. Inoltre, non avendo il limite dei
64kbps permette anche il trasporto di traffico con bitrate più elevati, ad esempio
per il trasporto di voce con qualità superiore.
Come si vedrà in seguito, uno dei problemi principali della rete IP è proprio la
fornitura di determinate garanzie di qualità alla telefonata.
Una visione di questo tipo ha, ovviamente, anche alcuni aspetti negativi. Il
primo fra tutti è che il servizio telefonico fornito all'utente finale non si
avvantaggia di nessun miglioramento con il passaggio del backbone telefonico in
tecnologia VoIP. In altre parole, il passaggio da una telefonata in tecnologia
classica ad una in tecnologia VoIP non inserisce nessuna novità nel modo con cui
l'utente finale percepisce il servizio. Questo implica che la visione "telecom" della
VoIP non è orientata ad un miglioramento del servizio, ossia non è in grado di
fornire quelle nuove possibilità (interazione audio, video, dati) permesse invece
dalla visione "consumer". I motivi dell'adozione di tecnologie VoIP da parte del
gestore telefonico vanno quindi ricercati altrove e principalmente nella
prospettiva di una maggior economicità di gestione dell'infrastruttura.
Con l'attuale prevalere del traffico dati, potrebber diventare più conveniente
fare il contrario: costruire dei canali in tecnologia dati (una fra tutte, Ethernet e i
suoi derivati a lunga distanza), quindi forzare la voce a passare su questi canali.
Anche in questo caso l'infrastruttura di rete, sotto certi aspetti, sarebbe comune
tra i due servizi con gli ovvi vantaggi economici e di gestione.
Il secondo motivo che spinge verso integrazione della telefonia su una rete
dati è l'esigenza, da parte di quest'ultima, di poter differenziare diversi tipi di
traffico su di essa. Storicamente, la tecnologia IP (e Internet che è la sua
incarnazione più famosa) non ha mai posto in grande risalto la necessià di poter
differenziare, all'interno della rete, il servizio fornito ai pacchetti IP.
Banalizzando, un normale tasferimento file può sopportare senza problemi un
rallentamento nel flusso dati, mentre una sessione interattiva (si pensi al telnet,
alla chat, oppure ad un sistema di prenotazioni quali le prenotazioni aeree)
richiede che la rete porti a destinazione i pacchetti in tempi estremamente
rapidi, senza rallentamenti.
1.2.1.1. Campionamento
1.2.1.2. Codifica
Un buon codec CELP può produrre una qualità del tutto analoga a quella di
un flusso PCM a 64 kbps, però impiegando 16 kbps. In aggiunta, può utilizzare
una banda ancora inferiore, producendo un suono artificiale. I codec CELP di tipo
base usati nelle applicazioni VoIP, detti anche Low Delay CELP o LD CELP, sono
identificati dalla sigla ITU G.728.
Stante i limiti sulla scelta dei codec visti in precedenza, questi codificatori
molto aggressivi sono utilizzati prevalentemente nel caso di interazione PC-to-
PC, dove non sono presenti le limitazioni di cui sopra.
Una tecnica che è spesso abilitata nei codec VoIP è la soppressione dei
silenzi. Questa si basa su due semplici osservazioni:
Nel caso in cui un codec sia in grado di gestire la soppressione dei silenzi, i
pacchetti vocali (inutili, a questo punto) non verranno trasmessi.
Questa tecnica, per quanto sia utile per ridurre la banda impiegata in una
comunicazione, introduce due problemi non indifferenti.
Il primo problema è dovuto al fatto che gli utenti telefonici sono abituati ad
ascoltare in sottofondo alla comunicazione una sorta di rumore bianco, il
cosiddetto "fruscio di fondo". Si è però verificato come l'assoluto silenzio della
cornetta disturbi la persona umana, che è portata a pensare che la
comunicazione sia stata abbattuta.. Per ovviare a questo primo problema, spesso
il ricevitore genera autonomamente un fruscio che rende più confortevole la
conversazione: il fruscio viene percepito dagli interlocutori come segnale che la
connessione tra i due è ancora attiva.
Questo può essere fatto nel sistema d'elaborazione digitale dell'audio, come
parte del processo di elaborazione eseguito dal codec: il sistema campiona il
segnale di ritorno e sottrae qualsiasi replica dei segnali già inviati: l'efficienza
raggiunta è alta, ma la potenza elaborativa aumenta ed è possibile che si
introducano ulteriori ritardi.
1.2.1.3. Pacchettizzazione
adottando anche sulle reti IP un meccanismo di call setup, tale per cui la
situazione precedente è evitata grazie ad un meccanismo di prenotazione
delle risorse
adottando un sistema che ovvi parzialmente il problema dell'accodamento,
almeno per il traffico vocale; è ad esempio il caso di accodamento a
priorità (o priority scheduling).
1.2.1.5. De-jitter
1.2.1.7. Decodifica
1.2.2.1. Ritardo
Ritardi elevati possono creare alcuni disagi come Talker il Overlap , in cui il
chiamante, che è abituato a ricevere una risposta entro un certo tempo, non
sentendola arrivare a causa degli elevati ritardi, ripete la domanda che si
sovrappone alla risposta che sopraggiunge. Questo può provocare problemi sulla
sincronizzazione degli interlocutori rendendo difficile la comunicazione.
Bisogna quindi evitare che i ritardi end-to-end dei pacchetti voce superino il
limite dei 150 ms. I componenti del ritardo, così come si può estrapolare dalle
varie fasi necessarie a trasferire un flusso VoIP, sono i seguenti:
ritardo di codifica
ritardo di pacchettizzazione
ritardo di accodamento
ritardo di trasmissione
ritardo di decodifica
1.2.2.2. Banda
Un'altra caratteristica del traffico vocale è che, sebbene la banda richiesta sia
tutto sommato modesta (esistono ottimi codificatori con bit rate di uscita pari a
5.3kbps), questa deve essere disponibile per una maggiore durata temporale.
Infatti, le sessioni dati sono tendenzialmente più corte rispetto ad una sessione
voce.
1.2.2.3. Perdite
Altre tecniche sono quelle che vanno sotto il nome di layered encoding:
sostanzialmente si codificano le informazioni fondamentali in una trama, e le
informazioni "supplementari" in una successiva. Ad esempio, nel caso della
trasmissione video si potrebbe codificare il quadro video in bianco e nero in una
trama e l'informazione legata al colore in un'altra. Presupposto affinchè tutto
funzioni è che la rete sia in grado di riconoscere l'informazione principale e che
questa venga sempre recapitata a destinazione. In condizioni normali, sia la
trama base che il colore verranno recapitati. In caso di problemi, la rete
riconoscerà (in qualche maniera non meglio specificata e dipendente dalla rete
stessa) i pacchetti meno importanti e inizierà a scartarli.
RTP gestisce anche un'entità chiamataRTP Mixer . Questa entità agisce come
un mixer, appunto, ricevendo le sessioni RTP da più sorgenti e combinandole
insieme in un'unica sorgente virtuale, il mixer, appunto. Questo oggetto è utile
per diminuire il traffico sulla rete in quanto permette di compattare molte
sorgenti in una sola. In questo caso, il pacchetto RTP inserisce gli identificativi
delle sorgenti originarie del pacchetto non nel campo SSRC (che è unico) ma nel
campo CSRC.
connessione RTP/RTCP è caratterizzata da una porta UDP, per l'RTP si usa una
porta pari, mentre per l'RTCP si usa la porta dispari consecutiva.
Media Gateway
Signaling Gateway
Gateway Controller
E' chiaro come, nel caso VoIP, l'autenticazione dell'utente diventa più
problematica rispetto alla tecnologia classica. Non solo, ma questo genere di
operazioni devono essere fatte da macchine sotto il controllo del gestore della
rete: queste funzioni non possono, ovviamente, essere annegate all'interno del
terminale utente, contrariamente invece a quanto può essere fatto per la
codifica/decodifica della voce (il compito del Media Gateway).
L'esempio precedente illustra solo una delle funzioni che, per varie ragioni,
non devono essere delegate all'utente. Una seconda ragione particolarmente
importante risiede nella complicazione della segnalazione necessaria a poter
effettuare la chiamata all'interno della rete (prenotazione di risorse, etc).
Analogamente al modello utilizzato nel trasferimento dati classico (il principio
dell'instradamento indiretto, o esplicito, del protocollo IP), il terminale utente
dovrebbe preoccuparsi di gestire gli applicativi, ma non di capire come inoltrare i
pacchetti verso la destinazione finale della comunicazione: questo è il compito di
un altro apparato, il default router o gateway, appunto.
E' tuttavia impensabile, allo stato attuale, la creazione di una rete globale IP.
Saranno pertanto presenti dei punti di interconnessione tra la rete telefonica (ad
esempio quella dei gestori tradizionali) e la rete IP. Nel caso dell'azienda citata in
precedenza, vi saà un apparato (ad esempio il gateway telefonico) che, da un
lato, gestirà la rete aziendale in tecnologia IP, mentre dall'altro curerà
interfacciamento con la rete telefonica, utilizzata per le telefonate che hanno
come destinazione utenti esterni.
1.3.3.3. Rete IP
2.1. Introduzione
La raccomandazione H.323 è orientata alla
definizione di uno standard per comunicazioni
multimediali basate su reti a commutazione di
pacchetto che non prevedono qualità del servizio,
con particolare riferimento alle reti IP. Lo
standard è stato originariamente pensato per
operare su LAN, ma è stato successivamente
adattato anche per l'utilizzo in ambienti WAN.
2.2.2. Zone
E' però evidente come questi componenti debbano essere presenti (tranne
nel caso del dispositivo video e di quello dati, che sono opzionali) affinchè il
terminale possa operare. Quindi, anche se non vengono coperti dalle specifiche,
devono obbligatoriamente essere presenti.
Capacità di scambio
2.3.2. Gateway
Un endpoint H.323 può comunicare con un altro dello stesso tipo senza
invocare l'uso del gateway, il quale può essere omesso se non s'intende
effettuare comunicazioni con apparati su rete telefonica tradizionale.
2.3.3. Gatekeeper
Gestione chiamate, per esempio mantenendo una lista dei terminali H.323
con una chiamata in corso per indicare più velocemente che il numero
chiamato è occupato
2.4. Indirizzamento
L'indirizzamento su una rete H.323 prevede l'impiego di due tipi diversi di
indirizzo: la coppia indirizzo di rete / identificatore TSAP, e gli indirizzi alias.
L'assegnazione di un Gatekeeper ad un
endpoint può avvenire in modo statico,
semplicemente dicendo a quest'ultimo l'indirizzo
del Gatekeeper a cui fare riferimento, oppure in
modo dinamico (automatico).
Tale processo, simile al caso della procedura ricerca del gatekeeper, deve
avvenire prima che sia effettuata qualsiasi chiamata, ed inizia con l'invio da
parte di un endpoint di un messaggio Registration Request (RRQ) all'indirizzo del
Canale RAS di un gatekeeper, il quale potrà rispondere con un messaggio
Registration Confirmation (RCF) o Registration Reject (RRJ). Il pacchetto RRQ
contiene, tra le altre cose, anche un campo TimeToLive che specifica l'intervallo
di refresh desiderato, a cui segue la conferma (o la modifica) di tale valore nella
RCF.
2.6. Conclusioni
La suite di protocolli H.323 ha avuto una
notevole diffusione come soluzione per
implementare la telefonia su IP sia nel mondo
aziendale che nel mondo dei telecom provider.
Attualmente, la gran parte delle implementazioni
VoIP (anche di grandi operatori internazionali, ad
esempio quelli che offrono telefonate a lunga
distanza a costi ridotti) adotta questo standard.
3.1. Introduzione
Il Session Initiation Protocol (SIP) nasce in
ambito IETF con la creazione del SIP Working
Group, in collaborazione con il MMUSIC Working
Group (Multiparty Multimedia Session Control).
La proposta nasce dall'esperienza di MBone dove
si erano implementati alcuni applicativi audio/
video, i quali avevano implementato delle
semplici primitive di segnalazione. SIP nasce
come alternativa alla suite H.323 ponendo, a suo
vantaggio, la semplicità.
3.2.1. SDP
Sia per il campo "Session ID" che per il campo "version" è consigliato
utilizzare un numero derivato da NTP per garantire l'unicità della sessione.
3.2.2. RTP/RTCP
3.2.3. RTSP
User Agent Client: si occupa delle procedure necessarie a far partire una
chiamata
User Agent Server: è in ascolto di eventuali chiamate in arrivo; si occupa
della gestione delle chiamate in ingresso
La funzione del proxy server è quella solita, ossia un oggetto a cui è possibile
delegare in toto la gestione della chiamata. Questo server agirà come "server"
nei confronti della macchina originante la chiamata, e come "client" nei confronti
del terminale destinazione.
Infatti, spesso il Proxy Server è utilizzato in aziende che fanno uso di telefoni
IP anzichè di PC come terminali utente.
3.4. Indirizzamento
SIP definisce che ogni utente deve avere un
indirizzo SIP. Questo implica che l'indirizzo non è
legato al terminale, ma individua l'utente. Un
terminale, a sua volta, avrà un indirizzo fisico,
ma normalmente questo è ricavato (ad esempio
attraverso la consultazione di un server DNS/
LDAP) dall'indirizzo dell'utente. Questa scelta
favorisce la mobilità degli utenti dal momento
che la chiamata per uno stesso utente verrà
diretta su terminali diversi (indirizzi fisici) a
seconda delle regole impostate.
Nel caso in cui l'URL SIP coincide con il nome della persona più il nome
dell'azienda la privacy dell'utente, che consiste nell'avere un numero privato,
può sembrare compromessa; tuttavia, a differenza della telefonia tradizionale, i
meccanismi di SIP consentono un livello di autenticazione e di controllo di
accesso che permettono comunque di regolare l'arrivo delle chiamate verso il
proprio numero. Il controllo può essere inserito sia un un server (ad esempio il
Redirect Server), sia direttamente all'interno del terminale utente, il quale può
rifiutare le chiamate non autorizzate o indesiderate.
Il figura sono riportati alcuni esempi di URL SIP. Nel primo caso, ad esempio,
si cercherà di contattare l'utentenome.cognome@dominio.it usando il multicast
239.255.255.1 con un ttl di 15.
Nel caso in cui la porta non sia presente, la chiamata SIP procede utilizzando
la porta 5060 del protocollo di trasporto prescelto.
Il DNS fornisce due tipi di record che sono di interesse per il protocollo SIP:
SRV e NAPTR, che servono per ricavare (con una procedura piuttosto complessa
ma molto flessibile) i parametri necessari per localizzare il server SIP
responsabile di un certo dominio a cui appartiene l'utente chiamato. Tuttavia,
alcune implementazioni fanno uso del solo record SRV.
Service
Rappresenta il tipo di servizio da
risolvere; in questo caso e' SIP oppure
SIPS nel caso in cui si usi il trasporto
sicuro (TLS su TCP). Si noti come il
nome del servizio è conosciuto
dall'applicativo che sta effettuando la
risoluzione (ad esempio perchè è
contenuto all'interno dell'indirizzo, es.
sip:mario.rossi@polito.it)
Transport
Indica il protocollo di trasporto da
utilizzare, in questo esempio UDP; altri
valori sono TCP e SCTP.
Name
Dominio a cui il record in esame si riferisce: il record nell'esempio indica
che quel record si riferisce a tutte le richieste per il dominio .polito.it.
TTL
Indica la durata (in secondi) del record stesso ed è usato per definire la
massima durata della sua validità quando viene memorizzato all'interno
della cache di un altro DNS.
Class
Rappresenta la classe "Internet", quindi è sempre IN.
SRV
E' la parola chiave che identifica questo record come un record SRV.
Priority
La priorità può essere utilizzata per definire quale record ha la
precedenza, nel caso in cui ne esistano piu' di uno. Nel caso di due
record con diversa priorità, viene utilizzato sempre quello a priorità
maggiore (corrispondente al valore più basso); gli altri vengono utilizzati
solamente qualora attraverso il primo non si ottenga risposta.
Weight
Quando esistono più record SRV con la stessa priorità, questo parametro
determina proporzionalmente quale dei record dovrà essere utilizzato.
Ad esempio, in presenza di due record con la stessa priorità ma con pesi
10 e 20, il secondo verrà utilizzato il doppio delle volte del primo. Questo
meccanismo è utilizzato per fare bilanciamento di carico tra gli host.
Porta
Porta a cui il server è in ascolto per quel particolare servizio
(nell'esempio la 5060).
Target
Nome del server che è responsabile del servizio secondo i parametri
specificati. Questo nome può essere letterale, nel qual caso è necessario
una ulteriore risoluzione (di un record A / AAAA) per ottenerne l'indirizzo
IP.
Domain-name
Indica il dominio a cui questo record si
riferisce e che corrisponde alla porzione
dell'indirizzo SIP che sta a destra del
segno @ ' ' (as esempio polito.it per
sip:mario.rossi@polito.it).
TTL
Indica la durata (in secondi) del record stesso ed è usato per definire la
durata della sua validità quando viene memorizzato all'interno della
cache di un altro DNS.
Class
Rappresenta la classe "Internet", quindi è sempre IN.
NAPTR
E' la parola chiave che identifica questo record come un record NAPTR.
Order
Indica l'ordine nel quale i record NAPTR devono essere esaminati nel
caso ne esistano più di uno, partendo dal valore più basso. Se il record
con ordine più basso contiene l'indicazione di utilizzare un trasporto che
non è supportato dall'applicativo (o che non può essere utilizzato per
esplicita volontà dell'utente), si passa ad esaminare il prossimo record
NAPTR, fino a quando se ne trova uno che può essere usato (oppure si
abortisce il servizio).
Preference
Come nei record SRV, i record NAPTR hanno un valore di preferenza
espressa in modo crescente. Nel caso in cui esistano più record NAPTR
compatibili con le richieste dell'applicazione, questo parametro
determina proporzionalmente quale dei record dovrà essere utilizzato.
Ad esempio, in presenza di due record con lo stesso valore di ordine ma
con preferenza 10 e 20, il secondo verrà utilizzato il doppio delle volte
del primo. Questo parametro è poco utilizzato nel caso di servizi SIP e
All'interno del
DNS potranno essere trovati record NAPTR come
ad esempio quelli indicati in figura, dove il
significato dei campi è quello già visto in
precedenza; vi sono però alcuni valori nuovi che
assumono il significato seguente:
Flag
Vale sempre "u" e indica che la risposta
che si ottiene da questa query è di tipo
terminale (ossia non richiede una nuova
richiesta NAPTR per ottenere la risposta
definitiva); questo non esclude tuttavia
che si debba procedere a nuove query
(magari anche NAPTR), ma queste
saranno relative a record diversi rispetto
all'attuale
E2U+SIP
Indica la tecnologia utilizzata nella
traduzione del record; in questo caso si
traduce un indirizzo E164 in un URI ("E2U"), il quale è di tipo SIP
("+SIP")
"!^.*$!sip:info@foo.com!"
Indica una espressione regolare secondo lo standard POSIX e la stringa
nella quale verrà inserito il dell'espressione stessa; l'espressione
regolare e la stringa sono nella forma:
!regexp!string!
Il problema più grosso di questa soluzione è nel caso in cui gli spazi di
indirizzamento tra diversi soggetti (ad esempio diversi operatori) non siano
disgiunti, in quanto diventa problematico la creazione di un meccanismo di
delega basato su prefissi telefonici. In altre parole, non è più possibile dire che,
all'interno degli operatori italiani, se il numero inizia per "0" è necessario
rivolgersi all'operatore X1, mentre se inizia per "1" è necessario proseguire la
risoluzione con le strutture dell'operatore X2 e così via. Infatti, i vari meccanismi
di number portability impediscono questo tipo di soluzione.
Questo sistema evita sia l'uso di ENUM (intesa come infrastruttura globale;
risoluzioni NAPTR possono essere ancora necessarie), sia il problema della
fatturazione delle chiamate telefoniche originate da una rete VoIP: tutte le
chiamate uscenti dal SIP-PSTN gateway saranno originate dal utenti dell'azienda
stessa, quindi l'azienda pagherà solamente per le chiamate effettuate dai propri
dipendenti.
3.5.2.1. INVITE
3.5.2.2. ACK
3.5.2.3. BYE
3.5.2.4. CANCEL
Nel caso in cui una delle due fallisca, questo non implica che la chiamata
debba essere abbattuta. In questo caso, il terminale che fa fallire la chiamata
genererà un CANCEL (o meglio, il terminale genererà un BYE, ma il proxy che ha
duplicato la chiamata lo trasformerà in CANCEL), permettendo al chiamante che
una possibile via di connessione è fallita, ma altre stanno ancora operando per
portare a termine la chiamata.
3.5.2.5. OPTIONS
3.5.2.6. REGISTER
deve essere in qualche modo limitato (ad esempio con un valore del campo Time
To Live del pacchetto IP), per evitare la registrazione in troppi server.
Un utente può inoltre registrarsi su diversi siti, usando diversi valori di Call-
ID, e definire vari servizi e preferenze tra questi.
3.5.3.1. From, To
3.5.3.2. VIA
Il campo VIA è usato nel caso in cui una transazione SIP richieda
l'interazione di parecchi server proxy. In questo caso ogni server introduce una
nuova riga (con l'indicazione di sé stesso) di tipo VIA all'interno dell'header SIP.
Questo permette di ricostruire il percorso del messaggio, consentendo al
messaggio di risposta di compiere lo stesso percorso, ma in senso inverso. Gli
header di tipo VIA sono aggiunti e tolti dinamicamente al messaggio: una nuova
riga VIA viene aggiunta man mano che il messaggio avanza verso la
destinazione, mentre le stesse righe vengono tolte nel percorso all'indietro.
3.5.3.3. Call-ID
3.5.3.4. Cseq
3.5.3.5. Subject
3.5.4.1. Informational
La classe di tipo 1xx indica che il server o il proxy contattato deve compiere
ulteriori operazioni e non ha una risposta definitiva.
Il client deve attendere una ulteriore informazione dal server che è obbligato
a inviare una messaggio 1xx se ritiene di impiegare più di 200ms per ottenere
una risposta definitiva.
100: Trying
180: Ringing
182: Queued
3.5.4.2. Success
3.5.4.3. Redirection
Ogni reindirizzamento non deve suggerire nessun indirizzo già contenuto nel
cammino definito dagli header Via della richiesta:
3.5.4.4. Client-Error
Le risposte 4xx sono riferite a delle richieste fallite. Il client non deve
riprovare a inviare la richiesta senza modificarla (ad esempio, potrebbe dover
aggiungere l'appropriata autorizzazione).
401: Unauthorized
403: Forbidden
409: Conflict
410: Gone
485: Ambiguous
3.5.4.5. Server-Error
3.5.4.6. Global-Failure
603: Decline
3.6.1. Transazione
Alcuni server DNS sono in grado di anticipare le mosse del client: a seguito
di una richiesta di tipo NAPTR, sono in grado di confezionare una risposta che
contiene tutti i record voluti, ossia NAPTR, SRV e A/AAAA. Questo consente di
ridurre il numero di interrogazioni al DNS necessarie per risolvere un indirizzo.
Nel caso in cui il record SRV non fosse disponibile, il client fa un ultimo
tentativo di risolvere il nome indicato nell'URI come se fosse un host, richiedendo
quindi la risoluzione di un record A/AAAA. In questo caso, il client contatterà la
controparte utilizzando il protocollo UDP che dovrebbe essere il minimo comun
denominatore tra tutte le implementazioni SIP, oppure il trasporto TLS/TCP nel
caso in cui l'utente richieda una sessione sicura. Tuttavia, potrebbe essere
possibile anche utilizzare il protocollo TCP in casi particolari, ad esempio quando
ci si rende conto di avere richieste la cui dimensione è superiore alla massima
MTU ammissibile sul percorso.