Cisco Discovery Protocol.

A protocol whereby Cisco manufactured Routers and Switches keep track of their neighbours through a proprietary message protocol. Basically it provides a tabulated list of the neighbouring nodes in a network and provides information about the capabilities and attributes of the neighbour.

The protocol gathers information from its neighbours through a stored response style - i.e. each neighbour sends out a CDP packet to all its registered CDP neighbours with CHANGES to it's status or configuration. There is also a timeout value, usually 3x the informational packet timer, before the neighbour is officially removed from the neighbour map. When a new neighbour is introduced, it broadcasts its information to all of its connected ports, and the neighbours update as necessary.

CDP provides information on:

  • Device ID - aka Serial number and identifying model numbers
  • Entry Addresses - aka IP Address, IPX network number, Token ring station number, ATM cell number....
  • Platform Information - model of unit, complete with part numbers!
  • Capabilities - things like Router, Switch, Trans-Bridge Switch or a combination of the above
  • Interface connections - VLAN tag, port connected from (which you can determine the type of connector like Serial, Ethernet etc)
  • Holdtime - time remaining to keep information on neighbour(s)
  • Version - full information on the IOS version of neighbouring equipment

In everyday use, CDP is VERY useful to have on the internal parts of a network - you only need to know one node of your network to trace a full informational path all the way through. However you don't really want to enable it on external nodes as outside (i.e. telco or upstream provider) equipment may "snoop" info as to the layout of your LAN via that info.

Also, it is a quite "noisy" protocol - every 30 seconds or so a CDP packet is broadcast from each and every CDP enabled device! Beware if used in high density networks - the background noise levels, along with Novell and NetWare info packets can actually be quite high! You dont have to be in EXEC mode to get CDP either. Quite annoying.

Cisco IOS commands to retrieve CDP info:
Router# sh cdp neigh det (show cdp neighbours detail)

Device-ID: ROUTE
Device Addresses:
  IP Address:
Holdtime: 157 sec
Capabilities: ROUTER
  Cisco Internetwork Operating System Software
  IOS (tm) 3600 Software (C3620-I-M), Version 12.1(5)T7,  RELEASE SOFTWARE (fc1)
  TAC Support:
  Copyright (c) 1986-2001 by cisco Systems, Inc.
Platform: cisco 3620
Port-ID (Port on Device): FastEthernet0/0
Port (Our Port): 1/1
Device-ID: 002525047(Hostname)
Device Addresses:
  IP Address:
Holdtime: 134 sec
  WS-C5000 Software, Version McpSW: 3.2(8) NmpSW: 3.2(8)
  Copyright (c) 1995-1999 by Cisco Systems
Platform: WS-C5000
Port-ID (Port on Device): 3/1
Port (Our Port): 2/1
Device-ID: Hostname
Device Addresses:
  IP Address:
Holdtime: 154 sec
Capabilities: SWITCH IGMP
  Cisco Internetwork Operating System Software
  IOS (tm) C3550 Software (C3550-I5Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
  Copyright (c) 1986-2002 by cisco Systems, Inc.
Platform: cisco WS-C3550-12T
Port-ID (Port on Device): GigabitEthernet0/10
Port (Our Port): 2/2

Update: 7-Oct-2002 - Small revision to change Router> to Router#, a more standard way of writing an enabled command, despite not needing to be in EXEC mode...

Log in or register to write something here or to contact authors.