Il protocollo SNMP (Simple Network Management Protocol) appartiene alla suite di protocolli Internet definiti dall’IETF (Internet Engineering Task Force) nel 1989 ed opera a livello 7 del modello OSI. Questo protocollo permette agli amministratori di rete di misurare parametri di funzionamento dei dispositivi di rete al fine di rilevare anomalie o creare statistiche.

L'SNMP è passato attraverso le seguenti revisioni:

  • SNMPv1: è la prima versione, utilizza l'invio in chiaro di nomi di community come password
  • SNMPv2: rispetto al precedente utilizza un sistema di autenticazione che si basa sugli algoritmi MD5
  • SNMPv3: oltre all'autenticazione cifrata MD5 utilizza un criptaggio DES per i dati

Come funziona

Per poter funzionare l'SNMP necessita di tre elementi, il sistema gestito, l'agent ed il manager.
Il sistema gestito può essere un router, una stampate, uno switch, o qualsiasi altro dispositivo che disponga di un agent di gestione che misura dei valori e li memorizza all'interno di un database gerarchico chiamato MIB (Management Information Base).
Il Manager è il sistema di gestione, tipicamente un sistema di monitoraggio in grado di interrogare il MIB.
In pratica questo protocollo è un'implementazione del modello client server dove il client è il dispositivo di monitoraggio ( sul quale gira il modula Manager) ed il server è il dispositivo da monitorare (sul quale gira l'applicazione agent). L'agent raccoglie dati, li memorizza nel MIB e rimane in ascolto sulla porta UDP 162 per rispondere alle interrogazioni da parte del Manager.

La struttura del MIB

Il MIB è un database gerarchico (ad albero) che permette di identificare i propri oggetti tramite un object idetifier (OID) secondo la notazione ‘.a.b.c.d.e.f…', dove al posto delle lettere appaiono caratteri alfanumerici.
Ad esempio la foglia trasmission nel MIB rappresentato in figura è identificato da: iso.org.dod.internet.mgmt.mib.trasmission oppure dalla sequenza .1.3.6.1.2.2.10.

L'albero dei MIB ha una struttura standard ed ogni costruttore può inserire il proprio ramo infatti sotto il ramo iso.org.dod.internet.private.enterprises vengono inseriti le registrazioni degli oggetti specifici dei diversi costruttori.
Per poter effettuare una misurazione è necessario conoscere l'OID che contiene il valore da misurare. Ad esempio se vogliamo misurare il traffico entrante i una interfaccia di rete su un router (parametro definito ifInOctets) lo troviamo al seguente OID:

.1.3.6.1.2.1.2.2.1.10.

Per trovare gli OID di nostro interesse bisogna fare riferimento alla documentazione del produttore o più semplicemente googleare.

Azioni sugli OID

Fondamentalmente le azioni che si possono compiere sugli OID sono tre:a) Leggere b) Scrivere c) Inviare una trap

Limitandoci al protocollo SNMPv1 le principali operazioni sono le seguenti:

1. GET: utilizzata dal Manager per leggere 2. GET-NEXT: utilizzata dal Manager per leggere ricorsivamente il MIB 3. SET: utilizzata dal Manager per scrivere 4. TRAP: utilizzata dall'agente per inviare messaggi al Manager

In questo articolo faremo riferimento a comandi appartenenti al pacchetto Net-SNMP, disponibile sia su piattaforma Unix che Windows.
Il comando che utilizzeremo per leggere un OID è l'snmpget.
Una volta identificato l'indirizzo ip del router da interrogare, la sua community e l'OID di nostro interesse (in questo caso ifInOctects) procediamo come segue:

$snmpget iprouter community ifInOctects

Dove: iprouter è l'indirizzo ip del router community è la community ifInOctects è .1.3.6.1.2.1.2.2.1.10.

Parametri misurabili

Oltre al parametro ifInOctects è possibile identificarne molti altri:

Parametro

OID

Descrizione

ifOutOctects

.1.3.6.1.2.1.2.2.1.16

Numero ottetti in ingresso

ifSpeed

.1.3.6.1.2.1.2.2.1.5

Banda massima, qualora non fosse misurabile viene inserita la banda nominale

ifInErrors

.1.3.6.1.2.1.2.2.1.14

Numero di pacchetti in ingresso contenenti errori che non sono stati inviati ai livelli superiori

ifOutErrors

.1.3.6.1.2.1.2.2.1.20

Numero di pacchetti in uscita che non sono stati inviati a causa di errori

ifInDiscards

.1.3.6.1.2.1.2.2.1.13

Numero di pacchetti eliminati nonostante non contengano errori

ifPhysAddress

.1.3.6.1.2.1.2.2.1.6   

Indirizzo fisico dell'interfaccia

ifOutQlen

.1.3.6.1.2.1.2.2.1.21

Lunghezza della coda di output

La tabella precedente è solo un piccolo elenco di parametri monitorabili.

Parametri calcolabili

Oltre a monitorare direttamente i parametri ve ne sono alcuni che possono essere calcolati, ad esempio la percentuale di banda occupata.

Abbiamo visto che la banda massima utilizzabile è misurata dal parametro ifSpeed. Altri due parametri importanti sono quelli che ci indicano il traffico come ifInOctects e ifOutOctects.

Per poter calcolare l'occupazione di banda dobbiamo misurare i valori IfInOctects ed ifOutOctects in due tempi differenti T1 e T2 e trovare il ∆ifInOctects e ∆ifOutOctects, in pratica si sottrae dal valore misurato al tempo T2 quello misurato al tempo T1 (∆T). L'occupazione di banda sara:

(∆ifInOctects+∆ifOutOctects) x 8 x 100/∆T x IfSpeed

Naturalmente questo è un parametro calcolato la cui accuratezza dipende dall'accuratezza della misurazione di ifSpeed.

Copyright 2014 - Fata Informatica s.r.l.

Nel rispetto del nuovo Regolamento UE 2016/679 sul trattamento dei dati personali, questo sito utilizza i cookie per migliorare i servizi e l'esperienza degli utenti.