CDP – Cisco Discovery Protocol
CDP (Cisco Discovery Protocol) est un protocole propriétaire de découverte de périphériques réseau indépendant des medias et protocoles utilisés qui fonctionne au niveau de la couche « liaison de donnée » (layer 2).L’utilisation de CDP permet à un équipement de signaler son existence à ses voisins. Et donc, inversément, ses voisins pourront quant à eux retrouver une série d’informations le concernant (nom, modèle, version, adresse IP, …).
Quelle est l’utilité de CDP ?
Comme on vient de le voir, CDP permet d’obtenir des informations sur les équipements directemens connectés pour autant que ceux-ci utilisent aussi CDP. Parmi les utilités majeures on retrouve:
- Vérifier l’état de fonctionnement d’une liaison. Si CDP passe, c’est que la couche physique et la couche liaison de donnée sont opérationnelles, l’interface concernée sera donc dans un état « up/up ».
- Obtenir des informations sur l’équipement voisin. son adresse IP par exemple.
- Découvrir et tracer la topologie du réseau. En passant de machine en machine, on pourra savoir qui est relié à qui et via quelle interface etc.
Dans quelles conditions peut-on utiliser CDP ?
CDP étant un protocole propriétaire, il faut donc que le matériel utilisé soit Cisco. A noter toutefois qu’il est possible d’implémenter CDP sur une machine linux ou autre.
A part cela, il n’y a pas de réel pré-requis. Notons toutefois que pour CDP puisse passer entre deux machine,il faut qu’elles soient voisines et que leur liaison soit fonctionnelle au niveau physique et au niveau liaison de données (interface up/up).
Utilisation de CDP
La première chose à savoir c’est que CDP ne sert qu’à afficher des informations et peut donc être utilisé dans le CLI en mode normal ( router> ) ou en mode privilégié ( router# ).
Voici les principales commandes de CDP:
show cdp
Affiche les infos de fonctionnement de CDP.
BBR1>sh cdp Global CDP information: Sending CDP packets every 60 seconds Sending a holdtime value of 180 seconds Sending CDPv2 advertisements is enabled BBR1>
show cdp neighbors
Affiche un résumé des équipements voisins connectés. (certainement la commande cdp la plus utilisée).
BBR1#show cdp neighbors Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater Device ID Local Intrfce Holdtme Capability Platform Port ID 2924-2 Fas 0/1 123 T S WS-C2924- Fas 0/15 PR1 Ser 0/0 127 R S I 2610XM Ser 1/0 BBR2 Ser 0/0 159 R S I 2620XM Ser 1/0 BBR1#
- Device ID: le nom configuré sur l’équipement
- Local Intrfce: l’interface de l’équipement sur lequel on travaille à laquelle est connectée l’autre équipement.
- HoldTme: Temps restant avant que cette entrée ne soit oubliée au cas ou aucune mise à jour n’est reçue.
- Capability: Fonctionnalités de l’équipement voisin.
- Platform: Type de l’équipement voisin. (A noter que les IP Phones cisco etc sont également identifiés avec CDP).
- Port ID: Port sur l’équipement voisin auquel est rattaché la machinesur laquelle on se trouve.
show cdp neigbors detail
Affiche les informations détaillées sur chaque équipement voisin connecté
BBR1#show cdp neighbors detail ------------------------- Device ID: 2924-2 Entry address(es): Platform: cisco WS-C2924-XL, Capabilities: Trans-Bridge Switch Interface: FastEthernet0/1, Port ID (outgoing port): FastEthernet0/15 Holdtime : 132 sec Version : Cisco Internetwork Operating System Software IOS (tm) C2900XL Software (C2900XL-C3H2S-M), Version 12.0(5)WC17, RELEASE SOFTWARE (fc1) Copyright (c) 1986-2007 by cisco Systems, Inc. Compiled Tue 13-Feb-07 15:27 by antonino advertisement version: 2 Protocol Hello: OUI=0x00000C, Protocol ID=0x0112; payload len=27, value=00000000FFFFFFFF010121FF0000000000000002FD1D8DC0FF0064 VTP Management Domain: '' Native VLAN: 1 Duplex: full ------------------------- Device ID: PR1 Entry address(es): Platform: Cisco 2610XM, Capabilities: Router Switch IGMP Interface: Serial0/0, Port ID (outgoing port): Serial1/0 Holdtime : 100 sec ... etc ...
Pour chaque voisin connecté, CDP affichera le détail des informations reçues:
- Device ID: le nom configuré sur l’équipement
- Entry Address(es): adresse IP (si il y en a une de configurée)
- Platform: Type de l’équipement voisin.
- Interface: l’interface de l’équipement sur lequel on travaille à laquelle est connectée l’autre équipement.
- Port ID (outgoing port): Port sur l’équipement voisin auquel est rattaché la machinesur laquelle on se trouve.
- HoldTme: Temps restant avant que cette entrée ne soit oubliée au cas ou aucune mise à jour n’est reçue.
- Version: Les informations relatives à la version d’IOS utilisé
- Advertisement: Les informatiosn relatives aux messages CDP.
- etc …
Les informations affichées dépendent de la nature de l’équipement voisin. Par exemple un switch affichera le VLAN natif, le domaine VTP etc.
show cdp entry <nom>
Affiche les informations détaillées d’un voisin spécifique.
BBR1#sh cdp entry BBR2 ------------------------- Device ID: BBR2 Platform: Cisco 2620XM, Capabilities: Router Switch IGMP Interface: Serial0/0, Port ID (outgoing port): Serial1/0 Holdtime : 159 sec Version : Cisco IOS Software, C2600 Software (C2600-ADVENTERPRISEK9-M), Version 12.4(19), RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2008 by Cisco Systems, Inc. Compiled Fri 29-Feb-08 19:23 by prod_rel_team advertisement version: 2 VTP Management Domain: '' BBR1#
show cdp interface <type> <numéro>
Affiche les informations CDP concernant l’interface donnée. A savoir si CDP y est actif, les valeursholdtime et de délai de renvoi, …
BBR1#sh cdp interface fastEthernet 0/1 FastEthernet0/1 is up, line protocol is up Encapsulation ARPA Sending CDP packets every 60 seconds Holdtime is 180 seconds BBR1#
Effacer la table CDP
Lorsqu’on teste des connexion, qu’on change les connexionsentre deux équipement, il peut être pratique de vider la table de CDP de manière à ne pas avoir d’affichage étrange le temps que les anciennes entrées soient considérées comme périmées. Pour celà il y a une commande simple:
BBR1#clear cdp table
BBR1#show cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater
Device ID Local Intrfce Holdtme Capability Platform Port ID
BBR1#
Il ne reste plus qu’à attendre que la table se remette à jour.
Activer ou désactiver CDP
Il est bien entendu possible d’activer ou désactiver CDP, soit de manière générale sur le switch ou le routeur, soit sur une interface spécifique.
Par exemple, il est inutile d’utiliser CDP sur les interface d’un switch qui servent à connecter un PC. Autre exemple, lorsqu’on configure une interface en frame-relay, CDP y est désactivé par défaut, pour des raisons de test on peut vouloir l’y activer.
cdp run / no cdp run
Activer ou désactiver CDP sur l’ensemble de la machine. Cette commande est à entrer en configuration globale ( (config)# ).
BBR1(config)#no cdp run BBR1(config)#^Z BBR1#sh cdp neighbors % CDP is not enabled BBR1#
BBR1(config)#cdp run BBR1(config)#^Z BBR1#sh cdp neighbors Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater Device ID Local Intrfce Holdtme Capability Platform Port ID BBR1#
Attention … désactiver CDP signifie que l’on envoi plus aucune information mais également qu’on ne les recevra plus non plus.
cdp enable / no cdp enable
Permet d’activer ou désactiver CDP sur une interface spécifique. Cette commande est donc à entrer en mode de configuration d’interface ( (config-if)# ).
BBR1#conf t Enter configuration commands, one per line. End with CNTL/Z. BBR1(config)#int s0/0 BBR1(config-if)#no cdp enable BBR1(config-if)#^Z BBR1#sh cdp int s0/0 BBR1#
BBR1#conf t Enter configuration commands, one per line. End with CNTL/Z. BBR1(config)#int s0/0 BBR1(config-if)#cdp enable BBR1(config-if)#^Z BBR1#show cdp int s0/0 Serial0/0 is up, line protocol is up Encapsulation FRAME-RELAY Sending CDP packets every 60 seconds Holdtime is 180 seconds BBR1#
Le principe est le même que pour cdp run, lorsqu’on désactive CDP sur une interface, l’équipement n’enverra plus de message CDP ni n’en recevra sur l’interface en question.
Holdtime et interval des packets CDP
Comme dit précédemment, le Holdtime est la durée de vie de l’information envoyée dans le message CDP. Ce qui implique que cette valeur affecte l’équipement voisin, car elle lui dit combien de temps l’info est valable tant qu’elle n’a pas été renouvelée.
L’interval est le temps qui sécoule entre deux envois de message CDP.
Par défaut ces valeurs sont:
- Interval: 60 secondes
- Holdtime: 180 secondes
Ces valeurs peuvent être modifiées de manière globale sur l’équipement (donc en configuration globale).
cdp holdtime <x>
Défini la durée de vie en secondes de l’information envoyée. Valeur comprise entre 10 et 255 secondes.
BBR1(config)#cdp holdtime 120
cdp timer <x>
Fréquence à laquelle l’équipement doit renvoyer les messages CDP. Valeur comprise entre 5 et 254 secondes.
BBR1(config)#cdp timer 40
Remarque: Il faut être attentif lors de la configuration de ces valeurs. Si on configure un holtime plus court que le timer, les infos cdp ne seront pas renouvelées à temps et le voisin aura régulièrement une table CDP incomplète.
Pour remettre les valeurs par défaut, il suffit de précéder ces deux commandes d’un « no »:
BBR1(config)#no cdp timer
BBR1(config)#no cdp holdtime
Voilà pour CDP. Ce protocole n’a pas l’air énorme, mais c’est sans aucun doute un des outils les plus utilisés dans l’analyse d’un réseau (Cisco).
Article très pédagogique, le fait d’expliquer les commandes et le contenu du résultat est vraiment excellent.
Pour information, ce protocole a tellement de succés qu’une norme est sortie pour l’interopérabilité avec des équipements autre que Cisco, c’est le LLDP – Link Layer Discovery Protocol.
Cyril