Skip to content
Oliver Gorwits edited this page Sep 2, 2025 · 149 revisions

Introduction

This document will list only the most significant changes with each release of Netdisco. You are recommended to read this document each time you install and upgrade.

Also see the Changes file, for more information.

Minimum PostgreSQL version

The current minimum version working with Netdisco is 9.6. We note also that version 12 is the current oldest release maintained by the PostgreSQL project.

In general, we always recommend that all users run the latest available minor release for whatever major version is in use. It will be faster and more reliable.

Migrating from Netdisco 1.x

This distribution (App::Netdisco) is a complete rewrite of the Netdisco application. Users often ask whether they can run both versions at the same time, and whether the database must be copied. Here are the guidelines for migrating from Netdisco 1.x:

  • You can share a single database between Netdisco 1.x and App::Netdisco. The deploy script for App::Netdisco will make some schema changes to the database, but they are backwards compatible.

  • You can run both Netdisco 1.x and App::Netdisco web frontends at the same time, using the same database (if safe_password_store is set to false in the config file).

  • The web frontend of Netdisco 2 will have a lot of missing data if you continue to use the cron jobs (poller) from Netdisco 1.

  • To complete migration, disable all your Netdisco 1 cron jobs. The backend daemon of Netdisco 2 replaces the cron jobs of Netdisco 1.

Netdisco 2 Notable Changes

2.088003

Revert a change in release 2.088002 which introduced a serious bug.

2.088002

This release should build more reliably on OpenSuSE.

2.088000

For users submitting arpnip or macsuck data directly to netdisco-do the -e / --extra parameter must now be used instead of -p / --port. The -e parameter also now supports data directly in the variable (in JSON format), from a local file, or from standard input.

A new neighbor_no_type setting is implemented to specify CDP/LLDP device type(s) to be ignored (globally). The neighbor relation will not be added on a port and discovery of the neighbor will not be attempted.

A new setting delete_duplicate_serials is implemented to forcibly delete any existing devices with the same serial number as a device that is currently being discovered. It is not enabled by default but might be useful in some scenarios.

The path to netdisco-do is now available as a template variable ndo in Hooks configuration, so you can more easily call netdisco-do from a Hook. This is very useful for updating Custom Fields post-discovery.

Added support for SSH transport public key authentication.

2.087001

Fixes a bug in custom_fields setting implementation where if you change the setting, the fields in Netdisco are not changed on device rediscovery.

2.086003

The SNMP Field Protection feature is updated to behave differently for new devices and existing devices, and to support rejection of SNMP::Info device class. See the configuration settings guide for details.

2.086002

This release has some minor but useful features and several bug fixes.

The Neighbors map can now show Device Custom Fields using the new netmap_custom_fields setting.

Custom Reports could already reveal bind parameters in a sidebar, but now the parameters can have default values and an HTML5 data type.

A new report "Devices missing Model or OS" is included, and Inventory entries showing "unknown" Platform or Software Release will link to this report.

On the Device Addresses tab, the IP Prefix of the layer three interface now has an icon 💻 linking to the IP Inventory Report for the subnet.

The setting snmp_field_protection has been renamed to field_protection.

Several bugs are fixed, including the Inventory "unknown" devices count always incorrectly being one, and Device Delete jobs not running if discover_only is used but the DNS entry for the device has been removed.

2.085003

A small enhancement to device searching means you now see all the serial numbers from switch stacks in search results.

2.085000

The "Netdisco" text in the web header bar can be customised with the new branding_text setting.

CLI gather from Cisco NXOS devices will have Subnets retrieved.

New setting netmap_performance_limit_max_devices sets the limit at which the network neighbors map will restrict showing "all" devices. The default is 1000 known devices.

The Inventory page will now count stacked devices individually if it can.

A bug in MakeRancidConf where the "default" group was incorrectly used (even when a default was set) has been fixed.

2.084002

Support added for Fortinet FortiOS Virtual Domains.

Non-admin users can now use the "Discover", "Arpnip", "Macsuck", and "NBTStat" buttons on a Device if you enable enable_nonadmin_actions. The nonadmin_actions list setting controls which are included.

A wider range of devices are identified as wireless access points, including especially the Cisco 9120 range.

Environment variables NETDISCO_DB_TENANT` and the standard PostgreSQL PG_* are now supported for netdisco-do and netdisco-deploy as well as the frontend and backend daemons.

2.084000

The device snapshot and SNMP Browser functionality has been rewritten to be simpler, more efficient, and more portable.

For those running a headless update and using the SNMP Browser, please run a loadmibs job after upgrading, as in the (updated) instructions.

2.083000

Moved to using a new package manager for Python dependencies, making for more reliable upgrades, but more usefully should remove the requirement for Python 3.9 to be installed on your system. Netdisco will download a version of Python for local use at installation, if needed.

2.082003

A new sshcollector for OS/10 has been added, supporting both macsuck and arpnip.

Adding only or no access control lists to the custom_fields setting or the external_links setting will show or hide the field or link in web pages, according to the ACL.

Access control lists now have time-based control using crontab-style notation.

The depth control is always shown on the neighbors network map panel.

2.082002

The feature to check a user’s permission for port control caused confusion when using netdisco-do as the user is probably simply netdisco. Adding the --force option to netdisco-do will skip user role access controls.

2.081000

For sites deploying with a Headless Update we have a new single SQL file to update device OUI and other data. This replaces manufacturers.sql and any other SQL file. See the Wiki page for details.

If Netdisco encounters an unknown device Vendor or Model, it’ll try to look up the proper name/model in a large cache of Products. The cache is maintained in the cloud, updated once per week, and downloaded when you run netdisco-deploy.

2.080003

This release fixes several bugs, including one for device renumbering to another IP address on the same device, and some web crash, custom report, and Hook bugs.

There is a new Device Inventory report as an alternative to the main Inventory.

There is ssh-collector (ARP table) support for Aruba Controllers.

2.079001

A security issue in one of Netdisco’s Python dependencies makes this a recommended upgrade. Python’s pyca/cryptography library had a vulnerable OpenSSL.

This release also brings improvements to netdisco-do show and Custom Fields.

A new snmp_object parameter is added to Device Custom Field settings. Passing any SNMP leaf name will make Netdisco retrieve data and populate the field. See the Configuration Guide for details.

Adding --quiet to netdisco-do show will cause it to emit a compact JSON representation of the data, instead of pretty printing the data structure.

There is support for Device Custom Fields to contain JSON arrays, which are rendered in the web interface as a list of items. See the Configuration Guide.

When using netdisco-do to update a Custom Field (with action cf_<fieldname>) you can pipe the field value on standard input with parameters --quiet --extra '-'. This is to support values that would cause the operating system to reject a long command-line invocation.

2.078000

This feature release adds an SSH collector implementation for Python worklets.

2.077011

This feature release includes an integration written in Python. Consequently…​

⚠️
You must have python3 installed before upgrading. Python 3.9+ is required.

Luckily the OS package for python3 is usually called python3, so go ahead and install that with your local package manager (yum, dnf, apt-get, zypper, etc).

Test it’s working with: python3 --version. Make sure you have 3.9+.

If installation fails, you can recover by running:

curl -L https://cpanmin.us/ | perl - --notest --local-lib ~/perl5 App::Netdisco@2.076006

You can also disable Python extensions by configuring enable_python_worklets: false.

2.076006

This is a bug fix release and recommended update.

2.076005

SSH-based macsuck is now added for the NX-OS Platform.

New setting thousands_separator to allow localisation of the separator used in large numbers, e.g. "1,234,567" or "1.234.567".

2.076000

Setting expire_devices can now contain a time value for named ACL groups.

Introduction of SSH-based macsuck (using the same flow as arpnip which we had for a long time), for IOS platform only.

2.075003

Node or interface MAC addresses belonging to "randomized ranges" are now reported as such for their Vendor.

2.075002

VTP Mode is gathered from Cisco devices and displayed in device details tab.

2.075001

Netdisco tracks the origin router of MAC-IP mappings (ARP table entries), and displays the reporting router in a Node search.

If you want to construct a history of Node-IP sightings, look into the seen_on_router_first and seen_on_router_last columns in the node_ip table.

2.074000

A pingsweep job and Ping Sweep functionality is added as an alternative to use of neighbor protocols (LLDP, CDP, etc). Netdisco will ping an IP prefix and set a discover job running for any address which responds.

2.073000

New settings skip_neighbors and discover_neighbors are added to control Netdisco’s automatic neighbor discovery. The latter is a global switch on neighbor discovery, the former is an ACL to suppress discovery of neighbors of some devices.

2.072000

In the API, ports now have a new endpoint port_vlans to return list of VLANs.

The vlanctl setting has been renamed to portctl_native_vlan.

The portctl_vlans setting has been deprecated - use portctl_uplinks instead.

This release has rewritten Port Control access control logic in both the web interface and the jobs running to do the work. If you use the port control features please review your configuration and test, and let us know of any issues. Many thanks.

Removed Features

The portctl_vlans setting has been removed. It claimed to prevent port up/down status change on a "VLAN trunk" port, but was actually broken.

2.071000

External Links feature has several new preset fields (including access to Custom Fields) on Device Links, and also Device Ports can now have External Links.

In this release some of the built-in reports (in the Reports menu) have been renamed or recategorised. Several new reports have also been added.

The IP Subnets report will start by showing all Subnets before you pick one.

Custom Reports with _searchable parameter will now create search links on any IPv4, IPv6, and MAC addresses anywhere in the field content.

Custom Reports can now return an SQL Array type which will be split over lines.

You can add a friendly name/alias to the Default database tenancy (displayname field under database).

2.070002

This release fixes a bug when clicking the button to empty the Job Queue then Netdisco would stop processing some kinds of jobs.

Also this release is a new setting skip_modules which is an ACL for a set of devices from which Netdisco will not gather chassis module parts (from the Entity MIB).

Also in this release a slight change of behavior in netdisco-do: it will not make as many checks on the sanity of the passed device(s), leaving that instead to the Job Action itself. Success/Error outcome will be unchanged.

2.070001

This is an essential bug fix release onto 2.070000 if you installed that.

2.070000

⚠️
The OUI update from netdisco-deploy will fail, but release 2.070001 fixes the problem. Please update. The failure will not impact general operation of Netdisco, just that you’ll not see MAC Vendor info.

This release contains a major change to how MAC address OUI information is stored and processed. The IEEE changed OUI formats from being 24-bits (of the 48-bit MAC address) to either 24, 28, or 36 bits long.

When you update Netdisco to release 2.070000 you must do an OUI update from netdisco-deploy as well as the usual DB schema update. If you work offline you can find the new format OUI data here and also read Headless Update.

If you integrate or extend Netdisco using any oui field or relation then please dig around to learn about the replacement manufacturer fields and relations instead. Feel free to open a ticket to ask for help.

2.069000

New network map features to show "neighbor cloud" or L2 hops depth (Neighbors tab on the Device view). These features are hidden if you have more than 1000 devices in your database, but that threshold is configurable.

Easily link to external web sites from Device Details tab and Node results (MAC or IP) with the external_links configuration. Links will dynamically include the relevant device or node IP or MAC address. These are set in your Netdisco configuration file and no coding is required.

The netdisco-do utility -d parameter now accepts a file name with one IP or Hostname per line.

API method has been added to show device neighbors (…​/device/:ip/neighbors).

2.068000

This release has a rewritten web job queue viewer.

2.067001

This is an essential bug fix release onto 2.067000 if you installed that.

2.067000

Beginning this release you can now add ACLs to scheduled job configuration, in order to limit a schedule instruction to a subset of devices (selected using standard ACL notation).

2.066000

This release adds a feature to compact the Inventory listing if it’s too long for you. Read the inventory_collapse_threshold configuration to find how to enable it.

In this release the Backend server will start and be ready to process jobs much more quickly, especially if you have a large installation with many devices. Only the "walk/all" jobs will not run until some initialization steps have completed in the background.

2.065001

Adds support for RADIUS timeout and VSAs. Also the RADIUS attributes h323-return-code and Digest-Attributes are no longer sent with the access request. You can of course add them back in using the new VSA support.

2.065000

Changed Behaviors

In this release the netdisco-do show command has been rewritten and the options are now changed. In particular a MIB Object (leaf) from a specific MIB can be requested, and the MIB will be loaded if needed. This is independent of the Device Class being used. Please see the documentation (run the command or run perldoc bin/netdisco-do or read online here) for details.

Also the snapshot functionality has been rewritten, partly to be more robust and efficient but also to support the import of an snmpwalk as an alternative to Netdisco’s own snapshot data. See the snapshot documentation for details.

2.064001

This is a bug fix release which will be needed if you’re seeing a lot of extra port aggregate (etherchannel, port-channel) or VLAN information in your Device Ports view.

2.064000

Netdisco now supports text "tags" on devices and device ports. With the new tags setting you define the tag name and Access Control Lists matching devices or device ports which will get that tag added at Discover time. Tags are visible in the web interface and returned in API object GET methods.

Access Control Lists can now match on "tag" names and "custom field" values.

Users with Port Control or Admin rights can now update a custom field on a device or device port through the API (see the API documentation for an example).

When a device is re-discovered (usually once a day), any custom fields which are no longer referenced in the configuration will now be removed.

2.063004

Access Control List "property:value" can now contain an IPv6 address in the "value" part. Remember this is an anchored regular expression.

2.063002

New environment variable NETDISCO_SNMP_BULKWALK_OFF does the same as the bulkwalk_off setting (that is, disables SNMP bulk walk).

Manual Topology changes are no longer available to Port Control users by default. You can use the portctl_topology setting to enable access.

Previously netdisco-do with --enqueue would not queue more than 512 jobs at once, but the new --force option overrides this.

Netdisco initial device discovery is now much faster when there are multiple SNMP community configurations to try.

2.063001

This release fixes four security vulnerabilities which were kindly highlighted by a security researcher.

The issues have a Severity rating of "Medium" and relate to the web frontend only, and specifically validation of output data causing unexpected browser behaviour. There is no risk to your stored data, servers, or network devices.

The issues have been present in Netdisco for a very long time, so it is likely you are affected and upgrade is recommended if possible.

2.063000

A new setting portctl_by_role allows Role Based Access Control on the Port Control features.

2.062005

This release fixes a bug in ACL parsing whereby the "op:and" rule would not work for "prop:value" rules. Sorry about that.

The bug created some cosmetic effects such as ports appearing on devices when they should be hidden. For this reason all users are recommended to upgrade (if you are running 2.062000 already), even if you’re not using "op:and" in ACLs.

2.062000

A major refactor of the ACL parsing and handling code in this release, to support upcoming new features and remove some confusion. Please report any apparent bugs as GitHub issues.

New Hook has been added for Device being deleted (through web, CLI, or the Expire job).

2.061001

New API endpoints for job queue management - get jobs list, delete some or all jobs, submit jobs, and get backend worker host names. See the API docs for details and examples.

2.061000

New ACL settings ignore_layers, force_macsuck, force_arpnip allow forcing Netdisco to attempt gathering MAC and IP tables from devices regardless of what the device claims to support in "Layers" (sysServices).

Any custom report with bind parameters can have a sidebar to allow users to edit or submit the parameters (in plain text fields) by adding show_sidebar.

Searching for nodes now works with FQDN which, surprisingly, was not previously the case.

2.060008

A new report showing IP addresses configured on multiple devices has been added.

A new report Recently Added Devices shows, well, the most recently added devices.

Report menu items are now alphabetically sorted.

You can now add custom Net-SNMP configuration in the net_snmp_options setting.

New environment variable NETDISCO_DB_TENANT can be used to make netdisco-do and netdisco-deploy operate on a configured tenant database.

2.060006

The Duplex field In the Device Port details web interface, CSV, and API’s JSON has been separated into configured and running fields (similar to speed).

2.060001

Netdisco now supports custom fields (or attributes) on devices and device ports. With the custom_fields setting you can add fields and control whether they are visible in the web interface and also editable in the web interface. You do not have to make any changes to the database schema for this, it is automatically managed.

The fields are returned in API object GET methods for devices and device ports within the custom_fields key. A future release will allow set/update from netdisco-do and the API.

2.060000

Incompatible Changes

You must have PostgreSQL version 9.6 or later for this release.

2.059001

From this release Netdisco will enable "layer 2" support on a device after any successful macsuck operation (overriding what the device claims to support). It has always been the case for "layer 3" after arpnip.

2.059000

API endpoints and netdisco-do option to submit arpnip and macsuck results.

For example, https://github.com/rc9000/ntcsuck is an ansible playbook to fetch MAC address tables, parse them with ntc-templates/textfsm, and store in Netdisco using the REST API.

2.058000

PortAccessEntity (802.1X NAC) attributes are collected into the database. They are not yet displayed in the web interface.

2.057008

Every macsuck, Netdisco will now update port up/down status to latest values.

Fixes an issue with the web server not auto-restarting more than once after the deployment.yml config file is edited.

2.057006

Adds Cisco Firepower support to the SSH-based ARP table collector.

2.057002

Setting macsuck_no_deviceport is renamed to macsuck_no_deviceports.

2.057000

A new setting tenant_databases allows one Netdisco web frontend to be used to access the data in multiple Netdisco databases. For example if you have network zones each with an independent poller and their own PostgreSQL database, then one web frontend can view them all.

Enabling the setting adds a menu at the right of the Netdisco web titlebar (next to the username) which can be used to switch tenancy. See the Configuration guide for further details and limitations.

A note has been added to the Configuration guide about how to enable VLAN names and hiding of VLANs 1002-1005 by default. See the sidebar_defaults section for details.

2.056000

Access Control Lists capabilities have been expanded in two ways. You can now match an empty field using the “fieldname:regexp” syntax except just write “fieldname:”. When matching device ports or interfaces you now have access to all the fields in the device_port and device_ip database tables — such as alias:, and type:.

A new setting ignore_deviceports has been added to give more expression and control over the device interfaces which Netdisco ignores. The setting is a map of ACLs to match devices with ACLs matching interfaces. As a special feature, the IP address, DNS name, and Subnet of the interface may also be matched on. See the Configuration guide for details and limitations.

A new setting hide_deviceports has been added which hides interfaces from the web view while still allowing them to be discovered. This can be used where some devices have a lot of interfaces which are potentially used but not in service at your site. You can hide the interfaces but change this configuration and show them when they become interesting. See the Configuration guide for details and limitations.

Incompatible Changes

If you are using ignore_interfaces in your config then the new acl matching code requires you to make a change: you will need to prefix every entry in your list with ´port:´ so where you might had something like

ignore_interfaces:
  - 'EOBC'
  - 'unrouted VLAN(?: \d+)?'

this now needs to be written as

ignore_interfaces:
  - 'port:EOBC'
  - 'port:unrouted VLAN(?: \d+)?'

2.055000

A new setting macsuck_no_deviceports has been added to suppress Node gathering in macsuck on specific ports of specific devices. Note that when enabled for the first time, Nodes do not disappear from the web interface - they need to expire. Immediate expiry will be addressed in a future patch.

The Port VLANs Mismatch report has been updated with more information and showing which VLANs are present only on each side.

The Node Search (by IP or MAC) layout has been updated, with descriptive text improved and colouring of latest Node sightings.

The Undiscovered Neighbors report now shows the DNS of the remote undiscovered device.

Neighbors advertising management addresses in fe80::/10 will now be discovered, previously they were suppressed.

2.054000

A new setting discover_routed_neighbors exists which defaults to true. You can disable this (false) to prevent adding routing protocol (BGP, etc) next-hops to the job queue for discovery.

A new device ports view column to show the SNMP interface index (ifIndex) is available.

A change in how the built-in DNS Stub Resolver initialises itself should improve on some missing data on some systems. Open a ticket if you see any adverse effect.

2.053007

You can now do all the SNMP browser steps from the web - no need to visit CLI to loadmibs or snapshot -e yes any more.

2.053006

If you use the SNMP Browser you must download a new netdisco-mibs bundle (as part of netdisco-deploy), then run ~/bin/netdisco-do loadmibs again.

2.053004

If you use the SNMP Browser you should run ~/bin/netdisco-do loadmibs after updating to this release.

The SNMP Browser will now show all MIB branches, not just the ones with data from the device. However it will now colour branches and leaves to show you where there is data.

2.053003

The workflow for API authentication (Bearer) tokens has changed slightly. If you try to Login and an existing token is still valid, that current token will be returned to you and the timer for api_token_lifetime will be restarted.

2.053002

SNMP browser is a LOT faster since this release.

For the two new Device Ports view options (VLAN names and hiding VLAN 1002-1005) you can switch them on all the time using configuration in deployment.yml:

sidebar_defaults:
  device_ports:
    p_vlan_names: { default: checked }
    p_hide1002:   { default: checked }

The Port VLAN Mismatch report also respects this option to hide VLAN 1002-1005.

2.053001

Added FortiOS SSH collector for arpnip.

2.053000

New option in Device Ports view to hide VLANs 1002-1005.

Cisco VLAN subinterfaces are now shown in the Device Ports view related to their parent physical interface, similar to how aggregated links are shown.

2.052011

The order of the Device Ports columns has changed. Take note if you use CSV download.

2.052010

The web feature to renumber a device is now named "Change IP" on the button. This feature also now offers all existing device interface IPs as renumber targets as well as allowing entry of a new IP.

The IP Inventory Report has a separate column for NetBIOS name. Previously the NetBIOS name was put into the DNS column (hiding the FQDN), arguably wrong.

2.052009

New option in Device Ports view to show VLAN names instead of numbers.

New feature to renumber devices through the web, found under Device Details.

VLANs 1002-1005 are ignored in the Port VLAN Mismatch report.

Device Ports options Inventory Data and Detailed Inventory are renamed to be Remote Inventory and Remote Advertisement respectively.

Also several bug fixes.

2.052008

A new netdisco-do action addpseudodevice to add a Pseudo Device at the command line, for example:

~/bin/netdisco-do addpseudodevice -d 192.0.2.1 -e fakerouter -p 10

2.052007

This release will now also check macsuck_unsupported config to avoid unnecessary macsuck jobs.

When Netdisco knows it is not permitted to poll a device, a new 'Neighbor Forbidden' icon is shown in the Device Ports view. This is most commonly used for discover_waps and/or discover_phones config.

2.052006

This release adds a new SSH Collector target for Aruba devices.

2.052000

This release adds a new SSH Collector target for ASA devices which can use Contexts to retrieve ARP tables from each virtual router running on the ASA.

To make use of the new Collector, change your platform from ASA to ASAContext and let the developers know if it works! (then the old ASA platform can be retired.)

2.051000

This release brings many improvements to pseudo devices. You can now set various fields such as the location and contact, and port descriptions.

Also in this release, a new feature to gather a complete SNMP Walk of a device. Use this to share with developers for feature improvements, or browse the SNMP data in your Netdisco web interface, or assign to a pseudo device:

2.050000

This release sees the end of support for Internet Explorer. MS Edge browser is still supported, however.

Several users reported a problem with empty content in the browser when searching for devices and running reports. This should be fixed, now.

A new configuration setting ignore_interface_types has been added.

2.049006

Containerised deployments into Heroku are now possible, as the PORT environment variable is respected by netdisco-web.

2.049004

Fix a bug where port_control_reasons settings was merged with the default instead of than replacing it.

Fix a bug where some failing jobs returned info status instead of error status and consequently did not properly report errors back to the user.

2.049002

New ACLs portctl_no and portctl_only for limiting the devices on which Port Control will be permitted. If using them, you are advised to configure on both web frontend and poller backend for the most consistent user experience.

New setting portctl_nowaps similar to portctl_nophones to prevent Port Control actions on ports connected to wireless APs. If using it, you are advised to configure on both web frontend and poller backend for the most consistent user experience.

2.048000

This release bundles the essential RADIUS dictionary files so you no longer need to install them yourself.

The SNMP Chassis ID is gathered (usually only for Cisco devices, it is a writeable field a bit like location). The Chassis ID is shown in the Device Details tab, and is also searchable.

The dns→no configuration is now globally respected and will suppress all lookups from Netdisco for the given IP prefixes.

2.047006

This release requires Session::Storage::Secure 1.00 or higher. This could mean that users need to log into the web interface again, session cookies could be invalid.

2.047002

Hooks feature has been enhanced with new arpnip and macsuck events, and a new exec action which can run any shell command.

2.047000

This release implements Hooks, which allow you to perform custom actions after some Events happen within Netdisco’s polling engine. For example you can call the web API of another management software after discovering a new Device.

See the Hooks documentation for hook event and type details.

2.046006

This release handles better UTF-8 names in the OUI data.

2.046003

This release implements configurable log file rotation using new --logfiles=8 and --logsize=10 (MB) options to netdisco-backend and netdisco-web.

Also several bug fixes.

2.046002

This release speeds up some web pages in Netdisco.

2.046001

This release adds support for having multiple RADIUS and TACACS+ servers when configuration for user authentication.

2.046000

This release fixes some major bugs and also implements a protection against partial SNMP data retrievals in some circumstances.

  • The SNMP Engine ID is now stored in the Device table

  • The API Node Search was completely broken, and is now fixed

  • If a device returns SNMP Interfaces that look suspiciously like they are bare Index values and not Names, the discover job is aborted.

Changed Behaviors

If a device returns an empty Serial Number when it has previously returned a value, the discover job is aborted.

General notices

The IEEE OUI data has been updated, so please refresh this when you run netdisco-deploy.

2.045002

This release adds a web API for the first time to Netdisco. It provides read-only access to data, searching, and report results, including your own custom reports (automatically). See https://github.com/netdisco/netdisco/wiki/API for the exciting details.

As usual, run the netdisco-deploy script, as a minor database schema change will be required for this release.

Several important bug fixes have been shipped since 2.044000 so upgrade is recommended. Also there are a few nice improvements to several features. See the Changelog for further details.

2.044000

This is an important bug and security fix release. It is highly recommended for all to upgrade.

2.043000

This release brings a few nice feature modifications, especially relating to pseudo devices and Netdisco’s old sshcollector script.

Incompatible Changes

The minimum PostgreSQL version required has been raised from 8.4 to 9.4. This is not enforced by Netdisco, but a few queries in now use newer SQL features and so will fail. PostgreSQL 8.4 ceased upstream support in July 2014 (six years ago) and we hope that all sites are able to use 9.4 (released December 2014) or newer. You will find considerable speed improvements anyway, if you upgrade.

Changed Behaviors

Pseudo Devices

Pseudo Devices (created via the Admin menu) can now have their Location and Contact fields set (in the Device Details tab), and also have Layer 3 Services enabled (in the Admin menu) which allows CLI/SSH based ARP collection.

Following from that, if you’re migrating from the old sshcollector script, you MUST have each target device known to Netdisco, either as a full device with SNMP support, or a Pseudo Device with Layer 3 Services enabled.

Domain Suffixes

Netdisco now supports multiple Domain Suffixes by the domain_suffix setting. It takes a list of strings, or Regular Expressions. See the configuration documentation for an example.

it’s advised to change this to a list instead of a single item in your deployment.yml. if you don’t this will be done on config load for you, so this change will not break your current config.

RADIUS Authentication

Simple support for RADIUS authentication is now included for User login. It works similarly to the existing LDAP support, in that all users must still exist in Netdisco and have the RADIUS setting enabled. See the configuration guide for an example.

General notices

The Free Ports feature (there is a Device Report, and also a search filter in the Device Ports tab) now works even if the device has rebooted within the time you specify to the Free Ports request (defaults to three months). This works by looking at the last time a Node (end device) was seen on the port.

Many other small fixes and enhancements - see the Changelog for details.

2.042009

General notices

Job activity is no longer shown by default in the web interface. Enable check_userlog if you need this.

2.042007

You can now pass multiple devices (-d) to netdisco-do.

2.042006

This release stops netdisco-rancid-export from running in the default config. Use the makerancidconf worker instead.

2.042005

This release will clean up manual topology when ports no longer exist.

2.042002

This release has some important bug fixes for sites using the sshcollector.

Also useful is the added ability to arpnip a Pseudo Device. This is used by some sites with the SSH Arpnip feature of sshcollector where there is no SNMP service at all on the device, but an ARP table is still gathered.

Create your target in Netdisco as a Pseudo Device (under the Admin web menu) and then you will be able to arpnip against it.

2.041002

In this release, the device_auth configuration will now take precedence over (and replace) the snmp_auth setting.

In fact, device_auth is simply a new name for snmp_auth, to better reflect its use, but we have encountered user installations with (accidentally) both configured.

It’s probably best to use only device_auth and to remove any sshcollector, community, community_rw, and snmp_auth settings from your configuration.

2.041001

This release fixes a regression bug which prevented port control from working.

2.041000

This is a significant point release with two exciting new features. No action is necessary on your part, but please do read this section as we have one incompatible change to note.

The get_community configuration setting has been renamed to get_credentials and now allows you to pass any device_auth stanza (or a list of them) in JSON format. You could use this feature to provide SNMPv3, or SSH transport configuration.

The netdisco-sshcollector script is deprecated, as its functionality has been incorporated into the core of Netdisco (as part of the arpnip scheduled job). Notably:

  • The cron task is no longer required, and will silently exit with success if still run.

  • The sshcollector configuration in deployment.yml can still be used by Netdisco, but you should migrate it to device_auth configuration by reading the deprecation notice.

Incompatible Changes

netdisco-sshcollector had Strict Host Key Checking disabled. This is not a best practice and should be avoided, but if you relied on it, the deprecation notice will explain how to re-enable this behaviour.

2.040004

The SNMP interface index number is now stored in the Device Port Properties table of the database, to help those wishing to integrate with other software.

General notices

This release fixes some confusion over the discover_no_type setting since we started to use LLDP capabilities in determining device type (phone, AP, etc).

Users of the discover_no_type setting should consider removing their configuration and instead using discover_waps and discover_phones. See the Configuration Guide for further details.

Incompatible Changes

Simply matching (?i)(?:wap|wireless) or (?i)phone in discover_no_type will probably no longer work.

2.040003

netdisco-do show has had a slight change in the supported -e syntax.

Incompatible Changes

makerancidconf had a major overhaul; defaults have been changed and options were added. See the user manual for details.

2.040000

netdisco-sshcollector has received additional commandline options.

2.039032

This release will now start expiring the userlog. Behaviour is controlled with the expire_userlog setting.

Also, netdisco-deploy no longer accepts blank admin passwords.

2.039031

This release fixes a bug in the job queue picker which can result in backend workers becoming tied up with jobs they cannot complete. Upgrade is strongly recommended for all installations.

2.039015

A bug fix in the network diagram component in this release will result in the loss of link speeds in the display until a discover job is run for all devices. You can either wait a day for this to happen, or trigger discoverall from the CLI or Admin menu.

2.039012

In this release we gather and display additional inventory information about connected nodes and devices. This allows smarter signing of Phone and Wireless AP existence on device ports. You may need to force-reload the Device Ports page to load the new sidebar, and/or click the "reset to defaults" icon to enable display of inventory data.

2.039011

This release harmonises the behaviour of netdisco-do and the scheduler so they can accept the same requests. netdisco-do is also now able to send jobs to the queue rather than execute them immediately, and also to suppress logs, for better compatibility with crontab users. For example:

schedule:
  # standard schedule
  macsuck:
    when: 20 * * * *
  # duplicate that action for increased frequency for a specific device
  macsuck_specific:
    action: macsuck
    when: 15,45 * * * *
    device: 192.0.2.1
  # run a specific stage of an action
  refresh_neighbors:
    action: 'discover::neighbors'
    when: 20 8,11,14,17 * * *
  # limit action to an IP prefix
  arpnip_specific:
    action: arpnip
    when: 25 * * * *
    device: 192.0.2.0/29
netdisco-do discover -d 192.0.2.0/24 --enqueue --quiet

2.039003

The timeout setting which appeared in version 2.039000 has moved to within the workers configuration setting (rather than being global). For example:

workers:
  timeout: 1200 # 20 minutes

Futhermore, the nbtstat_timeout setting is renamed to nbtstat_response_timeout.

Previously when the backend daemon was restarted, Netdisco reset its count of SNMP connect failures to each device. You will recall this is used to stop the backend trying to connect after many failed attempts (default 10). With this release, the count is not reset, but decremented by one, saving a lot of time and effort and allowing you to edit deployment.yml and restore connectivity to a device if needed.

2.039000

All actions (jobs) now have a default timeout of 10 minutes. After this time the job will abort with an error status. You can change this with the new timeout setting (default 600 seconds), which can also be set to zero to disable the feature. For any specific action you can also set “<actionname>_timeout” (e.g. macsuck_timeout).

As well as autodiscovering devices on your network using layer two discovery protocols, Netdisco will now optimistically try to discover routing peers for the protocols BGP and OSPF. This should help discover WAN topologies more easily.

There is a new replacement for the netdisco-rancid-export script. Instead, you can run the makerancidconf worker within your backend schedule. See the documentation for further details.

The IP archiving behaviour of Netdisco 2 has until now been accidentally different to that in Netdisco 1. This has now been fixed. See the new “expire_nodeip_freshness” configuration setting if you wish to retain the behaviour of Netdisco 2. As a consequence of this fix you may notice some values in your statistics table reducing.

As always, you are advised to take a backup of your database regularly and especially before upgrade, as we cannot unfortunately anticipate all bugs.

2.038006

This release introduces the jobs_stale_after setting which allows the backend manager to assume jobs are stale and duplicates can be started. The default is 50 minutes (configured as a number of seconds: 3000).

2.038003

This is a bug fix release that addresses a longstanding issue with the expiry job - it was not removing all records that it should have from the database. As a consequence of this fix you may notice some values in your statistics table reducing.

As always, you are advised to take a backup of your database regularly and especially before upgrade, as we cannot unfortunately anticipate all bugs.

2.038000

This release introduces a new device neighbors map visualisation. You are advised to read the User Guide and to configure the host_group and host_group_displaynames settings to get maximum benefit.

Feedback and suggestions on the new neighbors map are very welcome 😀.

2.037004

This is a bug fix release, and includes better support for customising the job schedule configuration. As mentioned below, you can disable the scheduler by setting schedule: null in your configuration. Your own configuration is merged with Netdisco’s default, so you always get discoverall, macwalk, arpwalk, and nbtwalk jobs. If you wish to disable any of these, assign them the null value, for example:

schedule:
  nbtwalk: null

2.037000

This is a major point release bringing a rewrite of the core of the backend poller daemon. The only action you may wish to take as a result, is to comment out the schedule configuration in your deployment.yml configuration file, if you are using the default settings. This will ensure you always get the "best" schedule configuration including new features/actions.

To disable job scheduling but still run a backend poller (to handle jobs queued by another daemon, or from the web user interface), then use this configuration:

schedule: null

Other improvements in this release include rewriting the sidebar settings handling in the web front end, so they are remembered properly (in the Device Ports page). Also we have rewritten the job queue to further eliminate race conditions and duplicate devices leaking into your setup.

2.036002

This is a bug fix release since 2.036000. Please also read the 2.036000 release notes below, in full. Notable changes:

  • Device Port report is much faster when displaying nodes

  • netdisco-do psql now supports NETDISCO_DBNAME environment variable

  • snmp_auth configuration now supports only and no ACLs per stanza

  • New Duplicate Devices Report in case you get these appearing

  • Neighbor L2 topology map will show sysName if DNS is not available

  • Speed up ACLs featuring regualr expressions

Plus lots more mentioned in the Changes file.

2.036000

This release has many significant new features and changes. Please read all the release notes before upgrading.

  • A new setting host_groups allows for creating named Access Control Lists which can be referred to in other host groups or in any of the settings taking an ACL.

  • The new setting device_identity allows configuring rules to select the interface to use as a canonical (friendly) identity of a device in Netdisco.

  • The new settings devices_no and devices_only are shorthand for setting discover_*, macsuck_*, arpnip_*, and nbtstat_* at once.

  • Netdisco now tracks SNMP connect failures and after 10 failed attempts will pause trying to connect, for one week (see the max_deferrals and retry_after settings). See also the "SNMP Connect Failures" admin report.

  • Documentation and support for access control lists has been overhauled. Most “*_no”, “*_only”, and “only” settings will accept ACLs as single items or lists. ACLs now support negation and OR/AND modifier options.

  • A new setting site_local_files is a shorthand for confguring paths in which to install local Perl, template, javascript, and images files for overriding or enhancing Netdisco.

  • The topology import script (nd-import-topology) will now queue a "discover" job for each new device it imports.

  • The netdisco-daemon and netdisco-daemon-fg scripts have been renamed to netdisco-backend and netdisco-backend-fg respectively.

The old commands will still work but we recommend packagers to use the new names to remain consistent with documentation. Run the following on upgrade:

ln -s ~/perl5/bin/{localenv,netdisco-*} ~/bin/
~/bin/netdisco-daemon stop
~/bin/netdisco-backend restart
  • SSL library headers are required to build Netdisco now that we retrieve support files via HTTPS.

On Ubuntu/Debian:

root:~# apt-get install libssl-dev

On Fedora/Red-Hat:

root:~# yum install openssl-devel

On BSD these headers are usually installed with the openssl port itself.

Netdisco will otherwise fail to upgrade/install (it will fail building IO::Socket::SSL or Net::SSLeay). If you get stuck or confused, you are looking for the package including the file openssl/err.h.

2.034000

This release changes the way the application tracks web sessions for logged-in users, from on-disk files, to encrypted browser cookies. As a result, on upgrade (after running netdisco-deploy and restarting netdisco-web), all users will need to log in again.

There may be a pause after restarting netdisco-web as old web session files on disk are purged.

2.032003

The algorithm for selecting the canonical IP/name of a device has changed in this release. No longer is the OSPF Router ID taken into account. The default IP/name of a device will be either the IP specified for manual discovery, or the IP reported to a neighbor port during automatic discovery. For the latter you can often influence this through device configuration (LLDP advertise…​).

2.032000

The identification of IP Phone hansets and Wireless APs is now configurable, using the CDP/LLDP information from the device. See documentation for:

phone_capabilities
phone_platforms
wap_capabilities
wap_platforms

2.031006

When displaying device ports, Netdisco will now avoid showing VLAN Membership if it looks like there are a large number of VLANs on many ports. This is an average of the VLANs per port, configurable in devport_vlan_limit. The default is 150.

2.031005

The netdisco-do command’s delete option now uses the -p parameter to set node archive mode (previously it was a hack on -e). For example:

~/bin/netdisco-do delete -d 192.0.2.1 -e 'older than the sun' -p yes

2.031003

Health Advice

This release will once again remove from the database spurious Node (workstation, printer, etc) entries on vlan 0, which were causing dupliate entries in the web interface. We advise that you back up the database prior to upgrade:

/usr/bin/pg_dump -F c --create -f netdisco-pgsql.dump netdisco

General Notices

The database schema can be fully redeployed (even over an existing installation, in a safe way) using the following command:

~/bin/netdisco-db-deploy --redeploy-all

2.031002

Netdisco web and backend daemons will now rotate their log files (“\~/logs/netdisco-{web,daemon}.log”). This happens when they reach about 10MB in size and seven historical log files will be maintained in the same directory. The first time this happens you may notice the daemons restarting due to having to deal with the large initial logfile.

Two missing features from Netdisco 1 have been implemented: CLI device delete and renumber (canonical IP change). They are available using the netdisco-do utility.

The Device Port Log comment feature from 2.030000 has been disabled as it is incomplete, pending a review of how to handle authorization to the feature.

2.029014

The node archiving behaviour of Netdisco 2 has until now been accidentally different to that in Netdisco 1. This has now been fixed. See the new “node_freshness” configuration setting if you wish to revert or tune this behaviour.

2.029010

When upgrading you will encounter a current incompatibility between Netdisco and one of its components. To work around this, issue the following command:

~/bin/localenv cpanm --notest --force Dancer@1.3126 DBIx::Class@0.08270

2.029008

When upgrading you will encounter a current incompatibility between Netdisco and one of its components. To work around this, issue the following command:

~/bin/localenv cpanm --notest --force Dancer@1.3126

2.029002

The backend polling daemon has been rewritten and as a result your configuration can be simplified. Some keys have also been renamed. Our advice is to remove (or comment out) the complete workers configuration which enables auto-tuning. If you do wish to control the number of worker processes, follow this pattern:

workers:
  tasks: 'AUTO * 2'  # this is the default, twice the number of CPUs

2.029001

Health Advice

This release will remove from the database spurious Node (workstation, printer, etc) entries on vlan 0, which were causing dupliate entries in the web interface. We advise that you back up the database prior to upgrade:

/usr/bin/pg_dump -F c --create -f netdisco-pgsql.dump netdisco

General Notices

The configuration item reports is now a list (used to be a dictionary). Each item in the list must have a tag entry which was previously the dictionary key. For example, now use:

reports:
  - tag: power_inventory
    category: Device
    label: 'Power Supply Inventory'
    columns:
      - {name: 'Name'}
      - {ps1_type: 'PS1 Type'}
      - {ps1_status: 'PS1 Status'}
    query: |
      SELECT d.name, d.ps1_type, d.ps1_status
        FROM device d
        WHERE d.ps1_type IS NOT NULL
      ORDER BY name

Old configuration will be continue to work, but we recommend you reconfigure anyway.

2.028000

Incompatible Changes

The daemons can be started from init scripts, as root. They will drop back from the root user to netdisco before opening logs. However a limitation is that the web frontend might temporarily keep root status to bind to a specific port (e.g. 80) - the logs will then be created as root user. Sorry about that.

You might also find when upgrading that previous logs were owned by root and Netdisco now wants to write to them as non-root (netdisco) user. Please either remove the logs before restarting, or alter their ownership.

Logs can be found in the logs subdirectory of Netdisco’s home area.

General Notices

The configuration item housekeeping has been renamed to schedule. Old configuration will continue to work, but we recommend you now rename this key in your configuration anyway.

2.025001

The Web and Backend daemons (netdisco-web and netdisco-daemon respectively) will now watch your deployment.yml configuration file, and restart themselves whenever it is changed.

The Web and Backend daemons will also now drop privilege to the same user and group as their files on disk. This allows use of run control (init) scripts whilst maintaining non-root privilege status (see install tips for details).

The housekeeping task expiry has been renamed to expire. Old configuration will continue to work, but we recommend you rename this part of your housekeeping configuration anyway.

2.023000

Incompatible Changes

This release will automatically migrate user passwords to have stronger hashing in the database (a good thing!). This is incompatible with Netdisco 1.x web frontend, so if you must maintain backward-compatibility, set the following in your deployment.yml file:

safe_password_store: false

General Notices

The number of parallel DNS queries running during node discovery has been reduced to 10 for maximum safety, but resulting in lower macsuck performance. If you have a robust DNS infrastructure, you can probably put it back up to something like 50 or 100:

dns:
 max_outstanding: 100

2.021000

Incompatible Changes

SNMP community strings provided in the community_rw configuration setting will no longer be used for read actions on a device (despite having “rw” in the setting name).

If you have the same community string for read and write access, then you must set both community and community_rw in your deployment.yml file. In any case, we recommend using the new snmp_auth configuration format which supercedes both these settings.

Health Advice

This release includes support for Device and Node expiry from your database. This is an important part of housekeeping for your installation, and our recommendation is to enable this feature such that suitably old Devices and Nodes are expired nightly.

Add the following to your “housekeeping” configuration in deployment.yml, to have a nightly check at 11:20pm:

housekeeping:
  expire:
    when: '20 23 * * *'

You should also configure one or more of expire_devices, expire_nodes, and expire_nodes_archive to a number of days. See the documentation for further details.

General Notices

If you use an Apache reverse proxy, we recomment increasing the timeout from our previous example of 5 seconds to, perhaps 60. This is because some reports do take more time to run their queries on the database. See documentation for details.

2.020000

If you were using the X::Observium plugin, you’ll now need to install the separate distribution https://metacpan.org/pod/App::NetdiscoX::Web::Plugin::Observium.

2.019000

This release fixes a number of issues with the poller, and is a recommended upgrade.

During Arpnip, Node IPs are resolved to DNS names in parallel. See the dns configuration option for details. Note that the nodenames configuration items from release 2.018000 are no longer available.

This release includes new support for SNMPv3 via the snmp_auth configuration option. Please provide feedback to the developers on your experience.

2.018000

The previous mentioned bug in Macsuck is now fixed.

2.017000

There is a bug in Macsuck whereby in rare circumstances some invalid SQL is generated. The root cause is known but we want to take more time to get the fix right. It should only be a few more days.

The no_port_control configuration setting is now called check_userlog and its logic is inverted. Don’t worry if this is not familiar to you - the option is only used by Netdisco Developers.

2.016000

The dangerous action log messages are now saved to the database. In a future version there will be a way to display them in the web interface.

2.015000

Some of the "dangerous action" confirmation dialogs offer to take a log message (e.g. Port Control, Device Delete). Currently the log messages are not saved. This feature will be added in the next release.

2.014000

The backend poller daemon is now considered stable. You can uncomment the housekeeping section of the example configuration and thereby enable regular device (re-)discovery, arpnip and macsuck.

2.013000

You can now configure LDAP authentication for users.

2.012000

The read-write SNMP community is now stored in the database, when used for the first time on a device. If you don’t want the web frontend to be able to access this, you need to:

  • Have separate deployment.yml files for web frontend and daemon, such that only the daemon config contains any community strings.

  • Use separate PostgreSQL users for web frontend and daemon, such that the web frontend user cannot SELECT from the community DB table.

2.011000

Users can be managed through the web interface (by admins only).

2.010000

You can now simplify database configuration to just the following, instead of the more verbose plugins/DBIC setting which was there before:

database:
  name: 'netdisco'
  host: 'localhost'
  user: 'someuser'
  pass: 'somepass'

Also, the REMOTE_USER environment variable and X-REMOTE_USER HTTP Header are now supported for delegating authentication to another web server. See the Deployment and Configuration documentation for further details.

2.008000

Health Advice

This release contains the first version of our new poller, which handles device and node discovery. Please make sure to backup any existing Netdisco database before trying it out.

General Notices

You can remove any settings from ~/environments/deployment.yml which you didn’t edit or add to the file yourself. All defaults are now properly embedded within the application. See the new deployment.yml sample which ships with this distribution for an example.

2.006000

Incompatible Changes

The default environment configuration file development.yml has been renamed to deployment.yml. This better reflects that users are not developers, and also fits with the default for PSGI compatible cloud deployment services.

Please rename or copy your environment file:

mv ~/environments/development.yml ~/environments/deployment.yml

General Notices

The installation is now relocatable outside of a user’s home directory by setting the NETDISCO_HOME environment variable. This defaults to your own home directory.

Clone this wiki locally