Kamailio: una modifica per Load Balancing e QoS

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Kamailio: una modifica per Load Balancing e QoS"

Transcript

1 Università degli studi di Bologna Alma Mater Studiorum Facoltà di Ingegneria Corso di Laurea in Ingegneria informatica Progetto in Reti di Calcolatori M Kamailio: una modifica per Load Balancing e QoS Docente Prof. Antonio Corradi Autore Stefano Poli Anno Accademico 2009/2010

2 Indice 1 Presentazione Obiettivi Presentity, Watcher e Presence Server Vincoli tecnologici Panoramica su questa relazione Protocollo SIP Architettura SIP Struttura SIP Syntax and Encoding layer Transport layer Transaction layer Transaction User layer Messaggio SIP Request-Line Response-Line Headers Corpo del messaggio SIP URI

3 INDICE 2 3 Presence Service Introduzione Sorgenti delle informazioni di presenza Standard per protocolli di presenza: SIMPLE Metodi PUBLISH, SUBSCRIBE e NOTIFY Presence Information Data Format Gestione dei conflitti delle informazioni Metodi per l utilizzo del servizio di presenza Tecnologie utilizzate Presence Server Kamailio JAIN-SIP Soluzione del progetto Introduzione Client SIP PUBLISH SUBSCRIBE e UNSUBSCRIBE Presence Server Kamailio Modifica della gestione dei messaggi SUBSCRIBE Modifica della gestione dei messaggi PUBLISH Risultati sperimentali A Configurazione di kamailio 67 A.1 Prerequisiti A.2 Download A.3 Compilazione e installazione A.4 Configurazione A.4.1 File di configurazione per ogni istanza

4 INDICE 3 B Modulo di presenza modificato 81 B.1 Compilazione ed installazione B.2 Configurazione Bibliografia 88

5 Capitolo 1 Presentazione 1.1 Obiettivi Il progetto si propone di sviluppare un sistema di supporto per la distribuzione di dati di presenza (ad esempio stato e contatti dell utente, informazioni di localizzazione, informazioni sul contesto di esecuzione,...) su larga scala. Tale sistema deve essere in grado di mettere in comunicazione fonti (presentity) e fruitori (watcher) dei dati di presenza, anche quando presentity e watcher si trovano su server differenti. Oltre a ciò, si vuole progettare un infrastruttura di supporto in grado di abilitare alta scalabilità di tutto il sistema attraverso tecniche di bilanciamento del carico. Infine, si vuole dare la possibilità anche a terminali mobili di accedere in modo continuativo al servizio di presenza (sia in spedizione che in ricezione) nonostante possibili disconnessioni. 4

6 CAPITOLO 1. PRESENTAZIONE Presentity, Watcher e Presence Server Il sistema è composto da tre entità principali: le presentity, i presence server (servizio di presenza) e i watcher (figura 1.1) Figura 1.1: Sistema Le presentity In generale si ipotizzi di avere diverse fonti di informazioni di presenza che, agendo da presentity, generano i dati di presenza da distribuire a tutti i sottoscrittori registrati. Ogni presentity deve essere in grado di: collegarsi a un server di presenza e inviare un messaggio contenente il suo stato (es. online, non al computer, a pranzo); migrare su di un server alternativo in caso il server non sia disponibile o sovraccarico.

7 CAPITOLO 1. PRESENTAZIONE 6 I watcher I watcher, in modo duale rispetto presentity, rappresentano le entità interessate alla ricezione delle informazioni di presenza. Ogni watcher deve essere in grado di: collegarsi a un server di presenza e sottoscrivere lo stato della sua lista di contatti; ricevere le informazioni di presenza dei propri contatti dal server; migrare su di un server alternativo in caso il server non sia disponibile o sovraccarico. Il Presence Server Il presence server ha lo scopo di portare le informazioni di presenza dalle presentity ai watcher. Aspetto importante nella realizzazione/configurazione del servizio di presenza è che si vuole garantire la possibilità di accesso al servizio di presenza in ambienti distribuiti nei qualle presentity e watcher afferiscano a server diversi. In aggiunta, ogni server deve avere un ruolo attivo nel bilanciare il carico degli utenti utilizzando le informazioni che è in grado di raccogliere. In particolare, le varie istanze del sistema devono adattare il servizio in base alle abitudini degli utenti favorendo, ad esempio, gli utenti molto attivi o quelli che hanno un contratto particolare (si pensi alla possibilità di gestire livelli di qualità di servizio differenziati). Ogni server di presenza deve: all atto di una pubblicazione, salvare lo stato della presentity e notificare eventuali watcher;

8 CAPITOLO 1. PRESENTAZIONE 7 all atto di una sottoscrizione fornire lo stato più aggiornato relativo alla presentity sottoscritta; profilare i client, ossia raccogliere informazioni circa il numero dei watcher interessati allo stato del client, il numero dei contatti del client e la frequenza di pubblicazione delle informazioni; utilizzare le informazioni precedenti per minimizzare i messaggi di segnalazione attuando eventualmente politiche di migrazione. Per la realizzazione del presence service si considerino le specifiche SIP (Session Initiation Protocol) dei Presence Service. 1.3 Vincoli tecnologici Il progetto dovrà seguire i seguenti vincoli tecnologici: i client di presenza potranno essere sviluppati in C o in Java ma la parte di comunicazione dovrà utilizzare esclusivamente il protocollo SIP (Session Initiation Protocol). In particolare si chiede che i client supportino solo tre tipi di messaggio (SUBSCRIBE, PUBLISH e NOTIFY) nella loro versione più semplice; per i server è richiesto l uso di un server OpenSER (a scelta tra Open- SIPS o Kamailio), disponibile in versione OpenSource in linguaggio C. I server OpenSER già implementano tutta la parte di comunicazione con i client e la persistenza delle informazioni. Per i protocolli di comunicazione server-to-server non si impongono vincoli progettuali ma si raccomanda l utilizzo di semplici meccanismi come socket UDP (eventualmente multicast).

9 CAPITOLO 1. PRESENTAZIONE 8 Le tecnologie coinvolte sono: Presence Server: OpenSER, da poco suddiviso nei progetti OpenSIPS e Kamalio; JAIN SIP e JSR281 API (esistono alcune prime implementazioni come quella di Ericsson). 1.4 Panoramica su questa relazione Nel capitolo 2 verranno illustrate le caratteristiche principali del protocollo SIP. Nel capitolo 3 verranno illustrate le caratteristiche principali del servizio di presenza. Nel capitolo 4 verranno illustrate le tecnologie utilizzate durante la realizzazione di questo progetto. Nel capitolo 5 verrà illustrata la soluzione proposta per raggiungere gli obiettivi enunciati nel paragrafo 1.1.

10 Capitolo 2 Protocollo SIP SIP è un protocollo applicativo usato per instaurare, modificare e terminare sessioni multimediali in una rete basata su IP. Una sessione multimediale, consiste in uno scambio di flussi multimediali tra due o più interlocutori. Per permettere l inizio, la modifica, e il termine di tale scambio, è necessario che il mittente segnali al destinatario la volontà di instaurare una sessione con esso, ricorrendo all uso di un protocollo di segnalazione. SIP è standardizzato dall Internet Engineering Task Force (IETF) e le sue applicazioni includono voce, video, gaming, controllo di chiamata, servizio di presenza, ecc. SIP è un protocollo di segnalazione adottato, per la sua semplicità, come protocollo di segnalazione del Voice over IP (VoIP), e diventato poi standard nel 1999 e descritto nella [6]. Esso è stato ridisegnato più volte per aggiungere al suo interno nuove funzionalità, generando il nuovo standard definito in [9]. 9

11 CAPITOLO 2. PROTOCOLLO SIP Architettura SIP SIP è basato sul Hypertext Transfer Protocol (HTTP) e sul Simple Mail Transfer Protocol (SMTP) ed è stato creato per raggiungere i seguenti obiettivi: indipendenza dal protocollo di trasporto SIP può utilizzare sia il protocollo TCP che UDP; instradamento in base alla richiesta un messaggio SIP può essere instradato direttamente verso il destinatario, o instradato da un proxy intermedio; separazione tra informazioni di segnalazione e contenuti multimediali; estensibilità; utilizzabile in mobilità. L architettura SIP prevede degli User Agents (UAs) e degli intermediari (servers). Lo UA è il terminale della comunicazione, come ad esempio un telefono cellulare, e si divide in: User Agent Client (UAC) il mittente della richiesta; User Agent Server (UAS) il destinatario della richiesta, colui che la accetta, rifiuta o ridirige ed invia le risposte. Gli intermediari, sono entità logiche attraverso le quali passa la richiesta per raggiungere il destinatario. Gli intermediari si dividono in: Proxy Server o SIP Server riceve ed inoltra la richiesta SIP; può modificare alcune parti del messaggio senza interferire con lo stato della richiesta o del dialogo tra i due interlocutori;

12 CAPITOLO 2. PROTOCOLLO SIP 11 Redirect Server ha il compito di sostituire l indirizzo destinatario della richiesta, con un nuovo indirizzo; non partecipa alla transazione; Location Server tiene traccia della posizione degli utenti; utile soprattutto se gli utenti sono in mobilità; Registrar Server accetta le richieste di tipo REGISTER; viene utilizzato per memorizzare l associazione tra indirizzo dell utente e indirizzo del terminale da cui esso effettua la richiesta o su cui vuole ricevere nuove richieste; Application Server è un entità di rete che fornisce servizi agli utenti; un tipico esempio è il Presence Server, che offre il servizio di presenza. Back-to-back-user-agent (B2BUA) agisce come un User Agent a entrambe le estremità di una sessione o chiamata SIP. Il B2BUA è responsabile per la gestione della segnalazione della chiamata (instaurazione, mantenimento, chiusura) sia sul chiamante che sul chiamato. Ogni chiamata è monitorata dall inizio alla fine, permettendo agli operatori di offrire attraverso il B2BUA una funzionalità aggiuntiva per la chiamata. Per i client SIP, il B2BUA agisce come un UAS su un lato e come un UAC sugli altri lati. 2.2 Struttura SIP SIP, è un protocollo strutturato a livelli, i quali consentono di ottenere indipendenza tra le funzionalità da esso offerte. La struttura a livelli è rappresentata in figura 2.1.

13 CAPITOLO 2. PROTOCOLLO SIP 12 Figura 2.1: Struttura SIP a livelli Syntax and Encoding layer Il livello più basso della struttura, è denominato Syntax and Encoding, e ha il compito di definire la sintassi e la codifica di un messaggio SIP. La codifica, è specificata con una grammatica di tipo augmented Backus-Naur Form (BNF), definita in [9]. La grammatica BNF, definisce in che modo devono essere codificate le informazioni, ad esempio con la sintassi name: value Transport layer Il livello di trasporto, o Transport layer, specifica come i clients devono inviare richieste e ricevere risposte, e come i servers devono ricevere richieste ed inviare risposte. Basandosi sulla sintassi e sulla codifica di un messaggio SIP definiti al livello sottostante, il livello di trasporto introduce gli headers SIP necessari all instradamento di richieste e risposte da parte degli interlocutori. Un esempio tipico, è l introduzione degli headers Via.

14 CAPITOLO 2. PROTOCOLLO SIP Transaction layer Il terzo livello, prende il nome di Transaction layer. Una transazione SIP (SIP transaction), è costituita da una richiesta e dall insieme delle risposte ad essa associate. Il Transaction layer ha il compito di mantenere le associazioni tra richieste e risposte. Le transazioni SIP si dividono in: transazioni client instaurate dal client che vuole inviare una richiesta e ricevere delle risposte; transazioni server instaurate dal server che riceve una richiesta ed invia le risposte. Questo livello, utilizza il Transport layer per inviare e ricevere richieste e risposte Transaction User layer Il livello più alto della struttura SIP, prende il nome di Transaction User layer. Questo livello, ha il compito di instaurare transazioni client e server. Quando un client vuole inviare una richiesta SIP, crea un istanza di una transazione client, ed invia la richiesta insieme all indirizzo IP del destinatario, alla porta, e al nome del protocollo di trasporto da utilizzare. I Transaction User, sono definiti per essere UAC e UAS. Gli UAC creano ed inviano richieste, e ricevono risposte, mentre gli UAS ricevono richieste, e creano ed inviano risposte, utilizzando il Transaction layer. 2.3 Messaggio SIP Un messaggio SIP, è composto da tre parti:

15 CAPITOLO 2. PROTOCOLLO SIP 14 request line (per le richieste) o status line (per le risposte) contengono le informazioni relative al tipo di richiesta o risposta; headers aggiungono informazioni al messaggio; corpo del messaggio contiene informazioni di interesse per il destinatario. Un esempio di richiesta SIP è il seguente: INVITE sip:bob.smith@open-ims.test SIP/2.0 Via: SIP/2.0/UDP cscf1.open-ims.test:5060;branch=z9hg4bk Via: SIP/2.0/UDP [5555::1:2:3:4]:5060;branch=z9hG4bK45a35h76 Max-Forwards: 69 From: Alice <sip:alice@open-ims.test>;tag= To: Bob Smith <sip:bob.smith@open-ims.test> Call-ID: CSeq: 1 INVITE Contact: sip:alice@[5555::1:2:3:4] Content-Type: application/sdp Content-Length: 159 [body] Request-Line La request line è costituita da tre componenti: Method indica il tipo di richiesta; Request URI indirizzo SIP del destinatario della richiesta;

16 CAPITOLO 2. PROTOCOLLO SIP 15 Protocol version versione del protocollo SIP utilizzato; la versione specificata in [9] è la 2.0. Il Method, può assumere i seguenti valori: REGISTER usato da un UAC per notificare il suo indirizzo IP e l URL per il quale vuole ricevere chiamate; INVITE usato per instaurare una sessione multimediale; ACK usato per confermare l avvenuto scambio di messaggi; CANCEL usato per cancellare una richiesta pendente, ovvero non ancora accettata; BYE usato per terminare una sessione multimediale; OPTION usato per richiedere informazioni relative alle capacità del terminale dell utente chiamato, senza instaurare una sessione. Un esempio di request line è il seguente: INVITE sip:bob@reteb.com SIP/2.0 Questo esempio, si riferisce ad un messaggio di tipo INVITE (definito nel Method), cioè destinato ad instaurare una comunicazione con il destinatario (definito nella Request URI) Response-Line La response line è costituita da tre componenti: Protocol version identica alla request line; Status code codice di tre cifre che identifica il tipo di risposta;

17 CAPITOLO 2. PROTOCOLLO SIP 16 Reason phrase testo libero per una descrizione più precisa dello status code. Lo status code è classificato in sei categorie: 1XX indica che la richiesta è stata ricevuta ed in fase di elaborazione; 2XX indica che la richiesta è stata ricevuta, processata e accettata; 3XX indica una redirezione della richiesta per ulteriori elaborazioni; 4XX indica un errore di sintassi nella richiesta; 5XX indica un errore da parte del server; 6XX indica un errore globale; la richiesta non può essere servita da nessun server. Un esempio di Response line, è il seguente: SIP/ Temporarily Unavailable riferito ad una risposta di errore di tipo 480 (Status code) descritta dalla Reason phrase Temporarily Unavailable Headers Gli headers, contribuiscono ad aggiungere informazioni alla richiesta, come ad esempio, il mittente, il destinatario e gli identificatori degli utenti. Il formato di un header è il seguente: Header-name: header-value Alcuni headers sono obbligatori sia nelle richieste che nelle risposte:

18 CAPITOLO 2. PROTOCOLLO SIP 17 To header - To: SIP-URI(;parametri) indica il nome del destinatario del messaggio; From header - From: SIP-URI(;parametri) indica il nome del mittente del destinatario; Call-ID header - Call-ID: unique-id identifica un messaggio all interno di una sessione; CSeq header - CSeq: digit method identifica una risposta ad una precisa richiesta; Via header - Via:SIP/2.0/[transport-protocol] sent-by(;parametri) consente di instradare le risposte attraverso lo stesso percorso seguito dalla richiesta; Max-Forwards header - Max-Forwards: digit indica il numero massimo di nodi che il messaggio può attraversare prima di raggiungere la destinazione; Contact header - Contact: SIP-URI(;parameters) indica l indirizzo (generalmente SIP), del mittente del messaggio. Dove appare (;parametri), significa che è possibile aggiungere alcuni parametri separati da punto e virgola. Un esempio di header SIP è il seguente: Via: SIP/2.0/UDP :5062 Questo header indica che il messaggio in cui è contenuto deve passare per il nodo sulla porta 5062 utilizzando il protocollo UDP.

19 CAPITOLO 2. PROTOCOLLO SIP Corpo del messaggio Il corpo del messaggio può contenere qualsiasi tipo di informazione dipendentemente dal tipo di richiesta o risposta per cui il messaggio è stato generato. Nel nostro progetto, viene spesso inserito un documento XML contenente le informazioni di presenza SIP URI Il SIP URI, rappresenta l indirizzo SIP con il quale è possibile raggiungere un terminale dell utente. Esso ha la forma di un indirizzo sip:bob.smith@realm.com Il SIP URI può essere di due tipi: Address Of Record (AOR) è un indirizzo SIP che identifica un utente; è più facile da memorizzare, ed è quindi utilizzato principalmente dagli utenti umani e gestito in modo simile ad un numero telefonico; un esempio è sip:bob.smith@realm.com in questa forma, l indirizzamento del messaggio necessita di interrogazioni al server DNS per individuare l indirizzo IP del dominio realm.com; Fully Qualified Domain Name (FQDN) o indirizzo IP identifica un dispositivo dell utente; un esempio è sip:bob.smith@ in questa forma, l indirizzamento del messaggio non necessita di interrogazioni al server DNS, in quanto l indirizzo IP del dominio è specificato esplicitamente dopo il

20 Capitolo 3 Presence Service 3.1 Introduzione Il concetto di presenza (Presence) ha potenziato i servizi di messaggistica istantanea, oggi diffusissimi in tutto il mondo per la loro capacità di far comunicare persone collocate geograficamente molto lontane tra loro. Il concetto di presenza può essere visto come la capacità di un utente di percepire lo stato di altri, così come gli altri percepiscono quello dell utente stesso. In altre parole un utente viene rappresentato da una insieme di informazioni che definiscono il suo stato, e quello dei dispositivi di comunicazione cui ha accesso. Tale stato contiene quindi informazioni come la locazione geografica dell utente, il contesto in cui si trova (posizione fissa, in movimento, all aperto, in ufficio, ecc.), le capacità comunicative dei terminali in suo possesso (se supportano sessioni voce, video, sms, di messaggistica istantanea, ecc.), il metodo di contatto preferito (via telefono cellulare, fax, computer dell ufficio, ecc.), i servizi che l utente è disposto ad utilizzare (servizi voce, video, di messaggistica istantanea, ecc.), le attività che sta svolgendo in un certo momento (riunione, guida, pranzo, ecc.), ed altre. Come definito in [10], in 19

21 CAPITOLO 3. PRESENCE SERVICE 20 definitiva, il servizio di presenza esprime la possibilità e la volontà dell utente di comunicare attraverso un insieme di dispositivi. Il servizio di presenza, poggia sul modello publish/subscribe. Il modello publish/subscribe, è un paradigma di interazione che vede coinvolte due entità: produttori (publisher) e consumatori (subscriber, o sottoscrittori). Consente ai sottoscrittori di esprimere i propri interessi verso un certo tipo di evento o un pattern di eventi, con lo scopo di essere successivamente notificati con eventi compatibili con gli interessi espressi. In altre parole, i produttori pubblicano informazioni su un canale di eventi e i sottoscrittori si sottoscrivono al canale per ricevere informazioni di loro interesse (figura 3.1). Figura 3.1: Modello Publish/Subscribe Il modello base del sistema per l interazione publish/subscribe si basa su un servizio di notifica di eventi (event notification service, o più semplicemente event service), il quale memorizza e gestisce le sottoscrizioni e consegna gli eventi. L event service funge da mediatore tra i publisher, che svolgono la funzione di produttori di eventi, e i subscriber, che svolgono la funzione di consumatori di eventi. I subscriber registrano i propri interes-

22 CAPITOLO 3. PRESENCE SERVICE 21 si verso un certo tipo di evento attraverso la funzione subscribe() dell event service, senza essere a conoscenza dell effettiva sorgente dell evento. Seguendo questo modello, il servizio di presenza, consente ad un utente di far sapere, a chiunque voglia, come e quando essere contattato semplicemente pubblicando il proprio stato, che viene poi ricevuto dagli altri utenti. Alice può, ad esempio, pubblicare un messaggio che specifica su quali dispositivi può essere contattata in quel momento (telefono cellulare, computer dell ufficio, ecc.); Bob, che vuole contattare Alice, riceve le sue informazioni di presenza, e valuta in che modo contattarla (se Alice è disponibile). Il concetto di presenza si concretizza quindi in un profilo dinamico dell utente visibile ad altri, e in grado di rappresentare sé stesso, condividere informazioni e controllare servizi. Il servizio di presenza può essere utilizzato da chiunque, sia esso un informatico, un impiegato, un cuoco, un anziano o un bambino. Si presta a diverse applicazioni, e non solo al servizio di messaggistica istantanea per cui è stato originariamente pensato, ma anche, ad esempio, ai servizi che offrono la possibilità di videogiocare in rete, o ai servizi che consentono di incrementare l efficienza sul lavoro. Il servizio di presenza rappresenta inoltre un business non sottovalutabile per i fornitori di servizi, che possono contare quindi su un importantissima funzionalità aggiuntiva per rendere le loro offerte più complete e accattivanti. I fornitori di servizi possono, infatti, contare su un supporto base di molti servizi. Pensiamo, ad esempio, al servizio di messaggistica istantanea: un utente deve sapere se può avviare una sessione di messaggistica istantanea con un altro utente, e quindi deve essere a conoscenza dello stato di presenza relativo al servizio di instant messaging. Disporre del servizio di presenza rappresenta perciò, per il fornitore, la base per poter offrire un servizio di messaggistica istantanea. Pensando poi

23 CAPITOLO 3. PRESENCE SERVICE 22 a nuovi servizi, possiamo immaginare l implementazione di un meccanismo di segnalazione di emergenze: un utente in difficoltà, premendo un semplice tasto sul telefono cellulare, è in grado, senza parlare, di informare i soccorsi fornendo le sue coordinate geografiche. Anche per un servizio di questo tipo, la base implementativa sta nel servizio di presenza, che è in grado di ricevere le coordinate geografiche dell utente e notificarle ai soccorsi. Risulta chiaro che questi servizi aggiuntivi che poggiano sul servizio di presenza possono avvantaggiare un fornitore sugli altri, oltre ad incrementare il traffico tariffabile all interno della rete. Il nostro progetto si concentra proprio sul servizio di presenza per aggiungervi QoS. Come descritto in [5] esistono due tipi di utilizzatori non esclusivi (cioè un utilizzatore può essere di entrambi i tipi): presentity: chi fornisce le proprie informazioni di presenza per essere memorizzate e distribuite; watcher: chi richiede e riceve le informazioni di presenza riguardanti altri utenti e servizi. Le informazioni di presenza possono essere costruite direttamente dal presentity o prelevate da dispositivi esterni come PC, cellulari, sensori, antenne GPS, ecc. (figura 3.2). Di questo si parlerà nel paragrafo 3.2.

24 CAPITOLO 3. PRESENCE SERVICE 23 Figura 3.2: Relazione tra presentity e watcher La figura, mostra un possibile reperimento di informazioni di presenza da antenne e sensori. Notiamo che il modello segue il modello publish/subscribe sopra descritto. Le molte informazioni di presenza che un presentity può fornire, possono essere difficili da gestire per un watcher, in quanto errate, contraddittorie o ridondanti. Un utente umano è in grado di risolvere questi problemi analizzando le informazioni ricevute, ma un utente costituito da un applicazione software può scontrarsi con molte difficoltà. Questi problemi saranno trattati nel paragrafo 3.4. Il protocollo utilizzato dal servizio di presenza è il SIMPLE (Session initiation protocol for Instant Messaging and Presence Leveraging Extensions), standard gestito dalla IETF. Il formato generale delle informazioni di presenza è descritto in [10] ed è rappresentato da un documento XML diviso in tuple, ognuna delle quali contiene informazioni riguardanti l utente umano, i servizi utilizzati per comunicare e i dispositivi di cui l utente è in possesso. Tutto questo sarà trattato nel paragrafo 3.3.

25 CAPITOLO 3. PRESENCE SERVICE Sorgenti delle informazioni di presenza Come descritto in [12], le informazioni di presenza possono essere ricavate da sorgenti esterne. Possiamo classificare i dati di presenza nelle seguenti categorie: segnalati in tempo reale, sono forniti dal presentity in tempo reale, ma sono considerati poco attendibili col passare del tempo in quanto l utente potrebbe avere difficoltà ad aggiornare costantemente le informazioni; segnalati in modo pianificato, consistono nelle informazioni che vengono aggiornate automaticamente in base alla pianificazione dei propri impegni da parte dell utente utilizzando applicazioni come il calendario elettronico. L affidabilità di queste informazioni dipende dalla scrupolosità dell utente nell aggiornare i propri calendari e sorgenti simili; ricavati dall utilizzo di un dispositivo, sono dedotti dall impiego di dispositivi di comunicazione come l atto di inoltrare o ricevere una chiamata o dalla potenza del segnale di un cellulare. In questo caso la principale motivazione di errore può essere data dal fatto che l utilizzatore potrebbe non corrispondere alla persona della quale si vogliono pubblicare le informazioni; ricavati da sensori, sono estrapolati da sensori e consistono in informazioni come la posizione geografica, il tipo di ambiente (abitazione, automobile, ecc.), l attività dell utente, ecc. Esempi di sensori sono il GPS o segnalazioni Bluetooth che indicano il tipo di ambiente circostante. Il vantaggio dei sensori è che non fanno affidamento sull ag-

26 CAPITOLO 3. PRESENCE SERVICE 25 giornamento delle informazioni da parte dell utente, ma sono soggetti ad errori di misurazione. Ad esempio un sensore PIR (Passive InfraRed sensor), può rilevare la presenza di un soggetto in ufficio, ma non accertare se si tratta della persona interessata o dell addetto alle pulizie. Un sensore GPS non può rilevare se il cellulare è utilizzato dal suo proprietario o da qualcun altro; dedotti indirettamente da una sorgente di informazioni, ad esempio non interessa se l utente è in macchina (informazione ricavata da un sensore), ma il fatto che sta guidando (informazione dedotta). I dati, una volta acquisiti, vengono incapsulati nel corpo del messaggio di presenza (vedere paragrafo 3.3) ed inviati al Presence Server per la pubblicazione. 3.3 Standard per protocolli di presenza: SIM- PLE SIMPLE (Session initiation protocol for Instant Messaging and Presence Leveraging Extensions) è un protocollo standard basato su SIP e utilizzato per la messaggistica istantanea e per il servizio di presenza. SIMPLE estende il protocollo SIP per adattarlo alle esigenze del servizio di presenza. Sostanzialmente aggiunge una nuova tipologia di evento denominata presence. Il documento [7], individua due tipi di entità per il servizio di presenza: Presence Agent (PA), il quale è in grado di memorizzare le sottoscrizioni e generare le notifiche;

27 CAPITOLO 3. PRESENCE SERVICE 26 Presence User Agent (PUA), il quale manipola e pubblica le informazioni di presenza per un presentity. Il processo di pubblicazione, è consentito dall esistenza del metodo PUB- LISH, mentre per potersi registrare al servizio di presenza di un certo utente per poterne ricevere le notifiche, si ricorre al metodo SUBSCRIBE. Il corpo del messaggio NOTIFY, contiene, invece, le informazioni di presenza riguardanti il presentity che le vuole pubblicare. Grazie all esistenza del MIME (Multipurpose Internet Mail Extension), che offre la possibilità di inserire nel corpo del messaggio diversi tipi di dati, è possibile codificare le informazioni di presenza utilizzando il linguaggio XML (extensible Markup Language). All interno dell evento presence, esiste un sottoevento denominato winfo (watchers informations) che viene identificato come presence.winfo. Questo evento, consente, ad un presentity, di ricevere informazioni circa lo stato dei watchers a lui sottoscritti. In particolare, se un presentity si sottoscrive all evento presence.winfo, riceve le informazioni riguardanti lo stato dei watchers a lui sottoscritti e quelle riguardanti l evento che ha causato la modifica dello stato. Gli stati che un watcher può assumere nei confronti di un presentity non sono gli stessi che possono essere pubblicati da un generico presentity, ma sono differenti in quanto hanno lo scopo di descrivere l attività del watcher all interno del servizio di presenza. Un presentity, può decidere di limitare la consegna delle notifiche relative al proprio stato, soltanto a determinati watcher. Un presentity ha quindi la possibilità di creare delle regole (o policy) che hanno il compito di determinare chi può sottoscriversi al servizio di presenza del presentity stesso. Ad esempio, Alice può negare il recapito a Bob delle notifiche relative al proprio stato, ma consentirlo a John. Ogni watcher, assume quindi uno stato nei confronti di Alice. Tali

28 CAPITOLO 3. PRESENCE SERVICE 27 stati sono descritti in [8] e sono i seguenti: Init: nessuno stato del watcher disponibile. Init è uno stato transitorio, che viene assunto dal watcher nel momento della sottoscrizione al servizio di presenza del presentity, poi verrà assunto lo stato in funzione delle regole esistenti; Terminated: esiste una regola che vieta al watcher di sottoscriversi al servizio di presenza del presentity; Active: esiste una regola che consente al watcher di sottoscriversi al servizio di presenza del presentity e ricevere le notifiche di cambiamento del suo stato; Pending: non esiste nessuna regola definita per il watcher che resta, quindi, in attesa della creazione di una politica di accesso ad esso associata; Waiting: simile al Pending, ma indica che un utente ha cercato di sottoscriversi al servizio di presenza del presentity e che tale sottoscrizione è scaduta prima che venisse creata una regola. In ogni momento il server di presenza può decidere di chiudere una sottoscrizione in stato di Pending o Waiting per liberare le proprie risorse interne, quali memoria e CPU. Riprendendo l esempio precedente, Bob entra nello stato Terminated, mentre John nello stato Active. Il diagramma degli stati che un watcher può assumere, è riportato in figura 3.3.

29 CAPITOLO 3. PRESENCE SERVICE 28 Figura 3.3: Diagramma degli stati dei watcher La figura, mostra i motivi per cui un watcher può cambiare stato. Al momento della sottoscrizione, un watcher entra nello stato Init. Se esiste una regola (policy), il watcher assume lo stato da questa imposto, ovvero Active se esiste una regola che consente al watcher di essere notificato sullo stato del presentity, oppure Terminated se esiste una regola che nega il recapito delle notifiche a quel preciso watcher. Se non esiste nessuna policy, il watcher assume lo stato di Pending, e vi resta fino a che non viene creata una regola che accetta o scarta il watcher. Il watcher non può, però, restare nello stato di Waiting all infinito, quindi, se dopo un determinato periodo di tempo non è ancora stata creata nessuna regola, passa nello stato di Waiting, per poi passare nello stato di Terminated. Lo stato di Waiting, ha quindi lo scopo di avvertire che la sottoscrizione è scaduta prima che sia stata accettata o rifiutata esplicitamente dal presentity. Le sottoscrizioni, hanno un determinato periodo di validità, al termine del quale il watcher passa dallo stato Active, allo stato di Terminated.

30 CAPITOLO 3. PRESENCE SERVICE Metodi PUBLISH, SUBSCRIBE e NOTIFY Come anticipato nel paragrafo precedente, per poter pubblicare il proprio stato è necessario ricorrere al metodo SIP PUBLISH definito all interno di SIMPLE. Il procedimento di pubblicazione prevede una singola richiesta di PUBLISH e una singola risposta che informa il mittente del successo o fallimento della procedura. L utente al quale si riferisce la pubblicazione è specificato nella Request URI, mentre le informazioni di presenza sono inserite nel corpo del messaggio SIP. Il metodo SUBSCRIBE consente ad un utente di sottoscriversi al servizio di presenza di un altro utente, in modo da poter ricevere le successive notifiche circa il suo cambiamento si stato. Anche la procedura di SUBSCRIBE prevede l invio di una richiesta e la ricezione di una risposta, con lo scopo di informare il mittente sull esito dell operazione. Il messaggio di risposta può essere positiva (la sottoscrizione è andata a buon fine) o negativo (la sottoscrizione è fallita). La sottoscrizione al servizio di presenza, ha una durata limitata e deve quindi essere rinnovata prima della sua scadenza. Per cancellare una sottoscrizione prima della sua scadenza, è necessario inviare un messaggio di SUBSCRIBE contenente l header Expires uguale a zero. Il metodo NOTIFY viene ricevuto dall utente che si è sottoscritto ad un servizio di presenza, e ha lo scopo di notificare il cambiamento di stato da parte dell utente osservato. Le informazioni di stato, sono contenuto all interno del corpo del messaggio in formato XML. Alla ricezione del messaggio NOTIFY, il client deve rispondere con un messaggio di conferma, per avvertire la sorgente (tipicamente un presence server) dell avvenuta ricezione.

31 CAPITOLO 3. PRESENCE SERVICE Presence Information Data Format Le informazioni di presenza vengono codificate in linguaggio XML per essere facilmente trasmesse ed elaborate dai vari organi della rete. Il documento XML è strutturato in elementi definiti dal Presence Information Data Format (PIDF) [13] che è poi stato esteso dal Rich presence extensions to the Presence Information Data format (RPID) [11]. I principali elementi predefiniti sono: presence: è l elemento radice. Contiene un attributo entity il cui valore rappresenta l URI del presentity che pubblica il documento. Deve specificare il namespace di default urn:ietf:params:xml:ns:pidf ; tuple: rappresenta un servizio. Deve contenere un attributo id il cui valore differenzia un elemento tuple dagli altri all interno dello stesso presentity. Deve inoltre contenere l elemento status e può contenere gli elementi contact, note, timestamp ed altri elementi di estensione; status: può contenere un elemento basic e una serie di altri elementi di estensione. basic: può contenere la stringa open o closed per indicare se il contatto associato è raggiungibile o meno. contact: è opzionale e definisce un indirizzo al quale poter contattare il presentity; note: contiene una stringa qualsiasi che serve soltanto all utente umano; timestamp: contiene la data e l ora in cui l elemento padre è stato modificato;

32 CAPITOLO 3. PRESENCE SERVICE 31 person: descrive le caratteristiche di un utente umano. Deve contenere un attributo id che lo identifica dagli altri elementi person. Può contenere più elementi note e un elemento timestamp; device: descrive le caratteristiche di un terminale in possesso del presentity. Deve contenere un attributo id che lo identifica dagli altri elementi device all interno dello stesso presentity. Deve contenere un elemento deviceid. Può contenere una serie di elementi note, un elemento timestamp ed altri elementi di estensione; deviceid: contiene una stringa identificativa del dispositivo in questione (ad esempio il codice seriale). Un esempio di codifica XML delle informazioni di presenza è il seguente: <?xml version="1.0" encoding="utf-8"?> <presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:bobo@open-ims.test"> <tuple id="sg89ae"> <status> <basic>open</basic> </status> <contact>tel: </contact> </tuple> <tuple id="rt62yp"> <status> <basic>closed</basic> </status> <contact>tel: </contact> </tuple>

33 CAPITOLO 3. PRESENCE SERVICE 32 <device id="pc147"> <user-input last-input=" t13:20:00-05:00"> idle <\user-input> <deviceid>urn:device:0003ba4811e3<\deviceid> <note>pc<\note> </device> </presence> Notiamo che l elemento presence contiene l attributo che definisce il namespace del documento: xmlns="urn:ietf:params:xml:ns:pidf" inoltre è presente un altro attributo obbligatorio: entity="pres:someone@example.com" che definisce l entità cui appartengono le informazioni di presenza. Il valore di tale attributo è solitamente un Public User Identity dell utente. Gli elementi tuple contengono entrambi l attributo obbligatorio id che permette di identificarli e distinguerli l uno dall altro. L elemento tuple descrive lo stato di un servizio, quindi possiamo concludere che il servizio identificato dalla stringa sg89ae per l utente sip:bob@open-ims.test è disponibile (open), e raggiungibile componendo il numero di telefono (campo contact). Al contrario, il servizio identificato dalla stringa rt62yp, raggiungibile al numero telefonico , non è al momento disponibile (closed). Proseguiamo analizzando la sezione device: l utente dispone di un dispositivo il cui id è rappresentato dalla stringa urn:device:0003ba4811e3

34 CAPITOLO 3. PRESENCE SERVICE 33 contenuta nell elemento deviceid. Notiamo che l elemento device è identificato dalla stringa pc147 per differenziarlo da eventuali altri elementi device inseribili nel documento XML. Dall elemento note, un utente umano può dedurre che il dispositivo in questione è un PC; l elemento note, come già detto, ha l unico scopo di aggiungere informazioni comprensibili soltanto da un utente umano. Il PC non è attualmente utilizzato, come si può dedurre dal contenuto dell elemento user-input, che indica lo stato di utilizzo del dispositivo a cui è associato. L ultima volta che il PC è stato utilizzato è in data alle ore 13:20: Gestione dei conflitti delle informazioni Come già accennato, un presentity può pubblicare le proprie informazioni di presenza in diversi modi e attraverso dispositivi differenti, generando così possibili conflitti di informazioni. Ad esempio, l auto di Alice dispone di un sensore che, quando rileva la presenza di una persona alla guida, pubblica automaticamente lo stato di non disponibilità di Alice a ricevere telefonate. Supponiamo che Bob, marito di Alice, prenda in prestito l auto della moglie e, contemporaneamente, Alice pubblichi la sua disponibilità a ricevere telefonate: a questo punto Alice è rintracciabile o no? Generalmente i conflitti di informazioni possono essere di varia natura, e il primo passo da eseguire per rimuovere le informazioni inaccurate consiste nell individuare tali conflitti. Come visto nel paragrafo precedente, lo stato di un utente può essere rappresentato da numerosi elementi, alcuni dei quali possono contraddirsi a vicenda. Ad esempio, una persona non può essere in due luoghi differenti nello stesso momento, quindi, se due elementi place-is hanno valori diversi, significa che uno dei due è errato. Per altri tipi di infor-

35 CAPITOLO 3. PRESENCE SERVICE 34 mazione che vengono prelevati automaticamente da sorgenti esterne, i valori che possono assumere potrebbero, in certi casi, essere esclusivi. Ad esempio, l elemento place-type non può assumere contemporaneamente i valori office e outdoors, ma potrebbe assumere i valori outdoors e stadium. La difficoltà sta quindi nel capire quando un elemento assume valori contraddittori o soltanto differenti nella loro specificità. Quando viene rilevato un conflitto bisogna prendere una decisione per gestirlo in modo adeguato. In alcuni casi non deve essere effettuata nessuna azione, ad esempio non è dato sapere quali valori sono in conflitto per gli elementi activities o mood, a causa dei molteplici valori che possono assumere. Un approccio conservativo per gestire alcuni conflitti, potrebbe essere semplicemente listare tutti i valori. In questi casi, vengono presentati al watcher versioni multiple dello stesso elemento e starà quindi a lui il compito di determinare quello corretto. Per limitare il numero di informazioni recapitate al watcher si può scegliere un solo valore escludendo tutti gli altri. Per prendere questa decisione, si può procedere in modi differenti: scegliere il valore dell elemento più recente: si tratta di optare per il valore pubblicato più di recente. In questo caso, si rischia di scartare un valore corretto e mantenere quello errato; scegliere l elemento più affidabile: l affidabilità può essere basata sull identità della sorgente, come ad esempio il cellulare dell utente. In alternativa si può dare un ordine di fiducia ai tipi di sorgente delle informazioni, ad esempio, segnalati in tempo reale, ricavati dall utilizzo di un dispositivo, ricavati da sensori, segnalati in modo pianificato ; scegliere in base al valore di un altro elemento: gli altri elementi potreb-

36 CAPITOLO 3. PRESENCE SERVICE 35 bero indicare un valore che potrebbe essere più affidabile. Ad esempio, l elemento user-input, potrebbe indicare che un dispositivo che fornisce indicazioni di presenza è attualmente in uso e un altro no. I valori che non vengono scelti, vengono definitivamente scartati. [12] Il meccanismo per risolvere i conflitti di informazione viene implementato all interno del Presence Server. Nel nostro progetto viene utilizzato il Presence Server Kamailio, il quale risolve i conflitti scegliendo, per ogni elemento, il valore pubblicato più recentemente. 3.5 Metodi per l utilizzo del servizio di presenza In questo paragrafo viene illustrato il contenuto dei metodi utilizzati per sfruttare il servizio di presenza. Sono illustrati i metodi PUBLISH, SUB- SCRIBE e NOTIFY. SUBSCRIBE e NOTIFY In figura 3.4 è raffigurato il processo di sottoscrizione da parte di un watcher (Bob) al servizio di presenza relativo ad un presentity (Alice). Bob si sottoscrive al servizio di presenza relativo ad Alice inviando un messaggio di tipo SUBSCRIBE al Presence Server (PS). Quest ultimo accetta la sottoscrizione rispondendo con un messaggio di tipo 200 OK per indicare a Bob che la richiesta è stata ricevuta e processata con successo. Il Presence Server provvede ad inviare subito a Bob un messaggio di tipo NOTIFY contenente le informazioni di presenza di Alice in suo possesso.

37 CAPITOLO 3. PRESENCE SERVICE 36 Figura 3.4: Processo di SUBSCRIBE Bob risponde con un messaggio di tipo 200 OK per confermare la ricezione del messaggio NOTIFY. Il messaggio di SUBSCRIBE è così formato: SUBSCRIBE SIP/2.0 Via: SIP/2.0/UDP host.example.com;branch=z9hg4bknashds7 To: From: Call-ID: CSeq: 1 SUBSCRIBE Max-Forwards: 70 Expires: 3600 Event: presence Content-Length: 0

38 CAPITOLO 3. PRESENCE SERVICE 37 Descriviamo brevemente il contenuto del messaggio. Nella prima riga (Request-Line) compaiono il metodo (SUBSCRIBE), la Request URI e la versione del protocollo (SIP/2.0). I successivi campi del messaggio sono gli headers, necessari per aggiungere informazioni di servizio al messaggio. L header To contiene l URI del presentity a cui il watcher vuole sottoscriversi, mentre l header From contiene l URI del mittente (watcher nel caso di messaggi SUBSCRIBE). Altro header importante è Event, il quale contiene l indicazione del tipo di servizio al quale Bob vuole sottoscriversi. Gli header Via (possono essercene anche molti) tengono traccia del percorso che il messaggio effettua per arrivare a destinazione e che dovrà essere seguito (a ritroso) dai futuri messaggi di risposta. Infine descriviamo l header Expires, che informa circa il periodo di validità della sottoscrizione: il valore 3600 indica che per i prossimi 3600 seondi Bob riceverà notifiche riguardanti i cambiamenti di stato di Alice, dopodiché la sottoscrizione scadrà e Bob dovrà rinnovarla. Questo header, se settato a 0, indica al Presence Server che il mittente non vuole più ricevere notifiche riguardanti il servizio di presenza circa il presentity specificato nella Request-Line. PUBLISH In figura 3.5 è raffigurato il processo di sottoscrizione da parte di un watcher (Bob) al servizio di presenza relativo ad un presentity (Alice). Alice pubblica le proprie informazioni di presenza inviando un messaggio di tipo PUBLISH al Presence Server (PS), il quale conferma la ricezione della richiesta rispondendo con un messaggio di tipo 200 OK.

39 CAPITOLO 3. PRESENCE SERVICE 38 Figura 3.5: Processo di PUBLISH Il messaggio di PUBLISH è così formato: PUBLISH SIP/2.0 Via: SIP/2.0/UDP pua.example.com;branch=z9hg4bk652hsge To: From: Call-ID: CSeq: 1 PUBLISH Max-Forwards: 70 Expires: 3600 Event: presence Content-Type: application/pidf+xml Content-Length:... [Published PIDF document] Notiamo che gli headers To e From contengono entrambi l URI di Alice, ovvero del presentity che pubblica il messaggio. Gli header Event e Expires e Via hanno significati analoghi a quelli degli stessi header contenuti nel messaggio di SUBSCRIBE.

40 CAPITOLO 3. PRESENCE SERVICE 39 L Header Content-Type indica il tipo di contenuto del corpo del messaggio; essendovi contenuto un testo XML con struttura adeguata al servizio di presenza, il valore di tale header è application/pidf+xml. L header Content-Lenght specifica la lunghezza in byte del corpo del messaggio.

41 Capitolo 4 Tecnologie utilizzate Di seguito vengono introdotte le principali tecnologie utilizzate all interno del progetto. 4.1 Presence Server Kamailio Questo progetto ha lo scopo di estendere il servizio di presenza offerto da un Presence Server introducendo Load Balancing. Come Presence Server è stato scelto Kamailio (OpenSER) [3] per la sua completezza e solidità. In realtà, OpenSER è un progetto che si pone l obiettivo di realizzare un software completo per l implementazione di un sistema basato su protocollo SIP, ovvero un SIP server. Esso è scritto in linguaggio C, ed è estensibile per consentire l aggiunta di moduli atti ad implementare nuovi servizi. OpenSER ha cambiato nome nel 2008 a causa di alcuni conflitti di interesse, diventando Kamailio. Alcune funzionalità di Kamailio sono: SIP registrar server SIP Location server 40

42 CAPITOLO 4. TECNOLOGIE UTILIZZATE 41 SIP Proxy server SIP Application server SIP Dispatcher server; SIMPLE Presence Server (rich presence) Presence User Agent supporto a XCAP Instant Messaging e molte altre. Come già anticipato, Kamailio è strutturato in moduli, ognuno dei quali implementa funzionalità specifiche ai fini di integrare più servizi in un unico server. Ogni modulo è indipendente dagli altri e sta a noi scegliere come configurare l istanza di Kamailio perchè carichi i moduli necessari ad offrire i servizi che vogliamo. I passi per configurare Kamailio sono riportati in appendice A. Per questo progetto ci siamo concentrati sul modulo di presenza, denominato appunto presence e scritto interamente in linguaggio C. 4.2 JAIN-SIP JAIN (Java in Advanced Intelligent Networks) è una comunità di aziende creata con lo scopo specifico di definire delle API [1] per raggiungere la portabilità dei servizi, convergenza e accessi sicuri verso reti telefoniche e dati (Internet). Si basa esclusivamente sulla tecnologia Java, ed anche il suo

43 CAPITOLO 4. TECNOLOGIE UTILIZZATE 42 sviluppo segue le specifiche di sviluppo e licenza SUN (JSPA Java Specification Participation Agreement, JCP Java Community Process, SCSL Sun Community Source Code Licensing). JAIN si occupa di definire due diverse serie di API riguardo le NGN: API verso i protocolli e API verso le applicazioni. Le prime specificano le interfaccie verso i protocolli di reti IP, wireless e telefoniche; le seconde vengono utilizzate per la creazione di servizi fornendo un framework java per l utilizzo dei protocolli che sono gestiti dal primo gruppi di API. L API JAIN SIP [2] fornisce un interfaccia Java standard e portabile per condividere informazioni tra client SIP e server SIP, mettendo a disposizione funzionalità per il controllo delle chiamate e quindi fornendo un infrastruttura per lo sviluppo di applicazioni su reti convergenti. Questa API permette la creazione rapida e l attivazione di servizi dinamici di telefonia all interno di piattaforme Java. Le applicazioni di telefonia hanno bisogno di risorse costose per il loro sviluppo, le prove a la messa in funzione. Un componente JAIN SIP può essere creato rapidamente, provato e integrato in una gran varietà di piattaforme avendo a già disposizione un buon numero di strumenti e utility. Una soluzione inter piattaforma basata su JAIN offre ai gestori telefonici, ai fornitori di servizi e di componenti di rete, un ambiente di sviluppo aperto e consistente dove sviluppare e integrare servizi di telefonia altamente riutilizzabili. Un applicazione JAIN SIP può essere scritta come programma, applet, servlet o bean. Le API mettono a disposizione le potenzialità presenti nelle diverse versioni di SIP in un interfaccia Java comune. JAIN SIP non fornisce l implementazione dello stack SIP, ma si occupa soltanto di fornire un interfaccia standard. Nella figura 4.1 è visibile la struttura di una generica applicazione che si

44 CAPITOLO 4. TECNOLOGIE UTILIZZATE 43 basa su questa API, in particolare vengono gestiti tutti gli aspetti relativi alla comunicazione attraverso SIP, come ad esempio la risposta alle richieste che arrivano al programma, attraverso opportune interfacce che gestiscono gli eventi relativi ai vari eventi SIP (come l arrivo di richieste o di risposte, o la scadenza di timeout), o la creazione e gestione degli indirizzi, messaggi ed elementi del pacchetto SIP. Figura 4.1: Schema di un applicazione JAIN-SIP

45 Capitolo 5 Soluzione del progetto 5.1 Introduzione La soluzione proposta per raggiungere gli obiettivi specificati nel paragrafo 1.1, consiste nella realizzazione di un client sviluppato in linguaggio Java utilizzando le API JAIN SIP [2], e nella modifica di alcune parti del modulo di presenza presence integrato in Kamailio. Topologia della rete di riferimento Per lo sviluppo di questo progetto, facciamo riferimento ad una ben definita rete di nodi sui quali girano diverse istanze del presence server Kamailio opportunamente configurate. I vari nodi della rete dovranno comunicare tra loro per sincronizzarsi, garantendo così la possibilità di accesso al servizio di presenza in ambienti distribuiti nei quali presentity e watcher afferiscano a server diversi. Altro scopo della sincronizzazione, è quello di bilanciare il carico degli utenti utilizzando le informazioni che ogni nodo è in grado di raccogliere. (figura 5.1). 44

46 CAPITOLO 5. SOLUZIONE DEL PROGETTO 45 Figura 5.1: Sistema Client SIP Il client SIP è stato sviluppato in linguaggio Java utilizzando la tecnologia JAIN SIP già citata nel paragrafo 4.2. Tale client implementa le funzionalità di base per l utilizzo del servizio di presenza, il quale è offerto da una rete di presence server Kamailio. Modifiche al modulo di presenza presence Il modulo di presenza presence integrato in Kamailio realizza le funzionalità necessarie per offrire il servizio di presenza, ed è il cuore del nostro progetto. Modificando tale modulo, è possibile sviluppare un meccanismo di bilanciamento del carico di lavoro in modo che le varie richieste entranti vengano smistate su più nodi della rete dediti a fornire il servizio di presenza. Il primo passo da affrontare per realizzare una soluzione funzionante che soddisfi gli obiettivi preposti, consiste nello studio del funzionamento

47 CAPITOLO 5. SOLUZIONE DEL PROGETTO 46 del modulo di presenza integrato in Kamailio. Tale modulo è suddiviso in sottomoduli, ognuno dei quali implementa un sottoinsieme ben preciso di funzionalità. Le nostre modifiche coinvolgono il processo di gestione delle richieste di pubblicazione e quello di gestione delle richieste di sottoscrizione. In particolare è necessario introdurre un controllo della frequenza di arrivo delle richieste e del numero di watcher presenti sul presene server. Nel caso in cui la frequenza di arrivo delle richieste di pubblicazine sia troppo elavata, il presence server rifiuta la pubblicazione comunicandolo al client che potrà gestire l errore a suo piacimento, ad esempio inoltrando la richiesta ad un altro presence server. Come già illustrato, all arrivo di un messaggio di PUBLISH da parte di un presentity, il presence server inoltra un messaggio di tipo NOTIFY a tutti i watcher sottoscritti al servizio di presenza di quel presentity. Questo meccanismo può congestionare il server nel caso in cui un presentity abbia un gran numero di sottoscritti o nel caso in cui pubblichi informazioni troppo frequentemente; si rivela quindi necessario gestire questi due casi. La soluzione proposta prevede un controllo sulla frequenza di pubblicazione del presentity ed il numero di watcher che vogliono sottoscriversi al servizio di presenza di un certo utente. Nel caso in cui un presentity pubblichi informazioni molto frequentemente, il presence server evita di attuare il processo di notifica a tutti i sottoscrittori per ogni pubblicazione ricevuta, ma lo attua soltanto ad intervalli prestabiliti, riducendo così il numero di notifiche generate. Qualora un utente voglia sottoscriversi al servizio di presenza relativo ad un presentity che conta già molti sottoscritti, la richiesta viene rifiutata dal server, il quale provvede a rispondere al client richiedente con un messaggio che

48 CAPITOLO 5. SOLUZIONE DEL PROGETTO 47 gli indica uno stato di temporanea indisponibilità del servizio presso il server stesso. Questo ha lo scopo di evitare che, all arrivo di un aggiornamento di stato da parte di un presentity, il server debba notificare una quantità di watcher molto elevata, cosa che potrebbe portare ad uno stato di congestione del server stesso e del canale di comunicazione. Il nostro sistema dispone di più nodi interconnessi tra loro, che offrono un servizio di presenza a tutti i client. Da questo, nasce il problema della decentralizzazione delle informazioni pubblicate su nodi differenti. Per ovviare a questo inconveniente, la nostra soluzione prevede la configurazione delle istanze di Kamailio in esecuzione, in modo che tutte si interfaccino ad un database centralizzato che contiene le varie informazioni utili ad attuare il servizio da offrire. In questo modo tutti i presence server sono a conoscenza delle ultime informazioni pubblicate da ciascun presentity, e ognuno può attuare il processo di notifica a tutti i watcher sottoscritti a quel presentity presso il server stesso. Ogni server, all arrivo di una pubblicazione da parte di un presentity, deve, inoltre, avvisare tutti gli altri server del sistema sull avvenuta pubblicazione di nuove informazioni da parte di quel preciso presentity, in modo che ognuno possa notificare l evento a tutti i propri sottoscrittori. Abbiamo, quindi, una centralizzazione delle informazioni di presenza per ogni presentity, ed una distribuzione dei sottoscrittori sui vari nodi del sistema. La soluzione prevede, inoltre, la distribuzione, sui vari nodi, del carico di lavoro portato dalla gestione di una pubblicazione di informazioni (figura 5.2).

49 CAPITOLO 5. SOLUZIONE DEL PROGETTO 48 Figura 5.2: Sistema con database centralizzato Per l installazione e la configurazione del modulo di presenza modificato, si rimanda all appendice B 5.2 Client SIP Il client SIP è stato sviluppato in linguaggio Java utilizzando la tecnologia JAIN SIP. Il client deve:

50 CAPITOLO 5. SOLUZIONE DEL PROGETTO 49 sottoscriversi al servizio di presenza presso un presence server; pubblicare informazioni di presenza presso un presence server; ricevere notifiche da uno o più presence server; eventualmente, ridirezionare le sue richieste di sottoscrizione e pubblicazione su presence server differenti in caso di indisponibilità di quello scelto. In figura 5.3 è riportata una schermata del client. Figura 5.3: Sistema Il client è munito di: una text area (Received Messages) nel quale vengono visualizzati tutti i messaggi ricevuti dai presence client; una text field (Set status) in cui settare il proprio stato;

KAMAILIO: UNA MODIFICA PER LOAD BALANCING E QoS

KAMAILIO: UNA MODIFICA PER LOAD BALANCING E QoS KAMAILIO: UNA MODIFICA PER LOAD BALANCING E QoS Candidato Stefano Poli Docente Prof. Ing. Antonio Corradi Obiettivi Supporto per la distribuzione di dati di presenza su larga scala Comunicazione tra fonti

Dettagli

LOAD BALANCING PER SERVIZI DI

LOAD BALANCING PER SERVIZI DI LOAD BALANCING PER SERVIZI DI PRESENZA Carella Giuseppe Antonio Matricola 0000348431 Docente: Prof. Ing. Antonio Corradi Relatore: Ing. Luca Nardelli Attività progettuale di Reti di Calcolatori M Anno

Dettagli

Introduzione a Internet e World Wide Web

Introduzione a Internet e World Wide Web Introduzione a Internet e World Wide Web Sommario Breve storia di Internet Commutazione di pacchetto e TCP/IP Il Web HTTP HTML CGI... Connessione tra basi di dati e Web Internetworking (collegamento fra

Dettagli

SIP. Session initiation protocol. Una visione sul lungo periodo. Standard IEEE

SIP. Session initiation protocol. Una visione sul lungo periodo. Standard IEEE SIP Session initiation protocol Standard IEEE Una visione sul lungo periodo Tutte le telefonate avverranno tramite Internet Gli utenti saranno identificati tramite nome o e- mail e non numeri di telefono

Dettagli

Uso di Internet: Esempio. Prof. Franco Callegati

Uso di Internet: Esempio. Prof. Franco Callegati Uso di Internet: Esempio Prof. Franco Callegati http://deisnet.deis.unibo.it Consultazione di una pagina WEB Per collegarsi a Internet un Utente apre il proprio Browser Web (B) Dal Sistema Operativo (Es:

Dettagli

Protocolli multimediali

Protocolli multimediali Protocolli multimediali RTP, RTCP, RTSP Ormai molte applicazioni scambiano informazioni in cui le relazioni temporali sono molto importanti. La Telefonia via Internet, Videoconferenza, Lezioni a distanza,

Dettagli

Università di Bologna

Università di Bologna Università di Bologna Laurea Magistrale in Ingegneria Informatica Corso di Reti di Calcolatori M - A.A. 2009-10 Prof. Antonio Corradi Progetto RE.VE.N.GE. CORBA REliable and VErsatile News delivery support

Dettagli

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche

Mariarosaria Napolitano. Architettura TCP/IP. Corso di: Laboratorio di tecnologie informatiche e telematiche Mariarosaria Napolitano Architettura TCP/IP Corso di: Laboratorio di tecnologie informatiche e telematiche Contesto e Prerequisiti Contesto E' rivolto agli studenti del V anno degli Istituti Tecnici Industriali

Dettagli

Livello applicazione. Fondamenti di Informatica

Livello applicazione. Fondamenti di Informatica Livello applicazione Fondamenti di Informatica Previously on Fondamenti di informatica Livello fisico Livello instradamento Network e Internetwork Protocollo IP Indirizzi IP Routing Client e server Server:

Dettagli

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

TECN.PROG.SIST.INF. I Socket Roberta Gerboni 2015 - Roberta Gerboni Socket e porte I sistemi operativi multitasking possono fare girare contemporaneamente più processi dove ogni processo può rendere disponibili anche più servizi. Questi devono essere

Dettagli

Capitolo 6 Sistemi. Conferenze a commutazione di circuito H.320 H.324 H.321 H.310 H.322 Conferenze a commutazione di pacchetto H.

Capitolo 6 Sistemi. Conferenze a commutazione di circuito H.320 H.324 H.321 H.310 H.322 Conferenze a commutazione di pacchetto H. Capitolo 6 Sistemi Conferenze a commutazione di circuito H.320 H.324 H.321 H.310 H.322 Conferenze a commutazione di pacchetto AVI H.323 SIP Conferenze a commutazione di circuito Compressore audio Compressore

Dettagli

Studio e implementazione di un Profilo SAML per Trait based Identity Management System nel Session Initiation Protocol

Studio e implementazione di un Profilo SAML per Trait based Identity Management System nel Session Initiation Protocol UNIVERSITA DEGLI STUDI DI PISA FACOLTA DI INGEGNERIA Corso di Laurea Specialistica in INGEGNERIA INFORMATICA TESI DI LAUREA SPECIALISTICA Studio e implementazione di un Profilo SAML per Trait based Identity

Dettagli

Tecnologie e applicazioni web JSON Web Token (JWT)

Tecnologie e applicazioni web JSON Web Token (JWT) Tecnologie e applicazioni web JSON Web Token (JWT) Filippo Bergamasco ( filippo.bergamasco@unive.it) http://www.dais.unive.it/~bergamasco/ DAIS - Università Ca Foscari di Venezia Anno accademico: 2017/2018

Dettagli

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sicurezza e Permission in Android

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sicurezza e Permission in Android Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola 633688 Sicurezza e Permission in Android La sicurezza al giorno d oggi è uno degli aspetti più importanti dell informatica!

Dettagli

MODELLI ISO/OSI e TCP/IP

MODELLI ISO/OSI e TCP/IP PARTE I - Reti di Calcolatori ed Internet MODELLI ISO/OSI e TCP/IP 2.1 Reti di Calcolatori Livelli e Servizi Il modello OSI Il modello TCP/IP Un confronto tra OSI e TCP/IP ARPANET Ethernet Reti ATM reti

Dettagli

Manuale VOCE KQI. Sommario

Manuale VOCE KQI. Sommario Manuale VOCE KQI Sommario Generalità... 2 Il portale... 2 Nuovo cliente... 2 Nuovo numero... 4 URI... 6 Deviazione di chiamata... 7 Assegnazione del credito... 8 Number portability... 9 Generalità In questo

Dettagli

Uno Strumento Simulativo per Architetture VoIP per Dispositivi Mobili Multihomed

Uno Strumento Simulativo per Architetture VoIP per Dispositivi Mobili Multihomed Alma Mater Studiorum - Università di Bologna Facoltà di Scienze Matematiche Fisiche e Naturali Dipartimento di Scienze dell Informazione Uno Strumento Simulativo per Architetture VoIP per Dispositivi Mobili

Dettagli

Internet (- working). Le basi.

Internet (- working). Le basi. Internet (- working). Le basi. 1 GABRIELLA PAOLINI (GARR) 18 OTTOBRE 2011 Capire come funziona Internet 2 FACCIAMO UN PASSO INDIETRO Internet È un insieme di reti interconnesse fra di loro su tutto il

Dettagli

Applicazioni web. Sommario. Parte 4 http. http Metodi, intestazioni e codici di stato get post Parametri e cookie. Applicazioni web.

Applicazioni web. Sommario. Parte 4 http. http Metodi, intestazioni e codici di stato get post Parametri e cookie. Applicazioni web. Parte 4 http Sommario http Metodi, intestazioni e codici di stato get post Parametri e cookie 1 Http Hyper Text Transfer Protocol Protocollo di livello applicazione per sistemi informativi distribuiti,

Dettagli

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 8 novembre Corso di laurea in Economia

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 8 novembre Corso di laurea in Economia Informatica Dipartimento di Economia Ing. Cristiano Gregnanin Corso di laurea in Economia 8 novembre 2016 1 / 28 Rete informatica La rete informatica è la condivisione d informazioni o servizi. un computer

Dettagli

MODELLI ISO/OSI e TCP/IP

MODELLI ISO/OSI e TCP/IP PARTE I - Reti di Calcolatori ed Internet MODELLI ISO/OSI e TCP/IP Reti di Calcolatori Livelli e Servizi Il modello OSI Il modello TCP/IP Un confronto tra OSI e TCP/IP ARPANET Ethernet Reti ATM reti wireless

Dettagli

Introduzione. Java HTTP. G. Prencipe

Introduzione. Java HTTP. G. Prencipe Java html e http G. Prencipe prencipe@di.unipi.it Introduzione Tutte le comunicazioni tra client e server Web avvengono mediate il (HyperText Transfer Protocol, attualmente alla versione 1.1), che è un

Dettagli

MODALITÀ DI INVIO DEGLI ORDINI DI DISPACCIAMENTO

MODALITÀ DI INVIO DEGLI ORDINI DI DISPACCIAMENTO 1 di 8 MODALITÀ DI INVIO DEGLI ORDINI DI DISPACCIAMENTO Storia delle revisioni Rev.00 01/11/2005 Prima Stesura Rev.01 Modificata modalità di invio messaggi relativi agli ordini di dispacciamento 2 di 8

Dettagli

I a Prova in Itinere di Telematica di Base 24 marzo 2006

I a Prova in Itinere di Telematica di Base 24 marzo 2006 Cognome e Nome: Matricola: I a Prova in Itinere di Telematica di Base 24 marzo 2006 1. Un pacchetto di 20M deve attraversare un collegamento tra due nodi la cui frequenza di trasmissione e di 200Mbs. Il

Dettagli

Lo strato di Trasporto

Lo strato di Trasporto Corso di Fondamenti di Reti di Telecomunicazioni LT - ELE / LM-TLC Reti di Telecomunicazioni a.a. 2016-2017 Lo strato di Trasporto Internet è composta da host connessi a reti a commutazione di pacchetto,

Dettagli

Corso di Reti di Calcolatori T

Corso di Reti di Calcolatori T Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 1 (proposta) Socket Java senza connessione Luca Foschini Anno accademico 2016/2017 Esercitazione 1 1

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende

Dettagli

IPv6: aspetti generali

IPv6: aspetti generali Marco Listanti IPv6: aspetti generali Funzionalità IPv6 (1) Aumento dello spazio di indirizzamento Indirizzi a 128 bit Indirizzamento gerarchico basato sul concetto di prefisso Semplificazione della struttura

Dettagli

Struttura di un applicazione Instant Developer

Struttura di un applicazione Instant Developer La creazione di un nuovo tipo di installazione avviene dall interno del manager, a partire dall installazione di default che è stata creata da In.de quando l applicazione è stata pubblicata per la prima

Dettagli

Simple Social: implementazione di una

Simple Social: implementazione di una Laboratorio di Reti, Corsi A e B Simple Social: implementazione di una Online Social Network Progetto di Fine Corso A.A. 2015/16 1.Descrizione del problema Il progetto consiste nello sviluppo di una rete

Dettagli

Politecnico di Milano Scuola di Ingegneria Industriale e dell Informazione. Modelli Funzionali

Politecnico di Milano Scuola di Ingegneria Industriale e dell Informazione. Modelli Funzionali Politecnico di Milano Scuola di Ingegneria Industriale e dell Informazione Modelli Funzionali 2 Il servizio di comunicazione o Date due o più entità remote o Possiamo descrivere il servizio di comunicazione

Dettagli

Specifiche di interfaccia applicativa per l invio delle pratiche protesti

Specifiche di interfaccia applicativa per l invio delle pratiche protesti ALLEGATO A Specifiche di interfaccia applicativa per l invio delle pratiche protesti come da DM 14 novembre 2018 art. 2 comma 5 Versione 1.0 Maggio 2019 Indice 1 Introduzione al documento... 3 1.1 Scopo

Dettagli

Metodologie Informatiche Applicate al Turismo

Metodologie Informatiche Applicate al Turismo Metodologie Informatiche Applicate al Turismo 3. Introduzione a Internet Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di Laurea

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 9 (proposta) Servizio di Gestione dei Servizi Liste di Distribuzione Luca Foschini Anno accademico

Dettagli

Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete

Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete Reti di calcolatori Protocolli di Trasmissione: Il modello ISO/OSI L architettura TCP/IP Protocolli di trasmissione Un protocollo di

Dettagli

Informatica: arte e mestiere 3/ed

Informatica: arte e mestiere 3/ed Internet l Indice Storia di Internet Il protocollo TCP/IP Indirizzi IP Intranet e indirizzi privati Nomi di dominio World Wide Web Ipertesti URL e HTTP Motori di ricerca Posta elettronica Architettura

Dettagli

ISO- OSI e architetture Client-Server

ISO- OSI e architetture Client-Server LEZIONE 9 ISO- OSI e architetture Client-Server Proff. Giorgio Valle Raffaella Folgieri giorgio.valle@unimi.it folgieri@dico.unimi.it Lez 10 modello ISO-OSI e architettura client-server 1 Nelle scorse

Dettagli

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:

Dettagli

Il livello trasporto: Introduzione e protocollo UDP

Il livello trasporto: Introduzione e protocollo UDP Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori a.a. 2009/10 Roberto Canonico (roberto.canonico@unina.it) Antonio Pescapè (pescape@unina.it) Il livello trasporto: Introduzione e

Dettagli

Internet Protocol Cenni introduttivi

Internet Protocol Cenni introduttivi Politecnico di Milano Sede di Cremona A.A. 2013/2014 Corso di RETI DI COMUNICAZIONE ED INTERNET Modulo 1 Internet Protocol Cenni introduttivi Antonio Corghi I protocolli di Internet (1) q L Internet Protocol

Dettagli

Sistemi distribuiti e reti di calcolatori

Sistemi distribuiti e reti di calcolatori Sistemi distribuiti e reti di calcolatori 1 Indice Modulazione e trasmissione dei dati Reti di calcolatori Topologia Messaggi e protocolli ISO/OSI Ethernet Architettura client/server Telefonia mobile 2

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 2 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Commutazione di Circuito Le reti telefoniche utilizzano la tecnica della commutazione di circuito. I commutatori

Dettagli

Il livello trasporto: Introduzione e protocollo UDP

Il livello trasporto: Introduzione e protocollo UDP Corsi di Laurea in Ingegneria Informatica Ingegneria delle Telecomunicazioni Ingegneria dell Automazione Corso di Reti di Calcolatori Simon Pietro Romano (spromano@unina.it) Antonio Pescapè (pescape@unina.it)

Dettagli

MODALITÀ DI INVIO DEGLI ORDINI DI DISPACCIAMENTO

MODALITÀ DI INVIO DEGLI ORDINI DI DISPACCIAMENTO 1 di 7 MODALITÀ DI INVIO DEGLI ORDINI DI DISPACCIAMENTO Storia delle revisioni Rev.00 01/11/2005 Prima Stesura Rev.01 31//10/2017 Modificata modalità di invio messaggi relativi agli ordini di dispacciamento

Dettagli

Informatica. Alfredo Cuzzocrea. Reti di Calcolatori

Informatica. Alfredo Cuzzocrea. Reti di Calcolatori Informatica Alfredo Cuzzocrea PROTOCOLLI DI COMUNICAZIONE Protocolli di comunicazione: regole che formalizzano la cooperazione tra calcolatori collegati in rete (dalle caratteristiche fisiche del segnale

Dettagli

Tito Flagella - Il protocollo HTTP

Tito Flagella - Il protocollo HTTP Tito Flagella - tito@link.it Il protocollo HTTP Il protocollo HTTP È il protocollo standard tramite il quale i server Web rispondono alle richieste dei client (inizialmente i browser); È basato su un modello

Dettagli

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00 Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00 NB: alcune domande hanno risposta multipla: si richiede di identificare TUTTE le risposte corrette. Cognome: Nome:

Dettagli

Advanced IPv4 Access List

Advanced IPv4 Access List Advanced IPv4 Access List 1 Extended Numbered Access List Le Extended Numbered Access List sono utilizzate per permettere ad un router Cisco di poter bloccare determinati flussi dati e permetterne degli

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio

Dettagli

IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP Parte II - Reti di Calcolatori ed Internet IL LIVELLO APPLICAZIONI WEB e HTTP 7-1 Applicazioni di Rete World Wide Web URL Web Client Web Server HTTP Futuro del Web 7-2 World Wide Web (WWW) Il World Wide

Dettagli

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI Introduzione alle basi di dati (2) 2 Modelli dei dati, schemi e istanze (1) Nell approccio con basi di dati è fondamentale avere un certo livello di

Dettagli

Introduzione all inguaggio HTML e CSS3 INTRODUZIONE. Prof.ssa Cristina Gena

Introduzione all inguaggio HTML e CSS3 INTRODUZIONE. Prof.ssa Cristina Gena + Introduzione all inguaggio HTML e CSS3 INTRODUZIONE Prof.ssa Cristina Gena Introduzione In questa lezione introduttiva approfondiremo i principali concetti legati al web, daremo una definizione del web

Dettagli

Prof. Pagani corrado SISTEMI INFORMATIVI E DATABASE

Prof. Pagani corrado SISTEMI INFORMATIVI E DATABASE Prof. Pagani corrado SISTEMI INFORMATIVI E DATABASE ARCHIVIAZIONE DEI DATI I vari S.O. e i cosiddetti linguaggi ad alto livello mettono a disposizione varie tipologie di file per l archiviazione e gestione

Dettagli

C4 Rete Regionale dei SUAP architettura generale. maggio 2007

C4 Rete Regionale dei SUAP architettura generale. maggio 2007 C4 Rete Regionale dei SUAP architettura generale maggio 2007 Sommario 1. ARCHITETTURA GENERALE... 3 1.1.1 Proxy Applicativo... 3 1.1.2 SIL Sistema Informativo Locale... 3 1.1.3 Messaggi ed Eventi... 3

Dettagli

Reti di Calcolatori. IL LIVELLO APPLICAZIONI WEB e HTTP

Reti di Calcolatori. IL LIVELLO APPLICAZIONI WEB e HTTP Reti di Calcolatori IL LIVELLO APPLICAZIONI WEB e HTTP D. Talia RETI DI CALCOLATORI - UNICAL 7-1 Applicazioni di Rete World Wide Web URL Web Client Web Server HTTP Futuro del Web D. Talia RETI DI CALCOLATORI

Dettagli

IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP Reti di Calcolatori IL LIVELLO APPLICAZIONI WEB e HTTP D. Talia RETI DI CALCOLATORI - UNICAL 7-1 Applicazioni di Rete World Wide Web URL Web Client Web Server HTTP Futuro del Web D. Talia RETI DI CALCOLATORI

Dettagli

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione I semestre 03/04 Comunicazione tra Computer Protocolli Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica 2

Dettagli

Architetture Client/Server e World Wide Web

Architetture Client/Server e World Wide Web Basi di Dati Architetture Client/Server e World Wide Web Il World Wide Web Il web è una ragnatela (grafo) di contenuti (nodi) collegati tra loro attraverso collegamenti (link) I nodi sono documenti e/o

Dettagli

Modulo 2 Architetture dei SD Lezione 1

Modulo 2 Architetture dei SD Lezione 1 Modulo 2 Architetture dei SD Lezione 1 Corso Sistemi Distribuiti (6 CFU) Docente: Prof. Marcello Castellano Sistemi Distribuiti, LM Ing. Informatica 6 CFU Docente: Marcello Castellano Table of Contents

Dettagli

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17 Laboratorio di Reti, Corsi A e B Text-Twist Progetto di Fine Corso A.A. 2016/17 1.Descrizione del problema Il progetto consiste nello sviluppo di un gioco multiplayer online. All inizio di una partita

Dettagli

IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP Parte II - Reti di Calcolatori ed Internet IL LIVELLO APPLICAZIONI WEB e HTTP Applicazioni di Rete World Wide Web URL Web Client Web Server HTTP Futuro del Web 7-1 7-2 World Wide Web (WWW) Il World Wide

Dettagli

Livello di trasporto:

Livello di trasporto: Livello di : Gaia Maselli maselli@di.uniroma1.it Queste slide sono un adattamento delle slide fornite dal libro di testo e pertanto protette da copyright. All material copyright 1996-2007 J.F Kurose and

Dettagli

POS O TA T ELE L TT T R T ON O I N CA

POS O TA T ELE L TT T R T ON O I N CA POSTA ELETTRONICA Cos e un messaggio elettronico Comunemente è il frutto di un applicazione di Posta Elettronica Può considerarsi, nel modo più semplice, uno scambio d informazioni di vario genere, attraverso

Dettagli

SMS Gateway - Specifiche WS. Specifica Tecnica

SMS Gateway - Specifiche WS. Specifica Tecnica Specifica Tecnica Revisione Data Elaborato da Verificato da Note 1 21/02/13 Stefano Peruzzi Gianni Antini Mod. ST-rev002_2013-02-21 Pag. 1/11 Indice 1 Oggetto...3 2 Scopo del documento...3 3 Riferimenti...3

Dettagli

AREA SERVIZI ICT FAX SERVER. Guida all Utilizzo

AREA SERVIZI ICT FAX SERVER. Guida all Utilizzo FAX SERVER Guida all Utilizzo INDICE 1. Introduzione... 2 2. Inviare un fax... 2 3. Analisi delle sezioni... 3 3.1 Mittente... 3 3.2 Destinatari... 5 3.3 Corpo del fax... 6 3.3.1 Cover-predefinita. cov...

Dettagli

Corso di Reti di Calcolatori T

Corso di Reti di Calcolatori T Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 6 (proposta) Java RMI Antonio Corradi, Luca Foschini Michele Solimando, Giuseppe Martuscelli Anno Accademico

Dettagli

Presentazione Domande di Disoccupazione Agricoli e/o A.N.F. Internet Versione 1.0

Presentazione Domande di Disoccupazione Agricoli e/o A.N.F. Internet Versione 1.0 Presentazione Domande di Disoccupazione Agricoli e/o A.N.F. vi@ Internet Versione 1.0 Indice 1. PRESENTAZIONE...1 2. SERVIZI ON-LINE...2 2.1. ACQUISIZIONE DOMANDA...7 2.2. INVIO LOTTO...18 2.3. GESTIONE

Dettagli

Il World Wide Web. Marco Porta - CIM: Web Design & Technologies

Il World Wide Web. Marco Porta - CIM: Web Design & Technologies Il World Wide Web 1 Cos è il World Wide Web? Il Web è un sistema basato su Internet che utilizza la tecnologia degli ipertesti per distribuire documenti, immagini, video,... Il Web è un sottoinsieme di

Dettagli

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori Per impostazione predefinita, i risultati dei moduli vengono salvati

Dettagli

Utilizzo collegamento remoto

Utilizzo collegamento remoto Utilizzo collegamento remoto Introduzione Il collegamento VPN (virtual private network) consente a PC collegati ad internet ma fisicamente fuori dalla rete interna regionale, di accedere, con le credenziali

Dettagli

Basi di Dati Architetture Client/Server

Basi di Dati Architetture Client/Server Basi di Dati Architetture Client/Server Architettura centralizzata Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Tutta l intelligenza

Dettagli

Architetture di rete. 4. Le applicazioni di rete

Architetture di rete. 4. Le applicazioni di rete Architetture di rete 4. Le applicazioni di rete Introduzione L avvento di tecnologie (hw, sw, protocolli) di rete avanzate ha permesso la nascita di architetture software molto evolute che permettono lo

Dettagli

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server

Dettagli

Dipartimento Affari Interni e Territoriali Direzione Centrale per i Servizi Demografici INA-SAIA. SSLProxy. Manuale Utente. versione 1.

Dipartimento Affari Interni e Territoriali Direzione Centrale per i Servizi Demografici INA-SAIA. SSLProxy. Manuale Utente. versione 1. SSLProxy Manuale Utente versione 1.0 Indice 1 Panoramica... 3 2 Installazione...4 2.1 Prerequisiti... 4 2.2 Acquisizione del pacchetto... 4 2.3 Copia dei file sulla postazione client... 4 2.4 Esecuzione

Dettagli

Collaborazioni on-line

Collaborazioni on-line Collaborazioni on-line Sommario Concetti fondamentali Collaborazioni on-line Software per le collaborazioni on-line Internet Rete di computer collegati fisicamente per comunicare e scambiare informazioni

Dettagli

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo. Corso integrato di Sistemi di Elaborazione Modulo I Prof. Crescenzio Gallo crescenzio.gallo@unifg.it Basi di dati: introduzione 2 Introduzione Gestione delle informazioni Basi di dati / DBMS Modello dei

Dettagli

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat. Esame Laboratorio di Sistemi Operativi 2-01-2008 Il compito è costituito da domande chiuse e domande aperte. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 1 ora. Domande chiuse:

Dettagli

Analisi e sviluppo di un client per l accesso a dati su server remoto da dispositivi embedded

Analisi e sviluppo di un client per l accesso a dati su server remoto da dispositivi embedded tesi di laurea Analisi e sviluppo di un client per l accesso a dati su server remoto da dispositivi embedded Anno Accademico 2007-2008 relatore Ch.mo prof. Porfirio Tramontana correlatore Dott. Antonio

Dettagli

Corso di. Reti di Telecomunicazioni a.a

Corso di. Reti di Telecomunicazioni a.a Corso di Reti di Telecomunicazioni a.a. 2016-2017 Il protocollo IPv4 (RFC 791) Il protocollo IP IP è un protocollo di strato 3 e fornisce le seguenti funzionalità: definisce lo schema di indirizzamento

Dettagli

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Basi di dati Basi di Dati Architetture Client/Server Architettura centralizzata Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Tutta

Dettagli

UDP. User Datagram Protocol. UDP Connectionless

UDP. User Datagram Protocol. UDP Connectionless UDP User Datagram Protocol IP fornisce un unreliable datagram service tra gli host I Transport protocols forniscono un servizio di consegna end-to-end tra gli endpoints di una connessione UDP Connectionless

Dettagli

Configurazione di riferimento di IP Office Server Edition IP Office 8.1

Configurazione di riferimento di IP Office Server Edition IP Office 8.1 Configurazione di riferimento di IP Office Server Edition IP Office 8.1 15-604135 Dicembre 2012 Sommario Capitolo 1: Introduzione... 5 Scopo del documento... 5 Destinatari... 5 Documenti correlati...

Dettagli

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Basi di Dati Architetture Client/Server D B M G Architettura centralizzata Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo Tutta l intelligenza

Dettagli

ALTRI TIPI DI CONNESSIONE

ALTRI TIPI DI CONNESSIONE ALTRI TIPI DI CONNESSIONE Socket Un socket è una connessione a una porta su un computer remoto, che è usata per scambiare informazioni con comandi HTTP Supponiamo che la nostra applicazione voglia ricevere

Dettagli

Internet of Things & Wireless Sensor Networks

Internet of Things & Wireless Sensor Networks Internet of Things & Wireless Sensor Networks Protocols for IoT Ing. Luca Davoli Wireless Ad-hoc Sensor Network Laboratory WASNLab davoli@ce.unipr.it This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike

Dettagli

Dynamic Host Configuration Protocol (DHCP) In una rete ogni calcolatore ha bisogno di un indirizzo IP, scelto in modo tale che appartenga all'insieme

Dynamic Host Configuration Protocol (DHCP) In una rete ogni calcolatore ha bisogno di un indirizzo IP, scelto in modo tale che appartenga all'insieme DHCP e DNS 1 Dynamic Host Configuration Protocol (DHCP) In una rete ogni calcolatore ha bisogno di un indirizzo IP, scelto in modo tale che appartenga all'insieme di indirizzi possibili assegnati all'intera

Dettagli

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete I semestre 02/03 Modelli di Riferimento: TCP/IP e OSI Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Architettura di rete architettura di rete insieme delle specifiche funzionali

Dettagli

Introduzione D B M G

Introduzione D B M G Introduzione D B M G Introduzione alle basi di dati Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS D B M G 2 Gestione delle

Dettagli

Terminologia e concetti fondamentali La struttura di Internet (hardware e software):

Terminologia e concetti fondamentali La struttura di Internet (hardware e software): Introduzione Terminologia e concetti fondamentali La struttura di Internet (hardware e software): Accesso alla rete: end-systems, applicazioni, mezzi trasmissivi Nucleo: commutazione, struttura della rete,

Dettagli

L integrazione di mail in un sistema automatico di distribuzione di ontologie: Ontology Mail Manager

L integrazione di mail in un sistema automatico di distribuzione di ontologie: Ontology Mail Manager L integrazione di mail in un sistema automatico di distribuzione di ontologie: Ontology Mail Manager Candidato: Romina Tuori Relatore: Prof. Fabio Vitali Correlatori: Dott.ssa Silvia Duca Dott. Antonio

Dettagli

Prof. Roberto De Prisco. TEORIA - Lezione 10. ARP e RARP. Università degli studi di Salerno Laurea e Diploma in Informatica

Prof. Roberto De Prisco. TEORIA - Lezione 10. ARP e RARP. Università degli studi di Salerno Laurea e Diploma in Informatica Prof. Roberto De Prisco TEORIA - Lezione 10 ARP e RARP Università degli studi di Salerno Laurea e Diploma in Informatica Indirizzi fisici e indirizzi IP 2 Indirizzo fisico Ogni computer presente su una

Dettagli

RETI GEOGRAFICHE COMMUTATE

RETI GEOGRAFICHE COMMUTATE RETI GEOGRAFICHE COMMUTATE I dati sono immessi nella rete da un e instradati alla destinazione passando da a La rete non è completamente connessa Esistono più cammini alternativi (affidabilità) = Interface

Dettagli

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1 Applicazioni distribuite e sistemi ad oggetti distribuiti RPC RMI - Web Services 1 Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli

Dettagli

Applicazioni distribuite e sistemi ad oggetti distribuiti

Applicazioni distribuite e sistemi ad oggetti distribuiti Applicazioni distribuite e sistemi ad oggetti distribuiti Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli di comunicazione asincroni

Dettagli

PROCEDURA APERTA PER L AFFIDAMENTO DELLA FORNITURA DI AUSILI PER INCONTINENZA E ASSORBENZA A MINOR IMPATTO AMBIENTALE 3

PROCEDURA APERTA PER L AFFIDAMENTO DELLA FORNITURA DI AUSILI PER INCONTINENZA E ASSORBENZA A MINOR IMPATTO AMBIENTALE 3 PROCEDURA APERTA PER L AFFIDAMENTO DELLA FORNITURA DI AUSILI PER INCONTINENZA E ASSORBENZA A MINOR IMPATTO AMBIENTALE 3 ALLEGATO 5.1 SISTEMA INFORMATIVO SPECIFICHE MESSAGGI BACKBONE SPA SVILUPPO PERCORSI

Dettagli

14/12/2018 Informatici e di Telecomunicazioni

14/12/2018 Informatici e di Telecomunicazioni Informatici e di Telecomunicazioni 14 dicembre 2018 Parte I Classe V A INF ISIS E.Fermi Prof. Federico Santolini 1 (c) Primitive del servizio di trasporto (1/3) Premessa E utile ribadire che il livello

Dettagli

Guida per la migrazione FDS BCM File Delivery Services Passaggio alla piattaforma FDS ridondante tra sedi

Guida per la migrazione FDS BCM File Delivery Services Passaggio alla piattaforma FDS ridondante tra sedi Guida per la migrazione FDS BCM File Delivery Services Passaggio alla piattaforma FDS ridondante tra sedi Editore Posta CH SA Tecnologia dell informazione Webergutstrasse 12 CH-3030 Berna (Zollikofen)

Dettagli

Modi di Trasferimento

Modi di Trasferimento Modi di Trasferimento Mattia Natali 31 ottobre 2011 Indice 1 Servizi di trasferimento dell informazione 1 1.1 Tecniche di multiplazione.................................. 1 1.1.1 Tecniche di multiplazione:..............................

Dettagli