Progetto e prototipazione di una infrastruttura di comunicazione per il supporto al monitoraggio distribuito del traffico di rete Progetto di Reti di Calcolatori LS di Paolo Battarra Obiettivi del lavoro Creare un supporto che: rendesse semplice controllare il traffico di una macchina fisicamente lontana; fornisse dati significativi con pochi comandi; mascherasse per quanto possibile all’utente interessato a queste informazioni la complessità dei passaggi che hanno portato al loro ottenimento. Ottenere una architettura che garantisse portabilità, affidabilità e che assicurasse performance accettabili dal punto di vista di un utilizzatore. Possibilità di avere un monitoraggio il più dinamico possibile, ove l’utente: non dovesse possedere alcuna informazione pregressa sulla struttura della specifica rete locale; potesse spostare il suo controllo e la sua attenzione su altri host senza troppo sforzo e con costi contenuti. Reti di Calcolatori LS 2 Il monitoraggio Tutto il lavoro deve sempre tenere in considerazione il contesto particolare nel quale si vuole operare: trattare tutto nell’ambito del controllo e del monitoraggio Punti fondamentali da tenere in considerazione: Concetto di minima intrusione; La garanzia della fornitura ed il mantenimento della qualità del servizio; La dinamicità delle operazioni legate al monitoraggio; Architettura logica di base con la quale sviluppare il lavoro: il ruolo del monitorante e quello del monitorato. Sviluppo di una soluzione rispetto ad un caso particolare, ma ragionamenti di carattere generale che permettono di avere la possibilità di generalizzare i risultati ottenuti ed adattarli a contesti diversi, allargando in questo modo lo scenario di utilizzo. Reti di Calcolatori LS 3 Architettura Logica e Sistema di Nomi Necessità di trovare: Uno schema architetturale, basato sul paradigma clienteservitore; Un protocollo di comunicazione che permetta di supportare e garantire il corretto flusso dei messaggi tra tutte le entità del sistema; Un sistema di nomi dinamico, flessibile, portabile, scalabile e con costi accettabili, tenendo in considerazione tutte le possibili soluzioni: Statico vs Dinamico; Centralizzato vs Distribuito. Reti di Calcolatori LS 4 Architettura - il Servitore Il sistema dalla parte del servitore deve rispettare il principio della minima intrusione del controllo: Introduzione di un meccanismo di replicazione a livello del monitor: Dovrà essere previsto un procedimento di istanziazione e rilascio dei monitor, a seconda delle richieste di monitoraggio ricevute sul monitor. Con 3 monitor si correggono errori singoli e si identificano quelli doppi. Necessità di prevedere un’entità deputata al controllo dei risultati dei monitor, un gestore che ne coordini il funzionamento e ne controlli i risultati. Esigenza di avere una entità che rimanga sempre attiva in attesa di richieste di broadcast da parte di clienti remoti, in modo da rendere possibile il sistema di nomi distribuito e dinamico. Avere una sorta di stub che ci permetta di incapsulare le funzionalità di comunicazione con i clienti remoti. Reti di Calcolatori LS 5 Architettura - il Cliente Dalla parte del cliente la struttura è affine, quasi duale a quella lato-server, con l’aggiunta dell’interfaccia utente per: facilitare gli utilizzatori; mascherare la complessità sottostante; fornire un elenco coi servizi disponibili; raccogliere le richieste dall’esterno; restituire i risultati ben formattati. Un gestore per la coordinazione di quelle azioni legate al reperimento delle informazioni riguardanti il traffico di rete di un particolare nodo remoto. Un gestore della QoS che ci permetta di negoziare determinati SLA, direttamente collegati alla frequenza con la quale si stimola il monitoraggio remoto e la decisione delle politiche atte a garantire questi livelli di servizio: Tecniche di real-time; Monitoraggio locale. Reti di Calcolatori LS Un gestore con la responsabilità di farsi carico di tutte le domande di ottenimento della lista degli host attivi; Il secondo end-point di comunicazione, un proxy, con compiti analoghi allo stub server-side. 6 Il protocollo di comunicazione Protocollo a 6 fasi 1. 2. 3. 4. 5. 6. Discovery Reply Start Request Result Stop Possibilità di calcolarsi time-out dinamicamente a partire dalle prime tre fasi in modo da rendersi conto di possibili problemi sul collegamento Reti di Calcolatori LS 7 Recuperare informazioni sul traffico di rete: Il protocollo SNMP Il protocollo SNMP (Simple Network Management Protocol): Possibilità di ricorrere, per ottenere i dati che ci interessano, a tool già pronti che sono disponibili in rete e che fanno uso del protocollo SNMP, in modo da semplificare e velocizzare la successiva fase di prototipazione, integrando il nostro codice con queste librerie. Opportunità di ottenere un numero molto elevato, variegato ed eterogeneo di informazioni grazie alla struttura del MIB organizzato per tipi di traffico a seconda dei protocolli di trasmissione utilizzati. Problemi tipici: Standard de facto per la comunità internet; Portabilità e nessun problema di compatibilità. Quali informazioni sono rilevanti per lo scopo del mio monitoraggio? Come organizzare i dati da far transitare sulla rete? Necessità di personalizzazione, a seguito di uno studio sulle informazioni ottenibili dal protocollo, in modo da: Ottimizzare l’impiego di risorse; Ridurre l’overhead di comunicazione; Avere performance e QoS superiori. Reti di Calcolatori LS 8 La fase realizzativa (1/2) Prototipo scritto in linguaggio Java: Meccanismo di discovery (prime 2 fasi del protocollo), realizzato implementando una sorta di “ping” su tutti gli indirizzi “interessanti”, servendosi di una comunicazione cliente – servitore senza connessione: Supporto alle applicazioni distribuite (package java . rmi); Supporto per le applicazioni grafiche (packages java . awt e javax . swing); Familiarità dello sviluppatore Ogni nodo che dichiara attivo il servizio ha un servitore datagram in ascolto su una determinata porta; Il numero di questa porta è l’unica nozione che il cliente deve possedere per il corretto funzionamento del meccanismo; Si deve stabilire un time-out ed un giusto compromesso accuratezza/tempo di risposta. Realizzazione delle ultime 4 fasi del protocollo di comunicazione mediante strumenti propri di Java ed in particolare utilizzando il meccanismo del RMI (Remote Method Invocation) e definendo una interfaccia remota che dichiari le funzionalità necessarie: Un comando di Start che provoca l’istanziazione di tre monitor SNMP e di un gestore per il loro controllo e coordinamento; Un comando di Request con cui il cliente interroga il servitore e che incarna anche la successiva fase di Result tramite il relativo valore di ritorno; Una richiesta di Stop a fronte della quale si rilasciano tutte le risorse. Reti di Calcolatori LS 9 La fase realizzativa (2/2) Recupero delle informazioni di rete attraverso il protocollo SNMP e l’utilizzo delle librerie SnmpApi realizzate e sviluppate da AdventNet: Semplici da utilizzare e da integrare con il codice del prototipo; Basate sulla semplice scelta delle informazioni rilevanti tramite OID ed operazioni sul MIB. Astrazione del pacchetto informativo ottenuta tramite la classe ReportSNMP. Il gestore della qualità del servizio realizzato come un demone che stimola periodicamente il controllo a seconda della frequenza stabilita: comunicazione realizzata con un sistema ad eventi. Reti di Calcolatori LS 10 Applicazione di prova e testing Piccola applicazione grafica per la fase di testing e la prova del comportamento dinamico del sistema sviluppato, articolata su due finestre: La prima per settare i parametri del controllo da concretizzare: Host da monitorare; Livello di QoS; Tipo di traffico (informazioni rilevanti). La seconda per visualizzare i risultati. Reti di Calcolatori LS 11 Conclusioni e sviluppi futuri L’architettura che abbiamo descritto risponde ai requisiti propri delle del problema del controllo e del monitoraggio distribuito in generale e di quello sul traffico di rete in particolare. E’ pensata per essere: Distribuita e per nulla centralizzata; Portabile; Resistente ai guasti; Poco intrusiva, per realizzare al meglio le politiche di controllo e non andare ad utilizzare inutilmente risorse. La scelta di ricorrere al protocollo SNMP ha facilitato la realizzazione del prototipo, dal momento che risulta essere molto funzionale e la sua diffusione permette l’uso di tools già pronti per il reperimento locale su un nodo remoto delle informazioni riguardanti il traffico di rete. Ci sono diverse possibilità nell’ottica di sviluppi seguenti sul prototipo: Si potrebbe realizzare un tool che facilitasse ed automatizzasse la fase iniziale di personalizzazione; Inoltre si potrebbero apportare miglioramenti incrementali al fine di incrementare le prestazioni del sistema, nell’ottica di: Garanzia della QoS; Resistenza ai guasti; Aggiunta di funzionalità ulteriori. Reti di Calcolatori LS 12