Finding Cisco Neighbors with SNMP

Posted on in Networking

cover image for article

I've been in the situation before were I needed to discover the neighbors of a Cisco device programmatically. This is useful in a case where you want to crawl a network without hard-coding a list of devices into your script. By default, all Cisco devices have Cisco Discovery Protocol (CDP) enabled and we can use this to get our neighbor list.

The first thing you'll need is the CDP MIB - CISCO-CDP-MIB. If you have the MIB and Net-SNMP package installed, you should be able to issue the following command on the command line:

snmpwalk -mCISCO-CDP-MIB -v2c -c [RO_community] [hostname] ciscoCdpMIB

This should dump a lot of details to your terminal. Here's a snippet of output from my Cisco 2611XM. In all there were 31 lines of output printed.

CISCO-CDP-MIB::cdpInterfaceEnable.1 = INTEGER: true(1)
CISCO-CDP-MIB::cdpInterfaceEnable.2 = INTEGER: true(1)
CISCO-CDP-MIB::cdpInterfaceEnable.3 = INTEGER: true(1)
CISCO-CDP-MIB::cdpInterfaceMessageInterval.1 = INTEGER: 0 seconds
CISCO-CDP-MIB::cdpInterfaceMessageInterval.2 = INTEGER: 0 seconds
CISCO-CDP-MIB::cdpInterfaceMessageInterval.3 = INTEGER: 0 seconds
CISCO-CDP-MIB::cdpInterfaceGroup.1 = INTEGER: 0
CISCO-CDP-MIB::cdpInterfaceGroup.2 = INTEGER: 0
CISCO-CDP-MIB::cdpInterfaceGroup.3 = INTEGER: 0
CISCO-CDP-MIB::cdpInterfacePort.1 = INTEGER: 0
CISCO-CDP-MIB::cdpInterfacePort.2 = INTEGER: 0
CISCO-CDP-MIB::cdpInterfacePort.3 = INTEGER: 0
CISCO-CDP-MIB::cdpInterfaceEntry.6.1 = STRING: "FastEthernet0/0"
CISCO-CDP-MIB::cdpInterfaceEntry.6.2 = STRING: "FastEthernet0/1"
CISCO-CDP-MIB::cdpInterfaceEntry.6.3 = STRING: "Serial0/0"
<snip>

The two most important OIDs in terms of finding neighbors are cdpCacheDeviceId, which gives the device name, and cdpCacheAddress, which gives the IP address. The latter is extremely useful if you need to contact the neighbor and your device naming scheme does not match up to DNS.

Now you just need to take the above information and apply it in your programming language.

Recommended Reading:

Network Warrior

Essential SNMP

Slaptijack's Koding Kraken