What is BMP ?
The BGP Monitor Protocol
Provides access to the Adj-RIB-In (pre BGP inbound filtering)
of a peer (BR: Internet Border Router or PE: Provider Edge
Router) on an ongoing basis and a periodic dump of certain
statistics that the monitoring station can use for further
1.BMP devices (e.g. routers) send BMP messages to a
2.Open Daylight (ODL) controller SQL plugin with SQL
using Yang interfaces with the BMP receiver database.
ODL in this fashion provides an abstract view of all
BMP collector data.
3.Admins, Network Engineers, automated
programs/scripts, etc. interact via ODL northbound
interfaces to run various BMP analytics.
4.Admins, Network Engineers, automated
programs/scripts, etc. can also go direct to the BMP
database as needed
Why BMP ?
There are many reasons to use BMP, but to highlight a few common ones:
1. Looking Glasses - IPv4, IPv6, and VPN4
2. Route Analytics - Track convergence times, history of prefixes as they change
over time, monitor and track BGP policy changes, etc...
3. Traffic Engineering Analytics - Adapt dynamically to change and know what is
the best shift
4. BGP pre-policy What-Ifs - Pre-policy routing information provides insight into all
path attributes from various points in the network allowing nonintrusive what-if
topology views for new policy validations
- ASR1K, CSR1000v : IOS-XE 3.11
- ASR9K, CRS, NCS6K, XRv: IOS-XR 5.2.2
- N3K, N7K, N9K: TBD
- Others: Juniper (older version of the draft)
- OpenBMP: Open Source: using MySQL
- BMP receiver: Open Source: Writen from scratch in Python
• BMP receiver can be configured with both ipv4 & ipv6 host addresses.
• The BGP speaker process is referred to as the BMP Client.
• BMP client provides only pre-policy view of the ADJ-RIB-IN of a peer
• Post-policy view is not supported
• A BGP peer can be monitored by multiple BMP reciever
• Any update message from the peer ( irrespective of the address-family ) is sent to the
• Multiple BMP receivers can be configured across all BGP instances
• Each BGP instance will send update messages for peers under it to the BMP receivers
monitoring the corresponding peers
• Maximum of 8 BMP receivers can be configured.
• No limitation on number of BGP peers to be monitored by a receiver
• No limitation on the number of clients interacting with a receiver
• Each BGP instance maintains a queue per BMP receiver
• Once the session with the BMP receiver comes up, the client starts sending
the current view (unless configured not to…) and any subsequent updates.
• The BGP client is the Active side & the BMP receiver is the passive listener
Design … (3)
• Once the TCP connection with a BMP receiver comes up, BMP client does the
• Sends the Initiation message to BMP receiver
This contains the host name and system software info (version)
• Sends Peer-Up message for every ESTABLISHED peer
• Send Route-Refresh message to all ESTABLISHED peers (unless configured not to…)
• Peer-Down message for every peer which goes down
• Periodic Stats-Report messages
• Route-monitoring messages for any update received from the monitored peer
• Termination message if session with BMP receiver is brought down gracefully (
• When BMP client receives updates from a peer, it makes a copy of the
message and add it to the queue of all BMP receivers monitoring the peer
• A separate thread in BGP speaker process then flushes the updates out on the tcp
session to the BMP receiver
• A copy of the message is made for every monitoring BMP receiver
• If a TCP session with the BMP receiver cannot be established, the Client
process will retry the connect every 7 secs
Type Description Implementation brief
0 Route Monitor Received update messages
1 Statistics Report No Cisco specific statistics
2 Peer Down Notification BGP peer down
3 Peer Up Notification BGP peer up
4 Initiation BMP session starts, will carry the session
description and basic informations
5 Termination BMP session ends
BMP Stats Reports
0 (standard) Number of prefixes rejected by inbound policy.
1 (standard) Number of (known) duplicate prefix advertisements. Currently sending 0.
2 (standard) Number of (known) duplicate withdraws. Currently sending 0.
3 (standard) Number of updates invalidated due to CLUSTER_LIST loop.
4 (standard) Number of updates invalidated due to AS_PATH loop.
5 (standard) Number of updates invalidated due to ORIGINATOR_ID.
6 (standard) Number of updates invalidated due to AS_CONFED loop.
7 (standard) Number of routes in Adj-RIBs-In.
8 (standard) Number of routes in Loc-RIB.
1. OpenBMP use MySQL to store BMP record
– use MySQL Workbench (client) to read it
2. Live OpenBMP server:
– db1.openbmp.org (login/pw = demo/demo)
3. Few command:
Command MySQL Qweries
Show current status of BGP peers select * from v_peers order by RouterName
Show BMP Routers select * from routers
Show BGP peer statistics interval based
select * from v_peer_prefix_report_last
1. Allows to collect all peers adj-RIB-in BGP updates
2. BMP cisco implementation is based on draft BMPv7
3. Supported on IOS-XE 3.11 and IOS XR 5.2.2
4. Easy to deploy using OpenBMP & BMPreceiver open source receiver