Skip to content

0.13.0

Choose a tag to compare

@dsmorgan dsmorgan released this 09 Sep 03:53
· 31 commits to main since this release

Added

  • Routed view: networks-as-lanes layout (default; the vertical rails
    chip turns the same drawing on its side). VLANs are horizontal lanes
    reading edge → internet, left to right: lane labels with subnets in a
    left gutter, loose single-homed chips at the edge, one logical
    wireless container holding every AP's clients (per-AP attribution in
    tooltips), hypervisor slabs spanning their lanes with tenants inside,
    the router spanning everything it routes, and the internet cloud plus
    tunnels at the far right. Height is fixed by network count, width grows
    with devices — landscape-native, made to read at a distance.
  • Routed view: one virtualization box. All hypervisors fold into a
    single box — the wireless container's sibling — named after the vSphere
    server when the guest-aware collector owns a hypervisor row. The routed
    view is logical, so which physical host a VM runs on becomes tooltip
    detail, and a router that runs as a guest draws inside the box.
  • Routed view: one renderer, two axes. The vertical-rails view is the
    lanes drawing turned upright — same containers, boxes, chips, and
    rules, edge at the bottom and the internet at the top — instead of the
    earlier tiered layout. Lanes sit tighter, multi-homed
    hosts share a column when their spans don't overlap, and VPN tunnels
    sit beside the internet cloud so the transport leaves the router
    straight from its edge. The viewBox hugs the drawing, so fit means
    the whole map.
  • Routed view: click focuses, a page is the secondary action. A plain
    click on a network, host, box, or router now focuses it in place —
    highlight what's attached, dim the rest, focus= in the URL — and a
    second click or a click on the background clears it. Double-click opens
    the thing's page; ⌘/Ctrl-click or middle-click opens it in a new tab.
    Navigating away on a plain click felt like falling through the map.
  • Routed view: the shell's last-polled indicator and auto-refresh, which
    every other page already had.
  • Routed view: Evidence mode, and with it the segmented view control
    from ADR-0002 Decision 3. Each lane takes the color of its strongest
    reporter — a firewall interface (it routes it), a switch carrying the
    VLAN, the controller, a hypervisor port group, IPAM alone (dashed:
    documented, nothing carries it), a route learned through a tunnel —
    the tag carries a badge per reporter, and everything attached goes
    quiet. view=evidence in the URL. Load, Protocol, multi-router sites,
    and snapshot embedding are tracked in #50; ADR-0002 carries an
    amendment recording the lanes-era decisions. The "still settling"
    banner is gone.

Fixed

  • Powered-off VMs and down devices no longer count on the routed view.
    A VM that is off still has legs on paper (its port group VLAN, a
    documented address, a cached guest IP) and was counted in the VM chips;
    now only active devices count, unknown status still counts, and the
    virtualization box lists the sleeping guests in its tooltip. The
    builder gained scenario tests for typical sites — ARP-only flat
    networks, IPv6-only sightings, ARP plus learned-VLAN fusion without
    IPAM, mixed-case MACs, addresses outside every network, wireless
    clients across APs, an empty database, and a router with no addresses.
  • Merging a re-duplicated device no longer drops its addresses. A
    device LibreNMS re-creates under its FQDN every poll merged into the
    fresher row, and colliding port rows on the older duplicate were
    discarded wholesale — so the firewall's interface addresses (which only
    the firewall collector writes) vanished whenever that collector was
    skipped or failed, and with them the routed view's gateway exclusion,
    which let dnsmasq's "gateway" ARP rows draw as a phantom host spanning
    every network. Identity facts (ip, ip6, mac, description, ifindex) now
    fill the primary's gaps whatever their age; liveness (status, speed,
    rates) still follows the fresher row. Separately, an ARP or IPAM row
    carrying a MAC some device's interface owns is that device, never a
    host, whatever name the address wears.

Changed

  • IPAM is identity, never liveness. phpIPAM no longer writes endpoint
    rows (it re-stamped last_seen every poll, so documented-but-gone
    hosts never aged out and ghost hosts haunted the routed view); it now
    only lends hostnames to endpoints real observers saw, and legacy
    doc-rows are retired on the next poll. On the routed view, IPAM
    addresses matching an observed host add "ipam" legs — including
    networks nothing can observe, like an isolated storage VLAN — but IPAM
    alone never draws a host. UniFi clears stale AP attribution for
    clients gone from the controller's station list, so ex-wireless hosts
    stop counting as clients. A tunnel route whose destination contains
    local networks (WireGuard allowed-ips for the home supernet) is the
    tunnel's source side: named on hover, never drawn as a network.
  • Switch MAC tables discover hosts, but a bare MAC is not a host. A
    MAC learned on a pure access port counts as a sighting on that port's
    VLAN (trunks and mirror destinations excluded), named by its hostname
    or, failing that, its address from any endpoint or IPAM row — a
    WAN-side neighbor with an address outside every documented subnet
    shows as that address. A MAC with neither is usually a bond member or
    kernel port of a host already drawn, so it is counted in the lane's
    tooltip and never listed as a host.
  • The switch MAC table keeps the VLAN a MAC was learned in. LibreNMS
    reports it per entry (platforms that don't leave it 0), and fdb rows
    are now keyed by it, so a trunked host — a storage box with a VLAN
    interface per network on one 10G port — is placed on every network it
    talks in, from real switch evidence, no alias needed. Legs name the
    address that belongs on that network, and a second address on the
    same network (bond plus trunk sub-interface on mgmt) rides the leg in
    the tooltip. Databases from before the change migrate in place.
  • Guests are placed by what ARP saw their NICs do. A VM's collector
    reports NIC MACs but no guest addresses, and an untagged port group
    never reaches the VLAN tags, so a two-NIC guest drew as single-homed.
    A device's NIC seen by ARP (or documented in IPAM) with an address is
    now a leg on that address's network; mgmt_ip is the last resort.
    Routers still claim networks from their own interface config only.
  • phpIPAM lends names by exact address first, MAC second. One NIC can
    carry several documented addresses; matching by MAC alone handed the
    wrong row's name to whichever came first. Names an earlier MAC-only
    lend got wrong are corrected on the next poll.