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).

1 Comment on “CDP – Cisco Discovery Protocol

  1. 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