BMP Persisting Adapter

The BMP Persisting adapter persists OpenBMP messages received without the need for any additional OpenBMP components. It handles BMP messages the BMP Parser receives and parses, and creates OpenBMP-compatible messages, which are then persisted in OpenNMS Postgres DB.

Facts

Class Name

org.opennms.netmgt.telemetry.protocols.bmp.adapter.BmpPersistingAdapter

Stats and retrieving data from external data for rpki/routeinfo/asinfo are handled only on Horizon. The opennms-telemetry-bmp-stats feature needs to be installed on Horizon.

BMP Stats are stored as time series data in Postgres with TimescaleDB extension. TimescaleDB 2.x extension installation instructions. For opennms schema, TimescaleDB extension can be added with -t option on install DB script(for example, $OPENNMS_HOME/bin/install -dist). If the TimescaleDB extension is not installed, stat tables will not be converted to hypertables.

To load the adapter while Horizon is running, use the following command in the Karaf shell.

feature:install opennms-telemetry-bmp-stats

To ensure that the feature continues to be installed on subsequent restarts, add opennms-telemetry-bmp-stats to a file in featuresBoot.d:

echo "opennms-telemetry-bmp-stats" | sudo tee ${OPENNMS_HOME}/etc/featuresBoot.d/telemetry-bmp.boot

Configuration BMP persistence for external sources

You can configure the following parameters when connecting to external sources like RPKI or RouteInfo DB tables.

Name Description Default

rpkiUrl

Rest API URL to retrieve RPKI ROAs.

http://localhost:8080/api/export.json

rpkiUsername

Username for RPKI Rest API.

rpkiPassword

Password for RPKI Rest API.

routeInfoDbPath

Path for RouteInfo DB tables.

${karaf.etc}/routeinfo

Configure the above parameters as follows on the core via Karaf:

config:edit org.opennms.features.telemetry.protocols.bmp.adapter.persist
config:property-set rpkiUrl http://localhost:8080/api/export.json
config:update

Run BMP Adapter on Sentinel

BMP Persisting Adapter can also run on Sentinel. Sentinel must start the appropriate BMP adapter. In Sentinel, adapters are configured either by placing a .cfg file in ${SENTINEL_HOME}/etc or via a config:edit statement.

The following example configures the consumption of BMP messages and saves the configuration in ${SENTINEL_HOME}/etc/org.opennms.features.telemetry.adapters-bmp.cfg.

First, login to the Karaf Shell.

$ ssh -p 8301 admin@localhost
config:edit --alias BMP --factory org.opennms.features.telemetry.adapters
config:property-set name BMP
config:property-set adapters.0.name BMP-Persisting-Adapter
config:property-set adapters.0.class-name org.opennms.netmgt.telemetry.protocols.bmp.adapter.BmpPersistingAdapter
config:update

Install the following features via Karaf shell to start processing BMP messages on Sentinel.

feature:install sentinel-core
feature:install sentinel-persistence (1)
feature:install sentinel-jms (2)
feature:install sentinel-blobstore-noop
feature:install sentinel-jsonstore-postgres
feature:install sentinel-telemetry-bmp-persist
1 Needs datasource configuration setup per Sentinel Flow Processing.
2 Can alternatively be set to sentinel-kafka based on your selected message broker. Refer to Sentinel Kafka Configuration.
When running Kafka as the broker, the consumer config needs to have the auto.offset.reset=earliest setting, otherwise the BMP Adapter may miss some of the early messages, like the PeerUp notification, which are essential for proper BMP state.
When running on Sentinel, it is still necessary to have the opennms-telemetry-bmp-stats feature running on the core.