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