Il protocollo di routing Open Shortest Path First (OSPF) è definito dalla RFC 2328 OSPF versione 2 . L'obiettivo di questo documento è fornire una struttura procedurale che consenta alle organizzazioni di implementare le procedure di gestione della configurazione per verificare le distribuzioni OSPF rispetto ai piani di progettazione OSPF e controllare periodicamente la distribuzione OSPF per garantire la coerenza a lungo termine con la progettazione prevista.
Questo documento si concentra sulle funzioni di gestione della configurazione dal modello FCAPS (fault, configuration, accounting/inventory, performance, security) definito dall'ITU-T. La gestione della configurazione è definita da ITU-T M.3400 come funzione che fornisce funzioni per esercitare il controllo, identificare, raccogliere dati e fornire dati agli elementi della rete.
Le informazioni fornite in questo documento sono presentate in diverse sezioni principali descritte di seguito.
La sezione Sfondo OSPF fornisce una panoramica tecnologica di OSPF che include informazioni generali su aspetti importanti di una distribuzione OSPF.
La sezione Definizioni processo fornisce una panoramica delle definizioni di processo utilizzate per eseguire la gestione della configurazione OSPF. I dettagli del processo sono descritti in termini di obiettivi, indicatori di prestazioni, input, output e singole attività.
La sezione Definizioni task fornisce definizioni dettagliate dei task di processo. Ogni attività viene descritta in termini di obiettivi, input, output delle attività, risorse necessarie per eseguire l'attività e competenze di processo necessarie per un implementatore di attività.
La sezione Identificazione dati descrive l'identificazione dei dati per OSPF. L'identificazione dei dati considera l'origine delle informazioni o la loro posizione. Ad esempio, le informazioni sono contenute dal sistema nel MIB (Simple Network Management Protocol), nei file di log generati da Syslog o nelle strutture di dati interne accessibili solo dall'interfaccia della riga di comando (CLI).
La sezione Raccolta dei dati di questo documento descrive la raccolta dei dati OSPF. La raccolta dei dati è strettamente correlata alla loro posizione. Ad esempio, i dati MIB SNMP vengono raccolti da diversi meccanismi, quali trap, allarmi ed eventi RMON (monitoraggio da remoto) o polling. I dati gestiti dalle strutture di dati interne vengono raccolti da script automatici o da un utente che accede manualmente al sistema per eseguire il comando CLI e registrare l'output.
La sezione Presentazione dei dati fornisce alcuni esempi sulla modalità di presentazione dei dati nei formati di report. Dopo che i dati sono stati identificati e raccolti, vengono analizzati. In questo documento vengono forniti alcuni report di esempio che possono essere utilizzati per registrare e confrontare i dati di configurazione OSPF.
Le sezioni Commercial and Public Internet Monitoring Tools, SNMP Polling Data e Example Data Collection Algorithms forniscono informazioni sullo sviluppo di strumenti per implementare la procedura di gestione della configurazione OSPF.
OSPF è un protocollo gateway interno progettato per essere utilizzato in un singolo sistema autonomo. OSPF utilizza la tecnologia basata su SPF (Link-State o Shortest-Path First), in confronto alla tecnologia di vettore di distanza o Bellman-Ford presente nei protocolli di routing, ad esempio il protocollo RIP (Routing Information Protocol). Gli annunci LSA (Individual Link State Advertising) descrivono parti del dominio di routing OSPF, ad esempio l'intero sistema autonomo. Queste LSA vengono distribuite in tutto il dominio di routing e formano il database dello stato del collegamento. Ogni router di un dominio ha un database con stato del collegamento identico. La sincronizzazione dei database dello stato del collegamento viene gestita tramite un algoritmo di flooding affidabile. Dal database dello stato del collegamento, ogni router crea una tabella di routing calcolando una struttura ad albero del percorso più breve, la cui radice è il router che esegue il calcolo. Questo calcolo è comunemente noto come algoritmo Dijkstra.
Le LSA sono piccole e ciascuna LSA descrive una piccola parte del dominio di routing OSPF, in particolare, le vicinanze di un singolo router, le vicinanze di una singola rete di transito, una singola route tra aree o una singola route esterna.
Nella tabella seguente vengono definite le funzionalità principali di OSPF:
Funzionalità | Descrizione |
---|---|
Adiacente | Quando coppie di router OSPF diventano adiacenti, i due router sincronizzano i rispettivi database allo stato del collegamento scambiando riepiloghi di database sotto forma di pacchetti di scambio di database OSPF. I router adiacenti mantengono quindi la sincronizzazione dei database dello stato del collegamento tramite l'algoritmo flooding affidabile. I router collegati da linee seriali diventano sempre adiacenti. Nelle reti ad accesso multiplo (Ethernet), tutti i router collegati alla rete diventano adiacenti sia al router designato (DR) sia al router designato (BDR) per il backup. |
Router designato | Quando un DR viene selezionato su tutte le reti ad accesso multiplo, ha origine l'LSA della rete che descrive l'ambiente locale della rete. Svolge anche un ruolo speciale nell'algoritmo flooding, poiché tutti i router della rete sincronizzano i loro database dello stato del collegamento inviando e ricevendo LSA da e verso il DR durante il processo flooding. |
Router designato per il backup | Quando il DR corrente scompare, viene selezionato un BDR sulle reti ad accesso multiplo per velocizzare la transizione dei DR. Quando il BDR subentra, non deve passare attraverso il processo adiacente alla LAN (Local-Area Network). Il BDR consente inoltre all'algoritmo affidabile di flooding di procedere in assenza del DR prima che la scomparsa del DR venga notata. |
Supporto di rete multi-accesso non broadcast | OSPF tratta le reti, ad esempio le PDN (Public Data Network) Frame Relay, come se fossero LAN. Tuttavia, affinché i router collegati a queste reti possano inizialmente trovarsi, sono necessarie ulteriori informazioni di configurazione. |
Aree di gestione della configurazione OSPF | L'interfaccia OSPF consente di suddividere i sistemi autonomi in aree. In questo modo, viene fornito un ulteriore livello di protezione del routing che consente di proteggere il routing all'interno di un'area da tutte le informazioni esterne. Inoltre, dividendo un sistema autonomo in aree, il costo della procedura Dijkstra, in termini di cicli di CPU, viene ridotto. |
Collegamenti virtuali | Consentendo la configurazione di collegamenti virtuali, OSPF elimina le restrizioni topologiche sui layout di area in un sistema autonomo. |
Autenticazione degli scambi dei protocolli di routing | Ogni volta che un router OSPF riceve un pacchetto del protocollo di routing, può facoltativamente autenticare il pacchetto prima di elaborarlo ulteriormente. |
Metrica di routing flessibile | In OSPF, le metriche vengono assegnate alle interfacce router in uscita. Il costo di un percorso è la somma delle interfacce componente del percorso. Per impostazione predefinita, la metrica di routing deriva dalla larghezza di banda del collegamento. Può essere assegnata dall'amministratore di sistema per indicare qualsiasi combinazione di caratteristiche di rete, quali ritardo, larghezza di banda e costo. |
Multi-path a costo uguale | Quando esistono più route più convenienti per una destinazione, OSPF le trova e le utilizza per caricare il traffico condiviso nella destinazione. |
Supporto subnet a lunghezza variabile | Supporta subnet mask a lunghezza variabile trasportando una network mask con ciascuna destinazione annunciata. |
Supporto area stub | Per supportare i router con memoria insufficiente, le aree possono essere configurate come stub. Le LSA esterne non vengono inondate all'interno e attraverso le aree di stub. Il routing alle destinazioni esterne nelle aree di stub è basato esclusivamente sui valori predefiniti. |
Una definizione di processo è una serie connessa di azioni, attività e modifiche eseguite da agenti con l'intento di soddisfare uno scopo o raggiungere un obiettivo.
Il controllo dei processi è il processo di pianificazione e regolamentazione, con l'obiettivo di eseguire un processo in modo efficace ed efficiente.
Graficamente, come illustrato nella figura seguente.
Il risultato del processo deve essere conforme alle norme operative definite da un'organizzazione e basate sugli obiettivi aziendali. Se il processo è conforme all'insieme di norme, viene considerato efficace in quanto può essere ripetuto, misurato, gestito e contribuisce agli obiettivi aziendali. Se le attività sono svolte con il minimo sforzo, anche il processo è considerato efficiente.
I processi si estendono su vari confini organizzativi. Pertanto, è importante avere un unico proprietario del processo responsabile della definizione del processo. Il proprietario è il punto focale per determinare e segnalare se il processo è efficace ed efficiente. Se il processo non è efficace o efficiente, il proprietario del processo determina la modifica del processo. La modifica del processo è gestita dai processi di controllo delle modifiche e revisione.
Gli obiettivi del processo vengono stabiliti per impostare la direzione e l'ambito per la definizione del processo. Gli obiettivi vengono inoltre utilizzati per definire le metriche utilizzate per misurare l'efficacia di un processo.
L'obiettivo di questo processo è fornire un framework per verificare la configurazione distribuita di un'implementazione OSPF rispetto a una progettazione prevista e fornire un meccanismo per controllare periodicamente la distribuzione OSPF per garantire la coerenza nel tempo rispetto alla progettazione prevista.
Gli indicatori di prestazioni del processo vengono utilizzati per misurare l'efficacia della definizione del processo. Gli indicatori di rendimento dovrebbero essere misurabili e quantificabili. Gli indicatori di prestazioni elencati di seguito sono numerici o misurati in base al tempo. Gli indicatori di prestazioni per il processo di gestione della configurazione OSPF sono definiti come segue:
Il tempo necessario per completare l'intero processo.
Frequenza di esecuzione necessaria per rilevare in modo proattivo i problemi OSPF prima che abbiano un impatto sugli utenti.
Carico di rete associato all'esecuzione del processo.
Numero di azioni correttive consigliate dal processo.
Numero di azioni correttive implementate come risultato del processo.
Il tempo necessario per l'implementazione delle azioni correttive.
Il tempo necessario per l'implementazione delle azioni correttive.
Backlog delle azioni correttive.
Tempi di inattività attribuiti ai problemi correlati a OSPF.
Numero di elementi aggiunti, rimossi o modificati nel file di origine. Questa è un'indicazione di accuratezza e stabilità.
Gli input di processo vengono utilizzati per definire i criteri e i prerequisiti per un processo. L'identificazione degli input del processo fornisce spesso informazioni sulle dipendenze esterne. Di seguito viene fornito un elenco di input relativi alla gestione della configurazione OSPF.
Documentazione di progettazione OSPF
Dati MIB OSPF raccolti dal polling SNMP
Informazioni syslog
Gli output del processo sono definiti come segue:
Report di configurazione OSPF definiti nella sezione Presentazione dei dati di questo documento
Raccomandazioni di configurazione OSPF per azioni correttive da intraprendere
Nelle sezioni seguenti vengono definite le attività di inizializzazione e iterative associate alla gestione della configurazione OSPF.
I task di inizializzazione vengono eseguiti una volta durante l'implementazione del processo e non devono essere eseguiti con ogni iterazione del processo.
Nel verificare i task preliminari, se si determina che uno qualsiasi dei task non è implementato o non fornisce informazioni sufficienti per soddisfare in modo efficace le esigenze di questa procedura, tale fatto dovrebbe essere documentato dal proprietario del processo e presentato alla direzione. Nella tabella seguente vengono descritti i task di inizializzazione dei prerequisiti.
Attività preliminare | Descrizione |
---|---|
Obiettivi e input delle attività |
|
Output attività | L'output del task è un report sullo stato relativo alle condizioni dei task prerequisiti. Se uno dei task di supporto viene ritenuto inefficace, il proprietario del processo deve inviare una richiesta di aggiornamento dei processi di supporto. Se non è possibile aggiornare i processi di supporto, eseguire una valutazione dell'impatto su tali processi. |
Ruolo attività | Set di competenze del tecnico di rete |
Il processo di gestione della configurazione OSPF richiede l'utilizzo di un file di inizializzazione per eliminare la necessità di una funzione di individuazione della rete. Il file di inizializzazione registra l'insieme di router gestiti dal processo OSPF e viene inoltre utilizzato come punto focale per il coordinamento con i processi di gestione delle modifiche di un'organizzazione. Ad esempio, se si immettono nuovi nodi nella rete, è necessario aggiungerli al file di origine OSPF. Se vengono apportate modifiche ai nomi delle community SNMP a causa dei requisiti di sicurezza, tali modifiche devono essere riflesse nel file di inizializzazione. Nella tabella seguente vengono descritti i processi per la creazione di un file di inizializzazione.
Processo | Descrizione |
---|---|
Obiettivi attività | Creare un file di inizializzazione da utilizzare per inizializzare il software di gestione della configurazione OSPF. La formattazione del file di inizializzazione dipende dalle risorse utilizzate per implementare il processo di gestione della configurazione OSPF. Se vengono sviluppati script personalizzati, il formato del file di origine viene definito dal progetto del software. Se si utilizza un sistema di gestione della rete (NMS), il formato del file di origine è definito dalla documentazione NMS. |
Input attività |
|
Output attività | File di inizializzazione per il processo di gestione della configurazione OSPF. |
Risorse attività |
|
Ruolo attività |
|
I task iterativi vengono eseguiti con ogni iterazione del processo e la loro frequenza viene determinata e modificata per migliorare gli indicatori di prestazioni.
Il file di inizializzazione è fondamentale per l'implementazione efficace del processo di gestione della configurazione OSPF. Pertanto, lo stato corrente del file di inizializzazione deve essere gestito attivamente. Le modifiche alla rete che hanno effetto sul contenuto del file di inizializzazione devono essere registrate dal proprietario del processo di gestione della configurazione OSPF.
Processo | Descrizione |
---|---|
Obiettivi attività |
|
Input attività |
|
Output attività |
|
Risorse attività |
|
Ruolo attività |
|
I due passaggi utilizzati per eseguire la scansione OSPF sono:
Raccolta dei dati.
Analisi dei dati.
La frequenza di questi due passaggi varia a seconda di come viene utilizzato il processo. Ad esempio, questo processo può essere utilizzato per verificare le modifiche apportate all'installazione. In questo caso, la raccolta dei dati viene eseguita prima e dopo la modifica e l'analisi dei dati viene eseguita dopo la modifica per determinare l'esito della modifica.
Se questo processo viene utilizzato per verificare i record di progettazione della gestione della configurazione OSPF, la frequenza di raccolta e analisi dei dati dipende dalla velocità di modifica della rete. Ad esempio, se vi è una quantità significativa di modifiche nella rete, le verifiche del progetto vengono eseguite una volta alla settimana. Se vi sono pochi cambiamenti nella rete, le verifiche del progetto vengono effettuate non più di una volta al mese.
Il formato dei report di gestione della configurazione OSPF dipende dalle risorse utilizzate per implementare il processo di gestione della configurazione OSPF. Nella tabella seguente vengono forniti i formati di report personalizzati consigliati.
Report | Formato |
---|---|
Input attività | Per i report di gestione della configurazione OSPF, vedere la sezione Presentazione dei dati in questo documento. |
Output attività | Se vengono rilevati problemi tra i report di scansione e i record di progettazione logica, è necessario decidere quale elemento è corretto e quale non è corretto. Correggere l'elemento errato. Ciò può comportare la modifica dei record di progettazione o un ordine di modifica di rete. |
Risorse attività |
|
Ruolo attività |
|
Nella tabella seguente vengono descritti i dati che è possibile applicare alla gestione della configurazione OSPF.
Dati | Descrizione |
---|---|
Aree OSPF | Le informazioni che descrivono le aree collegate al router includono:
|
Interfacce OSPF | Descrive un'interfaccia dal punto di vista di OSPF, ad esempio:
|
Stato adiacente OSPF | Descrive una risorsa adiacente OSPF.
|
Cisco supporta attualmente la RFC 1253 OSPF versione 2 MIB . RFC 1253 non contiene le definizioni delle trap SNMP per OSPF. L'ultima versione del MIB OSPF è la RFC 1850 OSPF versione 2 . Le trap SNMP sono definite per OSPF nella RFC 1850. La RFC 1850 non è supportata sull'implementazione Cisco del MIB OSPF.
Per ulteriori informazioni, consultare la sezione Dati di polling SNMP di questo documento.
Per un elenco definitivo dei MIB supportati su quale piattaforma e versione del codice, consultare la pagina Cisco Network Management Software.
Per questa procedura non sono richiesti dati specifici RMON.
In generale, Syslog genera messaggi specifici del servizio per diverse tecnologie. Sebbene le informazioni di syslog siano più appropriate per la gestione degli errori e delle prestazioni, le informazioni fornite in questa pagina costituiscono un riferimento. Per un esempio delle informazioni di syslog OSPF generate dai dispositivi Cisco, vedere Messaggi di errore OSPF.
Per un elenco completo dei messaggi di sistema per struttura, consultare Messaggi e procedure di recupero.
In questa versione della procedura di gestione della configurazione OSPF non sono richiesti dati CLI.
La tabella seguente definisce i diversi componenti della raccolta dei dati SNMP.
Componente dati SNMP | Definizione |
---|---|
Configurazione SNMP generale | Per informazioni generali sulle best practice di configurazione SNMP, consultare il documento sulla configurazione di SNMP. |
Configurazione SNMP specifica del servizio | Per questa procedura non sono richieste configurazioni SNMP specifiche del servizio. |
Requisiti MIB SNMP | Vedere la sezione Identificazione dati sopra riportata. |
Raccolta di polling MIB SNMP | I dati di polling SNMP vengono raccolti da un sistema commerciale come hp OpenView o da script personalizzati. Per ulteriori informazioni sugli algoritmi di raccolta, vedere la sezione Algoritmi di raccolta dati di esempio in questo documento. |
Raccolta di trap MIB SNMP | La versione corrente di OSPF MIB supportata sui dispositivi Cisco non supporta trap SNMP. Non sono richieste trap SNMP per questa procedura. |
In questa versione della procedura non sono richiesti dati e configurazioni RMON.
Le linee guida generali per la configurazione del syslog esulano dall'ambito di questo documento. Per ulteriori informazioni, fare riferimento a Configurazione e risoluzione dei problemi di Cisco Secure PIX Firewall con una singola rete interna.
I requisiti specifici OSPF vengono soddisfatti configurando il router OSPF in modo che registri le modifiche ai router adiacenti con un messaggio syslog utilizzando il comando seguente:
OSPF_ROUTER(config)# ospf log-adj-changes
In generale, l'interfaccia CLI di Cisco IOS fornisce l'accesso più diretto alle informazioni non elaborate contenute nel sistema operativo. Tuttavia, l'accesso CLI è più adatto per le procedure di risoluzione dei problemi e le attività di gestione delle modifiche rispetto alla gestione della configurazione globale definita da questa procedura. L'accesso tramite la CLI non è scalabile per la gestione di una rete di grandi dimensioni. In questi casi è necessario l'accesso automatico alle informazioni.
In questa versione della procedura di gestione della configurazione OSPF non sono richiesti dati e configurazioni CLI.
Di seguito è riportato un esempio di formato per il report dell'area OSPF. Il formato del report è determinato dalle funzionalità di un NMS commerciale, se utilizzato, o dall'output progettato degli script personalizzati.
Area | Campi dati | Ultima esecuzione | Questa esecuzione |
---|---|---|---|
ID area 1 | Autenticazione | ||
Esecuzioni SPF | |||
Conteggio ABR | |||
Conteggio ASBR | |||
Conteggio LSA | |||
Checksum LSA | |||
Errori di indirizzo | |||
Routing ignorato | |||
Nessuna route trovata | |||
ID area n | Autenticazione | ||
Esecuzioni SPF | |||
Conteggio ABR | |||
Conteggio ASBR | |||
Conteggio LSA | |||
Checksum LSA | |||
Errori di indirizzo | |||
Routing ignorato | |||
Nessuna route trovata |
Di seguito è riportato un esempio di formato per il report dell'interfaccia OSPF. In pratica, il formato del report è determinato dalle funzionalità di un NMS commerciale, se utilizzato, o dall'output progettato degli script personalizzati.
Area | Sul dispositivo bootflash o slot0: | Interfaccia | Campi dati | Ultima esecuzione | Questa esecuzione |
---|---|---|---|---|---|
ID area 1 | ID nodo n. 1 | ID interfaccia n. 1 | Indirizzo IP | ||
ID area | |||||
Stato amministrazione | |||||
Stato OSPF | |||||
Metriche/Costo/Timer | |||||
ID interfaccia n | Indirizzo IP | ||||
ID area | |||||
Stato amministrazione | |||||
Stato OSPF | |||||
Metriche/Costo/Timer | |||||
ID nodo n | ID interfaccia n. 1 | Indirizzo IP | |||
ID area | |||||
Stato amministrazione | |||||
Stato OSPF | |||||
Metriche/Costo/Timer | |||||
ID interfaccia n | Indirizzo IP | ||||
ID area | |||||
Stato amministrazione | |||||
Stato OSPF | |||||
Metriche/Costo/Timer | |||||
ID area n | ID nodo n. 1 | ID interfaccia n. 1 | Indirizzo IP | ||
ID area | |||||
Stato amministrazione | |||||
Stato OSPF | |||||
Metriche/Costo/Timer | |||||
ID interfaccia n | Indirizzo IP | ||||
ID area | |||||
Stato amministrazione | |||||
Stato OSPF | |||||
Metriche/Costo/Timer | |||||
ID nodo n | ID interfaccia n. 1 | Indirizzo IP | |||
ID area | |||||
Stato amministrazione | |||||
Stato OSPF | |||||
Metriche/Costo/Timer | |||||
ID interfaccia n | Indirizzo IP | ||||
ID area | |||||
Stato amministrazione | |||||
Stato OSPF | |||||
Metriche/Costo/Timer |
Di seguito è riportato un esempio di formato per il report dei nodi adiacenti OSPF. In pratica, il formato del report è determinato dalle funzionalità di un NMS commerciale, se utilizzato, o dall'output progettato degli script personalizzati.
Area | Sul dispositivo bootflash o slot0: | Vicini | Campi dati | Ultima esecuzione | Questa esecuzione |
---|---|---|---|---|---|
ID area 1 | ID nodo n. 1 | ID router adiacente 1 | ID router | ||
Indirizzo IP router | |||||
State | |||||
Eventi | |||||
Coda resi | |||||
ID router adiacente n | ID router | ||||
Indirizzo IP router | |||||
State | |||||
Eventi | |||||
Coda resi | |||||
ID nodo n | ID router adiacente 1 | ID router | |||
Indirizzo IP router | |||||
State | |||||
Eventi | |||||
Coda resi | |||||
ID router adiacente n | ID router | ||||
Indirizzo IP router | |||||
State | |||||
Eventi | |||||
Coda resi | |||||
ID area n | ID nodo n. 1 | ID router adiacente 1 | ID router | ||
Indirizzo IP router | |||||
State | |||||
Eventi | |||||
Coda resi | |||||
ID router adiacente n | ID router | ||||
Indirizzo IP router | |||||
State | |||||
Eventi | |||||
Coda resi | |||||
ID nodo n | ID router adiacente 1 | ID router | |||
Indirizzo IP router | |||||
State | |||||
Eventi | |||||
Coda resi | |||||
ID router adiacente n | ID router | ||||
Indirizzo IP router | |||||
State | |||||
Eventi | |||||
Coda resi |
Sono disponibili strumenti commerciali per la raccolta e l'elaborazione delle informazioni di syslog e per il polling delle variabili MIB generali SNMP.
Non sono noti strumenti di monitoraggio Internet commerciali o pubblici che supportino la gestione della configurazione OSPF definita da questa procedura. Sono pertanto necessari script e procedure personalizzati locali.
Nome oggetto | Descrizione oggetto |
---|---|
ipRouteDest | Indirizzo IP di destinazione della route. Una voce con un valore di 0.0.0.0 è considerata una route predefinita. Nella tabella possono essere visualizzate più route a una singola destinazione, ma l'accesso a tali voci dipende dai meccanismi di accesso alle tabelle definiti dal protocollo di gestione della rete in uso. ::= { ipRouteEntry 1 } identificatore oggetto = 1.3.6.1.2.1.4.21.1.1 |
ipRouteMask | Indica che la maschera deve essere logica con l'indirizzo di destinazione prima di essere confrontata con il valore nel campo ipRouteDest. Per i sistemi che non supportano subnet mask arbitrarie, un agente costruisce il valore di ipRouteMask determinando se il valore del campo ipRouteDest corrispondente appartiene a una rete di classe A, B o C, utilizzando una delle reti di maschera seguenti:
Nota: tutti i sottosistemi di routing IP utilizzano implicitamente questo meccanismo. ::= { ipRouteEntry 11 } identificatore oggetto = 1.3.6.1.2.1.4.21.1.11 |
ipRouteNextHop | Indirizzo IP dell'hop successivo della route. Nel caso di un percorso associato a un'interfaccia realizzata con un supporto di trasmissione, il valore di questo campo è l'indirizzo IP dell'agente sull'interfaccia. ::= { ipRouteEntry 7 } identificatore oggetto = 1.3.6.1.2.1.4.21.1.7 |
ipRouteIfIndex | Valore di indice che identifica in modo univoco l'interfaccia locale attraverso cui viene raggiunto l'hop successivo della route. Questa interfaccia è la stessa identificata dal valore IfIndex. ::= { ipRouteEntry 2 } identificatore oggetto = 1.3.6.1.2.1.4.21.1.2 |
Nome oggetto | Descrizione oggetto |
---|---|
ipAdEntIfIndex | Valore di indice che identifica in modo univoco l'interfaccia applicabile alla voce. Questa interfaccia è la stessa identificata dal valore IfIndex. ::= { ipAddrEntry 2 } identificatore oggetto = 1.3.6.1.2.1.4.20.1.2 |
Errori ipInAddr | Numero di datagrammi di input scartati perché l'indirizzo IP nella relativa intestazione IP era un campo di destinazione non valido per l'entità. Il conteggio include indirizzi non validi (0.0.0.0) e indirizzi di classe non supportati (classe E). Per le entità che non sono gateway IP e non inoltrano datagrammi, il contatore include i datagrammi scartati perché l'indirizzo di destinazione non era locale. { ip 5 } identificatore oggetto = 1.3.6.1.2.1.4.5 |
ipRoutingDiscard | Numero di voci di routing valide eliminate. Una possibile ragione per scartare una voce di questo tipo è liberare spazio di buffer per altre voci di routing. { ip 23 } identificatore oggetto = 1.3.6.1.2.1.4.23 |
ipOutNoRoutes | Numero di datagrammi IP scartati perché non è stata trovata alcuna route per trasmetterli alla destinazione. { ip 12 } identificatore oggetto = 1.3.6.1.2.1.4.12 |
Nome oggetto | Descrizione oggetto |
---|---|
idareaOSPF | Numero intero a 32 bit che identifica in modo univoco un'area. L'ID area 0.0.0.0 viene utilizzato per la backbone OSPF. ::= { ospfAreaEntry 1 } identificatore oggetto = 1.3.6.1.2.1.14.2.1.1 |
OSPFAuthType | Tipo di autenticazione specificato per l'area. È possibile assegnare localmente ulteriori tipi di autenticazione per area. Il valore predefinito è 0. ::= { ospfAreaEntry 2 } identificatore oggetto = 1.3.6.1.2.1.14.2.1.2 |
OspfSpfRuns | Il numero di volte in cui la tabella di route all'interno dell'area è stata calcolata utilizzando il database dello stato del collegamento dell'area. identificatore di oggetto = 1.3.6.1.2.1.14.2.1.4 |
ospfAreaContrBdr | Il numero totale di ABR raggiungibili in quest'area. Questo valore inizialmente è 0, il valore predefinito, e viene calcolato in ogni passaggio SPF. ::= { ospfAreaEntry 5 } identificatore oggetto = 1.3.6.1.2.1.14.2.1.5 |
ospfASBdrRtrCount | Numero totale di ABSR raggiungibili in quest'area. Inizialmente è 0 (il valore predefinito) e viene calcolato in ogni passaggio SPF. ::= { ospfAreaEntry 6 } identificatore oggetto = 1.3.6.1.2.1.14.2.1.6 |
ospfAreaNumeroAC | Numero totale di LSA nel database dello stato del collegamento di un'area, escluse le LSA esterne. Il valore predefinito è 0. ::= { ospfAreaEntry 7 } identificatore oggetto = 1.3.6.1.2.1.14.2.1.7 |
ospfAreaLSACsommaSomma | Somma a 32 bit senza segno dei checksum LS di LSA contenuti nel database dello stato del collegamento dell'area. Questa somma esclude le LSA esterne (LS tipo 5). La somma può essere utilizzata per determinare se si è verificata una modifica nel database dello stato del collegamento di un router e per confrontare il database dello stato del collegamento di due router. Il valore predefinito è 0. ::= { ospfAreaEntry 8 } identificatore oggetto = 1.3.6.1.2.1.14.2.1.8 |
Nome oggetto | Descrizione oggetto |
---|---|
IndirizzoIpIfOspf | Indirizzo IP dell'interfaccia OSPF. identificatore di oggetto = 1.3.6.1.2.1.14.7.1.1 |
OspfIfEvents | Il numero di volte in cui l'interfaccia OSPF ha modificato il proprio stato o si è verificato un errore. identificatore di oggetto = 1.3.6.1.2.1.14.7.1.15 |
OspfIfState | Stato dell'interfaccia OSPF. identificatore di oggetto = 1.3.6.1.2.1.14.7.1.12 |
Nome oggetto | Descrizione oggetto |
---|---|
OspfNbrIndirizzoIp | Indirizzo IP del router adiacente. ::= { ospfNbrEntry 1 } identificatore oggetto = 1.3.6.1.2.1.14.10.1.1 |
ospfNbrIndirizzoIndiceInferiore | Valore corrispondente di IfIndex nel MIB standard Internet in un indice che non dispone di un indirizzo IP. Durante la creazione della riga, è possibile derivare questa condizione dalla variante. ::= { ospfNbrEntry 2 } identificatore oggetto = 1.3.6.1.2.1.14.10.1.2 |
IDRarttOSPF | Numero intero a 32 bit, rappresentato come indirizzo IP, che identifica in modo univoco il router adiacente nel sistema autonomo. Il valore predefinito è 0.0.0.0. ::= { ospfNbrEntry 3 } identificatore oggetto = 1.3.6.1.2.1.14.10.1.3 |
OSPFnbrState | Stato della relazione con il vicino. Gli stati sono:
|
ospfNbrEvents | Numero di volte in cui lo stato della relazione adiacente è cambiato o si è verificato un errore. Il valore predefinito è 0. ::= { ospfNbrEntry 7 } identificatore oggetto = 1.3.6.1.2.1.14.10.1.7 |
ospfNbrLSRetransQLen | Lunghezza corrente della coda di ritrasmissione. Il valore predefinito è 0. ::= { ospfNbrEntry 8 } identificatore oggetto = 1.3.6.1.2.1.14.10.1.8 |
Durante l'indagine di questo articolo, è stato sviluppato un prototipo di programma 'C'. Il programma, denominato oscan, è stato scritto utilizzando Microsoft Developer Studio 97 con Visual C++ versione 5.0. Esistono due librerie specifiche che forniscono l'API (Application Programming Interface) della funzione SNMP. Tali librerie sono snmpapi.lib e mgmtapi.lib
Le funzioni fornite dall'API Microsoft sono raggruppate in tre categorie principali ed elencate nella tabella seguente.
Funzioni agente | Funzioni di gestione | Funzioni |
---|---|---|
SnmpExtensionInit SnmpExtensionInitEx SnmpExtensionQuery SnmpExtensionTrap | SnmpMgrClose SnmpMgrGetTrap SnmpMgrOidToStr SnmpMgrOpen SnmpMgrRequest SnmpMgrStrToOid SnmpMgrTrapListen | SnmpUtilMemAlloc SnmpUtilMemFree SnmpUtilMemReAlloc SnmpUtilOidAppend SnmpUtilOidCmp SnmpUtilOidCpy SnmpUtilOidFree SnmpUtilOidNCmp SnmpUtilPrintAsnAny SnmpUtilVarBindCpy SnmpUtilVarBindListCpy SnmpUtilVarFree mpUtilVarBindListFree |
Il codice del prototipo oscan incapsulava l'API Microsoft con una serie di funzioni aggiuntive elencate di seguito.
snmpWalkStrOid
snmpWalkAsnOid
snmpWalkVarBind
snmpWalkVarBindList
Queste funzioni forniscono un'API generica che consente l'accesso alle varie tabelle MIB SNMP utilizzate per gestire i dati di configurazione OSPF. L'identificatore di oggetto (OID) della tabella a cui accedere viene passato all'API di oscan insieme a una funzione di richiamata specifica della tabella. La funzione di richiamata dispone dell'intelligenza necessaria per intervenire sui dati restituiti dalle tabelle.
La prima operazione consiste nella creazione di un elenco di nodi che saranno la destinazione del programma di scansione. Per evitare il problema di "rilevamento dispositivi", è necessario un file di inizializzazione per identificare i nodi da analizzare. Il file di origine fornisce informazioni quali l'indirizzo IP e le stringhe della community di sola lettura SNMP.
Il programma di scansione deve mantenere diverse strutture di dati interne per memorizzare le informazioni SNMP raccolte dai router. In generale, esiste una struttura di dati interna per ciascuna tabella MIB SNMP raccolta.
Main load node array based on information in the seed file. while more entries in the node array start SNMP session for this node collect IP route table for this node collect OSPF area table for this node collect OSPF Neighbor table for this node collect sysName for this node collect OSPF Interface table for this node end SNMP session for this node end while
È necessario prestare attenzione quando si accede alla tabella di routing IP con il protocollo SNMP, in quanto è semplice sovraccaricare la CPU di un router durante questa operazione. Pertanto, il programma oscan utilizza un parametro di ritardo configurabile dall'utente. Il parametro fornisce un ritardo tra ogni richiesta SNMP. Per gli ambienti di grandi dimensioni, questo significa che il tempo totale di raccolta delle informazioni può essere molto significativo.
La tabella di routing contiene quattro informazioni alle quali l'amministratore di sistema è interessato:
ipRouteDest
ipRouteMask
ipRouteNextHop
ipRouteIfIndex
La tabella di route è indicizzata da ipRouteDest. Pertanto, a ogni oggetto restituito dalla richiesta get-request SNMP viene aggiunto ipRouteDest all'OID.
L'oggetto ipRouteIfIndex è un numero intero indicizzato nella tabella degli indirizzi IP (ipAddrTable). L'oggetto ipAddrTable viene indicizzato utilizzando l'oggetto ipAdEntAddr, ovvero l'indirizzo IP dell'interfaccia. Per ottenere l'indirizzo IP dell'interfaccia, è necessario eseguire una procedura in quattro passaggi:
Raccogliere ipRouteIfIndex dalla tabella di routing.
Accedere a ipAddrTable utilizzando ipRouteIfIndex per la corrispondenza dei pattern.
Quando viene trovato un modello, convertire l'OID in una stringa e raccogliere gli ultimi quattro campi decimali separati da punti che costituiranno l'indirizzo IP dell'interfaccia.
Archiviare nuovamente l'indirizzo IP dell'interfaccia nella tabella di routing IP.
Di seguito è illustrato l'algoritmo generale per l'accesso alla tabella di route IP. A questo punto, viene archiviato solo il valore intero di ipRouteIfIndex. Più avanti, quando si raccolgono le informazioni sull'interfaccia, si accede alla tabella ipAddrTable e le informazioni rimanenti vengono raccolte e inserite nella tabella di routing IP interna.
OID List = ipRouteDestOID, ipRouteMaskOID, ipRouteNextHopOID, ipRouteIfIndexOID; For each object returned by SNMP route table walk Sleep // user configurable polling delay. check varbind oid against OID list if OID is ipRouteDestOID add new entry in the internal route table array if OID is one of the others search internal route array for matching index value store information in array
Le informazioni raccolte sono rappresentate in una tabella simile all'output familiare restituito dalla CLI del router riportata di seguito.
ROUTE TABLE ********************************************************** Destination Mask GW Interface 10.10.10.4 255.255.255.252 10.10.10.5 10.10.10.5 10.10.10.16 255.255.255.252 10.10.10.6 10.10.10.5 10.10.10.24 255.255.255.252 10.10.10.25 10.10.10.25 10.10.10.28 255.255.255.252 10.10.11.2 10.10.11.1 10.10.10.36 255.255.255.252 10.10.10.6 10.10.10.5 10.10.11.0 255.255.255.0 10.10.11.1 10.10.11.1 10.10.13.0 255.255.255.0 10.10.11.2 10.10.11.1
La raccolta di informazioni dalla tabella dell'area OSPF viene eseguita mediante la scansione della tabella dell'area OSPF (ospfAreaTable) e l'elaborazione dei dati restituiti. L'indice della tabella ospfArea è osfpAreaId. ospfAreaId viene archiviato in formato decimale puntato, identico a un indirizzo IP. Pertanto, è possibile riutilizzare le stesse subroutine utilizzate per elaborare e cercare ipRouteTable e ipRouteIfIndex.
In questa sezione sono inclusi diversi elementi di dati che non sono effettivamente presenti nella tabella dell'area OSPF. Ad esempio, gli oggetti ipInAddrErrors, IpRoutingDiscards e ipOutNoRoute sono inclusi nella definizione MIB-2, ma non sono associati a un'area OSPF. Questi oggetti sono associati a un router. Questi contatori vengono quindi utilizzati come metrica di area aggiungendo i valori di ogni nodo di un'area a un contatore di area. Ad esempio, nel report dell'area OSPF, il numero di pacchetti scartati a causa di nessuna route trovata corrisponde in realtà alla somma dei pacchetti scartati da tutti i router dell'area. Questa è una metrica di alto livello che fornisce una vista generale dello stato di instradamento dell'area.
OID List = ipInAddrErrorsOID, ipRoutingDiscardsOID, ipOutNoRouteOID, areaIdOID, authTypeOID, spfRunsOID, abrCountOID, asbrCountOID, lsaCountOID, lsaCksumSumOID; For object returned from the SNMP walk of the Area Table Sleep // user configurable polling delay. check varbind oid against OID list. if OID is ospfAreaId add new entry in the internal route table array if OID one of the others search internal array for matching index value store information in array end of for loop get ipInAddrErrors, ipRoutingDiscards, ipOutNoRoute add values to overall Area counters
Le informazioni raccolte sono rappresentate nella tabella ASCII riportata di seguito.
AREAS ********************************************************** AREA = 0.0.0.0 AREA = 0.0.0.2 authType = 0 authType = 0 spfRuns = 38 spfRuns = 18 abrCount = 2 abrCount = 1 asbrCount = 0 asbrCount = 0 lsaCount = 11 lsaCount = 7 lsaCksumSum = 340985 lsaCksumSum = 319204 ipInAddrErrors = 0 ipInAddrErrors = 0 ipRoutingDiscards = 0 ipRoutingDiscards = 0 ipOutNoRoutes = 0 ipOutNoRoutes = 0
L'indice per la tabella adiacente è costituito da due valori:
ospfNbrIpAddr: ospfNbrIpAddr è l'indirizzo IP del router adiacente.
ospfNbrAddressLessIndex: ospfNbrAddressLessIndex può corrispondere a uno dei due valori seguenti:
Per un'interfaccia a cui è assegnato un indirizzo IP, questo valore è zero.
Per un'interfaccia a cui non è assegnato un indirizzo IP, viene interpretato come IfIndex dal MIB standard Internet.
Poiché esistono due valori per l'indice, è necessario modificare gli algoritmi utilizzati in precedenza per le informazioni aggiuntive aggiunte agli OID restituiti. Dopo aver eseguito questa regolazione, è possibile riutilizzare le stesse subroutine utilizzate per elaborare e cercare ipRouteTable e ipRouteIfIndex.
OID List = ospfNbrIpAddrOID, ospfNbrAddressLessIndexOID, ospfNbrRtrIdOID, ospfNbrStateOID, ospfNbrEventsOID, ospfNbrLSRetransQLenOID, For object returned from the SNMP walk of the Neighbor Table Sleep // user configurable polling delay. check varbind OID against OID list. if OID matches ospfNbrIpAddr add new entry in the internal neighbor table array if OID matches one of the others search array for matching index value store information in array
Le informazioni raccolte sono rappresentate nella tabella ASCII riportata di seguito.
NEIGHBORS ************************************************************ NEIGHBOR #0 NEIGHBOR #1 Nbr Ip Addr = 10.10.10.6 Nbr Ip Addr = 10.10.11.2 Nbr Rtr Id = 10.10.10.17 Nbr Rtr Id = 10.10.10.29 Nbr State = 8 Nbr State = 8 Nbr Events = 6 Nbr Events = 30 Nbr Retrans = 0 Nbr Retrans = 0