Le protocole SNMP est le langage que les agents et les stations de gestion (managers) utilisent pour communiquer. C'est un protocole de type question/réponse asynchrone. Ce protocole est situé au niveau application du modèle OSI, c'est lui qui définit la structure formelle des communications. SNMP est encapsulé dans des trames UDP.
La MIB (Management Information Base) regroupe l'ensemble des variables relatives aux matériels et aux logiciels supportés par le réseau, et définit les objets de gestion dans l'environnement TCP/IP.
La SMI (Structure of Management Information), définit comment sont représentées, dans la MIB, les informations relatives aux objets de gestion et comment sont obtenues ces informations.
Les stations interrogent donc les agents pour observer leur fonctionnement et leur envoient des commandes pour leur faire exécuter certaines taches. Les agents renvoient les informations requises aux stations de gestion. Certains événements du réseau, tels que des erreurs de transmission, peuvent déclencher des alarmes envoyées aux stations de gestion. Cependant, l'envoi de messages de façon spontanée de l'agent vers le manager est limité. Les managers effectuent une interrogation périodique des agents de manière à vérifier leur état. La structure des paquets est définie en utilisant la syntaxe ASN1 (Abstract Syntax Notation).
SNMP a l'avantage d'être simple, cependant il a des capacités très limités au niveau sécurité, principalement pour l'authentification. Tous les systèmes SNMP doivent également supporter les protocoles DUPER et IP pour transporter les données entre les agents et les stations de gestion.
Spécifications
Le format de la trame SNMP est décrit ci-dessous :
Champs
Version : numéro de version SNMP. Le manager et l'agent doivent utiliser le même numéro.
Communauté : ce champ sert à identifier auprès du manager l'agent avant de lui accorder un accès.
PDU : il y a 5 types de PDU : GetRequest, GetNextRequest, GetResponse, SetRequest, et TRAP.
Une description de ces PDU est données ensuite.
Un premier format est utilisé pour les PDU du genre GET, ou SET :
Champs
Type de PDU :
0 : GetRequest
1 : GetNextRequest
2 : GetResponse
3 : SetRequest
ID de requête : champ qui coordonne la requête du manager et la réponse de l'agent.
Statut d'erreur : entier qui indique une opération normale (cas 0) ou bien une erreur ( cas ¹0)
Index d'erreur : identifie les entées avec la liste des variables qui ont causé l'erreur.
Obj/Val : association du nom de la variable à transmettre avec sa valeur.
Un second format est utilisé pour la TRAP PDU :
Champs
Type de PDU : dans ce cas toujours égal à 4.
Entreprise : identifie l'entreprise de management qui a défini la Trap.
Adresse Agent : adresse IP de l'agent.
Type Générique : décrit quel type de problème est survenu. (7 valeurs sont possibles).
Type Spécifique : est utilisé afin d'identifier une TRAP spécifique à une entreprise.
Timestamp : contient la valeur de l'objet sysUptime représentant le temps écoulé depuis la dernière initialisation.
Obj/Val : association du nom de la variable à transmettre avec sa valeur.