Date de publication du RFC : Mars 1991
Auteur(s) du RFC : Keith McCloghrie (Hughes, LAN Systems), Marshall T. Rose (Performance Systems International)
Chemin des normes
Première rédaction de cet article le 29 novembre 2007
Un des RFC les plus anciens encore en service, la normalisation de la célèbre MIB-II, la base des données qui peuvent être récoltées avec le protocole de gestion de réseaux SNMP.
La MIB-II est la plus connue et la base de toutes les autres
MIB (elle succède à la MIB-I, décrite dans le RFC 1156). Elle décrit un modèle de données, pas un
protocole. Ces données sont accessibles par les différentes versions du
protocole SNMP, elle donne accès à sept groupes
d'informations, comme System
ou
IP
. Ce RFC est donc surtout composé d'une longue
liste de variables (objets), selon les principes communs à toutes les
MIB, décrits dans le RFC 1155.
Physiquement, une MIB est (section 4) une description en
langage ASN.1 des données présentes, avec leur
syntaxe, une
indication de leur identificateur (l'OID), une
description en langue naturelle, etc. Les commandes comme
snmpget affichent par défaut les noms des variables mais
on peut afficher les OID avec l'option
-On
. Les OID de MIB-II démarrent à
1.3.6.1.2.1
. Par exemple, la définition de la
variable ifNumber
(nombre d'interfaces réseaux de
la machine) est :
ifNumber OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The number of network interfaces (regardless of their current state) present on this system." ::= { interfaces 1 }
Son OID étant { interfaces 1 }
et celui de
interfaces
, défini un peu plus haut, étant
{ mib-2 2 }
, on voit que l'OID de
ifNumber
est
1.3.6.1.2.1.2.1.0
(le zéro final est une valeur
nécessaire pour les scalaires,
avec SNMP). snmpget peut donc la récupérer :
% snmpget [options] myrouter 1.3.6.1.2.1.2.1.0 IF-MIB::ifNumber.0 = INTEGER: 2
Si la variable est un tableau, c'est un peu plus compliqué, il faut
ajouter à l'OID un index. Par exemple, les interfaces ont une variable
ifOperStatus
qui indique si elles fonctionnent ou
pas (ifAdminStatus
indique l'état
désiré de l'interface,
ifOperStatus
son état réel ; la comparaison des
deux est donc un bon moyen de savoir si toutes les interfaces
fonctionnent comme prévu). Cete variable est définie dans notre RFC ainsi :
ifOperStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } ACCESS read-only STATUS mandatory DESCRIPTION "The current operational state of the interface. The testing(3) state indicates that no operational packets can be passed." ::= { ifEntry 8 }
% snmpget [options] myrouter 1.3.6.1.2.1.2.2.1.8.1 IF-MIB::ifOperStatus.1 = INTEGER: up(1)
Voici enfin, affichée par snmpwalk, une partie de la MIB-II d'un
commutateur réseau de bas de gamme. D'abord, le
groupe System
(section 3.4), qui décrit l'engin lui-même, par
exemple sa description :
SNMPv2-MIB::sysDescr.0 = STRING: 24-Port Managed 10/100 Switch w/WebView SNMPv2-MIB::sysLocation.0 = STRING: UVA ...
puis le groupe Interfaces
qui décrit les
interfaces de l'engin :
IF-MIB::ifNumber.0 = INTEGER: 37 ... IF-MIB::ifDescr.1 = STRING: Ethernet Interface ... IF-MIB::ifType.1 = INTEGER: ethernetCsmacd(6) ... IF-MIB::ifMtu.1 = INTEGER: 1500 ... IF-MIB::ifOperStatus.1 = INTEGER: up(1) ... IF-MIB::ifInOctets.1 = Counter32: 188864
Ce dernier compteur, ifInOctets
est un exemple
des variables que récoltent les programmes de surveillance de réseau
comme le célèbre MRTG ou comme le plus récent
Munin.
Les groupes ultérieurs comme IP
, ou
TCP
sont moins pertinents pour un commutateur,
car ils ne comptent que les paquets qui lui sont directement adressés.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)