Introduzione
Il presente lavoro è la risposta ad un'esigenza ben precisa venutasi a creare nell'ambito della telefonia su reti IP.
VoIP è una tecnologia che rende possibile il trasporto della voce su reti per dati, attraverso il protocollo Internet: su questa piattaforma vengono trasportati simultaneamente voce e dati, e i servizi dei tradizionali PBX vengono espletati da computers.
L'uso di questa tecnologia è particolarmente indicato in ambito "business": a parte le comodità dell'utente finale (si può iniziare una chiamata telefonica con un clic del mouse, serve un solo indirizzo per ricevere voce, email o fax, etc.) permette dei costi di manutenzione molto ridotti, e offre la possibilità di aggiornare i sistemi con molta facilità. In più, le chiamate effettuate sulla rete interna sono a costo zero.
La telefonia su IP fa uso dello standard H.323. Secondo tale standard i terminali, siano essi client software o telefoni IP, vengono identificati su una rete tramite il loro indirizzo IP: i pacchetti che vanno da un terminale all'altro hanno nella loro intestazione l'indirizzo sorgente e quello di destinazione.
In ambito industriale la maggior parte delle aziende ha una propria rete per dati; a causa della scarsità di indirizzi IP la stragrande maggioranza di tali reti ha uno spazio di indirizzamento interno "privato", le cui caratteristiche sono specificate nella RFC 1918 (in breve: esiste un pool di indirizzi disponibile per l'uso in qualunque rete privata).
Facendo uso di NAT o PAT queste LAN possono raggiungere la rete "pubblica" facendo uso di pochi, se non addirittura un solo indirizzo IP "pubblico".
I dispositivi NAT o PAT sono in grado di accedere solo alle intestazioni dei pacchetti, agendo sugli indirizzi di sorgente o destinazione e "correggendoli" mascherando i pacchetti provenienti dalla rete privata con un indirizzo pubblico.
Purtroppo il funzionamento dell'H.323 prevede l'incapsulamento di alcuni indirizzi nei messaggi di protocollo: i dispositivi NAT e PAT non hanno accesso a tali messaggi, e non possono "correggerli".
Una chiamata tra un terminale su rete pubblica e uno su rete privata non può funzionare, dato che i pacchetti diretti ai terminali di rete privata hanno nella loro intestazione un indirizzo privato: gli indirizzi privati sono non univoci, e i router di Internet non sanno come instradarli.
Nell'ottica di un'integrazione delle reti per dati con la telefonia su IP, questo porta a un problema non risolvibile se non con l'aggiunta di un elemento all'architettura della rete.
La soluzione realizzata consiste in un proxy H.323, da affiancare ad un gatekeeper, e da installare su una macchina che abbia sia un indirizzo privato sia uno pubblico.
Nel caso di una comunicazione tra endpoint attestati su reti che non abbiano diretta visibilità reciproca (non solo una rete pubblica e una privata, ma anche due reti private con spazi di indirizzamento differenti), il proxy interviene, facendosi carico dell'inoltro a destinazione della segnalazione e del controllo di chiamata, oltre che dei pacchetti RTP che trasportano i media, siano essi audio o video, o entrambi.
L'unico vincolo è l'obbligatorietà della registrazione al gatekeeper degli endpoint che vogliano comunicare: ogni endpoint raggiungerà il gatekeeper attraverso un indirizzo a lui direttamente visibile. Ovviamente il gatekeeper dovrà funzionare in modalità routed.
Il meccanismo usato per realizzare tutto questo si basa sulla capacità del kernel Linux di fare Destination Nat e Source Nat per i pacchetti IP, TCP e UDP.
Il presente lavoro è stato realizzato in collaborazione con la Pointercom S.p.A., solution provider per telefonia IP, come elemento fondamentale di un'architettura di rete che permetta lo scambio di contenuti multimediali in un ambito che include la rete Internet, LAN aziendali e le reti commutate, in modo completamente trasparente all'utente terminale.
Il lavoro è suddiviso in cinque capitoli: nel primo viene descritta in generale l'architettura H.323, i suoi componenti, i motivi che hanno portato al successo di tale standard; nel secondo viene esposto il problema da risolvere; nel terzo viene analizzato in maggior dettaglio il protocollo H.245, descritta la situazione di partenza e gli strumenti usati; nel quarto viene esposta la soluzione implementata e si esamina il funzionamento del prodotto realizzato in varie situazioni reali; infine nel quinto e ultimo capitolo si espongono i problemi ancora da risolvere, le possibilità di upgrade e i vantaggi derivati dall'approccio scelto per la soluzione del problema.
Glossario dei termini
ACF Admission Confirm
ALG Application Level Gateway
API Application Program Interface
ARJ Admission Reject
ARQ Admission Request
ASN.1 Abstract Syntax Notation one
ATM Asynchronous Transfer Mode
BCF Bandwidth Change Confirmation
BER Basic Encoding Rule
B-ISDN Broadband Integrated Services Digital Network
BRJ Bandwidth Change Reject
BRQ Bandwidth Change Request
CLC H.245 closeLogicalChannel message
CLC ACK H.245 closeLogicalChannel Acknowledge message
DCF Disengage Confirmation
DNS Domain Name System
DRQ Disengage Request
GCF Gatekeeper Confirmation
GK Gatekeeper
GRJ Gatekeeper Reject
GRQ Gatekeeper Request
GSTN General Switched Telephone Network
GW Gateway
HTTP Hypertext Transfer Protocol
ID Identifier
IP Internet Protocol
IPX Internetwork Protocol Exchange
IRQ Information Request
IRR Information Request Response
ISDN Integrated Services Digital Network
ITU-T International Telecommunication Union Telecommunication
Standardization Sector
LAN Local Area Network
LCF Location Confirmation
LRJ Location Reject
LRQ Location Request
MC Multipoint Controller
MCS Multipoint Communications System
MCU Multipoint Control Unit
MG Media Gateway
MGC Media Gateway Controller
MP Multipoint Processor
MTU Maximum Transmission Unit
NAT Network Address Translation
N-ISDN Narrow-band Integrated Services Digital Network
OLC H.245 openLogicalChannel message
OLC ACK H.245 openLogicalChannel Acknowledge message
PAT Port Address Translation
PBN Packet Based Network
PDU Packet Data Unit
PER Packet Encoding Rule
PRI Primary Rate Interface
QCIF Quarter CIF
QOS Quality of Service
RAS Registration, Admission and Status
RCF Registration Confirmation
RFC Request For Comments
RIP Request in Progress
RRJ Registration Reject
RRQ Registration Request
RTCP Real Time Control Protocol
RTP Real Time Protocol
SCN Switched Circuit Network
TCP Transport Control Protocol
TSAP Transport layer Service Access Point
UCF Unregister Confirmation
UDP User Datagram Protocol
URJ Unregister Reject
URQ Unregister Request