home / blog / Network Topology 5.6.0 — reading switches more cleanly: typed LLDP, management IP and a PoE budget alert

Network Topology 5.6.0 — reading switches more cleanly: typed LLDP, management IP and a PoE budget alert

The main module and all eight dashboard widgets run on Zabbix 7.0 LTS, 7.4 and 8.0. Get it: github.com/linuser/zabbix-network-topology/releases

The 5.5.27 post ended at the MAC finder and the move to Zabbix 8. A fair amount has landed since — rings, spanning-tree, per-port PoE, the VLAN view, aerial and floor-plan backgrounds, a WLAN widget — and with 5.6.0, three things that make the everyday noticeably calmer. The full list is in the changelog; here are the highlights.

The Plan view: devices on a floor plan, status right in the room Here since 5.5.27: the Plan view places devices on a floor plan or aerial image (a synthetic demo plan here) — the status sits where the device physically is.

↶ One move too many? Take it back

You arrange the map by hand — drag nodes, group things, until it reads right. And then one slip drags the wrong node and the clean arrangement is gone.

Not anymore: Ctrl/Cmd+Z undoes the last layout change, Ctrl/Cmd+Shift+Z (or Ctrl+Y) redoes it. Two toolbar buttons (↶ / ↷) do the same and grey out when there’s nothing to undo. Applying a layout is undoable too — picked a different layout and didn’t want it? One undo brings your hand-made arrangement back.

The history survives a background refresh and resets only when you really switch view (a different set of nodes). Snapshot-based, up to 60 steps, robust against nodes that appear or vanish between steps.

The toolbar with the new undo/redo buttons ↶ ↷ Move a node, ↶ lights up — one Ctrl+Z and it snaps back, with ↷ ready.

LLDP stops guessing

Two sources of wrong neighbours are gone.

The chassis-id is now typed. A neighbour reports its identifier with a subtype — MAC, network address, interface name, or just a local string. The module used to bend every identifier into a MAC and match on that; an identifier that was really an IP or a name became a made-up MAC and hit the wrong host. The template now collects lldpRemChassisIdSubtype, and the module treats each identifier as what it is — fewer wrong edges.

The neighbour’s management IP is read. Through lldpRemManAddr the module now knows the address a neighbour advertises. Two things fall out of that:

  • An unresolved neighbour whose advertised management IP belongs to a monitored host is linked to it anyway — even when the name and MAC never matched up.
  • An unmonitored neighbour (a ghost) shows its IP in the detail panel, and “create host” prefills an SNMP interface on it. “something’s hanging there” becomes a host you take into monitoring in two clicks.

A ghost node with its management IP in the detail panel and the “create host” button An unmonitored neighbour advertises its management IP — the panel shows it, “create host” carries it over as an SNMP interface.

The PoE budget finally speaks up

A switch’s faceplate used to show its PoE budget as a quiet number — 78 / 95 W, in the same muted colour at any load. You saw the value, but not that it was getting tight.

Now it shows the percentage, turns amber at ≥ 80 % and red + ⚠ at ≥ 95 %, and draws a small sparkline of the last six hours next to it — a PoE budget that was at 60 % twenty minutes ago and is now scraping 94 % is visible at a glance, not only when the next access point won’t come up.

Two switch faceplates with PoE-powered ports and the power budget The faceplate shows the PoE-powered ports (lightning) and the switch’s budget — 61 and 70 of 95 W here. At ≥ 80 % it turns amber, at ≥ 95 % red, with the six-hour trend beside it.

Fixes you’ll notice

  • Big maps render again. Wide hierarchy and hop tiers were laid out in one enormous row, the map zoomed down to sub-pixels and looked empty. Tiers now wrap, and maps with 1000+ hosts are visible.
  • CDP no longer invents edges from opaque hex. A five-byte CDP id like 01 02 03 04 05 was truncated to 01 and matched an unrelated host — a false edge, and several such ids collapsed into one phantom ghost. Fixed. (Found in the Liberamente fork by Mauro Majeroni.)
  • Shared host+hops layouts are kept. A super-admin’s shared arrangement saved in host+hops focus mode was silently discarded on load; now it survives.

🔒 Security hardening

An external code/security review (F01–F13) has been worked through — each finding reproduced first, then fixed, each fix with a test that fails without it. Among them: creating a host now also requires the Hosts configuration role right; the topology-change sender verifies TLS and keeps the password and the response out of process arguments; deploy.sh is rollback-safe; shared-config writes fail closed instead of overwriting a concurrent change with a stale copy; floor-plan background images must be HTTPS.

⬆️ Upgrade notes

  • Re-import the NT LLDP Neighbors by SNMP template (Data collection → Templates → Import, Update existing) so the typed chassis-id and management-IP items arrive. Nothing changes for devices that send neither.
  • Plan backgrounds set via URL must be https:// now — http:// URLs are rejected. Backgrounds from the Zabbix image store are unaffected.

Get it

5.6.0 is current, and the first public release since 5.5.27 — it bundles everything in between, version by version in the changelog. Upgrading within 5.5/5.6 means “swap the directory, reload once” — layouts, links, pins and notes stay where they are. Only the new LLDP data needs the template re-imported once. Releases & install →

← all posts