LLDP topology bug when two devices share the same initial sysname
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Network Administration Visualized |
Fix Committed
|
Medium
|
Morten Brekkevold | ||
4.6 |
Fix Released
|
Medium
|
Morten Brekkevold |
Bug Description
In our case we have a netbox called na10.acc.xxx and a environment probe called na10.env.xxx.
When ipdevpoll runs the topology plugin on the netbox na11 which is a neighbor device of na10, it retrieves the sysname and tries to fetch the device on NAV called NA10.
NA11# sh ll i r
LLDP Remote Devices Information
LocalPort | ChassisId PortId PortDescr SysName
--------- + -------
25 | 00 11 0a xx xx xx 50 50 NA10
26 | a0 1d 48 xx xx xx 25 25 NA12
When the query is doen, it returns two devices (na10.acc & na10.env) and that crashes the whole process.
This is the full traceback error:
2016-10-19 08:08:15,565 [31596] [ERROR jobs.jobhandler] [topo na11.acc.xxx] Plugin nav.ipdevpoll.
Traceback (most recent call last):
File "/usr/lib/
self.
File "/usr/lib/
self.
File "/usr/lib/
current.result = callback(
File "/usr/lib/
_inlineCall
--- <exception caught here> ---
File "/usr/lib/
result = result.
File "/usr/lib/
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/
yield run_in_
File "/usr/lib/
result = context.call(ctx, function, *args, **kwargs)
File "/usr/lib/
return self.currentCon
File "/usr/lib/
return func(*args,**kw)
File "/usr/lib/
return func(*args, **kwargs)
File "/usr/lib/
neighbors = [LLDPNeighbor(lldp) for lldp in self.remote]
File "/usr/lib/
self.identify()
File "/usr/lib/
self.netbox = self._identify_
File "/usr/lib/
netbox = self._netbox_
File "/usr/lib/
return cls._netbox_
File "/usr/lib/
netbox = manage.
File "/usr/lib/
num if num <= MAX_GET_RESULTS else 'more than %s' % MAX_GET_RESULTS
nav.models.
2016-10-19 08:08:15,566 [31596] [ERROR jobs.jobhandler] [topo na11.acc.xxx] Job 'topo' for na11.acc.xxx aborted: Job aborted due to plugin failure (cause=
I discussed this with Lunkwill on IRC. It seems that ProCurve switches do not use the system MAC address for any communication so it can't be retrieved through ARP/CAM tables, that's why it's trying to use the sysname to detect the neighbor device instead of it's MAC address.
Lunkwill suggested a possible solution. I would require that the bridge plugin inside ipdevpoll queried the system mac address, stored it somewhere in the database and use it for matching the lldp neighbor.
I would be happy to troubleshoot it with but I don't think I'm capable of code it myself :/.
Thanks for the great app!
Changed in nav: | |
status: | New → Confirmed |
assignee: | nobody → Morten Brekkevold (mbrekkevold) |
importance: | Undecided → Medium |
fix here: https:/ /nav.uninett. no/hg/nav/ rev/2dbbb89287e 8