Gestione di Reti Manager/Agent: architetture software Gestione di Reti Philippe Macaire Obiettivi • Dettagliare l’architettura software tipica di un Agent e di un Manager • Esempio: studio dell’architettura di OpenNMS Gestione di Reti Philippe Macaire Agent: requisiti funzionali • realizzazione protocollo SNMP (engine) • definizione interfaccia di gestione (MIB) • mapping tra MIB e risorse gestite (e.g. accesso alle risorse, adattamento di protocollo -- proxy) • persistenza di alcuni dati (se serve) • controllo sugli accessi (ACL) • controllo processo (start, stop, restart, test, reload) • logging Gestione di Reti Philippe Macaire Agent: implementazione MIB • Problematica principale nella realizzazione di un Agent • La soluzione più pregiata è quella del compilatore di MIB (MIB Compiler): – il punto di partenza è la definizione in ASN.1 della struttura dell’informazione gestita – la compilazione può produrre dei sorgenti (in C, in C++, in Java) da completare poi compilare per ottenere un oggetto eseguibile – la compilazione può anche produrre altre informazioni utili, come una documentazione HTML della MIB, dei test script per testare l’agent, un simulatore di agent per testare il manager, ecc. Gestione di Reti Philippe Macaire Agent: compilazione MIB • Problema della generazione del codice: va specificato il modo in cui si interagisce con le risorse, quindi intervenire nei sorgenti prodotti dalla compilazione dell’ASN.1 • Una buona soluzione è offerta della tecnologia OO: produrre delle classi astratte che vengono estese per fornire la funzionalità un file viene generato, per l’altro viene opzionalmente prodotto un template che viene completato • Tutta la logica SNMP (parsing messaggi, interpretazione operazioni e OID) rimane all’interno della libreria di engine Gestione di Reti Philippe Macaire Agent: esempio Java public abstract class SystemGroup { public Object invoke(OID o) { ... } ASN.1 sysUpTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory ::= { system 3 } } Compilator e Questi si chiamano Stub Gestione di Reti public abstract long getSysUpTime(); Philippe Macaire public class SystemGroupImpl extends SystemGroup { private long upTime_; public void init() { upTime_ = time(NULL); // ... } public long getSysUpTime() { return upTime_; } } Java Agent: architettura Resource Manager Persistence Manager Stub Stub Stub Stub Skeleton Skeleton Skeleton Skeleton Method Handler SNMP Engine Message encoder/decoder PDU dispatcher Messaggi SNMP Gestione di Reti Philippe Macaire SNMP Library Helper facilities (logging, process control) Agent monolitico • Singolo processo che contiene l’engine SNMP e la strumentazione (implementazione degli stub) • I moduli di MIB supportati sono definiti al momento della compilazione • Può essere molto efficiente, in particolare perché l’accesso alla strumentazione si fa per chiamata interna al processo (poi tutto dipende dalla qualità della strumentazione) • Possibilità di implementare a livello di engine politiche di ottimizzazione, parallelizzazione e caching Gestione di Reti Philippe Macaire Estensible Agents • Spingendo ancora di più l’architettura è possibile separare la “macchina” SNMP dalla strumentazione dei moduli di MIB implementati • La macchina SNMP viene chiamata Master Agent • I moduli di MIB strumentati vengono chiamati Subagents • Master e subagent comunicano attraverso un protocollo ad hoc • Diventa possibile intervenire sui moduli di MIB supportati in maniera separata, nonché aggiungere/togliere moduli a runtime • E’ del tutto trasparente alle applicazioni di gestione Gestione di Reti Philippe Macaire AgentX • La RFC 2257 definisce il protocollo AgentX per la realizzazione di agent estendibili • Il Master Agent possono essere processi separati e comunicare via IPC (e.g. TCP su porta 705, ma anche Unix-domain sockets, ecc.) Subagent Manager SNMP Entity AgentX Dispatcher Subagent AgentX Master Agent Subagent Gestione di Reti Philippe Macaire Protocollo AgentX (1) Primitive di amministrazione per la registrazione del Subagent Master Subagent Open Apertura sessione Response IndexAllocate Allocazione indici Response Register Response Registrazione MIB (singole istanze o range di OID) AddAgentCaps Aggiunta capabilities Response Gestione di Reti Philippe Macaire Protocollo AgentX (2) Primitive per il funzionamento di SNMP: data retrieval Master Subagent Get Response Il protocollo AgentX mappa il protocollo SNMP. GetNext Response GetBulk Response Notify Trap Gestione di Reti Philippe Macaire Una singola PDU SNMP può coinvolgere più subagent. Protocollo AgentX (3) Primitive per il funzionamento di SNMP: operazione di set Master Subagent TestSet Response CommitSet Response UndoSet Response CleaupSet Response Gestione di Reti Philippe Macaire Il protocollo AgentX è più complesso per la gestione della SetRequest, per poter gestire l’atomicità dell’operazione (o ha successo, o fallisce in toto) Protocollo AgentX (4) Primitive di amministrazione per la de-registrazione del Subagent Master Subagent RemoveAgentCaps Rimozione Capabilities Response Unregister De-registrazione MIB Response IndexDeallocate De-allocazione indici Response Close Chiusura sessione Response Gestione di Reti Philippe Macaire NMS: contesto reclamo Help Desk Trouble ticket Reporting Assurance Inventory Device polling Data collection Topology discovery Network Gestione di Reti Philippe Macaire Event handling Device config. Network Repair NMS: requisiti funzionali • • • • network discovery network inventory network topology browsing network monitoring – ricezione/correlazione trap – polling periodico – data collection • alarm tracking • fault root cause analysis • fault resolution Gestione di Reti • interface with troubleticketing system • performance monitoring • user interface (GUI, Web) • workflow management • reporting • administration • logging Philippe Macaire NMS: architettura (1) • Un’architettura tipica consiste nella separazione di tre livelli fondamentali: – persistenza dei dati (database -- RDBMS) – logica di gestione (a volte anche chiamata business logic) – interfaccia con il mondo esterno (utenti, sistemi, apparati) • Idealmente questi aspetti sono ortogonali, in quanto possono evolvere indipendentemente • Vengono rappresentati a strati logici chiamati tiers: – persistence tier (back-end) – business logic tier – front tier (presentation, interfaces) Gestione di Reti Philippe Macaire NMS: architettura (2) Monitoring, administration, control To/from managed devices, and/or distributed agents Discovery management Polling management Configuration and provisioning Event management Client to remote agents Data collector Management logic Users and roles management Inventory/assets management Workflow management Persistent entities and relationships, collected data, assets and inventory, configuration info., provisioning info., administrative info., etc. User interfaces To/from NMS users Events or tickets escalation logic GUI Reporting Web UI To/from external services External interfaces Notifications management Gestione di Reti APIs and extensions Data consolidation and analysis Other domain-specific business logic Installation-specific custom logic Philippe Macaire RDBMS Il modello dati • Il database contiene delle strutture dati (tabelle) che devono poter catturare realtà molto diverse: – apparati con funzioni e caratteristiche diverse – linee e collegamenti – entità fisiche e logiche • Per poter gestire una realtà eterogenea è necessario avere un modello generico (ma non troppo), in grado di rappresentare tutte le entità da gestire • Un modello non è mai congelato, e può evolvere o essere esteso continuamente Gestione di Reti Philippe Macaire Qualità architetturali richieste • Estendibilità (possibilità di aggiungere funzionalità) • Flessibilità (possibilità di estendere il dominio gestito) • Robustezza (capacità a resistere agli imprevisti) • Scalabilità (capacità a reggere l’aumento del numero di oggetti da gestire e il carico) Gestione di Reti Philippe Macaire Soluzione OpenNMS • • • • • Open Source -- free (http://www.opennms.org) Nato nel 1999 A primavera del 2002, versione 1.0 Presto uscirà la versione 1.2 Orientato non solo alle risorse di rete, ma anche ai servizi di rete (DNS, DHCP, pagine web, accesso database) • IP-centric • Supporto multi-piattaforma (Java) Gestione di Reti Philippe Macaire Monitoraggio dei servizi Open Socket to port 25 Receive "220" banner Send "HELO" Receive "250 pleased to meet you" Send "QUIT" and Exit Gracefully Protocolli supportati: FTP, HTTP, SMTP, DNS, ICMP, TCP, SNMP... Gestione di Reti Philippe Macaire Architettura OpenNMS (1) Monitoring, administration, control discovery Management logic pollerd capsd trapd collectd dhcpd User interfaces eventd actiond rtcd PostgreSQL RDBMS Perl GUI Reporting threshd JSP Web UI outaged External interfaces notifd Gestione di Reti APIs and plugins Servlet-based application logic Philippe Macaire Architettura OpenNMS (2) • Tecnologie usate: – – – – – RDBMS: PostgreSQL (open source) JSP/Servlet: Apache Jakarta Tomcat (disponibili anche Perl-script) Scritto in Java, processi concorrenti JMS (Java Message Service) con JBossMQ Alcune utilities scritte in Unix shell e Perl • Daemons: processi concorrenti per i task di gestione (monitoring, control, data collections) • File di configurazione in XML • Estendibile tramite plug-in • generazione reports in PDF con SVG e XSLT Gestione di Reti Philippe Macaire Architettura OpenNMS (3) OpenNMS Distributed poller Network Gestione di Reti Distributed poller Network Philippe Macaire Distributed poller Network Demoni OpenNMS • • • • • • • • • • discovery: discovery continuo dei nuovi nodi capsd: capability check sui nodi (verifica sulle porte conosciute) pollerd: polling sui nodi per determinare lo stato dei nodi trapd: gestione trap SNMP threshd: monitoraggio nodi e servizi basati sul raggiungimento di soglie collectd: data collection daemon eventd: salvataggio nel DB gli eventi generati dagli altri demoni outaged: gestione della perdità di raggiungibilità dei nodi e servizi actiond: workflow; esecuzione di attività automatiche su eventi notifd: gestione di notifiche verso gli utenti (e.g. via e-mail) Gestione di Reti Philippe Macaire Estendibilità OpenNMS • E’ possibile estendere OpenNMS tramite plug-in • Solitamente un plug-in è una classe Java che implementa una interfaccia ben definita per fornire una funzionalità nuova • Il nome della classe viene scritto in un file di configurazione, con i parametri associati al plug-in • Il sistema carica dinamicamente la classe Java (Class.forName(…)) ed è in grado di attivarla/chiamarla su richiesta Gestione di Reti Philippe Macaire Esempio di plug-in public class MyPlugin implements org.opennms.netmgt.capsd.Plugin { public String getProtocolName() { return “SMTP”; } public boolean isProtocolSupported(InetAddress address) { try { // open socket on port 25 // … return true; } catch (Exception e) { return false; } } } Gestione di Reti Philippe Macaire Limitazioni OpenNMS • Java non supporta ICMP (ping), quindi la misura richiede l’attivazione di un programma esterno tempi misurati troppo elevati • Mancano alcuni tool amministrativi (configurazione utenti, sistema) grafici • Non c’è una rappresentazione grafica delle reti e degli apparati • Impossibilità di fare report sull’aggregazione di dati raccolti da più NMS • Ancora alcuni bachi, non critici Gestione di Reti Philippe Macaire OpenNMS Screenshot (1) Gestione di Reti Philippe Macaire OpenNMS Screenshot (2) Gestione di Reti Philippe Macaire OpenNMS Screenshot (3) Gestione di Reti Philippe Macaire OpenNMS Screenshot (4) Gestione di Reti Philippe Macaire SNMP: soluzioni free • CMU: – http://www.net.cmu.edu/groups/netdev/software.html • NET-SNMP: – http://net-snmp.sourceforge.net/ • Scotty: – http://wwwhome.cs.utwente.nl/~schoenw/scotty/ • OpenNMS: – http://www.opennms.org/ • Advent: – http://www.adventnet.com/ • JMX: – http://java.sun.com/products/JavaManagement/ Gestione di Reti Philippe Macaire SNMP: soluzioni commerciali • HP OpenView – Market leader, many third providers from management applications. • IBM/Tivoli – Derived from HP OpenView, with many improvements and error corrections. • Cabletron Spectrum – Innovative technology (Inductive Modelling Technique). • Sun Solstice Enterprise Manager – Follow-up version of the quite successful Sun Net Manager (partially Java based). • Computer Associates Unicenter TNG – Huge, graphical management console (too complex, made up of several untighten applications). Gestione di Reti Philippe Macaire