.. _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``