Enhanced Linkd

Enhanced Linkd (Enlinkd) discovers connections between nodes using data generated by various link discovery protocols and accessible via SNMP. Enlinkd gathers this data regularly and creates a snapshot of a device’s neighbors from its perspective by SNMP data collectors. Enlinkd consolidates the collected Data by Bridge Domain Discovery and Topologies Updater.

Enlinkd-Bridge Domain Discovery use the data gathered by Bridge and IpNetToMedia collectors to provide Bridge Broadcast Domain layout. The Bridge Forwarding Table provided by the single nodes displays information about the MAC address learned on which bridge port, this is what the Bridge considers a connection: this is not very useful, so Bridge Discovery performs domain calculations to assign to every MAC address the port where the device that holds it is effectively connected (or the known nearest bridge port).

Enlinkd-Updaters, for every supported discovery protocol, use the provided Topologies Update API to provide connections information to other OpenNMS service and daemon via OnmsTopologyDao. The provided topologies are used in topology-map and for sending TopologyMessage via Kafka Producer.

The connections discovered by Enlinkd collectors and by Bridge Domain Discovery are called links. The term link, within the context of Enlinkd, is not synonymous with the term "link" when used with respect to the network OSI Layer 2 domain, whereby a link only indicates a Layer 2 connection. A link in context of Enlinkd is a more abstract concept and describes any connection between two Horizon nodes. These links are discovered based on information provided by an agent’s understanding of connections at the OSI Layer 2, Layer 3, or other OSI layers.

The topologies that Enlinkd-Updaters discover are made of vertices and edges.

The following sections describe the Enlinkd daemon and its configuration. Additionally, the supported link discovery implementations are described as well as a list of the SNMP MIBs that the SNMP agents must expose for EnLinkd to gather links between nodes. You can view detailed information about a node’s connections (discovered links) and supporting link data on the node detail page within the Horizon Web UI.

Enlinkd daemon

Essentially, each Enlinkd-Collector asks each device the following question: "What is the network topology from your point of view?" The Enlinkd-Discovery process attempts to discover bridge domain links with the data coming from all collected Bridge Forwarding Tables. The Enlinkd-Updaters correlate all collected topology data to generate a global topology layout of your network.

For large environments, you can configure the behavior of Enlinkd. During the EnLink discovery process, informational and error output is logged to a global log file.

Table 1. Global log and configuration files for Enlinkd
File Description Location

enlinkd-configuration.xml

Global configuration for the daemon process

$OPENNMS_HOME/etc

enlinkd.log

Global Enlinkd log file

$OPENNMS_HOME/logs

log4j2.xml

Configuration file to set the log level for Enlinkd.

$OPENNMS_HOME/etc

Configuration file for Enlinkd
<?xml version="1.0" encoding="ISO-8859-1"?>
<enlinkd-configuration threads="5"
                     initial_sleep_time="60000"
                     rescan_interval="86400000"
                     use-cdp-discovery="true"
                     use-bridge-discovery="true"
                     use-lldp-discovery="true"
                     use-ospf-discovery="true"
                     use-isis-discovery="true"
                     topology_interval="30000"
                     bridge_topology_interval="300000"
                     max_bft="100"
                     discovery-bridge-threads="1"
                     />
If multiple protocols are enabled, the links will be discovered for each enabled discovery protocol. The topology Web UI visualizes links for each discovery protocol. For example, if you start CDP and LLDP discovery, the Web UI visualizes a CDP link and an LLDP link.
Table 2. Description for global configuration parameter
Attribute Description Default

Integer

threads

Number of parallel threads collectors, updaters, and discovery use.

5

initial_sleep_time

Time in milliseconds to wait to start collectors after Horizon is started.

60000

rescan_interval

Interval in milliseconds for collectors.

86400000

topology_interval

Interval in milliseconds for updater.

30000

bridge_topology_interval

Interval in milliseconds for discovery.

300000

max_bft

The maximum number of bridge forwarding tables (BFTs) stored in memory for discovery.

100

discovery-bridge-threads

The number of threads used for discovery.

1

Boolean

use-cdp-discovery

Enable or disable discovery based on CDP information.

true

use-bridge-discovery

Enable or disable discovery based on the bridge information.

true

use-lldp-discovery

Enable or disable discovery based on LLDP information.

true

use-ospf-discovery

Enable or disable discovery based on OSPF information.

true

use-isis-discovery

Enable or disable discovery based on IS-IS information.

true

The discovery for bridge first start is scheduled at initial_sleep_time + bridge_topology_interval. The updaters' first start is scheduled at 0L. Restart OpenNMS or just the Enlinkd daemon to apply configuration changes.

Send configuration reload event via CLI
cd ${OPENNMS_HOME}/bin
./send-event.pl uei.opennms.org/internal/reloadDaemonConfig --parm 'daemonName Enlinkd'