Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau...
-
Upload
raulf-guillaume -
Category
Documents
-
view
131 -
download
0
Transcript of Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau...
Structures des PDU SNMPStructures des PDU SNMP
Chapitre 4Chapitre 4
Format du message SNMPv1Format du message SNMPv1
• Le champ version permet à un nouveau format de message d’être identifié— Permet de s'assurer que l'administrateur et l'agent utilisent la même version— N’était plus utilisé dans la version initiale de SNMPv2— Utilisé dans SNMPv2C et aussi dans SNMPv3
• La communauté est une authentification triviale utilisée par SNMPv1
• La plupart des équipements permettent de configurer des noms de communauté différents en lecture et en écriture
• Le nom de communauté de "lecture" est souvent "public", par défaut— Envoyé sous forme de chaîne de texte ASCII dans les PDU
– Quiconque possédant un analyseur de protocole peut le capturer
• La section "données" contient une des cinq PDU SNMP— On définit seulement deux formats de PDU
– GetRequest, GetNextRequest, GetResponse, SetRequest utilisent le même format de PDU
– Le Trap de SNMPv1 utilise un format de PDU différentASCII = American Standard Code for Information Interchange
Format des messages SNMPv1 et SNMPv2cFormat des messages SNMPv1 et SNMPv2c
• Les messages SNMPv1 ont le format suivant :
SNMP-Message ::= SEQUENCE { version INTEGER {version-1(0)}, community OCTET STRING, data ANY}
version_1(1)
GetRequest PDU
GetNextRequest PDU
GetResponse PDU
Trap PDUSetRequest PDU
community data
Authentification
Version SNMPdu message
Message SNMP
Formats des PDU Get, Set et ResponseFormats des PDU Get, Set et Response
• Le champ “Request ID” permet à la partie gestionnaire d’identifier la réponse correspondant à la requête formulée
• Le champ “Error Index” identifie la variable (variable bindings) qui a occasionné l'erreur
• Chaque ensemble variable bindings (les données) regroupe le nom de la variable avec sa valeur— La variable est nommée par son OID complet (identifiant une instance)— Les PDU GetRequest et GetNextRequest utilisent NULL à la place de la
valeur – NULL est un type ASN.1 (UNIVERSAL) particulier
Formats des PDU Get, Set et Response (suite)Formats des PDU Get, Set et Response (suite)
. . . . . .
version community
SNMP message
GetRequest, GetNextRequest, GetResponse,or SetRequest PDU
PDUtype
RequestID
Errorstatus
Errorindex Object 1, Value 1 Object 2, Value 2
Variable bindings
PDU tag PDU
0
1
2
3
4
GetRequest
GetNextRequest
GetResponse
SetRequest
Trap
0
1
2
3
4
5
noError
tooBig
noSuchName
badValue
readOnly
genErr
Value Error Meaning
Opération manager/agent OK
PDU Response dépasse la limite locale
OID ne correspond pas à un nom de la MIB
SetRequest contient valeur non valide
Non défini dans la RFC-1157
D’autres erreurs sont intervenues
Format de la PDU Trap Format de la PDU Trap
• Le champ “Enterprise” identifie l'entreprise de l’équipement qui a émis le Trap— Par exemple, le préfixe OID 1.3.6.1.4.1.121 identifie FTP Software Inc. comme
constructeur dans l’émission du Trap— Cet OID précise la nature de l’alarme dans la MIB constructeur
• Le champ “Agent Address” contient l'adresse IP de l'agent envoyant le Trap— L'adresse 0.0.0.0 signifie que l’émission ne vient pas d'un réseau IP
• Le champ “Specific Trap Type” précise le type de trap constructeur, quand le champ “generic” indique trap constructeur (enterprise specific)— Est défini par les directives de la RFC-1215— Seulement valide pour les "Trap" spécifiques entreprises
• Le champ “Timestamp” contient la valeur de l'objet sysUpTime de l’agent au moment de l’envoi de ce trap
Format de la PDU Trap (suite)Format de la PDU Trap (suite)
SNMP message
. . . .
version community Trap PDU
PDUtype (4)
EnterpriseAgent
addressGenerictrap type
Specifictrap type
Timestamp Object 1, Value 1 Object 2, Value 2
Variable bindings
Value Trap Meaning
0
1
2
3
4
5
6
coldStart
warmStart
linkDown
linkUp
authenticationFailure
egpNeighborLoss
enterpriseSpecific
Sending protocol entity has reinitialized (config. may be altered)
Sending protocol entity has reinitialized (config. not altered)
A communications link has failed
A communications link has come up
Improperly authenticated SNMP message from manager
An EGP peer neighbor is down
A nongeneric trap has occurred
Format du message SNMPv2Format du message SNMPv2
• Il n’y a jamais eu de consensus sur le Format du message SNMPv2 (1993)
• On a défini trois nouveaux types de PDU :— GetBulkRequest
– Utilisé pour récupérer de grandes quantités de données, ex. : le contenu de tables
— InformRequest– Devait permettre à un administrateur d'envoyer des informations à un
autre administrateur — SNMPv2-Trap
– Remplace le PDU Trap SNMPv1 (obsolète)
• La PDU Trap de SNMPv2 utilise maintenant une structure identique aux autres PDU— La première variable contient sysUpTime
• Les informations de type "Error Status" sont plus explicites
SNMPv2/v3 Error ReportingSNMPv2/v3 Error Reporting
*Never generated by SNMPv2/v3 entity
Error status value Meaning0 noError1 tooBig2 noSuchName*3 badValue*4 readOnly*5 genErr6 noAccess7 wrongType8 wrongLength9 wrongEncoding
10 wrongValue11 noCreation12 inconsistentValue13 resourceUnavailable14 commitFailed15 undoFailed16 authorizationError17 notWritable18 inconsistentName
Format du message SNMPv2cFormat du message SNMPv2c
• SNMPv2c (c pour community) utilise ces nouvelles PDU SNMPv2
— Mais les encapsule dans un format de message de type SNMPv1
. . . . . .
version SNMPv2 PDU
SNMPv2 message
PDUtype
RequestID
Error Statusor
Non-Rptr
Error Indexor
Max-RepsObject 1, Value 1 Object 2, Value 2
PDU tag PDU
0
1
2
3
4
5
6
7
GetRequest
GetNextRequest
Response
SetRequest
obsolete
GetBulkRequest
InformRequest
SNMPv2-Trap
Non-Rptr: Nonrepeaters, how many of the requested variableswill not be processed repeatedly(used in GetBulkRequest only)
Max-Reps: Maximum-repetitions, the maximum number ofrepeated executions to retrieve specific variables(used in GetBulkRequest only)
Variable bindings
community
Format du message SNMPv3Format du message SNMPv3
• SNMPv3 utilise aussi les PDU SNMPv2 — Mais les encapsule dans un nouveau format de message (SNMPv3)
. . . . . .
version (3) SNMPv2 PDU
SNMPv3 message
PDUtype
RequestID
Error Statusor
Non-Rptr
Error Indexor
Max-RepsObject 1, Value 1 Object 2, Value 2
PDU tag PDU
0
1
2
3
4
5
6
7
GetRequestGetNextRequestResponseSetRequestobsoleteGetBulkRequestInformRequestSNMPv2-Trap
msgGlobalData: Security model-specific parameters (see Chapter 7)
msgSecurityParameters: Format defined by security model (see Chapter 7)
Variable bindings
msgGlobalData msgSecurityParameters
Transmettre des informations de gestionTransmettre des informations de gestion
• Le SMI (Structure of Management Information) définit toutes les propriétés d’un objet de la MIB
• ASN.1 définit le type d'un objet et éventuellement des limites de valeurs
• Les règles d'encodage de base (BER) définissent comment les valeurs ASN.1 réelles dans l’application sont encodées en flux d'octets (sérialisation)— Ce que vous voyez sur le câble
• Utilise un encodage Type-Longueur-Valeur (TLV)
ValeurLongueurType
Encodage du champ TypeEncodage du champ Type
1 1 1 1 1
For tags greater than or equal to 31
1 1 . . .
First octet
Class PC
Second octet Third octet Last octet
0 Z Z Z Z Z Z ZY Y Y Y Y Y Y X X X X X X X
Number of tag = XXXXXXX YYYYYYY . . . ZZZZZZZ
For tags from 0 through 30
Type Length Value
Class PC Tag number
One octet
Encodage du champ Type (suite)Encodage du champ Type (suite)
Classe : TAG pour la classe UNIVERSAL :
00 = UNIVERSAL 1 = BOOLEAN (ASN.1 OSI))01 = APPLICATION 2 = INTEGER10 = CONTEXT-SPECIFIC 3 = BITSTRING 11 = PRIVATE 4 = OCTETSTRING
5 = NULL6 = OBJECT IDENTIFIER
16 = SEQUENCE / SEQUENCE OF
PC = 1 pour un encodage structuré, 0 pour encodage simple
Encodage du champ Type (suite)Encodage du champ Type (suite)
Classe : TAG pour la classe APPLICATION :
00 = UNIVERSAL 0 = IPADDRESS01 = APPLICATION 1 = COUNTER3210 = CONTEXT-SPECIFIC 2 = GAUGE32 11 = PRIVATE 3 = TIMETICKS
4 = OPAQUE6 = COUNTER64
Classe :TAG pour la classe CONTEXT SPECIFIC
0 = GetRequest PDU 5 = GetBulkRequest PDU
1 = GetNextRequest PDU 6 = InformRequest PDU
2 = Response PDU 7 = SNMPv2-Trap PDU
3 = SetRequest PDU
4 = SNMPv1-Trap PDU
PC = 1 pour un encodage structuré, 0 pour encodage simple
Encodage du champ LongueurEncodage du champ Longueur
• Le champ “Longueur” détermine le nombre d'octets occupés par le champ “Valeur”
. . .
Length = 0 – 127 octets
0 X X X X X X X
Number of octets in value field
Length > 127 octets
1 X X X X X X X X X X X X X X X X X X X X X X X
Number ofsubsequent
octets
Number of octets in Value field
Encoder le champ ValeurEncoder le champ Valeur
• BOOLEAN (Tag = 1) ASN.1 OSI— Un octet unique avec un contenu de zéro pour FALSE, # 0 pour TRUE— Exemple : FALSE est codé 01 01 00 (en hexadécimal)
• INTEGER (Tag = 2)— La représentation utilisant le plus petit nombre d'octets possible— Exemple : 500 codé 02 02 01 f4 (en hexadécimal)
• OCTET STRING (Tag = 4)— Les contenus représentent exactement les valeurs de la chaîne d'octets— Un encodage structuré casse la chaîne en plusieurs sous-chaînes— Exemple : 55 ff 00 codé 04 03 55 ff 00 (en hexadécimal)
• NULL (Tag = 5)
— Il n'y a pas de contenu— Exemple : Null codé 05 00 (en hexadécimal)
Encoder le champ Valeur (Objets de la MIB)(suite)Encoder le champ Valeur (Objets de la MIB)(suite)
• OBJECT IDENTIFIER (Tag = 6)
— Les deux premiers composants sont encodés selon la formule : premier 40 (décimal) + Second (ici 1x40+3=43
— Les composants suivants sont codés de manière indépendante— Chacun est codé comme entier non-négatif en utilisant aussi peu de blocs
de 7 bits que possible— Chaque bloc de 7 bits est enfermé dans un octet avec le bit de poids fort a
1, sauf pour le dernier bloc de chaque sous-identifiant— Exemple : 1.3.6.1.4.1.7.200 est codé 06 08 2b 06 01 04 01 07 81 48 (hexa)
• SEQUENCE and SEQUENCE OF (Tag = 16)— Concaténation des codages BER des valeurs des composants, dans l'ordre
de la définition
— Exemple :– Définition : SEQUENCE (INTEGER,INTEGER)– Valeur : (7,11)– Codé en 30 06 02 01 07 02 01 0b (en hexadécimal)
Message Get Request avec SNMPv1 Message Get Request avec SNMPv1
30 27 02 01 00 04 05 61 64 6D 69 6E A0 1B 02 03 00 00 0C 02 01 00 02 01 00 30 0E 30 0C 06 08 2B 06 01 02 01 01 03 00 05 00
Type lengthValue
Field type
Sequence
Integer
String
Integer
Integer
Integer
Sequence
Sequence
Object ID
Null
Context-specificconstructed
Length
39
1
5
27
3
1
1
14
12
8
0
Value
0
admin
12
0
0
0
Get-request
MIBdescriptor
sequence of 0x27 octets
Version number - 1 = version 1
Community name “admin”
get-request length 0x1B
Request ID 12
Error status = 0
Error index = 0
1.3.6.1.2.1.1.3.0 › SYSUPTIME
Comments
30 27
02 01 00
04 05 61 64 6D 69 6E
A0 1B
02 03 00 00 0C
02 01 00
02 01 00
30 0E
30 0C
06 08 2B 06 01 02 01 01 03 00
05 00
Message Get Response avec SNMPv1 Message Get Response avec SNMPv1
30 2A 02 01 00 04 05 61 64 60 69 6E A2 1E 02 03 00 00 0C 02 01 00 02 01 00 30 11
Type lengthValue
Field type
Sequence
Integer
String
Integer
Integer
Integer
Sequence
Sequence
Object ID
Context-specificconstructed
Length
42
1
5
30
3
1
1
17
15
8
3
Value
0
admin
12
0
0
Get-response
MIBdescriptor
sequence of 0x2A octets
Version number - 1 = version 1
Community name “admin”
Get-response with length 0x1E
Request ID 0x0C
Error status
Error index
1.3.6.1.2.1.1.3.0 › SYSUPTIME
Time of 7 minutes 10 seconds
Comments
30 2A
02 01 00
04 05 61 64 6D 69 6E
A2 1E
02 03 00 00 0C
02 01 00
02 01 00
30 11
30 0F
06 08 2B 06 01 02 01 01 03 00
43 03 00 A7 F8Applicationwide
TimeTickshundredthsof a second
30 0F 06 08 2B 06 01 02 01 01 03 00 43 03 00 A7 F8
Data link header IP UDP