SlideShare uma empresa Scribd logo
1 de 80
Baixar para ler offline
UNIVERSIT`A STATALE DEGLI STUDI DI MILANO
Facolt`a di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea Triennale in Informatica
REALIZZAZIONE DI UN SERVIZIO DI
CONFERENZA TELEFONICA/VoIP
MULTIUTENTE MEDIANTE SOFTWARE
OPEN SOURCE “ASTERISK”
Relatrice Interna:
Prof.ssa Elena PAGANI
Correlatore Esterno:
Dott. Michele VALZELLI
Elaborato finale di: Ilaria PODDINE
Matricola: 654331
Anno Accademico 2006/2007
A nonna Iride
e alla mia famiglia.
Ringraziamenti
Il primo ringraziamento va a nonna Iride, per aver saputo premere la leva
giusta affinch´e mi decidessi a completare i miei studi in tempi ‘umani’...
Mamma non finir`o mai di ringraziarla, per avermi sempre spronato ad andare
avanti negli studi: solo ora mi rendo conto di quanto sia stata importante
questa sua insistenza. La ringrazio poi per tutti i sacrifici concreti e morali
che ha compiuto, insieme a pap`a, per permettermi di arrivare dove sono ora.
Da adolescente devo esser stata un’osso duro, ma con questa Laurea spero di
essermi un po’ riscattata...
Ringrazio pap`a per avermi ‘iniziato’ al mondo dell’informatica, portando a
casa il primo computer quando avevo appena 2 anni... Ancora lo ricordo,
quel ‘cosone’ sulla moquette gi`u a Cupra, e poi le montagne di fogli a buchi
per disegnare: quante volte mi son chiesta cosa volesse dire ‘GOTO’ o ’WHI-
LE’! E poi la prima volta che ho visto il mouse ad uno SMAU... era tutto
cos`ı entusiasmante!! E il bello `e che lo `e tutt’ora!
E grazie anche a mio fratello Marco e mia cognata Paola che mi hanno sem-
pre supportato, consigliato e aiutato. Ma soprattutto a Marco che a forza di
suonare all’infinito le stesse canzoni dei Beatles mi ha insegnato ad apprez-
zare ogni singolo strumento di ogni singolo brano... nella musica cos`ı come
nella vita.
Un ringraziamento particolare va alla Professoressa Elena Pagani, per la
sua disponibilit`a, per la sua pazienza e per i preziosi consigli.
Grazie a Michele, mio correlatore, nonch´e responsabile dell’area sviluppo, che
mi ha seguito e supportato nel mio lavoro di Tesi e nel mio lavoro quotidiano
fin dal primo giorno che ho messo piede in azienda.
E poi un grazie immenso al dsy, davvero il miglior plugin per il DSI! `E
stato uno strumento indispensabile, sia a livello didattico che a livello sociale.
Qui ho conosciuto tante persone che con il tempo si son rivelate ottimi amici.
In primis Astrid: come avrei fatto in questi anni se non ci fossi stata tu!!!
(Prima o poi troverai davvero un monumento in comelico!!) E poi gli ami-
Sommario 4
ci della t312: Dave, Mino, finito a Edinburgo, Alessandro & Ester, Walter,
Francisco & Ilda, Nicol`o, Marco e Alessandro, emigrato in Danimarca insie-
me a Ruut; che mi hanno iniziato al software libero e mi hanno insegnato che
l’informatica non ha limiti e le reti ‘ciappi’ ne sono un esempio! E sempre
tramite il dsy ho conosciuto Claudio che ora se ne sta in Nuova Zelanda,
Grazia la miglior rappresentante degli studenti, anche lei all’estero in quel
di Dublino, Christian, compagno di film, Yuri che mi ha tanto sopportato e
supportato nei momenti di peggior sconforto, Francesco, che mi ha dato un
assaggio di cosa volesse dire fare una tesi quando ero ancora a met`a strada
con gli esami, Fanny che ogni tanto anche lei sparisce in qualche angolo di
mondo lontano, e Sergio & Sara: ancora adesso spesso porto il ciondolo che
mi avete regalato prima che partissi per l’America... E un grazie va anche
ai compagni di studio che mi hanno reso la permanenza universitaria un po’
pi`u serena: per motivi di spazio non posso citarvi tutti, ma serbo un caro
ricordo di ciascuno di voi.
Ed infine un grazie grosso grosso va a due persone speciali: Viridiana,
compagna di studi, coinquilina, collega ma soprattutto amica, con cui ho
condiviso coinquilini pazzi, amici e lunghe chiacchierate fino alle 3 di matti-
na; e Andrea, dirigente, Beatles’ fan nonch´e amico. A voi in particolare tanta
gratitudine per aver creduto in me, nelle mie capacit`a e per avermi dato la
possibilit`a di realizzare questa tesi.
-Ilaria-
“I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l’immaginazione.”
–
“Non hai veramente capito qualcosa
fino a quando non sei in grado di spiegarlo a tua nonna.”
–
“Vedete, il telegrafo a filo `e un tipo molto, molto lungo di gatto.
Voi tirate la sua coda a New York e la sua testa miagola a Los Angeles.
Lo capite questo? E la radio opera esattamente allo stesso modo:
voi mandate i segnali qui, e loro li ricevono l`ı.
L’unica differenza `e che non c’`e alcun gatto.”
Albert Einstein
Sommario
Il lavoro di Tesi si inserisce in un progetto pi`u ampio che prevede la rea-
lizzazione delle funzionalit`a di PBX virtuale da fornire agli utenti del sito
web aziendale www.messagenet.it, mediante il software open source ‘Asteri-
sk PBX’.
In particolare il lavoro riguarda la realizzazione di un servizio di conferenza
telefonica/VoIP multiutente di cui ho curato l’analisi delle funzionalit`a da
fornire all’utente, l’analisi delle problematiche di scalabilit`a e affidabilit`a e
l’implementazione di un prototipo del prodotto finale.
Una conferenza telefonica, o conference-call, `e una telefonata grazie alla qua-
le il chiamante `e in grado di partecipare ad una conversazione in cui sono
presenti pi`u partecipanti. Di seguito, per brevit`a, la chiamer`o conference.
Tipicamente in una conference `e possibile fare in modo che tutti i parteci-
panti possano sia ascoltare che interloquire oppure fare in modo che un solo
partecipante possa parlare mentre gli altri sono deputati al semplice ascolto.
L’analisi delle funzionalit`a da offrire ha permesso di definire precisamente
quali sono le operazioni che ciascuno degli attori del sistema pu`o compiere.
L’utente che volesse prenotare una conference, di seguito chiamato chairman,
potr`a farlo tramite il sito.
Per collegarsi alla conference ogni partecipante avr`a a disposizione un numero
di telefono da chiamare e due codici numerici da digitare tramite Interactive
Voice Response (IVR). Il primo codice da inserire `e il numero della room,
il secondo e’ il pin di autenticazione. I partecipanti potranno scegliere il
numero di telefono con il prefisso per loro economicamente pi`u vantaggio-
so, pagando quindi semplicemente una chiamata locale, ovunque essi siano,
sfruttando proprio la peculiarit`a della tecnologia VoIP.
A conference iniziata, il chairman potr`a inoltre ’invitare’ degli ospiti chia-
mandoli lui stesso e aggiungendoli alla room. Il chairman potr`a gestire le
room e i partecipanti del servizio tramite un’interfaccia web integrata nel
sito. Durante la conference, i partecipanti possono visualizzarne i dettagli
principali su un’apposita pagina web. Dove presente, sar`a visibile l’identifi-
cativo del chiamante, cio`e il nome e/o il numero.
`E previsto inoltre un pannello di amministrazione con accesso riservato agli
operatori di back-office per eventuali interventi di assistenza e di ammini-
strazione.
Sommario 2
L’analisi delle problematiche di scalabilit`a mette in evidenza il numero
massimo di conference contemporanee supportabili dal sistema e il numero
massimo di partecipanti per conference e in totale. Il calcolo `e stato effet-
tutato in funzione sia del numero di canali PSTN riservati alle conference,
sia in funzione delle capacit`a computazionali dei Conference Engine, sia di
quante si stima saranno le chiamate PSTN rispetto al totale. Ho studiato
quindi un algoritmo per la scelta dinamica del Conference Engine ottimale
in funzione di quanti canali pu`o supportare al massimo ciascun Conference
Engine e del numero di partecipanti richiesti per la conference da prenotare.
`E stata effettuata un’analisi sull’affidabilit`a del servizio. In caso di guasto
ad uno dei server, nel caso peggiore si garantisce la possibilit`a di riprendere
la conference con le stesse modalit`a con cui la si era iniziata. Altrimenti i
partecipanti non riscontreranno malfunzionamenti. Il tutto `e possibile gra-
zie ad un sistema di clustering High-Availability gi`a a disposizione in azienda.
A completamento del lavoro, a scopo dimostrativo, `e stato realizzato un
prototipo del servizio finale di conference integrato con il sito web azienda-
le www.messagenet.it.
Questo documento `e suddiviso in cinque capitoli di cui dar`o una breve de-
scrizione qui di seguito.
Capitolo 1: Il primo capitolo contiene un’introduzione sulle motivazioni
che mi hanno spinto a scegliere questo soggetto e una breve descrizione
delle tecnologie VoIP e IP-PBX su cui si basa questo progetto;
Capitolo 2: Il secondo capitolo riguarda l’analisi della struttura del servi-
zio da offrire, dal punto di vista delle funzionalit`a, della scalabilit`a e
dell’affidabilit`a;
Capitolo 3: Il terzo capitolo della tesi descrive gli strumenti utilizzati in
fase di implementazione e le motivazioni che hanno portato alla loro
scelta;
Capitolo 4: Il quarto capitolo riguarda l’implementazione del prototipo;
ne presenta le caratteristiche e i dettagli di implementazione: dallo
schema E-R alle classi create;
Capitolo 5: Il quinto capitolo trae le conclusioni sul progetto descrivendo
brevemente gli sviluppi futuri previsti.
Indice
1 Introduzione 5
1.1 Presentazione del problema . . . . . . . . . . . . . . . . . . . 5
1.2 VoIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 IP-PBX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Scopo di questa tesi . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Architettura, analisi 13
2.1 Architettura del sistema . . . . . . . . . . . . . . . . . . . . . 14
2.2 Analisi Funzionali . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 Specifiche iniziali dell’azienda . . . . . . . . . . . . . . 18
2.2.2 Analisi di soluzioni esistenti . . . . . . . . . . . . . . . 18
2.2.3 Analisi delle Funzionalit`a e dell’Interfaccia Utente . . . 23
2.3 Analisi di Scalabilit`a . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.1 Algoritmo di Riempimento dei Conference Engine . . . 37
2.4 Analisi di Affidabilit`a . . . . . . . . . . . . . . . . . . . . . . . 41
2.5 Analisi dei requisiti minimi . . . . . . . . . . . . . . . . . . . . 42
2.5.1 Analisi dei requisiti HW . . . . . . . . . . . . . . . . . 42
2.5.2 Analisi dei requisiti SW . . . . . . . . . . . . . . . . . 43
3 Strumenti utilizzati 45
3.1 IP-PBX: Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.1 Conference: MeetMe . . . . . . . . . . . . . . . . . . . 46
3.2 Linguaggi di programmazione: Mason . . . . . . . . . . . . . . 46
3.3 Database: MySQL . . . . . . . . . . . . . . . . . . . . . . . . 47
4 Prototipo 49
4.1 Funzionalit`a implementate . . . . . . . . . . . . . . . . . . . . 50
4.2 Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3 Implementazione . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3.1 Scelte implementative . . . . . . . . . . . . . . . . . . 62
4.3.2 Moduli/classi/librerie usati . . . . . . . . . . . . . . . . 62
Indice 2
4.3.3 Interfacce Utente . . . . . . . . . . . . . . . . . . . . . 63
5 Conclusione e sviluppi futuri 69
5.1 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2 Sviluppi Futuri . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Elenco delle figure
2.1 Network Layer . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Application Layer . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 First-Fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4 Next-Fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.5 Best-Fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.6 Worst-Fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1 Prenotazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2 Visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.3 Modifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4 Cancellazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.5 Passate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.6 Future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.7 In corso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.8 Nessun partecipante . . . . . . . . . . . . . . . . . . . . . . . 53
4.9 Presenti un chairman e un partecipante . . . . . . . . . . . . 53
4.10 Aggiunta di un timeslot alla conference . . . . . . . . . . . . 53
4.11 Aggiunta di un partecipante alla conference . . . . . . . . . . 53
4.12 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.13 Nessun partecipante presente . . . . . . . . . . . . . . . . . . 54
4.14 Alcuni partecipanti presenti . . . . . . . . . . . . . . . . . . . 54
4.15 Schema E-R del database Pear . . . . . . . . . . . . . . . . . 55
Elenco delle tabelle
1.1 Tabella dei software IP-PBX . . . . . . . . . . . . . . . . . . 10
2.1 Tabella ‘booking’ del database ‘asterisk’ di Web-Meetme . . . 19
2.2 Tabella dei tipi di accesso al servizio . . . . . . . . . . . . . . 24
2.3 Tabella delle Funzionalit`a/Ruoli: Azioni . . . . . . . . . . . . 26
2.4 Tabella delle Funzionalit`a/Ruoli: Azioni . . . . . . . . . . . . 27
2.5 Tabella delle Funzionalit`a/Ruoli: Viste . . . . . . . . . . . . . 28
4.1 Tabella ‘conference’ del database ‘pear’ . . . . . . . . . . . . 57
Capitolo 1
Introduzione
1.1 Presentazione del problema
La comunicazione `e un bisogno fondamentale nella vita dell’uomo.
Per sopperire a questa necessit`a l’uomo `e in continua ricerca di nuovi stru-
menti atti a questa funzione.
L’evoluzione tecnologica ha permesso lo sviluppo di questi strumenti al fine
di renderli sempre migliori dal punto di vista della fruibilit`a delle informa-
zioni nel tempo e nello spazio.
In ambito sociale la comunicazione non si limita solo al dialogo tra due in-
terlocutori, ma pi`u spesso lo scambio di informazioni si estende a un numero
pi`u ampio di persone.
In particolare, nel corso dell’ultimo secolo, la rapidit`a di evoluzione degli
strumenti tecnologici ha consentito lo sviluppo di sistemi di comunicazione
sempre pi`u snelli, efficienti ed economici. Recentemente, le potenzialit`a della
rete Internet hanno assunto un ruolo primario nell’evoluzione dei sistemi di
comunicazione, riconducendo a s´e tutti i tradizionali canali di comunicazione
ed implementandone di nuovi. E cos`ı, come `e avvenuto per la tradizionale
posta, ormai quasi surclassata dalla pi`u moderna e-mail, anche le tecnologie
adottate per la telefonia stanno subendo un radicale cambiamento di dire-
zione, orientandosi sempre pi`u allo sfruttamento delle funzionalit`a messe a
disposizione dalla rete.
La tecnologia, figlia di questo cambiamento, che consente oggi di effettuare
comunicazioni vocali attraverso Internet si chiama VoIP: Voice over Internet
Protocol.
1.1 PRESENTAZIONE DEL PROBLEMA 6
L’evoluzione della tecnologia delle telecomunicazioni
1835 Telegrafo (Morse)
1870/80 Telefono (Meucci/Bell)
1895 Radiotrasmissione (Marconi)
1965 Personal Computer (Olivetti Programma 101 - Perotti)
1980 Telefonia Mobile Analogica
1991 World Wide Web
1992 Telefonia Mobile Digitale (GSM, ISDN)
1995 VoIP
1996 Fibra Ottica
Ripercorrendo e analizzando le tappe principali della tecnologia delle teleco-
municazioni, riportate qui sopra, `e possibile notare che la migrazione della
telefonia dalla rete tradizionale ad Internet `e avvenuta in tempi estremamente
brevi e pu`o essere considerata una evoluzione naturale. Infatti le caratteri-
stiche di Internet, sono di gran lunga pi`u idonee alle necessit`a odierne, sia
per quanto concerne l’affidabilit`a, ma anche per il pi`u importante aspetto
economico di gestione. Questo perch´e i costi vanno suddivisi per tutte le
applicazioni che la utilizzano. `E da notare, inoltre, che questa evoluzione `e
stata possibile grazie ad un rapporto di simbiosi avvenuto tra la tecnologia
utilizzata per il telefono e quella implementata per Internet. Infatti, senza
la presenza di una rete di comunicazioni globale e soprattutto cos`ı capilla-
re come quella della telefonia, Internet non sarebbe probabilmente evoluta
nei tempi e nei modi in cui la conosciamo oggi. Ma se, da quando Internet
sfruttava il famigerato doppino telefonico a quando l’introduzione delle “li-
nee veloci” la rendeva praticamente indipendente dalla vecchia tecnologia,
`e passato circa un decennio (in Italia 1995-2005, negli USA qualche anno
prima), per il procedimento inverso, ovvero lo sfruttamento di Internet da
parte della telefonia, si sta sperimentando una trasformazione molto pi`u ce-
lere. Essendo oggi esistenti tecnologie sufficientemente avanzate necessarie al
funzionamento e allo sfruttamento di tale sistema, `e facile ipotizzare che, con
qualche “operazione di mercato” ben riuscita, e molte sono in atto in questi
ultimi anni, a brevissimo, il buon caro e vecchio telefono sar`a solo un ricordo
di altri tempi.
1.2 VOIP 7
In quest’ottica si `e pensato di proporre una nuova serie di servizi basati
sul concetto di centralino virtuale. Tra questi ho scelto proprio il servizio
di conference perch´e lo ritengo un utilissimo strumento per migliorare ed
agevolare la comunicazione fra persone distanti che abbiano la necessit`a di
coordinarsi, organizzarsi, comunicare a molte persone lontane lo stesso mes-
saggio, o ad esempio per strutture che vogliano attuare l’e-learning a livello
internazionale, ecc...
Come tutti gli altri tipi di comunicazione, anche la conferenza `e entrata nel
mondo virtuale. Come dalla lettera cartacea si `e passati alle e-mail, cos`ı
dalle riunioni fisiche in cui ci si riunisce in una stanza per coordinarsi, per
scambiarsi e condividere informazioni, per insegnare, ecc... il primo salto `e
stato verso le cosiddette conference-call, ovvero telefonate tradizionali alle
quali possono partecipare pi`u di due persone.
Questo ha in parte eliminato le distanze, almeno a livello nazionale, in quan-
to alla stessa conferenza telefonica possono partecipare persone fisicamente
distanti. Il limite fin’ora era nell’elevato costo delle chiamate internazionali.
Ma con il VoIP anche questo limite `e stato abbattuto e, addirittura, per le
chiamate VoIP-VoIP il costo si `e azzerato.
E quindi, come `e successo per le normali telefonate, anche le conference-call
hanno iniziato a spostarsi dalle linee tradizionali al VoIP.
1.2 VoIP
VoIP `e l’acronimo di Voice over Internet Protocol. Come dice il termine
stesso, per VoIP si intendono comunicazioni vocali attraverso la rete Internet
o una qualsiasi altra rete basata su IP, anzich´e su una rete di trasporto de-
dicata, quale quella della telefonia tradizionale (Public Switched Telephone
Network o PSTN).
Il vantaggio principale del VoIP rispetto alla fonia tradizionale, infatti, `e
che sfrutta come rete di trasporto proprio Internet che non `e una rete dedi-
cata ed `e ormai molto diffusa (quasi come la telefonia mobile) oltre ad avere
costi di gestione molto pi`u bassi.
L’apparecchio utilizzato per la conversazione VoIP pu`o essere un comune
PC al quale siano collegati una rete IP e un headset (cuffie+microfono) e che
sia dotato di un client VoIP. In alternativa si pu`o utilizzare un telefono VoIP
oppure un telefono comune collegato ad un apposito adattatore VoIP.
1.2 VOIP 8
Recentemente, inoltre, visto che la stragrande maggioranza dei dispositivi
portatili moderni, quali cellulari, palmari, blackberry, ecc. implementa il
protocollo IP, `e sufficiente dotarli di un apposito client software per trasfor-
marli in veri e propri telefoni VoIP.
La presenza di centralini VoIP/PSTN di interscambio rende inoltre possibile
una forte interazione tra le due tecnologie facendo cos`ı da catalizzatore per
la diffusione del VoIP.
Un’altra ragione per cui il VoIP sta emergendo `e il suo basso costo di gestione
e quindi di vendita rispetto alla telefonia tradizionale.
Le compagnie telefoniche che stanno adottando questa tecnologia propongo-
no prezzi sempre pi`u competitivi.
I costi di gestione di una rete per un singolo servizio sono inversamente pro-
porzionali al numero di servizi che questa offre.
`E quindi facile intuire che, essendo Internet sfruttata per una quantit`a ele-
vata di scopi, i costi di gestione per il VoIP ne risultano ridotti di molto.
Per l’utenza residenziale il servizio telefonico VoIP si rivela spesso pi`u econo-
mico del servizio telefonico tradizionale e pu`o abbattere i costi di instrada-
mento per le chiamate a lunga distanza tipici della fonia tradizionale. Infatti
`e possibile avere un numero di telefono con prefisso di una nazione diversa
dalla propria e ricevere le chiamate in arrivo da qualunque luogo del mondo
al costo, per il chiamante, di una telefonata diretta alla nazione prescel-
ta, abbattendo cos`ı drasticamente i costi delle chiamate internazionali. Per
esempio `e possibile avere un numero telefonico con prefisso italiano stando
in Australia e farsi chiamare dall’Italia al costo di una chiamata nazionale.
Ma sono soprattutto le aziende a trarre vantaggio dal VoIP, in quanto questa
tecnologia permette loro di gestire dati e voce su un’unica rete.
Questo comporta un duplice vantaggio: gestionale ed economico.
Infatti, siccome il VoIP `e un servizio basato su IP si integra naturalmente con
altri servizi di comunicazione come ad esempio il fax, la posta elettronica, gli
sms, ecc. e diventa quindi uno straordinario strumento di collaborazione.
Infine, la convenienza economica del VoIP sulle linee PSTN in ambito azien-
dale `e ancora pi`u evidente se consideriamo che la maggior parte dei provider
VoIP non addebitano alcun costo per le telefonate tra gli utenti dei propri
servizi. Ad esempio, per un’azienda con diverse sedi geografiche che necessita
di metterle in comunicazione, `e facile capire come il VoIP possa abbattere
nettamente i costi, che in caso di aziende multinazionali possono essere molto
elevati.
1.3 IP-PBX 9
In questo contesto si inserisce Messagenet Srl, l’azienda presso cui lavoro
e per la quale ho realizzato questo progetto. Messagenet `e un provider VoIP
che offre servizi di telefonia, FAX e SMS su IP.
Tutti i servizi sono fruibili anche direttamente tramite il sito web aziendale
www.messagenet.it: dall’invio dei fax via e-mail e degli SMS alla possibi-
lit`a di effettuare chiamate tramite un soft-phone accessibile direttamente dal
browser.
A questi servizi si `e deciso di aggiungere la possibilit`a di gestire conferen-
ze telefoniche tra utenti sia dei servizi Messagenet che di altri operatori VoIP
e di telefonia tradizionale.
1.3 IP-PBX
L’IP-PBX scelto per questo progetto di tesi `e Asterisk[1].
Un Private Branch eXchange o PBX `e un centralino telefonico per uso pri-
vato. In genere `e usato nelle aziende per fornire una rete telefonica interna.
Un IP-PBX `e un centralino virtuale, cio`e implementato tramite software, che
consente di mettere in comunicazione utenti VoIP e utenti delle linee tele-
foniche tradizionali in tutte le loro combinazioni (VoIP-VoIP, VoIP-PSTN,
PSTN-PSTN).
L’azienda per la quale sto progettando e realizzando questo prodotto ha
richiesto che lo stesso soddisfacesse determinati requisiti:
Economicit`a: La necessit`a di utilizzare un prodotto pi`u economico possibi-
le deriva dal fatto che se si decidesse di adottare un prodotto costoso si
andrebbe incontro al rischio di dover tenere il prezzo del servizio pi`u al-
to per coprire il costo del prodotto stesso, perdendo quindi potenzialit`a
dal punto di vista della concorrenza.
Integrabilit`a: `E molto importante inoltre che il prodotto sia quanto pi`u
integrato possibile con i sistemi gi`a in uso in azienda. Attualmente in
azienda tutti i sistemi utilizzano sistemi operativi Unix-like, per cui si
rende necessario che il prodotto scelto sia compatibile con tali sistemi
operativi. Inoltre i servizi VoIP offerti da Messagenet sono gestiti con
Asterisk. Per questo ed altri motivi spiegati nella sezione 3.1, abbia-
mo quindi scelto proprio Asterisk come IP-PBX. Parte del servizio di
conference sar`a fornito via web (prenotazioni, gestione, visualizzazione
1.3 IP-PBX 10
informazioni, ecc...). Quindi `e bene che anche l’interfaccia sia quanto
pi`u integrata con il resto dei servizi gi`a fruibili sul sito.
Espandibilit`a: Nell’ottica di migliorare costantemente i servizi offerti e,
dove possibile, espanderli, `e preferibile un prodotto che d`ıa ampie pos-
sibilit`a di aggiungere sempre pi`u funzionalit`a nel tempo senza dover
ricorrere continuamente a nuovi prodotti esterni e poco integrati.
Prima di decidere di svilupparlo internamente, ho valutato alcuni software
che forniscono funzionalit`a di IP-PBX e pi`u in particolare di conference
VoIP/PSTN per capire se valesse la pena utilizzare un prodotto gi`a pron-
to o se fosse invece pi`u conveniente per l’azienda svilupparlo ”in casa“ su
misura.
Esistono numerosi software IP-PBX sia per architetture Microsoft Windows
che per sistemi Unix-like. (Cfr. Tabella 1.1)
Software (Produttore) Free Integrabile Espandibile
Asterisk di Digium[1] Y Y Y
SipX di SIPfoundry[4] Y Y Y
3CX[5] (vers. free) Y Y n
3CX[5] (vers. non free) n Y Y
Cisco[6] n Y Y
Platform di Voispeed[7] n Y Y
Tabella 1.1: Tabella dei software IP-PBX
Tra i software oggi disponibili per la gestione di conference VoIP/PSTN,
alcuni sono a pagamento, altri completamente gratuiti, mentre altri ancora
hanno versioni gratuite ma limitate nelle funzionalit`a.
Tra quelli citati nella tabella 1.1, ad esempio, Cisco offre una gamma di
prodotti dedicati all’IP-PBX molto validi, soprattutto per le grosse aziende,
ma i costi sono piuttosto elevati; Platform di Voispeed `e anch’essa una solu-
zione a pagamento; il servizio offerto da 3CX ha invece una versione gratuita
ma limitata.
Asterisk e SipX invece non richiedono alcuna licenza e non hanno limitazioni
sulle funzionalit`a.
Anche dal punto di vista dell’integrazione, sebbene sia Asterisk che sipX
1.4 SCOPO DI QUESTA TESI 11
offrano le necessarie funzionalit`a per fornire il servizio di conference, ho scel-
to Asterisk per due motivi: innanzitutto perch´e in azienda era gi`a utilizzato
per il servizio di VoIP e un’integrazione con SipX avrebbe inevitabilmente
creato problemi, ma anche perch´e imparare ad utilizzare un nuovo strumento
da zero e tentare di integrarlo con Asterisk sarebbe stato molto pi`u costoso
in termini di tempo e risorse.
Asterisk offre comunque tutte le funzionalit`a relative ad un PBX e pu`o facil-
mente essere adattato alle proprie esigenze. `E quindi molto flessibile e non
necessita di aggiunte per gli scopi che vogliamo ottenere.
Infine garantisce una certa stabilit`a in quanto `e prodotto da Digium, no-
to produttore di schede per VoIP.
Per questi motivi tra l’altro risulta essere uno dei pi`u utilizzati.
Quindi per gestire le chiamate della conference ho deciso di mantenere la
scelta aziendale di appoggiarsi ad Asterisk.
1.4 Scopo di questa tesi
Scopo di questa tesi `e quindi quello di aggiungere e integrare un servizio di
conference alla gamma di servizi offerti da Messagenet Srl: analizzare la fat-
tibilit`a di questo progetto, studiare quali funzionalit`a offrire ai clienti, capire
quali sono i limiti in termini di scalabilit`a e che cosa `e necessario per garantire
un livello di affidabilit`a rispondente alle esigenze dei clienti. A dimostrazione
di tutto ci`o `e stato preparato un prototipo funzionante del prodotto finale.
“Life is what happens to you while you’re busy making other plans.”
John Lennon
Capitolo 2
Architettura del sistema,
analisi
In questo capitolo descriver`o l’architettura del sistema e le analisi sulle fun-
zionalit`a, sulla scalabilit`a e sull’affidabilit`a del sistema che mi hanno portato
a progettarlo cos`ı.
Tratter`o inoltre l’analisi dell’algoritmo migliore per la distribuzione delle
conference sui vari Conference Engine.
La Sezione 2.1 descrive l’architettura del sistema che l’azienda mi ha
messo a disposizione.
La Sezione 2.2 raggruppa le Analisi Funzionali, quelle cio`e che hanno
portato alla scelta delle funzionalit`a da includere nel servizio di conference
realizzato.
In particolare, inizialmente ho esaminato le specifiche del progetto for-
nitemi dal responsabile dello sviluppo e dal titolare dell’azienda. Insieme a
loro, infatti si `e deciso prima il funzionamento generale del servizio ed in se-
guito son state meglio definite le varie funzionalit`a da mettere a disposizione
dei clienti. L’elenco di tali specifiche si trova al Paragrafo 2.2.1.
Prima di iniziare a progettare ed implementare il servizio di conference ho
analizzato un prodotto analogo gi`a esistente, Web-Meetme[3], per me-
glio rendermi conto delle funzionalit`a che era possibile offrire, delle possibili
difficolt`a in fase di implementazione e di come risolverle. Questo prodotto,
open-source, fornisce un’interfaccia web al modulo MeetMe[2] di Asterisk,
quello appunto che consente di effettuare le conference VoIP. L’interfaccia
e’ sviluppata in php. Fornir`o una descrizione pi`u dettagliata a riguardo nel
Paragrafo 2.2.2.
2.1 ARCHITETTURA DEL SISTEMA 14
L’analisi delle funzionalit`a da offrire viene descritta nel Paragrafo 2.2.3.
Ho quindi iniziato una prima analisi delle problematiche di scalabi-
lit`a in base alle funzionalit`a che si `e deciso di offrire e al sistema che mi `e
stato messo a disposizione. L’analisi completa si trova nella Sezione 2.3.
Infine, ho studiato un algoritmo di riempimento ottimale dei Con-
ference Engine in funzione della capacit`a di calcolo di ogni Conference
Engine e del numero di partecipanti richiesti dal chairman per una determi-
nata conference. La spiegazione dell’algoritmo `e proposta nella Sezione 2.3.1.
Per quanto riguarda l’alta affidabilit`a del sistema si `e deciso di proteg-
gere i Conference Engine tenendone uno di backup in caso di guasto. Saranno
ridondati in alta affidabilit`a anche il Web-Server e il Database. I dettagli e
le motivazioni sono riportati alla Sezione 2.4.
Infine, nella Sezione 2.5 sono riportati i requisiti minimi di sistema
richiesti per il buon funzionamento del servizio.
2.1 Architettura del sistema
In questa sezione descriver`o l’architettura del sistema.
La parte di sistema che riguarda nello specifico il servizio di conferencing
offerto `e illustrata in figura 2.1 e in figura 2.2.
In dettaglio, per quanto riguarda la parte di networking, i componenti
principali sono:
Media GateWay Un Media Gateway agisce come unit`a di traduzione tra
diverse reti di telecomunicazioni come PSTN, Next Generation Net-
works, reti radio 2G/2.5G/3G o PBX. Visto che il Media GateWay
connette differenti tipi di reti, una delle sue funzioni principali `e quel-
la di convertire tra le differenti trasmissioni e tecniche di codifica. Il
Media GateWay si occupa anche di funzionalit`a per lo streaming come
l’echo-cancellation e DTMF. I Media GateWay VoIP provvedono alla
conversione tra la voce che arriva sui canali PSTN e quella VoIP.
SIP Proxy Un server SIP (Session Initial Protocol) costituisce il compo-
nente principale di un IP-PBX, ovvero di un centralino virtuale, e si
2.1 ARCHITETTURA DEL SISTEMA 15
Figura 2.1: Network Layer
Figura 2.2: Application Layer
2.1 ARCHITETTURA DEL SISTEMA 16
occupa dell’impostazione di tutte le chiamate SIP della rete. Un server
SIP pu`o anche coincidere con il SIP Proxy o SIP Registrar.
Per la parte applicativa i componenti utilizzati sono:
Web Server Un web server `e un programma (e, per estensione, il compu-
ter) che fornisce pagine web agli utenti che ne fanno richiesta utilizzan-
do un programma client, il browser. Il web server utilizza il modello
Client/Server e il protocollo HTTP.
Database Un database `e una raccolta di informazioni organizzata in modo
da poter essere facilmente accessibile per consultazione, modifiche e
aggiornamenti. Nel nostro caso il sistema prevede un database centrale
in cui verranno memorizzate tutte le conference passate, presenti e
future. Su ogni Conference Engine sar`a installato un database locale
che conterr`a le sole conference in corso ospitate da quel server.
Conference Engine Il Conference Engine `e un server che riceve le chiama-
te in ingresso via rete locale, e provvede ad effettuare il mix dei flussi
audio in ingresso da inviare sui canali in uscita per permettere di sen-
tire pi`u voci contemporaneamente. Nel sistema sono presenti diversi
Conference Engine su cui saranno suddivise le conference in maniera
da mantere bilanciato il carico su di essi.
A livello di telefonia, le chiamate PSTN arrivano al Media GateWay che
le traduce in VoIP e le invia al SIP Proxy. Le chiamate VoIP invece arriva-
no al SIP Proxy direttamente dalla rete locale. Dopo la negoziazione con il
SIP Proxy, le chiamate vengono redirette via VoIP direttamente al Conferen-
ce Engine designato che quindi stabilisce con il chiamante una connessione
diretta. Il SIP Proxy si occupa anche di mappare staticamente i numeri te-
lefonici assegnati al servizio di conference sugli indirizzi IP dei Conference
Engine. Se quindi ad ogni Conference Engine assegneremo uno o pi`u numeri
telefonici, sar`a il SIP Proxy a mantenere questa relazione statica.
La scelta del Conference Engine, e quindi del numero telefonico verso cui
indirizzare le chiamate di ogni conference, viene fatta in fase di prenotazione
direttamente dal programma di gestione delle conference. Quest’operazione
`e completamente trasparente al chairman.
La scelta di utilizzare pi`u di un Conference Engine, `e dovuta a diversi
fattori:
• Il costo dell’investimento iniziale potrebbe essere all’incirca equivalen-
te, ma se si decide di partire con un unico Conference Engine molto
2.2 ANALISI FUNZIONALI 17
potente, questo sar`a anche molto costoso; partendo invece con poche
macchine dalle caratteristiche non particolarmente elevate, il costo sar`a
meglio dimensionabile e sicuramente inferiore.
• In caso di necessit`a di ampliamento, `e pi`u pratico aggiungere una o pi`u
macchine poco potenti anzich´e sostituire una macchina molto potente
o potenziarla dovendo interrompere il servizio.
• In caso di failure di una macchina poco potente in un gruppo di macchi-
ne, il danno verso gli utenti sar`a minimo, al massimo qualche conferen-
ce e sar`a sufficiente un Conference Engine di backup con prestazioni
non elevate per supportare il servizio durante il problema; se questo
accadesse con una unica macchina molto potenziata tutto il servizio
di conference rimarrebbe bloccato e sarebbe necessaria una macchina
altrettanto potente per garantire l’alta affidabilit`a.
• In caso di danno permanente di una macchina poco potente, sar`a pi`u
facile ed economico rimpiazzarla con una analoga; una molto potente
sar`a pi`u costosa da sostituire o riparare.
Ad un livello di astrazione pi`u alto, il servizio di prenotazione e gestione
delle conference sar`a offerto via Internet. Le richieste delle pagine web arrive-
ranno quindi ad un webserver che contatter`a Asterisk e un database centrale
per fornire le informazioni richieste. I dati delle conference verranno salvati
sul database centrale. Inoltre, su ogni Conference Engine verranno installati
Asterisk, e in particolare il modulo MeetMe, ed un database locale che serve a
mantenere le informazioni temporanee delle conference. Il database centrale
e i database locali dei Conference Engine saranno sincronizzati tramite dei
trigger. Per poter offrire un servizio affidabile, tali database locali saranno
ridondati e protetti con un sistema di alta affidabilit`a.
2.2 Analisi Funzionali
In questa sezione descriver`o quali funzionalit`a si `e scelto di offrire ed esporr`o
le considerazioni che mi hanno portato a prendere tali decisioni anche in fun-
zione delle specifiche iniziali fissate dall’azienda.
Nell’analisi della problematica, mi `e stata d’aiuto l’analisi di una soluzione
esistente di web-conference che ho preso a modello per studiarne le funzio-
nalit`a, le problematiche affrontate e le relative soluzioni.
2.2 ANALISI FUNZIONALI 18
2.2.1 Specifiche iniziali dell’azienda
L’azienda per cui sto sviluppando questo progetto ha richiesto che il prodotto
avesse le seguenti caratteristiche di massima:
• Permettere al cliente di prenotare, modificare, eliminare una conference
• Permettere al cliente di gestire gli utenti della conference
• Integrare il pi`u possibile questo servizio con gli altri offerti dall’azienda
sul sito web
• Prevedere la possibilit`a di integrare ulteriori funzionalit`a
• Rendere il servizio scalabile
• Rendere il servizio affidabile
2.2.2 Analisi di soluzioni esistenti
La soluzione che ho preso a modello per realizzare il servizio di conference `e
Web-Meetme.
Web-Meetme `e un’interfaccia web sviluppata in php per interagire con il mo-
dulo MeetMe di Asterisk. Il comando MeetMe di Asterisk consente infatti di
gestire la conference e avere informazioni sui partecipanti dei quali permette
l’espulsione o la mutizzazione.
Maggiori dettagli sul modulo MeetMe di Asterisk sono alla sezione 3.1.1.
Seguono una sottosezione in cui descriver`o il database, una sottosezione per
l’interfaccia con il database e una per l’interfaccia con Asterisk utilizzati da
Web-Meetme.
DataBase
Web-Meetme si appoggia ad un database MySQL (asterisk) composto da una
sola tabella (booking), la cui struttura `e presentata nella tabella 2.1.
Seguono alcune considerazioni sulla funzione dei campi di tale tabella e
le eventuali incongruenze che ho riscontrato.
bookId Il campo bookId `e l’identificativo della conference e rimane nascosto
all’utente.
2.2 ANALISI FUNZIONALI 19
Field Type Null Key Default Extra
bookId int(10) unsigned NO PRI NULL auto increment
clientId int(10) unsigned YES 0
roomNo varchar(30) YES 0
roomPass varchar(30) NO 0
silPass varchar(30) NO 0
startTime datetime NO 0000-00-00 00:00:00
endTime datetime NO 0000-00-00 00:00:00
dateReq datetime NO 0000-00-00 00:00:00
dateMod datetime NO 0000-00-00 00:00:00
maxUser varchar(30) NO 10
status varchar(30) NO A
confOwner varchar(30) NO
confDesc varchar(100) NO
aFlags varchar(10) NO
uFlags varchar(10) NO
sequenceNo int(10) unsigned YES 0
recurInterval int(10) unsigned YES 0
Tabella 2.1: Tabella ‘booking’ del database ‘asterisk’ di Web-Meetme
clientId Il campo clientId identifica il cliente. Nel servizio offerto da Web-
Meetme, questo campo viene impostato sempre a zero (monoutente).
In questo caso pu`o essere lasciato vuoto quindi `e stato impostato come
‘nullable’.
roomNo Il campo roomNo `e il numero della conference che i partecipanti
dovranno digitare alla richiesta dell’IVR. Anche se per la tabella `e
stato scelto il tipo di dato varchar, in realt`a nella pagina di creazione
della conference di Web-Meetme si possono inserire solo valori numerici
e tale numero viene generato a caso anche se pu`o essere modificato
dall’utente. Inoltre mentre nel database di Web-Meetme il campo pu`o
essere impostato a null, nella realt`a quando l’utente di Web-Meetme
non inserisce alcun numero, il sistema lo genera a caso per lui. Quindi,
di fatto, non viene mai lasciato a null.
roomPass, silPass I campi roomPass e silPass sono i pin rispettivamente
di partecipante e chairman da digitare alla richiesta dell’IVR. Nel da-
tabase di Web-Meetme i campi sono di tipo varchar, mentre per poter
essere digitati sulla tastiera del telefono devono essere numerici, come
infatti viene richiesto poi nel form di creazione della conference. Inol-
2.2 ANALISI FUNZIONALI 20
tre entrambi vengono inventati dal chairman in fase di creazione della
conference e possono anche essere lasciati in bianco.
startTime, endTime I campi startTime ed endTime sono la data-ora di
inizio e fine della conference.
dateReq, dateMod I campi dateReq e dateMod servono per tenere traccia
della data di creazione e di ultima modifica della conference.
maxUser Il campo maxUser indica qual `e il numero di partecipanti preno-
tati. Nel database di Web-Meetme `e stato scelto il tipo di dato varchar
anche se `e un campo prettamente numerico.
status Il campo status serve solo al funzionamento di Asterisk e deve essere
impostato ad “A”.
confOwner Il campo confOwner permette di salvare il nome del chairman.
In Web-Meetme il campo viene compilato liberamente dal chairman
tramite il form di creazione della conference.
confDesc Questo campo semplicemente memorizza una breve descrizione
della conference scelta dall’utente. In generale indicher`a di che cosa si
ha intenzione di parlare durante la conference.
aFlags Il campo aFlags `e una stringa di lettere e serve per indicare ad
Asterisk quali opzioni attivare/disattivare per la conference a livello
di amministrazione. Nella tabella ogni opzione `e rappresentata da una
lettera. Alcune lettere (asdA) sono preimpostate staticamente per tutte
le conference. La lettera ‘i’ (per “Info”), se presente, dice ad Asterisk
di informare i partecipanti quando il chairman entra in conference. La
lettera ‘r’ (per “Record”), se presente, avvisa Asterisk che la conference
va registrata. A queste ultime due lettere corrispondono altrettanti
checkbox nel form di creazione della conference.
uFlags Il campo uFlags `e una stringa di lettere e serve per indicare ad
Asterisk quali opzioni attivare/disattivare per la conference per quanto
riguarda i partecipanti. Nella tabella ogni opzione `e rappresentata da
una lettera. La lettera ‘d’ `e preimpostata staticamente per tutte le
conference. La lettera ‘i’ (per “Info”), se presente, dice ad Asterisk di
informare i partecipanti dell’ingresso in conference di un altro parteci-
pante. La lettera ‘m’ (per “Mute”), se presente, avvisa Asterisk che la
conference sar`a ’listen-only’, ovvero solo il chairman potr`a parlare. La
lettera ‘w’ (per “Wait for leader”), se presente, informa Asterisk che
2.2 ANALISI FUNZIONALI 21
la conference non avr`a inizio fino all’arrivo del chairman A queste ulti-
me tre lettere corrispondono altrettanti checkbox nel form di creazione
della conference.
sequenceNo, recurInterval Questi due campi servono in Web-Meetme in
quanto permettono la prenotazione ricorsiva delle conference. Infatti,
quando viene prenotata una conference ricorsiva, le conference vengono
create subito, tutte con lo stesso numero di conference, ma con un
sequenceNo diverso. Il campo recurInterval indica quanto tempo passa
tra una conference e la successiva.
Interfaccia PHP-DB
In Web-Meetme non esiste un vero e proprio layer per interfacciarsi al data-
base. Quindi tutte le query al database sono scritte direttamente all’interno
delle pagine PHP.
Interfaccia PHP-Asterisk
Per interfacciarsi ad Asterisk e al modulo meetme, Web-Meetme utilizza la
libreria phpagi.
Questa permette di collegarsi [connect/disconnect] ad un server Asterisk pas-
sandogli server, porta, username e password.
Permette inoltre di inviare un comando [command] ad Asterisk o di origina-
re [originate] una chiamata da Asterisk. Questo in particolare `e quello che
permette di chiamare direttamente un ospite e aggiungerlo alla conference
senza che quest’ultimo debba telefonare al numero prestabilito, inserendo le
credenziali, ecc...
Struttura files
La pagina principale di Web-Meetme e’ meetme control.php.
Questa richiede alcune librerie sia php che js, che contengono delle funzioni
utilizzate anche dalle altre pagine.
Meetme control.php prende come argomenti due parametri: s e t. Questi
vengono assegnati in funzione della voce del menu scelta. Le voci del menu
sono:
• Add Conference
• Delete Conferences
• Past Conferences
2.2 ANALISI FUNZIONALI 22
• Current Conferences
• Future Conferences
In base ai valori assegnati ai parametri s e t, meetme control.php visua-
lizza diverse informazioni, in genere dei form che raccolgono i dati da inviare
ad appositi file per l’elaborazione.
Nel caso dell’aggiunta della conference, meetme control.php mostra il form
di inserimento e i dati, una volta inviati, vengono elaborati da conf add.php
per l’inserimento vero e proprio nel database.
Nel caso dell’eliminazione delle conference, meetme control.php presenta l’e-
lenco delle conference prenotate dal chairman con i checkbox per sceglie-
re quali eliminare e l’elenco delle conference da eliminare viene inviato a
conf delete.php per l’eliminazione vera e propria.
Nel caso di past/current/future conferences elenca le conference rispettiva-
mente passate, correnti e future prenotate dal chairman e a seconda del caso
mostra le varie azioni eseguibili su ognuna. In particolare, per le conference
in corso e’ possibile visualizzare l’elenco dei partecipanti ed eseguire azioni
su ciascuno di essi; questa parte `e gestita da conf control.php. Le altre azioni
invece vengono processate da conf update.php.
Riporto qui di seguito le pagine di maggior rilievo per l’analisi del funzio-
namento di Web-Meetme:
conf add.php Pagina per l’aggiunta delle conference. Contiene il codice per
il form, per la verifica dei dati dopo l’inserimento e la modifica, e tutte
le query SQL necessarie ad inserire o aggiornare i dati nel database o
per effettuare le verifiche di correttezza e integrit`a dei dati inseriti.
conf delete.php Pagina per l’eliminazione delle conference. Contiene il
codice per elencare le conference eliminabili, le query SQL per la can-
cellazione a database e tutta la logica di controllo.
conf update.php Questa pagina viene utilizzata per elencare le conferenze
passate, presenti e future.
conf control.php Questa pagina serve a controllare la conference. Visualiz-
za i partecipanti presenti alla conference e di ciascuno mostra il numero
di telefono, il tipo di accesso (chairman/partecipante), l’eventuale no-
minativo associato al numero nel caso di chiamata da VoIP, la durata
della chiamata, se `e mutizzato o no e la possibilit`a per il chairman
di (de)mutizzarlo o espellerlo. Con mutizzare si intende la facolt`a del
2.2 ANALISI FUNZIONALI 23
chairman di bloccare il flusso audio in arrivo dal partecipante selezio-
nato, consentendogli comunque di continuare ad ascoltare quanto viene
detto in conference. Gestisce anche l’invio dei comandi di list, mute e
kick da inviare al modulo MeetMe di Asterisk.
Punti deboli
Rispetto alle richieste iniziali dell’azienda, Web-MeetMe realizza abbastanza
bene le prime due specifiche, ovvero di poter creare, modificare ed eliminare
le conference e di poterne gestire gli utenti.
Per`o, essendo scritto in un linguaggio diverso da quello usato nel sito e se-
guendo una logica molto meno “ad oggetti”, non si integrerebbe molto bene
con il nostro sito e sarebbe di conseguenza poco espandibile nelle funzionalit`a.
Inoltre Web-MeetMe non prevede l’uso di diversi Conference Engine e quindi
non prevede nemmeno il bilanciamento del carico su tali server. Infatti non
c’`e alcun controllo di questo tipo in fase di creazione della conference.
Inoltre, Web-MeetMe nasce come servizio gratuito e illimitato, quindi non
prevede controlli particolarmente severi. Infatti ad esempio non prevede al-
cun controllo sul termine orario della conference: se i partecipanti restano
al telefono al termine della conference, questa non viene interrotta, ma pro-
segue finch´e l’ultimo partecipante non termina la chiamata. Questo per noi
non `e accettabile in quanto faremo pagare le conference anche in funzione del
tempo e non disponiamo di risorse illimitate. Per ovviare a questo problema,
abbiamo quindi deciso preparare uno script che interrompa la conference al-
l’ora predeterminata dal chairman eliminando il record relativo dal database
del Conference Engine.
2.2.3 Analisi delle Funzionalit`a e dell’Interfaccia Uten-
te
Questa sezione descrive le scelte implementative del progetto riguardo l’in-
terfaccia utente ed `e cos`ı suddiviso:
Attori del sistema e Accesso al servizio: Una spiegazione sulle rela-
zioni tra tipo di utenza e tipo di accesso al servizio. Una descrizione
pi`u approfondita degli attori del sistema: chi pu`o fare cosa.
Caratteristiche: Una descrizione pi`u dettagliata delle funzionalit`a che si
`e scelto di offrire agli utenti di questo servizio.
2.2 ANALISI FUNZIONALI 24
Funzionalit`a di base: Una analisi delle funzionalit`a di base per ren-
dere fruibile il servizio di conference.
Funzionalit`a aggiuntive: Una analisi delle funzionalit`a extra che si
vogliono offrire come valore aggiunto del servizio di conference.
Tariffazione: Analisi del sistema di tariffazione del servizio di conference.
Attori del sistema e Accesso al servizio
Ruolo Utenti Utenti Utenti
Messagenet Messagenet Altri operatori
con credito senza credito
Chairman Conf. Non-Free S`ı No No
Chairman Conf. Free S`ı S`ı No
Partecipante S`ı S`ı S`ı
Ospite S`ı S`ı S`ı
Tabella 2.2: Tabella dei tipi di accesso al servizio
Ogni tipo di utenza del servizio pu`o accedere secondo diversi ruoli, come
schematizzato nella tabella 2.2. Per ognuno dei diversi ruoli che si possono
assumere, segue una breve spiegazione su quali tipi di utenza possono as-
sumere un determinato ruolo e quali azioni pu`o compiere di conseguenza.
Queste sono riportate nel dettaglio nelle tabelle 2.3, 2.4 e 2.5.
Amministratore Operatore di back-office interno a Messagenet; essendo
admin ha accesso a tutto.
Chairman Il Chairman, per poter prenotare una conference, deve necessa-
riamente essere gi`a utente di www.messagenet.it, anche per le conferen-
ce gratuite. Inoltre, per le conference a pagamento deve avere del cre-
dito a disposizione. Il chairman `e lui stesso un partecipante della confe-
rence. Si distingue dal partecipante per il pin di accesso alla conference
e per l’accesso al pannello di amministrazione delle conference.
Partecipante Colui che, convocato, partecipa alla conference; pu`o anche
essere un chairman o un admin. Non `e necessario che sia utente n´e
cliente di Messagenet: infatti pu`o essere utente di Messagenet, clien-
te di un altro provider VoIP interconnesso a Messagenet o cliente di
2.2 ANALISI FUNZIONALI 25
un provider di telefonia fissa o mobile. Per partecipare alla conferen-
ce `e sufficiente che abbia le credenziali di accesso come partecipante,
ovvero numero di conference e pin. Ha inoltre accesso al pannello di
visualizzazione della conference in sola lettura.
Ospite Colui che viene invitato alla conference, chiamato direttamente dal
chairman. Se gli viene fornito il pin, anch’egli pu`o visualizzare via web
i dettagli della conference. Pu`o essere utente di Messagenet, cliente
di un altro provider VoIP interconnesso a Messagenet o cliente di un
provider di telefonia fissa o mobile.
Caratteristiche
A seconda del tipo di accesso al servizio, in qualit`a di chairman di conference
gratuita o a pagamento o in qualit`a di semplice partecipante, sono possibili
diverse azioni.
Naturalmente l’accesso dell’amministratore Messagenet `e completo, mentre
chiunque tenti di utilizzare il servizio senza credenziali non potr`a accedere
al pannello di amministrazione n´e a quello di visualizzazione, n´e tantomeno
partecipare alla conference.
Queste azioni son riepilogate nelle tabelle 2.3 e 2.4.
Anche le informazioni sulla conference visibili via web sono diverse a seconda
dei ruoli: il chairman nel suo pannello di gestione della conference vede alcune
informazioni in pi`u del partecipante. Il dettaglio delle informazioni visibili `e
riportato nella tabella 2.5.
Fra tutte le funzionalit`a a cui abbiamo pensato, alcune sono indispensabili
per il funzionamento di base del servizio, altre sono funzionalit`a extra che
agevolano la fruizione del servizio.
Funzionalit`a di base
Quelle che seguono sono le funzionalit`a principali della conference:
• Pannello Gestione della Conference
• Pannello Visualizzazione della Conference
• Accesso Telefonico alla Conference
• Prenotazioni
e per ciascuna ho svolto un’analisi pi`u precisa.
2.2 ANALISI FUNZIONALI 26
FUNZIONALIT`A/RUOLI A C P/O
AZIONI Non Free
Free
GESTIONE PRENOTAZIONI
Prenota 1 Conference Y Y Y n
Prenota + Conference Y Y n n
Elenca Conference Prenotate Y Y n n
Cancella Prenotazione Y Y Y n
Modifica Conference Y Y Y n
Convoca via mail Y Y Y n
Convoca via sms Y Y n n
Visualizza Log Testuale Y Y Y n
Ascolta Registrazione Conference Y Y Y n
Tabella 2.3: Tabella delle Funzionalit`a/Ruoli: Azioni
Pannello Gestione Conference Il Chairman pu`o gestire le conference e i
relativi partecipanti del servizio tramite un’interfaccia web.
Pi`u nel dettaglio, l’utente che vorr`a creare una conference avr`a a dispo-
sizione un pannello di amministrazione in cui gli sar`a possibile preno-
tare, elencare, visualizzare, modificare e cancellare conference, e con-
vocare un certo numero di partecipanti via e-mail e/o sms.
Una volta iniziata la conference, potr`a (de)mutizzare o espellere i parte-
cipanti e in caso di bisogno allungare la durata e/o aumentare il numero
di partecipanti. Inoltre potr`a chiamare eventuali ospiti aggiungendoli
alla conference.
Il chairman potr`a anche scegliere alcune opzioni sul comportamento
della conference, come ad esempio annunciare ai partecipanti se qual-
cuno entra in conference, oppure rendere la conference “Listen Only”,
in modo che solo il chairman possa parlare, oppure far ascoltare una
melodia ai partecipanti nell’attesa che entri il chairman. Potr`a inoltre
scegliere se registrare la conference. In fase di conferma della preno-
tazione, la conference viene assegnata ad uno dei Conference Engine
messi a disposizione per il servizio. Ad ogni Conference Engine sono
assegnati staticamente un numero telefonico per ogni prefisso disponibi-
le su www.messagenet.it, sia italiani che internazionali. Questi numeri
vengono quindi comunicati al chairman.
A conference iniziata, il chairman potr`a inoltre invitare degli ospiti
chiamandoli lui stesso e aggiungendoli alla conference. In questo caso,
il chairman, oltre alla conference, pagher`a anche la telefonata singola
2.2 ANALISI FUNZIONALI 27
FUNZIONALIT`A/RUOLI A C P/O
AZIONI Non Free
Free
GESTIONE PARTECIPANTI
Estendi Conference Y Y n n
Termina Conference Y Y Y n
Aumenta Num Max Partecipanti Y Y n n
Mutizza Y Y Y n
Demutizza Y Y Y n
Espelli Y Y Y n
Invita Ospite Y Y n n
Options Y Y Y n
Aggiungi nuovo contatto Y Y Y n
Assegna nome se unknown Y Y Y n
Tabella 2.4: Tabella delle Funzionalit`a/Ruoli: Azioni
verso l’ospite.
Pannello Visualizzazione Conference I partecipanti, durante tutta la
durata della conference, possono visualizzare via web qualche detta-
glio della conference: i partecipanti, la durata, ecc... L’elenco completo
si trova nella tabella 2.5.
Accesso Telefonico Conference Per collegarsi alla conference ogni par-
tecipante avr`a a disposizione un numero (o una serie di numeri) di
telefono da chiamare e due codici da digitare tramite Interactive Voice
Response (IVR). Il primo codice identifica la conference, il secondo `e il
pin di autenticazione.
I partecipanti potranno scegliere il prefisso per loro economicamente
pi`u vantaggioso, pagando quindi semplicemente una chiamata locale,
ovunque essi siano, sfruttando proprio la peculiarit`a della tecnologia
VoIP.
Se al momento della prenotazione della conference `e stata scelta l’op-
zione “Announce”, subito dopo il pin verr`a chiesto di comunicare a
voce il proprio nome che verr`a registrato e comunicato agli altri par-
tecipanti. Se `e stata scelta l’opzione “Wait for Leader”, i partecipanti
che entreranno in conference sentiranno un sottofondo musicale fino a
che non entrer`a il chairman. Se infine `e stata scelta l’opzione “Listen
Only”, i partecipanti potranno solo ascoltare, mentre il chairman sar`a
l’unico a poter parlare.
2.2 ANALISI FUNZIONALI 28
FUNZIONALIT`A/RUOLI A C P/O
VISTE
VISUALIZZAZIONE DETTAGLI CONFERENCE
Titolo-Descrizione Y Y Y
Numero Conference Y Y Y
Password Chairman Y Y n
Numeri Tel Accesso Conf Y Y Y
Opzioni Y Y Y
Lista Partecipanti Y Y Y
Data-ora inizio/fine Y Y Y
Max Partecipanti Y Y n
Log Y Y n
ID Conference Engine Y x x
Lista canali attivi Y x x
ID Chairman + dettagli Y x x
Tabella 2.5: Tabella delle Funzionalit`a/Ruoli: Viste
Il numero massimo di partecipanti ammesso alla conference `e stabilito
in fase di prenotazione dal chairman: se il numero massimo di parte-
cipanti `e stato raggiunto, chi tenter`a di entrare in conference sentir`a
tramite IVR un messaggio che lo avvisa che la conference ha raggiunto
il limite di partecipanti.
Prenotazioni La gestione delle prenotazioni avviene tramite un form nel
pannello di amministrazione.
Il sistema fornisce time-slot nell’arco dell’intera giornata, tutti i giorni
dell’anno con un servizio 24/7. Non sar`a quindi limitante negli orari la
posizione geografica.
La granularit`a dei time-slot a disposizione `e stata decisa a 15 minuti.
Le motivazioni di questa scelta si trovano al paragrafo 2.3.
Il numero massimo di partecipanti e di timeslot prenotabili dipende
dalla capienza e dall’occupazione dei Conference Engine.
Finch`e la conference non `e iniziata, ovvero finch`e l’ora di inizio `e mag-
giore dell’ora attuale, `e possibile effettuare modifiche, quali il rinvio ad
altra data, l’estensione della durata e del numero dei partecipanti, la
modifica delle opzioni e della descrizione.
Una volta iniziata e finch`e non sar`a terminata, ovvero finch`e l’ora di
fine `e maggiore dell’ora attuale, sar`a possibile solo estenderne la durata
o aumentare il numero di partecipanti, secondo disponibilit`a.
Una volta terminata la durata della conference, la conference rester`a
2.2 ANALISI FUNZIONALI 29
disponibile per consultazione in un apposito elenco. Da qui potr`a es-
sere eliminata a piacere dal chairman, ma nessun’altra modifica sar`a
possibile.
In realt`a l’eliminazione equivale solo a mettere una flag nel database
ad indicare che non deve essere pi`u visualizzata, ma rester`a comunque
in archivio per i soli scopi amministrativi/legali. Maggiori dettagli a
riguardo si trovano al paragrafo 4.2.
Funzionalit`a aggiuntive
Il progetto prevede alcune altre funzionalit`a extra non indispensabili al fun-
zionamento iniziale ma che si ha intenzione di sviluppare ed ampliare nel
tempo:
• Invito Ospite
• Convocazione e promemoria via email/sms
• Identificazione partecipanti per nome
• Log
Per ciascuna di queste ho curato l’analisi che riporto qui di seguito:
Invito ospite Soprattutto in ambito aziendale, pu`o capitare di voler invita-
re qualcuno di importante alla conference magari evitandogli l’impiccio
di telefonare e dover inserire le credenziali. Si `e quindi pensato di offrire
la possibilit`a al chairman di chiamare lui stesso l’ospite tramite il client
web gi`a presente sul sito di Messagenet e di aggiungerlo alla conferen-
ce. Sar`a possibile invitare pi`u di un ospite. Questo non comporter`a
ulteriori carichi sul sistema. L’unica limitazione `e sempre nel numero
di canali disponibili sul Conference Engine che ospita tale conference.
Convocazione e promemoria via sms/email Quando il chairman crea
la conference, nella pagina di conferma gli vengono forniti tutti i dati
necessari per accedere al servizio sia in qualit`a di chairman che in qua-
lit`a di partecipante.
Si vuole offrire la possibilit`a di specificare un testo ed un elenco di
contatti a cui inviare la convocazione alla conference unitamente alle
credenziali di accesso, via email e/o via sms.
Consentiremo inoltre di inviare un promemoria ai partecipanti e al
chairman stesso pochi minuti prima della conference. Anche questo
2.2 ANALISI FUNZIONALI 30
potr`a essere inviato a scelta via email o sfruttando il servizio sms di
Messagenet.
L’elenco dei contatti a cui inviare la convocazione e il promemoria po-
tr`a essere inserito manualmente o ricavato scegliendo i nominativi dalla
rubrica del chairman.
Identificazione partecipanti per nome Durante la chiamata, soprattut-
to se il chairman desidera (de)mutizzare/espellere qualcuno dalla confe-
rence, `e utile che possa identificare i partecipanti per numero o, ancora
meglio, per nome.
`E possibile soddisfare questa necessit`a grazie al supporto del Caller ID
e all’integrazione con una rubrica.
Asterisk supporta il Caller ID, ovvero l’identificativo del chiamante.
Dipende quindi dal provider del chiamante se verranno visualizzati il
proprio numero e/o il proprio nome al destinatario. La maggioranza
dei provider VoIP offre l’identificativo del chiamante completo di nomi-
nativo sulle chiamate in uscita. Quando si chiama un numero PSTN da
alcuni provider VoIP che non supportano l’identificativo del chiamante,
non verranno visualizzati il numero e/o il nome.
L’integrazione con la rubrica permette di recuperare, se presente, il no-
minativo tra i contatti del chairman quando il provider del chiamante
fornisce il numero ma non il nome. E nel caso non fornisca nemmeno
il numero si vuole offrire al chairman la possibilit`a di assegnare un no-
me che verr`a associato all’id del partecipante nella conference e che al
termine della chiamata verr`a eliminato.
Per offrire queste opzioni, `e sufficiente aggiungere al database una ta-
bella, chiamiamola per comodit`a [nominativi], in cui memorizzare tem-
poraneamente la relazione tra il numero di conference, l’identificativo
del partecipante in quella conference e il nominativo:
nominativi (id, confnum, callerid, name)
Tale nominativo potr`a essere quello inviato con il Caller ID, quello as-
segnatogli dal chairman o quello letto nella rubrica.
La prima volta che qualcuno acceder`a alla pagina delle informazioni
di una conference, sia esso il chairman o uno dei partecipanti, verr`a
inviata una richiesta ad Asterisk per ottenere l’elenco dei partecipanti.
Per ognuno di essi si potranno presentare tre casi:
• se il nominativo `e presente grazie al CallerID, lo si aggiunger`a cos`ı
com’`e nella tabella [nominativi].
• se il Caller ID fornisce il numero ma non il nome, si offrir`a al
chairman la scelta di tentare una ricerca nella rubrica:
2.2 ANALISI FUNZIONALI 31
– se il nome `e presente tra i contatti del chairman, lo si copier`a
nella tabella [nominativi]
– in caso contrario, si offrir`a la possibilit`a al chairman di aggiun-
gere il numero alla rubrica associandogli un nome o di asse-
gnarne uno temporaneo: in entrambi i casi tale nome verr`a
copiato nella tabella [nominativi]
• se il provider del chiamante non fornisce alcuna informazione, il
chairman potr`a associare comunque un nome temporaneo a tale
partecipante che verr`a memorizzato nella tabella [nominativi]; tut-
tavia non potr`a essere memorizzato nella rubrica proprio perch´e
non potrebbe essere associato ad alcun numero.
I dati verranno aggiornati ogni qual volta un partecipante o il chairman
stesso di una qualsiasi conference richieda il refresh della pagina con
l’elenco dei partecipanti.
Messagenet offre gi`a tra i suoi servizi la rubrica, per cui per integrare
questa funzionalit`a alla rubrica sar`a sufficiente sfruttare le funzioni gi`a
implementate.
Questo sistema inoltre non creerebbe problemi a livello di scalabilit`a,
per i seguenti motivi:
• l’accesso alla rubrica per la ricerca del nominativo avviene solo la
prima volta che un partecipante si aggiunge alla conference e solo
se il suo provider fornisce il numero ma non il nominativo;
• in tutti gli altri casi si accede alla tabella [nominativi]: dal mo-
mento che una volta che una chiamata termina, il record corri-
spondente in tale tabella viene eliminato, essa avr`a un numero di
record pari al numero di canali occupati, quindi nel caso peggiore
al massimo un numero di entry pari al numero massimo di canali
a disposizione. Il numero di canali disponibili non raggiunger`a
valori tali da rallentare l’accesso al database;
• l’accesso `e riservato ai partecipanti delle conference attive, quin-
di non prevedo un numero di accessi web e di refresh tali da
compromettere il servizio.
D’altro canto aggiornare le informazioni di tale tabella pi`u spesso di
quanto venga richiesto sarebbe solo uno spreco di risorse. Farlo invece
in intervalli di tempo molto pi`u lunghi fornirebbe informazioni errate:
si rischierebbe infatti che il nominativo di qualcuno che `e appena uscito
dalla conference venga assegnato a qualcun altro appena entrato, nei
2.2 ANALISI FUNZIONALI 32
casi in cui pi`u utenti senza numero e nome partecipino alla stessa con-
ference.
Questa soluzione quindi far`a in modo di offrire un servizio comple-
to lasciando la tabella [nominativi] sempre sufficientemente scarica da
consentire tempi di accesso sempre rapidi.
Log Un’altra funzionalit`a che riteniamo possa essere utile `e la registrazione
vocale della conference e il log testuale con la notifica di tutti gli in-
gressi e le uscite dalla conference (chi `e entrato/uscito e a che ora) e
delle eventuali azioni del chairman sugli utenti (chi e quando `e stato
(de)mutizzato o espulso). Questi file (registrazione vocale e log) rimar-
ranno consultabili online e scaricabili dal chairman allegati ai dettagli
della conference, fintanto che questa non verr`a eliminata dal chairman
stesso. Ho scelto questa soluzione a quella di inviare i log vocali via
email al termine della conference, in quanto per molti potrebbe es-
sere un’opzione indesiderata e potrebbe quindi comportare un inutile
intasamento della rete e un sovraccarico del mail-server.
Analisi del sistema di tariffazione
Tariffazione Free/Non Free La tariffazione, analizzata insieme alla divi-
sione commerciale, prevede due tipi di prenotazioni: una gratuita e
una a pagamento. Quella a pagamento avr`a un costo fisso relativamen-
te basso a cui verr`a sommato un costo per partecipante per la durata
della conference. Nel caso di invito di un ospite, la chiamata sar`a
addebitata al chairman secondo le tariffe in vigore. Saranno natural-
mente a pagamento anche gli sms utilizzati dal chairman per convocare
i partecipanti o inviati loro come promemoria della conference. Questo
naturalmente comporter`a dei controlli sul credito del chairman per po-
ter accedere a tali servizi a pagamento.
Il servizio a pagamento sar`a completo di tutte le funzionalit`a e non
avr`a particolari limitazioni se non quelle tecniche imposte dal sistema
o dal credito del chairman.
La versione gratuita sar`a limitata nel numero di partecipanti e permet-
ter`a di prenotare solo una conference per volta limitata nella durata.
Tali differenze sono riassunte nelle tabelle 2.3 e 2.4.
Naturalmente mentre le conference a pagamento sono riservate agli
utenti Messagenet con credito, quelle free possono essere prenotate sia
da utenti con che senza credito. Chi ha sufficiente credito e ha preno-
tato una conference free potr`a trasformarla in conference a pagamento
2.3 ANALISI DI SCALABILIT`A 33
nel caso desideri estendere run-time il numero di partecipanti o la du-
rata o invitare un ospite.
Ci sar`a inoltre un limite massimo nel numero totale di conference free
per evitare di non avere poi canali disponibili per quelle a pagamento,
garantendo quindi a queste ultime una priorit`a maggiore. A questo
riguardo si `e deciso di impostare un limite parametrizzabile e modifica-
bile nel tempo in funzione delle richieste che avremo per questo servizio.
Questo limite `e un tetto massimo di conference free a Conference Engi-
ne liberi. Questo vuol dire che se dovessero arrivare molte prenotazioni
di conference a pagamento, questo limite potrebbe scendere e coincidere
con lo spazio avanzato da queste ultime.
Integrazione sistema creditizio utenti Messagenet Il costo viene ad-
debitato sul credito del chairman alla prenotazione del servizio. Il cre-
dito non verr`a restituito in caso di cancellazione, per ragioni di natura
finanziaria.
Inoltre, si prevede un ulteriore guadagno dovuto all’invio delle convoca-
zioni e dei promemoria. Infatti, i partecipanti possono essere convocati
gratuitamente via e-mail o via sms tramite il servizio sms a pagamento
del sito messagenet.it.
Naturalmente `e possibile avvisare allo stesso modo i partecipanti nel
caso la conference per qualche motivo venga rimandata ad altra data
o altro orario.
Questi servizi sono pagati in anticipo, quindi in caso di credito insuf-
ficiente semplicemente non saranno attivati: la conference non verr`a
prenotata, oppure non sar`a possibile inviare gli sms, ecc... Per quanto
riguarda l’invito di ospiti da parte del chairman, la tariffazione sar`a ge-
stita run-time come una normale telefonata a due. In caso di termine
del credito terminer`a soltanto la conversazione con l’ospite, mentre il
resto della conference rimarr`a attiva.
2.3 Analisi di Scalabilit`a
Lo scopo di questa sezione `e capire qual `e il numero massimo di conference
contemporanee supportabili dal sistema e il numero massimo di partecipanti
per conference e in totale; ovvero capire come dimensionare le macchine in
funzione di quella che si pensa possa essere l’affluenza al servizio a pieno
regime.
I problemi di scalabilit`a possono insorgere a tre livelli:
2.3 ANALISI DI SCALABILIT`A 34
Media GateWay A livello dei Media GateWay il numero di canali PSTN
a disposizione `e limitato. Per come `e strutturata l’architettura del
sistema di conference, quanti canali sono disponibili per ogni Media
GateWay `e indifferente. Ci limiteremo quindi a fare considerazioni sul
numero totale di canali PSTN disponibili.
Conference Engine Il Conference Engine `e il server che si occupa di effet-
tuare il mix dei flussi, operazione che richiede discrete capacit`a compu-
tazionali. Quindi il Conference Engine potr`a supportare un numero di
canali che dipende direttamente dalla sua potenza.
bandwidth In base alla banda disponibile su ciascun Conference Engine
potr`o avere dei limiti sulla quantit`a di dati voce da trasmettere; ol-
tre questi limiti la qualit`a audio si abbasserebbe troppo rispetto agli
standard di qualit`a che intendiamo fornire.
Occorre precisare che non potendo sapere a priori quale sar`a la proporzione
di chiamate PSTN rispetto a quelle VoIP, dobbiamo stimare un intervallo
di valori plausibili e considerare i casi limite e quello medio. Dobbiamo
inoltre stimare mediamente quanti partecipanti verranno prenotati per ogni
conference.
In generale mi aspetto che il numero di chiamate PSTN sia maggiore
delle chiamate VoIP, poich´e attualmente il telefono tradizionale e il telefono
cellulare insieme sono certamente pi`u diffusi del telefono VoIP. D’altronde le
chiamate VoIP da utenti Messagenet verso i numeri forniti per la conference
sono gratuite, ci possiamo quindi aspettare che un certo numero di parteci-
panti sia incentivato a diventare utente Messagenet per poter partecipare alla
conference gratuitamente. Posso quindi pensare che in media avr`o all’incirca
lo stesso numero di chiamanti PSTN e VoIP.
Ne consegue che i Conference Engine nel complesso dovranno poter sup-
portare in tutto un numero di canali che sia almeno il doppio dei canali
PSTN. Una volta stimato il numero di canali supportati fisicamente da un
Conference Engine e considerato il numero prefissato di canali PSTN a di-
sposizione, sar`a facile calcolare quanti Conference Engine sono necessari per
supportare il servizio.
Le chiamate VoIP, oltre al limite di computazione sul Conference Engine,
avranno solo un limite fisico di trasporto dei dati sulla banda disponibile.
Fissiamo quindi il numero massimo di chiamate accettabili nel doppio dei
canali PSTN. Questo sar`a il limite superiore sul numero di partecipanti totali
di tutto il servizio di conference.
Nel caso estremo in cui, al contrario di quanto previsto, arrivassero tut-
te chiamate VoIP e nessuna PSTN, non si riscontreranno problemi, poi-
2.3 ANALISI DI SCALABILIT`A 35
ch´e i Conference Engine e la banda di rete a disposizione sarebbero gi`a
dimensionati adeguatamente.
Al contrario, se arrivassero solo chiamate PSTN, ovvero il doppio rispetto
al numero di canali PSTN disponibili quelle in eccesso verrebbero rifiutate,
nonostante la potenza dei Conference Engine, e si dovrebbe quindi provve-
dere ad aggiungere canali.
Poich´e una conference a due `e sostanzialmente una comune telefonata,
stabilisco che il numero minimo di partecipanti per ogni conference `e di 3
persone.
Il numero massimo di partecipanti che prevedo prenderanno parte alle
conference `e di circa 15 persone. Ritengo infatti che con un numero supe-
riore di persone si creerebbe troppa confusione. Naturalmente questo valore
dipende anche dalla capacit`a computazionale dei Conference Engine.
Stimo inoltre che le conference con pochi partecipanti, soprattutto quelle
gratuite, saranno la maggioranza. Quindi in media penso che potremo avere
circa 6 partecipanti per conference.
Ho a disposizione un certo numero di Conference Engine (CE) ognuno
con una capacit`a di calcolo diversa e quindi un numero massimo di canali
supportati diverso.
Di conseguenza, il carico massimo del sistema, ovvero il numero massimo
di partecipanti contemporanei equivale alla somma del numero massimo di
canali supportati da ogni Conference Engine.
Per ragioni tecniche (cfr. sezione 2.3.1) tutti i partecipanti di una stessa
conference devono essere ospitati sullo stesso Conference Engine.
Il massimo numero di conference supportabili per ogni Conference Engine
contemporaneamente pu`o essere stimato dal numero di canali supportati dal
Conference Engine diviso per il numero minimo di partecipanti.
0 ≤ conference per CE ≤
max canali sul CE
numero minimo partecipanti
Il massimo numero di conference contemporanee complessivo `e dato dalla
somma del massimo numero di conference ospitabili su ciascun Conference
Engine.
Per fare un esempio, ho a disposizione 90 canali PSTN collegati ad alcuni
Media GateWay (come ho specificato precedentemente non `e importante il
numero di Media GateWay ai fini di quest’analisi) che traducono il segnale
in VoIP. Quindi posso supporre di aver bisogno di altri 90 canali VoIP per
2.3 ANALISI DI SCALABILIT`A 36
le chiamate VoIP, per un totale di 180 canali VoIP che vengono convogliati
verso i Conference Engine. Supponiamo inoltre che i Conference Engine che
ho a disposizione riescano a gestire fino a 60 canali l’uno senza avere cali
nella qualit`a del servizio; quindi per gestire 180 canali in ingresso, me ne
serviranno almeno 3.
Nel caso limite in cui vengono prenotate solo conference da 3 partecipanti,
potr`o ospitarne contemporaneamente al massimo:
180
3
= 60
Nel caso limite opposto, ovvero di conference tutte da 15 partecipanti, sar`a
possibile prenotarne contemporaneamente non pi`u di:
180
15
= 12
Quindi nel caso medio di 6 partecipanti per conference, tale sistema ne potr`a
supportare insieme all’incirca:
180
6
= 30
Se si prevedesse quindi di avere una richiesta di pi`u di 60 conference con-
temporanee, considerando il caso migliore con tutte conference di 3 persone,
avremo bisogno di pi`u Conference Engine o di Conference Engine pi`u potenti.
Ma dobbiamo tenere conto anche dell’occupazione della banda e del carico
computazionale sul Conference Engine. Nel caso estremo in cui in un certo
time-slot siano presenti solo conference di 3 persone e un certo Conference
Engine sia pieno, la banda a disposizione sar`a molto occupata e il proces-
sore del Conference Engine sar`a molto carico. Questo `e il caso considerato
finora. Ma si potr`a verificare anche il caso opposto in cui ad esempio su
un certo Conference Engine sono state prenotate poche conference con molti
partecipanti ma in versione “listen only”. In questo caso solo pochissime
persone parlano e quindi occupano banda e processore. Sar`a quindi possibile
aggiungere pi`u conference, partecipanti od ospiti rispetto al caso precedente.
In ogni caso, in fase di prenotazione delle conference, ci lasceremo un
certo margine di tolleranza sulla potenza dei Conference Engine. Se quindi ad
esempio prevediamo che un Conference Engine possa supportare fisicamente
massimo 60 chiamate contemporanee, permetteremo di prenotarne solo 50.
In questo modo, oltre a non sovraccaricare troppo il server a discapito della
qualit`a audio, sar`a pi`u facile aggiungere partecipanti o invitare ospiti durante
la conference.
2.3 ANALISI DI SCALABILIT`A 37
Durata del Time-Slot
Le conference potranno avere una durata variabile. La durata minima `e
stata stabilita in 15 minuti. Ho scelto di dimensionare il Time-Slot a 15 mi-
nuti perch´e un tempo inferiore avrebbe complicato notevolmente la gestione
del calendario senza un particolare vantaggio per l’utente finale; un tempo
superiore penalizzerebbe gli utenti a cui `e sufficiente una breve durata.
Permette inoltre di concedere sufficiente tempo alle conference gratuite
senza rischiare che queste diventino predominanti rispetto a quelle a paga-
mento.
2.3.1 Algoritmo di Riempimento dei Conference Engi-
ne
Il Conference Engine `e un server che si occupa di ricevere le chiamate in in-
gresso e di mixarne i flussi audio per creare la conference. Il modulo MeetMe
di Asterisk deve essere installato sui Conference Engine ed `e proprio quello
che si occupa di effettuare il mix dei flussi audio. Il sistema che utilizzeremo
per fornire il servizio di conference comprende diversi Conference Engine.
Di conseguenza si `e reso necessario studiare un algoritmo che permetta di
scegliere il Conference Engine pi`u adatto in funzione del numero di canali
disponibili su ogni Conference Engine e del numero di partecipanti prenotati
per la conference richiesta.
Il problema da risolvere `e assimilabile al cosiddetto ‘bin-packing[8] pro-
blem’, in cui bisogna riempire dei contenitori con dei pacchetti di varie di-
mensioni e si cerca la disposizione ottimale in modo da riempire al meglio i
contenitori. Nel nostro caso i contenitori sono i Conference Engine, mentre i
pacchetti sono i gruppi di partecipanti, e quindi di canali, prenotati.
Proprio perch´e `e il modulo MeetMe a mixare i flussi audio dei partecipanti
alla conference, si rende necessario che tutte le chiamate della stessa confe-
rence utilizzino canali dello stesso Conference Engine.
Il nostro problema per`o non sar`a tanto quello di riempire il pi`u possibile
i Conference Engine, quanto di effettuare un bilanciamento di carico e ga-
rantire di conseguenza la possibilit`a a pi`u conference possibili di aumentare
il numero di partecipanti run-time senza rischiare che qualche Conference
Engine non abbia pi`u risorse sufficienti mentre altri Conference Engine sono
vuoti. In quest’ottica, in caso di forte richiesta di questo servizio, se le attuali
risorse si dimostrassero sottodimensionate, sar`a preferibile aggiungere nuovi
2.3 ANALISI DI SCALABILIT`A 38
Figura 2.3: First-Fit Figura 2.4: Next-Fit
Figura 2.5: Best-Fit Figura 2.6: Worst-Fit
Conference Engine piuttosto che aumentare la potenza di quelli esistenti. In
questo modo ogni Conference Engine non sar`a mai sovraccarico, avr`a lo spa-
zio necessario per eventualmente far aggiungere partecipanti alle conference
gi`a prenotate o in corso e al tempo stesso si sfrutteranno al meglio le risorse
a disposizione.
Questo porterebbe un ulteriore vantaggio, considerando il riempimento
dei Conference Engine anche in funzione del tempo. Le conference non han-
no tutte la stessa durata, ma possono avere durate differenti. Bisogna tenere
presente quindi la possibilit`a di espandere la conference anche nel tempo,
oltre che nel numero di partecipanti. Nel caso i sistemi attuali si rivelasse-
ro insufficienti, sarebbe infatti pi`u utile aggiungere nuovi Conference Engine
anzich´e aumentare la potenza di quelli esistenti.
Il problema del ‘bin-packing problem’ pu`o essere risolto con diversi algo-
ritmi, i principali sono illustrati dalle figure 2.3, 2.4, 2.5 e 2.6 e descritti di
seguito:
algoritmo first-fit (Fig. 2.3) Seguendo questo algoritmo, si posiziona ogni
conference nel primo Conference Engine che la possa contenere.
2.3 ANALISI DI SCALABILIT`A 39
Questo avr`a come effetto che i primi Conference Engine saranno quasi
sempre pieni, mentre gli ultimi saranno per lo pi`u scarichi, ma, come
abbiamo visto sopra, non `e quello di cui abbiamo bisogno.
algoritmo next-fit (Fig. 2.4) Questo algoritmo tenta di riempire i Confe-
rence Engine in ordine; ovvero man mano che si prenotano conference
viene riempito il primo Conference Engine, quando questo `e pieno o se
arriva una conference con un numero di partecipanti superiore al nume-
ro di canali gestibili, si passa al Conference Engine successivo, e tutti
quelli precendenti non vengono pi`u nemmeno presi in considerazione.
Questo non `e proprio quello che vorremmo ottenere. Infatti in alcuni
casi rischieremmo che i primi Conference Engine si saturino, senza da-
re possibilit`a di espansione e il sistema rimarrebbe sbilanciato. In altri
casi potremmo invece trovarci a non poter accettare una conference per
mancanza di spazio quando magari nel Conference Engine precedente
lo spazio c’`e.
algoritmo best-fit (Fig. 2.5) Con questo algoritmo si sceglie il Conference
Engine che lascerebbe meno spazio dopo l’inserimento della conference.
Questo algoritmo tende a compattare il pi`u possibile le conference nei
primi Conference Engine, per usarne il minor numero possibile. In altre
circostanze sarebbe stato sicuramente la soluzione migliore. Ma non lo
`e nel nostro caso, in quanto si vuole offrire la possibilit`a di aumentare
run-time il numero di partecipanti, e non `e un problema aumentare, se
necessario, il numero dei Conference Engine.
algoritmo worst-fit (Fig. 2.6) Con questo algoritmo si sceglie il Conferen-
ce Engine che lascerebbe pi`u spazio dopo l’inserimento della conference.
Nonostante il nome, questo algoritmo `e quello che ci fornisce la solu-
zione ottimale: infatti scegliendo sempre il Conference Engine in cui
resta pi`u spazio vuoto, va a scegliere sempre un Conference Engine in
modo che la conference sia espandibile. Inoltre, scegliendo sempre il
Conference Engine pi`u vuoto, tende naturalmente a bilanciare il carico
senza sovraccaricare alcuni Conference Engine pi`u di altri.
algoritmi decreasing Esistono anche alcune versioni leggermente miglio-
rate degli algoritmi appena elencati, ma prevedono un ordinamento
dell’input che nel nostro caso non `e possibile in quanto le conference
vanno allocate man mano che vengono prenotate.
Nel nostro caso, utilizzando un numero relativamente esiguo di Confe-
rence Engine (saremo sempre al massimo nell’ordine delle decine), non sar`a
2.3 ANALISI DI SCALABILIT`A 40
necessario un calcolo della complessit`a in funzione del numero dei Conference
Engine, come avverrebbe per i comuni algoritmi di bin-packing.
Gli algoritmi first-fit, next-fit e best-fit non si adattano molto bene
alla nostra situazione, per i motivi spiegati sopra. Quello che si adatta di pi`u
`e invece il worst-fit, il quale tende a scegliere il contenitore che lascia pi`u
spazio vuoto, bilancia il carico e consente l’espansione del numero di parte-
cipanti.
Per meglio valutare l’efficienza dell’algoritmo scelto, ho utilizzato il lin-
guaggio ICON[9] che mi ha permesso di rendere graficamente la distribuzione
delle conference nei Conference Engine.
Le immagini 2.3, 2.4, 2.5 e 2.6 mostrano proprio le distribuzioni dei parte-
cipanti nei Conference Engine a seconda dell’algoritmo scelto. Come si pu`o
notare nella figura 2.6, l’algoritmo Worst-Fit ha una distribuzione che per-
mette in quasi tutti i Conference Engine la possibilit`a di aggiungere qualche
partecipante.
Nelle figure 2.3, 2.4 e 2.5 invece mentre ci sono ancora Conference Engine
completamente vuoti, in altri non `e possibile aggiungere alcun altro parteci-
pante.
Per poter implementare l’algoritmo di Worst-Fit e quindi distribuire le
conference su un certo numero di Conference Engine, `e necessario utilizzare
tre tabelle, all’interno del database centrale:
CE (ceid, ip, maxchannels) Questa tabella raccoglie staticamente le in-
formazioni sui Conference Engine, quali l’id, l’indirizzo IP, il numero
massimo di canali supportabili alla macchina. L’associazione tra il
Conference Engine e il suo indirizzo IP viene mantenuta staticamente
anche sul SIP Proxy.
Tel (id, ceid, telnum) Questa tabella definisce staticamente la relazione
tra l’id del Conference Engine e il numero telefonico associato. Non
sappiamo ancora se si decider`a di assegnare ad ogni Conference Engine
un solo numero telefonico di accesso alla conference o un numero per
ogni prefisso che si sceglier`a di offrire per incentivarne la diffusione.
Proprio in previsione di questo, ho scelto di mantenere una tabella a
parte anzich´e inserire tale informazione direttamente nella tabella CE.
Conference Questa tabella `e ampiamente descritta al capitolo 4 con la ta-
bella 4.1 e contiene le informazioni riguardanti la conference: l’identifi-
cativo del chairman, le credenziali di accesso alla conference, la descri-
2.4 ANALISI DI AFFIDABILIT`A 41
zione, gli orari di inizio e fine conference, su quale Conference Engine
sar`a ospitata e se `e di tipo gratuito o a pagamento, insieme ad altri
dettagli.
Una volta scelto il Conference Engine pi`u adatto alla conference da prenotare,
verr`a comunicato al chairman il numero o l’elenco di numeri di telefono ad
esso associati nella tabella Tel.
2.4 Analisi di Affidabilit`a
In questa sezione espongo l’analisi condotta sull’affidabilit`a del servizio di
conference. In particolare ho analizzato quali sono i possibili effetti aggiun-
tivi rispetto al sistema attuale in caso di un danno ad uno dei componenti
dell’architettura di questo servizio (Cfr. Fig. 2.1 e Fig. 2.2).
I componenti che possono avere problemi a livello di rete sono:
Media GateWay In caso di danno ad un Media GateWay, tutte e sole le
chiamate che passano da quel Media GateWay cadranno. Sar`a suf-
ficiente per tali partecipanti telefonare nuovamente al numero della
conference e ripetere la procedura di autenticazione. In questo caso il
flusso arriver`a su uno degli altri Media GateWay attivi e verr`a inviato
al Conference Engine corretto.
SIP Proxy Il SIP Proxy interviene solo inizialmente in fase di negoziazione
della chiamata, quindi non impatta lo svolgimento della conference. `E
comunque gi`a ridondato e in caso di guasto, un secondo SIP Proxy di
backup far`a le sue funzioni.
A livello di applicazione i componenti potenzialmente interessati sono:
Web Server Il Web Server `e gi`a ridondato e protetto da un sistema ad
alta affidabilit`a. In caso di problemi saranno impattati solo i servizi
web di gestione e di visualizzazione delle informazioni della conference,
mentre a livello telefonico la conference proceder`a senza interruzioni.
`E comunque presente un sistema di backup che si attiva in real-time e
provvede a ripristinare in tempi brevi tutti i servizi.
Database centrale Il Database centrale `e anch’esso ridondato e protetto
da un sistema di failover in caso di danni. In questo caso potranno
essere impattati limitatamente i servizi web che prevedono ad esem-
pio la lettura del nominativo del chiamante. Il tempo di ripristino `e
comunque molto breve e quindi il disagio per l’utente sar`a minimo.
2.5 ANALISI DEI REQUISITI MINIMI 42
Conference Engine Il sistema di alta affidabilit`a che ho pensato, prevede
la presenza di un unico Conference Engine di backup. Infatti, tutti i
Conference Egine sono mappati sul SIP Proxy tramite il loro indirizzo
IP al numero telefonico a loro assegnato. In caso di guasto al Conferen-
ce Engine che ospita la conference non si pu`o evitare l’interruzione del
servizio, ma si garantisce la possibilit`a di riprendere la conference con le
stesse modalit`a con cui la si era iniziata, ovvero i partecipanti dovran-
no richiamare il numero telefonico della conference e ri-autenticarsi con
il codice room+pin. In caso di guasto ad uno dei Conference Engine,
quello di backup prender`a il suo indirizzo IP e quando i partecipanti
telefoneranno nuovamente per ricollegarsi alla conference il SIP Proxy
li rediriger`a direttamente sul nuovo Conference Engine. Inoltre conte-
stualmente verr`a riempito il database locale del Conference Engine di
backup a partire dai dati presenti sul database centrale. I Conference
Engine non `e detto che siano tutti uguali, quindi il Conference Engi-
ne di backup dovr`a essere almeno potente quanto il pi`u potente dei
Conference Engine.
In caso di problemi a pi`u di un Conference Engine, cosa che riteniamo
molto improbabile, solo il primo dei Conference Engine fermi sar`a rim-
piazzato da quello di backup. Nel caso in cui si arriver`a ad avere molti
Conference Engine, potremo decidere di utilizzare pi`u di un Conference
Engine di backup.
Un sistema che consenta un ripristino della conference in modo traspa-
rente all’utente sarebbe troppo complesso da realizzare e quindi troppo
costoso in proporzione al relativo vantaggio che se ne potrebbe ottenere,
e quindi si `e deciso di limitarsi a permettere di riprendere la conference.
2.5 Analisi dei requisiti minimi
In questa sezione analizzer`o quali sono i requisiti minimi dei client degli utenti
e delle macchine che fungeranno da server, sia per quanto riguarda l’hardware
che per quanto riguarda il software.
2.5.1 Analisi dei requisiti Hardware
L’utente, chairman o partecipante, che voglia accedere al servizio web di
prenotazione/visualizzazione delle conference, potr`a farlo da un qualsiasi PC
che abbia l’accesso a Internet. Per partecipare alla conference si pu`o utiliz-
zare un telefono VoIP, oppure un telefono PSTN collegato ad un apposito
2.5 ANALISI DEI REQUISITI MINIMI 43
adattatore VoIP, oppure ancora tramite un web client collegando al computer
un headset (cuffie+microfono) e la rete Internet.
I server che intervengono nel sistema sono:
• Media GateWay
• SIP Proxy
• Webserver
• Database
• Conference Engine
Per quanto riguarda i Media GateWay, il SIP Proxy, il Webserver e il
Database, le macchine sono gi`a presenti e il servizio di conference non com-
porter`a un incremento particolare dei requisiti di sistema. I Conference
Engine, dovendo occuparsi del mix dei flussi audio avranno bisogno di buo-
ne capacit`a computazionali, ma ad esempio non necessitano di particolare
spazio disco. Per poter garantire un certo numero di chiamate contempo-
ranee inoltre sar`a bene dotarlo di una connessione di rete sufficientemente
veloce.
2.5.2 Analisi dei requisiti Software
L’utente finale potr`a prenotare e visualizzare le conference via web utilizzan-
do un comunissimo browser. Il servizio offerto sul sito www.messagenet.it e il
prototipo sono testati sui pi`u comuni web-browser, ovvero Microsoft Internet
Explorer versioni 6 e 7 (per Microsoft Windows), Mozilla Firefox versioni 1.5
e 2 (per Microsoft Windows, Linux e Mac) e Safari (per Microsoft Windows
e Mac OS).
Per tutti i server `e richiesto un sistema operativo Linux. Per quanto
riguarda il software da installare sui server, il Media Gateway e il SIP
Proxy non necessitano di software aggiuntivo per supportare il servizio di
conference. Sul Webserver sar`a necessario avere installato Apache, Ma-
son[10], i moduli Asterisk::Manager e Class::DBI per Mason. Inoltre `e sul
Webserver che dovranno essere installati i file di questo progetto, descritti
al Cap. 4.
Sul server che ospiter`a il Database `e richiesta l’installazione di MySQL.
Infine su ogni Conference Engine dovranno essere presenti Asterisk, e in
particolare il suo modulo MeetMe, e il database MySQL.
“Choose a job you love, and you will never have to work a day in your life.”
Confucio
Capitolo 3
Strumenti utilizzati
In questo capitolo descriver`o brevemente gli strumenti utilizzati per realizza-
re questo progetto e per ciascuno motiver`o le scelte. Ad ognuno `e dedicata
una sezione.
Dopo aver analizzato il progetto come descritto nel capitolo precedente, in
seguito alle motivazioni presentate nel presente capitolo, abbiamo deciso di
mantenere il pi`u possibile gli strumenti gi`a in uso in azienda.
In particolare per quanto riguarda l’IP-PBX e la conference la scelta `e
caduta su Asterisk e, in particolare, sul suo modulo MeetMe, come spiegato
nella Sezione 3.1. Il linguaggio di programmazione scelto per la scrittura
dell’interfaccia `e Mason di cui parlo nella Sezione 3.2. Infine la Sezione 3.3
`e dedicata alla scelta del database MySQL.
3.1 IP-PBX: Asterisk
Asterisk[1] `e un centralino virtuale che consente di mettere in comunicazio-
ne chiamate dalla linea telefonica tradizionale (PSTN) e chiamate VoIP. `E
un software cosiddetto ‘open-source’, che offre quindi la possibilit`a di essere
personalizzato a piacimento. Di conseguenza `e molto flessibile e potente in
quanto permette di svolgere praticamente tutte le funzioni relative ad un
PBX.
I motivi che mi hanno spinto a scegliere proprio Asterisk sono gi`a stati
esaminati nella sezione 1.3.
3.2 LINGUAGGI DI PROGRAMMAZIONE: MASON 46
3.1.1 Conference: MeetMe
Uno dei moduli che Asterisk mette a disposizione `e MeetMe[2], nato proprio
per la configurazione delle conference call.
Per permettere al chairman di gestire la conference ho usato il comando
MeetMe. Quelle che seguono sono le possibili azioni in base alle opzioni
passate al comando (dove confno `e il numero della conference e user `e l’id
del partecipante):
meetme: Elenca tutte le conference
meetme kick confno user: Espelle un partecipante da una conference
meetme kick confno all: Espelle tutti i partecipanti
meetme list confno: Elenca i partecipanti ad una conference
meetme lock confno: Blocca una conference - nessun altro partecipante
`e ammesso
meetme unlock confno: Sblocca una conference
meetme mute confno user: Mutizza un partecipante in una conference
meetme unmute confno user: Demutizza un partecipante in una confe-
rence
3.2 Linguaggi di programmazione: Mason
L’interfaccia web per l’utente `e stata sviluppata in Mason [10].
Mason `e uno strumento per incorporare il linguaggio di programmazione Perl
nel testo, per creare testi dinamicamente, in genere testi in HTML.
Perl[11] (Practical Extraction and Report Language) `e un linguaggio di
programmazione ad alto livello, dinamico, procedurale e interpretato, crea-
to nel 1987 da Larry Wall. Perl `e stato creato inizialmente come ausilio ai
sistemisti, come linguaggio di manipolazione di testo e file. Si `e evoluto nel
tempo, anche grazie ad un potente sistema di moduli[12], in un linguaggio a
carattere pi`u generale, comprendente l’elaborazione di immagini, l’interroga-
zione di banche dati, i processi di comunicazione via rete, ed utilizzabile in
tutti quegli ambiti in cui non siano strettamente necessarie le performance
di un linguaggio compilato pi`u a basso livello, offrendo al contempo tempi
di sviluppo molto pi`u rapidi. Uno dei suoi maggior pregi `e che consente
3.3 DATABASE: MYSQL 47
di risolvere con grande semplicit`a ed eleganza problemi che con altri lin-
guaggi richiederebbero notevoli sforzi. Questo lo si deve alla sua praticit`a,
ricchezza, efficienza, completezza e praticit`a. Perl supporta sia il paradigma
procedurale che quello ad oggetti ed ha potenti funzioni per l’elaborazione
dei testi.
Uno dei motivi principali per cui ho scelto di utilizzare Mason al posto di
riutilizzare il codice PHP di Web-Meetme, `e proprio la modularit`a di Perl.
Perl infatti `e dotato di una della maggiori collezioni di moduli prodotte dal-
la sua vasta comunit`a di utenti. Ad esempio nella realizzazione di questo
progetto ho utilizzato principalmente due moduli:
• Asterisk::Manager[13]
• Class::DBI[14]
Il modulo Asterisk::Manager `e quello che consente di comunicare con Aste-
risk e inviargli i comandi, nel nostro caso quelli per gestire la conference.
Per l’integrazione con il database ho utilizzato il modulo Class::DBI che
permette di ‘mappare’ ogni tabella di un database come fosse un oggetto i
cui attributi sono i campi della tabella stessa. Il modulo stesso mette poi
a disposizione dei metodi per inserire, modificare o eliminare record dalla
tabella. Il fatto di avere un layer di astrazione tra il database e le azioni
da compiere sugli oggetti consente di non avere legami con il tipo di data-
base scelto. Infatti, proprio grazie a questa caratteristica mi sar`a possibile
utilizzare qualsiasi database. In futuro se sar`a necessario diventer`a molto
facile cambiare la base di dati semplicemente modificando solo i parametri
di connessione al database stesso (tipo, nome, dati di accesso del database).
Infine, Mason `e il linguaggio con il quale `e attualmente sviluppato il sito
aziendale, quindi `e stato scelto anche per omogeneit`a.
3.3 Database: MySQL
Sia per il database centrale, sia per ognuno dei database locali nei Conferen-
ce Engine abbiamo scelto di usare MySQL[15]. Proprio nell’ottica di avere i
costi pi`u bassi possibili per poter mantenere le tariffe delle conference concor-
renziali, si `e scelto un database gratuito, stabile e in grado di offrire tutte le
funzionalit`a necessarie e ritengo che MySQL risponda perfettamente a questi
requisiti.
“A script is what you give the actors,
but a program is what you give the audience.”
Ada Lovelace
Capitolo 4
Prototipo
Dopo aver analizzato il progetto (Cap. 2) e scelto gli strumenti da utilizzare
(Cap. 3), ho preparato le macchine di test per riprodurre un ambiente quanto
pi`u simile alla produzione e vi ho sviluppato il prototipo funzionante del
prodotto finale di conference VoIP/Telefonica secondo le specifiche descritte
al Cap. 2.
In questo capitolo descriver`o quindi nel dettaglio l’implementazione di
questo prototipo.
Nella Sezione 4.1 specifico quali funzionalit`a ho implementato e riporto
gli screenshot del prodotto realizzato.
La Sezione 4.2 `e dedicata alla descrizione della struttura dei database
cos`ı come ho pensato sia pi`u adatta per la realizzazione di questo progetto.
Far`o un confronto fra la tabella booking del database asterisk e la corri-
spondente tabella conference del database pear. Presenter`o inoltre il relativo
Schema Entit`a-Relazione e le tabelle che son state realizzate, accompagnate
da una spiegazione sui campi che le compongono e le relazioni tra di esse.
Infine, nella Sezione 4.3 tratto la realizzazione delle interfacce: spiego
quindi quali sono i file implementati, le relazioni tra di loro, quali classi e
quali funzioni son state implementate e quali sono le interazioni con i vari
componenti del sistema.
4.2 FUNZIONALIT`A IMPLEMENTATE 50
4.1 Funzionalit`a implementate
Fra tutte le funzionalit`a analizzate e descritte alla sezione 2.2.3, nel prototipo
ho realizzato quelle fondamentali, ovvero:
• Gestione delle conference
– Prenotazione (Fig. 4.1), modifica (Fig. 4.3), eliminazione (Fig.
4.4) di una conference
– Elenco delle conference passate (Fig. 4.5), presenti (Fig. 4.7) e
future (Fig. 4.6)
• Visualizzazione dei dettagli delle conference
– Completa per il chairman (Fig. 4.2 e Fig. 4.8)
– Limitata per i partecipanti (Fig. 4.13 e Fig. 4.14) con accesso e
login a parte (Fig. 4.12)
• Controllo delle conference run-time
– Estensione della durata (Fig. 4.10)
– Incremento del numero di partecipanti (Fig. 4.11)
– Elenco dei partecipanti attualmente presenti nella conference e dei
loro dettagli (Fig. 4.9)
– Controllo dei partecipanti: (de)mutizzazione ed espulsione (Fig.
4.9)
Gli screenshot presentati sono quelli del prototipo. L’aspetto delle pa-
gine non rispecchia molto la grafica del sito attuale di Messagenet in cui
si integrer`a. Questo perch´e, per ora, `e servito solo per verificare l’effettiva
funzionalit`a del servizio. In ogni caso, per quanto riguarda la grafica, si uti-
lizzano i fogli di stile (css) gi`a utilizzati da Messagenet per il resto del sito,
per cui non sar`a un problema uniformare la grafica del servizio di conference
al resto del sito quando entrer`a in produzione.
Le altre funzionalit`a, precedentemente definite come funzionalit`a aggiun-
tive, sono attualmente in fase di sviluppo, cos`ı come descritte al Paragrafo
2.2.3.
4.2 FUNZIONALIT`A IMPLEMENTATE 51
Gestione delle conference per il Chairman
Figura 4.1: Prenotazione Figura 4.2: Visualizzazione
Figura 4.3: Modifica Figura 4.4: Cancellazione
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk
Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk

Mais conteúdo relacionado

Semelhante a Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk

curr_rainone_marco_08092015
curr_rainone_marco_08092015curr_rainone_marco_08092015
curr_rainone_marco_08092015
Marco Rainone
 
Italian deft 7 manual 50
Italian deft 7 manual 50Italian deft 7 manual 50
Italian deft 7 manual 50
mstrom62
 
Comunicazione in un progetto di educativa di strada con strumenti web 2.0
Comunicazione in un progetto di educativa di strada con strumenti web 2.0Comunicazione in un progetto di educativa di strada con strumenti web 2.0
Comunicazione in un progetto di educativa di strada con strumenti web 2.0
Nicole Colombo
 

Semelhante a Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk (20)

Piccolo corso di internet edizione minima
Piccolo corso di internet edizione minimaPiccolo corso di internet edizione minima
Piccolo corso di internet edizione minima
 
curr_rainone_marco_08092015
curr_rainone_marco_08092015curr_rainone_marco_08092015
curr_rainone_marco_08092015
 
Italian deft 7 manual 50
Italian deft 7 manual 50Italian deft 7 manual 50
Italian deft 7 manual 50
 
Tablettiamo
TablettiamoTablettiamo
Tablettiamo
 
Gruppo C Mercoledì 31
Gruppo C Mercoledì 31Gruppo C Mercoledì 31
Gruppo C Mercoledì 31
 
Ai dbibliotecadigitale
Ai dbibliotecadigitaleAi dbibliotecadigitale
Ai dbibliotecadigitale
 
Relazione finale pedalaMi
Relazione finale pedalaMiRelazione finale pedalaMi
Relazione finale pedalaMi
 
Collaboration Suite: realizzazione di una piattaforma open source per la Pubb...
Collaboration Suite: realizzazione di una piattaforma open source per la Pubb...Collaboration Suite: realizzazione di una piattaforma open source per la Pubb...
Collaboration Suite: realizzazione di una piattaforma open source per la Pubb...
 
Deploying microsoft windows vista business desktops - Scheda corso LEN
Deploying microsoft windows vista business desktops - Scheda corso LENDeploying microsoft windows vista business desktops - Scheda corso LEN
Deploying microsoft windows vista business desktops - Scheda corso LEN
 
Amico web
Amico webAmico web
Amico web
 
MS Internet Explorer - Scheda corso LEN
MS Internet Explorer - Scheda corso LENMS Internet Explorer - Scheda corso LEN
MS Internet Explorer - Scheda corso LEN
 
Piattaforma e learning
Piattaforma e learningPiattaforma e learning
Piattaforma e learning
 
1antichi Corso Lim0910 Incontro1
1antichi Corso Lim0910 Incontro11antichi Corso Lim0910 Incontro1
1antichi Corso Lim0910 Incontro1
 
16. Creazione collettiva
16. Creazione collettiva16. Creazione collettiva
16. Creazione collettiva
 
Sharing school 2016 - Tecnologia - Lorenzo Brambille
Sharing school 2016 - Tecnologia - Lorenzo BrambilleSharing school 2016 - Tecnologia - Lorenzo Brambille
Sharing school 2016 - Tecnologia - Lorenzo Brambille
 
Web television tecnologie,modelli e futuro della nuova tendenza di massa
Web television tecnologie,modelli e futuro della nuova tendenza di massaWeb television tecnologie,modelli e futuro della nuova tendenza di massa
Web television tecnologie,modelli e futuro della nuova tendenza di massa
 
Comunicazione in un progetto di educativa di strada con strumenti web 2.0
Comunicazione in un progetto di educativa di strada con strumenti web 2.0Comunicazione in un progetto di educativa di strada con strumenti web 2.0
Comunicazione in un progetto di educativa di strada con strumenti web 2.0
 
Carli giovanni 5378593 lab tecn_istr_appr_formiconi's exp_
Carli giovanni 5378593 lab tecn_istr_appr_formiconi's exp_Carli giovanni 5378593 lab tecn_istr_appr_formiconi's exp_
Carli giovanni 5378593 lab tecn_istr_appr_formiconi's exp_
 
Tesi di Laurea Paolo Selce
Tesi di Laurea Paolo SelceTesi di Laurea Paolo Selce
Tesi di Laurea Paolo Selce
 
Progettazione di strumenti di comunicazione sostenibili per l'educazione: il ...
Progettazione di strumenti di comunicazione sostenibili per l'educazione: il ...Progettazione di strumenti di comunicazione sostenibili per l'educazione: il ...
Progettazione di strumenti di comunicazione sostenibili per l'educazione: il ...
 

Realizzazione di un servizio di conferenza telefonica/VoIP multiutente mediante software open source Asterisk

  • 1. UNIVERSIT`A STATALE DEGLI STUDI DI MILANO Facolt`a di Scienze Matematiche, Fisiche e Naturali Corso di Laurea Triennale in Informatica REALIZZAZIONE DI UN SERVIZIO DI CONFERENZA TELEFONICA/VoIP MULTIUTENTE MEDIANTE SOFTWARE OPEN SOURCE “ASTERISK” Relatrice Interna: Prof.ssa Elena PAGANI Correlatore Esterno: Dott. Michele VALZELLI Elaborato finale di: Ilaria PODDINE Matricola: 654331 Anno Accademico 2006/2007
  • 2. A nonna Iride e alla mia famiglia.
  • 3. Ringraziamenti Il primo ringraziamento va a nonna Iride, per aver saputo premere la leva giusta affinch´e mi decidessi a completare i miei studi in tempi ‘umani’... Mamma non finir`o mai di ringraziarla, per avermi sempre spronato ad andare avanti negli studi: solo ora mi rendo conto di quanto sia stata importante questa sua insistenza. La ringrazio poi per tutti i sacrifici concreti e morali che ha compiuto, insieme a pap`a, per permettermi di arrivare dove sono ora. Da adolescente devo esser stata un’osso duro, ma con questa Laurea spero di essermi un po’ riscattata... Ringrazio pap`a per avermi ‘iniziato’ al mondo dell’informatica, portando a casa il primo computer quando avevo appena 2 anni... Ancora lo ricordo, quel ‘cosone’ sulla moquette gi`u a Cupra, e poi le montagne di fogli a buchi per disegnare: quante volte mi son chiesta cosa volesse dire ‘GOTO’ o ’WHI- LE’! E poi la prima volta che ho visto il mouse ad uno SMAU... era tutto cos`ı entusiasmante!! E il bello `e che lo `e tutt’ora! E grazie anche a mio fratello Marco e mia cognata Paola che mi hanno sem- pre supportato, consigliato e aiutato. Ma soprattutto a Marco che a forza di suonare all’infinito le stesse canzoni dei Beatles mi ha insegnato ad apprez- zare ogni singolo strumento di ogni singolo brano... nella musica cos`ı come nella vita. Un ringraziamento particolare va alla Professoressa Elena Pagani, per la sua disponibilit`a, per la sua pazienza e per i preziosi consigli. Grazie a Michele, mio correlatore, nonch´e responsabile dell’area sviluppo, che mi ha seguito e supportato nel mio lavoro di Tesi e nel mio lavoro quotidiano fin dal primo giorno che ho messo piede in azienda. E poi un grazie immenso al dsy, davvero il miglior plugin per il DSI! `E stato uno strumento indispensabile, sia a livello didattico che a livello sociale. Qui ho conosciuto tante persone che con il tempo si son rivelate ottimi amici. In primis Astrid: come avrei fatto in questi anni se non ci fossi stata tu!!! (Prima o poi troverai davvero un monumento in comelico!!) E poi gli ami-
  • 4. Sommario 4 ci della t312: Dave, Mino, finito a Edinburgo, Alessandro & Ester, Walter, Francisco & Ilda, Nicol`o, Marco e Alessandro, emigrato in Danimarca insie- me a Ruut; che mi hanno iniziato al software libero e mi hanno insegnato che l’informatica non ha limiti e le reti ‘ciappi’ ne sono un esempio! E sempre tramite il dsy ho conosciuto Claudio che ora se ne sta in Nuova Zelanda, Grazia la miglior rappresentante degli studenti, anche lei all’estero in quel di Dublino, Christian, compagno di film, Yuri che mi ha tanto sopportato e supportato nei momenti di peggior sconforto, Francesco, che mi ha dato un assaggio di cosa volesse dire fare una tesi quando ero ancora a met`a strada con gli esami, Fanny che ogni tanto anche lei sparisce in qualche angolo di mondo lontano, e Sergio & Sara: ancora adesso spesso porto il ciondolo che mi avete regalato prima che partissi per l’America... E un grazie va anche ai compagni di studio che mi hanno reso la permanenza universitaria un po’ pi`u serena: per motivi di spazio non posso citarvi tutti, ma serbo un caro ricordo di ciascuno di voi. Ed infine un grazie grosso grosso va a due persone speciali: Viridiana, compagna di studi, coinquilina, collega ma soprattutto amica, con cui ho condiviso coinquilini pazzi, amici e lunghe chiacchierate fino alle 3 di matti- na; e Andrea, dirigente, Beatles’ fan nonch´e amico. A voi in particolare tanta gratitudine per aver creduto in me, nelle mie capacit`a e per avermi dato la possibilit`a di realizzare questa tesi. -Ilaria-
  • 5. “I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l’immaginazione.” – “Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.” – “Vedete, il telegrafo a filo `e un tipo molto, molto lungo di gatto. Voi tirate la sua coda a New York e la sua testa miagola a Los Angeles. Lo capite questo? E la radio opera esattamente allo stesso modo: voi mandate i segnali qui, e loro li ricevono l`ı. L’unica differenza `e che non c’`e alcun gatto.” Albert Einstein
  • 6. Sommario Il lavoro di Tesi si inserisce in un progetto pi`u ampio che prevede la rea- lizzazione delle funzionalit`a di PBX virtuale da fornire agli utenti del sito web aziendale www.messagenet.it, mediante il software open source ‘Asteri- sk PBX’. In particolare il lavoro riguarda la realizzazione di un servizio di conferenza telefonica/VoIP multiutente di cui ho curato l’analisi delle funzionalit`a da fornire all’utente, l’analisi delle problematiche di scalabilit`a e affidabilit`a e l’implementazione di un prototipo del prodotto finale. Una conferenza telefonica, o conference-call, `e una telefonata grazie alla qua- le il chiamante `e in grado di partecipare ad una conversazione in cui sono presenti pi`u partecipanti. Di seguito, per brevit`a, la chiamer`o conference. Tipicamente in una conference `e possibile fare in modo che tutti i parteci- panti possano sia ascoltare che interloquire oppure fare in modo che un solo partecipante possa parlare mentre gli altri sono deputati al semplice ascolto. L’analisi delle funzionalit`a da offrire ha permesso di definire precisamente quali sono le operazioni che ciascuno degli attori del sistema pu`o compiere. L’utente che volesse prenotare una conference, di seguito chiamato chairman, potr`a farlo tramite il sito. Per collegarsi alla conference ogni partecipante avr`a a disposizione un numero di telefono da chiamare e due codici numerici da digitare tramite Interactive Voice Response (IVR). Il primo codice da inserire `e il numero della room, il secondo e’ il pin di autenticazione. I partecipanti potranno scegliere il numero di telefono con il prefisso per loro economicamente pi`u vantaggio- so, pagando quindi semplicemente una chiamata locale, ovunque essi siano, sfruttando proprio la peculiarit`a della tecnologia VoIP. A conference iniziata, il chairman potr`a inoltre ’invitare’ degli ospiti chia- mandoli lui stesso e aggiungendoli alla room. Il chairman potr`a gestire le room e i partecipanti del servizio tramite un’interfaccia web integrata nel sito. Durante la conference, i partecipanti possono visualizzarne i dettagli principali su un’apposita pagina web. Dove presente, sar`a visibile l’identifi- cativo del chiamante, cio`e il nome e/o il numero. `E previsto inoltre un pannello di amministrazione con accesso riservato agli operatori di back-office per eventuali interventi di assistenza e di ammini- strazione.
  • 7. Sommario 2 L’analisi delle problematiche di scalabilit`a mette in evidenza il numero massimo di conference contemporanee supportabili dal sistema e il numero massimo di partecipanti per conference e in totale. Il calcolo `e stato effet- tutato in funzione sia del numero di canali PSTN riservati alle conference, sia in funzione delle capacit`a computazionali dei Conference Engine, sia di quante si stima saranno le chiamate PSTN rispetto al totale. Ho studiato quindi un algoritmo per la scelta dinamica del Conference Engine ottimale in funzione di quanti canali pu`o supportare al massimo ciascun Conference Engine e del numero di partecipanti richiesti per la conference da prenotare. `E stata effettuata un’analisi sull’affidabilit`a del servizio. In caso di guasto ad uno dei server, nel caso peggiore si garantisce la possibilit`a di riprendere la conference con le stesse modalit`a con cui la si era iniziata. Altrimenti i partecipanti non riscontreranno malfunzionamenti. Il tutto `e possibile gra- zie ad un sistema di clustering High-Availability gi`a a disposizione in azienda. A completamento del lavoro, a scopo dimostrativo, `e stato realizzato un prototipo del servizio finale di conference integrato con il sito web azienda- le www.messagenet.it. Questo documento `e suddiviso in cinque capitoli di cui dar`o una breve de- scrizione qui di seguito. Capitolo 1: Il primo capitolo contiene un’introduzione sulle motivazioni che mi hanno spinto a scegliere questo soggetto e una breve descrizione delle tecnologie VoIP e IP-PBX su cui si basa questo progetto; Capitolo 2: Il secondo capitolo riguarda l’analisi della struttura del servi- zio da offrire, dal punto di vista delle funzionalit`a, della scalabilit`a e dell’affidabilit`a; Capitolo 3: Il terzo capitolo della tesi descrive gli strumenti utilizzati in fase di implementazione e le motivazioni che hanno portato alla loro scelta; Capitolo 4: Il quarto capitolo riguarda l’implementazione del prototipo; ne presenta le caratteristiche e i dettagli di implementazione: dallo schema E-R alle classi create; Capitolo 5: Il quinto capitolo trae le conclusioni sul progetto descrivendo brevemente gli sviluppi futuri previsti.
  • 8. Indice 1 Introduzione 5 1.1 Presentazione del problema . . . . . . . . . . . . . . . . . . . 5 1.2 VoIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 IP-PBX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4 Scopo di questa tesi . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Architettura, analisi 13 2.1 Architettura del sistema . . . . . . . . . . . . . . . . . . . . . 14 2.2 Analisi Funzionali . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.1 Specifiche iniziali dell’azienda . . . . . . . . . . . . . . 18 2.2.2 Analisi di soluzioni esistenti . . . . . . . . . . . . . . . 18 2.2.3 Analisi delle Funzionalit`a e dell’Interfaccia Utente . . . 23 2.3 Analisi di Scalabilit`a . . . . . . . . . . . . . . . . . . . . . . . 33 2.3.1 Algoritmo di Riempimento dei Conference Engine . . . 37 2.4 Analisi di Affidabilit`a . . . . . . . . . . . . . . . . . . . . . . . 41 2.5 Analisi dei requisiti minimi . . . . . . . . . . . . . . . . . . . . 42 2.5.1 Analisi dei requisiti HW . . . . . . . . . . . . . . . . . 42 2.5.2 Analisi dei requisiti SW . . . . . . . . . . . . . . . . . 43 3 Strumenti utilizzati 45 3.1 IP-PBX: Asterisk . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.1.1 Conference: MeetMe . . . . . . . . . . . . . . . . . . . 46 3.2 Linguaggi di programmazione: Mason . . . . . . . . . . . . . . 46 3.3 Database: MySQL . . . . . . . . . . . . . . . . . . . . . . . . 47 4 Prototipo 49 4.1 Funzionalit`a implementate . . . . . . . . . . . . . . . . . . . . 50 4.2 Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.3 Implementazione . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.3.1 Scelte implementative . . . . . . . . . . . . . . . . . . 62 4.3.2 Moduli/classi/librerie usati . . . . . . . . . . . . . . . . 62
  • 9. Indice 2 4.3.3 Interfacce Utente . . . . . . . . . . . . . . . . . . . . . 63 5 Conclusione e sviluppi futuri 69 5.1 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.2 Sviluppi Futuri . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  • 10. Elenco delle figure 2.1 Network Layer . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Application Layer . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 First-Fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.4 Next-Fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.5 Best-Fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.6 Worst-Fit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.1 Prenotazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2 Visualizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.3 Modifica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.4 Cancellazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.5 Passate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.6 Future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.7 In corso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.8 Nessun partecipante . . . . . . . . . . . . . . . . . . . . . . . 53 4.9 Presenti un chairman e un partecipante . . . . . . . . . . . . 53 4.10 Aggiunta di un timeslot alla conference . . . . . . . . . . . . 53 4.11 Aggiunta di un partecipante alla conference . . . . . . . . . . 53 4.12 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.13 Nessun partecipante presente . . . . . . . . . . . . . . . . . . 54 4.14 Alcuni partecipanti presenti . . . . . . . . . . . . . . . . . . . 54 4.15 Schema E-R del database Pear . . . . . . . . . . . . . . . . . 55
  • 11. Elenco delle tabelle 1.1 Tabella dei software IP-PBX . . . . . . . . . . . . . . . . . . 10 2.1 Tabella ‘booking’ del database ‘asterisk’ di Web-Meetme . . . 19 2.2 Tabella dei tipi di accesso al servizio . . . . . . . . . . . . . . 24 2.3 Tabella delle Funzionalit`a/Ruoli: Azioni . . . . . . . . . . . . 26 2.4 Tabella delle Funzionalit`a/Ruoli: Azioni . . . . . . . . . . . . 27 2.5 Tabella delle Funzionalit`a/Ruoli: Viste . . . . . . . . . . . . . 28 4.1 Tabella ‘conference’ del database ‘pear’ . . . . . . . . . . . . 57
  • 12. Capitolo 1 Introduzione 1.1 Presentazione del problema La comunicazione `e un bisogno fondamentale nella vita dell’uomo. Per sopperire a questa necessit`a l’uomo `e in continua ricerca di nuovi stru- menti atti a questa funzione. L’evoluzione tecnologica ha permesso lo sviluppo di questi strumenti al fine di renderli sempre migliori dal punto di vista della fruibilit`a delle informa- zioni nel tempo e nello spazio. In ambito sociale la comunicazione non si limita solo al dialogo tra due in- terlocutori, ma pi`u spesso lo scambio di informazioni si estende a un numero pi`u ampio di persone. In particolare, nel corso dell’ultimo secolo, la rapidit`a di evoluzione degli strumenti tecnologici ha consentito lo sviluppo di sistemi di comunicazione sempre pi`u snelli, efficienti ed economici. Recentemente, le potenzialit`a della rete Internet hanno assunto un ruolo primario nell’evoluzione dei sistemi di comunicazione, riconducendo a s´e tutti i tradizionali canali di comunicazione ed implementandone di nuovi. E cos`ı, come `e avvenuto per la tradizionale posta, ormai quasi surclassata dalla pi`u moderna e-mail, anche le tecnologie adottate per la telefonia stanno subendo un radicale cambiamento di dire- zione, orientandosi sempre pi`u allo sfruttamento delle funzionalit`a messe a disposizione dalla rete. La tecnologia, figlia di questo cambiamento, che consente oggi di effettuare comunicazioni vocali attraverso Internet si chiama VoIP: Voice over Internet Protocol.
  • 13. 1.1 PRESENTAZIONE DEL PROBLEMA 6 L’evoluzione della tecnologia delle telecomunicazioni 1835 Telegrafo (Morse) 1870/80 Telefono (Meucci/Bell) 1895 Radiotrasmissione (Marconi) 1965 Personal Computer (Olivetti Programma 101 - Perotti) 1980 Telefonia Mobile Analogica 1991 World Wide Web 1992 Telefonia Mobile Digitale (GSM, ISDN) 1995 VoIP 1996 Fibra Ottica Ripercorrendo e analizzando le tappe principali della tecnologia delle teleco- municazioni, riportate qui sopra, `e possibile notare che la migrazione della telefonia dalla rete tradizionale ad Internet `e avvenuta in tempi estremamente brevi e pu`o essere considerata una evoluzione naturale. Infatti le caratteri- stiche di Internet, sono di gran lunga pi`u idonee alle necessit`a odierne, sia per quanto concerne l’affidabilit`a, ma anche per il pi`u importante aspetto economico di gestione. Questo perch´e i costi vanno suddivisi per tutte le applicazioni che la utilizzano. `E da notare, inoltre, che questa evoluzione `e stata possibile grazie ad un rapporto di simbiosi avvenuto tra la tecnologia utilizzata per il telefono e quella implementata per Internet. Infatti, senza la presenza di una rete di comunicazioni globale e soprattutto cos`ı capilla- re come quella della telefonia, Internet non sarebbe probabilmente evoluta nei tempi e nei modi in cui la conosciamo oggi. Ma se, da quando Internet sfruttava il famigerato doppino telefonico a quando l’introduzione delle “li- nee veloci” la rendeva praticamente indipendente dalla vecchia tecnologia, `e passato circa un decennio (in Italia 1995-2005, negli USA qualche anno prima), per il procedimento inverso, ovvero lo sfruttamento di Internet da parte della telefonia, si sta sperimentando una trasformazione molto pi`u ce- lere. Essendo oggi esistenti tecnologie sufficientemente avanzate necessarie al funzionamento e allo sfruttamento di tale sistema, `e facile ipotizzare che, con qualche “operazione di mercato” ben riuscita, e molte sono in atto in questi ultimi anni, a brevissimo, il buon caro e vecchio telefono sar`a solo un ricordo di altri tempi.
  • 14. 1.2 VOIP 7 In quest’ottica si `e pensato di proporre una nuova serie di servizi basati sul concetto di centralino virtuale. Tra questi ho scelto proprio il servizio di conference perch´e lo ritengo un utilissimo strumento per migliorare ed agevolare la comunicazione fra persone distanti che abbiano la necessit`a di coordinarsi, organizzarsi, comunicare a molte persone lontane lo stesso mes- saggio, o ad esempio per strutture che vogliano attuare l’e-learning a livello internazionale, ecc... Come tutti gli altri tipi di comunicazione, anche la conferenza `e entrata nel mondo virtuale. Come dalla lettera cartacea si `e passati alle e-mail, cos`ı dalle riunioni fisiche in cui ci si riunisce in una stanza per coordinarsi, per scambiarsi e condividere informazioni, per insegnare, ecc... il primo salto `e stato verso le cosiddette conference-call, ovvero telefonate tradizionali alle quali possono partecipare pi`u di due persone. Questo ha in parte eliminato le distanze, almeno a livello nazionale, in quan- to alla stessa conferenza telefonica possono partecipare persone fisicamente distanti. Il limite fin’ora era nell’elevato costo delle chiamate internazionali. Ma con il VoIP anche questo limite `e stato abbattuto e, addirittura, per le chiamate VoIP-VoIP il costo si `e azzerato. E quindi, come `e successo per le normali telefonate, anche le conference-call hanno iniziato a spostarsi dalle linee tradizionali al VoIP. 1.2 VoIP VoIP `e l’acronimo di Voice over Internet Protocol. Come dice il termine stesso, per VoIP si intendono comunicazioni vocali attraverso la rete Internet o una qualsiasi altra rete basata su IP, anzich´e su una rete di trasporto de- dicata, quale quella della telefonia tradizionale (Public Switched Telephone Network o PSTN). Il vantaggio principale del VoIP rispetto alla fonia tradizionale, infatti, `e che sfrutta come rete di trasporto proprio Internet che non `e una rete dedi- cata ed `e ormai molto diffusa (quasi come la telefonia mobile) oltre ad avere costi di gestione molto pi`u bassi. L’apparecchio utilizzato per la conversazione VoIP pu`o essere un comune PC al quale siano collegati una rete IP e un headset (cuffie+microfono) e che sia dotato di un client VoIP. In alternativa si pu`o utilizzare un telefono VoIP oppure un telefono comune collegato ad un apposito adattatore VoIP.
  • 15. 1.2 VOIP 8 Recentemente, inoltre, visto che la stragrande maggioranza dei dispositivi portatili moderni, quali cellulari, palmari, blackberry, ecc. implementa il protocollo IP, `e sufficiente dotarli di un apposito client software per trasfor- marli in veri e propri telefoni VoIP. La presenza di centralini VoIP/PSTN di interscambio rende inoltre possibile una forte interazione tra le due tecnologie facendo cos`ı da catalizzatore per la diffusione del VoIP. Un’altra ragione per cui il VoIP sta emergendo `e il suo basso costo di gestione e quindi di vendita rispetto alla telefonia tradizionale. Le compagnie telefoniche che stanno adottando questa tecnologia propongo- no prezzi sempre pi`u competitivi. I costi di gestione di una rete per un singolo servizio sono inversamente pro- porzionali al numero di servizi che questa offre. `E quindi facile intuire che, essendo Internet sfruttata per una quantit`a ele- vata di scopi, i costi di gestione per il VoIP ne risultano ridotti di molto. Per l’utenza residenziale il servizio telefonico VoIP si rivela spesso pi`u econo- mico del servizio telefonico tradizionale e pu`o abbattere i costi di instrada- mento per le chiamate a lunga distanza tipici della fonia tradizionale. Infatti `e possibile avere un numero di telefono con prefisso di una nazione diversa dalla propria e ricevere le chiamate in arrivo da qualunque luogo del mondo al costo, per il chiamante, di una telefonata diretta alla nazione prescel- ta, abbattendo cos`ı drasticamente i costi delle chiamate internazionali. Per esempio `e possibile avere un numero telefonico con prefisso italiano stando in Australia e farsi chiamare dall’Italia al costo di una chiamata nazionale. Ma sono soprattutto le aziende a trarre vantaggio dal VoIP, in quanto questa tecnologia permette loro di gestire dati e voce su un’unica rete. Questo comporta un duplice vantaggio: gestionale ed economico. Infatti, siccome il VoIP `e un servizio basato su IP si integra naturalmente con altri servizi di comunicazione come ad esempio il fax, la posta elettronica, gli sms, ecc. e diventa quindi uno straordinario strumento di collaborazione. Infine, la convenienza economica del VoIP sulle linee PSTN in ambito azien- dale `e ancora pi`u evidente se consideriamo che la maggior parte dei provider VoIP non addebitano alcun costo per le telefonate tra gli utenti dei propri servizi. Ad esempio, per un’azienda con diverse sedi geografiche che necessita di metterle in comunicazione, `e facile capire come il VoIP possa abbattere nettamente i costi, che in caso di aziende multinazionali possono essere molto elevati.
  • 16. 1.3 IP-PBX 9 In questo contesto si inserisce Messagenet Srl, l’azienda presso cui lavoro e per la quale ho realizzato questo progetto. Messagenet `e un provider VoIP che offre servizi di telefonia, FAX e SMS su IP. Tutti i servizi sono fruibili anche direttamente tramite il sito web aziendale www.messagenet.it: dall’invio dei fax via e-mail e degli SMS alla possibi- lit`a di effettuare chiamate tramite un soft-phone accessibile direttamente dal browser. A questi servizi si `e deciso di aggiungere la possibilit`a di gestire conferen- ze telefoniche tra utenti sia dei servizi Messagenet che di altri operatori VoIP e di telefonia tradizionale. 1.3 IP-PBX L’IP-PBX scelto per questo progetto di tesi `e Asterisk[1]. Un Private Branch eXchange o PBX `e un centralino telefonico per uso pri- vato. In genere `e usato nelle aziende per fornire una rete telefonica interna. Un IP-PBX `e un centralino virtuale, cio`e implementato tramite software, che consente di mettere in comunicazione utenti VoIP e utenti delle linee tele- foniche tradizionali in tutte le loro combinazioni (VoIP-VoIP, VoIP-PSTN, PSTN-PSTN). L’azienda per la quale sto progettando e realizzando questo prodotto ha richiesto che lo stesso soddisfacesse determinati requisiti: Economicit`a: La necessit`a di utilizzare un prodotto pi`u economico possibi- le deriva dal fatto che se si decidesse di adottare un prodotto costoso si andrebbe incontro al rischio di dover tenere il prezzo del servizio pi`u al- to per coprire il costo del prodotto stesso, perdendo quindi potenzialit`a dal punto di vista della concorrenza. Integrabilit`a: `E molto importante inoltre che il prodotto sia quanto pi`u integrato possibile con i sistemi gi`a in uso in azienda. Attualmente in azienda tutti i sistemi utilizzano sistemi operativi Unix-like, per cui si rende necessario che il prodotto scelto sia compatibile con tali sistemi operativi. Inoltre i servizi VoIP offerti da Messagenet sono gestiti con Asterisk. Per questo ed altri motivi spiegati nella sezione 3.1, abbia- mo quindi scelto proprio Asterisk come IP-PBX. Parte del servizio di conference sar`a fornito via web (prenotazioni, gestione, visualizzazione
  • 17. 1.3 IP-PBX 10 informazioni, ecc...). Quindi `e bene che anche l’interfaccia sia quanto pi`u integrata con il resto dei servizi gi`a fruibili sul sito. Espandibilit`a: Nell’ottica di migliorare costantemente i servizi offerti e, dove possibile, espanderli, `e preferibile un prodotto che d`ıa ampie pos- sibilit`a di aggiungere sempre pi`u funzionalit`a nel tempo senza dover ricorrere continuamente a nuovi prodotti esterni e poco integrati. Prima di decidere di svilupparlo internamente, ho valutato alcuni software che forniscono funzionalit`a di IP-PBX e pi`u in particolare di conference VoIP/PSTN per capire se valesse la pena utilizzare un prodotto gi`a pron- to o se fosse invece pi`u conveniente per l’azienda svilupparlo ”in casa“ su misura. Esistono numerosi software IP-PBX sia per architetture Microsoft Windows che per sistemi Unix-like. (Cfr. Tabella 1.1) Software (Produttore) Free Integrabile Espandibile Asterisk di Digium[1] Y Y Y SipX di SIPfoundry[4] Y Y Y 3CX[5] (vers. free) Y Y n 3CX[5] (vers. non free) n Y Y Cisco[6] n Y Y Platform di Voispeed[7] n Y Y Tabella 1.1: Tabella dei software IP-PBX Tra i software oggi disponibili per la gestione di conference VoIP/PSTN, alcuni sono a pagamento, altri completamente gratuiti, mentre altri ancora hanno versioni gratuite ma limitate nelle funzionalit`a. Tra quelli citati nella tabella 1.1, ad esempio, Cisco offre una gamma di prodotti dedicati all’IP-PBX molto validi, soprattutto per le grosse aziende, ma i costi sono piuttosto elevati; Platform di Voispeed `e anch’essa una solu- zione a pagamento; il servizio offerto da 3CX ha invece una versione gratuita ma limitata. Asterisk e SipX invece non richiedono alcuna licenza e non hanno limitazioni sulle funzionalit`a. Anche dal punto di vista dell’integrazione, sebbene sia Asterisk che sipX
  • 18. 1.4 SCOPO DI QUESTA TESI 11 offrano le necessarie funzionalit`a per fornire il servizio di conference, ho scel- to Asterisk per due motivi: innanzitutto perch´e in azienda era gi`a utilizzato per il servizio di VoIP e un’integrazione con SipX avrebbe inevitabilmente creato problemi, ma anche perch´e imparare ad utilizzare un nuovo strumento da zero e tentare di integrarlo con Asterisk sarebbe stato molto pi`u costoso in termini di tempo e risorse. Asterisk offre comunque tutte le funzionalit`a relative ad un PBX e pu`o facil- mente essere adattato alle proprie esigenze. `E quindi molto flessibile e non necessita di aggiunte per gli scopi che vogliamo ottenere. Infine garantisce una certa stabilit`a in quanto `e prodotto da Digium, no- to produttore di schede per VoIP. Per questi motivi tra l’altro risulta essere uno dei pi`u utilizzati. Quindi per gestire le chiamate della conference ho deciso di mantenere la scelta aziendale di appoggiarsi ad Asterisk. 1.4 Scopo di questa tesi Scopo di questa tesi `e quindi quello di aggiungere e integrare un servizio di conference alla gamma di servizi offerti da Messagenet Srl: analizzare la fat- tibilit`a di questo progetto, studiare quali funzionalit`a offrire ai clienti, capire quali sono i limiti in termini di scalabilit`a e che cosa `e necessario per garantire un livello di affidabilit`a rispondente alle esigenze dei clienti. A dimostrazione di tutto ci`o `e stato preparato un prototipo funzionante del prodotto finale.
  • 19. “Life is what happens to you while you’re busy making other plans.” John Lennon
  • 20. Capitolo 2 Architettura del sistema, analisi In questo capitolo descriver`o l’architettura del sistema e le analisi sulle fun- zionalit`a, sulla scalabilit`a e sull’affidabilit`a del sistema che mi hanno portato a progettarlo cos`ı. Tratter`o inoltre l’analisi dell’algoritmo migliore per la distribuzione delle conference sui vari Conference Engine. La Sezione 2.1 descrive l’architettura del sistema che l’azienda mi ha messo a disposizione. La Sezione 2.2 raggruppa le Analisi Funzionali, quelle cio`e che hanno portato alla scelta delle funzionalit`a da includere nel servizio di conference realizzato. In particolare, inizialmente ho esaminato le specifiche del progetto for- nitemi dal responsabile dello sviluppo e dal titolare dell’azienda. Insieme a loro, infatti si `e deciso prima il funzionamento generale del servizio ed in se- guito son state meglio definite le varie funzionalit`a da mettere a disposizione dei clienti. L’elenco di tali specifiche si trova al Paragrafo 2.2.1. Prima di iniziare a progettare ed implementare il servizio di conference ho analizzato un prodotto analogo gi`a esistente, Web-Meetme[3], per me- glio rendermi conto delle funzionalit`a che era possibile offrire, delle possibili difficolt`a in fase di implementazione e di come risolverle. Questo prodotto, open-source, fornisce un’interfaccia web al modulo MeetMe[2] di Asterisk, quello appunto che consente di effettuare le conference VoIP. L’interfaccia e’ sviluppata in php. Fornir`o una descrizione pi`u dettagliata a riguardo nel Paragrafo 2.2.2.
  • 21. 2.1 ARCHITETTURA DEL SISTEMA 14 L’analisi delle funzionalit`a da offrire viene descritta nel Paragrafo 2.2.3. Ho quindi iniziato una prima analisi delle problematiche di scalabi- lit`a in base alle funzionalit`a che si `e deciso di offrire e al sistema che mi `e stato messo a disposizione. L’analisi completa si trova nella Sezione 2.3. Infine, ho studiato un algoritmo di riempimento ottimale dei Con- ference Engine in funzione della capacit`a di calcolo di ogni Conference Engine e del numero di partecipanti richiesti dal chairman per una determi- nata conference. La spiegazione dell’algoritmo `e proposta nella Sezione 2.3.1. Per quanto riguarda l’alta affidabilit`a del sistema si `e deciso di proteg- gere i Conference Engine tenendone uno di backup in caso di guasto. Saranno ridondati in alta affidabilit`a anche il Web-Server e il Database. I dettagli e le motivazioni sono riportati alla Sezione 2.4. Infine, nella Sezione 2.5 sono riportati i requisiti minimi di sistema richiesti per il buon funzionamento del servizio. 2.1 Architettura del sistema In questa sezione descriver`o l’architettura del sistema. La parte di sistema che riguarda nello specifico il servizio di conferencing offerto `e illustrata in figura 2.1 e in figura 2.2. In dettaglio, per quanto riguarda la parte di networking, i componenti principali sono: Media GateWay Un Media Gateway agisce come unit`a di traduzione tra diverse reti di telecomunicazioni come PSTN, Next Generation Net- works, reti radio 2G/2.5G/3G o PBX. Visto che il Media GateWay connette differenti tipi di reti, una delle sue funzioni principali `e quel- la di convertire tra le differenti trasmissioni e tecniche di codifica. Il Media GateWay si occupa anche di funzionalit`a per lo streaming come l’echo-cancellation e DTMF. I Media GateWay VoIP provvedono alla conversione tra la voce che arriva sui canali PSTN e quella VoIP. SIP Proxy Un server SIP (Session Initial Protocol) costituisce il compo- nente principale di un IP-PBX, ovvero di un centralino virtuale, e si
  • 22. 2.1 ARCHITETTURA DEL SISTEMA 15 Figura 2.1: Network Layer Figura 2.2: Application Layer
  • 23. 2.1 ARCHITETTURA DEL SISTEMA 16 occupa dell’impostazione di tutte le chiamate SIP della rete. Un server SIP pu`o anche coincidere con il SIP Proxy o SIP Registrar. Per la parte applicativa i componenti utilizzati sono: Web Server Un web server `e un programma (e, per estensione, il compu- ter) che fornisce pagine web agli utenti che ne fanno richiesta utilizzan- do un programma client, il browser. Il web server utilizza il modello Client/Server e il protocollo HTTP. Database Un database `e una raccolta di informazioni organizzata in modo da poter essere facilmente accessibile per consultazione, modifiche e aggiornamenti. Nel nostro caso il sistema prevede un database centrale in cui verranno memorizzate tutte le conference passate, presenti e future. Su ogni Conference Engine sar`a installato un database locale che conterr`a le sole conference in corso ospitate da quel server. Conference Engine Il Conference Engine `e un server che riceve le chiama- te in ingresso via rete locale, e provvede ad effettuare il mix dei flussi audio in ingresso da inviare sui canali in uscita per permettere di sen- tire pi`u voci contemporaneamente. Nel sistema sono presenti diversi Conference Engine su cui saranno suddivise le conference in maniera da mantere bilanciato il carico su di essi. A livello di telefonia, le chiamate PSTN arrivano al Media GateWay che le traduce in VoIP e le invia al SIP Proxy. Le chiamate VoIP invece arriva- no al SIP Proxy direttamente dalla rete locale. Dopo la negoziazione con il SIP Proxy, le chiamate vengono redirette via VoIP direttamente al Conferen- ce Engine designato che quindi stabilisce con il chiamante una connessione diretta. Il SIP Proxy si occupa anche di mappare staticamente i numeri te- lefonici assegnati al servizio di conference sugli indirizzi IP dei Conference Engine. Se quindi ad ogni Conference Engine assegneremo uno o pi`u numeri telefonici, sar`a il SIP Proxy a mantenere questa relazione statica. La scelta del Conference Engine, e quindi del numero telefonico verso cui indirizzare le chiamate di ogni conference, viene fatta in fase di prenotazione direttamente dal programma di gestione delle conference. Quest’operazione `e completamente trasparente al chairman. La scelta di utilizzare pi`u di un Conference Engine, `e dovuta a diversi fattori: • Il costo dell’investimento iniziale potrebbe essere all’incirca equivalen- te, ma se si decide di partire con un unico Conference Engine molto
  • 24. 2.2 ANALISI FUNZIONALI 17 potente, questo sar`a anche molto costoso; partendo invece con poche macchine dalle caratteristiche non particolarmente elevate, il costo sar`a meglio dimensionabile e sicuramente inferiore. • In caso di necessit`a di ampliamento, `e pi`u pratico aggiungere una o pi`u macchine poco potenti anzich´e sostituire una macchina molto potente o potenziarla dovendo interrompere il servizio. • In caso di failure di una macchina poco potente in un gruppo di macchi- ne, il danno verso gli utenti sar`a minimo, al massimo qualche conferen- ce e sar`a sufficiente un Conference Engine di backup con prestazioni non elevate per supportare il servizio durante il problema; se questo accadesse con una unica macchina molto potenziata tutto il servizio di conference rimarrebbe bloccato e sarebbe necessaria una macchina altrettanto potente per garantire l’alta affidabilit`a. • In caso di danno permanente di una macchina poco potente, sar`a pi`u facile ed economico rimpiazzarla con una analoga; una molto potente sar`a pi`u costosa da sostituire o riparare. Ad un livello di astrazione pi`u alto, il servizio di prenotazione e gestione delle conference sar`a offerto via Internet. Le richieste delle pagine web arrive- ranno quindi ad un webserver che contatter`a Asterisk e un database centrale per fornire le informazioni richieste. I dati delle conference verranno salvati sul database centrale. Inoltre, su ogni Conference Engine verranno installati Asterisk, e in particolare il modulo MeetMe, ed un database locale che serve a mantenere le informazioni temporanee delle conference. Il database centrale e i database locali dei Conference Engine saranno sincronizzati tramite dei trigger. Per poter offrire un servizio affidabile, tali database locali saranno ridondati e protetti con un sistema di alta affidabilit`a. 2.2 Analisi Funzionali In questa sezione descriver`o quali funzionalit`a si `e scelto di offrire ed esporr`o le considerazioni che mi hanno portato a prendere tali decisioni anche in fun- zione delle specifiche iniziali fissate dall’azienda. Nell’analisi della problematica, mi `e stata d’aiuto l’analisi di una soluzione esistente di web-conference che ho preso a modello per studiarne le funzio- nalit`a, le problematiche affrontate e le relative soluzioni.
  • 25. 2.2 ANALISI FUNZIONALI 18 2.2.1 Specifiche iniziali dell’azienda L’azienda per cui sto sviluppando questo progetto ha richiesto che il prodotto avesse le seguenti caratteristiche di massima: • Permettere al cliente di prenotare, modificare, eliminare una conference • Permettere al cliente di gestire gli utenti della conference • Integrare il pi`u possibile questo servizio con gli altri offerti dall’azienda sul sito web • Prevedere la possibilit`a di integrare ulteriori funzionalit`a • Rendere il servizio scalabile • Rendere il servizio affidabile 2.2.2 Analisi di soluzioni esistenti La soluzione che ho preso a modello per realizzare il servizio di conference `e Web-Meetme. Web-Meetme `e un’interfaccia web sviluppata in php per interagire con il mo- dulo MeetMe di Asterisk. Il comando MeetMe di Asterisk consente infatti di gestire la conference e avere informazioni sui partecipanti dei quali permette l’espulsione o la mutizzazione. Maggiori dettagli sul modulo MeetMe di Asterisk sono alla sezione 3.1.1. Seguono una sottosezione in cui descriver`o il database, una sottosezione per l’interfaccia con il database e una per l’interfaccia con Asterisk utilizzati da Web-Meetme. DataBase Web-Meetme si appoggia ad un database MySQL (asterisk) composto da una sola tabella (booking), la cui struttura `e presentata nella tabella 2.1. Seguono alcune considerazioni sulla funzione dei campi di tale tabella e le eventuali incongruenze che ho riscontrato. bookId Il campo bookId `e l’identificativo della conference e rimane nascosto all’utente.
  • 26. 2.2 ANALISI FUNZIONALI 19 Field Type Null Key Default Extra bookId int(10) unsigned NO PRI NULL auto increment clientId int(10) unsigned YES 0 roomNo varchar(30) YES 0 roomPass varchar(30) NO 0 silPass varchar(30) NO 0 startTime datetime NO 0000-00-00 00:00:00 endTime datetime NO 0000-00-00 00:00:00 dateReq datetime NO 0000-00-00 00:00:00 dateMod datetime NO 0000-00-00 00:00:00 maxUser varchar(30) NO 10 status varchar(30) NO A confOwner varchar(30) NO confDesc varchar(100) NO aFlags varchar(10) NO uFlags varchar(10) NO sequenceNo int(10) unsigned YES 0 recurInterval int(10) unsigned YES 0 Tabella 2.1: Tabella ‘booking’ del database ‘asterisk’ di Web-Meetme clientId Il campo clientId identifica il cliente. Nel servizio offerto da Web- Meetme, questo campo viene impostato sempre a zero (monoutente). In questo caso pu`o essere lasciato vuoto quindi `e stato impostato come ‘nullable’. roomNo Il campo roomNo `e il numero della conference che i partecipanti dovranno digitare alla richiesta dell’IVR. Anche se per la tabella `e stato scelto il tipo di dato varchar, in realt`a nella pagina di creazione della conference di Web-Meetme si possono inserire solo valori numerici e tale numero viene generato a caso anche se pu`o essere modificato dall’utente. Inoltre mentre nel database di Web-Meetme il campo pu`o essere impostato a null, nella realt`a quando l’utente di Web-Meetme non inserisce alcun numero, il sistema lo genera a caso per lui. Quindi, di fatto, non viene mai lasciato a null. roomPass, silPass I campi roomPass e silPass sono i pin rispettivamente di partecipante e chairman da digitare alla richiesta dell’IVR. Nel da- tabase di Web-Meetme i campi sono di tipo varchar, mentre per poter essere digitati sulla tastiera del telefono devono essere numerici, come infatti viene richiesto poi nel form di creazione della conference. Inol-
  • 27. 2.2 ANALISI FUNZIONALI 20 tre entrambi vengono inventati dal chairman in fase di creazione della conference e possono anche essere lasciati in bianco. startTime, endTime I campi startTime ed endTime sono la data-ora di inizio e fine della conference. dateReq, dateMod I campi dateReq e dateMod servono per tenere traccia della data di creazione e di ultima modifica della conference. maxUser Il campo maxUser indica qual `e il numero di partecipanti preno- tati. Nel database di Web-Meetme `e stato scelto il tipo di dato varchar anche se `e un campo prettamente numerico. status Il campo status serve solo al funzionamento di Asterisk e deve essere impostato ad “A”. confOwner Il campo confOwner permette di salvare il nome del chairman. In Web-Meetme il campo viene compilato liberamente dal chairman tramite il form di creazione della conference. confDesc Questo campo semplicemente memorizza una breve descrizione della conference scelta dall’utente. In generale indicher`a di che cosa si ha intenzione di parlare durante la conference. aFlags Il campo aFlags `e una stringa di lettere e serve per indicare ad Asterisk quali opzioni attivare/disattivare per la conference a livello di amministrazione. Nella tabella ogni opzione `e rappresentata da una lettera. Alcune lettere (asdA) sono preimpostate staticamente per tutte le conference. La lettera ‘i’ (per “Info”), se presente, dice ad Asterisk di informare i partecipanti quando il chairman entra in conference. La lettera ‘r’ (per “Record”), se presente, avvisa Asterisk che la conference va registrata. A queste ultime due lettere corrispondono altrettanti checkbox nel form di creazione della conference. uFlags Il campo uFlags `e una stringa di lettere e serve per indicare ad Asterisk quali opzioni attivare/disattivare per la conference per quanto riguarda i partecipanti. Nella tabella ogni opzione `e rappresentata da una lettera. La lettera ‘d’ `e preimpostata staticamente per tutte le conference. La lettera ‘i’ (per “Info”), se presente, dice ad Asterisk di informare i partecipanti dell’ingresso in conference di un altro parteci- pante. La lettera ‘m’ (per “Mute”), se presente, avvisa Asterisk che la conference sar`a ’listen-only’, ovvero solo il chairman potr`a parlare. La lettera ‘w’ (per “Wait for leader”), se presente, informa Asterisk che
  • 28. 2.2 ANALISI FUNZIONALI 21 la conference non avr`a inizio fino all’arrivo del chairman A queste ulti- me tre lettere corrispondono altrettanti checkbox nel form di creazione della conference. sequenceNo, recurInterval Questi due campi servono in Web-Meetme in quanto permettono la prenotazione ricorsiva delle conference. Infatti, quando viene prenotata una conference ricorsiva, le conference vengono create subito, tutte con lo stesso numero di conference, ma con un sequenceNo diverso. Il campo recurInterval indica quanto tempo passa tra una conference e la successiva. Interfaccia PHP-DB In Web-Meetme non esiste un vero e proprio layer per interfacciarsi al data- base. Quindi tutte le query al database sono scritte direttamente all’interno delle pagine PHP. Interfaccia PHP-Asterisk Per interfacciarsi ad Asterisk e al modulo meetme, Web-Meetme utilizza la libreria phpagi. Questa permette di collegarsi [connect/disconnect] ad un server Asterisk pas- sandogli server, porta, username e password. Permette inoltre di inviare un comando [command] ad Asterisk o di origina- re [originate] una chiamata da Asterisk. Questo in particolare `e quello che permette di chiamare direttamente un ospite e aggiungerlo alla conference senza che quest’ultimo debba telefonare al numero prestabilito, inserendo le credenziali, ecc... Struttura files La pagina principale di Web-Meetme e’ meetme control.php. Questa richiede alcune librerie sia php che js, che contengono delle funzioni utilizzate anche dalle altre pagine. Meetme control.php prende come argomenti due parametri: s e t. Questi vengono assegnati in funzione della voce del menu scelta. Le voci del menu sono: • Add Conference • Delete Conferences • Past Conferences
  • 29. 2.2 ANALISI FUNZIONALI 22 • Current Conferences • Future Conferences In base ai valori assegnati ai parametri s e t, meetme control.php visua- lizza diverse informazioni, in genere dei form che raccolgono i dati da inviare ad appositi file per l’elaborazione. Nel caso dell’aggiunta della conference, meetme control.php mostra il form di inserimento e i dati, una volta inviati, vengono elaborati da conf add.php per l’inserimento vero e proprio nel database. Nel caso dell’eliminazione delle conference, meetme control.php presenta l’e- lenco delle conference prenotate dal chairman con i checkbox per sceglie- re quali eliminare e l’elenco delle conference da eliminare viene inviato a conf delete.php per l’eliminazione vera e propria. Nel caso di past/current/future conferences elenca le conference rispettiva- mente passate, correnti e future prenotate dal chairman e a seconda del caso mostra le varie azioni eseguibili su ognuna. In particolare, per le conference in corso e’ possibile visualizzare l’elenco dei partecipanti ed eseguire azioni su ciascuno di essi; questa parte `e gestita da conf control.php. Le altre azioni invece vengono processate da conf update.php. Riporto qui di seguito le pagine di maggior rilievo per l’analisi del funzio- namento di Web-Meetme: conf add.php Pagina per l’aggiunta delle conference. Contiene il codice per il form, per la verifica dei dati dopo l’inserimento e la modifica, e tutte le query SQL necessarie ad inserire o aggiornare i dati nel database o per effettuare le verifiche di correttezza e integrit`a dei dati inseriti. conf delete.php Pagina per l’eliminazione delle conference. Contiene il codice per elencare le conference eliminabili, le query SQL per la can- cellazione a database e tutta la logica di controllo. conf update.php Questa pagina viene utilizzata per elencare le conferenze passate, presenti e future. conf control.php Questa pagina serve a controllare la conference. Visualiz- za i partecipanti presenti alla conference e di ciascuno mostra il numero di telefono, il tipo di accesso (chairman/partecipante), l’eventuale no- minativo associato al numero nel caso di chiamata da VoIP, la durata della chiamata, se `e mutizzato o no e la possibilit`a per il chairman di (de)mutizzarlo o espellerlo. Con mutizzare si intende la facolt`a del
  • 30. 2.2 ANALISI FUNZIONALI 23 chairman di bloccare il flusso audio in arrivo dal partecipante selezio- nato, consentendogli comunque di continuare ad ascoltare quanto viene detto in conference. Gestisce anche l’invio dei comandi di list, mute e kick da inviare al modulo MeetMe di Asterisk. Punti deboli Rispetto alle richieste iniziali dell’azienda, Web-MeetMe realizza abbastanza bene le prime due specifiche, ovvero di poter creare, modificare ed eliminare le conference e di poterne gestire gli utenti. Per`o, essendo scritto in un linguaggio diverso da quello usato nel sito e se- guendo una logica molto meno “ad oggetti”, non si integrerebbe molto bene con il nostro sito e sarebbe di conseguenza poco espandibile nelle funzionalit`a. Inoltre Web-MeetMe non prevede l’uso di diversi Conference Engine e quindi non prevede nemmeno il bilanciamento del carico su tali server. Infatti non c’`e alcun controllo di questo tipo in fase di creazione della conference. Inoltre, Web-MeetMe nasce come servizio gratuito e illimitato, quindi non prevede controlli particolarmente severi. Infatti ad esempio non prevede al- cun controllo sul termine orario della conference: se i partecipanti restano al telefono al termine della conference, questa non viene interrotta, ma pro- segue finch´e l’ultimo partecipante non termina la chiamata. Questo per noi non `e accettabile in quanto faremo pagare le conference anche in funzione del tempo e non disponiamo di risorse illimitate. Per ovviare a questo problema, abbiamo quindi deciso preparare uno script che interrompa la conference al- l’ora predeterminata dal chairman eliminando il record relativo dal database del Conference Engine. 2.2.3 Analisi delle Funzionalit`a e dell’Interfaccia Uten- te Questa sezione descrive le scelte implementative del progetto riguardo l’in- terfaccia utente ed `e cos`ı suddiviso: Attori del sistema e Accesso al servizio: Una spiegazione sulle rela- zioni tra tipo di utenza e tipo di accesso al servizio. Una descrizione pi`u approfondita degli attori del sistema: chi pu`o fare cosa. Caratteristiche: Una descrizione pi`u dettagliata delle funzionalit`a che si `e scelto di offrire agli utenti di questo servizio.
  • 31. 2.2 ANALISI FUNZIONALI 24 Funzionalit`a di base: Una analisi delle funzionalit`a di base per ren- dere fruibile il servizio di conference. Funzionalit`a aggiuntive: Una analisi delle funzionalit`a extra che si vogliono offrire come valore aggiunto del servizio di conference. Tariffazione: Analisi del sistema di tariffazione del servizio di conference. Attori del sistema e Accesso al servizio Ruolo Utenti Utenti Utenti Messagenet Messagenet Altri operatori con credito senza credito Chairman Conf. Non-Free S`ı No No Chairman Conf. Free S`ı S`ı No Partecipante S`ı S`ı S`ı Ospite S`ı S`ı S`ı Tabella 2.2: Tabella dei tipi di accesso al servizio Ogni tipo di utenza del servizio pu`o accedere secondo diversi ruoli, come schematizzato nella tabella 2.2. Per ognuno dei diversi ruoli che si possono assumere, segue una breve spiegazione su quali tipi di utenza possono as- sumere un determinato ruolo e quali azioni pu`o compiere di conseguenza. Queste sono riportate nel dettaglio nelle tabelle 2.3, 2.4 e 2.5. Amministratore Operatore di back-office interno a Messagenet; essendo admin ha accesso a tutto. Chairman Il Chairman, per poter prenotare una conference, deve necessa- riamente essere gi`a utente di www.messagenet.it, anche per le conferen- ce gratuite. Inoltre, per le conference a pagamento deve avere del cre- dito a disposizione. Il chairman `e lui stesso un partecipante della confe- rence. Si distingue dal partecipante per il pin di accesso alla conference e per l’accesso al pannello di amministrazione delle conference. Partecipante Colui che, convocato, partecipa alla conference; pu`o anche essere un chairman o un admin. Non `e necessario che sia utente n´e cliente di Messagenet: infatti pu`o essere utente di Messagenet, clien- te di un altro provider VoIP interconnesso a Messagenet o cliente di
  • 32. 2.2 ANALISI FUNZIONALI 25 un provider di telefonia fissa o mobile. Per partecipare alla conferen- ce `e sufficiente che abbia le credenziali di accesso come partecipante, ovvero numero di conference e pin. Ha inoltre accesso al pannello di visualizzazione della conference in sola lettura. Ospite Colui che viene invitato alla conference, chiamato direttamente dal chairman. Se gli viene fornito il pin, anch’egli pu`o visualizzare via web i dettagli della conference. Pu`o essere utente di Messagenet, cliente di un altro provider VoIP interconnesso a Messagenet o cliente di un provider di telefonia fissa o mobile. Caratteristiche A seconda del tipo di accesso al servizio, in qualit`a di chairman di conference gratuita o a pagamento o in qualit`a di semplice partecipante, sono possibili diverse azioni. Naturalmente l’accesso dell’amministratore Messagenet `e completo, mentre chiunque tenti di utilizzare il servizio senza credenziali non potr`a accedere al pannello di amministrazione n´e a quello di visualizzazione, n´e tantomeno partecipare alla conference. Queste azioni son riepilogate nelle tabelle 2.3 e 2.4. Anche le informazioni sulla conference visibili via web sono diverse a seconda dei ruoli: il chairman nel suo pannello di gestione della conference vede alcune informazioni in pi`u del partecipante. Il dettaglio delle informazioni visibili `e riportato nella tabella 2.5. Fra tutte le funzionalit`a a cui abbiamo pensato, alcune sono indispensabili per il funzionamento di base del servizio, altre sono funzionalit`a extra che agevolano la fruizione del servizio. Funzionalit`a di base Quelle che seguono sono le funzionalit`a principali della conference: • Pannello Gestione della Conference • Pannello Visualizzazione della Conference • Accesso Telefonico alla Conference • Prenotazioni e per ciascuna ho svolto un’analisi pi`u precisa.
  • 33. 2.2 ANALISI FUNZIONALI 26 FUNZIONALIT`A/RUOLI A C P/O AZIONI Non Free Free GESTIONE PRENOTAZIONI Prenota 1 Conference Y Y Y n Prenota + Conference Y Y n n Elenca Conference Prenotate Y Y n n Cancella Prenotazione Y Y Y n Modifica Conference Y Y Y n Convoca via mail Y Y Y n Convoca via sms Y Y n n Visualizza Log Testuale Y Y Y n Ascolta Registrazione Conference Y Y Y n Tabella 2.3: Tabella delle Funzionalit`a/Ruoli: Azioni Pannello Gestione Conference Il Chairman pu`o gestire le conference e i relativi partecipanti del servizio tramite un’interfaccia web. Pi`u nel dettaglio, l’utente che vorr`a creare una conference avr`a a dispo- sizione un pannello di amministrazione in cui gli sar`a possibile preno- tare, elencare, visualizzare, modificare e cancellare conference, e con- vocare un certo numero di partecipanti via e-mail e/o sms. Una volta iniziata la conference, potr`a (de)mutizzare o espellere i parte- cipanti e in caso di bisogno allungare la durata e/o aumentare il numero di partecipanti. Inoltre potr`a chiamare eventuali ospiti aggiungendoli alla conference. Il chairman potr`a anche scegliere alcune opzioni sul comportamento della conference, come ad esempio annunciare ai partecipanti se qual- cuno entra in conference, oppure rendere la conference “Listen Only”, in modo che solo il chairman possa parlare, oppure far ascoltare una melodia ai partecipanti nell’attesa che entri il chairman. Potr`a inoltre scegliere se registrare la conference. In fase di conferma della preno- tazione, la conference viene assegnata ad uno dei Conference Engine messi a disposizione per il servizio. Ad ogni Conference Engine sono assegnati staticamente un numero telefonico per ogni prefisso disponibi- le su www.messagenet.it, sia italiani che internazionali. Questi numeri vengono quindi comunicati al chairman. A conference iniziata, il chairman potr`a inoltre invitare degli ospiti chiamandoli lui stesso e aggiungendoli alla conference. In questo caso, il chairman, oltre alla conference, pagher`a anche la telefonata singola
  • 34. 2.2 ANALISI FUNZIONALI 27 FUNZIONALIT`A/RUOLI A C P/O AZIONI Non Free Free GESTIONE PARTECIPANTI Estendi Conference Y Y n n Termina Conference Y Y Y n Aumenta Num Max Partecipanti Y Y n n Mutizza Y Y Y n Demutizza Y Y Y n Espelli Y Y Y n Invita Ospite Y Y n n Options Y Y Y n Aggiungi nuovo contatto Y Y Y n Assegna nome se unknown Y Y Y n Tabella 2.4: Tabella delle Funzionalit`a/Ruoli: Azioni verso l’ospite. Pannello Visualizzazione Conference I partecipanti, durante tutta la durata della conference, possono visualizzare via web qualche detta- glio della conference: i partecipanti, la durata, ecc... L’elenco completo si trova nella tabella 2.5. Accesso Telefonico Conference Per collegarsi alla conference ogni par- tecipante avr`a a disposizione un numero (o una serie di numeri) di telefono da chiamare e due codici da digitare tramite Interactive Voice Response (IVR). Il primo codice identifica la conference, il secondo `e il pin di autenticazione. I partecipanti potranno scegliere il prefisso per loro economicamente pi`u vantaggioso, pagando quindi semplicemente una chiamata locale, ovunque essi siano, sfruttando proprio la peculiarit`a della tecnologia VoIP. Se al momento della prenotazione della conference `e stata scelta l’op- zione “Announce”, subito dopo il pin verr`a chiesto di comunicare a voce il proprio nome che verr`a registrato e comunicato agli altri par- tecipanti. Se `e stata scelta l’opzione “Wait for Leader”, i partecipanti che entreranno in conference sentiranno un sottofondo musicale fino a che non entrer`a il chairman. Se infine `e stata scelta l’opzione “Listen Only”, i partecipanti potranno solo ascoltare, mentre il chairman sar`a l’unico a poter parlare.
  • 35. 2.2 ANALISI FUNZIONALI 28 FUNZIONALIT`A/RUOLI A C P/O VISTE VISUALIZZAZIONE DETTAGLI CONFERENCE Titolo-Descrizione Y Y Y Numero Conference Y Y Y Password Chairman Y Y n Numeri Tel Accesso Conf Y Y Y Opzioni Y Y Y Lista Partecipanti Y Y Y Data-ora inizio/fine Y Y Y Max Partecipanti Y Y n Log Y Y n ID Conference Engine Y x x Lista canali attivi Y x x ID Chairman + dettagli Y x x Tabella 2.5: Tabella delle Funzionalit`a/Ruoli: Viste Il numero massimo di partecipanti ammesso alla conference `e stabilito in fase di prenotazione dal chairman: se il numero massimo di parte- cipanti `e stato raggiunto, chi tenter`a di entrare in conference sentir`a tramite IVR un messaggio che lo avvisa che la conference ha raggiunto il limite di partecipanti. Prenotazioni La gestione delle prenotazioni avviene tramite un form nel pannello di amministrazione. Il sistema fornisce time-slot nell’arco dell’intera giornata, tutti i giorni dell’anno con un servizio 24/7. Non sar`a quindi limitante negli orari la posizione geografica. La granularit`a dei time-slot a disposizione `e stata decisa a 15 minuti. Le motivazioni di questa scelta si trovano al paragrafo 2.3. Il numero massimo di partecipanti e di timeslot prenotabili dipende dalla capienza e dall’occupazione dei Conference Engine. Finch`e la conference non `e iniziata, ovvero finch`e l’ora di inizio `e mag- giore dell’ora attuale, `e possibile effettuare modifiche, quali il rinvio ad altra data, l’estensione della durata e del numero dei partecipanti, la modifica delle opzioni e della descrizione. Una volta iniziata e finch`e non sar`a terminata, ovvero finch`e l’ora di fine `e maggiore dell’ora attuale, sar`a possibile solo estenderne la durata o aumentare il numero di partecipanti, secondo disponibilit`a. Una volta terminata la durata della conference, la conference rester`a
  • 36. 2.2 ANALISI FUNZIONALI 29 disponibile per consultazione in un apposito elenco. Da qui potr`a es- sere eliminata a piacere dal chairman, ma nessun’altra modifica sar`a possibile. In realt`a l’eliminazione equivale solo a mettere una flag nel database ad indicare che non deve essere pi`u visualizzata, ma rester`a comunque in archivio per i soli scopi amministrativi/legali. Maggiori dettagli a riguardo si trovano al paragrafo 4.2. Funzionalit`a aggiuntive Il progetto prevede alcune altre funzionalit`a extra non indispensabili al fun- zionamento iniziale ma che si ha intenzione di sviluppare ed ampliare nel tempo: • Invito Ospite • Convocazione e promemoria via email/sms • Identificazione partecipanti per nome • Log Per ciascuna di queste ho curato l’analisi che riporto qui di seguito: Invito ospite Soprattutto in ambito aziendale, pu`o capitare di voler invita- re qualcuno di importante alla conference magari evitandogli l’impiccio di telefonare e dover inserire le credenziali. Si `e quindi pensato di offrire la possibilit`a al chairman di chiamare lui stesso l’ospite tramite il client web gi`a presente sul sito di Messagenet e di aggiungerlo alla conferen- ce. Sar`a possibile invitare pi`u di un ospite. Questo non comporter`a ulteriori carichi sul sistema. L’unica limitazione `e sempre nel numero di canali disponibili sul Conference Engine che ospita tale conference. Convocazione e promemoria via sms/email Quando il chairman crea la conference, nella pagina di conferma gli vengono forniti tutti i dati necessari per accedere al servizio sia in qualit`a di chairman che in qua- lit`a di partecipante. Si vuole offrire la possibilit`a di specificare un testo ed un elenco di contatti a cui inviare la convocazione alla conference unitamente alle credenziali di accesso, via email e/o via sms. Consentiremo inoltre di inviare un promemoria ai partecipanti e al chairman stesso pochi minuti prima della conference. Anche questo
  • 37. 2.2 ANALISI FUNZIONALI 30 potr`a essere inviato a scelta via email o sfruttando il servizio sms di Messagenet. L’elenco dei contatti a cui inviare la convocazione e il promemoria po- tr`a essere inserito manualmente o ricavato scegliendo i nominativi dalla rubrica del chairman. Identificazione partecipanti per nome Durante la chiamata, soprattut- to se il chairman desidera (de)mutizzare/espellere qualcuno dalla confe- rence, `e utile che possa identificare i partecipanti per numero o, ancora meglio, per nome. `E possibile soddisfare questa necessit`a grazie al supporto del Caller ID e all’integrazione con una rubrica. Asterisk supporta il Caller ID, ovvero l’identificativo del chiamante. Dipende quindi dal provider del chiamante se verranno visualizzati il proprio numero e/o il proprio nome al destinatario. La maggioranza dei provider VoIP offre l’identificativo del chiamante completo di nomi- nativo sulle chiamate in uscita. Quando si chiama un numero PSTN da alcuni provider VoIP che non supportano l’identificativo del chiamante, non verranno visualizzati il numero e/o il nome. L’integrazione con la rubrica permette di recuperare, se presente, il no- minativo tra i contatti del chairman quando il provider del chiamante fornisce il numero ma non il nome. E nel caso non fornisca nemmeno il numero si vuole offrire al chairman la possibilit`a di assegnare un no- me che verr`a associato all’id del partecipante nella conference e che al termine della chiamata verr`a eliminato. Per offrire queste opzioni, `e sufficiente aggiungere al database una ta- bella, chiamiamola per comodit`a [nominativi], in cui memorizzare tem- poraneamente la relazione tra il numero di conference, l’identificativo del partecipante in quella conference e il nominativo: nominativi (id, confnum, callerid, name) Tale nominativo potr`a essere quello inviato con il Caller ID, quello as- segnatogli dal chairman o quello letto nella rubrica. La prima volta che qualcuno acceder`a alla pagina delle informazioni di una conference, sia esso il chairman o uno dei partecipanti, verr`a inviata una richiesta ad Asterisk per ottenere l’elenco dei partecipanti. Per ognuno di essi si potranno presentare tre casi: • se il nominativo `e presente grazie al CallerID, lo si aggiunger`a cos`ı com’`e nella tabella [nominativi]. • se il Caller ID fornisce il numero ma non il nome, si offrir`a al chairman la scelta di tentare una ricerca nella rubrica:
  • 38. 2.2 ANALISI FUNZIONALI 31 – se il nome `e presente tra i contatti del chairman, lo si copier`a nella tabella [nominativi] – in caso contrario, si offrir`a la possibilit`a al chairman di aggiun- gere il numero alla rubrica associandogli un nome o di asse- gnarne uno temporaneo: in entrambi i casi tale nome verr`a copiato nella tabella [nominativi] • se il provider del chiamante non fornisce alcuna informazione, il chairman potr`a associare comunque un nome temporaneo a tale partecipante che verr`a memorizzato nella tabella [nominativi]; tut- tavia non potr`a essere memorizzato nella rubrica proprio perch´e non potrebbe essere associato ad alcun numero. I dati verranno aggiornati ogni qual volta un partecipante o il chairman stesso di una qualsiasi conference richieda il refresh della pagina con l’elenco dei partecipanti. Messagenet offre gi`a tra i suoi servizi la rubrica, per cui per integrare questa funzionalit`a alla rubrica sar`a sufficiente sfruttare le funzioni gi`a implementate. Questo sistema inoltre non creerebbe problemi a livello di scalabilit`a, per i seguenti motivi: • l’accesso alla rubrica per la ricerca del nominativo avviene solo la prima volta che un partecipante si aggiunge alla conference e solo se il suo provider fornisce il numero ma non il nominativo; • in tutti gli altri casi si accede alla tabella [nominativi]: dal mo- mento che una volta che una chiamata termina, il record corri- spondente in tale tabella viene eliminato, essa avr`a un numero di record pari al numero di canali occupati, quindi nel caso peggiore al massimo un numero di entry pari al numero massimo di canali a disposizione. Il numero di canali disponibili non raggiunger`a valori tali da rallentare l’accesso al database; • l’accesso `e riservato ai partecipanti delle conference attive, quin- di non prevedo un numero di accessi web e di refresh tali da compromettere il servizio. D’altro canto aggiornare le informazioni di tale tabella pi`u spesso di quanto venga richiesto sarebbe solo uno spreco di risorse. Farlo invece in intervalli di tempo molto pi`u lunghi fornirebbe informazioni errate: si rischierebbe infatti che il nominativo di qualcuno che `e appena uscito dalla conference venga assegnato a qualcun altro appena entrato, nei
  • 39. 2.2 ANALISI FUNZIONALI 32 casi in cui pi`u utenti senza numero e nome partecipino alla stessa con- ference. Questa soluzione quindi far`a in modo di offrire un servizio comple- to lasciando la tabella [nominativi] sempre sufficientemente scarica da consentire tempi di accesso sempre rapidi. Log Un’altra funzionalit`a che riteniamo possa essere utile `e la registrazione vocale della conference e il log testuale con la notifica di tutti gli in- gressi e le uscite dalla conference (chi `e entrato/uscito e a che ora) e delle eventuali azioni del chairman sugli utenti (chi e quando `e stato (de)mutizzato o espulso). Questi file (registrazione vocale e log) rimar- ranno consultabili online e scaricabili dal chairman allegati ai dettagli della conference, fintanto che questa non verr`a eliminata dal chairman stesso. Ho scelto questa soluzione a quella di inviare i log vocali via email al termine della conference, in quanto per molti potrebbe es- sere un’opzione indesiderata e potrebbe quindi comportare un inutile intasamento della rete e un sovraccarico del mail-server. Analisi del sistema di tariffazione Tariffazione Free/Non Free La tariffazione, analizzata insieme alla divi- sione commerciale, prevede due tipi di prenotazioni: una gratuita e una a pagamento. Quella a pagamento avr`a un costo fisso relativamen- te basso a cui verr`a sommato un costo per partecipante per la durata della conference. Nel caso di invito di un ospite, la chiamata sar`a addebitata al chairman secondo le tariffe in vigore. Saranno natural- mente a pagamento anche gli sms utilizzati dal chairman per convocare i partecipanti o inviati loro come promemoria della conference. Questo naturalmente comporter`a dei controlli sul credito del chairman per po- ter accedere a tali servizi a pagamento. Il servizio a pagamento sar`a completo di tutte le funzionalit`a e non avr`a particolari limitazioni se non quelle tecniche imposte dal sistema o dal credito del chairman. La versione gratuita sar`a limitata nel numero di partecipanti e permet- ter`a di prenotare solo una conference per volta limitata nella durata. Tali differenze sono riassunte nelle tabelle 2.3 e 2.4. Naturalmente mentre le conference a pagamento sono riservate agli utenti Messagenet con credito, quelle free possono essere prenotate sia da utenti con che senza credito. Chi ha sufficiente credito e ha preno- tato una conference free potr`a trasformarla in conference a pagamento
  • 40. 2.3 ANALISI DI SCALABILIT`A 33 nel caso desideri estendere run-time il numero di partecipanti o la du- rata o invitare un ospite. Ci sar`a inoltre un limite massimo nel numero totale di conference free per evitare di non avere poi canali disponibili per quelle a pagamento, garantendo quindi a queste ultime una priorit`a maggiore. A questo riguardo si `e deciso di impostare un limite parametrizzabile e modifica- bile nel tempo in funzione delle richieste che avremo per questo servizio. Questo limite `e un tetto massimo di conference free a Conference Engi- ne liberi. Questo vuol dire che se dovessero arrivare molte prenotazioni di conference a pagamento, questo limite potrebbe scendere e coincidere con lo spazio avanzato da queste ultime. Integrazione sistema creditizio utenti Messagenet Il costo viene ad- debitato sul credito del chairman alla prenotazione del servizio. Il cre- dito non verr`a restituito in caso di cancellazione, per ragioni di natura finanziaria. Inoltre, si prevede un ulteriore guadagno dovuto all’invio delle convoca- zioni e dei promemoria. Infatti, i partecipanti possono essere convocati gratuitamente via e-mail o via sms tramite il servizio sms a pagamento del sito messagenet.it. Naturalmente `e possibile avvisare allo stesso modo i partecipanti nel caso la conference per qualche motivo venga rimandata ad altra data o altro orario. Questi servizi sono pagati in anticipo, quindi in caso di credito insuf- ficiente semplicemente non saranno attivati: la conference non verr`a prenotata, oppure non sar`a possibile inviare gli sms, ecc... Per quanto riguarda l’invito di ospiti da parte del chairman, la tariffazione sar`a ge- stita run-time come una normale telefonata a due. In caso di termine del credito terminer`a soltanto la conversazione con l’ospite, mentre il resto della conference rimarr`a attiva. 2.3 Analisi di Scalabilit`a Lo scopo di questa sezione `e capire qual `e il numero massimo di conference contemporanee supportabili dal sistema e il numero massimo di partecipanti per conference e in totale; ovvero capire come dimensionare le macchine in funzione di quella che si pensa possa essere l’affluenza al servizio a pieno regime. I problemi di scalabilit`a possono insorgere a tre livelli:
  • 41. 2.3 ANALISI DI SCALABILIT`A 34 Media GateWay A livello dei Media GateWay il numero di canali PSTN a disposizione `e limitato. Per come `e strutturata l’architettura del sistema di conference, quanti canali sono disponibili per ogni Media GateWay `e indifferente. Ci limiteremo quindi a fare considerazioni sul numero totale di canali PSTN disponibili. Conference Engine Il Conference Engine `e il server che si occupa di effet- tuare il mix dei flussi, operazione che richiede discrete capacit`a compu- tazionali. Quindi il Conference Engine potr`a supportare un numero di canali che dipende direttamente dalla sua potenza. bandwidth In base alla banda disponibile su ciascun Conference Engine potr`o avere dei limiti sulla quantit`a di dati voce da trasmettere; ol- tre questi limiti la qualit`a audio si abbasserebbe troppo rispetto agli standard di qualit`a che intendiamo fornire. Occorre precisare che non potendo sapere a priori quale sar`a la proporzione di chiamate PSTN rispetto a quelle VoIP, dobbiamo stimare un intervallo di valori plausibili e considerare i casi limite e quello medio. Dobbiamo inoltre stimare mediamente quanti partecipanti verranno prenotati per ogni conference. In generale mi aspetto che il numero di chiamate PSTN sia maggiore delle chiamate VoIP, poich´e attualmente il telefono tradizionale e il telefono cellulare insieme sono certamente pi`u diffusi del telefono VoIP. D’altronde le chiamate VoIP da utenti Messagenet verso i numeri forniti per la conference sono gratuite, ci possiamo quindi aspettare che un certo numero di parteci- panti sia incentivato a diventare utente Messagenet per poter partecipare alla conference gratuitamente. Posso quindi pensare che in media avr`o all’incirca lo stesso numero di chiamanti PSTN e VoIP. Ne consegue che i Conference Engine nel complesso dovranno poter sup- portare in tutto un numero di canali che sia almeno il doppio dei canali PSTN. Una volta stimato il numero di canali supportati fisicamente da un Conference Engine e considerato il numero prefissato di canali PSTN a di- sposizione, sar`a facile calcolare quanti Conference Engine sono necessari per supportare il servizio. Le chiamate VoIP, oltre al limite di computazione sul Conference Engine, avranno solo un limite fisico di trasporto dei dati sulla banda disponibile. Fissiamo quindi il numero massimo di chiamate accettabili nel doppio dei canali PSTN. Questo sar`a il limite superiore sul numero di partecipanti totali di tutto il servizio di conference. Nel caso estremo in cui, al contrario di quanto previsto, arrivassero tut- te chiamate VoIP e nessuna PSTN, non si riscontreranno problemi, poi-
  • 42. 2.3 ANALISI DI SCALABILIT`A 35 ch´e i Conference Engine e la banda di rete a disposizione sarebbero gi`a dimensionati adeguatamente. Al contrario, se arrivassero solo chiamate PSTN, ovvero il doppio rispetto al numero di canali PSTN disponibili quelle in eccesso verrebbero rifiutate, nonostante la potenza dei Conference Engine, e si dovrebbe quindi provve- dere ad aggiungere canali. Poich´e una conference a due `e sostanzialmente una comune telefonata, stabilisco che il numero minimo di partecipanti per ogni conference `e di 3 persone. Il numero massimo di partecipanti che prevedo prenderanno parte alle conference `e di circa 15 persone. Ritengo infatti che con un numero supe- riore di persone si creerebbe troppa confusione. Naturalmente questo valore dipende anche dalla capacit`a computazionale dei Conference Engine. Stimo inoltre che le conference con pochi partecipanti, soprattutto quelle gratuite, saranno la maggioranza. Quindi in media penso che potremo avere circa 6 partecipanti per conference. Ho a disposizione un certo numero di Conference Engine (CE) ognuno con una capacit`a di calcolo diversa e quindi un numero massimo di canali supportati diverso. Di conseguenza, il carico massimo del sistema, ovvero il numero massimo di partecipanti contemporanei equivale alla somma del numero massimo di canali supportati da ogni Conference Engine. Per ragioni tecniche (cfr. sezione 2.3.1) tutti i partecipanti di una stessa conference devono essere ospitati sullo stesso Conference Engine. Il massimo numero di conference supportabili per ogni Conference Engine contemporaneamente pu`o essere stimato dal numero di canali supportati dal Conference Engine diviso per il numero minimo di partecipanti. 0 ≤ conference per CE ≤ max canali sul CE numero minimo partecipanti Il massimo numero di conference contemporanee complessivo `e dato dalla somma del massimo numero di conference ospitabili su ciascun Conference Engine. Per fare un esempio, ho a disposizione 90 canali PSTN collegati ad alcuni Media GateWay (come ho specificato precedentemente non `e importante il numero di Media GateWay ai fini di quest’analisi) che traducono il segnale in VoIP. Quindi posso supporre di aver bisogno di altri 90 canali VoIP per
  • 43. 2.3 ANALISI DI SCALABILIT`A 36 le chiamate VoIP, per un totale di 180 canali VoIP che vengono convogliati verso i Conference Engine. Supponiamo inoltre che i Conference Engine che ho a disposizione riescano a gestire fino a 60 canali l’uno senza avere cali nella qualit`a del servizio; quindi per gestire 180 canali in ingresso, me ne serviranno almeno 3. Nel caso limite in cui vengono prenotate solo conference da 3 partecipanti, potr`o ospitarne contemporaneamente al massimo: 180 3 = 60 Nel caso limite opposto, ovvero di conference tutte da 15 partecipanti, sar`a possibile prenotarne contemporaneamente non pi`u di: 180 15 = 12 Quindi nel caso medio di 6 partecipanti per conference, tale sistema ne potr`a supportare insieme all’incirca: 180 6 = 30 Se si prevedesse quindi di avere una richiesta di pi`u di 60 conference con- temporanee, considerando il caso migliore con tutte conference di 3 persone, avremo bisogno di pi`u Conference Engine o di Conference Engine pi`u potenti. Ma dobbiamo tenere conto anche dell’occupazione della banda e del carico computazionale sul Conference Engine. Nel caso estremo in cui in un certo time-slot siano presenti solo conference di 3 persone e un certo Conference Engine sia pieno, la banda a disposizione sar`a molto occupata e il proces- sore del Conference Engine sar`a molto carico. Questo `e il caso considerato finora. Ma si potr`a verificare anche il caso opposto in cui ad esempio su un certo Conference Engine sono state prenotate poche conference con molti partecipanti ma in versione “listen only”. In questo caso solo pochissime persone parlano e quindi occupano banda e processore. Sar`a quindi possibile aggiungere pi`u conference, partecipanti od ospiti rispetto al caso precedente. In ogni caso, in fase di prenotazione delle conference, ci lasceremo un certo margine di tolleranza sulla potenza dei Conference Engine. Se quindi ad esempio prevediamo che un Conference Engine possa supportare fisicamente massimo 60 chiamate contemporanee, permetteremo di prenotarne solo 50. In questo modo, oltre a non sovraccaricare troppo il server a discapito della qualit`a audio, sar`a pi`u facile aggiungere partecipanti o invitare ospiti durante la conference.
  • 44. 2.3 ANALISI DI SCALABILIT`A 37 Durata del Time-Slot Le conference potranno avere una durata variabile. La durata minima `e stata stabilita in 15 minuti. Ho scelto di dimensionare il Time-Slot a 15 mi- nuti perch´e un tempo inferiore avrebbe complicato notevolmente la gestione del calendario senza un particolare vantaggio per l’utente finale; un tempo superiore penalizzerebbe gli utenti a cui `e sufficiente una breve durata. Permette inoltre di concedere sufficiente tempo alle conference gratuite senza rischiare che queste diventino predominanti rispetto a quelle a paga- mento. 2.3.1 Algoritmo di Riempimento dei Conference Engi- ne Il Conference Engine `e un server che si occupa di ricevere le chiamate in in- gresso e di mixarne i flussi audio per creare la conference. Il modulo MeetMe di Asterisk deve essere installato sui Conference Engine ed `e proprio quello che si occupa di effettuare il mix dei flussi audio. Il sistema che utilizzeremo per fornire il servizio di conference comprende diversi Conference Engine. Di conseguenza si `e reso necessario studiare un algoritmo che permetta di scegliere il Conference Engine pi`u adatto in funzione del numero di canali disponibili su ogni Conference Engine e del numero di partecipanti prenotati per la conference richiesta. Il problema da risolvere `e assimilabile al cosiddetto ‘bin-packing[8] pro- blem’, in cui bisogna riempire dei contenitori con dei pacchetti di varie di- mensioni e si cerca la disposizione ottimale in modo da riempire al meglio i contenitori. Nel nostro caso i contenitori sono i Conference Engine, mentre i pacchetti sono i gruppi di partecipanti, e quindi di canali, prenotati. Proprio perch´e `e il modulo MeetMe a mixare i flussi audio dei partecipanti alla conference, si rende necessario che tutte le chiamate della stessa confe- rence utilizzino canali dello stesso Conference Engine. Il nostro problema per`o non sar`a tanto quello di riempire il pi`u possibile i Conference Engine, quanto di effettuare un bilanciamento di carico e ga- rantire di conseguenza la possibilit`a a pi`u conference possibili di aumentare il numero di partecipanti run-time senza rischiare che qualche Conference Engine non abbia pi`u risorse sufficienti mentre altri Conference Engine sono vuoti. In quest’ottica, in caso di forte richiesta di questo servizio, se le attuali risorse si dimostrassero sottodimensionate, sar`a preferibile aggiungere nuovi
  • 45. 2.3 ANALISI DI SCALABILIT`A 38 Figura 2.3: First-Fit Figura 2.4: Next-Fit Figura 2.5: Best-Fit Figura 2.6: Worst-Fit Conference Engine piuttosto che aumentare la potenza di quelli esistenti. In questo modo ogni Conference Engine non sar`a mai sovraccarico, avr`a lo spa- zio necessario per eventualmente far aggiungere partecipanti alle conference gi`a prenotate o in corso e al tempo stesso si sfrutteranno al meglio le risorse a disposizione. Questo porterebbe un ulteriore vantaggio, considerando il riempimento dei Conference Engine anche in funzione del tempo. Le conference non han- no tutte la stessa durata, ma possono avere durate differenti. Bisogna tenere presente quindi la possibilit`a di espandere la conference anche nel tempo, oltre che nel numero di partecipanti. Nel caso i sistemi attuali si rivelasse- ro insufficienti, sarebbe infatti pi`u utile aggiungere nuovi Conference Engine anzich´e aumentare la potenza di quelli esistenti. Il problema del ‘bin-packing problem’ pu`o essere risolto con diversi algo- ritmi, i principali sono illustrati dalle figure 2.3, 2.4, 2.5 e 2.6 e descritti di seguito: algoritmo first-fit (Fig. 2.3) Seguendo questo algoritmo, si posiziona ogni conference nel primo Conference Engine che la possa contenere.
  • 46. 2.3 ANALISI DI SCALABILIT`A 39 Questo avr`a come effetto che i primi Conference Engine saranno quasi sempre pieni, mentre gli ultimi saranno per lo pi`u scarichi, ma, come abbiamo visto sopra, non `e quello di cui abbiamo bisogno. algoritmo next-fit (Fig. 2.4) Questo algoritmo tenta di riempire i Confe- rence Engine in ordine; ovvero man mano che si prenotano conference viene riempito il primo Conference Engine, quando questo `e pieno o se arriva una conference con un numero di partecipanti superiore al nume- ro di canali gestibili, si passa al Conference Engine successivo, e tutti quelli precendenti non vengono pi`u nemmeno presi in considerazione. Questo non `e proprio quello che vorremmo ottenere. Infatti in alcuni casi rischieremmo che i primi Conference Engine si saturino, senza da- re possibilit`a di espansione e il sistema rimarrebbe sbilanciato. In altri casi potremmo invece trovarci a non poter accettare una conference per mancanza di spazio quando magari nel Conference Engine precedente lo spazio c’`e. algoritmo best-fit (Fig. 2.5) Con questo algoritmo si sceglie il Conference Engine che lascerebbe meno spazio dopo l’inserimento della conference. Questo algoritmo tende a compattare il pi`u possibile le conference nei primi Conference Engine, per usarne il minor numero possibile. In altre circostanze sarebbe stato sicuramente la soluzione migliore. Ma non lo `e nel nostro caso, in quanto si vuole offrire la possibilit`a di aumentare run-time il numero di partecipanti, e non `e un problema aumentare, se necessario, il numero dei Conference Engine. algoritmo worst-fit (Fig. 2.6) Con questo algoritmo si sceglie il Conferen- ce Engine che lascerebbe pi`u spazio dopo l’inserimento della conference. Nonostante il nome, questo algoritmo `e quello che ci fornisce la solu- zione ottimale: infatti scegliendo sempre il Conference Engine in cui resta pi`u spazio vuoto, va a scegliere sempre un Conference Engine in modo che la conference sia espandibile. Inoltre, scegliendo sempre il Conference Engine pi`u vuoto, tende naturalmente a bilanciare il carico senza sovraccaricare alcuni Conference Engine pi`u di altri. algoritmi decreasing Esistono anche alcune versioni leggermente miglio- rate degli algoritmi appena elencati, ma prevedono un ordinamento dell’input che nel nostro caso non `e possibile in quanto le conference vanno allocate man mano che vengono prenotate. Nel nostro caso, utilizzando un numero relativamente esiguo di Confe- rence Engine (saremo sempre al massimo nell’ordine delle decine), non sar`a
  • 47. 2.3 ANALISI DI SCALABILIT`A 40 necessario un calcolo della complessit`a in funzione del numero dei Conference Engine, come avverrebbe per i comuni algoritmi di bin-packing. Gli algoritmi first-fit, next-fit e best-fit non si adattano molto bene alla nostra situazione, per i motivi spiegati sopra. Quello che si adatta di pi`u `e invece il worst-fit, il quale tende a scegliere il contenitore che lascia pi`u spazio vuoto, bilancia il carico e consente l’espansione del numero di parte- cipanti. Per meglio valutare l’efficienza dell’algoritmo scelto, ho utilizzato il lin- guaggio ICON[9] che mi ha permesso di rendere graficamente la distribuzione delle conference nei Conference Engine. Le immagini 2.3, 2.4, 2.5 e 2.6 mostrano proprio le distribuzioni dei parte- cipanti nei Conference Engine a seconda dell’algoritmo scelto. Come si pu`o notare nella figura 2.6, l’algoritmo Worst-Fit ha una distribuzione che per- mette in quasi tutti i Conference Engine la possibilit`a di aggiungere qualche partecipante. Nelle figure 2.3, 2.4 e 2.5 invece mentre ci sono ancora Conference Engine completamente vuoti, in altri non `e possibile aggiungere alcun altro parteci- pante. Per poter implementare l’algoritmo di Worst-Fit e quindi distribuire le conference su un certo numero di Conference Engine, `e necessario utilizzare tre tabelle, all’interno del database centrale: CE (ceid, ip, maxchannels) Questa tabella raccoglie staticamente le in- formazioni sui Conference Engine, quali l’id, l’indirizzo IP, il numero massimo di canali supportabili alla macchina. L’associazione tra il Conference Engine e il suo indirizzo IP viene mantenuta staticamente anche sul SIP Proxy. Tel (id, ceid, telnum) Questa tabella definisce staticamente la relazione tra l’id del Conference Engine e il numero telefonico associato. Non sappiamo ancora se si decider`a di assegnare ad ogni Conference Engine un solo numero telefonico di accesso alla conference o un numero per ogni prefisso che si sceglier`a di offrire per incentivarne la diffusione. Proprio in previsione di questo, ho scelto di mantenere una tabella a parte anzich´e inserire tale informazione direttamente nella tabella CE. Conference Questa tabella `e ampiamente descritta al capitolo 4 con la ta- bella 4.1 e contiene le informazioni riguardanti la conference: l’identifi- cativo del chairman, le credenziali di accesso alla conference, la descri-
  • 48. 2.4 ANALISI DI AFFIDABILIT`A 41 zione, gli orari di inizio e fine conference, su quale Conference Engine sar`a ospitata e se `e di tipo gratuito o a pagamento, insieme ad altri dettagli. Una volta scelto il Conference Engine pi`u adatto alla conference da prenotare, verr`a comunicato al chairman il numero o l’elenco di numeri di telefono ad esso associati nella tabella Tel. 2.4 Analisi di Affidabilit`a In questa sezione espongo l’analisi condotta sull’affidabilit`a del servizio di conference. In particolare ho analizzato quali sono i possibili effetti aggiun- tivi rispetto al sistema attuale in caso di un danno ad uno dei componenti dell’architettura di questo servizio (Cfr. Fig. 2.1 e Fig. 2.2). I componenti che possono avere problemi a livello di rete sono: Media GateWay In caso di danno ad un Media GateWay, tutte e sole le chiamate che passano da quel Media GateWay cadranno. Sar`a suf- ficiente per tali partecipanti telefonare nuovamente al numero della conference e ripetere la procedura di autenticazione. In questo caso il flusso arriver`a su uno degli altri Media GateWay attivi e verr`a inviato al Conference Engine corretto. SIP Proxy Il SIP Proxy interviene solo inizialmente in fase di negoziazione della chiamata, quindi non impatta lo svolgimento della conference. `E comunque gi`a ridondato e in caso di guasto, un secondo SIP Proxy di backup far`a le sue funzioni. A livello di applicazione i componenti potenzialmente interessati sono: Web Server Il Web Server `e gi`a ridondato e protetto da un sistema ad alta affidabilit`a. In caso di problemi saranno impattati solo i servizi web di gestione e di visualizzazione delle informazioni della conference, mentre a livello telefonico la conference proceder`a senza interruzioni. `E comunque presente un sistema di backup che si attiva in real-time e provvede a ripristinare in tempi brevi tutti i servizi. Database centrale Il Database centrale `e anch’esso ridondato e protetto da un sistema di failover in caso di danni. In questo caso potranno essere impattati limitatamente i servizi web che prevedono ad esem- pio la lettura del nominativo del chiamante. Il tempo di ripristino `e comunque molto breve e quindi il disagio per l’utente sar`a minimo.
  • 49. 2.5 ANALISI DEI REQUISITI MINIMI 42 Conference Engine Il sistema di alta affidabilit`a che ho pensato, prevede la presenza di un unico Conference Engine di backup. Infatti, tutti i Conference Egine sono mappati sul SIP Proxy tramite il loro indirizzo IP al numero telefonico a loro assegnato. In caso di guasto al Conferen- ce Engine che ospita la conference non si pu`o evitare l’interruzione del servizio, ma si garantisce la possibilit`a di riprendere la conference con le stesse modalit`a con cui la si era iniziata, ovvero i partecipanti dovran- no richiamare il numero telefonico della conference e ri-autenticarsi con il codice room+pin. In caso di guasto ad uno dei Conference Engine, quello di backup prender`a il suo indirizzo IP e quando i partecipanti telefoneranno nuovamente per ricollegarsi alla conference il SIP Proxy li rediriger`a direttamente sul nuovo Conference Engine. Inoltre conte- stualmente verr`a riempito il database locale del Conference Engine di backup a partire dai dati presenti sul database centrale. I Conference Engine non `e detto che siano tutti uguali, quindi il Conference Engi- ne di backup dovr`a essere almeno potente quanto il pi`u potente dei Conference Engine. In caso di problemi a pi`u di un Conference Engine, cosa che riteniamo molto improbabile, solo il primo dei Conference Engine fermi sar`a rim- piazzato da quello di backup. Nel caso in cui si arriver`a ad avere molti Conference Engine, potremo decidere di utilizzare pi`u di un Conference Engine di backup. Un sistema che consenta un ripristino della conference in modo traspa- rente all’utente sarebbe troppo complesso da realizzare e quindi troppo costoso in proporzione al relativo vantaggio che se ne potrebbe ottenere, e quindi si `e deciso di limitarsi a permettere di riprendere la conference. 2.5 Analisi dei requisiti minimi In questa sezione analizzer`o quali sono i requisiti minimi dei client degli utenti e delle macchine che fungeranno da server, sia per quanto riguarda l’hardware che per quanto riguarda il software. 2.5.1 Analisi dei requisiti Hardware L’utente, chairman o partecipante, che voglia accedere al servizio web di prenotazione/visualizzazione delle conference, potr`a farlo da un qualsiasi PC che abbia l’accesso a Internet. Per partecipare alla conference si pu`o utiliz- zare un telefono VoIP, oppure un telefono PSTN collegato ad un apposito
  • 50. 2.5 ANALISI DEI REQUISITI MINIMI 43 adattatore VoIP, oppure ancora tramite un web client collegando al computer un headset (cuffie+microfono) e la rete Internet. I server che intervengono nel sistema sono: • Media GateWay • SIP Proxy • Webserver • Database • Conference Engine Per quanto riguarda i Media GateWay, il SIP Proxy, il Webserver e il Database, le macchine sono gi`a presenti e il servizio di conference non com- porter`a un incremento particolare dei requisiti di sistema. I Conference Engine, dovendo occuparsi del mix dei flussi audio avranno bisogno di buo- ne capacit`a computazionali, ma ad esempio non necessitano di particolare spazio disco. Per poter garantire un certo numero di chiamate contempo- ranee inoltre sar`a bene dotarlo di una connessione di rete sufficientemente veloce. 2.5.2 Analisi dei requisiti Software L’utente finale potr`a prenotare e visualizzare le conference via web utilizzan- do un comunissimo browser. Il servizio offerto sul sito www.messagenet.it e il prototipo sono testati sui pi`u comuni web-browser, ovvero Microsoft Internet Explorer versioni 6 e 7 (per Microsoft Windows), Mozilla Firefox versioni 1.5 e 2 (per Microsoft Windows, Linux e Mac) e Safari (per Microsoft Windows e Mac OS). Per tutti i server `e richiesto un sistema operativo Linux. Per quanto riguarda il software da installare sui server, il Media Gateway e il SIP Proxy non necessitano di software aggiuntivo per supportare il servizio di conference. Sul Webserver sar`a necessario avere installato Apache, Ma- son[10], i moduli Asterisk::Manager e Class::DBI per Mason. Inoltre `e sul Webserver che dovranno essere installati i file di questo progetto, descritti al Cap. 4. Sul server che ospiter`a il Database `e richiesta l’installazione di MySQL. Infine su ogni Conference Engine dovranno essere presenti Asterisk, e in particolare il suo modulo MeetMe, e il database MySQL.
  • 51. “Choose a job you love, and you will never have to work a day in your life.” Confucio
  • 52. Capitolo 3 Strumenti utilizzati In questo capitolo descriver`o brevemente gli strumenti utilizzati per realizza- re questo progetto e per ciascuno motiver`o le scelte. Ad ognuno `e dedicata una sezione. Dopo aver analizzato il progetto come descritto nel capitolo precedente, in seguito alle motivazioni presentate nel presente capitolo, abbiamo deciso di mantenere il pi`u possibile gli strumenti gi`a in uso in azienda. In particolare per quanto riguarda l’IP-PBX e la conference la scelta `e caduta su Asterisk e, in particolare, sul suo modulo MeetMe, come spiegato nella Sezione 3.1. Il linguaggio di programmazione scelto per la scrittura dell’interfaccia `e Mason di cui parlo nella Sezione 3.2. Infine la Sezione 3.3 `e dedicata alla scelta del database MySQL. 3.1 IP-PBX: Asterisk Asterisk[1] `e un centralino virtuale che consente di mettere in comunicazio- ne chiamate dalla linea telefonica tradizionale (PSTN) e chiamate VoIP. `E un software cosiddetto ‘open-source’, che offre quindi la possibilit`a di essere personalizzato a piacimento. Di conseguenza `e molto flessibile e potente in quanto permette di svolgere praticamente tutte le funzioni relative ad un PBX. I motivi che mi hanno spinto a scegliere proprio Asterisk sono gi`a stati esaminati nella sezione 1.3.
  • 53. 3.2 LINGUAGGI DI PROGRAMMAZIONE: MASON 46 3.1.1 Conference: MeetMe Uno dei moduli che Asterisk mette a disposizione `e MeetMe[2], nato proprio per la configurazione delle conference call. Per permettere al chairman di gestire la conference ho usato il comando MeetMe. Quelle che seguono sono le possibili azioni in base alle opzioni passate al comando (dove confno `e il numero della conference e user `e l’id del partecipante): meetme: Elenca tutte le conference meetme kick confno user: Espelle un partecipante da una conference meetme kick confno all: Espelle tutti i partecipanti meetme list confno: Elenca i partecipanti ad una conference meetme lock confno: Blocca una conference - nessun altro partecipante `e ammesso meetme unlock confno: Sblocca una conference meetme mute confno user: Mutizza un partecipante in una conference meetme unmute confno user: Demutizza un partecipante in una confe- rence 3.2 Linguaggi di programmazione: Mason L’interfaccia web per l’utente `e stata sviluppata in Mason [10]. Mason `e uno strumento per incorporare il linguaggio di programmazione Perl nel testo, per creare testi dinamicamente, in genere testi in HTML. Perl[11] (Practical Extraction and Report Language) `e un linguaggio di programmazione ad alto livello, dinamico, procedurale e interpretato, crea- to nel 1987 da Larry Wall. Perl `e stato creato inizialmente come ausilio ai sistemisti, come linguaggio di manipolazione di testo e file. Si `e evoluto nel tempo, anche grazie ad un potente sistema di moduli[12], in un linguaggio a carattere pi`u generale, comprendente l’elaborazione di immagini, l’interroga- zione di banche dati, i processi di comunicazione via rete, ed utilizzabile in tutti quegli ambiti in cui non siano strettamente necessarie le performance di un linguaggio compilato pi`u a basso livello, offrendo al contempo tempi di sviluppo molto pi`u rapidi. Uno dei suoi maggior pregi `e che consente
  • 54. 3.3 DATABASE: MYSQL 47 di risolvere con grande semplicit`a ed eleganza problemi che con altri lin- guaggi richiederebbero notevoli sforzi. Questo lo si deve alla sua praticit`a, ricchezza, efficienza, completezza e praticit`a. Perl supporta sia il paradigma procedurale che quello ad oggetti ed ha potenti funzioni per l’elaborazione dei testi. Uno dei motivi principali per cui ho scelto di utilizzare Mason al posto di riutilizzare il codice PHP di Web-Meetme, `e proprio la modularit`a di Perl. Perl infatti `e dotato di una della maggiori collezioni di moduli prodotte dal- la sua vasta comunit`a di utenti. Ad esempio nella realizzazione di questo progetto ho utilizzato principalmente due moduli: • Asterisk::Manager[13] • Class::DBI[14] Il modulo Asterisk::Manager `e quello che consente di comunicare con Aste- risk e inviargli i comandi, nel nostro caso quelli per gestire la conference. Per l’integrazione con il database ho utilizzato il modulo Class::DBI che permette di ‘mappare’ ogni tabella di un database come fosse un oggetto i cui attributi sono i campi della tabella stessa. Il modulo stesso mette poi a disposizione dei metodi per inserire, modificare o eliminare record dalla tabella. Il fatto di avere un layer di astrazione tra il database e le azioni da compiere sugli oggetti consente di non avere legami con il tipo di data- base scelto. Infatti, proprio grazie a questa caratteristica mi sar`a possibile utilizzare qualsiasi database. In futuro se sar`a necessario diventer`a molto facile cambiare la base di dati semplicemente modificando solo i parametri di connessione al database stesso (tipo, nome, dati di accesso del database). Infine, Mason `e il linguaggio con il quale `e attualmente sviluppato il sito aziendale, quindi `e stato scelto anche per omogeneit`a. 3.3 Database: MySQL Sia per il database centrale, sia per ognuno dei database locali nei Conferen- ce Engine abbiamo scelto di usare MySQL[15]. Proprio nell’ottica di avere i costi pi`u bassi possibili per poter mantenere le tariffe delle conference concor- renziali, si `e scelto un database gratuito, stabile e in grado di offrire tutte le funzionalit`a necessarie e ritengo che MySQL risponda perfettamente a questi requisiti.
  • 55. “A script is what you give the actors, but a program is what you give the audience.” Ada Lovelace
  • 56. Capitolo 4 Prototipo Dopo aver analizzato il progetto (Cap. 2) e scelto gli strumenti da utilizzare (Cap. 3), ho preparato le macchine di test per riprodurre un ambiente quanto pi`u simile alla produzione e vi ho sviluppato il prototipo funzionante del prodotto finale di conference VoIP/Telefonica secondo le specifiche descritte al Cap. 2. In questo capitolo descriver`o quindi nel dettaglio l’implementazione di questo prototipo. Nella Sezione 4.1 specifico quali funzionalit`a ho implementato e riporto gli screenshot del prodotto realizzato. La Sezione 4.2 `e dedicata alla descrizione della struttura dei database cos`ı come ho pensato sia pi`u adatta per la realizzazione di questo progetto. Far`o un confronto fra la tabella booking del database asterisk e la corri- spondente tabella conference del database pear. Presenter`o inoltre il relativo Schema Entit`a-Relazione e le tabelle che son state realizzate, accompagnate da una spiegazione sui campi che le compongono e le relazioni tra di esse. Infine, nella Sezione 4.3 tratto la realizzazione delle interfacce: spiego quindi quali sono i file implementati, le relazioni tra di loro, quali classi e quali funzioni son state implementate e quali sono le interazioni con i vari componenti del sistema.
  • 57. 4.2 FUNZIONALIT`A IMPLEMENTATE 50 4.1 Funzionalit`a implementate Fra tutte le funzionalit`a analizzate e descritte alla sezione 2.2.3, nel prototipo ho realizzato quelle fondamentali, ovvero: • Gestione delle conference – Prenotazione (Fig. 4.1), modifica (Fig. 4.3), eliminazione (Fig. 4.4) di una conference – Elenco delle conference passate (Fig. 4.5), presenti (Fig. 4.7) e future (Fig. 4.6) • Visualizzazione dei dettagli delle conference – Completa per il chairman (Fig. 4.2 e Fig. 4.8) – Limitata per i partecipanti (Fig. 4.13 e Fig. 4.14) con accesso e login a parte (Fig. 4.12) • Controllo delle conference run-time – Estensione della durata (Fig. 4.10) – Incremento del numero di partecipanti (Fig. 4.11) – Elenco dei partecipanti attualmente presenti nella conference e dei loro dettagli (Fig. 4.9) – Controllo dei partecipanti: (de)mutizzazione ed espulsione (Fig. 4.9) Gli screenshot presentati sono quelli del prototipo. L’aspetto delle pa- gine non rispecchia molto la grafica del sito attuale di Messagenet in cui si integrer`a. Questo perch´e, per ora, `e servito solo per verificare l’effettiva funzionalit`a del servizio. In ogni caso, per quanto riguarda la grafica, si uti- lizzano i fogli di stile (css) gi`a utilizzati da Messagenet per il resto del sito, per cui non sar`a un problema uniformare la grafica del servizio di conference al resto del sito quando entrer`a in produzione. Le altre funzionalit`a, precedentemente definite come funzionalit`a aggiun- tive, sono attualmente in fase di sviluppo, cos`ı come descritte al Paragrafo 2.2.3.
  • 58. 4.2 FUNZIONALIT`A IMPLEMENTATE 51 Gestione delle conference per il Chairman Figura 4.1: Prenotazione Figura 4.2: Visualizzazione Figura 4.3: Modifica Figura 4.4: Cancellazione