Les OID (Object Identifier)
1. Définition et rôle des OID
Qu'est-ce qu'un OID ?
Un OID (Object Identifier) est un identifiant unique qui représente un objet géré dans le cadre du protocole SNMP (Simple Network Management Protocol). Il s'agit généralement d'informations relatives à un équipement réseau, à un système, à un composant ou à un service. Chaque OID renvoie à une variable de l'équipement supervisé, par exemple :
- l'uptime d'un routeur,
- l'utilisation CPU d'un serveur,
- l'état d'un disque dur (taux d'occupation),
- etc.
Quel est son rôle ?
- Unicité : Chaque OID est unique dans l'ensemble de la hiérarchie définie par l'IETF (Internet Engineering Task Force) et d'autres organismes.
- Normalisation : Les OID permettent de standardiser la façon dont les informations sont identifiées et interrogées dans un contexte SNMP.
- Interopérabilité : N'importe quel outil de supervision qui connaît l'OID (et la MIB associée) peut comprendre la donnée fournie par un équipement compatible SNMP.
2. Structure et organisation des OID
Une représentation arborescente
Les OID sont représentés sous forme de séquences de nombres séparés par des points.
Par exemple :
1.3.6.1.2.1.1.3.0
Cette suite de chiffres correspond à un chemin dans un arbre hiérarchique mondial défini par différents organismes standardisés.
Principaux troncs de l'arbre SNMP
Généralement, on rencontre très souvent le prefixe 1.3.6.1.2.1. Décomposé, il correspond à :
- ISO (1)
- org (3)
- dod (6)
- internet (1)
- mgmt (2)
- mib-2 (1)
À partir de ce point, chaque sous-arborescence est dédiée à un ensemble d'objets. Par exemple :
- 1.3.6.1.2.1.1 : regroupe des informations sur le système (nom, contact, uptime, etc.).
- 1.3.6.1.2.1.2 : regroupe des informations sur les interfaces (cartes réseau, etc.).
Exemple de décomposition
Prenons l'OID 1.3.6.1.2.1.1.3.0 :
- iso (1)
- org (3)
- dod (6)
- internet (1)
- mgmt (2)
- mib-2 (1)
- system (1)
- sysUpTime (3)
- L'instance (0) pour désigner la variable elle-même
Le ".0" final est souvent utilisé pour désigner l'instance de l'objet lorsque celui-ci n'est pas un tableau (table) mais une simple variable.
3. OID et MIB : comment ça fonctionne ensemble
MIB (Management Information Base)
Une MIB est un fichier décrivant l'ensemble des objets (et donc leurs OID) qu'un équipement ou un service rend accessibles via SNMP. Elle décrit :
- La signification de chaque objet (par exemple : "cpuUsage" = taux d'utilisation CPU).
- Le type de l'objet (entier, chaîne de caractère, compteur, etc.).
- La syntaxe (éventuelles limites, formats, etc.).
- Les liens avec les autres objets, notamment s'il s'agit de tables, d'index, etc.
Relations OID ↔ MIB
- L'OID est l'identifiant numérique permettant de pointer précisément un objet.
- La MIB contient la description textuelle de cet objet.
La MIB rend donc plus "lisible" et compréhensible l'utilisation des OID. Concrètement, sans la MIB, vous pourriez interroger un OID, mais vous devriez déduire par vous-même à quoi cet OID correspond. Avec la MIB, vous disposez d'un fichier qui vous explique tout.
4. Exemples d'OID courantes
sysUpTime (1.3.6.1.2.1.1.3.0)
Donne le temps écoulé (uptime) depuis le dernier démarrage du système (en centièmes de secondes).
sysName (1.3.6.1.2.1.1.5.0)
Donne le nom configuré du système, généralement le hostname.
ifNumber (1.3.6.1.2.1.2.1.0)
Donne le nombre d'interfaces réseau sur l'équipement.
ifTable (1.3.6.1.2.1.2.2)
Table contenant la liste des interfaces et leurs attributs (ifDescr, ifType, ifSpeed, etc.).
Chaque constructeur (Cisco, HP, Juniper, etc.) possède en plus de la MIB standard des MIB spécifiques (dites "Propriétaires" ou "Enterprise MIB") situées généralement sous 1.3.6.1.4.1 :
- 1.3.6.1.4.1.9 ⇒ Cisco
- 1.3.6.1.4.1.11 ⇒ HP
- 1.3.6.1.4.1.2636 ⇒ Juniper
- etc.
5. Utilisation des OID dans la supervision
SNMP : le protocole de base
- SNMP GET : Permet de récupérer la valeur associée à un OID spécifique.
- SNMP GETNEXT : Permet de récupérer l'OID suivant dans l'arborescence (utilisé pour naviguer dans les tables).
- SNMP GETBULK : Permet de récupérer plusieurs valeurs d'un coup, optimisant ainsi la découverte des tables dans SNMPv2c et SNMPv3.
- SNMP WALK : Effectue un balayage (walk) d'une sous-arborescence complète pour récupérer toutes les valeurs.
Outils de supervision
- Les NMS (Network Management Systems) comme Nagios, Centreon, Zabbix, PRTG, SolarWinds, etc. utilisent des plugins ou des sondes SNMP.
- Ils s'appuient sur la connaissance d'un OID (ou d'un groupe d'OID) pour interroger régulièrement un équipement et remonter des métriques (CPU, RAM, T°...).
- Si vous voulez rajouter un indicateur spécifique, vous devez connaître son OID et, idéalement, disposer de la MIB associée.
6. Comment retrouver et manipuler un OID
Recherche d'OID
- Consulter la documentation constructeur : Il fournit souvent un "MIB Reference Guide" ou un document décrivant les OID custom.
- Utiliser un outil MIB Browser (ex. iReasoning MIB Browser, ManageEngine MIB Browser) qui permet de charger des MIB, de naviguer dans l'arbre et de trouver rapidement l'OID correspondant à l'information souhaitée.
- Faire un snmpwalk sur un équipement, puis chercher dans la longue liste l'objet souhaité. On peut filtrer avec grep par exemple.
Manipulation d'OID
snmpget :
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0
Cela renvoie la valeur sysUpTime de la machine 192.168.1.10.
snmpwalk :
snmpwalk -v2c -c public 192.168.1.10 1.3.6.1.2.1
Cela renvoie tous les OID sous la branche 1.3.6.1.2.1.
Version SNMP
- SNMPv1 et SNMPv2c : utilisation simple des OID, authentification via communauté (community string).
- SNMPv3 : plus sécurisé, nécessite un couple user/mot de passe + possibilité de chiffrer les échanges. Les OID restent les mêmes, seule la méthode de requête change.
7. Bonnes pratiques
- Bien charger les MIB
Dans vos outils, chargez les MIB associées pour bénéficier de la résolution de noms (très utile pour s'y retrouver).
- Séparer les MIB Custom et les MIB Standard
Cela facilite la maintenance et la mise à jour. Les MIB standard évoluent moins vite que les MIB constructeurs, et les MIB constructeurs peuvent être spécifiques à un modèle d'équipement.
- Documenter vos OID
Si vous utilisez des OID spécifiques (par exemple, vous avez développé un script SNMP qui expose un nouvel indicateur), documentez-les dans votre équipe pour éviter toute confusion.
- Tester manuellement
Avant de configurer un indicateur SNMP dans votre outil de supervision, faites des snmpget / snmpwalk manuels pour valider l'accessibilité et la cohérence des valeurs retournées.
- Mettre à jour les versions de vos MIB
Les constructeurs publient régulièrement des MIB mises à jour. Assurez-vous de récupérer ces versions, notamment pour les équipements récents.
Conclusion
Les OID sont la pierre angulaire de la supervision basée sur le protocole SNMP.
Ils permettent d'identifier de manière unique et normalisée chaque métrique ou information qu'un équipement ou un service peut exposer.
Grâce à la hiérarchie mondiale des OID et aux fichiers MIB qui les décrivent, les outils de supervision peuvent collecter et présenter des données de performance, de disponibilité et d'état de santé de manière cohérente.
Pour aller plus loin, vous pouvez :
- Explorer des MIB Browser (iReasoning, Mibble, etc.) pour vous familiariser avec la structure des OID.
- Mettre en place un petit lab SNMP avec un équipement (ou un simulateur SNMP) et des outils de supervision (Centreon, Zabbix ou Nagios).
- Découvrir les MIB spécifiques aux constructeurs si vous travaillez avec du matériel Cisco, HP, Juniper, etc.