Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

30
di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio

Transcript of Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Page 1: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio

Page 2: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Outline

Introduzione

Voice over IP Controllo delle chiamate e segnalazioni Session Initiation Protocol Messaggi SIP Architettura analizzatore Interfaccia utente Servlet Engine Parser XML Data Access Object Sipana Sviluppi futuri Demo

Page 3: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Introduzione

Analizzatore di protocollo di alto livello per l’analisi e testing di conversazione VOIP

Decodifica dei messaggi

Filtri sulle conversazioni e sui messaggi

Implementazione post-processing

Definizione e esecuzione di test

Analisi off-line dei risultati

Page 4: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Voice over IP

Voice over IP è una tecnologia che rende possibile effettuare una conversazione telefonica sfruttando una connessione internet o una qualsiasi rete dedicata che utilizza il protocollo IP

Le informazioni vocali, codificate in forma digitale, vengono formattate in pacchetti e instradati sulla rete nel momento in cui avviene la comunicazione

Page 5: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Voice over IP - Vantaggi

Costi ridotti

Soprattutto per chiamate su lunga distanza

La sola infrastruttura richiesta è una rete IP

Nuove funzionalità avanzate

Riduzione della banda utilizzata

I pacchetti vengono trasmesso solo in presenza di comunicazione

Portabilità del numero telefonico

Page 6: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Voice over IP - Svantaggi

E’ necessario garantire livelli accettabili di QoS

Comunicazione real-time

Sicurezza della comunicazione

Eredità i problemi di sicurezza delle comunicazioni su rete IP

Localizzazione geografica delle chiamate molto complessa

Difficoltà di inoltrare le chiamate alle centrali più vicine

Page 7: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Controllo delle chiamate e segnalazioni

Gestiscono le informazioni che coinvolgono le telefonate

Selezione del numero

Segnali di libero o occupato

Chiamate multiple

Definiscono l’interfaccia tra la rete IP con la numerazione telefonica e con la rete telefonica tradizionale

Page 8: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Session Initiation Protocol

Protocollo del livello applicativo per la gestione delle sessioni di comunicazione tra due o più entità (User Agent)

Assicura la creazione, la modifica e la terminazione di una sessione

Non è integrato verticalmente

E’ necessario l’utilizzo di altri protocolli per la creazione di un’architettura completa

Non fornisce servizi ma primitive per implementare servizi

Page 9: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Session Initiation Protocol – User Agent

Entità logica associata ad un endpoint

User Agent Client: entità che inizializza una sessione

User Agent Server: entità che risponde ad una sessione

UACUser

Agent Client

User Agent

UASUser

Agent Server

User Agent

UACUser

Agent Client

UASUser

Agent Server

Proxy Server

Register

Inizializza sessione

Risposta

Page 10: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Messaggi SIP

I messaggi sono di due tipi Messaggi di richiesta:

○ INVITE: invito a partecipare ad una sessione e negoziare i parametri ○ ACK: conferma che l’UAC ha ricevuto una risposta finale ad una richiesta○ BYE: indica l'abbandono della sessione da parte di un utente○ CANCEL: annulla una richiesta ○ OPTIONS: richiede informazioni sullo stato di un server○ REGISTER: registra l'indirizzo di uno User Agent all'interno di un server

Messaggi di risposta

○ PROVISIONAL: la richiesta è stata ricevuta ed è in esecuzione○ SUCCESS: la richiesta ha avuto successo○ REDIRECTION: la richiesta deve essere re diretta ad un nuovo indirizzo○ REQUEST FAILURE: la richiesta non è andata a buon fine○ SERVER FAILURE: il server non riesce a processare la richiesta○ GLOBAL FAILURE: nessun server può elaborare la richiesta

Page 11: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Messaggio SIP - Struttura

Struttura messaggio SIP

Start Line method URL SIP/2.0 SIP/2.0 status reason

Header Fields Via: SIP/2.0/ protocol host: portFrom: user <sip: from: user@source>To: user<sip: to: user@source>Call-ID: localid@hostCseq: seq#methodContent-Length: length of bodyContent-Type: media type of bodyHeader: parameter; par1=value ; …….

Blank line

Message Body V = 0O = origin_user timestamp timestamp IN IP4 hostC = IN IP4 media destination addressT = 0M = media type port RTP/AVP payload types

Page 12: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Architettura analizzatore

Page 13: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Interfaccia utente

Page 14: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Servlet

Tecnologia Java per la creazione di applicazione webVengono inizializzate alla prima richiesta

○ Ogni nuova richiesta si traduce in una chiamata a un metodo della servlet

Mantengono in modo molto semplice e efficiente le sessioni

Consentono la gestione delle eccezioni, l’utilizzo dinamico della memoria

Utilizzano i meccanismi di protezioni forniti dai web container

Page 15: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

FSMServlet

Definisce la logica per la gestione delle FSM (Finite State Machine)Creazione nuova FSM

Creazione nuovo stato

Creazione nuova transizione

Memorizzazione FSM

Cancellazione FSM

Page 16: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

MessageServlet

Definisce la logica per la gestione della simulazione

Selezione conversazioni

Selezioni messaggi di una conversazione

Selezione FSM

Run simulazione

Page 17: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Engine

Componente core del simulatore

Dato un’insieme di messaggi relativi ad una comunicazione ed una o più FSM consente di eseguire il processo di analisi della comunicazione

L’analisi della comunicazione può essere eseguita in un unico run oppure è possibile analizzare ogni messaggio, singolarmente

Page 18: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Engine - Run

Page 19: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Engine – Finite State Machine

Una Finite State Machine è un modello di comportamento composto da un numero finito di stati, transizioni tra gli stati e azioni. Una transizione può essere associata ad una condizione che ne regola l’effettuazione.

Le azioni possono essere funzione dell’input e dell’uscita, macchina di Mealy, associate all’ingresso in uno stato, macchina di Moore, all’uscita da uno stato o ad una transizione.

Page 20: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Engine – Finite State Machine (2)

Nel nostro formalismo:

Stati e transizioni rispecchiano le definizioni classiche

L’input è costituito dalla sequenza di messaggi selezionata

Le condizioni permettono di esprimere vincoli di transizione basati sui messaggi in ingresso

Le azioni sono associate alle transizioni

La potenza espressiva è arricchita dalla presenza di uno storage in cui è possibile salvare valori (nelle azioni) e recuperarli (nelle condizioni)

Page 21: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Engine – Specifica delle condizioni (1)

Per la specifica delle condizioni è stata definita una grammatica context-free di tipo LL(1) e il relativo interprete

La definizione include un insieme di condizioni elementari che consentono di esprimere vincoli sul tipo di messaggio, sul valore degli header e sul tempo

Gli operatori di confronto sono uguaglianza (==) e disuguaglianza (!=) per valori di testo e numerici

operatori <, >, <=, >= per i valori numerici

Queste tipologie elementari possono essere arbitrariamente combinate con gli operatori &&, ||, !

E’ possibile esprimere precedenza con le parentesi ()

Page 22: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Engine – Specifica delle condizioni (2)

Le condizioni semplici rientrano nelle seguenti tipologie:

Tipo del messaggio: messageKind <comparOp> ‘constantValue’

Valore di un header del messaggio:

messageField[“Nome del campo”] <comparOp> <valore di confronto>

oppure

messageField[“fieldName”] <comparOp> readField[“varName”]

dove varName è un campo salvato nello storage da un’azione

Tempo trascorso dal messaggio immediatamente precedente:time <comparOp> ‘constantValue’

Tempo trascorso da uno dei messaggi precedenti:

timeDiff[“varName”] <comparOp> ‘constant value’

dove varName è un valore di tempo salvato nello storage da un azione e timeDiff è la differenza tra il valore corrente e quello salvato

Page 23: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Engine – Specifica delle azioni

Anche per la specifica delle azioni è stata definita una grammatica context-free di tipo LL(1) e il relativo interprete

Ad ogni transizione è possibile associare una sequenza di azioni, separate da ‘;’

Attualmente esistono 2 tipologie di azione:

saveField[“fieldName”, “varName”]

○ consente di salvare nella variabile di storage varName il campo fieldName del messaggio corrente

saveTimer[“varName”]

○ consente di salvare nella variabile di storage varName il valore temporale associato al messaggio corrente

Page 24: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Engine – Design

Le grammatiche delle condizioni e della azioni sono state definite di tipo LL(1) per poter implementare dei semplici parser a discesa ricorsiva

Tali scelte implementative rendono l’architettura estendibile

Page 25: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Parser Xml

Componente del simulatore che gestisce la persistenza delle FSM in file XML

Lettura FSM

Memorizzazione FSM

Page 26: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

FSM.xml e FSM.dtd

Page 27: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Data Access Object

Design pattern utilizzato per astrarre e incapsulare gli accessi alle sorgenti dati

Consente di leggere e memorizzare i dati

Page 28: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Sipana

Page 29: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Sviluppi futuri

Graphical User Interface per la definizione delle FSM e generazione automatica dell’XML

Estensione multiprotocollo

Page 30: Di Marco Calisti, Antonio Cuomo, Rocco Mazzeo e Francesco Pacilio.

Demo

Creazione di una FSM per applicazione di un test

Selezione di una conversazione

Selezione dei messaggi di una conversazione

Selezione delle FSM da eseguire

Avvio testing

Report stato del testing