.. _bgp-monitoring-protocol-user-guide-config-concepts:
BMP Monitoring Station
======================
The following section shows how to configure BMP basics, how to verify functionality and presents essential components of the plugin. Next samples demonstrate the plugin’s runtime configuration capability.
The monitoring station is responsible for received BMP PDUs processing and storage.
The default BMP server is listening at port *12345*.
.. contents:: Contents
:depth: 2
:local:
Configuration
^^^^^^^^^^^^^
This section shows the way to configure the BMP monitoring station via REST API.
Monitoring station configuration
''''''''''''''''''''''''''''''''
In order to change default's BMP monitoring station configuration, use following request.
**URL:** ``/rests/data/odl-bmp-monitor-config:odl-bmp-monitors/bmp-monitor-config/example-bmp-monitor``
**Method:** ``PUT``
**Content-Type:** ``application/xml``
**Request Body:**
.. code-block:: xml
:linenos:
:emphasize-lines: 4,5
example-bmp-monitor
12345
0.0.0.0
@line 4: **binding-port** - The BMP server listening port.
@line 5: **binding-address** - The BMP server biding address.
.. note:: User may create multiple BMP monitoring station instances at runtime.
Active mode configuration
'''''''''''''''''''''''''
In order to enable active connection, use following request.
**URL:** ``/rests/data/odl-bmp-monitor-config:odl-bmp-monitors/bmp-monitor-config/example-bmp-monitor``
**Method:** ``PUT``
**Content-Type:** ``application/xml``
**Request Body:**
.. code-block:: xml
:linenos:
:emphasize-lines: 8,9,10
example-bmp-monitor
12345
0.0.0.0
192.0.2.2
1234
true
@line 8: **address** - The monitored router's IP address.
@line 9: **port** - The monitored router's port.
@line 10: **active** - Active mode set.
.. note:: User may configure active session establishment for multiple monitored routers.
MD5 authentication configuration
''''''''''''''''''''''''''''''''
In order to enable active connection, use following request.
**URL:** ``/rests/data/odl-bmp-monitor-config:odl-bmp-monitors/bmp-monitor-config/example-bmp-monitor``
**Method:** ``PUT``
**Content-Type:** ``application/xml``
**Request Body:**
.. code-block:: xml
:linenos:
:emphasize-lines: 8,9
example-bmp-monitor
12345
0.0.0.0
192.0.2.2
changeme
@line 8: **address** - The monitored router's IP address.
@line 9: **password** - The TCP MD5 signature.
BMP Monitors Configuration Loader
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
BMP Monitors Configuration Loader allows user to define static initial
configuration for a BMP protocol instance.
This service will detect the creation of new configuration files following the
pattern ``odl-bmp-monitors-*.xml`` under the path ``etc/opendaylight/bgpcep``.
Once the file is processed, the defined configuration will be available from
the configuration Data Store.
.. note:: If the BMP Monitor instance is already present, no update or configuration will be applied.
**PATH:** ``etc/opendaylight/bgpcep/odl-bmp-monitors-config.xml``
.. code-block:: xml
example-bmp-monitor
12345
0.0.0.0
BMP Monitor Configuration Example
'''''''''''''''''''''''''''''''''
BGP provides a feature providing a BMP Monitor configuration file example.
Once feature is installed defined configuration will be loaded and setup.
.. code-block:: console
feature:install odl-bgpcep-bmp-config-example
Collector DB Tree
^^^^^^^^^^^^^^^^^
.. code-block:: console
module: bmp-monitor
+--rw bmp-monitor
+--ro monitor* [monitor-id]
+--ro monitor-id monitor-id
+--ro router* [router-id]
+--ro name? string
+--ro description? string
+--ro info? string
+--ro router-id router-id
+--ro status? status
+--ro peer* [peer-id]
+--ro peer-id rib:peer-id
+--ro type peer-type
x--ro distinguisher
| +--ro distinguisher-type? distinguisher-type
| +--ro distinguisher? string
+--ro peer-distinguisher? union
+--ro address inet:ip-address
+--ro as inet:as-number
+--ro bgp-id inet:ipv4-address
+--ro router-distinguisher? string
+--ro peer-session
| +--ro local-address inet:ip-address
| +--ro local-port inet:port-number
| +--ro remote-port inet:port-number
| +--ro sent-open
| | +--ro version? protocol-version
| | +--ro my-as-number? uint16
| | +--ro hold-timer uint16
| | +--ro bgp-identifier inet:ipv4-address
| | +--ro bgp-parameters*
| | +--ro optional-capabilities*
| | +--ro c-parameters
| | +--ro as4-bytes-capability
| | | +--ro as-number? inet:as-number
| | +--ro bgp-extended-message-capability!
| | +--ro multiprotocol-capability
| | | +--ro afi? identityref
| | | +--ro safi? identityref
| | +--ro graceful-restart-capability
| | | +--ro restart-flags bits
| | | +--ro restart-time uint16
| | | +--ro tables* [afi safi]
| | | +--ro afi identityref
| | | +--ro safi identityref
| | | +--ro afi-flags bits
| | +--ro add-path-capability
| | | +--ro address-families*
| | | +--ro afi? identityref
| | | +--ro safi? identityref
| | | +--ro send-receive? send-receive
| | +--ro route-refresh-capability!
| +--ro received-open
| | +--ro version? protocol-version
| | +--ro my-as-number? uint16
| | +--ro hold-timer uint16
| | +--ro bgp-identifier inet:ipv4-address
| | +--ro bgp-parameters*
| | +--ro optional-capabilities*
| | +--ro c-parameters
| | +--ro as4-bytes-capability
| | | +--ro as-number? inet:as-number
| | +--ro bgp-extended-message-capability!
| | +--ro multiprotocol-capability
| | | +--ro afi? identityref
| | | +--ro safi? identityref
| | +--ro graceful-restart-capability
| | | +--ro restart-flags bits
| | | +--ro restart-time uint16
| | | +--ro tables* [afi safi]
| | | +--ro afi identityref
| | | +--ro safi identityref
| | | +--ro afi-flags bits
| | +--ro add-path-capability
| | | +--ro address-families*
| | | +--ro afi? identityref
| | | +--ro safi? identityref
| | | +--ro send-receive? send-receive
| | +--ro route-refresh-capability!
| +--ro information
| | +--ro string-information*
| | +--ro string-tlv
| | +--ro string-info? string
| +--ro status? status
| +--ro timestamp-sec? yang:timestamp
| +--ro timestamp-micro? yang:timestamp
+--ro stats
| +--ro rejected-prefixes? yang:counter32
| +--ro duplicate-prefix-advertisements? yang:counter32
| +--ro duplicate-withdraws? yang:counter32
| +--ro invalidated-cluster-list-loop? yang:counter32
| +--ro invalidated-as-path-loop? yang:counter32
| +--ro invalidated-originator-id? yang:counter32
| +--ro invalidated-as-confed-loop? yang:counter32
| +--ro adj-ribs-in-routes? yang:gauge64
| +--ro loc-rib-routes? yang:gauge64
| +--ro per-afi-safi-adj-rib-in-routes
| | +--ro afi-safi* [afi safi]
| | +--ro afi identityref
| | +--ro safi identityref
| | +--ro count? yang:gauge64
| +--ro per-afi-safi-loc-rib-routes
| | +--ro afi-safi* [afi safi]
| | +--ro afi identityref
| | +--ro safi identityref
| | +--ro count? yang:gauge64
| +--ro updates-treated-as-withdraw? yang:counter32
| +--ro prefixes-treated-as-withdraw? yang:counter32
| +--ro duplicate-updates? yang:counter32
| +--ro timestamp-sec? yang:timestamp
| +--ro timestamp-micro? yang:timestamp
+--ro pre-policy-rib
| +--ro tables* [afi safi]
| +--ro afi identityref
| +--ro safi identityref
| +--ro attributes
| | +--ro uptodate? boolean
| +--ro (routes)?
+--ro post-policy-rib
| +--ro tables* [afi safi]
| +--ro afi identityref
| +--ro safi identityref
| +--ro attributes
| | +--ro uptodate? boolean
| +--ro (routes)?
+--ro mirrors
+--ro information? bmp-msg:mirror-information-code
+--ro timestamp-sec? yang:timestamp
+--ro timestamp-micro? yang:timestamp
Operations
^^^^^^^^^^
The BMP plugin offers view of collected routes and statistical information from monitored peers.
To get top-level view of monitoring station:
**URL:** ``/rests/data/bmp-monitor:bmp-monitor/monitor/example-bmp-monitor?content=nonconfig``
**Method:** ``GET``
**Response Body:**
.. code-block:: xml
:linenos:
:emphasize-lines: 3,5,11,12,13,14,15,17,20,21,22,27,33,50,53
example-bmp-monitor
10.10.10.10
name
monitored-router
monitored router;
up
20.20.20.20
20.20.20.20
20.20.20.20
65000
global
1790
0
up
10.10.10.10
2200
180
65000
20.20.20.20
180
65000
65000
x:ipv4-address-family
x:unicast-subsequent-address-family
10.10.10.0/24
...
true
...
0
0
0
100
0
0
10
0
0
8
@line 3: **monitor-id** - The BMP monitoring station instance identifier.
@line 5: **router-id** - The monitored router IP address, serves as an identifier.
@line 11: **peer-id** - The monitored peer's BGP identifier, serves a an identifier.
@line 12: **address** - The IP address of the peer, associated with the TCP session.
@line 13: **bgp-id** - The BGP Identifier of the peer.
@line 14: **as** - The Autonomous System number of the peer.
@line 15: **type** - Identifies type of the peer - *Global Instance*, *RD Instance* or *Local Instance*
@line 17: **remote-port** - The peer's port number associated with TCP session.
@line 20: **local-address** - The IP address of the monitored router associated with the peering TCP session.
@line 21: **local-port** - The port number of the monitored router associated with the peering TCP session.
@line 22: **received-open** - The full OPEN message received by monitored router from the peer.
@line 27: **sent-open** - The full OPEN message send by monitored router to the peer.
@line 33: **pre-policy-rib** - The Adj-RIB-In that contains unprocessed routing information.
@line 50: **post-policy-rib** - The Post-Policy Ad-RIB-In that contains routes filtered by inbound policy.
@line 53: **stats** - Contains various statistics, periodically updated by the router.
-----
* To view collected information from particular monitored router:
**URL:** ``/rests/data/bmp-monitor:bmp-monitor/monitor/example-bmp-monitor/router/10.10.10.10?content=nonconfig``
* To view collected information from particular monitored peer:
**URL:** ``/rests/data/bmp-monitor:bmp-monitor/monitor/example-bmp-monitor/router/10.10.10.10/peer/20.20.20.20?content=nonconfig``