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.
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 |
<?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. |
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.
cd ${OPENNMS_HOME}/bin
./send-event.pl uei.opennms.org/internal/reloadDaemonConfig --parm 'daemonName Enlinkd'