Various linkd issues

Description

I can't seem to get linkd to reliably discover links between nodes. The nodes are all Cisco nodes running IOS, IOS-XR and IOX-XE versions and they all have CDP enabled.

  • snmp can poll each node properly.

  • I can walk the CISCO-CDP-MIB of two nodes that have links between them.

  • The CDP info from the OIDs displays correctly.

Example of connected nodes that do not discover one another properly, even though they see each other via CDP:

root@monitor:/var/log/opennms# snmpwalk -v2c -c public -m +ENTITY-MIB:CISCO-CDP-MIB 10.219.49.11 cdpCacheTable | egrep "13.2|14.2"
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/auto/mibs/v2/IP-MIB.my)
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/auto/mibs/v2/EVENT-MIB.my)
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt)
CISCO-CDP-MIB::cdpCacheAddressType.13.2 = INTEGER: unknown(65535)
CISCO-CDP-MIB::cdpCacheAddressType.14.2 = INTEGER: unknown(65535)
CISCO-CDP-MIB::cdpCacheVersion.13.2 = STRING: Cisco IOS XR Software, Version 4.0.1[Default]
CISCO-CDP-MIB::cdpCacheVersion.14.2 = STRING: Cisco IOS XR Software, Version 4.0.1[Default]
CISCO-CDP-MIB::cdpCacheDeviceId.13.2 = STRING: bfr01.151front711
CISCO-CDP-MIB::cdpCacheDeviceId.14.2 = STRING: bfr01.151front711
CISCO-CDP-MIB::cdpCacheDevicePort.13.2 = STRING: GigabitEthernet0/1/0/4
CISCO-CDP-MIB::cdpCacheDevicePort.14.2 = STRING: GigabitEthernet0/1/0/5
CISCO-CDP-MIB::cdpCachePlatform.13.2 = STRING: cisco ASR9K Series
CISCO-CDP-MIB::cdpCachePlatform.14.2 = STRING: cisco ASR9K Series
CISCO-CDP-MIB::cdpCacheCapabilities.13.2 = Hex-STRING: 50 41 DC A8
CISCO-CDP-MIB::cdpCacheCapabilities.14.2 = Hex-STRING: 50 41 DC A8
CISCO-CDP-MIB::cdpCacheVTPMgmtDomain.13.2 = STRING:
CISCO-CDP-MIB::cdpCacheVTPMgmtDomain.14.2 = STRING:
CISCO-CDP-MIB::cdpCacheNativeVLAN.13.2 = INTEGER: 0
CISCO-CDP-MIB::cdpCacheNativeVLAN.14.2 = INTEGER: 0
CISCO-CDP-MIB::cdpCacheDuplex.13.2 = INTEGER: fullduplex(3)
CISCO-CDP-MIB::cdpCacheDuplex.14.2 = INTEGER: fullduplex(3)
root@monitor:/var/log/opennms# snmpwalk -v2c -c public -m +ENTITY-MIB:CISCO-CDP-MIB 10.219.49.2 cdpCacheTable | egrep "20.1|21.1"
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/auto/mibs/v2/IP-MIB.my)
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/auto/mibs/v2/EVENT-MIB.my)
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt)
CISCO-CDP-MIB::cdpCacheAddressType.20.1 = INTEGER: unknown(65535)
CISCO-CDP-MIB::cdpCacheAddressType.21.1 = INTEGER: unknown(65535)
CISCO-CDP-MIB::cdpCacheVersion.20.1 = STRING: Cisco IOS XR Software, Version 4.0.1[Default]
CISCO-CDP-MIB::cdpCacheVersion.21.1 = STRING: Cisco IOS XR Software, Version 4.0.1[Default]
Copyright (c) 1986-2011 by Cisco Systems, Inc.
CISCO-CDP-MIB::cdpCacheDeviceId.20.1 = STRING: bfr01.60hudson01
CISCO-CDP-MIB::cdpCacheDeviceId.21.1 = STRING: bfr01.60hudson01
CISCO-CDP-MIB::cdpCacheDevicePort.20.1 = STRING: GigabitEthernet0/0/0/0
CISCO-CDP-MIB::cdpCacheDevicePort.21.1 = STRING: GigabitEthernet0/0/0/1
CISCO-CDP-MIB::cdpCachePlatform.20.1 = STRING: cisco ASR9K Series
CISCO-CDP-MIB::cdpCachePlatform.21.1 = STRING: cisco ASR9K Series
CISCO-CDP-MIB::cdpCacheCapabilities.20.1 = Hex-STRING: 50 34 A8 E4
CISCO-CDP-MIB::cdpCacheCapabilities.21.1 = Hex-STRING: 50 34 A8 F8
CISCO-CDP-MIB::cdpCacheVTPMgmtDomain.20.1 = STRING:
CISCO-CDP-MIB::cdpCacheVTPMgmtDomain.21.1 = STRING:
CISCO-CDP-MIB::cdpCacheNativeVLAN.20.1 = INTEGER: 0
CISCO-CDP-MIB::cdpCacheNativeVLAN.21.1 = INTEGER: 0
CISCO-CDP-MIB::cdpCacheDuplex.20.1 = INTEGER: fullduplex(3)
CISCO-CDP-MIB::cdpCacheDuplex.21.1 = INTEGER: fullduplex(3)
root@monitor:/var/log/opennms#

Another example:

root@monitor:/var/log/opennms# snmpwalk -v2c -c public -m +ENTITY-MIB:CISCO-CDP-MIB 10.219.49.4 cdpCacheTable | egrep "10202.11"
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/auto/mibs/v2/IP-MIB.my)
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/auto/mibs/v2/EVENT-MIB.my)
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt)
CISCO-CDP-MIB::cdpCacheAddressType.10202.11 = INTEGER: ip(1)
CISCO-CDP-MIB::cdpCacheAddress.10202.11 = Hex-STRING: 48 0F 33 04
CISCO-CDP-MIB::cdpCacheVersion.10202.11 = STRING: Cisco IOS XR Software, Version 4.0.1[Default]
CISCO-CDP-MIB::cdpCacheDeviceId.10202.11 = STRING: bfr01.151front711
CISCO-CDP-MIB::cdpCacheDevicePort.10202.11 = STRING: TenGigE0/0/0/2
CISCO-CDP-MIB::cdpCachePlatform.10202.11 = STRING: cisco ASR9K Series
CISCO-CDP-MIB::cdpCacheCapabilities.10202.11 = Hex-STRING: 00 00 00 01
CISCO-CDP-MIB::cdpCacheNativeVLAN.10202.11 = INTEGER: 0
CISCO-CDP-MIB::cdpCacheDuplex.10202.11 = INTEGER: fullduplex(3)
CISCO-CDP-MIB::cdpCacheLastChange.10202.11 = Timeticks: (1699413204) 196 days, 16:35:32.04
root@monitor:/var/log/opennms# snmpwalk -v2c -c public -m +ENTITY-MIB:CISCO-CDP-MIB 10.219.49.2 cdpCacheTable | egrep "54.14"
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/auto/mibs/v2/IP-MIB.my)
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/auto/mibs/v2/EVENT-MIB.my)
Did not find 'zeroDotZero' in module SNMPv2-SMI (/usr/share/snmp/mibs/DISMAN-SCHEDULE-MIB.txt)
CISCO-CDP-MIB::cdpCacheAddressType.54.14 = INTEGER: ip(1)
CISCO-CDP-MIB::cdpCacheAddress.54.14 = Hex-STRING: 48 0F 33 05
CISCO-CDP-MIB::cdpCacheVersion.54.14 = STRING: Cisco IOS Software, ME360x Software (ME360x-UNIVERSALK9-M), Version 12.2(52)EY1, RELEASE SOFTWARE (fc1)
CISCO-CDP-MIB::cdpCacheDeviceId.54.14 = STRING: systems02.151front711
CISCO-CDP-MIB::cdpCacheDevicePort.54.14 = STRING: TenGigabitEthernet0/2
CISCO-CDP-MIB::cdpCachePlatform.54.14 = STRING: cisco ME-3600X-24TS-M
CISCO-CDP-MIB::cdpCacheCapabilities.54.14 = Hex-STRING: 50 34 A9 70
CISCO-CDP-MIB::cdpCacheVTPMgmtDomain.54.14 = STRING:
CISCO-CDP-MIB::cdpCacheNativeVLAN.54.14 = INTEGER: 0
CISCO-CDP-MIB::cdpCacheDuplex.54.14 = INTEGER: fullduplex(3)
root@monitor:/var/log/opennms#

Environment

OpenNMS Configuration OpenNMS Version: 1.8.12 Home Directory: /usr/share/opennms RRD store by Group: false Web-Application Logfiles: /var/log/opennms/webapp Reports directory: /var/lib/opennms/reports Jetty http host: null Jetty http port: 8980 Jetty https host: null Jetty https port: null System Configuration Server Time: Sat May 14 17:02:22 EDT 2011 Client Time: Sat May 14 2011 17:02:22 GMT-0400 (EDT) Java Version: 1.5.0_17 Sun Microsystems Inc. Java Virtual Machine: 1.5.0_17-b04 Sun Microsystems Inc. Operating System: Linux 2.6.32-30-server (amd64) Servlet Container: jetty/6.1.24 (Servlet Spec 2.5) User Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1

Acceptance / Success Criteria

None

Lucidchart Diagrams

Activity

Show:

Jason Lixfeld May 15, 2011 at 1:04 PM

To point 2: It would be good to add some logic for deleting a link after it's been down for a given amount of time. I think there should also be something like a flag somewhere to be able to delete the link manually if it is desirable for the operator to have the link removed before the delete downed link counter elapses.

Jason Lixfeld May 15, 2011 at 1:00 PM

To point 1: Regarding my topology for the interfaces that appear to be connected to themselves, I'm not sure what to tell you. The Node > Links screen for a node shows very different information than what the the Maps adapter shows. The maps adapter is more accurate than Node > Links screen, but not as accurate as it should be (due to CDP issues mentioned previously).

As far as how to show you what linkd put into the database, I don't know what tables linkd puts the info into.

Jason Lixfeld May 15, 2011 at 12:47 PM

It seems as though the CISCO-CDP-MIB::cdpCacheAddressType.13.2 = INTEGER: unknown(65535) issue may be an IOS-XR specific issue. It works fine between IOS devices that are not connected at Layer 2. I will take this portion of the item up with Cisco.

Antonio Russo May 15, 2011 at 4:18 AM

Jason,
I see some troubles in walks...linkd is able to find link using the cdpcacheAddress, I found that in some case this is not an Ip address! This prevents linkd to find the corresponding link.
More you should also provide your linkd-configuration.xml or say if you have the default configuration.

For that regard point 1 and 2.

1 is really interesting I need more data, you should post at least your topology and show what linkd puts into the database

2 is usual because links not re found are put to N. Usually the "Active" link are put to A. The trouble is related to the fact that links are almost stable object in network and if a link is "down" this does not mean that the link is "detached".
I know this is a limitation, but think...if a link is only down...you delete it and you have no way of know that it is down.
After some time a link is down linkd set the link to D "deleted". There should be an automation in vacuumd that delete delteted links.

Jason Lixfeld May 14, 2011 at 9:53 PM

A couple of other issues that seem to fit under this:

1. Node Link Details thinks nodes are connected to themselves
2. Node Link Details not deleting old links

If this isn't linkd, let me know and I'll create issues for these items too.

Won't Fix

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

PagerDuty

Created May 14, 2011 at 6:12 PM
Updated January 27, 2017 at 4:21 PM
Resolved May 17, 2011 at 1:01 AM