Università degli Studi della Calabria

Università degli Studi
della Calabria
Facoltà di Ingegneria
Corso di Laurea in Ingegneria Informatica
Indirizzo Informatica e Applicazioni in Rete
TESI DI LAUREA
PROGETTAZIONE
DI
IMPLEMENTAZIONE
SERVIZI E FUNZIONI PER TELEFONI
SNOM CON TECNOLOGIA VOIP
Relatore
ING. PROF. SERGIO FLESCA
E
Candidato
EUGENIO ROMBOLÀ
Matricola: 69829
____________________________
Anno Accademico 2009-2010
INDICE
INTRODUZIONE .................................................................................................................... 3
CAPITOLO I ........................................................................................................................... 5
TELEFONIA CLASSICA E TELEFONIA MODERNA ......................................................... 5
I VANTAGGI E GLI SVANTAGGI DEL VOIP .................................................................... 8
GLI ASPETTI TECNICI ED INFRASTRUTTURALI DEL VOIP ....................................... 13
I SERVIZI ALLA CHIAMATA DEL VOIP ........................................................................ 17
I SERVIZI ACCESSORI DEL VOIP ................................................................................. 24
PROTOCOLLI DI SEGNALAZIONE VOIP ...................................................................... 31
H.323 ................................................................................................................................ 31
SIP ..................................................................................................................................... 36
CAPITOLO II ...................................................................................................................... 40
PIATTAFORME OPENSOURCE VOIP ............................................................................. 40
ASTERISK ........................................................................................................................... 40
SER..................................................................................................................................... 48
OPENSER .......................................................................................................................... 54
KAMAILIO ....................................................................................................................... 56
OPENSIPS ......................................................................................................................... 60
CONFRONTO TRA LE ARCHITETTURE PROPOSTE......................................................... 69
CAPITOLO III ................................................................................................................... 76
AMBIENTE DI SVILUPPO (Visual Studio) ................................................................... 76
.NET FRAMEWORK ............................................................................................................. 79
PRINCIPALI CARATTERISTICHE DI VISUAL STUDIO 2010 ............................................. 83
DATABASE ........................................................................................................................ 94
PROGETTAZIONE E IMPLEMENTAZIONE ...................................................................101
CARATTERISTICHE DEL TELEFONO VOIP ....................................................................... 104
DIAGRAMMA E DETTAGLIO DELLE CLASSI ...................................................................... 106
SCHEMA DATABASE .......................................................................................................... 119
SCREENSHOT ..................................................................................................................... 121
CAPITOLO IV .................................................................................................................. 126
TESTING E CONCLUSIONI......................................................................................... 126
BIBLIOGRAFIA .................................................................................................................. 128
TESI DI LAUREA: PROGETTAZIONE
E
IMPLEMENTAZIONE
DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
INTRODUZIONE
L'informatica è un universo in continuo divenire ricco di cambiamenti e
di innovazioni, ognuna delle quali finalizzate al miglioramento delle effettive
necessità degli utenti.
Negli ultimi anni, il VoIP ha rappresentato una tecnologia in grado di
rivoluzionare la classica modalità di comunicazione telefonica, aggiungendo
nuovi orizzonti comunicativi. VoIP è
l'acronimo
di
Voice
over
Internet
Protocol, da cui si deduce la presenza,
perché
tale tecnologia possa essere
adoperata, di un protocollo di base
TCP/IP e di convertitori che possano far viaggiare all'interno della rete il
traffico vocale. Tali convertitori, viceversa, devono rendere l’audio di qualità
accettabile una volta che la telefonata perviene al destinatario. Questa
tecnologia è esplosa, e si è diffusa, a causa dei minimi costi e dell'utilizzo
massiccio da parte dell'intera comunità di connessioni internet ad alta
velocità
ed
ottima
affidabilità.
Tale
successo
è
riscontrabile,
particolarmente, dall'utilizzo della stessa in determinati ambiti professionali.
Il
lavoro
svolto,
in
questa
tesi,
è
stato
finalizzato
alla
PROGETTAZIONE E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER I TELEFONI
SNOM, che utilizzano la tecnologia VoIP adattabile a numerosi scenari
applicativi in ambito professionale. In particolare è stato creato un
sistema modulare riadattabile, in grado di essere utilizzato in futuro in
diversi contesti. Per rendere possibile quanto su detto, è stata scissa la
fase progettuale dalla specifica implementazione adoperata.
Snom One è un sistema di telefonia VoIP (Voice-over-IP). E’ il primo
passo nell’evoluzione della gamma di prodotti Snom ed è una soluzione rivolta
ai clienti che desiderano che tutte le funzioni dei telefoni snom siano
supportate da un singolo sistema completo.
Il sistem snom 320 - Telefono VoIP basato su SIP – su cui si è
concentrata la mia attività prevalente, è ideale per l'ufficio e per chi
telefona molto: lo Snom 320 é un telefono SIP professionale dall'ottimo
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
rapporto qualità prezzo e dotato del vivavoce (full duplex) come della
funzione di conferenza a tre.
La creazione del progetto prefissato, permette comunicazioni stabili e
distribuite all'interno di una rete. L'implementazione proposta si adatta ad
uno scenario di rete a dimensione medio-grande, in cui sono presenti
differenti SIP Proxy; ognuno in grado di processare chiamate VoIP
effettuate da utenti, che sono gestite in maniera distribuita ed equa tra i
SIP
Proxy
attivi.
L'implementazione
specifica
di
progetto
si
basa
sull'architettura OpenSIPS, che risulta essere tra le differenti soluzioni
presenti nel mondo VoIP opensource, la più adoperata per sfruttare le
specifiche protocollari SIP. Il protocollo SIP, a differenza dell'ormai
obsoleto protocollo H.323, permette la gestione efficiente e scalabile delle
sessioni applicative tra utenti VoIP.
La fase implementativa è stata
affrontata con particolare oculatezza, andando a specificare tutte le scelte
progettuali
che
hanno
portato
alla
costruzione
del
sistema
ed
al
raggiungimento degli scopi prefissati; il tutto nel rispetto dei vincoli di
utilizzo di software VoIP Opensource.
Nella fase finale del sistema sono state effettuate le dovute
considerazioni sulle soluzioni proposte, in relazione ai riscontri dal punto di
vista delle performance e della qualità delle soluzioni; inoltre sono state
analizzate
prospettive future e
potenzialità
relative
all'architettura
adoperata.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
CAPITOLO I
TELEFONIA CLASSICA E TELEFONIA MODERNA
La modalità di comunicazione telefonica non ha subito cambiamenti
rilevanti, con il passare degli anni; le entità previste in tale sistema
comunicativo sono: il telefono, la linea
telefonica (che trasporta il segnale vocale)
e la compagnia telefonica, che provvede alla
comunicazione
effettiva
prenotando
le
dovute risorse.
Gli
apparecchi
telefonici
maggiormente adoperati sono apparecchi analogici, il loro funzionamento è
rimasto sempre lo stesso e prevede la presenza di un microfono per
catturare i suoni prodotti dall'interlocutore e di un cavo telefonico su cui,
dopo un semplice spostamento di frequenza, il segnale verrà trasmesso. Tale
sistema comunicativo è obsoleto e presenta, sotto molti punti di vista, degli
aspetti negativi ma, essendo ormai la
società abituata ad adoperare tale
oggetto di largo consumo, gli utenti
proseguono
comunicare
su
questo
modo
ignorando
di
aspetti
complementari e potenzialità nascoste.
Il VoIP, acronimo di Voice over
IP,
è
un
comunicazione
sistema
moderno
telefonica
di
che
fuoriesce dagli schemi attuali che si sono delineati nel tempo. Le entità
previste, in tale sistema comunicativo, sono le medesime adoperate nella
telefonia classica; tuttavia, non sono delineati dei canoni ben precisi in cui
far rientrare il telefono, la compagnia telefonica ed il mezzo trasmissivo.
Secondo il VoIP si effettuano delle chiamate tra utenti, adoperando come
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
mezzo di trasporto non una rete tradizionale PSTN ma una rete Internet, o
un'altra rete (purché adoperi il protocollo IP) come ad esempio una rete
LAN. Tale tecnologia si è affermata, negli ultimi anni, grazie alla forte
espansione a macchia d'olio di Internet. Possiamo infatti constatare che,
grazie alle connessioni a banda larga, ultimamente si stanno aprendo degli
orizzonti su cui sviluppare nuove modalità di comunicazione; il raggiungimento
di tali traguardi ha come principale conseguenza il cambiamento degli
standard comunicativi. Il modello seguito, nei suddetti sistemi, prevede la
presenza di un client e di un server: il client è rappresentato dal telefono,
mentre il server è il provider VoIP, che fa sì che avvenga la comunicazione.
Tale
provider
può
fungere, a sua volta, da client
per un altro provider VoIP,
creando una gerarchia ad albero
tra i Server, fino ad instradare
la
chiamata
al
giusto
destinatario. Questa struttura
concretamente è rappresentata
da un'applicazione che gira sulla
rete; per far si che venga
mantenuta una compatibilità con i classici sistemi PSTN, ISDN, si adoperano
dei gateway, tuttavia presenti anche per interconnettere reti radiomobili
GSM, UMTS. Il primo aspetto che si manifesta, nell'uso di questa tecnologia,
è il notevole abbattimento dei costi relativi alla comunicazione; tale
constatazione si manifesta in quanto si sfrutta l'infrastruttura di una rete
LAN interna per interconnettere utenti che ne fanno parte. Il consumatore
privato, utilizzando un collegamento ad Internet a banda larga, può
effettuare e ricevere chiamate telefoniche, potendo contare molte volte su
un costo nullo per determinate chiamate e su costi contenuti per chiamate ad
utenti che usano reti PSTN, nella stessa nazione o all'estero. Tale concetto,
esteso ad un ambito aziendale, rappresenta oltre che un risparmio
significativo anche un aumento del grado di integrazione del personale; sono
infatti in crescendo le aziende che adottano il VoIP per l'interconnessione
tra sedi dislocate in luoghi differenti e l'intercomunicazione tra personale,
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
anche situato all'interno della medesima sede. Con la crescita degli utenti
VoIP si hanno nuove opzioni da accostare alle semplici telefonate, come
l'abbattimento delle distanze, eliminando la distinzione tra chiamate locali e
chiamate a lunga distanza, il mantenimento di differenti numeri telefonici su
una sola linea, il salvataggio di messaggi vocali all'interno del proprio
computer, ed, in ultimo, un costo nullo per chiamate tra utenti che adoperano
lo stesso Provider. Nonostante tale sistema di comunicazione apporti
numerosi benefici, tuttora, la presenza del VoIP su abitazioni private risulta
essere minima, mentre all'interno delle grandi aziende si sta espandendo a
macchia d'olio; in tal modo si realizzeranno delle reti telefoniche dedicate,
per interconnettere sedi di una stessa azienda dislocate sul territorio.
Queste aziende andranno a creare delle proprie reti telefoniche dedicate,
effettuando nelle stazioni di commutazione la conversione del segnale
analogico ad un segnale digitale formato dai pacchetti IP. Seguendo tale
metodologia, si andranno ad effettuare delle reti interne adibite non solo alla
comunicazione tra utenti, ma anche allo scambio di dati ed all'utilizzo di
differenti servizi. Questi servizi risultano essere forniti agli utenti grazie
alla tecnica del data abstraction, che ci permette di dedurre le
caratteristiche dei dispositivi che hanno effettuato la comunicazione (come
ad es. l'interfaccia che si adopera, i pulsanti del dispositivo, la dimensione
dello schermo ecc.) e di configurarne ad hoc i servizi.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
[1][2]
TELEFONI SNOM
CON TECNOLOGIA
VOIP
I VANTAGGI E GLI SVANTAGGI DEL VOIP
Adoperando il VoIP, molte di quelle caratteristiche proprie della
telefonia tradizionale possono essere ereditate ed altre sono aggiunte, come
ad esempio: la portabilità del numero, la possibilità di adoperare dei terminali
molto simili ai tradizionali telefoni, i servizi di segreteria telefonica etc.;
mentre molte caratteristiche innovative possono essere aggiunte quali: la
videoconferenza, la messaggistica istantanea, la possibilità di manifestare la
presenza dell'utente nella rete, il multimedia over IP, il Mobile VoIP etc..
La rete telefonica classica PSTN è stata progettata solo per il
trasporto della voce. A differenza della rete internet la progettazione è
differente, in quanto in una comunicazione telefonica si andrà a prenotare un
insieme di risorse che vanno a rappresentare il circuito fisico dedicato tra gli
utenti. Tale comunicazione si basa sulla tecnica della commutazione di
circuito, la quale permette, per tutta la durata della comunicazione, che gli
interlocutori abbiano un canale dedicato, indipendente dal fatto che le parti
siano in conversazione attiva o in silenzio; ciò comporta un’allocazione statica
delle risorse e, più in dettaglio, si andrà ad ottenere un circuito dedicato che
garantisce una banda di 64 kbps bidirezionale, con qualità garantita per
l'intera comunicazione.
Il
vantaggio
più
importante dell'utilizzo del
VoIP è relativo al canale
trasmissivo,
che
riservato
per
non
è
l'intera
durata della comunicazione,
poiché
il
trasporto
segnale
seguendo
non
la
del
avviene
modalità
di
commutazione di circuito,
bensì secondo la modalità di commutazione di pacchetto. In tal modo, non si
ha la creazione di un canale dedicato con un assegnamento statico delle
risorse, ma i pacchetti viaggeranno ognuno in maniera autonoma secondo
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
percorsi non calcolabili a priori. Tale modalità permette un utilizzo ottimale
della rete, poiché non ci saranno sprechi di risorse che verranno impegnate
per il tempo necessario alla comunicazione e liberate quando la comunicazione
non è attiva. Nella telefonia classica infatti, quando si crea un circuito, le
risorse impegnate sono bloccate anche se ci sono periodi di silenzio, mentre
ciò non avviene con la modalità a commutazione di pacchetto. Secondo il VoIP
il segnale vocale viaggia, previa conversione e compressione, in pacchetti IP;
tale caratteristica permette un utilizzo contemporaneo di più flussi
informativi, come ad esempio flussi dati di tipo testuale, flussi video ecc.,
senza che siano presenti più canali dedicati in parallelo. Bisogna sottolineare
che con tale tecnologia si ottiene un massiccio abbattimento dei costi su due
fronti
fondamentali,
sul
costo
della
singola
chiamata
e
sul
costo
dell'infrastruttura. La riduzione del costo della chiamata risulta possibile
grazie all'utilizzo della rete internet come mezzo di trasporto, quindi anche
se il mittente si trova in un luogo molto lontano da dove si trova il
destinatario, il costo in alcuni casi arriva addirittura ad essere nullo. La
riduzione del costo dell'infrastruttura è limitato all'attivazione di una rete
internet a banda larga, e cioè di una linea con una velocità pari o superiore a
256 kbit/s e, considerando l'aspetto dell'allargamento a macchia d'olio di
internet, in molti casi
risulta essere già presente. In generale, la
comunicazione telefonica è formata per la
maggior parte da quella che noi definiamo
telefonia tradizionale, cioè reti che si
basano sul trasporto del segnale vocale
tramite PSTN (Public Switched Telephone
Network);
il
VoIP
permette
un'interconnessione con questa modalità,
grazie alla presenza di gateway interposti
tra
le
due
reti
intercomunicazione.
e
di
Tale
dispositivi
tecnologia
di
nel
momento della creazione è stata studiata per potersi adattare a quelli che
sono gli sviluppi futuri di internet ed in generale del mondo delle
comunicazioni; è visibile, infatti, come tale modalità di telefonia si inserisca
in maniera ottimale nello scenario comunicativo Wi-Fi e Wi-MAX (entrambi
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
basati su reti a larga banda). Nella telefonia analogica abbiamo una garanzia
fondamentale nell'effettuare una comunicazione, cioè che l'alimentazione
elettrica non andrà ad influire sul mantenimento dello stato attivo della
chiamata; tale vantaggio, purtroppo, viene a mancare nella comunicazione
VoIP, in quanto nell'eventualità avvenga uno stallo anche temporaneo
dell'alimentazione elettrica la chiamata inevitabilmente andrà a concludersi
bruscamente, poiché andranno a spegnersi i componenti che mantengono
attiva la connessione.
Emerge,
inoltre,
facendo
un
confronto con la precedente tecnologia, che
c'è
una
difficoltà
maggiore
nel
poter
instaurare una chiamata con un utente. Con il
VoIP viene a mancare, in un certo senso, la
caratteristica del plug&play del terminale;
poichè,
nella
telefonia
analogica,
basta
inserire il terminale ad una presa telefonica
e si può far partire una chiamata; con la
tecnologia VoIP non basta effettuare un
semplice passo per inizializzare una chiamata, ma è necessaria una fase di
setup imprescindibile, la quale prevede una connessione con l'esterno ed una
fase successiva di configurazione dell'utente. Nello scambio dati, come ad
esempio pagine internet o file scaricati, ha un'importanza decisiva la
presenza, agli estremi, dei modem; poiché questi sono in grado di fare
controlli, di ricostruire pacchetti, e sequenze danneggiate di bit, e di
richiedere il rinvio ove necessario.
Relativamente alla comunicazione vocale, non esistono controlli che
possano rimediare ai difetti di trasmissione della voce; per tale motivo la
presenza di modem, nella tecnologia VoIP, risulta essere invisibile agli utenti
in quanto non ne migliora la qualità. Poiché, come già anticipato, internet e, in
generale, le reti dati non sono adatte alla trasmissione della voce, si è resa
necessaria la presenza di tecniche ed apparecchiature che possano garantire
una determinata soglia qualitativa. Tra queste tecnologie bisogna sottolineare
la presenza di determinati moduli all'interno dei router, che permettono di
distinguere normali pacchetti IP contenenti dati da pacchetti VoIP
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
contenenti voce codificata, assegnando a questi ultimi una priorità maggiore;
in tal modo si andrà a garantire tempi di risposta più veloci e tempi di latenza
minimi, diminuendo, in generale, i ritardi.
Il Provider che fornisce la connessione ad internet, dovrebbe
garantire una larghezza di banda sufficientemente ampia per ridurre i ritardi
nell'invio dei pacchetti e le perdite di dati; ma nonostante tale caratteristica
risulti facilmente ottenibile nelle reti private, si riscontrano difficoltà
quando si usa internet come mezzo trasmissivo in reti che si interfacciano
con l'esterno. In reti che hanno un datarate minore di 256 kbit/s possono
sorgere
problemi di jitter, consistenti in una ricezione discontinua del
segnale vocale. Tale problematica deriva da difficoltà dovute alla fase di
conversione del segnale da analogico a digitale, precisamente ad errori nelle
procedure di campionamento del segnale e quantizzazione dello stesso.
Su reti non a banda larga il ritardo trasmissivo diventa importante, i
protocolli VoIP adoperano pacchetti con dimensioni inferiori alla dimensione
di quelli normali; ciò comporta un accodamento di tali pacchetti nel
commutatore che, in quel determinato momento, è in trasmissione di
pacchetti aventi dimensione normale e contenenti dati, creando un ritardo
rilevante e soprattutto non calcolabile a priori. Tra le caratteristiche proprie
di una comunicazione sicura, bisogna elencare: l'integrità dei messaggi
informativi (che vengono scambiati tra gli utenti), la riservatezza associata al
contenuto dei messaggi informativi scambiati, la possibilità di poter
verificare le chiamate effettuate. Queste caratteristiche rappresentano
aspetti fondamentali da associare ad una comunicazione che sia sicura ed in
accordo a politiche di privacy; tuttavia, nella tecnologia che stiamo trattando,
tale problema è attuale in ugual modo a come lo è nella telefonia tradizionale.
Poiché tutte le chiamate passano attraverso un operatore, può
avvenire che le conversazioni, o i tabulati delle chiamate, possano essere
registrati, andando ad infrangere la caratteristica di confidenzialità della
chiamata. In ugual modo, adoperando tale tecnologia, possono verificarsi
intrusioni nella comunicazione ed attacchi; se la comunicazione VoIP avviene
usando programmi a codice sorgente chiuso, risulta più difficile accertare
che non vi siano spyware presenti. Tali applicazioni possono rendere pubblica
a terzi la chiamata, oppure ne possono registrare il contenuto informativo;
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
il rischio si moltiplica se la chiamata passa attraverso un server, non essendo
diretta tra due utenti. A causa dell'infrastruttura del VoIP, che si basa sulla
rete internet per far viaggiare il contenuto informativo, risulta difficile
applicare politiche di ricostruzione della sequenza di pacchetti sul lato
destinatario. Inoltre, il fattore della scalabilità del sistema è basso e lo si
può notare da alcuni aspetti: all'aumentare del numero di trasmissioni,
contemporanee su un'unica linea, ci sarà un decadimento del throughput e
della
qualità
generale del sistema, ed ancora, con un aumento delle
trasmissioni
sono
necessarie
molte
più informazioni e
segnalazioni
da
parte di protocolli
ad
hoc
per
regolamentare
le
chiamate. Come già
anticipato
ampiamente finora,
la
comunicazione
VoIP
Internet,
nel
trasporto
dei
pacchetti
contenenti
il
si
basa
segnale
su
vocale
digitalizzato; ciò comporta un difetto rilevante, dato dalla difficoltà nel
rintracciare l'esatta posizione geografica del chiamante il quale potrebbe
essere favorito qualora volesse nascondere il luogo da cui avviene la
comunicazione, andando a rappresentare un forte incentivo nell'utilizzo di
tale tecnologia da parte di utenti malintenzionati.[3][4][5]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
GLI ASPETTI TECNICI ED INFRASTRUTTURALI DEL
VOIP
Una trasmissione di segnali vocali sul protocollo VoIP, deve sottostare
a determinati processi, i quali si effettuano su due differenti fronti: quello
del mittente e quello del destinatario.
Precisamente sul lato mittente il segnale vocale sarà processato come
segue:

Conversione Analogico-Digitale del segnale vocale analogico.

Compressione dei dati.
Dopo la trasmissione sulla rete, i contenuti informativi giungeranno al
destinatario in pacchetti IP, processati ognuno come segue:

Decompressione del dato.

Conversione Digitale-Analogico del segnale vocale digitalizzato.
A questo punto,
il
segnale
vocale
perviene al terminale
del destinatario che
riceverà
la
conversazione,
di
questa
ignaro
serie
di
passaggi che si sono
effettuati in tempo reale ed in trasparenza. La conversione di un segnale da
analogico a digitale, avviene in due fasi differenti: la prima consiste nel
campionamento
del segnale continuo in un insieme di impulsi, mentre la
seconda consiste nella quantizzazione che associa una serie di valori numerici
all'insieme di impulsi; tale sequenza di valori numerici è il segnale digitale
espresso in una stringa di bit.
Per
poter
snellire
la
trasmissione del segnale sulla
rete, ci serviamo di algoritmi di
compressione, che andranno ad
adoperare
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
delle
TELEFONI SNOM
tecniche
CON TECNOLOGIA
VOIP
finalizzate a favorire uno snellimento dei dati, senza perderne il contenuto
informativo. Quindi vengono utilizzati protocolli specifici per far pervenire i
pacchetti al destinatario. Una volta che i pacchetti saranno arrivati a
destinazione, il decompressore, in accordo all'algoritmo usato dal mittente in
fase di invio, ristabilirà i dati nella loro integrità; successivamente ci sarà il
processo di decodifica del segnale digitale in segnale analogico, che, a tal
punto, diventerà intellegibile da parte dell'utente. Sono richieste due
tipologie di protocolli nella tecnologia VoIP: una per il trasporto dei dati ed
una per la segnalazione, affinché una comunicazione possa funzionare.
Il protocollo di segnalazione, in particolare, garantisce la funzionalità
di determinati aspetti legati alla conversazione, come: la ricostruzione dello
stream audio, la
sincronizzazione, l'identificazione dell'utente che ha
effettuato la chiamata e tanti altri aspetti. Relativamente al protocollo di
trasporto ed al protocollo di segnalazione, dobbiamo sottolineare che si è
prevenuti ad uno standard univoco solo per il primo. Nella maggior parte delle
implementazioni del VoIP si adopera largamente RTP, per trasportare i dati.
Il protocollo RTP è stato adoperato, fino ad ora, principalmente per il
trasporto dati di tipo GSM, MP3 ed MPEG. Per garantirne il trasporto nella
rete , un pacchetto RTP deve essere inizialmente incapsulato in un pacchetto
di tipo UDP e, successivamente, incapsulato in un ulteriore pacchetto IP. Tale
protocollo garantisce la ricostruzione, una volta ricevuti i pacchetti, ma non
garantisce un invio tempestivo, e soprattutto ordinato, della corretta
sequenza. Differentemente, per i protocolli di segnalazione, il discorso,
tuttora, risulta aperto alla definizione di uno standard unico, anche se
limitato a due alternative H.323 e SIP. Per poter definire tale questione,
risultano essere parte attiva differenti enti internazionali e consorzi, che
lavorano per poter ottenere un unico standard da associare ai protocolli di
segnalazione; l’ITU (International Telecommunications Union) e
l’IETF
(Internet Engineering Task Force) hanno creato le due alternative principali
che sono, come anticipato prima, rispettivamente H.323 e SIP (Session
Initiation Protocol). Dalla nascita del VoIP, la prima famiglia di protocolli di
segnalazione è l' H.323, che, essendo stato proposto cronologicamente prima
dall'ITU rispetto ai protocolli SIP dell'IETF, è stato massicciamente
adoperato come protocollo standard di segnalazione. La proposta SIP è nata a
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
seguito
dell'analisi
del
protocollo
H.323,
che
risulta
essere
poco
interoperabile per quanto riguarda produttori di dispositivi VoIP differenti
da quelli a standard H.323; inoltre con l'utilizzo di questi nuovi protocolli
SIP, avviene una ridotta segnalazione in fase di inizializzazione della
chiamata.
Le due famiglie di protocolli H.323 e SIP sono nate entrambe per
finalità differenti. H.323 fornisce una completa suite, capace di ottimizzare
chiamate aperte a più di due utenti tra di loro intercomunicanti, e servizi
differenti,
quali: codifica dei dati a livello applicativo, protocolli di
segnalazione, controllo e trasporto di flussi audio-video e dati, gestione della
sicurezza, ottimizzazione della chiamata in riferimento ad architetture di
rete locali. SIP, a differenza di H.323, è un protocollo adibito, oltre che alla
segnalazione, anche al controllo di sessioni multimediali, nonostante il suo
scopo fondamentale è la regolamentazione di comunicazioni voce real-time
adoperando IP. Questa famiglia di protocolli gestisce tutte le funzioni base
di controllo di una chiamata, quali: l'instaurazione e la terminazione della
sessione comunicativa, tutte le operazioni di segnalazione;
fornisce un tono
di chiamata; dà la possibilità di mettere in attesa una chiamata e di
trasferirla ad un altro utente e possiede processi di
identificazione del
chiamante e tante altre funzionalità. H.323, essendo stata fino a pochi anni
fa l’unica soluzione standard adottata dai produttori di dispositivi per
telefonia VoIP, dà un supporto sia di applicativi PC che di dispositivi di rete e
di terminali, ma per contro ha come neo l'aspetto di essere stato pensato
per una generica rete a pacchetto. SIP si sta diffondendo grazie all'ottima
integrazione con TCP/IP
ed alla sua maggiore semplicità, infatti H.323,
essendo stato ottimizzato in un ambito telefonico, risulta essere molto più
complesso. Nonostante lo standard H.323 sia stato il predefinito fino a poco
tempo fa, il mercato dei terminali VoIP, dei software e dei gateway per
l'interconnessione con reti PSTN, si sta ormai orientando verso soluzioni
basate sullo standard SIP. A conferma di ciò risultano essere numerosi
consorzi ed enti che hanno incluso SIP nelle loro specifiche, trai i quali il
3GPP per UMTS.
Bisogna sottolineare la presenza di altri protocolli di segnalazione che
si accostano ai due, finora trattati; tra questi il protocollo a codice
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
proprietario adoperato da Skype; SCCP adoperato della Cisco a codice
proprietario; IAX, usato dai server Asterisk ; XMPP, adoperato da Google
Talk..[6]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
I SERVIZI ALLA CHIAMATA DEL VOIP
VoIP offre un grande insieme di utili ed interessanti caratteristiche,
molte delle quali sono inserite in maniera gratuita nel pacchetto standard dei
servizi, fornito dal service provider; in funzione delle
necessità di comunicazione dell'utente, tali componenti
verranno inclusi o meno nel pacchetto VoIP. C'è una
gamma ampia di differenti componenti che servono a
vari scopi: aiutare l'utente a gestire le chiamate,
accedere a servizi aggiuntivi, gestire i nuovi servizi con
tools appropriati, ecc.. Alcuni di questi componenti
possono essere tools, di tipo business, altri possono essere di supporto ai già
presenti tools, che servono a permettere una comunicazione con gli altri
utenti. Le caratteristiche offerte dalla tecnologia VoIP vengono distinte in
due categorie principali:
1. Caratteristiche base VoIP;
2. Caratteristiche avanzate VoIP.
In relazione alla prima categoria andremo ad elencare le seguenti
caratteristiche:

Caller ID;

Voicemail;

3-Way Calling

Call Blocking;

Call Waiting;

Call Forwarding;

Caller ID with Name;

Last number Re-Dial;

411 Directory;

Local Number Portability;

911 Service.
Caller ID è una caratteristica che permette all'utente di conoscere
chi lo sta chiamando prima che avvenga l'instaurazione della chiamata.
Normalmente il numero del mittente è mostrato sul display del telefono, e
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
tale nome viene visualizzato solo previo l'inserimento del chiamante
all'interno di una lista memorizzata nella memoria del telefono. Se si vuole
vedere il nome della persona visualizzato sul display, in riferimento non
all'alias con cui è stato memorizzato bensì al nome con cui è registrato al suo
service provider, dobbiamo sottoscrivere un altro servizio chiamato caller ID
with name.
Voicemail è il nome di una caratteristica VoIP che si riferisce ad un
messaggio vocale che un chiamante lascia quando la persona chiamata è
assente o in comunicazione con un terzo utente. Il funzionamento è simile a
quello relativo alla vecchia segreteria telefonica; ma la principale differenza
è che il messaggio verrà memorizzato all'interno del server del service
provider anziché nella memoria locale della segreteria. Non risulta essere
molto differente da una e-mail in quanto il messaggio memorizzato sul server,
verrà tradotto da voce a testo. Tali messaggi vocali godono di differenti
proprietà: possono essere mantenute, allo stesso tempo, diverse voicemails
provenienti da differenti chiamanti, possono essere a loro volta inoltrate ad
altri utenti, si può aggiungere un'introduzione vocale al messaggio che si sta
inoltrando, tali messaggi vocali possono essere inviati in broadcast a tutti gli
utenti memorizzati nel proprio profilo, possono essere memorizzate per un
lungo periodo di tempo, può avvenire la notifica di un eventuale ricezione di
un messaggio vocale tramite un avviso che perviene al telefono cellulare,
infine tali messaggi vocali possono essere consultabili online, ciò significa che
per poterli leggere non è necessaria la presenza nella rete VoIP.
3-Way Calling è una caratteristica mantenuta dentro il pacchetto di
servizi VoIP di base, e permette all'utente di parlare contemporaneamente a
due persone in un'unica conversazione. Per effettuare una conversazione a 3
si devono seguire una serie di passaggi: bisogna, per prima cosa, controllare
se tale caratteristica è offerta dal service provider; poi si deve chiamare la
prima persona; si deve attivare la caratteristica; poi si deve chiamare la
seconda persona; si deve attivare nuovamente la caratteristica; infine si può
effettuare la comunicazione. Tuttora non è possibile effettuare chiamate a
più di 3 utenti per volta.
Call Blocking è una caratteristica fondamentale nella tecnologia VoIP;
permette all'utente di poter bloccare le chiamate provenienti da utenti
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
indesiderati. Per poter sfruttare tale caratteristica basta inserire l'utente
indesiderato all'interno di una black list; ogni volta che il suddetto utente
proverà ad indirizzare una chiamata verso il richiedente del servizio, gli verrà
rifiutata la rete ed il telefono non emetterà nessun suono. Tale
caratteristica permette all'utente di non andare incontro a fastidiosi cambi
di numero come avveniva con la telefonia classica.
Call Waiting è un servizio che permette all'utente che lo sottoscrive,
di non perdere delle chiamate che pervengono a lui in maniera concorrente.
L'utente che ha attivato tale servizio, mentre è impegnato in una chiamata,
ed una terza persona prova ad effettuare una chiamata verso di lui verrà
avvisato da uno speciale suono di notifica.
Il Call Forwarding permette all'utente di inoltrare chiamate in
ingresso dal suo telefono ad altri telefoni o voicemail; in tal modo si è sicuri
di non perdere nessuna chiamata mentre si è lontani dall'apparecchio. E'
possibile grazie a questa tecnologia che la chiamata che dovrebbe pervenire
al terminale VoIP, possa essere inoltrata ad un telefono cellulare oppure ad
un altro numero VoIP; la caratteristica interessante è che la chiamata può
essere inoltrata a più di un numero telefonico.
Caller ID with Name è una caratteristica avanzata del Caller ID;
permette all'utente, che la sottoscrive, di vedere, prima di rispondere alla
chiamata, il nome del mittente per come è stato registrato sul server del
service provider e non per come è memorizzato nella propria lista di alias.
Last Number Redial è una caratteristica molto semplice ed è
disponibile con molti telefoni tradizionali; basta effettuare la pressione di un
bottone sul terminale VoIP e viene effettuata la richiamata dell'ultimo
numero chiamato. E' una caratteristica molto utile quando si deve chiamare
frequentemente lo stesso numero oppure quando si deve tentare più volte di
chiamare un numero e la linea risulta occupata.
411 Directory è una caratteristica associata al numero di assistenza
per avere informazioni relative a persone che si trovano all'interno della
stessa area; tale servizio non è gratuito e soprattutto, in base al service
provider a cui ci si è appoggiati, verrà effettuata la chiamata al debito
numero.
Local
Number
TESI DI LAUREA: PROGETTAZIONE
Portability è una caratteristica che permette
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
all'utente di adoperare il suo numero telefonico esistente con VoIP; il
cambiamento da una rete PSTN ad una rete VoIP è più agevole grazie a
questa funzione. Tale servizio permette al sottoscrivente, che ha effettuato
il passaggio ad una rete VoIP, di poter essere rintracciato in maniera univoca
e trasparente sia dai nuovi utenti VoIP che dai vecchi utenti PSTN.
911 Service è una caratteristica di importanza rilevante, in quanto
permette agli utenti, in caso di emergenza, di effettuare la chiamata ad un
numero riservato. In USA tale numero è il 911 che da il nome al componente,
in Europa il numero è il 112; naturalmente in funzione del service provider che
fornisce il servizio, ci sarà la chiamata al debito numero.
Per quanto riguarda invece la categoria relativa alle caratteristiche di
tipo avanzato elencheremo:

E911 Service;

Anonymous Call Block;

Change Phone Number;

Keep Number For Life;

PC to Phone Option;

Telemarketer Blocking;

Area Code Selection;

Contact Lists;

Enhanced Voicemail;

Line Unavailable Forward;

Repeat Dial if Busy;

Toll Free Numbers;

Call Transfer;

Distinctive Ringing;

Extra Virtual Numbers;

Multi-Ring;

Return Call;

Travel Globally;

Caller ID Blocking;

Do Not Disturb;

International Blocking;

Online Account Management;
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP

Speed Dialing;

SMS.
E911 è una caratteristica avanzata associata del 911 Service. Come si
evince dal nome del servizio, possiede una peculiarità che lo rende migliore
rispetto al servizio base; una volta che l'utente viene collegato con il 911, in
maniera automatica con questo nuovo servizio, vengono fornite le credenziali
al centro emergenza. Tale caratteristica va in conflitto con la politica del
VoIP, in quanto vincola l'utente ad avere un unico indirizzo per un periodo di
tempo relativamente lungo.
Anonymous Call Block è una caratteristica che blocca la possibilità di
permettere, a coloro i quali vogliono effettuare delle chiamate anonime ad
altri utenti, di poterle effettuare indistintamente. Si definisce una chiamata
anonima quando al telefono del destinatario della chiamata, da parte del
service provider, avviene il mascheramento del nome associato al mittente.
Change Phone Number è una caratteristica che è stata studiata per
eventuali scenari futuri; permette,
a seguito di differenti problematiche
come ad esempio quelle relative alla privacy, all'utente di effettuare il
cambiamento di numero telefonico VoIP senza cambiare il service provider.
Keep Number for Life è una caratteristica che permette all'utente
di poter mantenere a vita, associato al suo profilo di utenza, un unico numero
telefonico. Tale caratteristica è nata per coloro i quali non vogliono cambiare
numero telefonico ma vogliono cambiare service provider.
Pc to Phone Option è una caratteristica che permette di effettuare
chiamate VoIP senza adoperare il terminale VoIP; il tutto è possibile grazie
all'utilizzo di un softphone installato sul proprio PC. Di solito tale
caratteristica non è associata al servizio standard e prevede , ove ci siano
chiamate verso reti PSTN o GSM, costi conteggiati in base a proprie tariffe.
Telemarketer Blocking è una caratteristica che effettua il bloccaggio
delle chiamate che pervengono ad un utente da parte di call center e di
venditori; le cui chiamate sono effettuate per pubblicizzare delle vendite.
Per poter bloccare queste chiamate non si adopera il servizio di Call Blocking,
in quanto non si è a conoscenza del numero del mittente, ma si adopera tale
funzionalità che andrà a distinguere questo tipo di chiamate dalle altre
grazie ad un riconoscitore di selezione; il sistema rileva se dall'altro capo
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
della linea ci sia una macchina automatica, che effettua la chiamata, oppure
se c'è un utente in carne ed ossa grazie alla velocità con cui il numero è stato
digitato.
Area Code Selection è una caratteristica che associa al numero
telefonico dell'utente i giusti cambiamenti in termini di prefisso, quando si
andrà ad effettuare uno spostamento regionale.
Contact Lists
è una caratteristica che permette all'utente di
personalizzare l'ID di un chiamante, permettendo, quando arriva una
chiamata, di visualizzare l'alias associato al contatto.
Enhanced Voicemail è una caratteristica simile alla Voicemail ma
integrata con nuove tecnologie, come: la possibilità di ascoltare i messaggi
lasciati da altri utenti adoperando l'interfaccia grafica fornita dal service
provider, la possibilità di ricevere le voicemail come degli allegati di una email, la possibilità di ricevere una notifica di una voicemail sul telefono
cellulare.
List Unavaible Forward è una caratteristica importante legata molto
alla tecnologia VoIP; infatti, considerato che non sempre si ha una
connessione efficiente e funzionante, possono verificarsi quei problemi di
mancata ricezione di una chiamata per inefficienza della connessione. Tale
caratteristica andrà a risolvere questa problematica, effettuando l'inoltro
della
chiamata
ad
un
numero
differente
e
garantendo
sempre
la
raggiungibilità dell'utente.
Repeat Dial if Busy è una caratteristica che dà aiuto all'utente nel
caso in cui deve effettuare una chiamata ad altro utente che risulta essere in
stato occupato. Questa funzione, se attivata, effettuerà la richiamata al
numero occupato finché non si libera; a quel punto avverrà una notifica che
indica che l'utente desiderato è ritornato in linea.
Toll-Free Numbers rappresenta un numero che si può chiamare senza
alcun costo; tale caratteristica permette di poter rendere il proprio numero
un Toll-Free number e, quindi, un numero verde che può essere chiamato
gratuitamente da altri utenti.
Call Transfer è la caratteristica di trasferimento di chiamata; è un
Call forwarding manuale, che effettua l'inoltro di una chiamata senza
risposta ad un altro numero.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Distinctive ringing è la caratteristica che permette il settaggio di
differenti suonerie a differenti numeri presenti nella lista dei contatti. Si ha
così la possibilità di percepire l'identità del chiamante, senza che avvenga la
lettura del suo ID sul display del telefono.
Extra Virtual numbers è la caratteristica che permette di avere un
ulteriore numero da aggiungere alla linea telefonica normale; in tal modo si
può avere su un unico profilo registrato sul service provider più linee
telefoniche.
Multi-rings è la caratteristica che permette all'utente, all'arrivo di
una chiamata dall'esterno, di far suonare più di un telefono allo stesso tempo;
se tale servizio è attivato e perverrà una chiamata in ingresso sulla linea
VoIP, vedremo come ci sarà lo squillare multiplo sia del telefono VoIP che del
telefono cellulare.
Return Call è la caratteristica che permette la richiamata di un
utente mittente, che ha tentato di effettuare una chiamata verso l'utente
destinatario e non ha ottenuto risposta; ciò può avvenire tramite la pressione
di un qualsiasi tasto.
Travel Globally è la caratteristica che permette lo sfruttamento a
pieno del concetto di portabilità del numero; permette agli altri utenti di
poter rintracciare un utente nel mondo in maniera trasparente e senza
pagare delle tariffe internazionali. Questa possibilità è resa concreta, poiché
il numero fornito dal service provider è associato in maniera univoca ad uno
strumento hardware o software, come un terminale oppure un softphone;
grazie a ciò si consente la rintracciabilità dell'utente in qualsiasi parte del
mondo basandosi solamente sulla connessione ad una rete a banda larga.
Caller ID Blocking è una caratteristica che permette ad un utente di
effettuare una chiamata verso altri utenti in maniera anonima; con tale
caratteristica si nascondono sia l'ID che il numero del telefono VoIP,
entrambi forniti dal service provider.
Do Not disturb è la caratteristica che mette l'utente nella possibilità
di silenziare la suoneria del terminale VoIP, ogni volta che perviene una
chiamata in ingresso.
International Blocking è la caratteristica che consente il bloccaggio
della possibilità di effettuare chiamate internazionali da parte del proprio
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
numero VoIP; caratteristica molto importante, in quanto le chiamate
internazionali sono molto costose.
Online Account Management è la caratteristica che permette
all'utente di effettuare il controllo del proprio conto o del proprio account,
mantenuti sulla pagina web del service provider, adoperando la rete internet.
Speed
Dialing è la caratteristica che permette all'utente di
effettuare una chiamata veloce tenendo premuto un tasto della tastiera,
senza necessariamente ricordare l'intero numero dell'utente.
SMS è la caratteristica che permette ad un utente VoIP di
effettuare l'invio di Short Message System verso altri utenti VoIP, oppure
verso utenti di telefonia mobile.[7]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
I SERVIZI ACCESSORI DEL VOIP
Il servizio che ha rappresentato l'innovazione principale del VoIP,
rispetto alla telefonia classica, è la video conferenza; con questa attività si
può espandere l'esperienza comunicativa associando al flusso audio il flusso
video. Con le video chiamate si è associato alla semplice comunicazione audio,
con un costo limitato e investimenti hardware sostenibili, un servizio
innovativo capace di attrarre tutti gli utenti a questo nuovo mondo. Con
questo nuovo servizio si è aperto un nuovo orizzonte per il VoIP, andando a
pesare in una maniera pressoché indifferente sui costi dell'utente;
l'investimento da parte dell'utente per effettuare video chiamate consiste
solamente di una webcam e di un paio di cuffie. Attualmente sono presenti
differenti tools per effettuare video chiamate tramite il VoIP, distinti in
enterprise e free; di quest'ultima categoria fanno parte:

ooVoo;

Skype;

Yugma;

Vbuzzer;

Ekiga;

Tokbox;

Eyejot;

SightSpeed;

iChat.
OoVoo permette video conferenze gratuite con più di sei utenti per
volta; supporta video mail e, funzionando come un software p2p, fornisce agli
utenti un servizio di elevata qualità.
Skype
è
l'applicazione
più
popolare
tra
quelle
che
offrono
comunicazione vocale ed applicazioni di messaggistica. Dal punto di vista della
comunicazione video, risulta essere ancora in ritardo rispetto ad altri
software concorrenti; permette solo comunicazioni audio video con un utente
per volta. Questo aspetto rappresenta un freno per l'efficienza del sistema;
ma godendo ancora del vantaggio per essere stata la prima applicazione sul
mercato, risulta essere la più adoperata.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Yugma offre video conferenze con più di dieci utenti per volta; è
un'applicazione compatibile con Mac, Windows e Linux e prevede anche
l'utilizzo di componenti accessori. Uno di questi componenti accessori, il cui
utilizzo è a pagamento, permette di estendere a cinquecento i partecipanti
alla teleconferenza.
Vbuzzer offre video conferenze gratuite su invito; invito che può
essere inoltrato tramite il sito web o tramite e-mail.
Ekiga, formalmente conosciuto come GnomeMeeting, è un'applicazione
Linux nativa; di conseguenza è gratuita e, sotto licenza GNU, supporta i due
principali protocolli di segnalazione H.323 e SIP.
Tokbox permette video conferenze completamente gratuite, con più di
sei partecipanti per volta; non necessita di un'applicazione client ma si può
utilizzare tramite browser.
Eyejot è un'altra applicazione per effettuare video conferenze; è
gratuita, non ha bisogno di un'applicazione client e possiede la caratteristica
del video mail.
Slightspeed è un tool di video conferenza a singola sessione; prevede
l'utilizzo di servizi come condivisione di file, video mail e video conferenze
multiple. Supporta la comunicazione video, tramite browser con utenti non
Slightspeed.
Ichat è un'applicazione utilizzabile solamente dagli utenti Mac ed è il
tool di video conferenza installato sul sistema operativo Leopard; risulta
pieno di caratteristiche accessorie e, per poterlo adoperare, l'utente deve
possedere un account AOL oppure un account MAC.
Con il VoIP si può trasmettere non solo il segnale vocale, ma tutto ciò
rappresentabile tramite dati; si elencano: i contenuti multimediali, i video, e
tutti i dati che possono essere trasmessi tramite fax.
La tecnologia Near-Real-Time Voice Messagging (meglio conosciuta
come Voicing) è rappresentata da un'applicazione dove gli utenti registrano
un messaggio e lo inviano ad un destinatario. Il concetto di Real-Time, in
questa applicazione, è manifestato dal fatto che le parole, che sono
pronunciate dal mittente, vengono visualizzate sul display del destinatario
quasi immediatamente. Il concetto di chatting è simile alla tecnologia nearreal-time, ma si distingue in quanto il destinatario deve aspettare la ricezione
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
del messaggio breve o lungo che sia. Questa tecnologia (avvicinandosi molto
concettualmente ad un servizio di messaggistica), risulta essere un ibrido tra
una chat ed una Voicemails; tale definizione è giustificata dal fatto che il
mittente pronuncerà i suoi messaggi vocali, che a loro volta verranno inviati al
destinatario in maniera testuale tramite una conversione voce-testo fatta dal
service provider. Naturalmente il problema che può sorgere è quello della
mancata esattezza nella traduzione voce-testo, che può causare messaggi
inesatti e concettualmente privi di significato. La tecnologia è stata fiutata,
da tempo, come innovativa e capace di sbaragliare il mercato, infatti a
conferma di ciò è il datato interessamento della Microsoft (anche se ancora
non ha dato dei benefici rilevanti). Attualmente i programmatori di
un'applicazione stanno effettuando studi per ottimizzare la traduzione vocetesto; si tratta degli sviluppatori di Say2go. In particolare, i produttori di
tale software rivendicano passi in avanti nel riconoscimento vocale, che
rappresenta lo scoglio principale dell'intero progetto. Il problema di base,
che ha impedito il diffondersi di questa tecnologia, è il dibattito sull'utilità
effettiva nell'avere un'applicazione che in maniera efficiente permette il
voicing; in molti sostengono che gli sforzi finalizzati a migliorare tale
tecnologia non sono necessari, poiché si è ancora troppo indietro nel
riconoscimento vocale; mentre altri credono che tali sforzi siano giustificati,
in quanto si permette agli utenti di avere maggior tempo a disposizione per
concentrarsi su lavori più importanti che la semplice comunicazione. Con tale
tecnologia un destinatario può decidere quando rispondere ad una chiamata
senza perderla, come invece avviene quando non si vuole rispondere ad una
chiamata VoIP; questo aspetto è rilevante, in quanto un messaggio perviene al
destinatario e rimane memorizzato e poi, in seconda fase, spetta al
destinatario decidere quando fornire una risposta.
La
Communication Convergence
è un concetto fondamentale nella
tecnologia VoIP, in quanto permette, tramite un unico terminale e su un'unica
rete, di raggruppare meccanismi e tecnologie come: l'accesso ad internet, la
comunicazione vocale, la comunicazione tramite video e le comunicazioni dati.
Un passo avanti nella tecnologia, normalmente, è un processo che viene da sé,
facendosi strada nel mercato in maniera autonoma; la comunicazione
telefonica, la televisione, la radio le tecnologie di videoconferenza, ecc. sono
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
delle tecnologie indipendenti tra loro, che comunque si sono già affermate
con una determinata soglia di qualità. Fino a poco tempo fa, era inconcepibile
acquistare un unico dispositivo che comprendesse al suo interno sia una
videocamera
che un telefono;
mentre
con lo sviluppo del VoIP questi
aspetti, assieme a tanti altri, possono essere fusi in un unica tecnologia
hardware e software. In particolare, la comodità perviene, non dal dispositivo
hardware in sé stesso, bensì dai servizi che sono disponibili e tutti i
meccanismi che li supportano; il VoIP permette la combinazione della
connessione internet a banda larga con il servizio telefonico, andando a
semplificare la comunicazione.
L'intervallo di possibilità della Communications Convergence è ampio
ed interessante; la tecnologia è ancora in ampia fase di crescita, anche se
molti fattori sono limitanti alla sua affermazione sul mercato. In riferimento
a quanto appena detto, bisogna sottolineare tre problematiche principali
focalizzate su: la limitatezza di ampiezza di banda, i terminali e le
applicazioni, la sicurezza. La banda larga è un fattore necessario, in generale,
per
permettere
una
comunicazione
VoIP,
ancor
di
più
lo
è
nella
Communications Convergence; se si possiede una connessione a banda larga
limitata, ne andrà a risentire soprattutto la qualità del servizio, rendendo, a
volte, impossibile procedere con la conversazione. I terminali e le applicazioni
che permettono di adoperare differenti tipi di dati sulla stessa rete,
supportando
la
Communications
Convergence,
sono
ancora
pochi
e,
soprattutto, sono molto costosi; questo rappresenta un deterrente per lo
sviluppo della tecnologia, nonostante le cose stiano cambiando ed i costi
stanno diventando più abbordabili. La sicurezza all'interno della tecnologia
VoIP è una nota dolente, poiché si è fatto ancora poco per poter tutelare la
privacy delle chiamate telefoniche degli utenti; il problema, con la
Communications Convergence, si ingrandisce in quanto ci sarà sulla rete uno
scambio di dati relativi a tipologie differenti, come ad esempio segnali vocali
e segnali video andando ad aumentare la vulnerabilità.
L'IPTV è l'acronimo di Internet Protocol Television, è un servizio che
permette all'utente VoIP di usufruire della televisione; caratteristica che si
andrà ad integrare con tutte quelle viste finora. Tale tecnologia permette
all'utente la trasmissione dello standard televisivo e di programmi video su
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
internet, il tutto condividendo la stessa connessione di rete. IPTV richiede
connessioni internet ad alta velocità, accoppiate ad una rete a banda larga;
adoperando questa tecnologia l'utente andrà a personalizzare le proprie
preferenze
facilitando
operazioni,
come
la
programmazione
della
registrazione di determinati programmi ecc.. Tale caratteristica non è solo un
servizio basato su rete a banda larga fine a se stesso, bensì l'avvio della
costruzione di un ambiente distribuito in cui si integrano tutte quelle entità
che
finora
erano
considerate
indipendenti.
Alcuni
grandi
operatori,
nell'ambito delle telecomunicazioni, si stanno impegnando nella ricerca di
fondi per ampliare i fronti su cui migliorare tale tecnologia; attorno
all’argomento c'è molto fermento, in quanto, nonostante molti operatori
stiano già offrendo l'IPTV, gli occhi sono puntati su Microsoft che ha
annunciato l'uscita di applicativi che sfruttano l'IPTV. Adoperando la stessa
connessione DSL, che fornisce accesso tramite linea telefonica a rete
internet a banda larga, Microsoft come BT Group, Telecom Italia, SBC
Communications ed India's Reliance Infocomm forniscono un servizio
denominato “triple play”, cioè servizio voce, servizio dati e servizio video; il
loro motto è quello di poter far viaggiare, tramite la connessione a banda
larga, tutti i contenuti che si possono pacchettizzare e quindi, oltre a
contenuti vocali e contenuti multimediali, anche segnali televisivi. Tale
approccio è stato già tentato tempo fà da parte di Deutsche Telecom
(precisamente circa un decennio fa), ma le tecnologie analogiche, allora, non
permettevano un servizio accettabile; ora, tramite la digitalizzazione, i flussi
dati possono pervenire nelle case degli utenti con un coefficiente qualitativo
accettabile. La distinzione fondamentale del flusso TV da un semplice flusso
video, sta nella determinazione dei ritardi; i normali flussi video sono formati
da pacchetti IP, che pervengono al destinatario in maniera imprecisa e senza
un apparente priorità; con l'IPTV invece si parte dalla creazione di un
percorso end-to-end, che permette all'utente di poter ricevere il flusso
audio video con un'alta qualità paragonabile a quella di una fonte satellitare o
via cavo, il tutto associato ad un box contenente al suo interno un software
capace di riprodurre il segnale in ricezione. L'IPTV è offerto anche da
Microsoft che, con Eager, rappresenta il software principale; tale sistema
permette un'efficace compressione video che riduce congestioni di rete e
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
problemi nella riproduzione. Il software adoperato dal sistema gioca un ruolo
cruciale nella qualità, poiché rende la tecnologia efficiente; a riconferma di
ciò l'utilizzo da parte di almeno una dozzina di operatori che stanno testando
il sistema per offrirlo agli utenti, anche se la Siemens adopera un sistema TV
differente creando competizione. Fax over IP è uno dei servizi a corredo del
VoIP maggiormente adoperato; usa una rete IP per la trasmissione di fax; il
funzionamento è molto simile al
VoIP, con la presenza delle giuste
ottimizzazioni per trasmettere non segnali vocali bensì fax. In questo
sistema comunicativo è presente un Fax Server al quale far pervenire i dati
pacchettizzati; una volta che i fax sono stati ricevuti dal Fax Server,
verranno smistati ai differenti destinatari attraverso una normale linea
telefonica come solitamente avviene. Tale procedura prevede un costo
limitato rispetto all'utilizzo della modalità classica; il risparmio è giustificato
dal fatto che i fax viaggiano, per gran parte del loro percorso su linea IP e
non su linea telefonica; alcune compagnie forniscono il servizio ai propri
utenti gratuitamente.[8]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
PROTOCOLLI DI SEGNALAZIONE VOIP
H.323
è
uno
standard,
pubblicato
- H.323
dall'ITU
(International
Telecommunications Union), ed è arrivato fino ad ora alla
quinta versione. Definisce una serie di
protocolli che
permettono la trasmissione dei contenuti informativi sulla
rete. Tra i punti distintivi dello standard
H.323, bisogna sottolineare
differenti aspetti: l'utilizzo della codifica binaria, per scrivere le istruzioni
con cui sono codificati i componenti ed i protocolli, un approccio nella
creazione di tale suite, di tipo non modulare, una complessità strutturale
dovuta, tra i
diversi
motivi, anche
di
alla
ricerca
standard
qualitativi
sono
garantiti
normalmente
nella
che
telefonia
tradizionale,
la mancanza
di
a
ed
apertura
reti
telefoniche
approcci
comunicativi
futuri;
infatti
questa famiglia di protocolli ha nella sua implementazione delle ottimizzazioni
limitate alla rete ISDN. Le entità che partecipano alla trasmissione dei dati
sulla rete sono: il terminale, il gateway, il getekeeper, l'MCU.
Il terminale rappresenta il dispositivo con cui l'utente andrà ad
interfacciarsi
per
poter
comunicare
con
altri
utenti.
Può
essere
rappresentato dal pc o da un apparecchio telefonico molto simile a quelli
finora adoperati. Il gateway è un dispositivo fisico che effettua il processo
di intercomunicazione tra reti di differenti formati; tramite il VoIP infatti è
possibile effettuare comunicazione in modalità ibrida. Il gatekeeper è
quell'entità che effettua la maggior parte dei lavori di segnalazione,
effettuando, tra i tanti processi, quello di risoluzione dei nomi in indirizzi e
viceversa, la gestione della banda, la gestione del controllo degli accessi al
sistema, con eventuale politica di estromissione di utenti e tanti altri
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
processi. L'MCU
invece è quell'entità che specializza tale protocollo e
permette la connessione multipunto tra più utenti, cioè la conferenza.
Il Terminale rappresenta, quindi, il nodo finale del sistema, cioè
l'entità
che
permette
l'interfacciamento
dell'utente
con
la
rete
comunicativa. Viste le innovazioni, apportate da tale tecnologia, sono
disponibili differenti tipologie di dispositivi; possono essere realizzati sia
come telefono fisico sia come telefono software. I dispositivi software sono
dei telefoni virtuali, che vengono visualizzati su schermo, e permettono le
stesse operazioni fatte da un telefono VoIP fisico. Tali applicativi, sfruttano
la potenza di calcolo del computer per effettuare i dovuti processi del
segnale vocale. Per poter acquisire il segnale acustico si utilizzano le risorse
proprie del computer come la cuffia, il microfono, la scheda audio; tali soft
phones sono degli applicativi che rappresentano la modalità più semplice per
effettuare una chiamata. Tra i dispositivi hardware, oltre ai telefoni VoIP
che sono simili ai telefoni tradizionali, elenchiamo anche dispositivi di
segreteria telefonica e terminali che permettono comunicazione audio-video.
Il MCU (Multipoint Control Unit), dà la possibilità di supportare chiamate
multiple,
conferenze e videoconferenze tra più utenti H.323; è strutturato
in due sottounità: il MC (Multipoint Controller) ed il MP (Multipoint
Processor), che rispettivamente provvedono alla segnalazione delle chiamate
ed all'elaborazione del contenuto informativo. Il Gateway, come noto dalla
teoria, rappresenta il punto di congiunzione sussistente tra reti, in questo
caso fa da interfaccia tra una rete di tipo H.323 e una rete di comunicazione
differente. Tale entità è composta da due componenti, il MGC (Media
Gateway Controller) ed il MG (Media Gateway), che rispettivamente
soddisfano la segnalazione e la gestione dell'audio, facendo le opportune
traduzioni e transcodifiche. Il Gatekeeper è l'entità principale di tale
insieme di protocolli, anche se il suo utilizzo è opzionale. Questo componente
possiede differenti caratteristiche di controllo e di routing; valuta e
permette l'ammissione di utenti nella rete, mantenendo sempre una minima
soglia di qualità; processa le richieste in funzione di un'operazione di
ottimizzazione
della
banda;
effettua
la risoluzione
dell'alias
di
un
determinato utente ad un indirizzo specifico, adoperando H.323 Alias che è
un modulo apposito, ed inoltre possiede anche altre funzionalità opzionali
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
come: il controllo delle segnalazioni di una chiamata, l' autorizzazione ad
effettuare una chiamata, la prenotazione di banda per chiamate particolari
ecc.. Tra le funzionalità
principali
del
Gatekeeper,
c'è
un
utilizzo
finalizzato a non fare pervenire al nodo finale il traffico di segnalazione;
infatti, in tal modo si blocca il traffico di segnalazione al Gatekeeper,
limitando
solamente
al
contenuto informativo i dati da far pervenire
all'utente. Tale componente fornisce eventuali comunicazioni che possono
sussistere tra provider di reti differenti, rappresentando l'effettivo
componente di interfacciamento del Gateway. Entrando nello specifico della
tecnologia di segnalazione adoperata in questi sistemi, risulta avere un ruolo
predominante il componente H.225 RAS. L’acronimo specifica i processi di
registrazione, ammissione alla rete e mantenimento delle
informazioni di
stato (Registration, Admission Control, Status). Il Gatekeeper discovery, è
un processo di ricerca fatto dai nodi terminali,
affinché possano trovare il
punto di interconnessione con cui interfacciarsi con l'esterno. Il processo di
ricerca del Gatekeeper avviene seguendo una procedura di scambio di
messaggi: il nodo terminale effettua l'invio in multicast di un messaggio GRQ
che viene seguito dalla ricezione di messaggi GCF inviati dai Gatekeepers che
danno la conferma, a questo punto il nodo terminale effettuerà la scelta del
Gatekeeper
a cui associarsi. A seguito del processo di ricerca del
Gatekeeper, c'è il processo di
registrazione del nodo terminale. Tale
procedura è necessaria se il Gateway prevede un processo di controllo degli
utenti presenti nella rete, infatti potrebbe possedere una lista di indirizzi
accreditati a far parte del sistema. Il Gatekeeper
prevede, inoltre, una
sessione di autenticazione a cui il nodo terminale deve sottostare. Una volta
che l'utente si è autenticato, verrà autorizzato grazie all'associazione di un
ID e all'invio di messaggi futuri; inoltre, andrà a controllare, ad intervalli, se
il contatore a cui deve sottostare il nodo terminale sarà scaduto ed in tale
eventualità lo andrà a cancellare. Il procedimento di Admission Control della
chiamata consiste nella verifica della disponibilità della banda, affinché ci sia
un mantenimento della minima soglia di qualità del sistema; in tale fase
avviene una valutazione delle preferenze definite dal nodo terminale ed
un'eventuale correzione dei parametri. Il compito del Gatekeeper consiste
nella valutazione della modalità di chiamata, fatta dal nodo terminale, e
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
dall'eventuale accettazione; una volta che la chiamata è stata accettata,
avviene la decisione della creazione di un link diretto con l'utente
destinatario oppure si creerà un percorso in cui far passare il flusso dati.
Seguendo questa modalità avremo l'invio della chiamata allo stesso
Gatekeeper, che smisterà ad un Gateway, di un sistema differente dal suo, la
chiamata esprimendo la volontà di farla pervenire ad un utente specifico.
Il
processo
di
segnalazione
di
una
chiamata
viene
effettuato
specificatamente dal componente H.225 Call Signalling; questo protocollo
deriva da un componente precedente, che era stato ottimizzato per reti di
tipo ISDN; il processo prevede la segnalazione diretta tra gli utenti che
dovranno comunicare. La procedura semplicemente consta di due fasi: una di
connessione tra i due terminali ed una di rilascio della connessione, una volta
che la chiamata è terminata. Possono essere associate ulteriori fasi opzionali
di sincronizzazione ed avviso di instaurazione di connessione, che precedono
l' effettivo collegamento tra gli utenti. Visti in dettaglio i processi
effettuati dal Gatekeeper, e tra i terminali; dobbiamo riassumere con una
visione più astratta l'instaurazione di una chiamata. Tale processo prevede
una fase di inizializzazione tra il terminale ed il Gatekeeper; il terminale, in
maniera trasparente all'utente VoIP, effettua una richiesta finalizzata ad
ottenere le dovute risorse per poter partecipare al sistema comunicativo; il
Gatekeeper, a questo punto effettua la traduzione dell'alias dell'utente in
un indirizzo, e tramite politiche di Admission Control, decide se accettare
l'utente. Una volta che l'utente è stato accettato,
può far partire la
chiamata grazie al “via libera”, inviato tramite un messaggio di conferma da
parte del sistema. A questo punto il terminale mittente effettua una fase di
setup con il terminale destinatario, scambiandosi messaggi di segnalazione;
l'utente destinatario riferendosi al Gatekeeper richiede se può essere
accettato nel sistema, e se lo è, si instaura l'effettiva comunicazione tra i
due utenti VoIP. La connessione tra gli utenti è regolata da un protocollo
specifico, che si chiama H.245; lo stesso specifica aspetti determinanti tra i
due utenti, quali: l'apertura dei canali audio-video specifici, lo scambio di
informazioni relative alla capacità propria della banda, affinché si possa
definire la capacità del canale comunicativo, la determinazione del master
Multipoint Controller che decide chi tra i due utenti dovrà essere il
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
coordinatore
per
eventuali
comunicazioni
in
conferenza.
Quindi,
il
coordinatore decide, in base ad uno schema simile a quello dell'instaurazione
di una chiamata, chi parteciperà alla conferenza.[9][10]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
SIP
SIP è uno standard pubblicato dalla IETF (Internet
Engineering Task Force), ed è considerato come una valida
alternativa
al
protocollo
che
finora
ha
monopolizzato
la
segnalazione
all'interno
della
tecnologia
VoIP;
definisce una serie di
protocolli
che
permettono
la
trasmissione
di
contenuti informativi
sulla rete.
E'
stato
sviluppato nel 1999
ed
è
contemporaneamente
utilizzato da altri due
protocolli
che
sono
SDP ed RTSP, che
rispettivamente sono
adoperati
per
mantenere informazioni sulla comunicazione in fase di inizializzazione e per
regolare lo streaming real-time. Questa famiglia di protocolli, prevede una
giusta collocazione per quanto riguarda la segnalazione di chiamate VoIP,
anche se, in fase di sviluppo, è stato
inizialmente
pensato
per
regolamentare
comunicazioni e strutturate in sessioni di
dati multimediali. Lo standard prevede,
infatti,
la
creazione
di
sessioni
dati,
l'accesso ad una rete e la chiusura di
comunicazioni;
TESI DI LAUREA: PROGETTAZIONE
SIP
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
(Session
TELEFONI SNOM
Initiation
CON TECNOLOGIA
VOIP
Protocol), nel VoIP effettua le procedure di inizializzazione di sessioni
comunicative e le procedure di segnalazione. Tale famiglia di protocolli,
adopera dei componenti specifici chiamati proxy server, che sono finalizzati
ad effettuare processi differenti come: il routing delle sessioni informative,
l'autorizzazione e l'autenticazione delle sessioni, l'implementazione di policy
specifiche in fase di inizio chiamata. Il suddetto standard ha caratteristiche
in un certo qual modo analoghe a quelle definite nello standard H.323; in
quanto prevede oltre che la segnalazione di chiamate effettuate tramite
VoIP, lo scambio di flussi informativi, non limitandosi al solo traffico vocale,
ed inoltre permette conferenze tra più linee comunicative instaurate da più
utenti. Tra i principali servizi che sono assicurati da tale standard, bisogna
elencare: la localizzazione dell'utente per poter definire l'utente finale a cui
destinare la comunicazione, la definizione delle caratteristiche del canale
attraverso il quale gli utenti comunicano (come la larghezza della banda, ecc.),
la possibilità di manifestare la disponibilità da parte di un utente a ricevere
chiamate, il trasferimento della chiamata ad altri o ad una segreteria
telefonica e lo stabilimento dei parametri specifici di una chiamata. Le entità
che partecipano al processo di instaurazione di una comunicazione tra utenti,
non sono entità ben definite fisicamente ma sono entità logiche, che in
determinati scenari possono essere accorpate; nello specifico tali entità
sono: l'UAC, l'UAS, il Registrar, il Location Server, il Redirect Server, il
Proxy Server. Seguendo il pattern Client-Server, avviene l'instaurazione
della chiamata, tramite lo scambio di messaggi tra le due parti, sottolineando
il fatto che un terminale può comportarsi in entrambi i modi; l'UAC (User
Agent Client) è quell'entità finalizzata a generare le richieste per poter
instaurare le chiamate, mentre l'UAS (User Agent Server) riceve la
richiesta fatta dal Client e prepara un messaggio di risposta da inviare allo
stesso, con l'esito dell'instaurazione della chiamata: se accettata, rifiutata
o destinata ad un altra entità. Il Location Server mantiene i record relativi
agli utenti presenti nella rete; questi dati sono inseriti all'interno del
database dal Registrar, che viene interpellato dai vari client. Il Location
Server, viene interpellato dai Proxy e dai Redirect Server, quando deve
avvenire il routing della chiamata. Precisamente il Redirect Server
particolare
UAS
TESI DI LAUREA: PROGETTAZIONE
che
genera
risposte
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
particolari,
TELEFONI SNOM
è un
finalizzate
CON TECNOLOGIA
VOIP
all'indirizzamento della chiamata di un utente verso altri punti di snodo; il
Proxy Server, invece, funge da intermediario frapponendosi tra
Client e
Server ed effettuando richieste per conto del primo. Un utente è
identificato in una rete comunicativa SIP da una stringa, simile a quella
adoperata nello scambio di messaggi di posta elettronica. Lo standard
è
SIP
adoperato per inizializzare connessioni dirette tra utenti, adoperando
come protocollo di trasporto il RTP, che processa lo scambio comunicativo
effettivo. Le entità chiamate in parte adoperano la politica di un accordo
preventivo instaurato grazie allo scambio di messaggi. Tali messaggi possono
essere di due tipi: i messaggi di Request ed i messaggi di Response; i primi
come già anticipato, sono inviati dal Client al Server, e contengono, al loro
interno, la tipologia di messaggio che trasmettono e l'indirizzo a cui è rivolto
il messaggio. I messaggi di Response, invece, seguono un percorso opposto
rispetto ai messaggi di Request, viaggiando dal Server al Client. Questi
messaggi contengono, al loro interno, il tipo di risposta da inviare al Client e
l'indirizzo dell'utente a cui destinare il messaggio. Per convenzione, è stato
definita con il termine Transaction l'insieme di messaggi che si riferiscono ad
un unico argomento, cioè l'associazione uno ad uno, oppure uno a molti, che
sussiste
tra una Request e una o più Response; in questo secondo caso,
vengono definite le Response intermedie tra la prima Response e quella finale
(definita final) con il termine provisionals. Ad ogni Transaction il protocollo
SIP associa un'automa a stati finiti, finalizzato alla regolazione del
susseguirsi degli eventi che sussistono tra le parti; fondamentalmente tale
insieme di messaggi, sono stati distinti in due categorie principali: le Client
Transaction e le Server Transaction, in base alla direzione dello scambio di
messaggi. Le Request sono distinte in sei differenti tipologie; l'Invite, che è
adoperata dal Client per stabilire una connessione; l'Ack, che invece è
adoperata dal Server ed ha il compito di confermare la ricezione di una
Invite; la Bye, che è adoperata per terminare una comunicazione; la Cancel,
che è usata per manifestare la stabilità di una comunicazione; la Register,
che serve per comunicare la posizione geografica dell'utente; la Options, che
invece serve a specificare le caratteristiche del canale comunicativo tra gli
utenti. A questo tipo di messaggi corrispondono sei differenti Response,
suddivise in base a degli identificativi a tre cifre, la cui prima cifra serve da
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
discriminante; le prime tre tipologie hanno identificativi le cui rispettive
prime cifre vanno da 1 a 3, ed indicano rispettivamente risposte informative,
risposte di riuscita e informazioni di reindirizzamento; le altre tre tipologie
hanno identificativi le cui rispettive prime cifre vanno da 4 a 6, ed indicano a
loro volta errori di richiesta, errori del server ed errori di tipo generico.
Nello specifico, quando si va ad instaurare una comunicazione adoperando lo
standard SIP, si definiscono una serie di otto fasi ben definite: la prima
prevede l'invito, da parte di un utente mittente, di una richiesta di
comunicazione; la seconda prevede la risposta, da parte del terminale
dell'utente destinatario con una Response di tipo 100 Trying, che indica che
si sta provando ad accettare la chiamata; la terza fase prevede l'invio,
da parte dell'utente destinatario della Response 180 Ringing, che indica lo
stato del terminale destinatario; la quarta fase, se viene alzata la cornetta
da parte del destinatario, prevede l'invio della Response 200 Ok; la quinta
fase, riguardante l'utente mittente, prevede l'invio di un Ack che risponde
all'invio precedente della Request Ok inviata dal destinatario; la sesta fase
prevede lo scambio di pacchetti di tipo RTP, che mantengono il flusso
informativo; la settima fase prevede, da parte dell'utente che riattacca la
cornetta, l'invio di una Request di tipo Bye; l'ultima fase prevede l'invio, da
parte dell'utente che attacca la cornetta per ultimo, di un messaggio di tipo
Ack all'altro utente per terminare la comunicazione correttamente.[6][10]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
CAPITOLO II
PIATTAFORME OPENSOURCE VOIP
ASTERISK
Asterisk
è
un
sotfware
opensource,
sviluppato
dalla
Digium
(www.digium.com) in ambiente Linux, che permette di realizzare a basso
costo una soluzione completa di PBX voice ove ip, ossia una vera e propria
centralina ad uso privato.
Il suo nome, Asterisk, proviene dal mondo Unix e
dos, dove rappresenta un cosiddetto "carattere jolly”
(*) cioè la possibilità di rappresentare ogni file.
Il progetto Asterisk è nato inizialmente dall'idea di un programmatore
linux Mark Spencer che, a capo di una società chiamata Linux Support
Services, ha pensato di creare una piattaforma Opensource, in grado di
abbattere le spese dovute alla comunicazione telefonica all'interno della sua
società.
L'idea strutturale di tale progetto era, inizialmente, quella di creare
un centralino VoIP che potesse gestire le interfacce differenti, che un flusso
dati VoIP percorre. Il progetto Asterisk è iniziato nel 1999, ma la prima
versione stabile fu rilasciata nel 2001.
Prende il nome
da
un'idea
dell’artefice,
che
credeva molto nelle
potenzialità di tale
piattaforma
da
ipotizzare
un’espansione
che
potesse abbracciare
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
tutti gli aspetti nell'ambito delle telecomunicazioni; il concetto di Asterisk
nell'ambiente Linux, si associa ad un carattere “jolly”, adoperato quando si
vuole selezionare una totalità di elementi di un insieme. Il progetto,
naturalmente, è rilasciato sotto licenza GNU-GPL e, quindi, il suo contenuto
risulta essere facilmente consultabile, modificabile e riutilizzabile da
chiunque volesse farlo; questo aspetto ha favorito l'idea iniziale di Mark
Spence, consentendo un continuo accrescimento della piattaforma, allargando
l'iniziale confine di semplice centralino VoIP,
fino ad arrivare ad essere
considerato un ottimo middleware, utilizzabile tra, le tante altre cose, come
gestore di un call center, come sistema di registrazione di chiamate ecc.. La
caratteristica fondamentale di Asterisk è la sua duttilità; si integra, in
maniera ottimale, con ambienti strutturalmente differenti tra di loro (come
gli ambienti dei differenti produttori telefonici presenti sul mercato) oppure
può essere adoperato come centralizzatore consentendo di gestire più
centralini
tra loro connessi. La duttilità del sistema si nota dalla
caratteristica di essere un applicativo multipiattaforma; infatti codesto
progetto è stato rilasciato non solo per sistemi Linux, ma anche per i classici
sistemi Windows,
Mac OS e per sistemi Unix
meno
conosciuti come:
OpenBSD e FreeBSD. Asterisk è stato creato per poter garantire
comunicazioni VoIP tramite protocollo TCP/IP; l'approccio con cui è stata
creata la sua architettura è modulare, infatti, considerando l'iniziale
caratteristica di centralino in grado di interfacciarsi con la totalità delle
schede e degli applicativi presenti, risultava l'unico modo per poter garantire,
allo stesso tempo, efficacia e semplicità progettuale. Tale sistema ha come
caratteristica quella di sfruttare, in base all'hardware su cui è installato e al
sistema operativo, le risorse a disposizione per poter inizializzare sessioni
VoIP; col passare degli anni questa applicazione è maturata al punto tale che
determinate schede telefoniche hardware sono state ottimizzate in maniera
da snellire l'elaborazione della piattaforma. Per poter perseguire il concetto
di multipiattaforma, Asterisk è stato creato adoperando il linguaggio C;
questa scelta è stata motivata dalla diffusione in tutti gli ambienti di
numerosi tools di sviluppo gratuiti e, soprattutto, dalla presenza di
compilatori che, in accordo alle caratteristiche del linguaggio, effettuano
compilazioni ad hoc capaci di creare linguaggio macchina che ottimizza le
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
performance del sistema telefonico VoIP. Da un punto di vista più astratto,
Asterisk agisce come una soluzione di middleware, frapponendosi tra le
tecnologie telefoniche (protocolli ISDN, linee analogiche, protocolli SIP ed
H.323) e le applicazioni (front-end, voicemail, IVR, musiche di attesa ecc.). La
struttura del sistema Asterisk prevede un sistema modulare, dove ogni
componente è creato in maniera indipendente da altri e tutti i moduli si
appoggiano ad un core stabile e performante. Il core offre funzionalità
basilari, utili sia per connessioni VoIP sia per creare moduli, quali:
 Gestore delle chiamate;
 Gestore delle applicazioni;
 Traduttore di codec;
 Gestore dell' I/O e dello scheduling;
 DML (Dynamic Module Loader).
Il Gestore delle chiamate effettua il primo processo fondamentale
che deve fare la piattaforma, cioè permettere la comunicazione tra gli
utenti; Asterisk si limita a gestire soltanto il flusso dati astraendosi dalla
gestione della comunicazione, fase designata esclusivamente ai vari protocolli
(H.323, SIP).
Il Gestore delle applicazioni effettua un processo che completa il
canale comunicativo, instaurato grazie al componente visto in precedenza;
agisce
sul
canale,
lanciando
applicazioni
come
front-end,
voicemail,
applicazioni di interfacciamento tra il sistema ed un modem remoto oppure
addirittura mette in comunicazione più canali tra loro.
Il Traduttore di codec effettua il processo fondamentale per
l'interfacciamento tra utenti di reti differenti; traduce i codec audio
richiamando, secondo la filosofia modulare del sistema, i componenti esterni
adeguati.
Il Gestore dell' I/O e dello scheduling è un modulo, la cui presenza
all'interno del core di Asterisk risulta fondamentale; infatti è il componente
adibito alla comunicazione che lo stesso deve avere con l'esterno. Affinché il
core comunichi con l'esterno deve interagire con una serie di API, che ne
permettono la comunicazione adeguata.
Il DML è il modulo che permette l'espansione del sistema, in quanto
effettua il caricamento di nuove funzionalità; tale processo di loading viene
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
effettuato in maniera dinamica, adoperando le API che ne permettono la
comunicazione del core con l'esterno.
A contorno del core ci sono una serie di componenti, che permettono la
comunicazione con l'esterno e che vengono accorpate sotto l'acronimo
API (Application Programming Interface), cioè una serie di librerie le cui
funzionalità sono suddivise in quattro ambiti in riferimento:
 ai canali: affinché si gestiscano le tecnologie su cui avvengono le
chiamate (ISDN, VoIP ecc.);
 alle applicazioni: affinché i moduli esterni al core possano attenersi a
determinate regole ed istruzioni;
 ai codec: affinché ogni singolo codec possa attenersi a determinate
regole; alla creazione, infatti, di un nuovo codec simultaneamente
avviene la creazione di un nuovo modulo che, a sua volta, deve
sottostare alle regole definite dall'API in questione.
 ai formati dei file: affinché vengano gestite le operazioni di scrittura
e lettura fatte sul filesystem da Asterisk.
Grazie all'utilizzo delle API, si possono creare moduli nuovi da
aggiungere ad Asterisk; infatti, lo sviluppatore in fase di programmazione
interagirà con una delle quattro API ed una volta compilato il modulo, in
maniera indipendente dal resto del sistema, verrà testato da un'apposita
organizzazione ed, eventualmente, inserito nelle specifiche future. La
gestione dei moduli in Asterisk avviene tramite file di configurazione,
attraverso i quali si specificano parametri configurativi come ad esempio:
impostazione di indirizzi, impostazione di porte su cui mettersi in ascolto
ecc.. Inoltre, esistono ulteriori file di configurazione da associare non solo
alle specifiche del protocollo che si sta adoperando nella comunicazione, ma
anche a moduli hardware adibiti allo snellimento del processo che deve essere
fatto dal sistema. Asterisk prevede la possibilità di poter essere alleggerito
di alcune fasi di elaborazione,
grazie all'utilizzo di un hardware creato
appositamente; esistono, infatti, schede telefoniche che sono delegate ad
effettuare processi di segnalazione, interfacciandosi ottimamente con
tecnologie TDM e PRI. Soprattutto le schede hardware, che si interfacciano
con PRI, sono in continua crescita nel mercato, vedendo interessate alla
creazione numerose società tra le quali la Digium (la società con a capo Mark
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Spencer, l'ideatore di Asterisk). Tali schede, associate alla piattaforma
Asterisk, permettono una gestione agevole di numerosi canali telefonici e la
gestione di porte analogiche tradizionali che si affacciano alla rete PSTN.
L'interfacciamento del sistema VoIP, con una linea tradizionale, è un
aspetto
che deve essere tenuto fortemente in considerazione al fine di
poter effettuare una futura
e definitiva transizione al
digitale; esistono, peraltro,
delle schede apposite che
permettono la connettività
con
linee
tradizionali,
adoperando due differenti
tipi di segnalazioni: FXS e
FXO.
In
relazione
all'interfacciamento
sistema
bisogna
con
del
l'esterno,
evidenziare
la
completa interazione con i
protocolli di segnalazione
presenti sul mercato che
svariano, dai principali e
ben noti SIP ed H.323, ai protocolli proprietari della Cisco MGCP ed SCCP a
quello IAX (quest'ultimo è il protocollo di segnalazione adoperato da
Asterisk). La funzione principale per cui è nata la piattaforma è quella della
gestione delle chiamate, agendo come un centralino VoIP; affinché ciò possa
essere effettuato il sistema adopera dei moduli appositi, che hanno il pregio
di conferire al sistema una dinamicità che un centralino tradizionale non
possiede. La gestione del canale comunicativo, avviene seguendo tre modalità
principali:

Utilizzo delle estensioni di Asterisk;

Creazione di nuove applicazioni specifiche;

Utilizzo del AGI (Asterisk Gateway Interface).
Adoperando il file extension.conf, si andranno a personalizzare delle
specifiche in grado di acquisire il completo controllo del flusso della
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
chiamata; una modalità alternativa è adoperare una soluzione ad hoc, che
consiste nel creare un applicativo adoperando il linguaggio C che effettua la
completa gestione del canale in maniera fortemente personalizzata. Una
soluzione intermedia alle due finora elencate, consiste nell'adoperare l'AGI;
componente che permette di utilizzare un canale dedicato personalizzabile,
richiamando comandi nativi e adoperando un software esterno lanciato sul
centralino. Dopo aver effettuato una trattazione del sistema, Asterisk si
promuove come una piattaforma in grado di poter sbaragliare il mercato degli
applicativi VoIP; tale progetto si colloca come un'ottima soluzione in grado di
frapporsi tra i software front-end (adoperati direttamente dagli utenti) e le
tecnologie che permettono la comunicazione (l'hardware, i protocolli di
segnalazione, i protocolli di trasporto ecc.); in tal modo si ottimizza sia
l'architettura che di base, che i programmi che si interfacciano con gli
utenti. Il suo utilizzo primario rimane quello di gestore economico e
performante del traffico telefonico VoIP; accostando, infatti, al software
schede hardware (che si possono ottenere facilmente sul mercato ad un
costo limitato) create ad hoc per integrarsi nel sistema, si ottiene un
gateway universale capace di interfacciare l'utente con l'esterno in maniera
ottimale.
La
caratteristica
principale
di
tale
progetto
è
l'aspetto
dell'apertura del codice, con cui è stato scritto, e, poiché, è stato rilasciato
sotto licenza GNU GPL, è facilmente ottenibile in maniera gratuita dalla rete
ed il codice con cui è stato creato può essere consultabile e modificabile. La
struttura modulare conferisce una versatilità al sistema, tale da non poterlo
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
classificare in una categoria definita; infatti essendo i moduli facilmente
integrabili nel progetto, Asterisk può assumere differenti connotazioni.
Tale concetto si rafforza grazie alla facilità di personalizzazione della
piattaforma, infatti, effettuando delle debite modifiche a file di testo (che
rappresentano i file di configurazione della piattaforma, che di solito hanno
un'estensione .conf) possiamo personalizzare, a nostro piacimento, il sistema,
completando la semplice comunicazione vocale VoIP con comunicazione video,
servizi di messaggistica istantanea e servizi di segreteria telefonica, creare
conferenze e video-conferenze tra più utenti ecc..
Per poter installare Asterisk in un ambiente Linux-based bisogna
puntare il browser all'indirizzo http://www.asterisk.org e adoperare i link,
per poter scaricare differenti pacchetti da installare nella propria
distribuzione; una volta ottenuti i pacchetti basta spostarsi, tramite shell,
nella cartella /usr/src, creare una cartella nominata asterisk, e, una volta che
ci si è spostati all'interno, scaricare la specifica versione del CVS. Una volta
che il download dei pacchetti è terminato, all'interno della cartella ./asterisk
saranno disponibili tutti i pacchetti, che, a tal punto, devono essere compilati
(seguendo la solita sequenza di passi) lanciando il compilatore C; quindi, per
poter far partire nella distribuzione la piattaforma, basta eseguire a linea di
comando la stringa asterisk -vvvvgc, ed otterremo una command line
specifica. Nella modalità base, Asterisk fornisce una forte integrazione con
strumenti e tecnologie esterne consolidate; basta sottolineare la forte
coesione che tale progetto ha con protocolli di segnalazione differenti da
quello nativo (IAX); la naturale predisposizione verso il mondo dei database, i
quali vengono adoperati per effettuare configurazioni realtime del sistema
senza la necessità di un reboot o di reload dei file di configurazione;
l'integrazione con sistemi firewall, in grado di monitorare e regolamentare il
traffico in entrata ed uscita tramite politiche di NAT, infatti Asterisk
adopera solamente un'unica porta UDP per effettuare la segnalazione delle
chiamate e la trasmissione del traffico dati. L'apertura del sistema Asterisk
a tecnologie di middleware differenti, finalizzate a creare dei sistemi
sempre più potenti e performanti, trova uno sbocco ottimale nell'integrazione
con SER (sistema di middleware che tratteremo specificatamente nel
prossimo paragrafo); in tale collaborazione Asterisk assume funzionalità di
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Gateway PSTN, di esportatore di servizi di video conferenza, di segreteria
telefonica e di sistema di messaggistica istantanea; mentre SER funge da
proxy SIP e da Registrar, andando a creare un ITSP (Internet Telephony
Service Provider) capace di gestire migliaia di chiamate.[11]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
SER
L'acronimo SER si riferisce alle parole SIP Express Router ed indica
quel componente, finalizzato ad ottimizzare gli aspetti che si riferiscono a
servizi
offerti
dalla
famiglia
di
protocolli
di
segnalazione
SIP.
L'infrastruttura di base, definita dallo standard SIP è rappresentata da
progetti
OpenSource
e
progetti
commerciali; anche se in entrambi i casi, è
doveroso sottolineare il fatto che non si
hanno soluzioni pronte per affrontare una
sfida in maniera competitiva nell'attuale
mercato della telefonia. SER rappresenta, in
funzione della crescita costante della popolarità dello standard SIP, una
piattaforma OpenSource in grado di supportare sia i servizi base offerti da
SIP che i servizi avanzati, quali: lo scambio di messaggi tra utenti,
l'indicatore di presenza all'interno del sistema, il traduttore tra protocollo
SIP ed altri protocolli, ecc..[12] L'architettura di tale piattaforma è
strutturata
basandosi
fortemente
sulla
modularità;
in
analogia
con
l'architettura del sistema Asterisk, ha due principali entità: il core e
l'insieme di moduli estensivi.
Il core di SER ha caratteristica di efficienza elevata ed è il
componente adibito: alla ricezione, alla traduzione ed all'inoltro di messaggi;
inoltre, è responsabile di invocare alcune procedure che realizzano
l'estensione della piattaforma. Tali moduli sono suddivisi, in base al servizio
che riescono a fornire in aggiunta alla piattaforma, in :

Localizzazione
e
registrazione
dell'utente;
questa
parte
è
responsabile della gestione delle richieste di registrazione e della
gestione del database, dove sono memorizzate le locazioni degli utenti.

Gestore delle transazioni; quando si agisce in una modalità statefull,
SER deve mantenere per ogni transazione il suo stato, generare delle
repliche, ed effettuare il match delle stesse effettuando le fork
relative a determinate richieste.

Autenticazione dell'utente; in SIP è ben noto l'utilizzo di HTTP
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
per effettuare le richieste di autenticazione degli utenti. Questa
parte di SER interagisce con i database che mantengono l'id e la
password degli utenti ed è responsabile del controllo delle credenziali
degli utenti.
Gestore SIP; mentre il core effettua l'elaborazione dei messaggi ed il

gestore delle transazioni effettua i processi SIP appropriati, questo
modulo agisce con processi logici tipo l'uso di un header che mantiene
lo stato del record di instradamento, effettua, inoltre, il controllo per
valutare
l'eventuale presenza
di
loop
nell'instradamento
delle
chiamate.
Moduli di livello applicazione; questi moduli effettuano alcuni servizi a

livello applicazione, come ad esempio una traduzione da SIP a Jabber.
Moduli di livello applicazione orientati alla programmazione; per

facilitare i programmatori nell'uso dei componenti della classe del
moduli, si adopera una semplice interfaccia che separa SER dal codice
dell'applicazione.
Ogni modulo esporta un insieme di procedure funzionali e procedure
d'uso, che possono essere adoperate da moduli differenti; infatti, in tale
piattaforma l'interazione tra i moduli è regolata da un linguaggio di
configurazione che si indica con la sigla SCL (SER Configuration Language).
Tramite questo linguaggio, che si basa su istruzioni formate da semplici
script, l'amministratore della piattaforma specifica le azioni da prendere
quando
determinati
all'occorrenza
eventi
dell'evento
si
di
verificano;
registrazione,
un
il
esempio
lancio
può
del
essere,
modulo
di
autenticazione prima dell'effettivo iter di registrazione nel database. In
fase di sviluppo, questo progetto era stato pensato per poter raggiungere
determinati scopi; SER si pone, sotto questo punto di vista, come un provider
di servizi SIP che supporta interfacce di controllo potenti, sviluppate per
supportare differenti scenari di utilizzo e direttive di provider ben precise.
Il
progetto
deve
permettere
l'esecuzione
delle
applicazioni
dei
programmatori ed introdurre nuovi componenti; per seguire la struttura di
piattaforma modulare estendibile, SER con interfacce intuitive permette una
facile estensione. In una maniera intuitiva e semplice questa piattaforma
garantisce all'utente di adoperare le tecnologie SIP, specificando gli aspetti
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
personalizzabili ed i servizi. Il progetto SER si frappone tra due livelli
differenti: da un lato, i servizi base SIP, e dall'altro, le interfacce a livello
applicazione; in questo scenario si inserisce come una piattaforma middleware
capace di sfruttare le potenzialità del protocollo di segnalazione e, allo
stesso tempo, di permettere agli utenti un facile interfacciamento a livello
applicativo. Il supporto dei servizi base SIP avviene grazie al fatto che SER
offre le potenzialità di SIP Proxy, di Redirect e di Registrar; offre,
inoltre,
il
supporto
alla visualizzazione della presenza dell'utente nel
sistema e la messaggistica istantanea.
La gamma di funzionalità, offerte da SER, non si limita ad estendere
i componenti base di SIP ed il servizio di IM (messaggistica istantanea) ma
fornisce anche il servizio di segreteria e gestione di messaggi, inviati ad
utenti sia online (presenti nella rete) che offline;
in quest'ultimo caso
avverrà un inoltro quando l'utente ritorna presente nella rete. La
programmazione e la creazione di interfacce utente è una procedura che
permette di abilitare gli utenti a specificare le loro preferenze di chiamata;
SER supporta l'uso di un linguaggio creato per personalizzare i parametri di
chiamata CPL, oltre ad offrire agli utenti un'interfaccia grafica intuitiva per
creare la gestione logica della chiamata. CPL (Call Processing Language) è uno
strumento che dà agli utenti la possibilità di implementare l'instradamento
logico della chiamata; tale linguaggio è basato sullo standard XML ed è
semplice, estendibile ed indipendente dal sistema operativo e dal protocollo
di segnalazione sottostante. Un servizio CPL consta: di un server, che
interpreta gli script, di un editor per creare e modificare il codice, di un
database per la gestione degli script e per poter effettuare la gestione della
segnalazione (in quanto SER funge da proxy SIP). Per abilitare gli utenti ad
adoperare i differenti componenti esposti da SER, è stata creata
un'interfaccia testuale (FIFO interface), che permette alle applicazioni
esterne di comunicare con il server. Si adopera questa interfaccia per
gestire i contatti degli utenti, per inviare messaggi istantanei, per
effettuare il monitoraggio del server (che viene denominato FIFO) ecc. ; in
tal modo, ne risulta una forte integrazione del progetto con l'esterno,
infatti, grazie a questa interfaccia si ha un tramite che astrae il linguaggio in
cui è scritto il modulo esterno, il quale per poter richiamare le funzionalità di
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
SER si limita ad interagire con semplici chiamate alla FIFO interface. Le
interfacce di estensione sono funzionalità adibite all'integrazione di nuovi
progetti, forniscono un'interfaccia di programmazione che abilita l'utente
all'uso, non solo dei servizi base di SER, ma anche all'utilizzazione di
funzionalità aggiuntive. Tale approccio prevede la pubblicazione delle
funzionalità fornite, non solo al core della piattaforma ma anche a tutti gli
altri moduli che le vogliono invocare; poiché sia il core che altri moduli, se
interessati ad invocare una procedura, adoperano delle semplici chiamate
scritte secondo il linguaggio SCL. I servizi supportati da SER non si limitano a
quelli che potenzialmente possono essere forniti da SIP ed a quelli che
possono essere aggiunti dall'esterno con moduli, ma il progetto è aperto
anche ad ambienti esterni di tipo commerciale ed opensource; è previsto un
supporto per Ipv6, mantenendo al suo interno un ottimo traduttore, dalla
versione 4 alla versione 6, il che facilita la naturale transizione a questo
nuovo standard;tuttavia, è aperto alla tecnologia ENUM, che fornisce la
possibilità di rappresentare gli utenti SIP secondo lo standard E.164,
risolvendo gli indirizzi nella maniera opportuna; SER supporta, comunque, la
possibilità di NAT trasversale e di firewall. Quest'ultima funzionalità è la
traduzione, ed il mapping, di un insieme di indirizzi IP privati ad un unico
indirizzo pubblico; tale traduzione non può avvenire con indirizzi di tipo SIP,
quindi SER, ma si appoggia ad un componente esterno chiamato STUN phone,
il quale effettua la riscrittura del contatto e dell'header SDP. SER supporta
l'autorizzazione,
l'autenticazione
e
l'accounting,
per
poter
offrire
un'infrastruttura efficiente capace di: garantire l'autenticazione agli utenti,
autorizzare l'utilizzo di determinate risorse e effettuare un monitoraggio
dell'uso delle stesse. L'autenticazione di un utente che vuole inizializzare una
sessione telefonica adoperando la piattaforma SER, implica l'utilizzo di una
struttura permanente come un database; si andrànno ad inserire i record
relativi agli utenti e, quindi, il loro identificativo e le loro password, personali
ed univoci, ed effettuare, ove risulti necessario, un controllo delle
credenziali. L'autorizzazione di un utente si basa sul concetto di Admission
Control, dove l'amministratore definisce liste di controllo per alcuni servizi,
distinguendoli in base a determinati discriminanti; un utente, a questo punto,
può richiedere di poter adoperare un servizio (come ad esempio una chiamata
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
internazionale) purché tale servizio sia presente nella lista di quelli forniti
dall'amministratore. L'accounting, all'interno di un sistema che sfrutta
risorse, è un meccanismo che permette di collezionare informazioni
dettagliate sull'uso di servizi, da parte di un utente, ed in seconda analisi di
poter salvare tali informazioni in apposite strutture di memorizzazione come
ad esempio database. Per quanto riguarda la piattaforma SER, tali
informazioni sono memorizzate in record definiti CDR (Call Detail Record), i
quali mantengono informazioni relative alla durata della chiamata, alla
destinazione della chiamata, all'identità delle parti ecc.. Per quanto riguarda
le politiche di AAA (Authorization, Autentication, Accounting), c'è la
possibilità di poter sfruttare componenti esterni come MySQL, che
fortemente si vanno ad integrare nella piattaforma. In fase di sviluppo del
sistema, si è posto come vincolo basilare la possibilità di effettuare
comunicazioni
trasversali,
cioè
far
comunicare utenti
presenti
nella
piattaforma SER con utenti di ambienti differenti. Per garantire tale
aspetto, si sfrutta la caratteristica del sistema di essere un gateway con
molte interfacce a livello applicativo, quali: SMS Gateway, adoperato per
interfacciare reti SIP con reti GSM tramite scambio di messaggi
bidirezionale (SIP Message dal lato SIP e SMS dal lato GSM); JABBER
Gateway, per effettuare traduzione bidirezionale tra SIP message e
messaggi di sistemi eterogenei (Jabber, ICQ, AIM, Yahoo). Quest'ultima
procedura avviene grazie all'utilizzo di un traduttore, che, dai principali
protocolli adoperati per codificare i messaggi, effettua una decodifica per
prelevare il contenuto informativo, riproponendolo adoperando lo standard
XML. L'implementazione del sistema di middleware è avvenuta seguendo i
vincoli imposti dal mondo OpenSource; il progetto è stato rilasciato secondo
licenza GNU GPL, il che comporta una facile ed intuitiva procedura di
ottenimento degli eseguibili e del codice sorgente scritto in C, il quale, oltre
ad essere consultabile, risulta essere anche modificabile ove ci sia la volontà
dell'utente. Da test effettuati, risulta che tale piattaforma gestisce, in
maniera ottimale, più di 5000 chiamate al secondo con hardware di
reperibilità comune. Uno degli obiettivi che gli sviluppatori del sistema si
erano proposti, e che ha avuto un brillante risultato, è stato l'arricchimento
delle specifiche di base offerte da
TESI DI LAUREA: PROGETTAZIONE
SIP; si sono aggiunti, ad esempio, la
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
messaggistica,
l'autenticazione,
l'accounting,
l'autorizzazione,
la
compatibilità con Ipv6, un utilizzo massiccio degli standard HTTP ed XML.
Tra gli aspetti maggiormente performanti di SER, è doveroso sottolineare la
sua elevata configurabilità tramite interfacce semplici ed intuitive, ma
soprattutto ottimali dal punto di vista delle prestazioni; tale punto di forza,
permette all'intero sistema, un ottimo livello di scalabilità, che ne ha fatto
una delle migliori implementazioni dello standard SIP. Per installare il sistema
in un ambiente Linux, per trasformarlo in un potente server in grado di
sfruttare lo standard SIP, come prerequisito è necessaria la conoscenza
della sua architettura modulare; tale requisito è basilare, in quanto si dovrà
effettuare una serie di compilazioni dei differenti moduli, rispettando le
dovute dipendenze. Una volta scaricata ed estratta l'ultima versione del
codice sorgente di SER, si procede alla compilazione dei pacchetti, tramite la
procedura classica adoperata per compilare il codice sorgente C ad hoc
sull'hardware, ottenendo un sistema server comprensivo di una serie di
moduli base. La fase di configurazione iniziale della piattaforma prevede
l'impostazione del dominio SIP su cui si andrà ad agire, l'avvio del server e,
in
seguito,
tramite
il
linguaggio
di
routing
si
definirà
dell'instradamento del contenuto informativo delle chiamate.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
la
logica
[13][14]
TELEFONI SNOM
CON TECNOLOGIA
VOIP
OPENSER
OpenSER è un sistema adoperato dalla comunità VoIP come applicativo
di middleware, tra l'infrastruttura SIP e le applicazioni front-end; fornisce
funzionalità differenti, come: proxy server,
router di chiamate (per effettuare il giusto
instradamento), insieme di caratteristiche e
funzionalità per l'interfacciamento con SIP.
Tale progetto, rilasciato sotto la licenza
GNU GPL, si colloca sia in piccoli sistemi,
formati da una connessione ADSL, che in sistemi che prevedono una grande
mole di utenti (anche migliaia) come gli ISP (Internet Service Provider); il
progetto ha avuto, nel susseguirsi degli anni, differenti avvicendamenti dal
punto di vista del team degli sviluppatori. Il progetto, inizialmente, è stato
rilasciato a Giugno del 2005 da parte di Bogdan-Andrei Iancu e Daniel
Constantin Mierla, due
degli sviluppatori del progetto SER (dal quale
ereditano una serie di componenti e di caratteristiche); nel Luglio del 2008 il
progetto
OpenSER
è
stato
rinominato
in
Kamailio e, a
causa
di
conflitti legati
alla
registrazione
del nome del
progetto, dopo
pochi mesi è
nato
il
progetto OpenSIPS. I due progetti (Kamailio ed OpenSIPS) proseguono a
pari passo con versioni differenti; gli ultimi rilasci sono avvenuti nel mese di
Marzo 2010, rispettivamente delle versioni 3.0.1 di Kamailio ed 1.6.2 di
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
OpenSIPS. Lo sviluppo del progetto OpenSER è scritto nel linguaggio C e,
fondamentalmente, funziona in un ambiente linux ed in alcune sue varianti, a
causa della necessità della presenza di pacchetti reperibili solo in questi
determinati sistemi operativi. Tale progetto, essendo nato dal progetto SER,
ha numerosi punti in comune, con lo stesso, e funzionalità ereditate anche se
diversi moduli non sono presenti; la scelta di escludere specifici moduli è
stata fatta per eventuali migliorie future. Tra i principali moduli presenti in
SER e non in OpenSER si elencano: il modulo relativo alla manifestazione
della presence nel sistema, moduli per accounting e queries, da effettuare su
db, e vari moduli per la gestione di funzioni opzionali alla chiamata.[15][16]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
KAMAILIO
Kamailio è un'applicazione opensource, rilasciata sotto licenza GPL per
la gestione di Sip Server; la sua capacità di gestione di chiamate si aggira
intorno al migliaio di chiamate per secondo. Tra le caratteristiche fornite dal
progetto si elencano: la gestione asincrona di comunicazione (basata su TCP),
la gestione di comunicazione
(basata su UDP ed SCTP), la gestione di
comunicazione sicura con TLS per supportare il VoIP, la gestione di
messaggistica istantanea, la gestione
della manifestazione della presenza nel
sistema, il supporto alla tecnologia
ENUM
per
unificare
il
sistema
telefonico con internet, la capacità di
effettuare il routing con cammini a
costo minimo, la capacità di effettuare
il
load
balancing
ed
il
routing
automaticamente su linee scariche,
fail-over
per
spostare
il
traffico
l'AAA adoperando differenti DBMS
(MySQL, PostgreSQL, Oracle, ecc. ). L'applicazione può avere differenti
scenari di utilizzo, anche se il principale riguarda la gestione di ambienti di
una certa dimensione che offrono servizi VoIP; tra gli scenari alternativi, se
ne sottolineano due fondamentali: l'utilizzo come gateway, per rendere
accessibile il passaggio da una rete SIP ad una rete PSTN, e la gestione di un
sistema PBX, per permettere la rintracciabilità ed il collegamento tra utenti
VoIP. Questa piattaforma ha un legame forte con il protocollo di segnalazione
SIP, infatti può fungere da:
da SIP proxy;
da SIP registrar;
da SIP locator;
da SIP application server;
da SIP dispatcher.
Nonostante sia un'applicazione performante, tale progetto non
permette di essere un terminale SIP o di essere un'entità che consente
comunicazione end-to-end tra utenti VoIP. Il sistema è scritto totalmente
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
adoperando il linguaggio C per sistemi Unix e Linux; prevede, inoltre, alcune
ottimizzazioni specifiche a livello di architettura per migliorare le
performance generali.[17]
Fino al momento della nascita del progetto, nel Luglio del 2008, si sono
susseguite un'insieme di problematiche legali legate alla paternità dello
stesso; tale applicazione per molti versi è considerata come la prosecuzione
del progetto OpenSER (che si basava fortemente sul progetto SER) e, come
tale, si pone come obiettivo principale quello della costruzione di un sistema
robusto e scalabile per la creazione di un SIP server opensource.
Attualmente tale progetto è considerato come un'implementazione di
riferimento, capace di gestire un numero elevato di utenti VoIP sparsi per il
mondo, in maniera efficiente e gratuita; è presente, anche, nella suite
standard di pacchetti di alcune distribuzioni Linux e BSD. L'architettura
della piattaforma è di tipo modulare, suddivisa in due categorie principali: il
core ed i moduli. Il core è il componente che effettua le funzionalità di basso
livello; i moduli, invece, provvedono alla maggior parte delle funzionalità, che
rendono la piattaforma potente e versatile. Il core di Kamailio include
differenti operazioni come: la gestione della memoria, il parsing dei messaggi
SIP, la gestione dei DNS e del livello trasporto per effettuare l'inoltro delle
chiamate; prevede API per la gestione dell'interfacciamento con DB, con
moduli di gestione esterni e con gestori di timer associati alle chiamate. Tra i
moduli esterni che permettono al sistema di essere personalizzato e,
soprattutto ne conferiscono le potenzialità dal punto di vista qualitativo,
possiamo elencare: il modulo relativo alla localizzazione dell'utente nel
sistema VoIP, il modulo AAA, il modulo relativo alla messaggistica istantanea
ed alla presenza dell'utente all'interno del sistema, il supporto al protocollo
RADIUS che permette l'autenticazione remota e svariate operazioni di
configurazione in ambito distribuito, il modulo sms gateway, il modulo per
effettuare Trasversal NAT, il modulo per estendere l'ambiente scritto
totalmente in C con applicazioni scritte in Java e Perl ecc..[18]
L'installazione della versione base, in ambienti opensource, non
prevede applicativi e librerie di base propedeutici al lancio del sistema,
poiché solitamente sono già presenti. Il primo passo da effettuare, per poter
iniziare il processo d'installazione è spostarsi adoperando la shell dei comandi
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
nella cartella dove vengono mantenuti i sorgenti, dopodiché effettuare il
download dei sorgenti tramite il comando wget, scompattarli ed, infine,
spostarsi nella cartella di riferimento dell'applicazione; questa serie di passi
avviene nel seguente modo:
cd /usr/src
wget
http://www.kamailio.org/pub/kamailio/1.4.1/src/kamailio-1.4.1-
notls_src.tar.gz
tar zxvf kamailio-1.4.1-notls_src.tar.gz
cd kamailio-1.4.1-notls_src
A questo punto, bisogna effettuare la compilazione del codice e
l'installazione, andando ad includere il modulo relativo al DBMS Mysql nel
seguente modo:
make prefix=/ include_modules="db_mysql" all
Tale comando permette l'utilizzo della directory di root, come
predefinita per l'installazione, e ciò comporta la memorizzazione di tutti i
file di configurazione nella directory /etc/kamailio; in alternativa tali file
verranno memorizzati nella cartella /usr/local/etc/kamailio. Includendo il
modulo db_mysql,
si andrà a compilare il sistema installandolo con la
funzionalità che fornisce l'autenticazione MySQL,
mentre con la voce all
andremo ad inserire tutti i moduli di default. Finita la procedura avremo
installato la piattaforma sul nostro sistema Linux; per effettuare la
configurazione dobbiamo, quindi, effettuare, come primo passo, il settaggio
delle variabili d'ambiente necessarie; il file che contiene tali variabili è
situato al percorso /etc/kamailio/kamctlrc ed è editabile con uno degli editor
forniti dal sistema Linux. Una volta aperto il file, bisogna effettuare due
passi successivi: togliere il commento alla stringa SIP_DOMAIN e settarla al
proprio dominio del server (ad esempio kamailio.local), togliere il commento
alla stringa DBENGINE=MYSQL; una volta effettuate tali procedure bisogna
salvare ed uscire dall'editor. A questo punto si può effettuare il primo avvio
dell'applicazione, ma per farlo bisogna prima effettuare il settaggio per
l'autenticazione, attraverso MySQL creando dei record all'interno del
database; effettuando il comando /sbin/kamdbctl create avviamo un
programma che richiama, tramite Kamailio, il DBMS, quindi, in fase di avvio
quando richiesto, inserire la password di root di MySQL. Fatto ciò si passa
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
alla fase di modifica del principale file di configurazione di kamailio; tale file
si trova al percorso /etc/kamailio/kamailio.cfg, e le modifiche sono limitate
ad eliminare i commenti riferiti alle seguenti chiamate:
loadmodule "db_mysql.so"
loadmodule "auth.so"
loadmodule "auth_db.so"
modparam("usrloc", "db_mode", 2)
modparam("usrloc","db_url","mysql://openser:openserrw@localhost/openser"
)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db","db_url","mysql://openser:openserrw@localhost/opens
er")
modparam("auth_db", "load_credentials", "")
if (!www_authorize("mydomain.com", "subscriber"))
{ www_challenge("mydomain.com", "0");
exit;}
if (!check_to())
{ sl_send_reply("403","Forbidden auth ID");
exit;}
Infine, bisogna settare il dominio a mydomain.com nell'if di controllo;
dopodiché si può avviare l'applicazione, tramite il comando kamctl start, ed
andare ad effettuare operazioni come: l'inserimento di utenti all'interno del
database del SIP Server, il monitoraggio del traffico ecc.. Per eseguire
chiamate, tramite il server, si può adoperare, ad esempio, il front end X-Lite
softphone, andando a settare il nome da mostrare sul display del
destinatario, l'user e la password che verranno memorizzati nel database
MySQL e l'indirizzo IP del dominio che si riferisce all'indirizzo IP della
macchina che abbiamo configurato.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
OPENSIPS
SIP ed OpenSIPS con l'affermarsi delle reti a banda larga sono
diventati dei fattori chiave per quanto riguarda il VoIP.
OpenSIPS è una implementazione open source di server SIP. È un
sistema in grado di occuparsi della gestione
della segnalazione SIP e della registrazione
dell'utenza SIP. Ha funzionalità di registrar
server, ovvero di registrazione per gli UA
SIP, e di proxy SIP, ovvero di routing delle
chiamate SIP. È un sistema che segue il
percorso iniziato da OpenSER, progetto opensource evoluto in OpenSIPS.
Anche se è opensource, le soluzioni basate su OpenSIPS sono molto robuste
ed affidabili, in grado di scalare da piccole applicazioni fino a soluzioni
carrier-grade. OpenSIPS non è un RTP proxy, ovvero non gestisce il flusso
audio delle sessioni telefoniche. In tal senso, va affiancato con un prodotto
adeguato in contesti dove è necessario il controllo RTP.
Per quanto riguarda OpenSIPS, e per quanto visto in precedenza, in
riferimento a componenti software, quali: Asterisk, SER, OpenSER, è
classificato tra le piattaforme di middleware che si frappongono tra
l'infrastruttura protocollare e gli applicativi di front-end adoperati dagli
utenti, per interfacciarsi con altri utenti e per effettuare chiamate.[20] In
uno scenario tipico VoIP tutte le chiamate devo passare attraverso un VoIP
provider; tale componente deve supportare una sequenza di moduli e
funzionalità, tutte accorpabili in un unico attore che è il SIP proxy server. Il
SIP proxy server, che può essere rappresentato da una singola macchina o da
più macchine tra loro interconnesse, andrà a processare OpenSIPS; tale
software, funge principalmente da SIP router andando ad effettuare
l'instradamento dei pacchetti, in maniera veloce ed efficiente, ed inoltre
esterna le funzionalità di NAT trasversale, di load balancing, di IMS
(convergenza voce, video e multimedia su infrastrutture IP-based) oltre che
di tante altre funzionalità. La piattaforma è principalmente adoperata come
SIP
proxy e come REGISTRAR in relazione all'infrastruttura SIP
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
sottostante; tuttavia, il progetto si adatta a differenti casi d'uso fungendo:
da proxy dispatcher/balancer effettuando il bilanciamento di carico delle
chiamate e lo scheduling delle stesse, da Jabber gateway effettuando le
debite traduzioni dei messaggi in relazione agli standard protocollari
differenti a cui aderiscono, da server che manifesta la presenza nel sistema
dell'utente, da SIP router per instradare le chiamate, da server che
effettua il NAT trasversale per creare connessioni end-to-end (tra utenti di
sistemi autonomi diversi che adoperano NAT) senza modificare l'header del
pacchetto ed infine da instant messenger. Il funzionamento principale del
sistema OpenSIPS è quello di SIP proxy, quindi di: prendere le dovute
decisioni
di
instradamento,
modificare
i
messaggi
SIP
request prima di
effettuarne
l'invio,
instradare
i
messaggi SIP di
response
stesso
del
sullo
percorso
messaggio
SIP di request in
senso
opposto;
tutte
queste
operazioni
vengono
effettuate
dal
SIP proxy in due modalità stateless e stateful (in base alla capacità di poter
discriminare il contenuto informativo dei messaggi). OpenSIPS è un progetto
che si basa fortemente su SER, il progetto tedesco che per primo si è
affacciato nel mondo OpenSource assieme ad Asterisk, per fornire
un'interfaccia allo standard protocollare SIP; come anticipato nel paragrafo
precedente, OpenSIPS è uno dei due progetti che sono nati dal progetto
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
OpenSER ed è particolarmente adatto ad effettuare il lavoro di SIP proxy.
OpenSIPS ha come caratteristica principale la flessibilità, è stato, infatti,
sviluppato seguendo il modello a plug-in in cui moduli di terze parti possono
essere facilmente aggiunti al sistema; a conferma di ciò, è il fatto che
OpenSIPS supporta moduli come Radius, Enum, manifestazione della
presenza nel sistema, SMS ecc.. La flessibilità del progetto OpenSIPS si
nota dal fatto che il software non si limita a funzionare da SIP proxy,
facendo il routing delle chiamate, ma anche come SIP firewall, come SBC
(Session Border Controller per effettuare il controllo all'interno di un
sistema autonomo) e come load balancer; il tutto in maniera veloce scalabile e
portatile, ma soprattutto sfruttando quelle macchine che non possiedono
capacità hardware elevate. L'aspetto della velocità di OpenSIPS si evince
dalla capacità di gestire decine di migliaia di chiamate al secondo.
L'amministratore configura il sistema adoperando un linguaggio di script, ed,
in tal modo, adatta in maniera flessibile l'intera piattaforma ai molteplici
scenari applicativi; la scelta del linguaggio di programmazione ANSI-C per
creare il progetto, gli conferisce la portabilità per la maggior parte dei
sistemi opensource, quali Linux Solaris e BSD. Lo sviluppo della piattaforma
avviene grazie alla presenza di un insieme di moduli soprastanti un core, il
quale è responsabile delle funzioni basilari e della gestione dei messaggi SIP;
i moduli espongono una serie di funzionalità tramite un linguaggio di script
proprio del sistema OpenSIPS. Per installare l'applicazione su un'insieme di
ambienti opensource come Linux, BSD e Solaris abbiamo bisogno di
determinate versioni particolari, in grado di fornire quell'insieme di
applicativi e librerie che sono propedeutiche al lancio del sistema;
soprattutto abbiamo bisogno, per poter installare la versione base, dei
componenti: gcc, bison, flex (che sono compilatori e componenti in
riferimento agli specifici linguaggi di programmazione), libxml2-dev, libxmlrpc (che sono due librerie adoperate per i moduli relativi alla presence nel
sistema ed all'utilizzo di chiamate a procedure remote standardizzate in
xml), GNU make, GNU tar, GNU install (componenti Opensource adoperati
rispettivamente per compilare il sorgente, per scompattare determinati file
compressi,
per
installare
il
codice
compilato
precedentemente).
La
distribuzione consigliata nell'ambiente Linux, per installare OpenSIPS, è
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Debian, poiché le dipendenze necessarie all'installazione sono facilmente
reperibili e per la sua facilità di installazione; presupponendo ora di aver già
installato la distribuzione sulla macchina, adoperando il comando apt -get
install riusciamo facilmente a scaricare ed installare le dipendenze elencate
in precedenza per poter installare il sistema. Terminata la fase iniziale di
installazione delle dipendenze, da linea di comando ci sposteremo nella
cartella /usr/src ed adoperando il comando wget otteniamo il codice sorgente
scaricandolo
dalla
rete
tramite
il
comando
specifico
http://opensips.org/pub/opensips/1.6.0/src/opensips-1.6.0-
wget
tls_src.tar.gz;
una volta che abbiamo scaricato il sorgente dell'applicazione, la scompattiamo
adoperando il comando tar -xzvf opensips-1.6.x-tls_src.tar.gz. Adesso
abbiamo il codice del sistema OpenSIPS all'interno della cartella opensips1.6.0.tls mantenuta nel percorso /usr/src che contiene tutti i sorgenti dei
programmi; adoperando il comando cd ci spostiamo all'interno della cartella
e,
quindi,
adoperando
include_modules="db_mysql
i
comandi
aaa_radius"
make
e
make
prefix=/
prefix=/
all
install
include_modules="db_mysql aaa_radius" compiliamo il programma includendo i
moduli relativi al database mysql ed all'accounting. Adesso abbiamo a
disposizione sulla nostra distribuzione Linux la piattaforma OpenSIPS; ma
per poterci interfacciare con il sistema dobbiamo installare un'applicazione
scritta in PERL ed ottenibile con il comando apt-get install libdbi-perl libdbdmysql-perl libfrontier-rpc-perllibterm-readline-gnu-perl; per lanciarla digito
il comando osipsconsole.
La configurazione del sistema avviene apportando una serie di
modifiche ad un file denominato opensips.cfg; questo è il principale file di
configurazione del sistema e nello specifico controlla quali moduli devono
essere caricati. In riferimento ad ogni modulo specificato in tale file, si
possono definire quali parametri devono essere caricati e delineare tutte le
azioni che si devono effettuare sfruttando il protocollo SIP sottostante. Il
file di configurazione è suddiviso in una serie di parti che sono:
Definizioni globali;
Moduli;
Configurazione dei moduli;
Blocco principale di routing;
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Blocchi secondari di routing;
Blocchi di reply di routing;
Blocchi di failure di routing;
Blocchi di branch di routing;
Blocchi di routing locale;
Blocchi di routing di errore.
La sezione delle Definizioni globali indica alcuni parametri di lavoro di
OpenSIPS, come ad esempio: la coppia (porta, indirizzo) da passare alla
famiglia di protocolli SIP per il servizio di segnalazione ed il debug, i
parametri globali ed i parametri dei moduli.
La sezione dei Moduli indica un insieme di librerie esterne, che sono
necessarie per poter creare le funzionalità
nuove che si andranno ad
aggiungere al core di OpenSIPS.
La sezione delle Configurazioni dei moduli specifica i parametri
necessari, che devono essere settati nella maniera opportuna per il modulo in
riferimento.
La sezione del Blocco principale di routing indica dove iniziano ad
essere processate le request SIP.
La
sezione
dei
Blocchi
secondari
di
routing
specifica
all'amministratore la possibilità di poter fornire nuove politiche di routing
delle chiamate; sono scritte nel linguaggio di script di OpenSIPS come delle
routine.
La sezione dei Blocchi di reply di routing è adoperata per processare i
messaggi di ritorno, che sono inviati da parte dell'utente chiamato ed
indicano lo stato della connessione.
La sezione dei Blocchi di failure di routing indica, a differenza
dell'opzione precedente, le condizioni di fallimento di un'instaurazione di una
chiamata.
La sezione dei blocchi di branch di routing specifica la modalità di
esecuzione in riferimento ad ogni segmento di una request SIP.
La sezione dei Blocchi di routing locale disciplina l'operazione che
viene effettuata quando è eseguita, da parte del sistema, una request
adoperando la logica delle transazioni SIP.
La sezione del Blocco di errore di routing specifica le operazioni da
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
effettuare quando si solleva un errore SIP.
Il file appena descritto viene eseguito (all'interno del sistema
OpenSIPS) quando c'è un'operazione che implica la ricezione di un messaggio
SIP; quando ciò avviene ci sarà la gestione dell'evento da una parte del file
opensips.cfg; in un certo senso, il funzionamento è simile a quello degli active
message, che possiedono un handler capace di gestire i vari eventi
discriminandoli in fase di ricezione. Una volta installata, sulla macchina Linux,
la piattaforma OpenSIPS ci sarà la creazione di una serie di cartelle,
precisamente: all'interno della directory
/etc
verrà creata la directory
opensips dove verranno mantenuti i file di configurazione del sistema;
all'interno della cartella /lib verrà creata la cartella /opensips/modules dove
verranno mantenuti tutti i moduli compilati per opensips; infine, all'interno
della cartella /sbin verranno mantenuti i file binari e nella cartella /var/log ci
saranno i file di log che verranno popolati ogni qual volta avviene un evento
all'interno del sistema. Per poter interagire con il sistema abbiamo anche
altre interfacce non testuali, ma grafiche; parleremo in particolare di due
interfacce differenti, che sono SerMyAdmin e OpenSIPS-CP. La prima
interfaccia è focalizzata alla gestione degli utenti che fanno parte del
sistema, mentre la seconda è finalizzata soprattutto al settaggio dei
parametri dei differenti moduli ed al monitoraggio del sistema. SerMyAdmin
è stato creato originariamente per essere un'alternativa alla semplice
memorizzazione delle informazioni di settaggio e delle informazioni relative
agli utenti all'interno dei database; è stato rilasciato seguendo la licenza
GPL-2
ed
il
suo
codice
si
può
scaricare
semplicemente
dall'URL:
http://sourceforge.net/projects/sermyadmin. Come si evince dal nome del
progetto, è stato creato originariamente per poter fornire un'interfaccia
grafica per il sistema OpenSER; di recente tale progetto è stato adattato ad
un funzionamento sulla piattaforma OpenSIPS. Con la versione ultima di
questo progetto, siamo in grado di registrare automaticamente gli utenti con
invio di conferme via e-mail, di impostare i parametri dei differenti moduli
ecc.. Tale progetto si colloca come un'ottima utility in grado di facilitare e
accelerare i processi di amministrazione del sistema OpenSIPS, poichè
l'alternativa è rappresentata dal settaggio diretto del file di configurazione
opensips.cfg delle differenti voci descritte precedentemente, che prevede
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
un elevato costo di specializzazione anche solo per semplici operazioni come
creazione di utenti, di gruppi e di altre funzionalità basilari. Il sistema
adopera Grails come sistema per connettere applicazioni web con database,
usando strumenti di connessione jdbc; per far funzionare questo sistema di
interfaccia, abbiamo bisogno di una serie di precondizioni come un application
server
(Tomcat o Glassfish) ed un ambiente java (JDK oppure GCJ). Per
procedere all'installazione dell'applicazione, essendo all'interno di un
ambiente Linux e precisamente si presuppone di adoperare una distribuzione
Debian, dobbiamo effettuare un'installazione adoperando il comando apt get install. Si procederà seguendo una metodologia differente rispetto a
quella specificata per installare la piattaforma OpenSIPS; andremo ad
effettuare delle modifiche al file /etc/apt/sources.list per poter includere
le repositories adatte a scaricare il pacchetto sermyadmin-install-2.x.tar.gz
precisamente andremo ad aggiungere i seguenti indirizzi per poter scaricare
le repositories contrib e non-free:
deb http://ftp.us.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.us.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib nonfree
Aggiornate le liste degli indirizzi, lette dal programma apt, devo
effettuare un aggiornamento della lista delle repositories andando ad
eseguire a linea di comando l'istruzione: apt- get update; adesso devo
scaricare il pacchetto che contiene il programma SerMyAdmin, precisamente
devo scaricare il file sermyadmin-install-2.x.tar.gz e scompattarlo all'interno
della cartella /usr/src dove vengono mantenuti tutti i sorgenti dei programmi
della distribuzione, in particolare bisogna effettuare tale sequenza di passi:
cd /usr/src
wget http://www.sermyadmin.org/pub/sermyadmin-install-2.x.tar.gz
tar –xzvf sermyadmin-install-2.x.tar.gz.
Quindi, scompattato il file, bisogna cambiare directory in sermyadmininstall e lanciare l'installazione del programma con ./install.sh. Per verificare
che l'installazione sia compiuta, si deve riavviare il sistema e digitare sul
browser l'indirizzo: http://localhost:8080 ed arriveremo alle pagina iniziale
di Tomcat. Il secondo sistema che fornisce un'interfaccia grafica alla
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
piattaforma OpenSIPS è OpenSIPS-CP (OpenSIPS Control Panel); codesto
sistema fornisce: un'interfaccia grafica per la creazione di un proxy SIP e un
tool per settare i parametri, per il core e per i differenti moduli di
OpenSIPS, da memorizzare all'interno di un database. Tale programma è
stato sviluppato in PHP e non fornisce lo strumento di front-end all'utente
finale ma, come accennato precedentemente, permette l'amministrazione
semplice e veloce del sistema; in particolare permette le funzionalità di
routing delle chiamate, di dialplan per definire un piano di gestione delle
chiamate in ingresso ed in uscita dal sistema, di load balancer, di dispatcher
delle chiamate, di monitoring del sistema, di tracciamento della chiamata
VoIP tramite la funzione siptrace ecc.. Anche per questo software abbiamo
bisogno dell'installazione di un Application Server e del motore PHP; tale
procedura comporta l'utilizzo di apt con pacchetti che si trovano nelle
repositories on line; scrivendo a riga di comando apt -get install apache2
php5 ottengo apache e php mentre tramite la riga di comando apt-get install
php5-mysql php5-xmlrpc php-pear. installo i pacchetti relativi a mysql ed
xmlrpc e pear che serviranno in seguito. A questo punto bisogna ottenere il
sorgente relativo al sistema che ci fornisce l'interfaccia grafica per
opensips; da internet preleviamo il pacchetto in formato compresso
dopodiché lo scompattiamo nella directory /var/www come di seguito:
cd /var/www
wget
http://sourceforge.net/projects/opensips-
cp/files/opensipscp/3.0/opensips-cp_3.0.tgz/download
tar –xzvf opensips-cp_3.0.tgz
chown www-data:www-data opensips-cp -R.
Ora si installa il pacchetto relativo a pear MDB2; un'applicazione che
permette un livello di astrazione del database. L'installazione avviene
seguendo le seguenti istruzioni:
pear install MDB2
pear install MDB2#mysql
pear install log.
Per
configurare
Apache
vengono
fatte
modifiche
al
file
/etc/apache2/apache2.conf. Con un editor di testo presente all'interno del
sistema, dobbiamo inserire le seguenti stringhe:
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Alias /cp "/var/www/opensips-cp/web"
chown www-data:www-data /var/www/opensips-cp/config/access.log.
Infine, bisogna effettuare l'installazione del cdr per poter effettuare
la memorizzazione dei dettagli delle chiamate all'interno del database:
cd /var/www/opensips-cp/web/tools/cdrviewer
mysql –D opensips -p < cdrs.sql
mysql –u root –p
mysql> use opensips
mysql –D opensips -p < opensips_cdrs_1_6.mysql.
Per aggiungere nuovi moduli, bisogna valutare il database per inserire
nuove tabelle; adesso per lanciare il sistema, basta riavviare OpenSIPS ed
Apache. Tra i due applicativi descritti finora, si deve fare una precisazione
per capire l'effettivo funzionamento; SerMyAdmin è un'applicazione creata
per essere adoperata da utenti ed amministratori, infatti permette
operazioni su passwords, su accounting, sui profili degli utenti ecc., mentre
OpenSIPS-CP
è
focalizzata
soprattutto
alla
memorizzazione
delle
informazioni, e dei dati in database, ed è uno strumento per fare statistiche
sulle chiamate e creare tracciature dei loro percorsi.[21]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
CONFRONTO TRA LE ARCHITETTURE PROPOSTE
Dopo aver descritto in maniera completa ed esauriente le varie
architetture, che permettono la creazione di “stazioni VoIP”, si deve
necessariamente effettuare un confronto tra i differenti progetti. Una
prima distinzione fondamentale deve essere fatta tra Asterisk ed il resto
delle
architetture
finora
descritte
(SER,
OPENSER,
KAMAILIO,
OpenSIPS); per poter illustrare le differenze, tra queste due categorie,
bisogna entrare nel dettaglio, andando a specificare gli scopi dei differenti
progetti e chiarire le problematiche che si propongono di risolvere.
La
prima
categoria
si
riferisce
a
progetti
che
permettono
l'implementazione di PBX (Private Branch Exchange), ossia di una centralina
telefonica per uso privato; è principalmente usato nelle aziende per fornire
una rete telefonica interna.
Gli utenti del sistema telefonico PBX
condividono un numero di linee esterne per effettuare chiamate telefoniche.
Un PBX collega i telefoni all’interno di un’azienda e alla linea telefonica
tradizionale (PSTN). Una delle ultime tendenze dei sistemi telefonici PBX è il
VOIP PBX, conosciuto anche come IP PBX, che usa il protocollo internet per
trasmettere le chiamate. Si distinguono quattro differenti opzioni per i
sistemi telefonici PBX:
PBX tradizionale;
PBX a noleggio/ Virtuale;
IP PBX;
IP PBX a noleggio/ Virtuale.
Il PBX tradizionale e quello a noleggio effettuano la semplice
interconnessione delle varie linee telefoniche tra di loro, permettendo inoltre
l'interconnessione con la linea esterna.
L’ IP PBX è un sistema telefonico PBX che, basandosi su una soluzione
software, permette alcuni processi e fornisce servizi che possono essere
difficoltosi e costosi da implementare quando si usa un sistema proprietario
PBX. Asterisk è una implementazione libera di un software PBX, che
permette di ottenere le stesse funzioni offerte da altri sistemi proprietari
con una spesa decisamente inferiore ed una maggiore flessibilità. La prima
stesura di Asterisk venne realizzata da Mark Spencer, un ingegnere
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
informatico statunitense che, attorno all'anno 2000, fondò una società che
sviluppa schede d'interfaccia FXS ed FXO. Spencer sviluppò Asterisk per
favorire la diffusione delle interfacce Digium e, permettendone la libera
distribuzione, solleticò l'interesse di moltissimi utilizzatori professionali ed
appassionati, diffondendone largamente così la conoscenza. Tale progetto è
oggi un punto di riferimento nel settore; la completezza dei suoi contenuti e
la sua affidabilità lo rendono una piattaforma ideale per una vasta gamma di
applicazioni; infatti, è utilizzato come elemento portante per realizzare
mediatori RTG/IP (centralini in grado, cioè, di utilizzare sia le linee
telefoniche tradizionali sia i canali IP), sistemi Centrex (PBX "virtuali" e
centralizzati), applicazioni per la gestione di Call Center ed altro ancora.
La seconda categoria si riferisce a progetti che permettono
l'implementazione di Proxy SIP e consentono la creazione di una architettura
di comunicazione VoIP o multimediale; tale entità viene adoperata come punto
di contatto per terminali che devono comunicare tra loro e, in alcuni casi,
come vero e proprio proxy tra i terminali, frapponendosi tra di loro e
gestendo le differenti comunicazioni. A questa categoria fa capo il progetto
SER e tutti i progetti derivati: OPENSER, KAMAILIO, OpenSIPS;
quest'ultimo tuttora si presenta come l'implementazione open source di
server SIP maggiormente adoperata. In generale, i Proxy SIP sono sistemi in
grado di occuparsi della gestione della segnalazione SIP e della registrazione
dell'utenza
SIP;
hanno
funzionalità
di
registrar
server,
ovvero
di
registrazione per gli UA SIP, e di proxy SIP, ovvero di routing delle chiamate
SIP. Anche se opensource le soluzioni proposte dai progetti derivati da SER
sono molto robuste ed affidabili e, soprattutto, nelle implementazioni di
Kamailio e di OpenSIPS sono in grado di scalare da piccole applicazioni fino a
soluzioni carrier-grade. Bisogna sottolineare, tuttavia, che tali soluzioni non
permetto la funzionalità di RTP proxy, ovvero non gestiscono il flusso audio
delle sessioni telefoniche. Di seguito si presenta un confronto effettuato tra
i due principali progetti che rappresentano le categorie dei PBX e dei Proxy
SIP, Asterisk ed OpenSIPS:
ARCHITETTURA:
Asterisk ha un'architettura che gli permette di funzionare come
B2BUA (Back to Back User Agent); l'implementazione risulta essere
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
abbastanza complessa poiché responsabile non solo della segnalazione ma
anche del traffico voce.
Un
sistema
di
tipo
B2BUA permette servizi
che vanno dalla gestione
dei: codec di traduzione,
protocolli di traduzione,
servizi
complementari
alla chiamata come IVR,
voicemail,
distribuzione
automatica
delle
chiamate, traduttori da
testo
a
voce,
riconoscimento vocale.
OpenSIPS
ha
un'architettura non di
tipo B2BUA, per tale
motivo
risulta
essere
molto più snella di quella di Asterisk; tale progetto è un Session Initiation
Protocol Proxy e si limita
soltanto
alla
fase
di
segnalazione.
Connettività
alla
PSTN:
Asterisk ha molte
schede che si interfacciano
ad una rete di tipo PSTN
per connettersi; con tale
progetto
è
molto
installare
facile
schede
telefoniche nel server e
configurarle, per far accedere un sistema autonomo ad una rete PSTN.
OpenSIPS necessita di un gateway SIP, per connettere un sistema
autonomo ad una rete PSTN; a differenza del progetto Asterisk, in OpenSips
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
non c'è la possibilità di installare proprie schede nel server. Spesso, quando
un sistema autonomo gestito con OpenSIPS deve accedere ad una rete
PSTN, ci si affida ad Asterisk, ed alla sua duttilità, per farlo funzionare da
gateway.
NAT:
Il NAT (Network Address Translation) è un punto debole dell'intera
tecnologia VoIP; tale procedura consiste nella mappatura di indirizzi IP locali
in indirizzi IP pubblici.
Asterisk offre soluzioni ad hoc che permettono la mappatura di
indirizzi,
garantendo connessioni tra un utente che fa parte di una rete
locale ad un VoIP service provider.
OpenSIPS, a differenza di Asterisk, affronta questa problematica in
maniera più approfondita, infatti, oltre a permettere connessioni tra un
utente che fa parte di una rete locale ad un VoIP service provider, permette
la manipolazione diretta di una comunicazione SIP. Adoperando il NAT
trasversale, con OpenSIPS è possibile anche gestire scenari quali la
comunicazione diretta tra utenti che si trovano dietro lo stesso NAT router,
permettendo, in tal modo, lo scambio di flussi audio e flussi multimediali.
Load Balancing:
Asterisk permette in maniera generica un bilanciamento di carico
basato su campi, come ad esempio username e callid, ed altre proprietà che
permettono, inoltre, la gestione del failover.
OpenSIPS ha come punto di forza le soluzioni offerte a questa
problematica; possiede algoritmi specializzati di hash, che possono essere
configurati per effettuare il bilanciamento di carico su campi, come
l'username e il callid, ed altre proprietà differenti. Tale progetto permette
la gestione del failover ed affronta il problema del bilanciamento con
soluzioni differenti, che si distinguono in base al controllo o meno del carico
dei vari nodi a runtime.
Livello di accesso ad header e transactions:
Asterisk ha un limitato accesso al protocollo IAX. Il file iax.conf
permette la configurazione del protocollo IAX. Si tratta di un protocollo
specifico per Asterisk che permette l'implementazione di trunk tra diverse
centrali
con localizzazioni geografiche differenti. IAX
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
permette di
CON TECNOLOGIA
VOIP
raggruppare un flusso di chiamate telefoniche ottimizzando la segnalazione e
quindi riducendo significativamente l'overhead di banda. È un'alternativa al
protocollo RTP. Nel file iax.conf è possibile creare delle entry provviste di
autenticazione per dei PABX Asterisk esterni.
IAX è configurabile in modalita trunk o modalità no-trunk. Nel primo caso
ottimizza la segnalazione riducendo significativamente l'overhead, inserendo
in un unico pacchetto IP la segnalazione e il flusso media di più canali fonia.
Nel secondo caso riduce la banda rispetto RTP, avendo 4byte di overhead
invece di 12byte, ma in modo meno significativo in quanto ogni differente
chiamata utilizza un differente pacchetto IP/UDP. Anche se non pensato per
questa finalità è possibile utilizzare anche degli UAC SIP IAX, come telefoni
hardware/software
OpenSIPS ha un accesso limitato al protocollo SIP e ammette la
possibilità di manipolare direttamente le request e le response;
questa
funzionalità permette la compatibilità, adoperando adeguati traduttori, di
versioni differenti di SIP.
Media Service:
Asterisk offre ai propri utenti la possibilità di usufruire di qualsiasi
servizio che adoperi file multimediali.
OpenSIPS a differenza di Asterisk è un SIP Proxy e, quindi, in
funzione dell'architettura di cui fa parte, non è adatto ad offrire servizi
come IVR, voicemail, riconoscimento vocale ecc..
In conclusione, Asterisk è un Back to Back User Agent ed è molto
popolare nel mercato delle piccole e medie PBX; il progetto è facile da
configurare e da collocare in un sistema autonomo, adoperandolo come una
scatola nera che permette tutte le operazioni VoIP.
Differentemente da Asterisk il progetto OpenSIPS è adoperato
fondamentale come VoIP provider; il punto di forza della piattaforma è dato
dalla capacità di offrire soluzioni professionali a problematiche specifiche,
che si presentano in ambiti professionali e non commerciali. Tale sistema è
stato sviluppato per gestire problemi come il NAT trasversale, il load
balancing, il load sarin e manipolare grandi quantità di chiamate, come ad
esempio centinaia di utenti registrati. Definita la differenza che sussiste tra
l'implementazione di un PBX e l'implementazione di un SIP Proxy, dopo aver
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
specificato tutte le problematiche, che nelle due categorie progettuali sono
risolte, bisogna fare le dovute precisazioni tra le varie implementazioni
presenti sul mercato delle due categorie. Soffermandoci sulla categoria dei
PBX risulta significativo l'aspetto della diffusione a macchia d'olio del
progetto Asterisk, da ciò si evince che, sia dal punto di vista qualitativo che
dal punto di vista prettamente economico, la soluzione proposta da Mark
Spencer è valida al punto da sbaragliare eventuali tentativi di concorrenza.
Per quanto riguarda, invece, la categoria dei SIP Proxy c'è una questione
annosa, che si ripropone sistematicamente dalla fine del progetto OpenSER
cioè la contrapposizione dei due branch in cui si è distinta la piattaforma:
OpenSIPS
e
KAMAILIO.
Entrambe
le
due
piattaforme
presentano
un'implementazione modulare e, sotto alcuni aspetti, è ben chiara una certa
specularità riguardante determinati moduli; risulta molto accesa la questione
dell'originalità dei due progetti, guardandoli dal punto di vista prettamente
tecnico della programmazione, in quanto i fondatori dei due progetti erano
una volta cooperanti nel progetto madre OpenSER. Effettuando ricerche
sulla rete, tramite canali informativi non ufficiali, si denota una certa linea
interpretativa riguardante i due progetti; KAMAILIO si presenta come il
diretto successore del progetto OpenSER, dal quale ha ereditato la maggior
parte dei moduli ed il core; tuttavia, si pensa che per quest'ultimo ci sia un
ritorno al passato, adoperando in futuro il core del progetto SER
riadattandolo per poterlo far comunicare con i moduli di KAMAILIO.
OpenSIPS, basandosi sul progetto OpenSER, presenta, comunque, una
modalità di creazione che lo rende un progetto a sé stante a differenza
dell'odiato “fratello”. Per quanto riguarda gli aspetti tecnici, entrambi i
progetti presentano pressoché gli stessi moduli e le stesse funzionalità,
differendo solamente dal punto di vista sintattico; invece relativamente
all'aspetto della documentazione e del debug si notano delle differenze. Il
progetto OpenSIPS possiede un ricco sito internet, dal quale ottenere la
documentazione ufficiale, tutorial, riguardanti i moduli più complessi e,
ancora, la presenza di una mailing list alla quale iscriversi, per poter valutare
eventuali post inviati da parte di utenti che hanno riscontrato problemi e bug
di sistema. Sono presenti due fondamentali tools accessori al progetto, che
permettono un'interfaccia grafica con cui interagire; il progetto OpenSIPSTESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
CP ha un completo sito internet, che facilita l'installazione dell'applicativo
oltre a mettere a disposizione materiale audiovisivo riguardante la
configurazione delle differenti aree, che permettono l'esatto setting dei
moduli di OpenSIPS. KAMAILIO possiede un sito internet ben fornito ed
intuitivo, da cui reperire facilmente informazioni riguardanti l'installazione e
la configurazione dei suoi moduli; possiede una mailing list molto popolata e
ben ordinata; ma quello che rende tale progetto più appetibile agli utenti è la
presenza di materiale, come guide e tutorials accessori non ufficiali,
presente all'interno della rete. Tale aspetto è molto importante, in quanto è
proprio la documentazione non ufficiale, creata dagli stessi utenti, a
facilitare l'uso del progetto; la documentazione ufficiale non pone soluzioni di
comodo ma soluzioni testate, che il più delle volte si preferisce inserire in
nuove versioni anziché creare delle soluzioni come patch.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
CAPITOLO III
AMBIENTE DI SVILUPPO (Visual Studio)
Visual
Studio
.NET è un un ambiente di sviluppo integrato
(Integrated development environment o IDE) sviluppato da Microsoft, che
supporta diversi tipi di
linguaggio,
quali
C++,
C#, J#, Visual Basic .Net e ASP .Net, e che permette la realizzazione di
applicazioni, siti web, applicazioni web e servizi web.
È inoltre un RAD (Rapid Application Development), ovvero una
applicazione atta ad aumentare la produttività aiutando il programmatore con
mezzi come l'IntelliSense o un designer visuale delle forms. Visual Studio
.NET è inoltre multipiattaforma: con esso è possibile realizzare programmi
per server, workstation, pocket PC, smartphone e, naturalmente, per i
browser.
Visual Studio .NET, nelle sue ultime versioni da quando è nata la
piattaforma .NET, supporta diversi linguaggi di programmazione tra cui C#,
Visual Basic .Net e C++. In altre edizioni è disponibile anche il supporto a J#.
Visual Studio.NET è incompatibile col linguaggio Java.
Come il suo predecessore, Visual Studio .NET integra un debugger
interno; in questo modo si possono correggere eventuali errori logici e
sintattici senza compilare tutta l'applicazione.
A differenza dei compilatori classici, quello disponibile col .NET
Framework converte il codice sorgente (Visual Basic .NET, C#, ecc.) in codice
IL (Intermediate Language). IL è un nuovo linguaggio progettato per essere
convertito in modo efficiente in codice macchina nativo su differenti tipi di
dispositivi. Intermediate Language è un linguaggio di livello più basso rispetto
a Visual Basic o C#, ma è a un livello di astrazione più alto rispetto ai
linguaggi assembly o linguaggi macchina.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Il primo rilascio di Visual Studio .NET è datato 2002.
Tecnicamente è chiamato Visual Studio 7.0 e solo dopo il rilascio di Visual
Studio .NET 2003 questa versione iniziò a essere chiamata Visual Studio
.NET 2002. Basato su .Net Framework 1.0, non è possibile sviluppare
applicazioni
per
versioni
successive
del
framework.
L'IDE
sfrutta
parzialmente a sua volta il .NET. Si tratta della prima versione di Visual
Studio a supportare i linguaggi C# e VB.NET. Introdusse, inoltre, le ormai
deprecate Managed Extension per il C++ (sostituite ora dall'estensione
C++/CLI). Tale versione è oramai introvabile.
Visual Studio .NET 2003
Chiamato anche Visual Studio 7.1, propone le seguenti innovazioni
rispetto alla versione 7.0:

Incorpora la versione 1.1 del .NET Framework;

È stato aggiunto il supporto per il .NET Compact Framework (per
dispositivi portatili);

È stato aggiunto il supporto per ASP.NET Mobile Designer (per creare
applicazioni web progettate per dispositivi portatili o qualsiasi
dispositivo di piccole dimensioni);

Varie modifiche alla struttura grafica e correzioni di piccoli bug.

Nonostante la versione del programma sia 7.1, il formato dei file è alla
versione 8.
Visual Studio 2005
Sviluppata con il nome in codice Whidbey, è la prima versione di Visual
Studio a non includere il suffisso .NET nel nome, anche se il .NET framework
resta ancora l'obiettivo principale del programma. Presenta le seguenti
innovazioni:

Incorpora il .NET Framework 2.0;

Ha più edizioni secondo le esigenze dei programmatori;

Migliorie all'IntelliSense;

Tecniche di sviluppo delle pagine ASP.NET modificate;

Presenta modalità di lavoro avanzate;

C++/CLI, un'estensione del C++, rimpiazza le Managed Extensions;

Sviluppo per piattaforme x64 semplificato.
Visual Studio 2008
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Visual Studio 2008 è un IDE creato da Microsoft, con il nome in
codice Orcas, per programmatori che sviluppano per piattaforme Windows e
.NET Framework 3.5. Esso permette di usare svariati linguaggi di
programmazione, tra cui VB.NET, C#, C++ ed altri ancora. Inoltre, offre la
possibilità di creare applicazioni e servizi Web ASP.NET. È uscito il 27
febbraio 2008. Presenta le seguenti innovazioni:

Sviluppo applicazioni per il .NET Framework 3.5.

Introduzione di LINQ.

J# non è incluso.
Visual Studio 2010
Visual Studio 2010 è l'ultimo IDE creato da Microsoft, per
programmatori che sviluppano per piattaforme Windows e .NET Framework
4.0. Esso permette di usare svariati linguaggi di programmazione, tra cui
VB.NET, C++, C# ed altri ancora. Offre, inoltre, la possibilità di creare
applicazioni e servizi Web ASP.NET, in C# o in VB.NET. È stato rilasciato il
12 aprile 2010.
Presenta le seguenti innovazioni:

Sviluppo di applicazioni per il .NET Framework 4.0

Nuovo linguaggio di programmazione funzionale F#

Supporto programmazione parallela.

Integrazione della libreria jQuery

IntelliSense e quickSearch migliorati.
Ultime Versioni In Commercio
Le versioni di Visual Studio 2010 si distinguono in :

Visual Studio Express Edition -
è una versione gratuita dell'IDE
Visual Studio. Utile per studenti e principianti, limitato su certi
aspetti funzionali.

Visual Studio Professional, Premium, e Ultimate
- sono invece le
versioni a pagamento, più potenti in termini funzionali della versione
Express,
e
sono
indicate
per
un'utenza
più
esigente,
come
professionisti o aziende di software.
Ognuna delle versioni sopracitate del prodotto permette di utilizzare le
ultime quattro versioni disponibili del .NET Framework (2.0, 3.0, 3.5 e 4.0) [22].
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
.NET FRAMEWORK
Il .NET Framework è la parte centrale della tecnologia .NET di
Microsoft. È l'ambiente per la creazione, la distribuzione e l'esecuzione di
tutti gli applicativi che supportano .NET, siano essi Servizi Web o altre
applicazioni.
Componenti del .NET Framework (e descrizione):
.NET si compone di:

Compilatori per i principali linguaggi supportati da Microsoft;

Ambiente di esecuzione Common Language Runtime o CLR;

Libreria di Classi.
Compilatori - .NET, nella sua versione per sviluppatori (SDK) contiene
i compilatori per C#, Visual Basic .NET, JavaScript, J#. Oltre a questi
linguaggi, forniti da Microsoft, sono utilizzabili altri linguaggi, come Delphi,
Lisp, Eiffel, i cui compilatori sono forniti da altri produttori.
CLR - Il Common Language Runtime è il motore d'esecuzione della
piattaforma .NET, esegue cioè codice IL (Intermediate Language) compilato
con compilatori che possono avere come target il CLR. Tale componente si
occupa di compilare just-in-time (al volo) il codice IL in linguaggio
comprensibile alla CPU (linguaggio Macchina).
Versioni di .NET Framework
Microsoft cominciò lo sviluppo della tecnologia .NET verso la fine degli
anni novanta, sotto il nome di Next Generation Windows Services (NGWS).
La prima beta del Framework .NET fu rilasciata verso la fine del 2000. Il
framework è stato quindi aggiornato più volte nel corso degli anni.
Versione Build rilasciata
Data di rilascio
1.0
1.0.3705.0
05/01/2002
1.1
1.1.4322.573
01/04/2004
2.0
2.0.50727.42
07/11/2005
3.0
3.0.4506.30
06/11/2006
3.5
3.5.21022.8
19/11/2007
4.0
4.0.30319.1
12/04/2010
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
.NET Framework 1.0
La prima versione del .NET Framework fu rilasciata il 13 febbraio
2002 per Windows 98, Windows NT 4.0, Windows 2000 e Windows XP.
Contemporaneamente fu rilasciato l'ambiente di sviluppo Visual Studio .NET.
.NET Framework 1.1
Rilasciato assieme a Visual Studio .NET 2003 e come aggiornamento a
sè stante, venne integrato nativamente in Windows Server 2003. Il .NET
Framework 1.1 apportò diversi aggiornamenti e modifiche alla versione
precedente:

integrazione di aggiornamenti di sicurezza e di correzioni di bug della
versione precedente;

diversi cambiamenti alle API;

supporto per i controlli per dispositivi mobili in ASP.NET;

.NET Compact Framework - una versione del framework per dispositivi
mobili;

supporto integrato per database ODBC e Oracle;

supporto al protocollo internet IPv6;
.NET Framework 2.0
Il .NET Framework 2.0 venne rilasciato da Microsoft il 27 ottobre
2005, in concomitanza con l'uscita di Visual Studio 2005. Questa versione è
l'ultima con supporto a Windows 2000, e precedenti, e può essere scaricata
dal sito Microsoft.
Le novità sono numerose e includono:

ampliamento e revisione di diverse API;

supporto alle architetture x64 (sia Intel che AMD);

una nuova API che permette maggiore controllo sul comportamento del
programma, in particolare per quanto riguarda il multithreading,
l'allocazione di memoria, il caricamento di assembly ecc.;

migliorie ai vari linguaggi .NET

nuovi controlli web e opzioni di personalizzazione per ASP.NET.
.NET Framework 3.0
Il .NET Framework 3.0, nome in codice WinFX, è stato introdotto da
Microsoft con Windows Vista, in cui è fortemente integrato in quanto include
una nuova gestione delle API di sistema. È comunque disponibile anche per
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Windows XP SP2, SP3 e Windows Server 2003. Il .NET Framework 3.0 è
incrementale rispetto alla versione 2.0; ciò significa che non comporta
cambiamenti all'architettura di base e ne mantiene il Common Language
Runtime, tuttavia apporta diverse migliorie e
correzioni
e
componenti

quattro
nuovi
[2]
Windows
Presentation
Foundation (nome in codice
Avalon): un nuovo sottosistema
grafico;

Windows
Foundation
Communication
(nome
in
codice
Indigo): un sottosistema per
creare applicazioni distribuite
con
supporto
alla
logica
transazionale;

Windows Workflow Foundation,
per fornire alle applicazioni una Questo sottosistema è parte della piattaforma .NET
tecnologia
di
progettazione,
Framework 3.0
esecuzione ed amministrazione di diagrammi di flusso

Windows CardSpace, per fornire alle applicazioni un metasistema di
identità dove gestire le password ed i dati riservati in generale,
presentando poi i dati aggregati in una sorta di carta delle identità
virtuali
.NET Framework 3.5
Il .NET Framework 3.5 è stato rilasciato con l'ambiente di sviluppo
Visual Studio 2008 il 19 novembre 2007. È ancora basato sul CLR della
versione 2.0, ma ne integra il Service Pack 1, che aggiunge nuove proprietà e
metodi, mantenendo la retrocompatibilità con le applicazioni scritte per la
versione 2.0. È disponibile come componente aggiuntivo per Windows XP SP2,
Windows Vista e Windows Server 2003 e 2008.
I cambiamenti principali comprendono:

Migliorie ai linguaggi, in particolare a C# 3.0 e Visual Basic 9:
o
Supporto al lambda calcolo e al metodo delle estensioni,
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
o

Tipi anonimi con inferenza statica;
Language Integrated Query (LINQ) che permette ai linguaggi .NET di
effettuare queries di dati, con sintassi simile a quella dell'SQL;

Nuove funzionalità di rete;

Funzionalità AJAX ad ASP.NET.
.NET Framework 4.0
Il .NET Framework 4.0 è stato rilasciato con l'ambiente di sviluppo
Visual Studio 2010 il 12 aprile 2010. I cambiamenti principali comprendono:

Supporto aggiuntivo per gli standard di settore

Nuovo supporto per applicazioni middle-tier.
[23]
.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
PRINCIPALI CARATTERISTICHE VISUAL STUDIO 2010
Microsoft Visual Studio 2010 rappresenta uno strumento essenziale
per lo sviluppo e la progettazione di applicativi di qualsiasi complessità, per
sistemi Windows e per il Web. E’ infatti annoverabile tra gli ambienti di
sviluppo integrati (IDE) più completi ed affidabili, favorendo una maggiore
produttività, una riduzione dei costi, la distribuzione Web e processi di
pianificazione ottimizzati. Vi è compatibilità con i principali linguaggi: C++,
C#, F#, HTML, XML, Visual Basic e ASP .NET.
L’interfaccia grafica di Microsoft Visual Studio 2010 è stata
semplificata per migliorare l’interazione degli utenti, mantenendo al tempo
stesso la possibilità di personalizzarla secondo le proprie esigenze operative.
Numerose le novità di questa edizione. Una pratica funzione di zoom è stata
inserita nell’editor, per migliorare la leggibilità del codice, e la selezione di un
simbolo durante la scrittura fa evidenziare tutte le ricorrenze trovate
nell’ambito del codice stesso.
E’
supportata la programmazione parallela e concorrente per
abbracciare le architetture multiprocessore, senza doversi relazionare con i
singoli thread. Strumenti dedicati al Cloud Computing, che si rivolgono in
particolare a Windows Azure, permettono l’ideazione di applicativi scalabili e
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
basati su uno schema ibrido. Il debugger offre tool quali filtri, chiamate e
breakpoint, condivisibili con altri sviluppatori per aiutare il lavoro dei team.
IntelliSense presenta opzioni per permettere un accesso più congruente ai
riferimenti dei linguaggi, restando sempre all'interno dell'editor. Le versioni
disponibili di Microsoft Visual Studio 2010 sono tre: Professional, Premium
e Ultimate, in grado di soddisfare ogni tipo di esigenza e tutte corredabili da
una sottoscrizione MSDN, il compendio ideale allo sviluppo per completezza e
disponibilità di software risorse tecniche, supporto e informazioni.
I miglioramenti apportati all'IDE di Visual Studio risultano i seguenti:

Miglioramenti visivi L'IDE è stato riprogettato per migliorare la leggibilità. Le linee e le
sfumature non necessarie sono state rimosse per ridurre il disordine.

Supporto di più monitoraggi Le finestre del documento, quali l'editor del codice e la finestra di
visualizzazione Progettazione possono essere posizionate all'esterno
della finestra dell'IDE. Ad esempio, è possibile trascinare l'editor del
codice fuori dall'IDE in modo da visualizzarlo affiancato alla finestra
di visualizzazione Progettazione.
STRUMENTI PER L'ESPLORAZIONE RAPIDA DEL CODICE

Editor di codice Il nuovo editor del codice facilita la lettura del codice. È possibile
applicare lo zoom avanti sul testo premendo CTRL ed eseguendo lo
scorrimento mediante la rotella del mouse. Inoltre, quando si fa clic su
un simbolo in Visual C# o Visual Basic, tutte le istanze di tale simbolo
vengono evidenziate automaticamente. Per ulteriori informazioni,
vedere Novità dell'editor di Visual Studio 2010.

Ricerca durante la digitazione La nuova funzionalità “Passa a” fornisce un supporto per la ricerca
durante la digitazione relativa a file, tipi e membri. Consente di
sfruttare
le
maiuscole
e
minuscole
camel
e
i
caratteri
di
sottolineatura per abbreviare il testo cercato. È ad esempio possibile
utilizzare "AOH" per cercare "AddOrderHeader". Per ulteriori
informazioni, vedere Procedura: cercare oggetti, definizioni e
riferimenti (simboli).
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP

Gerarchia di chiamata In Visual C# e Visual C++, Gerarchia di chiamata, consente di passare
da un membro ai membri che lo chiamano e a quelli da esso chiamati.
Questa funzionalità risulta utile per esplorare il codice orientato a
oggetti. Per ulteriori informazioni, vedere Gerarchia delle chiamate.
DEBUG
Una finestra Thread riprogettata fornisce operazioni di filtro, ricerca
ed espansione dello stack di chiamate e raggruppamento. Inoltre, è ora
possibile organizzare e cercare i punti di interruzione e condividerli con altri
sviluppatori.
Le nuove finestre Stack in parallelo e Attività in parallelo consentono
di visualizzare ed eseguire il debug di codice parallelo scritto in C++, C# o
Visual Basic.
CORRISPONDENZA DELLE FUNZIONALITÀ DELL'IDE CON QUELLE DEL
PROGETTO
Le funzionalità dell'IDE, ad esempio Aggiungi riferimento e Casella
degli strumenti, corrispondono ora alla versione di .NET Framework o di
Silverlight alla quale è destinato il progetto. Di conseguenza, tipi, membri e
controlli provenienti da assembly, destinati a una versione precedente di
.NET Framework, non sono disponibili in IntelliSense e generano errori di
compilazione in background. Se, ad esempio, il progetto è destinato a .NET
Framework 2.0 e si utilizza una funzionalità relativa al linguaggio non
supportata da .NET Framework 2.0, quali i tipi anonimi, l'IDE contrassegnerà
il codice come errore.
SUPPORTO TEST PRELIMINARE
In Visual Basic o Visual C#, l'IDE è ora in grado di generare stub di
codice per i nuovi tipi e membri, dal relativo utilizzo prima che vengano
definiti. Di conseguenza, è possibile scrivere prima i test e successivamente
generare il codice richiesto per compilarli. IntelliSense ora è fornito, inoltre,
di una modalità di suggerimento che non consente il completamento
automatico di un tipo o di un membro che non sia stato ancora definito.
GESTIONE DEL CICLO DI VITA DELLE APPLICAZIONI
L'applicazione client per la gestione del ciclo di vita delle applicazioni
è ora disponibile in tutte le versioni di Visual Studio (ad esclusione delle
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
versioni Express). La gestione del ciclo di vita delle applicazioni include:
controllo della versione, gestione degli elementi di lavoro, automazione della
compilazione, un portale del team, creazione di rapporti e business
intelligence, cartelle di lavoro di pianificazione Agile e gestione di test case:
tutto ciò che è necessario per collaborare a progetti di sviluppo del software.
La funzione di gestione del ciclo di vita delle applicazioni è inclusa in Visual
Studio 2010 con una licenza CAL (Client Access License). È possibile
acquistare licenze CAL (Client Access License) aggiuntive in base alle
esigenze.
GENERAZIONE DI CODICE E MODELLI DI TESTO
I modelli di testo possono essere creati e utilizzati in qualsiasi
versione di Visual Studio, senza che siano necessari altri componenti. La
generazione di qualsiasi tipo di file di testo nell'applicazione è stata
semplificata in Visual Studio 2010 con l'introduzione di modelli di testo preelaborato. Anche il supporto per la generazione di codice è stato migliorato
mediante una più efficace integrazione con il sistema di compilazione, in modo
che il codice sorgente generato sia sempre aggiornato a seguito di eventuali
modifiche al modello di origine.
PAGINA INIZIALE
La pagina iniziale di Visual Studio 2010 presenta un nuovo aspetto e
offre nuove funzionalità. Un'area di contenuto a schede si collega a una serie
di risorse didattiche selezionate e suddivise in categorie. Tali risorse
includono risorse MSDN, risorse della community e un news feed
personalizzabile. Un elenco Progetti recenti, migliorato, consente di
aggiungere o rimuovere progetti dall'elenco con un solo clic del mouse. È,
inoltre, possibile installare pagine iniziali personalizzate da Gestione
estensioni.
GESTIONE ESTENSIONI
È possibile individuare e installare estensioni di Visual Studio dall'IDE
facendo clic su Gestione estensioni nel menu Strumenti. Gestione estensioni
scarica e installa estensioni pubblicate dalla community dal sito Web di Visual
Studio Gallery, senza richiedere l'apertura del browser. Consente inoltre di
disinstallare, disabilitare o riabilitare estensioni installate.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
FINESTRA DI DIALOGO NUOVO PROGETTO
La finestra di dialogo Nuovo progetto, in Visual Studio 2010 include le
stesse funzionalità di ricerca e installazione di Gestione estensioni, ad
eccezione del fatto che vengono ricercati solo modelli di progetto e modelli
di elementi.
NUOVO VISUALIZZATORE DELLA GUIDA
Il Visualizzatore della Guida è stato completamente riprogettato per
Visual Studio 2010. È ora possibile visualizzare la documentazione online o
offline mediante il Web browser preferito, scaricare la documentazione più
aggiornata su richiesta, esplorare la documentazione utilizzando un sommario
semplificato, effettuare ricerche di contenuto specifico tramite un algoritmo
di ricerca full-text migliorato, nonché utilizzare un sistema F1 più semplice
per individuare contenuto specifico nell'attività sulla quale si sta lavorando.
LINGUAGGI VISUAL BASIC E C#
In Visual Studio 2010 i linguaggi Visual Basic e C# continuano a
evolvere in direzione di un'analogia funzionale. Ciò consente di scegliere un
linguaggio in base alle preferenze personali, dal momento che entrambi
dispongono delle stesse funzionalità. In questa sezione vengono elencate
alcune delle nuove funzionalità di C# e di Visual Basic.
LINGUAGGIO VISUAL BASIC
In Visual Basic sono state aggiunte nuove funzionalità che abbreviano
la sintassi e consentono di scrivere codice più velocemente. Sono incluse
proprietà implementate automaticamente, la continuazione di riga implicita,
inizializzatori di insieme ed espressioni lambda con una o più istruzioni.
Inoltre, Visual Basic supporta ora la distribuzione semplificata tramite
l'equivalenza dei tipi.
LINGUAGGIO C#
Le
nuove
funzionalità
nel
linguaggio
C#,
combinate
assieme,
consentono di semplificare la programmazione con le API di Microsoft
Office. Con gli argomenti denominati e facoltativi, non è più necessario
specificare valori per ogni parametro facoltativo quando si chiamano i metodi
COM. Grazie al supporto dinamico, è possibile fare riferimento a qualsiasi
oggetto, ad esempio i valori restituiti da API COM o da linguaggi dinamici,
senza utilizzare un cast di tipo esplicito. Proprietà indicizzate e modificatori
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
ref facoltativi semplificano l'accesso alle interfacce COM. Inoltre, il
supporto per l'equivalenza dei tipi consente di semplificare la distribuzione
incorporando i tipi dagli assembly di interoperabilità primari (PIA)
direttamente nell'assembly in uso. Per ulteriori informazioni, vedere Novità
di Visual C# 2010.
VISUAL F#
Visual Studio 2010 include F#, un nuovo linguaggio .NET Framework
che supporta la programmazione funzionale e la programmazione orientata a
oggetti e imperativa (procedurale) tradizionale. F# combina lo stile succinto,
espressivo e compositivo della programmazione funzionale con il runtime, le
librerie, l'interoperabilità e il modello a oggetti di .NET Framework. In altre
parole, si traggono i maggiori vantaggi da entrambi i paradigmi.
SVILUPPO OFFICE
Visual Studio 2010 include strumenti e modelli di progetto che è
possibile utilizzare per creare soluzioni che estendono Microsoft Office
2010 e Microsoft Office System 2007. È possibile sfruttare le nuove
funzionalità di sviluppo per i progetti di Office, ad esempio: il supporto
esteso della finestra di progettazione della barra multifunzione per
applicazioni Microsoft Office 2010 e la possibilità di creare soluzioni Office
che non richiedono assembly di interoperabilità primari di Office nei
computer degli utenti finali. È, inoltre, possibile utilizzare le nuove
funzionalità di distribuzione nei progetti di Office, ad esempio la possibilità
di distribuire soluzioni Office a tutti gli utenti di un computer.
ACCESSO E MODELLAZIONE DI DATI
.NET
Framework,
Framework
che
4
riducono
include
miglioramenti
ulteriormente
la
a
ADO.NET Entity
quantità
manutenzione richiesta per applicazioni basate sui dati.
di
codifica
e
In Visual Studio
2010, flessibilità migliorata e opzioni di personalizzazione negli strumenti di
ADO.NET Entity Data Model semplificano la creazione di applicazioni Entity
Framework
SVILUPPO WEB
Visual Studio 2010 include miglioramenti che, tra l'altro, accelerano la
creazione di codice e semplificano la distribuzione Web.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
CREAZIONE DI CODICE PIÙ VELOCE
Frammenti di codice - Visual Studio 2010 include frammenti di codice

per controlli HTML, JScript e ASP.NET per scrivere codice più
velocemente. È possibile inserire i frammenti da Gestione frammenti
di codice o direttamente da IntelliSense.
Sensibili miglioramenti in IntelliSense per JScript:


IntelliSense esegue ora analisi da due a cinque volte più veloci, in
modo da eliminare qualsiasi ritardo dell'elaborazione, anche in
caso di librerie di script di grandi dimensioni;

Sono, inoltre, accettati stili di codifica diversi in modo da
ottenere il supporto IntelliSense completo per quasi tutte le
librerie;

In IntelliSense i commenti relativi alla documentazione XML
vengono visualizzati durante la digitazione.
DISTRIBUZIONE WEB SEMPLIFICATA
Con Visual Studio 2010 è possibile inserire in un pacchetto e
pubblicare l'applicazione Web con un clic.

Pacchetti Web - Lo Strumento di distribuzione Web, noto anche come
MSDeploy, consente di inserire l'applicazione Web in un pacchetto per
la distribuzione a un server Web di Internet Information Services
(IIS). Un pacchetto Web è un file ZIP, o una struttura di cartelle,
che include tutti gli elementi necessari a un server Web per ospitare
l'applicazione. Include contenuto Web, impostazioni IIS, script del
database, componenti, impostazioni del Registro di sistema e
certificati. Lo Strumento di distribuzione Web è stato integrato in
Visual Studio e consente di creare pacchetti Web con un clic.

Pubblicazione con un clic - Con un semplice clic, è ora possibile
effettuare pubblicazioni in un server mediante lo Strumento di
distribuzione Web, FTP, copia delle cartelle o estensioni del server di
FrontPage.
Visual
Studio
archivia
tutte
le
informazioni
sulle
impostazioni, ad esempio: metodo di pubblicazione, informazioni
relative al server e credenziali utente.

Trasformazioni della configurazione Web - È possibile ora configurare
il progetto in modo da trasformare il file web.config durante la
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
distribuzione. Quando si distribuisce il progetto, le impostazioni in
web.config riflettono automaticamente le impostazioni presenti sui
server di debug, di gestione temporanea e di produzione.
ALTRE AGGIUNTE
Visual Studio 2010 include inoltre nuove funzionalità per ASP.NET,
nonché il supporto per le applicazioni Web basate su MVC.
PROGETTAZIONE WPF E SILVERLIGHT
In Visual Studio 2010 sono stati apportati diversi miglioramenti alla
finestra di progettazione, al fine di agevolare la creazione di applicazioni di
Windows Presentation Foundation (WPF) e Silverlight.
SUPPORTO PER SILVERLIGHT MIGLIORATO
In Visual Studio 2008 il supporto di progettazione per progetti
Silverlight è limitato a una finestra di anteprima di sola lettura. In Visual
Studio 2010, il supporto della finestra di progettazione è lo stesso sia per i
progetti Silverlight, sia per i progetti WPF. Per i progetti Silverlight, ad
esempio, è ora possibile utilizzare il mouse per selezionare e posizionare gli
elementi nell'area di progettazione.
ASSOCIAZIONE DATI MEDIANTE TRASCINAMENTO DELLA SELEZIONE PER
WPF
Dopo avere aggiunto un'origine dati al progetto, è possibile generare
controlli di Windows Presentation Foundation (WPF) associati a dati,
trascinando gli elementi dalla finestra Origini dati in WPF Designer.
VISUALIZZAZIONE DI OGGETTI WPF
Il debugger in Visual Studio 2010 include il visualizzatore della
struttura ad albero di WPF, che consente di visualizzare oggetti WPF in
modo più pratico. Quando si richiama il visualizzatore su un oggetto WPF
dalla finestra Espressioni di controllo, l'oggetto viene visualizzato come una
struttura ad albero e un elenco di proprietà.
SVILUPPO VISUAL C++
Di seguito vengono riportate alcune delle nuove funzionalità di Visual
C++.
Miglioramento dell'esperienza utente
Sono stati apportati numerosi miglioramenti per rendere l'IDE di
Visual C++ più efficiente nella risposta, specialmente quando si lavora con
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
applicazioni di grandi dimensioni. Molti componenti dell'IDE, ad esempio il
motore IntelliSense, analizzano ed elaborano ora i file in background. Non è
più necessario attendere che Visual Studio elabori nuovamente l'intero
progetto ogni volta che si modifica un file di intestazione, che si passa da un
elemento del progetto a un altro o che si riconfigura il progetto da una
modalità di debug a una di rilascio. La nuova versione di IntelliSense è più
accurata perché gestisce costrutti di codice C++ avanzati e macro definite in
base a determinate condizioni, che la versione precedente non era in grado di
gestire.
Segnalazione degli errori migliorata in IntelliSense
In versioni precedenti di Visual Studio può essere poco chiaro perché
il funzionamento di IntelliSense per una riga di codice risulti compromesso.
In Visual Studio 2010 l'IDE rileva codice che provocherà una perdita di
funzionalità di IntelliSense e sottolinea tale codice con una linea ondulata
rossa. Inoltre, l'IDE segnala qualsiasi errore IntelliSense nella finestra
Elenco errori. È possibile fare doppio clic sull'errore nella finestra Elenco
errori per visualizzare il codice che causa un problema.
Completamento automatico di #include
Nell'IDE viene ora supportato il completamento automatico per la
parola chiave #include. Quando si digita #include, l'IDE crea un elenco di
file di intestazione validi. Continuando a digitare, l'IDE filtra l'elenco in base
alla digitazione. In qualsiasi momento, è possibile selezionare il file che si
desidera includere. Ciò consente la rapida inclusione di file senza conoscerne
il nome esatto.
Impostazione della destinazione di compilatori e librerie specifici
In Visual Studio 2010 i progetti Visual C++ possono essere destinati al
set di strumenti in Visual Studio 2010 o al set di strumenti in Visual Studio
2008. Ciò consente di sfruttare i miglioramenti apportati all'IDE in Visual
Studio 2010 mentre si continua a utilizzare una versione precedente delle
librerie e del compilatore di Visual C++. Per passare da un set di strumenti a
un altro, è necessario modificare una sola proprietà nel file di progetto
Creazione guidata classe MFC
In Visual Studio 2010 viene reintrodotto Creazione guidata classe
MFC. È possibile avviare questa procedura guidata da un punto qualsiasi della
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
soluzione. Consente di aggiungere classi, messaggi e variabili senza la
necessità di modificare manualmente singoli file di codice.
Miglioramenti della compilazione
Nei progetti di Visual C++ è specificato un nuovo formato di file (con
estensione vcxproj) che sostituisce il formato obsoleto (con estensione
vcproj). Per compilare i progetti, ora è necessario utilizzare MSBuild.exe
anziché VCBuild.exe. MSBuild, la piattaforma di compilazione per Microsoft,
fornisce
molti
vantaggi,
tra
cui
una
diagnostica,
un'estensibilità
e
un'integrazione migliori.
Supporto di Gestione riavvio
Visual Studio supporta ora la funzionalità di gestione riavvio nelle
applicazioni di Microsoft Foundation Classes (MFC). Gestione riavvio è una
funzionalità di Windows che protegge gli utenti da perdite di dati accidentali,
mediante salvataggi regolari dei documenti aperti. Se l'applicazione si
arresta in modo imprevisto, Gestione riavvio riavvia l'applicazione e offre
all'utente la possibilità di ripristinare i dati salvati automaticamente. È
possibile
includere
questa
funzionalità
in
un'applicazione
esistente,
aggiungendo soltanto una riga di codice ed eseguendo la ricompilazione.
Grazie a Gestione riavvio, è possibile ridurre notevolmente le probabilità di
perdite fortuite dei dati nelle applicazioni in uso. Per ulteriori informazioni,
vedere Procedura: aggiungere il supporto di Gestione riavvio.
Nuove funzionalità del linguaggio C++0x
Sono state introdotte cinque nuove funzionalità nel compilatore di
Visual C++, che consentono di supportare lo standard C++0x: le espressioni
lambda, i riferimenti rvalue, le asserzioni in fase di compilazione,
l'individuazione del tipo di espressione e la deduzione del tipo automatica.
Programmazione parallela
È ora possibile scrivere programmi che distribuiscono il lavoro
attraverso più processori, senza dovere utilizzare direttamente i thread o il
pool di thread. Visual Studio 2010 include librerie di calcolo parallelo, sia per
la libreria di runtime C (CRT) che per .NET Framework. È possibile inoltre
eseguire il debug di applicazioni native e gestite tramite i nuovi strumenti
multithreading nel debugger di Visual Studio.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Programmazione parallela in .NET Framework
.NET
Framework
4 include
nuove
librerie
che
supportano
il
parallelismo delle attività e dei dati, un'implementazione parallela di LINQ to
Objects denominata Parallel Language Integrated Query (PLINQ) e diversi
tipi nuovi di dati per la sincronizzazione e la concorrenza. Tali librerie si
basano su una nuova utilità di pianificazione integrata con il pool di thread
.NET Framework.
Programmazione parallela in Visual C++
La libreria di runtime C include ora il runtime di concorrenza, ossia
un'infrastruttura di programmazione simultanea per C++.
Strumenti di programmazione parallela
Di seguito vengono illustrati alcuni miglioramenti apportati agli
strumenti per il supporto della programmazione in parallelo.

Debug
Il debugger include nuove finestre delle attività e a più stack, che
consentono di eseguire le operazioni seguenti:

Visualizzare un elenco di istanze di Task in esecuzione in
un'applicazione;

Visualizzare gli stack di chiamate per le istanze di Task;

Passare al codice dal debugger.
Sviluppo di SharePoint
In Visual Studio 2010, lo sviluppo di SharePoint è migliorato
significativamente. È possibile creare, modificare, sottoporre a debug,
inserire in pacchetti, nonché distribuire e attivare progetti SharePoint da
Visual Studio. Per la distribuzione del sito è sufficiente premere F5. È
possibile inoltre esplorare i siti di SharePoint tramite Esplora server/Esplora
database.
Strumenti di cloud computing
In Visual Studio 2010 è possibile installare e abilitare facilmente
Windows Azure Tools. Windows Azure Tools consente di compilare
applicazioni Web e servizi scalabili su Windows Azure. Per abilitare Windows
Azure Tools fare clic su Servizi cloud computing nella finestra di dialogo
Nuovo progetto. [24]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
DATABASE
MySQL è un Relational database management system (RDBMS),
composto da un client con interfaccia a caratteri e un
server, entrambi disponibili sia per sistemi Unix come
GNU/Linux che per Windows, anche se prevale un suo
utilizzo in ambito Unix.
Dal 1996 supporta la maggior parte della sintassi SQL e si prevede in
futuro il pieno rispetto dello standard ANSI. Possiede delle interfacce per
diversi linguaggi, compreso un driver ODBC, due driver Java, un driver per
Mono e .NET ed una libreria per python.
Il codice di MySQL venne sviluppato fin dal 1979 dalla ditta TcX
ataconsult, poi rinominata MySQL AB, ma è solo dal 1996 che viene
distribuita una versione che supporta SQL, prendendo spunto da un altro
prodotto: mSQL. MySQL AB è stata rilevata da Sun Microsystems nel 2008,
mentre nel 2010 quest'ultima è stata acquisita da Oracle.
MySQL svolge il compito di DBMS nella piattaforma LAMP, una delle
più usate e installate su Internet per lo sviluppo di siti e applicazioni web
dinamiche.
Storia
Il codice di MySQL era inizialmente di proprietà della società MySQL
AB, veniva però distribuito con la licenza GNU GPL oltre che con una licenza
commerciale. Fino alla versione 4.0, una buona parte del codice del client era
licenziato con la GNU LGPL e poteva dunque essere utilizzato per applicazioni
commerciali. Dalla versione 4.1 in poi, anche il codice del client è distribuito
sotto GNU GPL. Esiste, peraltro, una clausola estensiva che consente
l'utilizzo di MySQL con una vasta gamma di licenze libere.
Nel luglio 2007 la società svedese MySQL AB aveva 385 dipendenti in
numerosi paesi. I suoi principali introiti provenivano dal supporto agli
utilizzatori di MySQL tramite il pacchetto Enterprise, dalla vendita delle
licenze commerciali e dall'utilizzo da parte di terzi del marchio MySQL. Il 16
gennaio 2008 Sun Microsystems ha acquistato la società per un miliardo di
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
dollari, stimando il mercato del database in 15 miliardi di dollari. Il 20 aprile
2009 alla stessa Sun Microsystems è stata proposta l'acquisizione da parte
di Oracle per 7,4 miliardi di dollari. L'accordo, approvato dall'antitrust USA,
è poi passato al vaglio degli organi corrispondenti dell'Unione Europea,
preoccupati dal conflitto di interessi costituito dai database commerciali
Oracle rispetto a MySQL. Il padre di MySQL, Michael Widenius, ha lanciato
una petizione online per opporsi alla fusione. Nonostante ciò l'Unione Europea
ha dato parere favorevole, e l'acquisizione è stata completata il 27 gennaio
2010. Il software MediaWiki, che gestisce i siti del progetto Wikipedia, è
basato su database MySQL.
Amministrazione
Esistono diversi tipi di MySQL Manager, ovvero di strumenti per
l'amministrazione
di
MySQL.
Uno
dei
programmi
più
popolari
per
amministrare i database MySQL è phpMyAdmin (richiede un server web
come Apache HTTP Server ed il supporto del linguaggio PHP). Si può
utilizzare facilmente tramite un qualsiasi browser.
Alcune offerte di terze parti sono HeidiSQL , SQLYog o Toad for
MySQL. In alternativa la stessa MySQL AB offre programmi quali MySQL
Administrator (amministrazione del database, degli utenti, operazioni
pianificate, carico del server, ...) e MySQL Query Browser (esecuzione di
svariati tipi di query), MySQL Migration Toolkit per importare da altri
DBMS.
Per il disegno e la modellazione di database MySQL esiste MySQL
Workbench, che integra il disegno, la modellazione, la creazione e
l'aggiornamento di database in un unico ambiente di lavoro. In passato veniva
sviluppato anche MySQLcc (MySQL control center), sostituito da MySQL
Query Browser.
Sviluppo
Fino a qualche anno fa, lo sviluppo del programma era opera
soprattutto dei suoi sviluppatori iniziali: David Axmark, Allan Larsson e
Michael Widenius. Quest'ultimo era il principale autore del codice - oltre che
principale socio della società - e tuttora coordina il progetto, tra l'altro
vagliando i contributi che pervengono dai volontari. I contributi vengono
accettati a condizione che il loro autore condivida i diritti d'autore con la
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
società. Da luglio 2007 la società impiega un centinaio di sviluppatori a tempo
pieno.
VERSIONI MYSQL
Versione 3.23 - La prima versione alfa del ramo 3.23.x è stata
rilasciata nel luglio 1999. La prima versione di produzione è del gennaio 2001.
Nelle versioni 3.23.x sono stati aggiunti i tipi di tabella MyISAM (che
rimpiazza il vecchio Isam), HEAP (ora MEMORY), InnoDB e BDB. Inoltre sono
state aggiunte la ricerca fulltext e la replica dei database.
Versione 4.0 - Nell'ottobre 2001 è stata rilasciata la prima versione
alfa del ramo 4.0.x, mentre nel marzo 2003 è entrata in produzione. Le
aggiunte più significative sono:

una cache per le query;

le query di tipo UNION;

DELETE multi tabella;

migliorate le tabelle Merge perché supportino le INSERT e i campi
auto incrementanti;

limitazione delle risorse utilizzabili da ogni singolo utente;

variabili d'ambiente reimpostabili con il comando SET;

una libreria per incorporare le funzioni di MySQL in un altro
programma.
Versione 4.1 - La prima versione del ramo 4.1.x risale all'aprile 2003,
mentre nell'ottobre del 2004 è entrato in produzione. Le aggiunte più
significative sono:

le Subquery. Queste sono delle query SQL nidificate. Si ha dunque la
possibilità di scrivere:
SELECT * FROM tabella1 WHERE
colonna1 = (SELECT colonna1 FROM
tabella2);

dati geografici memorizzati secondo il modello OpenGIS;

i Prepared Statements;

le connessioni SSL/TLS;

set di caratteri impostabili a livello di database, tabella e colonna,
aggiunto il supporto per Unicode (UTF8 e UCS2);

commenti a livello di colonna.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Versione 5.0 - Il 22 dicembre 2003 viene rilasciata la prima
versione della serie 5.0, che è entrata in produzione il 19 ottobre 2005. Le
aggiunte più significative sono:

le viste, tabelle virtuali ricavate da una query SQL, aggiornabili
quando possibile;

le stored procedure, un vero e proprio linguaggio di programmazione
per interagire con i dati del database. Oltre ai soliti parametri di
ricerca e selezione è possibile inserire costrutti [IF ... THEN ...
ELSE], tanto per fare un esempio;

i trigger, istruzioni SQL che vengono lanciate automaticamente prima
o dopo l'esecuzione di determinate query su determinate tabelle;

INFORMATION_SCHEMA, un database virtuale che descrive la
struttura di tutti gli altri database; inoltre i comandi SHOW, che
anch'essi restituiscono informazioni sulla struttura dei database, sono
stati potenziati;

il tipo di dati BIT;

gestione appropriata del fuso orario (timezone);

i tipi di tabella Archive e Federated;

un'API ben strutturata per sviluppare nuovi tipi di tabelle.
Versione 5.1 - La prima alfa pubblica è uscita il 29 novembre 2005 e
attualmente è la versione stabile. Le principali nuove caratteristiche sono:

il partizionamento delle tabelle;

un'API per scrivere nuovi parser per le ricerche FULLTEXT;

gli eventi;

replica basata sui dati (anziché sulle query);

i log possono essere scritti in un database, oltre che nei file di testo;

supporto per Xpath;

campi AUTOINCREMENT e varie ottimizzazioni per le tabelle
ARCHIVE;

ClusterDB ora può scrivere i dati su disco, oltre che conservarli nella
RAM; supporta inoltre MontaVista;

ALTER TABLE, CREATE INDEX e DROP INDEX sono molto più
performanti.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Versione 5.2 - La versione 5.2 è in fase alfa e le principali novità
riguardano il nuovo storage engine Falcon e il backup online. Sul sito di
MySQL è scomparso ogni riferimento alla versione 5.2 e le novità che
avrebbe dovuto introdurre sono state pianificate per la versione 6.0.
Versione 5.4 - Si tratta del primo ramo sviluppato sotto l'egida della
Sun - ora Oracle. Non è quindi un caso che questa versione abbia avuto come
unico scopo l'ottimizzazione del server su sistemi Solaris e su hardware
SPARC, nonché l'ottimizzazione di InnoDB - in particolare della sua
configurazione di default, che prima aveva notevoli difetti.
Versione 5.5 - Una versione di preview, pensata per testare alcune
funzionalità prima dell'uscita della versione 6.0 stabile.
Versione 5.6 - Una versione di preview, pensata per testare alcune
funzionalità prima dell'uscita della versione 6.0 stabile.
TIPI TABELLE MYSQL (storage engine)
In MySQL una tabella può essere di diversi tipi (o storage engine).
Ogni tipo di tabella presenta proprietà e caratteristiche differenti
(transazionale o meno, migliori prestazioni, diverse strategie di locking,
funzioni particolari, ecc). Esiste poi un'API che si può utilizzare per creare in
modo relativamente facile un nuovo tipo di tabella, che poi si può installare
senza dover ricompilare o riavviare il server.
Storage Engine ufficiali
I tipi di tabella predefiniti sono:

MyISAM;

InnoDB (transazionale, sviluppata da InnoBase Oy, società ora
comprata da Oracle);

Memory (una volta si chiamava Heap);

Merge;

NDB, o ClusterDB (introdotta nella 5.0);

CSV (introdotta nella 5.1);

Federated (introdotta nella 5.0);

Archive (introdotta nella 5.0);

Blackhole (introdotta nella 5.0);

Falcon (transazionale, è ancora in sviluppo);

Maria (un "MyIsam a prova di crash"; è ancora in sviluppo);
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Storage Engine Obsoleti

Isam (non più supportata; era il motore di default prima di essere
sostituita da MyIsam);

BDB (transazionale, sviluppata da SleepyCat, società ora acquisita da
Oracle; dalla versione 5.1.12 non è più presente in MySQL);

Gemini (non più supportato e non più compatibile con le API di MySQL
da molti anni, una volta era importantissimo in quanto motore
transazionale; era prodotto dalla NuSphere, la quale non ha mai
rispettato la licenza GPLv2 di MySQL e in tribunale ha tentato di
negarne la validità giuridica, salvo poi accordarsi con MySQL per il
pagamento dei danni economici e ritirare il prodotto dal mercato);
Storage Engine prodotti da terze parti
Esistono anche storage engine prodotti da terze parti. Eccone alcuni:

PrimeBase XT Engine - Motore transazionale progettato per
applicazioni web ad alta concorrenza;

solidDB - Motore transazionale;

RitmarkFS - Permette di accedere al filesystem in lettura e in
scrittura tramite comandi SQL, supporta anche la replica del file
system;

Distributed Data Engine - Motore per dati distribuiti, per gestire
meglio il carico di lavoro;

mdbtools - Permette di leggere e scrivere un file .mdb (Access).
Una volta esisteva il tipo Gemini, sviluppato dalla NuSphere. Poiché
però il suo codice non è mai stato rilasciato, MySQL ha intentato una causa
legale, in seguito alla quale lo sviluppo e il supporto per Gemini sono cessati.
Compatibilità
MySQL, essendo scritto in linguaggio C e C++, è disponibile su molti
differenti sistemi operativi tra cui AIX, AmigaOS, BSDi, Digital Unix,
FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, Novell NetWare,
OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO
UnixWare, SGI Irix, Tru64, Windows 95, Windows 98, Windows NT,
Windows 2000, Windows XP, Windows 2003, Windows Vista.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Le piattaforme di riferimento sono Linux e Solaris. La documentazione
di MySQL offre comunque un aiuto per chi avesse bisogno di provare a
compilare il software su qualsiasi sistema operativo discretamente diffuso.
MySQL utilizza anche i tool automake, autoconf e libtools per aumentare la
compatibilità.
Le tabelle di tipo BDB funzioneranno solo sui seguenti sistemi
operativi: GNU/Linux 2.x Intel, Solaris (SPARC and x86), FreeBSD 4.x/5.x
(x86, sparc64), AIX 4.3.x, SCO OpenServer, SCO UnixWare 7.1.x
Sono disponibili dei driver per i linguaggi C, C++, Eiffel, Java, Perl, PHP,
Python, Ruby, Tcl e per le piattaforme Mono e .Net.
Infine, il linguaggio SQL di MySQL comprende numerose estensioni
che sono tipiche di altri DBMS, quali PostgreSQL, Oracle e Sybase. In questo
modo le query non standard scritte per altri DBMS in alcuni casi
funzioneranno senza problemi.
TESI DI LAUREA: PROGETTAZIONE
[25]
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
PROGETTAZIONE E IMPLEMENTAZIONE
Snom One è un sistema di telefonia VoIP (Voice-over-IP); è il primo
passo nell’evoluzione della gamma di prodotti Snom ed è una soluzione rivolta
ai clienti che desiderano che tutte le funzioni dei telefoni snom siano
supportate da un singolo sistema completo.
Il sistem Snom 320 - Telefono VoIP basato su SIP – su cui si è
concentrata la mia attività, è ideale per l'ufficio e per chi telefona molto. Lo
Snom 320 é un telefono SIP professionale che fornisce buone prestazioni, é
dotato del vivavoce (full duplex) e della funzione di conferenza a tre.
Il software si compone di tre moduli.
IL PRIMO MODULO si
occupa
di
ascoltare
gli
eventi prodotti dai telefoni
TCP/IP
Snom e di registrarli sul
database, che può risiedere
Server
TCP/IP
su una macchina locale o
remota,
e
li
secondo
TCP/IP
DataBase
registra
determinati
criteri. Questo modulo è
stato implementato come
servizio
di
Windows
(Windows service); quindi,
parte all’avvio di Windows e rimane in esecuzione. Un’ulteriore funzionalità di
questo servizio è data dalla possibilità di registrarsi, presso il servizio
stesso, e poter ricevere notifiche sullo stato dei telefoni. La registrazione
avviene tramite l’invio di una stringa sul protocollo HTTP. Grazie a questa
possibilità di utilizzo, può essere usato per lo sviluppo di futuri applicativi
riguardanti, appunto, gli Snom.
IL SECONDO MODULO riguarda la gestione delle chiamate, cioè
consente, collegandosi al database dove il servizio registra gli eventi, di
visualizzare le chiamate secondo priorità impostate dall’utente. Si ha la
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
possibilità di visualizzare le chiamate ricevute, perse ed effettuate e, quindi,
ordinarle
e
ricerche
fare
particolari
impostando
vincoli
temporali.
Il
software, per ogni
chiamata, visualizza i
dettagli,
quali:
durata
della
chiamata, numero in entrata o in uscita e, perciò, fa il resoconto del numero e
della durata complessiva delle chiamate visualizzate. Si ha, tuttavia, la
possibilità di visualizzare per ogni singolo utente la durata complessiva delle
chiamate (effettuate e ricevute) secondo vincoli temporali. Il software é
indipendente e può anche essere eseguito su macchine differenti, rispetto a
quella dove è in esecuzione il servizio del primo modulo.
IL TERZO MODULO permette l’integrazione tra il telefono snom e il
noto software SugarCRM. Tale modulo si interfaccia da una parte con il primo
modulo, e sfrutta il servizio di ricezione delle notifiche sullo stato dei
telefoni, e dall’altra parte con il Database (MySQL) di SugarCRM e permette
l’apertura rapida dei tikets. In particolare, il primo modulo manda le notifiche
al PC, sul quale è in esecuzione il
terzo
modulo,
telefono
relative
che
si
al
vuole
monitorare; quando arriva una
chiamata sul PC, appare una
finestra
che
riconosce
il
cliente, qualora il numero risulti
nel
dabase
di
sugarCRM,
e
permette di aprire un tiket
relativo
al
problema
riscontrato. Se il numero del
cliente
non
si
trova
nel
database, questo modulo offre la possibilità di registrazione dello stesso,
attraverso una procedura guidata.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
SugarCRM
è
il
software Open
Source
più
conosciuto, e diffuso per la gestione delle informazioni,
che un’azienda genera nei rapporti con i propri clienti o
potenziali
clienti.
Si
tratta
di
un'applicazione
estremamente flessibile, pensata per le medie imprese,
che funziona tramite il normale programma che si usa
per navigare. Disegnato per essere di semplice implementazione, il prodotto
permette di gestire in modo completo:

Le anagrafiche clienti, i contatti e i potenziali clienti;

La forza vendita aziendale;

Le campagne di marketing, comprese quelle via email tramite un modulo
specifico;

I ticket di supporto e il knowledge base aziendale;

La registrazione sul cliente delle attività ordinarie, come chiamate,
lavori, appuntamenti, documentazione ecc.;

Progetti aziendali e gruppi di lavoro.
Il tutto è strutturato in un sistema, che permette di gestire le
informazioni da qualsiasi computer connesso ad internet.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
[26]
TELEFONI SNOM
CON TECNOLOGIA
VOIP
CARATTERISTICHE DEL TELEFONO VOIP
Display e tasti
 Il display LCD grafico a due righe e l'interfaccia utente dotata di
menu semplificano la gestione delle funzioni.
 12
tasti
offrono
programmabili dotati
accesso
veloce
agli
di LED
interni
e
consentono di configurare singolarmente gli
indicatori luminosi. L'elenco dei chiamanti e
la
rubrica
telefonica
contengono
rispettivamente 100 voci, nuovi dati si inseriscono facilmente.
Caratteristiche Principali:

Display grafico a due righe

47 Tasti, 13 LEDs

12 account SIP ("linee")

12 tasti funzione liberamente configurabili

Vivavoce

Doppio collegamento ethernet

Alimentazione ethernet (PoE

Collegamento headset

Tastiera aggiuntiva con 42 tasti funzione programmabili

SIP RFC3261

Sicurezza: SIPS/SRTP, TLS

STUN, ENUM, NAT, UPnP, ICE

Codecs: G.711, G.729A, G.723.1, G.722, G.726, GSM 6.10 (Full rate)

Supporto della lingua locale

Consumo energetico ridotto

Colori disponibili: nero.
Ulteriori funzioni, quali il blocco delle chiamate anonime, il download di
suonerie, la risposta automatica alle telefonate o la funzione "pausa" sono
solo alcune delle caratteristiche che garantiscono il comfort dell'utente
incrementandone, nel contempo, la produttività. Applicazioni aggiuntive, come
la soluzione CTI aggiungono funzionalità all'apparecchio.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
L'installazione dello snom 320 é semplice. È possibile impostare il
telefono sia attraverso il menu dell'apparecchio sia in modalità remota. Tra i
numerosi vantaggi, va annoverato l'elevato grado di compatibilità con
componenti SIP di altri produttori. Il supporto di STUN, NAT, ENUM e le
altre numerose funzioni ne consentono un impiego flessibile dietro proxy
locali, centralini IP PBX o servizi di hosted VoIP.
Per quanto riguarda la sicurezza, lo snom 320 supporta lo standard
SRTP, che protegge contro l'intercettazione delle telefonate, e il TLS che
protegge contro il furto dei dati dell’account SIP.
La funzione di conferenza a tre integrata nello snom 320 offre una
qualità audio eccezionale, con un ritardo minimale.
Con il consumo energetico più basso della sua categoria (1,0 - 1,5
W/h in stand-by) e l'alimentazione tramite il cavo ethernet (PoE - Power over
Ethernet), lo snom 320 é un vero contributo alla riduzione del TCO.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
[27]
CON TECNOLOGIA
VOIP
DIAGRAMMA E DETTAGLIO DELLE CLASSI

PRIMO MODULO
La classe CommandDb si occupa
della interazione con il Database MySQL
dell’applicazione. Attraverso i suoi metodi,
è possibile
registrare
sul
Database
gli
eventi
(es.:
ricezione
chiamate,
inoltro
chiamate,
trasferimento di chiamate, etc.) provenienti
da tutti i telefoni Snom.
La classe Notifica contiene tutte le
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
informazioni inerenti il tipo di evento verificatosi, a quale telefono fa
riferimento e a chi è destinato.
La classe Program genera una
istanza del programma e lo fa partire.
La classe ProjectInstaller
atta
è
a
configurare
il
Software,
in modo da
poter
eseguire
una
installazione
tipica
di
Windows per l’installazione di servizi.
La classe Server sta in ascolto per
catturare tutti gli eventi generati dai telefoni,
su protocollo TCP, e si occupa di memorizzare
tutti i dati sul
Database,
attraverso
metodi
i
della
classe
CommandDb,
nonché
di
inoltrare le notifiche di eventi a tutti gli
indirizzi IP registrati in una lista, su
protocollo UDP.
La
classe
Service1
permette
di
configurare alcuni parametri di installazione
del servizio.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
La classe SettingDB permette di
configurare i dati di accesso al Database,
quali: l’Ip, il nome e le credenziali di
accesso.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP

SECONDO MODULO
La classe CentralinoSnom realizza la GUI
(Interfaccia
Utente
Grafica)
principale,
attraverso
cui
è
possibile
accedere alle
funzionalità
principali del
software.
La
classe
CommandDB
permette,
attraverso i
suoi metodi,
di
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
interrogare il Database con richieste specifiche, quali leggere chiamate:
effettuate, ricevute, perse, totali effettuate, totali ricevute, trasferimenti,
etc.. Attraverso un altro metodo si possono registrare, tuttavia, i telefoni
Snom sul Database, per poter poi effettuare richieste di informazioni sugli
eventi, relativi ai telefoni registrati.
La classe CommandSnom permette il controllo di un telefono Snom, in
modalità remota, ad esempio: comporre
un numero, navigare il menu, cambiare le
impostazioni,
etc. (come se
si
interagisse
direttamente
col telefono).
La
classe
Diagnostica
consente
di
riscontrare
eventuali
anomalie
di
funzionamento
nel Software.
La
classe Evento
consente
di
mantenere
i
dettagli,
estratti
Database,
ogni
dal
di
singolo
evento
identificato
da
un
ID
univoco.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
La classe ImpostazioniForm
offre la possibilità di configurare i
parametri di accesso al Database,
attraverso un’interfaccia grafica,
ed, inoltre, permette di settare i
parametri di un telefono Snom
affinchè possa inoltrare gli eventi
ad
un
server
sul
quale
è
in
esecuzione il servizio (modulo 1), in
maniera rapida.
La
classe
InserimentoUtenteForm permette
di inserire un utente, che utilizza il
telefono Snom, nel Database.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
La classe Notifica contiene tutte le
informazioni inerenti il tipo di evento
verificatosi, a quale telefono fa riferimento
e a chi è destinato.
La
classe
Programm
genera una
istanza del
programma
e
lo
fa
partire.
La
classe Resources contiene tutti i riferimenti
ai
componenti
grafici
utilizzati
nell’interfaccia utente.
La
classe
Server
viene
utilizzata in
modalità
diagnostica
ed è simile
alla
classe
server
del
modulo 1.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
La classe Setting consente
di
configurare
i
parametri
di
accesso, sia al database degli
utenti Snom che al Database di
SugarCRM.
La classe SnomController
si
occupa
dell’interfaccia
della
grafica,
gestione
per
il
controllo remoto di un telefono
Snom.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP

TERZO MODULO
Le
classi:
accaunt,
calls,
calls_contact, calls_users, cases,
contacts, users, sono oggetti di
tipo entità che rappresentano le
tabelle con i medesimi nomi del
Database di SugarCRM.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Attraverso
dette
classi,
si
mantengo no i dati provenienti dal
Database, o da inserire nel Database.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
La
classe
Ascoltatore si occupa di
ascoltare,
mediante
il
notifiche
provenienti
protocollo
dal
modulo
UDP,
le
1
di
e
comunicare l’evento ai livelli più alti. Essa
implementa l’interfaccia IObservable.
La classe Gestione Chiamata è atta a
gestire le chiamate
in
ingresso-
Quando si verifica
un
evento
di
notifica
di
chiamata,
essa
identifica
il
chiamante,
se
presente
nel
Database,
e
presenta
una
interfaccia utente che dà la possibilità di
scegliere
l’azione
particolare:
riconosce
da
intraprendere.
In
se
il
chiamante, si potrà
aprire rapidamente
un ticket associato
ad esso, attraverso
il tasto apri ticket;
se
non
riconosce
il
chiamante,
permette
all’operatore di registrare il chiamante nel
Database di SugarCRM; oppure, come terza
alternativa, attraverso il tasto identifica si può
identificare il chiamante ed aprirgli un ticket.
La classe Apertura ticket si occupa
della gestione dell’interfaccia utente, , per
l’apertura di un ticket relativa ad un cliente;
quindi, sarà possibile inserire una descrizione del problema riscontrato e
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
registrare il ticket sul Database di SugarCRM.
La
classe
Registrazione
Contratto gestisce
l’interfaccia
utente, nella quale
è
possibile
registrare
un
utente
nel
Database
di
SugarCRM con le
relative
informazioni
personali
(nome,
cognome,
indirizzo,
numeri
di
telefono, etc.).
La
classe
sugarcrm
Entities
gestisce
la
persistenza dei
dati sul Database di SugarCRM. Con i suoi
metodi è possibile leggere, scrivere sul
Database,
effettuare
ricerche
e
sincronizzare i dati con gli oggetti entità
(sopra menzionati).
La
l’interfaccia
classe
di
userInterface
partenza
del
è
modulo,
attraverso la quale è possibile avviare e
chiudere completamente il programma (modulo
3). Essa implementa l’interfaccia IObserver.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
SCHEMA DATABASE
Nella figura, è raffigurato lo schema del DataBase MySQL, utilizzato
per memorizzare tutti i dati degli eventi generati dai telefoni.
Il DataBase è costituito da tre tabelle: la TABELLA EVENTI, la TABELLA
VARIABILI e la TABELLA UTENTE.
La TABELLA EVENTI
VARIABILI, ciò
ha una relazione uno a molti con la TABELLA
significa che più variabili possono fare riferimento a un
singolo evento.
La TABELLA EVENTI è composta da quattro campi. Il campo ID è un
campo chiave (primary key) ed identifica in modo univoco un evento; esso è
generato da una funzione di MySQL “SELECT UUID ( )” che restituisce una
stringa alfanumerica di trentasei caratteri. Nel campo Utente viene
memorizzato il numero del telefono che ha generato l’evento. Nel campo Tipo
si memorizza il tipo dell’evento (chiamate in ingresso, chiamate in uscita,
etc.). Nel campo Data si memorizza tempo e data dell’evento (il preciso
istante in cui viene generato l’evento).
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
La chiave primaria della TABELLA VARIABILI è costituita da due campi:
il campo variabile, che individua il nome della stessa, ed il campo eventi_ID,
che fa riferimento all’ID della tabella eventi; il campo valore contiene il
valore di una variabile associata ad un evento.
Nella TABELLA UTENTE il campo telefono costituisce la chiave primaria
della Tabella e individua il numero telefonico; nel campo nome si memorizza il
nome dell’utente che utilizza il telefono; nel campo cognome si memorizza il
cognome dell’utente che utilizza il telefono; nel campo IP, come suggerisce la
sigla, viene memorizzato l’IP statico di ogni telefono; il campo ID_sugarCRM,
infine, individua l’identificativo dell’utente nel DataBase di SugarCRM.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
SCREENSHOT
Screenshot SECONDO MODULO
Sulla sinistra si visualizza l’elenco dei telefoni registrati, sui quali è
possibile ottenere inforazioni sulle chiamate (effettuate, ricevute e perse).
In basso è possibile impostare un intervallo temporale di ricerca; con i tasti
in alto a sinistra è possibile: registrare un telefono nel DataBase per poter
poi ottenere informazioni sulle relative chiamate, attivare l’applicativo per il
controllo remoto di un telefono Snom e accedere alle impostazioni di
configurazione del software.
Attraverso
questo pannello si può
registrare
telefono
un
e
l’utente
che lo utilizza, con
l’IP
che
riferimento
fa
al
telefono Snom.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Con questo pannello si può controllare in modalità remota un telefono
Snom, digitando l’IP del telefono (nel campo IP telefono e premendo il tasto
connetti).
A
connessione
avveenuta
apparirà
display
un
al
sopra
di
dei
quattro
tasti
neri, in cui si
potrà
visualizzare in
tempo reale lo
stato
del
telefon
e,
quindi, si potrà
interagire con
esso.
Attraverso questo pannello si possono configurare i parametri per la
connessione al DataBase.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Si possono impostare gli Action URL Setting di un telefono Snom
digitando l’Ip del telefono e l’Host a cui devono essere inoltrate le notifiche
degli eventi.
Screenshot TERZO MODULO
Con questo pannello si può impostare l’IP del telefono, del quale si
vogliono ricevere le notifiche, e l’IP del Server su cui è in esecuzione il
servizio.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Quando il telefono da cui vogliamo ricevere le notifiche riceve una
chiamata,
il
sofware presenta
questo pannello a
schermo,
riconoscendo
il
chiamante,
se
presente
nel
DataBase,
quindi,
attraverso il tasto
Apri
Ticket,
è
possibile
associaregli
un
ticket.
Quando il telefono da cui vogliamo ricevere le notifiche riceve una
chiamata,
il
sofware
presenta
questo pannello a
schermo,
e,
non
riconoscendo
il
chiamante,
visualizza
numero;
il
quindi
è
possibile
registrare
il
chiamante,
attraverso il tasto
registra
contatto,
oppure
identificarlo,
attraverso il tasto identifica, che fa apparire una lista con tutti i contatti
presenti nel DataBase di SugarCRM al fine di aprirgli un ticket.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
Attraverso
questa
interfaccia
utente si apre
il
ticket,
inserendo
il
titolo (oggetto
del ticket) e la
descrizione del
problema.
Attraverso
questo
pannello
viene effettuata
la
registrazione
di un contatto.
Il programma rimane sempre in esecuzione, finché non si decide di
terminarlo completamente dalla
sua
interfaccia
principale.
Il
suo
utente
stato
di
attività si può notare nella barra delle applicazioni di Windows (in basso a
destra), tramite un’icona raffigurante un telefono.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
CAPITOLO IV
TESTING E CONCLUSIONI
L'architettura del modello ha una forte connotazione modulare, tale
aspetto verrà rimarcato in questa fase grazie ad un riscontro effettivo del
suo funzionamento tramite test.
Il sistema è stato testato per circa un mese. L’installazione del
servizio (Modulo 1) è stata effettuata su una macchina virtuale con
connessione permanente alla rete e, sulla stessa macchina, è stato anche
installato il DataBase relazionale MySQL Community Server 5.1, insieme al
supporto MySQL-Connector/Net 6.3.4 (che permette la comunicazione tra il
sofware e il database). Quindi, sono stati configurati n°6 telefoni Snom
(tramite protocollo Sip), di cui n°2 della serie 320 e n°4 della serie 300. In
seguito, gli stessi sono stati configurati, in modo da inoltrare gli eventi, con
le relative variabili, al Server su cui era in esecuzione il servizio.
Dettaglio variabili
$local
the SIP URI of callee
$remote
the SIP URI of caller
$active_url
the SIP URI of the active outgoing identity
$active_user
the user part of the SIP URI for the active outgoing identity
$active_host
the host part of the SIP URI for the active outgoing identity
$csta_id
CSTA ID
$call-id
the call-id of the active call
$display_local
used to display the name of callee
$display_remote
used to display the name of caller.
$expansion_module
used to show which Expansion Module do you use and
$active_key
the Function Key (e.g. P1, P5, P32,..) associated with a call.
$phone_ip
the current ip address of the phone
Durante la fase di testing il software si è rivelato molto efficiente
nel registrare gli eventi, provenienti dai telefoni sul DataBase. Durante la
fase di testing sono state risolte le anomalie di funzionamento emerse, fino
ad ottenere un’ottima affidabilità del software.
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
La fase di testing consegna un modello funzionante e testato,
permettendo di godere di un sistema VoIP in grado di essere sia robusto che
versatile.
Il software si presta bene allo sviluppo di futuri moduli, grazie alla
possibilità di registrarsi, presso il servizio stesso, e poter ricevere notifiche
sullo stato dei telefoni. [28]
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
BIBLIOGRAFIA
[1] Voice over IP, AA.VV.
http://it.wikipedia.org/wiki/Voice_over_IP
[2] VoIP e Asterisk, AA.VV.
http://it.wikibooks.org/wiki/VoIP_e_Asterisk
[3] Tecnologia VoIP: banda larga, IP e protocolli, AA.VV.
http://www.voipblog.it/voip/tecnologia-voip
[4] VOIP: Voice over Internet Protocol, Ing. Francesco Amendola-Nextel
Italia s.r.l.
http://www.ingamendola.com/docs/amendola_isacaroma_VoIP_2007200
6.pdf
[5] Introduzione alle tecnologie VoIP, Franco Callegati e Aldo Campi D.E.I.S.
Università di Bologna II Facoltà di Ingegneria (Cesena)
http://www-tlc.Deis.Unibo.it/Didattica/CorsiCE/RetiLS/
RetiLS_CE
/11_VoIP.pdf
[6] La Tecnologia VoIP e i protocolli di supporto H.323 e SIP, Ing. Gianluca
Aloi D.E.I.S. Università della Calabria
http://icampus.ingegneria.unical.it/claroline/document/goto/index.php/1
5-VOIP_H.323_SIP.pdf?cidReq=EVOIP
[7] VoIP Features - Abundant and Useful, Nadeem Unuth
http://voip.about.com/od/voipfeatures/a/featuresvoip.htm
[8] Not_Only_Voice,Nadeem-Unuth
http://voip.about.com/od/notonlyvoice/Not_Only_Voice.htm
[9] Cos'è H.323?, AA.VV.
http://www.slidefinder.net/c/cos_323/8523420
[10]Istruzioni per l’utilizzo coordinato della Telefonia su IP nel GARR,
Antonio Pinizzotto IIT-CNR, Pisa
http://www2.garr.it/ws6_slide/00-pinizzotto.pdf
[11]Asterisk e dintorni-La guida Italiana al VoIP Open Source, Diego Gosmar,
Giuseppe Innamorato, Dimitri e Stefano Osler
Apogeo srl
Socio Unico Giangiacomo Feltrinelli Editore srl
ISBN 88-503-1041-2
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
http://www.sbt.ti.ch/dep/cplo/voip.pdf
[12]SER, AA.VV.
http://en.wikipedia.org/wiki/SIP_Express_Router
[13]The SIP Express Router An Open Source SIP Platform,
Y. Rebahi, D. Sisalem, J. Kuthan, A. Pelinescu-Oncicul, B. Iancu, J. Janak,
D. C. Mierla
http://www.iptel.org/~dor/papers/Rebahi1004_OSIP.pdf
[14]Guida alla tecnologia VoIP ad alta disponibilità.Come MySQL Cluster
supporta le piattaforme VoIP ad alta disponibilità, AA.VV.
http://www.pubblicaamministrazione.net/file/whitepaper/000016.pdf
[15]OpenSER, AA.VV.
http://en.wikipedia.org/wiki/OpenSER
[16]Supporto di Enum, NAT e audioconferenze per
architettura SIP-Sapientel e creazione del wiki
per utenti e sviluppatori, Gaetano Sorrentino
http://labtel.ing.uniroma1.it/tesi/gs/Tesi%20Sorrentino.pdf
[17]Welcome to Kamailio (OpenSER) - the Open Source SIP Server, AA.VV.
http://www.kamailio.org/mos/Frontpage/Itemid,1/
[18]KAMAILIO (OPENSER) Devel Guide, Daniel-Constantin Mierla ElenaRamona Modroiu
http://www.asipto.com/pub/kamailio-devel-guide/#c01osss
[19]Kamailio Start to Finish, Chris Sherwood
http://www.sureteq.com/asterisk/kamailio_start_to_finish.htm#6.0__Kamailio_Installation
[20]Opensips, AA.VV.
http://it.wikipedia.org/wiki/Opensips
[21] Building Telephony Systems with OpenSIPS 1.6, Flavio E.Goncalves
Published by Packt Publishing Ltd.
Birmingham, B27 6PA, UK.
ISBN:978-1-849510-74-5
[22] Visual Studio .NET
http://it.wikipedia.org/wiki/Visual_Studio_.NET
[23] .NET Framework
http://it.wikipedia.org/wiki/.NET_Framework
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
[24] Visual Studio 2010
http://msdn.microsoft.com/it-it/library/dd547188.aspx
[25] MySQL
http://it.wikipedia.org/wiki/MySQL
[26] SugarCRM
http://www.sugarsupport.it/
[27] Telefoni Snom
http://www.snom.com.it/
[28] Action URLs/Runtime Variables
http://wiki.snom.com/Action_URLs/Runtime_Variables
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP
TESI DI LAUREA: PROGETTAZIONE
E IMPLEMENTAZIONE DI SERVIZI E FUNZIONI PER
TELEFONI SNOM
CON TECNOLOGIA
VOIP