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
Introduzione Analizzatore di protocollo di alto livello per lanalisi 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
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
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
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
Controllo delle chiamate e segnalazioni Gestiscono le informazioni che coinvolgono le telefonate Selezione del numero Segnali di libero o occupato Chiamate multiple Definiscono linterfaccia tra la rete IP con la numerazione telefonica e con la rete telefonica tradizionale
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 lutilizzo di altri protocolli per la creazione di unarchitettura completa Non fornisce servizi ma primitive per implementare servizi
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 UAC User Agent Client User Agent UAS User Agent Server User Agent UAC User Agent Client UAS User Agent Server Proxy Server Register Inizializza sessione Risposta
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 lUAC 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
Messaggio SIP - Struttura Struttura messaggio SIP Start Line method URL SIP/2.0SIP/2.0 status reason Header Fields Via: SIP/2.0/ protocol host: port From: user To: user Call-ID: Cseq: seq#method Content-Length: length of body Content-Type: media type of body Header: parameter; par1=value ; ……. Blank line Message Body V = 0 O = origin_user timestamp timestamp IN IP4 host C = IN IP4 media destination address T = 0 M = media type port RTP/AVP payload types
Architettura analizzatore
Interfaccia utente
Servlet Tecnologia Java per la creazione di applicazione web Vengono 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, lutilizzo dinamico della memoria Utilizzano i meccanismi di protezioni forniti dai web container
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
MessageServlet Definisce la logica per la gestione della simulazione Selezione conversazioni Selezioni messaggi di una conversazione Selezione FSM Run simulazione
Engine Componente core del simulatore Dato uninsieme di messaggi relativi ad una comunicazione ed una o più FSM consente di eseguire il processo di analisi della comunicazione Lanalisi della comunicazione può essere eseguita in un unico run oppure è possibile analizzare ogni messaggio, singolarmente
Engine - Run
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 leffettuazione. Le azioni possono essere funzione dellinput e delluscita, macchina di Mealy, associate allingresso in uno stato, macchina di Moore, alluscita da uno stato o ad una transizione.
Engine – Finite State Machine (2) Nel nostro formalismo: Stati e transizioni rispecchiano le definizioni classiche Linput è 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)
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 ()
Engine – Specifica delle condizioni (2) Le condizioni semplici rientrano nelle seguenti tipologie: Tipo del messaggio: messageKind constantValue Valore di un header del messaggio: messageField[Nome del campo] oppure messageField[fieldName] readField[varName] dove varName è un campo salvato nello storage da unazione Tempo trascorso dal messaggio immediatamente precedente: time constantValue Tempo trascorso da uno dei messaggi precedenti: timeDiff[varName] 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
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
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 larchitettura estendibile
Parser Xml Componente del simulatore che gestisce la persistenza delle FSM in file XML Lettura FSM Memorizzazione FSM
FSM.xml e FSM.dtd
Data Access Object Design pattern utilizzato per astrarre e incapsulare gli accessi alle sorgenti dati Consente di leggere e memorizzare i dati
Sipana
Sviluppi futuri Graphical User Interface per la definizione delle FSM e generazione automatica dellXML Estensione multiprotocollo
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