Administration Systèmes et
Réseaux
Chapitre 4
Le Protocole SNMP
(Simple Network Management Protocol)
1
SNMP : Motivation
Nécessité d ’avoir un protocole permettant de remonter des
informations sur l ’activité des différentes ressources du
réseau (les serveurs, les routeurs, les commutateurs, etc).
2
Présentation de SNMP
Protocole d’administration de machines supportant TCP/IP
SNMP Version 1 (SNMPv1) Défini dans la RFC 1157
Mécanisme de sécurité basé sur la notion de communauté (mot de
passe en clair dans les requêtes et réponses)
SNMP Version 2 (SNMPv2) Défini dans les RFC 1905, 1906
et 1907
Introduit deux nouveaux types de paquets get-bulk-request et
inform-request (communication entre plate-formes)
SNMP Version 3 (SNMPv3) Défini dans les RFC 2570,
2571, 2572, 2573, 2574 et 2575
Introduit de nouveaux mécanismes de sécurité (authentification
forte et confidentialité)
3
Présentation de SNMP
Répond à un grand nombre de besoins :
Administrer à distance des machines indépendamment de leur
architecture
Disposer d’une cartographie du réseau
Fournir un inventaire précis de chaque machine
Mesurer la consommation d’une application
Signaler les disfonctionnements
4
Modèle d ’administration SNMP
Une administration SNMP est composée de trois types
d'éléments :
des agents chargés de superviser un équipement. On parle d'agent
SNMP installé sur tout type d'équipement.
une ou plusieurs stations de gestion capables d'interpréter les
données
une MIB (Management Information Base) décrivant les informations
gérées (objets administrés).
SNMP permet la supervision, le contrôle et la modification
des paramètres des éléments du réseau.
5
SNMP - éléments principaux
NMS : Network Management System
Agent SNMP
SNMP
SNMP
Objets SNMP (MIB)
Ex:
-Segments TCP envoyés
-Datagrammes IP reçus
SNMP
Agent
Agent
Agent
Agent mandataire
Plan Architectural
Agent mandataire (Proxy)
L'utilisation de SNMP suppose que tous les agents et les
stations d'administration supportent IP et UDP.
Ceci limite l'administration de certains périphériques qui
ne supportent pas la pile TCP/IP.
De plus, certaines machines (ordinateur personnel,
station de travail, contrôleur programmable,...
implantent TCP/IP pour supporter leurs applications,
mais ne souhaitent pas ajouter un agent SNMP.
=> utilisation de la gestion mandataire (les proxies)
Un agent SNMP agit alors comme mandataire pour un
ou plusieurs périphériques
Agent mandataire (Proxy)
La MIB (Management Information Base)
1 ressource à gérer = 1 objet
Les objets administrables sont une abstraction des ressources physiques
(interfaces, équipements, etc.) et logiques (connexion TCP, paquets IP,
etc.)
MIB : collection structurée d’objets reconnus par les agents
Chaque nœud dans le système doit maintenir une MIB qui reflète l’état
des ressources gérées
Une entité d'administration peut accéder aux ressources du nœud en
lisant les valeurs de l'objet ou en les modifiant
MIB: 2 objectifs
Un schéma commun : SMI (Structure of Management Information)
Une définition commune des objets et de leur structure
10
Arbre des MIB accessibles
11
Identificateur d ’un objet de la MIB
Identificateur d ’un objet:
Identificateur unique = séquence d ’entiers dont chacun représente la
position de ces successeurs dans l ’arbre.
Exemple: identificateur de l ’objet MIB :
. 1 . 3 . 6 . 1 . 2 . 1
La racine osi org dod Internet mgmt mib
12
Le groupe MIB-2
Mib-2
(1)
System (1) rmon (16)
interface (2) snmp (11)
at (3) Transmisson
(10))
ip (4) egp (8)
icmp (5) udp (7)
tcp (6)
13
Le groupe MIB-2
MIB-2
groupe nbre éléments commentaire
system 7 nœud dans le réseau
interfaces 25 interfaces réseau
at 5 IP address translation
ip 65 Internet Protocol
icmp 26 Internet Control Message Protocol
tcp 21 Transmission Control Protocol
udp 8 User Datagram Protocol
egp 22 Exterior Gateway Protocol
transmission 114 informations sur la transmission
snmp 28 SNMP
rmon 218 Remote network monitoring 14
La structure numérique de la MIB-2
system 1.3.6.1.2.1.1
interfaces 1.3.6.1.2.1.2
at 1.3.6.1.2.1.3
ip 1.3.6.1.2.1.4
icmp 1.3.6.1.2.1.5
tcp 1.3.6.1.2.1.6
udp 1.3.6.1.2.1.7
egp 1.3.6.1.2.1.8
rmon 1.3.6.1.2.1.9
transmission 1.3.6.1.2.1.10
snmp 1.3.6.1.2.1.11
15
Le groupe « System »
System : correspond au nom de l'agent, n° de version, type de la machine,
nom du système d'exploitation, etc.
Couches du modèle OSI
system Supportées par l ’équipement
Mib-2 (1)
sysDescr(1) cmot (9)
sysServices(7)
sysObjectID(2) sysLocation(6)
sysUpTime(3) sysName(5)
sysContact(4)
Description
du système
d ’exploitation Le local où
Identificateur de l ’objet Le temps en La personne Le nom du se trouve
l ’équipement
qui représente l ’équipement centième de à contacter système
(attribué par le constructeur) seconde depuis (administrateur)
la dernière mise
en activité 16
Le groupe « Interface »
Interface (mib-2(2))
ifNumber : le nombre d’interfaces réseau
ifTable: Table qui contient une ligne par interface ifNumber(1)
ifTable(2)
ifIndex : Index de l ’interface (son numéro)
ifEntry(3)
ifDescre : Description de l ’interface
ifType : le type de l ’interface (Ethernet, Token-Ring,...) ifIndex(1)
ifDescre(2)
ifMtu : le nombre maximum d ’octet que l ’interface peut
ifType(3)
envoyer ou recevoir
ifMtu(4)
ifSpped : Une estimation du débit de l ’interface
ifSpeed(‘5)
ifPhyAdress : l ’adresse physique de l ’interface
ifPhyAdress(‘6)
.... 17
Le groupe « IP »
ipForwarding : Agit comme passerelle, ou non
ip (mib-2(2))
ipDefault TTL : la valeur par défaut du TTL ajouté dans un
ipForwarding(1)
paquet IP
ipDefaultTTL(2)
ipInReceives : Le nombre total de paquets IP reçus
ipInReceives(3)
IpInHdrErrors : Le nombre total de paquets écartés dus à une IpInHdrErrors(4)
erreur sur l ’en-tête IpInAddrErrors(5)
IpInAddrErrors : Le nombre total de paquets écartés dus à une IpForwDatagrams(6)
erreur sur l ’adresse de destination IpInUnknowProtos(7)
ipInDiscards(8)
IpForwDatagrams : Le nombre total de paquets dont l’entité
ipInDelivers(‘9)
réceptrice ne représente pas la destination finale.
18
Les autres groupes
icmp : statistiques sur les paquets ICMP reçus, envoyés et erronés
exemple: compter le nombre total de messages icmp reçus, reçus par erreur ou non
envoyés
tcp : rend compte des connexions TCP en cours et leurs paramètres
de type nombre max de connexions simultanées permises, nombre d'ouvertures actives,
l'état de chaque connexion (écoute, time-wait,...).
udp : - 4 compteurs renseignent sur le nombre de datagramme
UDP envoyés, reçus, en erreur, ...
egp : gère le protocole egp (External gateway protocol)
(routage des paquets entre routeurs). On a le nbre de paquets entrants, sortants, en erreur,
la table des routeurs adjacents, des infos sur les routeurs...
snmp : requis pour chaque entité mettant en oeuvre le protocole SNMP.
Contient le nombre de messages SNMP entrants et sortants, le nombre de mauvaises
versions reçues ou de nom de communauté invalide, la répartition du type de requêtes
reçues et envoyées (get, get_next, set et trap)
19
MIB: Nommage des Managed Objects: MOs (I)
MY-MIB
(1)
address (1) info (2)
134.21.1.15
name (1) uptime (2)
server-1 12345
Nommage d’un MO de type scalaire Exemples
.1.1.0 ⇒ 134.21.1.15
Par concaténation des identificateurs de la .1.2.1.0 ⇒ “server-1“
.1.2.0 ⇒ ERREUR
racine à l’objet et en rajoutant un 0 à la fin.
Alternative (symbolique):
.MY-MIB.info.uptime ⇒ 12345
20
MIB : Nommage des MOs (II)
MY-MIB
(1)
address (1) info (2) routeTable (3)
134.21.1.15
name (1) uptime (2) dest (1) next (2)
server-1 12345
2 2
3 3
Nommage des entrées d’une table 5 2
7 2
Au lieu du 0 final, les valeurs des variable(s) 8 3
qui forment l’index de la table sont 9 3
rajoutées. Exemples:
Une table est accédée séquentiellement, 1.3.2.5 ⇒ 2
valeur par valeur et non pas dans son 1.3.1.7 ⇒ 7
ensemble. 21
Indexation d’une table
EXEMPLES:
OID de la Table = 1.3
1.3.1.5 => 5
1.3.2.5 => 2
1.3.1.1 => Entrée inexistante
1.3.1.9 => 9
1.3.2.1 => Entrée inexistante
1.3.2.9 => 3
1.3.2.7 => 2
22
Indexation d’une table
Un index n’est pas nécessairement un entier : Ici
l’index est une adresse IP
EXEMPLES: OID de la Table = 1.3
1.3.1.130.89.16.23 => 130.89.16.23
1.3.2.130.89.16.23 => 130.89.16.1
1.3.1.193.22.11.97 => 193.22.11.97
1.3.2.193.22.11.97 => 130.89.16.4
1.3.2.130.89.19.121 => 130.89.16.1
23
Indexation multiple d’une table
Un index n’est pas toujours unique et par la suite on aura besoin
de définir plus qu’un index pour s’assurer de l’unicité de la
combinaison de ces index :
Dans le cas d’une table de routage un noeud peut être atteint par
différents chemins et par la suite l’indexation de la table sur la
seule adresse IP destination ne suffit plus.
24
Indexation multiple d’une table
Exemple:
25
SMI
La SMI (Structure of Management Information) spécifie les règles
de définition des ‘Managed Objects’ (MO) qui sont:
Variables typées simples (scalaires); elles peuvent être organisées en
tables à 2 dimensions au maximum
‘Basés objets’ mais pas orientées objets; les opérations offertes sont
uniquement la lecture et l’écriture
Spécifiés par un sous-ensemble de
Abstract Syntax Notation 1 (ASN.1, Version 1988)
Ces règles sont valables quelque soit le protocole de gestion
utilisé.
Un MO est défini par
Type (Syntax), mode d‘accès (Access), état de définition (Status),
description et un Identificateur unique…
26
Utilisation de SMI
SMI (Structure of Management Information)
Constitue un moyen normalisé de représenter des informations de
gestion :
Définition de la structure d’une MIB particulière
Définition de chacun des objets de la MIB (syntaxe et valeur)
Définitions formelles en A.S.N.1 (Abstact Syntax Not.1)
27
La structure des informations d ’Administration (SMI)
Un objet peut agréger plusieurs objets :
Object1
Object2
Object3 Object4
object3 Object Identifier {object2 1}
object4 Object Identifier {object2 2}
object2 Object Identifier {object1 1}
28
Définition d’un objet
Un objet est défini par les champs suivants :
Syntax : ce champ indique la syntaxe du type d’objet. La syntaxe doit être
définie dans les structures SMI.
Max-Access : ce champ indique le niveau d’accès de cet objet.
Status : le niveau de support que requiert cet objet.
Description : contient une description textuelle de l’objet.
Le nom et l’identificateur de l’objet sont écrits respectivement au début
et a la fin de la macro de définition de l’objet.
Les noms de variables MIB sont extraits d ’un espace des noms
d’identificateurs d’objets gérés par l ’ISO et l ’UIT-T.
La responsabilité des règles de nommage est décomposée, à chaque niveau,
en domaines
Chaque groupe a la responsabilité du choix de certains noms sans avoir à
consulter l’autorité supérieure pour chaque décision.
29
RS2
SMI – Syntax
INTEGER Nombre entier signé compris entre -231 et
INTEGER
Integer32 231-1
OCTET STRING OCTET STRING Chaîne d‘octets
OBJECT
OBJECT IDENTIFIER Identificateur unique
IDENTIFIER
- Unsigned32 Entier naturel compris entre 0 et 232-1
Entier qui s‘incrémente ou se décrémente
Gauge Gauge32
dans un intervalle
Counter32
Counter Compteur circulaire (0 à 232 -1 resp. 264-1)
Counter64
TimeTicks TimeTicks Durée exprimée en 1/100 seconde (0 à 232-1)
IpAddress IpAddress 4 octets d‘une adresse IPv4
Opaque Opaque Type ASN.1 quelconque
Network Address - Adresse réseau quelconque (non-IP)
- BitString Chaîne de bits nommés (ex: liste de flags)
Definit les types simples des Managed Objects
30
Diapositive 30
RS2 Network Address ????
Rudolf Scheurer; 27/04/2002
SMI– Access/Status
ACCESS/Opérations d’accès d‘un MO (SMIv1)
not-accessible – pour la définition des tables
read-only – modifiable uniquement par l‘Agent
read-write – modifiable aussi par le Manager
write-only – uniquement accès en écriture
Changements avec SMIv2
Elimination de « write-only »
Nouveau: « read-create » pour créer des MO dans des tables
STATUS/Etat de définition d’un MO
mandatory– le MO doit être disponible/implémenté
optional – l’implémentation du MO n’est pas nécessaire
obsolete – le MO va disparaître à la prochaine version
Changements avec SMIv2
« mandatory » remplacé par « current »
« optional » a été éliminé
31
Définition d’un objet scalaire
32
SMI – Exemples de définition
Définition d’une Adresse (objet scalaire):
address OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-write
STATUS current
DESCRIPTION "The Internet address of this system"
::= {MY-MIB 1}
33
Définition d’une table
Principe:
Une table de routage est une séquence d’entrée
Chaque entrée est composée d’une @source, d’une @dest et d’un
critère de choix.
34
Définition de la table de routage
routeTable OBJECT-TYPE
SYNTAX SEQUENCE OF routeEntry
MAX-ACCESS not-accessible
STATUS mandatory
DESCRIPTION "This entity’s routing table"
::= {NEW-MIB 3}
routeEntry OBJECT-TYPE
SYNTAX ligne
MAX-ACCESS not-accessible
STATUS mandatory
DESCRIPTION "A route to a particular destination"
INDEX {dest, policy}
::= {routeTable 1}
35
Définition d’une table (suite)
ligne::=
SEQUENCE {
dest ipAddress,
policy INTEGER,
next ipAddress}
RouteEntry est une séquence (liste) de deux adresses IP et d’un
entier
36
Définition d’une table (suite)
dest OBJECT-TYPE
SYNTAX ipAddress
ACCESS read-only
STATUS mandatory
DESCRIPTION "The address of a particular destination"
::= {route-entry 1}
policy OBJECT-TYPE
SYNTAX INTEGER {
costs(1) -- lowest delay
reliability(2)} -- highest reliability
ACCESS read-only
STATUS mandatory
DESCRIPTION "The routing policy to reach that destination"
::= {route-entry 2}
next OBJECT-TYPE
SYNTAX ipAddress
ACCESS read-write
STATUS mandatory
DESCRIPTION “The internet address of the next hop"
::= {route-entry 3}
37
Définition de nouveaux types
Utilisation des conventions textuelles (TEXTUAL CONVENTIONS) pour
raffiner la sémantique des types déjà existants.
Exemple:
RunState ::= TEXTUAL CONVENTION
STATUS mandatory
DESCRIPTION "..."
SYNTAX INTEGER{
running(1)
runable(2)
waiting(3)
exiting(4)
}
38
Groupe d’objets
La construction d’un groupe d’objets permet de regrouper un
ensemble de types d’objets ayant une caractéristique en commun.
Exemple:
myGroup3 OBJECT-GROUP
OBJECTS { address, name, uptime }
STATUS mandatory
DESCRIPTION "The collection of scalar objects."
::= { myGroups 3 }
39
Opérations du protocole SNMP
LECTURE : lit la valeur d ’une variable
get-request, get-response
ECRITURE : affecte une valeur à une variable
set-request
PARCOURS : pour connaître les variables effectivement gérées
par un nœud
get-next-request, get-response
NOTIFICATIONS : pour signaler un événement extraordinaire
à un gestionnaire
trap
40
Aperçu
41
Modèle Client / Serveur, N° des ports
42
Format général du Message SNMP
Le numéro de version Le nom de communauté Le Protocol Data User pour SNMPv1
pour SNMPv1 = 0
SNMP community = Un ensemble d’administrateurs autorisés à utiliser
l’agent
Chaque communauté est définie en utilisant un nom unique
Les administrateurs doivent préciser le nom de la communauté dans les
requêtes SNMP
43
Définition ASN.1 du Message
44
Format des Get, Get-Next et Set
Index de l ’erreur
sur la liste des
variables binding
Liste d ’instances d ’objets
à retirer ou à modifier leur valeur
L ’état d ’erreur
0 : pas d ’erreur
45
Format de Variable Binding List
46
Format de Trap
Type =4 Le système qui L ’adresse IP Liste d ’instances
a généré la trap Information d ’objets à retirer ou
pour trap de l ’agent à propos de la
(sysObjectID du à modifier leurs
groupe system) nature de trap valeurs
Information à propos de
la nature de l ’événement Le temps entre
la dernière initialisation
de l ’agent et
la génération de la trap
47
Le champ “Generic”
Le champ “Generic” peut prendre une des valeurs suivantes :
coldStart (0) : Une réinitialisation inatendue due à une défaillance.
warmStart (1) : Une défaillance mineur
linkDown (2) : Une défaillance survenue sur une interface physique.
linkUp (3) : Une interface devient active.
authenticationFailure (4) : L’agent a reçu un message avec une
authentification impropre
egpNeighborLoss (5) : Un routeur voisin utilisant EGP (External Gateway
Protocol) est déclaré comme étant non focntionnel
enterpriseSpecific (6) : L’événement relatif à “enterprise-specific” est survenu
48
Exemple de Trap
L ’adresse IP de agent émetteur : 132.18.54.21
L ’objet concerné par la trap est : 1.3.6.1.4.1.20.1 (MIB privée)
Type de trap : link up (generic=3)
Indication : le nombre de paquets reçus est 956340
La dernière réinitialisation de l’agent : 6 heures passées.
49
La requête GET
50
La requête GETNextRequest
51
La requête Set
52
La notification TRAP
53
Les requêtes multiples
Les requêtes Get, Get Next et Set Request peuvent préciser plusieurs
objets à lire ou à modifier leurs valeurs.
54
Exemple de Get Request
55
Exemple de GetNext Request
56
Exemple de Set Request
57