BMP (RFC 7854) enables a BGP-speaking router to send various BGP RIB information to a monitoring station (e.g. it's pre/post-policy RIB-in per peer). This is useful, for example, where an SP wants to monitor all routes seen at an IXP, or seen by a route reflector (without monitoring each route reflector client).
Cisco's IOS XR implements a BMP client. In this document I will show how to configure this. Note that other platforms (IOS XE, Junos etc.) also implement BMP but I won't show how to configure those here.
OpenDaylight bgpcep implements a BMP server. Note that for a high-performance BMP implementation dedicated to route analytics you may want to look at snas.io. ODL's implementation however may be useful, for example, where an SP wishes to learn data via BMP and then program the network using BGP. In this document I will show how to use RESTCONF to interact with ODL's BMP implementation.
To configure BMP on IOS XR go into configuration mode and type:
bmp server 1
host a.b.c.d port 12345
(replace a.b.c.d with ODL's IP address).
Then for any given BGP peer (or peer-group) for which you wish to export BMP data type:
bmp-activate server 1.
To enable BMP on ODL simply install the odl-bgpcep-bmp feature. Assuming the odl-restconf feature is also installed you will then be able to interact with BMP via RESTCONF. Once BMP is installed you should see the ODL server listening on TCP port 12345. Likewise once RESTCONF is installed you should see the server listening on TCP port 8181.
Go to e.g:
from there you can drill down to individual BMP neighbors:
(replace e.f.g.h with the IP address of the BMP client).
and from there to see individual peers of that BMP client, e.g:
(where i.j.k.l is a specific BGP peer of router e.f.g.h)
and from there to see specific information such as pre-policy RIB:
The same information is, of course, available inside ODL using the Java APIs.
It is also possible to configure the BMP plugin to listen on a different port/on a specific interface, to connect out to a router (instead of passively listening for a connection) and to use MD5 authentication. The information can all be found here: