Ecco alcune importanti informazioni sulla tecnologia VoIP, necessarie per comprenderla bene.
Per configurare una comunicazione VoIP abbiamo bisogno:
Architettura base Voce )) ADC - Algoritmo di compressione - Assembl. RTP in TCP/IP ----- ----> | <---- | Voce (( DAC - Algoritmo di decompress. - Disass. RTP da TCP/IP -----
Questo viene fatto dall'hardware, tipicamente da un ADC integrato.
Oggi pressoché ogni scheda audio permette di convertire in 16 bit una banda di 22050 Hz (per il campionamente della quale abbiamo bisogno di 44100 Hz per il teorema del campionamento) ottendendo una velocità di 2 bytes * 44100 (campioni al secondo) = 88200 Bytes/s, 176.4 kBytes/s per i flussi dati stereo.
Per il VoIP non abbiamo certamente una velocita' cosi' elevata (176.4 kBytes/s): vediamo allora quali codifiche utilizzare.
Vediamo quali formati di digitalizzazione e compressione utilizziamo.
PCM, Pulse Code Modulation, Standard ITU-T G.711
ADPCM, Adaptive differential PCM, Standard ITU-T G.726
Converte soltanto la differenza tra il pacchetto attuale e quello precedente richiedendo 32 kbps (vedi Standard ITU-T G.726).
LD-CELP, Standard ITU-T G.728 CS-ACELP, Standard ITU-T G.729 and G.729a MP-MLQ, Standard ITU-T G.723.1, 6.3kbps, Truespeech ACELP, Standard ITU-T G.723.1, 5.3kbps, Truespeech LPC-10, fino a 2.5 kbps!!
Gli ultimi protocolli sono i più significativi perché garantiscono un basso utilizzo di banda utilizzando metodi di codifica alla sorgente: inoltre le codifiche G.723.1 hanno un MOS molto elevato (Mean Opinion Score, utilizzato per misurare la fedeltà vocale) ma attenzione alle prestazioni richieste, finoa 26 MIPS (milioni di istruzioni al secondo)!
Adesso che abbiamo i dati "grezzi", per incapsularli nello stack TCP/IP, seguiamo la seguente struttura:
VoIP data packets RTP UDP IP I,II layers
I Pacchetti di voce risiedono in pacchetti RTP (Protocollo di trasporto Real-Time) che a loro volta giacciono su pacchetti UDP-IP.
Prima di tutto notiamo che VoIP non utilizza il protocollo TCP perche' troppo persante per le applicazioni multimediali (che sono, di per se stesse "real time"), quindi abbiamo bisogno di usare l'UDP
Secondo, con l'UDP non possiamo implicitamente controllare l'ordine di arrivo dei pacchetti o quanto impiegano ad arrivare (concetto di datagramma): entrambi sono molto importanti per ottenere una buona qualita' audio della voce (per poter distinguere le parole) e una buona qualita' di conversazione (la facilita' con cui si segue un discorso).
Il protocollo RTP risolve il problema permettendo al ricevitore di ordinare i pacchetti in base all'ordine di arrivo e di non aspettare troppo a lungo per un pacchetto perso (in effetti non abbiamo bisogno di ogni singolo pacchetto di voce, possiamo anche perderne qualcuno, l'importante e' ricevere un flusso continuo della maggiorparte dei pacchetti trasmessi e, ovviamente, in ordine).
Real Time Transport Protocol 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |V=2|P|X| CC |M| PT | sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | synchronization source (SSRC) identifier | +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | contributing source (CSRC) identifiers | | .... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Dove:
Per una descrizione approfondita del protocollo RTP e di tutte le applicazioni relative si veda i relativi RFCs 1889 e 1890.
Nell'ambiente VoIP vengono utilizzati altri protocolli, come l'RSVP, che può gestire la Qualità del Servizio (QoS).
RSVP é un protocol di segnalazione che permette di riservare una certa quantità di banda e di latenza massima in ogni nodo (router) di rete attraversato che lo supporta.
Per informazioni dettagliate sull'RSVP si veda l' RFC 2205
Abbiamo detto molte volte che le applicazioni VoIP richiedono un flusso di dati in tempo reale.
Sfortunatamente, TCP/IP non può garantire tale flusso (può solo effettuare il massimo sforzo per cercare di conseguirlo). Abbiamo quindi bisogno di introdurre degli artifizi e delle politiche di schedulazione che possano gestire i pacchetti in OGNI router che attraversano.
Ecco allora:
Una esaustiva descrizione sulla QoS può essere trovata sui Differentiated Services presso lo IETF.
Il protocollo H323 viene utilizzato, ad esempio, dall'applicativo Microsoft Netmeeting per creare chiamate VoIP.
Questo protocollo permette ad una serie di elementi di "parlare" tra loro:
H323 permette anche la gestione del video.
Per quanto riguarda la voce, l'h323 é compatibile con le codifiche G.711, G.722, G.723, G.728 e G.729, mentre per il video supporta i protocolli h261 and h263.
Maggiori informazioni sul protocollo h323 sono disponibili sugli Standards presso Openh323, su at questo sito web h323, mentre la descrizione dello standard ufficiale é reperibile dalle ITU H-series Recommendations.
L'h323 viene implementato in molto prodotti software come Microsoft Netmeeting, Net2Phone, DialPad, ... e altri prodotti freeware che puoi trovare sul sito web Openh323.