VoIP Howto Roberto Arcomano berto@fatamorgana.com v 1.0 - 12 November 2000 Voice Over IP é un nuovo mezzo che permette di telefonare con Internet a costo quasi nullo. Come, con quali sistemi, quale standard viene utilizzato, viene illustrato in questo Howto. Il sito web contiene la versione più recente di questo documento. Introduzione Introduzione

Questo documento tratta di sistemi VoIP. I recenti avvenimenti come la diffusione di Internet a basso costo, la nuova integrazione di di processori dedicati per la compressione della voce (vedi DSP), hanno cambiato le esigenze del generico utente, permettendo alla tecnologia VoIP di diffondersi. Questo howto cerca di tracciare le linee guida dell'architettura VoIP.

Sono ben accolti suggerimenti e critiche alla @fatamorgana

Copyright

Copyright (C) 2000,2001 Roberto Arcomano. This document is free; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This document is distributed in the hope that it will be useful, but

WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You can get a copy of the GNU GPL

Sfondo introduttivo Il passato

20-30 anni fa Internet non esisteva. Le comunicazioni interattive si basavano sul telefono, ai costi delle linee PSTN.

Lo scambio di dati era molto costoso (soprattutto per lunghe distanze) e nessuno immaginava al video interattivo (esisteva soltanto la televisione, che, com'é noto, non é interattiva).

Ieri

Pochi anni fa abbiamo assistito ad alcuni importanti fenomeni: PCs diffusi a larga scala, nuove tecnologie per comunicare come i telefoni cellulari e, finalmente, la grande rete: Internet; la gente ha iniziato ad utilizzare i primi servizi email, chat, ecc. e il business é rinato con il web permettendo alle persone di acquistare prodotti via Internet con un " click" .

Oggi

Oggi assistiamo ad una vera e propria rivoluzione nel campo della comunicazione: tutti iniziano ad usare il PC con Internet nel lavoro e nel tempo libero per scambiare dati (come immagini, suoni, documenti) e, in alcuni casi, per parlare usando applicativi come Microsoft Netmeeting o Internet Phone. In particolare inizia a diffondersi un'idea comune che potrebbe rappresentare il futuro e che permette la comunicazione vocale in tempo reale: VoIP.

Il futuro

Non possiamo prevedere il futuro, ma lo immaginiamo con molti computers, Internet quasi ovunque ad alta velocità e persone che dialogano tra loro (audio and video) in tempo reale. Dobbiamo soltanto sapere quale mezzo si utilizzerà: UMTS, VoIP (con l'estensione video) o altro ancora? Comunque sia bisogna accettare il fatto che Internet é cresciuta in una maniera impressionante negli ultimi anni, é gratis (al meno dal punto di vista di " mezzo internazionale" ) e potrebbe essere il giusto mezzo di comunicazione del futuro.

Visione generale del VoIP Cos'é VoIP?

VoIP sta' per 'V'oice 'o'ver 'I'nternet 'P'rotocol. Come dice il termine VoIP prova a far passare la voce (prettamente quella umana) attraverso i pacchetti IP e in definitiva attraverso Internet. La tenologia VoIP può avvalersi di schede hardware acceleratrici per raggiungere tale scopo ed é possibile il suo l'utilizzo in ambiente PC.

Come funziona?

Molti anni fa é stato scoperto che per mandare un generico segnale lontano era possibile utilizzare il formato digitale: prima di mandarlo dobbiamo digitalizzarlo con un ADC (convertitore analogico-digitale), trasmetterlo, e trasformarlo di nuovo in formato analogicon con un DAC (convertitore digitale-analogico) per utilizzarlo.

VoIP lavoro proprio in questo modo, digitalizzano la voce i pacchetti, mandandoli in rete e riconvertendoli in voce una volta giunti a destinazione.

I vantaggi del formato digitale sono notevoli: possiamo comprimere i dati, instradarli (utilissimo su Internet), convertirli nuovamente in un formato più consono al mezzo utilizzato e così via; sappiamo anche che il segnale digitale é più " resistente" ai disturbi rispetto a quello analogico (vedi GSM contro TACS).

Le reti TCP/IP sono costituite di pacchetti IP contenenti un'intestazione (per controllare la comunicazione) e di una parte dati: VoIP utilizza questo paradigma per attraversare la rete ed arrivare a destinazione.

Voce (sorgente) - - ADC - - - - Internet - - - DAC - - Voce (dest)

Quali sono i vantaggi nell'usare VoIP invece delle linee PSTN?

Quando usi la linea telefonica, si paga una tariffa dipendente dal tempo utilizzato ad un gestore di telefonia fissa (o mobile): più tempo si sta' e più si paga. Inoltre é possibile parlare soltanto con una persona alla volta.

Al contrario, con la tecnologia VoIP puoi parlare tutto il tempo che vuoi (l'importante é che anche l'altra persona sia connessa ad Internet nello stesso istante), a che distanza vuoi (senza differenza di costo) e con la possibilità di parlare con più persone contemporaneamente (la cosiddetta conferenza).

Se non sei ancora convinto considera che, nello stesso istante, puoi scambiare dati con le stesse persone, mandando immagini, grafici e video e documenti.

Allora perché non lo stiamo già utilizzando tutti?

Sfortunatamente vi sono alcune problematiche di carattere tecnico nell'interazione tra l'architettura VoIP e Internet.Come si può facilmente immaginare, la comunicazione vocale richiede una sorta di tempo reale per funzionare bene (non si può parlare, aspettare alcuni secondi ed ascoltare la risposta in ritardo): questo, però va in contrasto con la filosofia architetturale di Internet che può essere composta di molti routers (computers utilizzati per instradare pacchetti IP), circa 20-30 o più e che può portare ad un tempo medio di accesso (RTT, round trip time) molto elevato rendendo necessarie delle modifiche strutturali.

Nei prossimi capitoli proveremo a capire come risolvere questo grosso problema. In generale, però dobbiamo essere consci del fatto che é molto difficile " garantire" una banda su Internet per le applicazioni multimediali.

Informazioni tecniche sul VoIP

Ecco alcune importanti informazioni sulla tecnologia VoIP, necessarie per comprenderla bene.

Vista d'insieme di una connessione VoIP

Per configurare una comunicazione VoIP abbiamo bisogno:

Prima di tutto di un ADC per convertire la voce in segnali digitali (bits) I bit vanno compressi in un buon formato per la trasmissione: c'é tutta una serie di protocolli atti a tale scopo che vedremo più avanti. Adesso dobbiamo inserire i pacchetti voce in pacchetti di dati standard utilizzando un protocollo real-time (tipicamente RTP su UDP su IP) Abbiamo bisogno di un protocollo di segnalazione per chiamare gli utenti: ITU-T H323 fa proprio al caso nostro. In ricezione dobbiamo disassemblare i pacchetti, estrarre i dati, convertirli in segnali vocali analogici e mandarli alla scheda audio (o alla cornetta). Tutto questo deve essere effettuato in tempo reale poiché non possiamo permetterci ritardi eccessivi durante il dialogo vocale! (vedi sezione QoS, Qualità del Servizio)

Architettura base Voce )) ADC - Algoritmo di compressione - Assembl. RTP in TCP/IP ----- ----> | <---- | Voce (( DAC - Algoritmo di decompress. - Disass. RTP da TCP/IP -----

Conversione analogica digitale

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 bisogno di 22 kHz di banda (ne', tantomento, di 16 bit di risoluzione dei campioni): vediamo allora quali codifiche utilizzare.

Algoritmi di compressione

Vediamo quali formati di digitalizzazione e compressione utilizziamo.

PCM, Pulse Code Modulation, Standard ITU-T G.711

La banda della voce é 4 kHz, quindi abbiamo campioni alla velocità di 8 kHz (dal teorema del campionamento). Rappresentiamo ogni campione con 8 bit (quindi con 256 valori possibili). La velocità compressiva é 8000 Hz *8 bit = 64 kbit/s, la tipica velocità di un canale telefonico digitale. Nelle applicazioni reali si utilizzano le varianti mu-law (Nord America) e a-law (Europa) che codificano il segnale analogico su scala logaritmica sfruttando 12 o 13 bits invece di 8 bits (vedi 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)!

RTP Protocollo di trasporto Real Time

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 in quanto troppo pesante per le applicazioni multimediali, quindi l'unica alternativa é l'UDP.

Tuttavia, nei pacchetti UDP, non possiamo ordinare i pacchetti in ordine di arrivo (che é una necessità importantissima nel VoIP) perché non vi é il concetto di " connessione" , ogni pacchetto é indipendente dall'altro (concetto di datagramma); quindi dobbiamo introdurre un nuovo protocollo, l' RTP, capace di gestire queste problematiche.

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:

V identifica la versione di RTP P indica il padding, un byte di riempimento. X indica la presenza delll'intestazione estesa. Il campo CC rappresenta il numero di identificatori CSRC che seguono l'header a lunghezza fissa. Per esempio il campo CSRC viene utilizzato in caso di conferenza. M é un bit per marcare. PT indica il tipo di PayLoad (dati)

Per una descrizione approfondita del protocollo RTP e di tutte le applicazioni relative si veda i relativi RFCs e .

RSVP

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'

Qualità del servizio (QoS)

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:

Il campo TOS nel protocollo IP per descrivere il tipo di servizio:valori alti indicano bassa urgenza, mentre valori via via sempre più alti segnalano urgenza crescente. Metodi di accodamento dei pacchetti: FIFO (First in First Out), Il più stupido del metodi che fa passare i pacchetti in ordine di arrivo. WFQ (Weighted Fair Queuing), consiste nel far passare in modo equo i pacchetti (per esempio, i pacchetti FTP non possono consumare tutta la banda disponibile), a seconda del tipo di dati che contengono, tipicamente vengono fatti passare un pacchetto UDP ed uno TCP in modo paritario. CQ (Custom Queuing), gli utenti possono decidere la loro priorità. PQ (Priority Queuing), c'é una numbero (tipicamente 4) di code con ciascuno un livello di priorità associato: prima di tutto, vengono fatti passare i pacchetti nella prima coda, poi (una volta terminati) si passa a quelli della seconda e così via. CB-WFQ (Class Based Weighted Fair Queuing), simile al WFQ ma, in più, abbiamo il concetto di classi (fino a 64) e la di banda associata a ciascuna classe. Proprietà di shaping e policing, che permetteno di limitare la sorgente ad una ben prefissata banda in: download upload Prevenzione della congestione di rete, come il RED (Random Early Detection).

Una esaustiva descrizione sulla QoS può essere trovata sui presso lo IETF.

H323: protocollo di segnalazione

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:

Terminali, clients che inizializzano le connessioni VoIP. Sebbene i terminali possano dialogare insieme senza aver bisogno di nessun altra identità, é necessario introdurre elementi addizionali per una visione più scalabile. Gatekeepers, che operano essenzialmente: Una conversione nome-indirizzo, per utilizzare i nomi al posto degli indirizzi IP Un controllo di accesso, per abilitare o disabilitare alcune macchine o alcuni utenti Gestione della banda. Gateways, punto di riferimento per la conversione TCP/IP - PSTN. Multipoint Control Units (MCUs) to provide conference. Vengono anche utilizzati Servers Proxy.

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 , su at , mentre la descrizione dello standard ufficiale é reperibile dalle .

L'h323 viene implementato in molto prodotti software come , , , ... e altri prodotti freeware che puoi trovare sul .

Requisiti Requisiti hardware

Per creare un piccolo sistema VoIP hai bisogno del seguente hardware:

PC 386 o superiore Scheda audio full duplex una scheda di rete o una connessione ad Internet o altro tipo di interfacciamento per permettere la comunicazione TCP/IP tra 2 PCs

Tutto questo deve essere presente in 2 copie in quanto vogliamo simulare una comunicazione tra 2 entità.

Gli strumenti sopra citati sono i minimi richiesti per una connessione VoIP: più avanti vedremo che avremo bisogno di un hardware maggiore per avere successo una situazione reale su Internet

La scheda audio deve necessariamente essere full duplex, altrimenti non sarà possibile ascoltare nulla mentre si parla!

In aggiunta si possono utilizzare schede acceleratrici per permettere la gestione di un flusso dati compresso (see Par 4.3).

Schede acceleratrici

Possiamo usare schede acceleratrici per ottimizzare il protocollo di trasmissione. Due di queste (ed anche le uniche direttamente gestire dal kernel di Linux fino adesso) sono

Quicknet PhoneJack Quicknet LineJack

La Quicknet PhoneJack é una scheda audio che utilizza algoritmi standard per la compressione di streams audio quali G.723.1 ed altri (section 4.3) fino a 4.1 kbps di velocità

Può essere connessa direttamente ad una cornetta (POTS port) o ad una coppia microfono - altoparlante.

E' disponibile con slots ISA e PCI.

La Quicknet LineJack lavora come la PhoneJack ma ha funzionalità addizionali (vedi più avanti).

Per ulteriori informazioni si veda il .

Schede gateway

La Quicknet LineJack può essere connessa ad una linea PSTN permettondo di creare un gateway VoIP.

Dopodiché bisogna usare un software che ne permetta il controllo (vedi dopo).

Requisiti software

Vediamo quale software possiamo installare utilizzando rispettivamente:

Win9x Linux

Sotto Win9x abbiamo il classico Microsoft Netmeeting oppure Internet Phone, DialPad e altri ancora mentre Quicknet ci offre il suo Internet Switchboard (scaricabile dal ) che utilizza, appunto, le schede Quicknet.

Esiste anche software libero scaricabile da .

Sotto Linux possiamo utilizzare soltanto il software libero (per il momento) sempre scaricabile da : simph323 o ohphone che può lavorare con l'hardware Quicknet.

Attenzione: tutto il codice sorgente Openh323 deve essere compilato in una directory home (oppure sarà necessario settare una variabile d'ambiente al valore opportuno). Il tempo di compilazione potrebbe essere molto elevato e potrebbe richiedere una quantità non indifferente di RAM (un Pentium 133 con 16 MB di ram non é consigliabile!).

Software gateway

Per gestire le caratteristiche di un gateway (far comunicare una rete VoIP con una rete PSTN) é necessario installare un qualche tipo di software:

per i sistemi Windows che opera anche come terminale h323; per Linux e Windows .

Software gatekeeper

Come gatekeeper:

Opengatekeeper, scaricabile liberamente dal for Linux and Win9x. Openh323 Gatekeeper (GK) da .

Altro software

Phonepatch, in grado di risolvere problematiche relative ad un firewall-NAT. Semplicamente permette agli utenti (esterni ed interni) di effettuare chiamate da una pagina web (raggiungibile sia dall'esterno che dall'interno della rete): quando l'applicativo web si accorge che l'utente remoto é attivo provvede a chiamare l'utente che ha effettuato la chiamata web (tramite una chiamata h323) comunicandogli che la comunicazione può avvenire. Phonepatch é un software proprietario (la versione demo permette di effettuare chiamate di non più di 3 minuti) che puoi trovare su .

Configurazione delle schede

Qui vediamo come configurare le schede hardware acceleratrici sotto Linux e Windows.

Quicknet PhoneJack

Come abbiamo visto la Quicknet Phonejack é una scheda audio con proprietà di accelerazione VoIP. Supporta:

G.711 normale e mu/A-law, G.728-9, G.723.1 (TrueSpeech) e LPC10. Connettore telefonico (per l'utilizzo con una cornetta) o Jacks Microfono + Altoparlante.

La PhoneJack é una scheda ISA (o PCI) da installare sul Pc. Può anche lavorare senza IRQ.

Installazione del software

Sotto Windows bisogna installre:

Il driver della scheda l'applicativo Internet Switchboard

tutto ciò si trova sul

Dopo che Internet Switchboard é stato installato, hai bisogno di registrarti alla Quicknet per poter usufruire di tutte le funzionalità della tua scheda.

Quando alzi la cornetta Switchboard si sveglia e rimane in attesa del numero di telefono da comporre (direttamente dalla cornetta). In tal caso si può:

Digitare asterisco, poi comporre un indirizzo IP (usando gli asterischi al posto del punto) e cancelletto per terminare la composizione. Digitare direttamente un numero telefonico (completo di prefisso internazionale) per chiamare un telefono classico. In tal caso avrai bisogno della registrazione presso un gestore gateway a cui pagare a seconda del tempo che rimarrai connesso. Digitare direttamente un numero di chiamata rapida che hai precedentemente memorizzato (fino a 2 cifre).

Internet Swichboard é compatibile h323, quindi puoi usare software commerciale come Microsoft Netmeeting dall'altro " capo" .

Al posto di Internet Switchboard si può usare anche un applicativo free come (con interfaccia grafica) o (linea di comando).

Sotto Linux devi installare:

Il driver della scheda acceleratrice, dal . Dopodiché dovrai compilarlo (controllando opportunamente che la directory /usr/src/linux punti alla directory dei sorgenti di Linux): digita " make" per le istruzioni. L'applicativo o . Se sei uno sviluppatore puoi utilizzare le per creare le tue applicazioni personalizzate (anche sotto Windows).

Settaggi

Con Internet Switchboard (e anche con gli altri applicativi) puoi:

Cambiare l'algoritmo di compressione preferito Variare il ritardo " jitter" (jitter delay) Settare il volume Settare il livello di cancellazione dell'eco.

Quicknet LineJack

Questa scheda é molto simile alla precedente, e, in aggiunta, supporta le funzionalità di gateway. In effetti la Linejack presenta, oltre ai connettori classici della PhoneJack, anche un connettore per la linea telefonica PSTN.

L'unico appunto che vale la pena di sottolineare é la necessità di utilizzare un applicativo in grado di gestire anche tale linea PSTN: (for Linux and Windows) e .

Setup

In questo capitolo vedremo come configurare una sistema VoIP, semplice al principio, via via poi più complesso.

Una configurazione semplice: IP to IP

A (Win9x+Scheda audio) - - - B (Win9x+Scheda audio) 192.168.1.1 - - - 192.168.1.2 192.168.1.1 chiama 192.168.1.2.

A e B devono avere:

Microsoft Netmeeting (o software compatibile h323) installato e correttamente configurato. una scheda di rete o un altro tipo di interfaccia compatibile TCP/IP per dialogare tra loro.

In questa prospettiva A può effettuare una chiamata h323 verso B (se B ha Netmeeting attivo) usando il suo indirizzo IP 192.168.1.2. Dopodiché B, se vuole, può rispondere e i pacchetti VoIP iniziano a transitare.

Uso dei nomi

Se utilizzi Microsoft Windows in una lan, puoi chiamare una macchina utilizzando il servizio nomi NetBIOS, che può funzionare su NetBEUI o su TCP/IP. Tutto ciò di cui hai bisogno, quindi, é di chiamare il nome dell'altro computer per effettuare la connessione.

A - - - B 192.168.1.1 - - - 192.168.1.2 Mario - - - Paola Mario chiama Paola.

Tutto ciò é possibile in quanto la chiamata NetBIOS di Mario verso Paola viene convertita in chiamata IP.

Gli esempi sopra citati sono molto semplici da implementari ma scarsamente scalabili.

In una rete più grande quale Internet é impossibile effettuare chiamate con gli indirizzi, in quanto difficilmente conosco l'indirizzo IP del destinatario (che nella maggior parte dei casi, essendo dinamico, cambia ad ogni nuova connessione al provider). Oltretutto il servizio di nomi NetBIOS non funziona poiché i messaggi da esso usati sono di tipo broadcast, che notoriamente non attraversano i routers.

Chiamata su Internet utilizzando un server WINS

L'idea dei nomi NetBIOS può essere riutilizzata anche in ambiente Internet con l'ausilio di un server WINS: le macchine possono essere configurate in modo tale da chiedere ad un unico server la risoluzione dei nomi in indirizzi.

I PCs che utilizzano lo stesso server WINS saranno in grado di comunicare fra loro.

A (Server WINS é S) - - - - I - - - - B (Server WINS é S) N T E - - - - - S (Server WINS) C (Server WINS é S) - - - - R N E - - - - D (Server WINS é S) T Comunicazione su Internet

A, B, C e D appartengono a sottoreti differenti, ma possono chiamarsi l'un l'altro utilizzando i loro nomi NetBIOS. Il requisito fondamentale, come precedentemento detto é che tutti gli hosts utilizzino la stessa macchina come Server WINS (S appunto).

Nota: I servers WINS non hanno performance eccezionali dato che si basano sul protocollo NetBIOS (che a livello locale continua a fare uso dei broadcasts) e dovrebbe essere utilizzato soltanto per unire piccole e poche sottoreti.

Un grosso problema: il masquering.

Un problema di carenza di indirizzi IP viene normalmente risolto utilizzando il cosiddetto masquering (anche chiamato NAT, network address translation): esiste soltanto un IP pubblico (che Internet può " vedere" direttamente), le altre macchine vengono " mascherate" utilizzando tale IP.

A - - - B - - - Router con NAT - - - Internet C - - - Questo non funziona

Nell'esempio A,B e C possono navigare, pingare, usare posta, news e altri servizi su Internet, ma NON possono fare una chiamata VoIP verso l'esterno. Questo perché il protocollo h323 manda l'indirizzo IP a livello applicazione, quindi la risposta non arriverà mai al chiamante (che utilizza un indirizzo IP privato).

Soluzioni:

Esiste un modulo su Linux che modifica i pacchetti h323 evitando il problema. Lo puoi scaricare . Per installarlo devi copiarlo nella directory sorgente del kernel (specificata dalle istruzioni sul sito), modificare il Makefile e ricompilare i moduli del kernel installando poi il modulo con " modprobe ip_masq_h323" . Sfortunatamente questo modulo non lavora (per il momento) con il software libero Ohphone (non ne conosco il motivo).

A - - - Router con NAT B - - - + - - - Internet C - - - modulo ip_masq_h323 Questo funziona

C'é anche un applicativo che risolve il problema del masquering: per ulteriori informazioni si veda il

A - - - B - - - PhonePatch - - - Internet C - - - Questo funziona

Usare Linux

Con Linux (usato come terminale h323) puoi sperimentare tutte le prove fatte precedentemente eccetto quelle dietro un router-NAT con il modulo ip_masq_h323 poiché (come già detto) Ohphone non funziona con tale modulo: sarai quindi costretto ad usare Phonepatch.

Sintassi Ohphone

" ohphone -l|--listen [opzioni]"

" ohphone [opzioni]... indirizzo"

" -l" , ascolta sulla porta standard (1720) " indirizzo" , significa che non vogliamo ricevere, bensi' fare una chiamata a " indirizzo" " -n" , " --no-gatekeeper" , questo dice di non usare gatekeeper " -q num" , " --quicknet num" , utilizza la scheda Quicknet, device /dev/phone(num) " -s device" , " --sound device" , utilizza il device sonoro " /dev/device" " -j ritardo" , " --jitter ritardo" , cambia il buffer di ritardo, impostandolo a " ritardo" .

Inoltre, quanto lanciamo ohphone, possiamo digitare dei comandi direttamente sull'interprete (come, ad esempio, decrementare l'AEC, Automatic Echo Cancellation).

Configurare un gatekeeper

Puoi provare le funzionalità di gatekeeper.

Esempio (Terminale H323) A - - - \ (Terminale H323) B - - - D (Gatekeeper) / (Terminale H323) C - - - Configurazione del Gatekeeper

Gli hosts A,B e C hanno come gatekeeper D. Alla partenza ogni host comunica al gatekeeper il proprio indirizzo e il proprio nome associato (compresi gli alias) che potrà essere utilizzato da un chiamante per raggiungerlo. Quando un terminale chiede a D un determinato, D risponderà fornendo al chiamante il giusto indirizzo IP, permettendo così la comunicazione tra i 2 terminali.

Notiamo che il gatekeeper é soltanto in grado di risolvere i nomi in indirizzi, non può unire hosts che non già siano raggiungibili (a livello IP), in altre parole il gatekeeper non può operare da router NAT.

Puoi trovare il gatekeeper : sono richieste le .

E' necessario lanciare il programma almeno con l'opzione -d (come demone) o -x (per eseguirlo in foreground).

E' anche disponibile un file di configurazione (.ini) .

Configurare un gateway

Come abbiamo già detto, un gateway é un'entità che può far comunicare una rete VoIP ad una PSTN permettendoci di effettuare una chiamata da Internet verso un comune telefono.Abbiamo quindi bisogno della scheda gateway (Quicknet LineJack) e del relativo software:

Sul troviamo:

I driver per la Linejack L'applicativo PSTNGw per gestire il gateway.

Se l'eseguibile non funziona avrai bisogno di scaricare i sorgenti e compilarli dopo aver opportunamente scaricato e compilato anche le , entrambi su una home directory.

Considerazioni di banda

Da tutto quello che abbiamo detto non abbiamo ancora risolto i problemi legati alla banda, come cioé creare un flusso di dati in tempo reale. Sappiamo che non possiamo risolverlo finché non abilitiamo i protocolli per la gestione della banda su ogni router che attraversiamo, allora cosa possiamo fare?

Prima di tutto cerchiamo di utilizzare l'lagoritmo di compressione che più ci aiuta ad occupare meno banda possibile (come, ad esempio, l' LPC-10 che riesce a consumare appena 2.5 kbps, circa 313 bytes/s).

Dopo di ché iniziamo a classificare i nostri pacchetti (iniziando dal campo TOS del protocollo IP), con il valore più alto possibile coì da ottenere dai router la priorità massima possibile.

Importante: tutto questo NON ci mette al sicuro garantendoci una banda sufficiente per la nostra conversazione, perché finché non si crea un'infrastruttura in grado di gestire shaping, prenotazione di banda e così via non sarà mai possibile avere una garanzia assoluta, in effetti TCP/IP non é un protocollo real time.

A possible solution could be starts with little WAN at guaranteed bandwidth and get larger step by step.

Possiamo infine notare un'ultima cosa: anche i cosiddetti servizi garantiti come le linee PSTN non sono in grado di gestire tutti clienti che hanno nello stesso istante: per esempio una cella GSM non può sopportare più di un centinaio o un migliaio di utenti alla volta.

Comunque sia il servizio VoIP può essere considerato un buon punto di partenza, in alternativa al servizio offerto dalle linee PSTN.

Links utili