Topology map tries too hard to find far link end node in LLDP. It if does not find far node by "standard" unique tags (lldplink.{lldpremchassisid,lldpremchassisidsubtype}), it falls back to non-unique tag comparison (i.e. lldplink.lldpremsysname). This is bad in general.
In particular, when the remote node does not send its sysname in LLDP PDUs, it results in empty lldplink.lldpremsysname field (that's right). When, at the same time, there is even a single node with empty sysname (node.nodesysname), all such LLDP links end in it (i.e. node with empty nodesysname and lowest nodeid is picked up as adjacent node in topology map). I have seen tens of such fake LLDP links ending in a single node - the node on the picture below is actually stand-alone with respect to LLDP:
Please, remove sysname comparison from the LLDP adjacency mapping algorithm. It can not work reliably, even if there are no nodes with empty sysname. Only chassisid is meant to be unique.
Topology map tries too hard to find far link end node in LLDP. It if does not find far node by "standard" unique tags (
lldplink
.{lldpremchassisid
,lldpremchassisidsubtype
}), it falls back to non-unique tag comparison (i.e.lldplink
.lldpremsysname
). This is bad in general.In particular, when the remote node does not send its sysname in LLDP PDUs, it results in empty
lldplink
.lldpremsysname
field (that's right). When, at the same time, there is even a single node with empty sysname (node.nodesysname
), all such LLDP links end in it (i.e. node with emptynodesysname
and lowestnodeid
is picked up as adjacent node in topology map). I have seen tens of such fake LLDP links ending in a single node - the node on the picture below is actually stand-alone with respect to LLDP:Please, remove sysname comparison from the LLDP adjacency mapping algorithm. It can not work reliably, even if there are no nodes with empty sysname. Only chassisid is meant to be unique.