draft-ietf-grow-bmp-17.txt   rfc7854.txt 
Network Working Group J. Scudder, Ed. Internet Engineering Task Force (IETF) J. Scudder, Ed.
Internet-Draft Juniper Networks Request for Comments: 7854 Juniper Networks
Intended status: Standards Track R. Fernando Category: Standards Track R. Fernando
Expires: July 16, 2016 Cisco Systems ISSN: 2070-1721 Cisco Systems
S. Stuart S. Stuart
Google Google
January 13, 2016 June 2016
BGP Monitoring Protocol BGP Monitoring Protocol (BMP)
draft-ietf-grow-bmp-17
Abstract Abstract
This document defines a protocol, BMP, that can be used to monitor This document defines the BGP Monitoring Protocol (BMP), which can be
BGP sessions. BMP is intended to provide a convenient interface for used to monitor BGP sessions. BMP is intended to provide a
obtaining route views. Prior to introduction of BMP, screen-scraping convenient interface for obtaining route views. Prior to the
was the most commonly-used approach to obtaining such views. The introduction of BMP, screen scraping was the most commonly used
design goals are to keep BMP simple, useful, easily implemented, and approach to obtaining such views. The design goals are to keep BMP
minimally service-affecting. BMP is not suitable for use as a simple, useful, easily implemented, and minimally service affecting.
routing protocol. BMP is not suitable for use as a routing protocol.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on July 16, 2016. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc7854.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 24 skipping to change at page 3, line 7
modifications of such material outside the IETF Standards Process. modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other it for publication as an RFC or to translate it into languages other
than English. than English.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4
2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Overview of BMP Operation . . . . . . . . . . . . . . . . . . 4 3. Overview of BMP Operation . . . . . . . . . . . . . . . . . . 4
3.1. BMP Messages . . . . . . . . . . . . . . . . . . . . . . 4 3.1. BMP Messages . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Connection Establishment and Termination . . . . . . . . 4 3.2. Connection Establishment and Termination . . . . . . . . 5
3.3. Lifecycle of a BMP Session . . . . . . . . . . . . . . . 5 3.3. Lifecycle of a BMP Session . . . . . . . . . . . . . . . 6
4. BMP Message Format . . . . . . . . . . . . . . . . . . . . . 6 4. BMP Message Format . . . . . . . . . . . . . . . . . . . . . 7
4.1. Common Header . . . . . . . . . . . . . . . . . . . . . . 6 4.1. Common Header . . . . . . . . . . . . . . . . . . . . . . 7
4.2. Per-Peer Header . . . . . . . . . . . . . . . . . . . . . 7 4.2. Per-Peer Header . . . . . . . . . . . . . . . . . . . . . 8
4.3. Initiation Message . . . . . . . . . . . . . . . . . . . 9 4.3. Initiation Message . . . . . . . . . . . . . . . . . . . 10
4.4. Information TLV . . . . . . . . . . . . . . . . . . . . . 9 4.4. Information TLV . . . . . . . . . . . . . . . . . . . . . 10
4.5. Termination Message . . . . . . . . . . . . . . . . . . . 10 4.5. Termination Message . . . . . . . . . . . . . . . . . . . 11
4.6. Route Monitoring . . . . . . . . . . . . . . . . . . . . 11 4.6. Route Monitoring . . . . . . . . . . . . . . . . . . . . 12
4.7. Route Mirroring . . . . . . . . . . . . . . . . . . . . . 11 4.7. Route Mirroring . . . . . . . . . . . . . . . . . . . . . 12
4.8. Stats Reports . . . . . . . . . . . . . . . . . . . . . . 12 4.8. Stats Reports . . . . . . . . . . . . . . . . . . . . . . 13
4.9. Peer Down Notification . . . . . . . . . . . . . . . . . 14 4.9. Peer Down Notification . . . . . . . . . . . . . . . . . 16
4.10. Peer Up Notification . . . . . . . . . . . . . . . . . . 15 4.10. Peer Up Notification . . . . . . . . . . . . . . . . . . 17
5. Route Monitoring . . . . . . . . . . . . . . . . . . . . . . 17 5. Route Monitoring . . . . . . . . . . . . . . . . . . . . . . 18
6. Route Mirroring . . . . . . . . . . . . . . . . . . . . . . . 18 6. Route Mirroring . . . . . . . . . . . . . . . . . . . . . . . 19
7. Stat Reports . . . . . . . . . . . . . . . . . . . . . . . . 18 7. Stat Reports . . . . . . . . . . . . . . . . . . . . . . . . 19
8. Other Considerations . . . . . . . . . . . . . . . . . . . . 18 8. Other Considerations . . . . . . . . . . . . . . . . . . . . 20
8.1. Multiple Instances . . . . . . . . . . . . . . . . . . . 19 8.1. Multiple Instances . . . . . . . . . . . . . . . . . . . 20
8.2. Locally-Originated Routes . . . . . . . . . . . . . . . . 19 8.2. Locally Originated Routes . . . . . . . . . . . . . . . . 20
9. Using BMP . . . . . . . . . . . . . . . . . . . . . . . . . . 19 9. Using BMP . . . . . . . . . . . . . . . . . . . . . . . . . . 20
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21
10.1. BMP Message Types . . . . . . . . . . . . . . . . . . . 20 10.1. BMP Message Types . . . . . . . . . . . . . . . . . . . 21
10.2. BMP Peer Types . . . . . . . . . . . . . . . . . . . . . 20 10.2. BMP Peer Types . . . . . . . . . . . . . . . . . . . . . 21
10.3. BMP Peer Flags . . . . . . . . . . . . . . . . . . . . . 20 10.3. BMP Peer Flags . . . . . . . . . . . . . . . . . . . . . 22
10.4. BMP Statistics Types . . . . . . . . . . . . . . . . . . 21 10.4. BMP Statistics Types . . . . . . . . . . . . . . . . . . 22
10.5. BMP Initiation Message TLVs . . . . . . . . . . . . . . 21 10.5. BMP Initiation Message TLVs . . . . . . . . . . . . . . 23
10.6. BMP Termination Message TLVs . . . . . . . . . . . . . . 22 10.6. BMP Termination Message TLVs . . . . . . . . . . . . . . 23
10.7. BMP Termination Message Reason Codes . . . . . . . . . . 22 10.7. BMP Termination Message Reason Codes . . . . . . . . . . 23
10.8. BMP Peer Down Reason Codes . . . . . . . . . . . . . . . 22 10.8. BMP Peer Down Reason Codes . . . . . . . . . . . . . . . 24
10.9. Route Mirroring TLVs . . . . . . . . . . . . . . . . . . 23 10.9. Route Mirroring TLVs . . . . . . . . . . . . . . . . . . 24
10.10. BMP Route Mirroring Information Codes . . . . . . . . . 23 10.10. BMP Route Mirroring Information Codes . . . . . . . . . 24
11. Security Considerations . . . . . . . . . . . . . . . . . . . 23 11. Security Considerations . . . . . . . . . . . . . . . . . . . 25
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 24 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 25
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 12.1. Normative References . . . . . . . . . . . . . . . . . . 25
13.1. Normative References . . . . . . . . . . . . . . . . . . 24 12.2. Informative References . . . . . . . . . . . . . . . . . 26
13.2. Informative References . . . . . . . . . . . . . . . . . 25 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 27
Appendix A. Changes Between BMP Versions 1 and 2 . . . . . . . . 25 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27
Appendix B. Changes Between BMP Versions 2 and 3 . . . . . . . . 25
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26
1. Introduction 1. Introduction
Many researchers and network operators wish to have access to the Many researchers and network operators wish to have access to the
contents of routers' BGP RIBs as well as a view of protocol updates contents of routers' BGP Routing Information Bases (RIBs) as well as
the router is receiving. This monitoring task cannot be realized by a view of protocol updates the router is receiving. This monitoring
standard protocol mechanisms. Prior to introduction of BMP, this task cannot be realized by standard protocol mechanisms. Prior to
data could only be obtained through screen-scraping. the introduction of BMP, this data could only be obtained through
screen scraping.
The BMP protocol provides access to the Adj-RIB-In of a peer on an BMP provides access to the Adj-RIB-In of a peer on an ongoing basis
ongoing basis and a periodic dump of certain statistics the and a periodic dump of certain statistics the monitoring station can
monitoring station can use for further analysis. From a high level, use for further analysis. From a high level, BMP can be thought of
BMP can be thought of as the result of multiplexing together the as the result of multiplexing together the messages received on the
messages received on the various monitored BGP sessions. various monitored BGP sessions.
1.1. Requirements Language 1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in RFC "OPTIONAL" in this document are to be interpreted as described in RFC
2119 [RFC2119]. 2119 [RFC2119].
2. Definitions 2. Definitions
skipping to change at page 4, line 9 skipping to change at page 4, line 42
pre-policy Adj-RIB-In in this document. pre-policy Adj-RIB-In in this document.
o Post-Policy Adj-RIB-In: The result of applying inbound policy to o Post-Policy Adj-RIB-In: The result of applying inbound policy to
an Adj-RIB-In, but prior to the application of route selection to an Adj-RIB-In, but prior to the application of route selection to
form the Loc-RIB. form the Loc-RIB.
3. Overview of BMP Operation 3. Overview of BMP Operation
3.1. BMP Messages 3.1. BMP Messages
The following are the messages provided by BMP. The following are the messages provided by BMP:
o Route Monitoring (RM): Used to provide an initial dump of all o Route Monitoring (RM): Used to provide an initial dump of all
routes received from a peer as well as an ongoing mechanism that routes received from a peer, as well as an ongoing mechanism that
sends the incremental routes advertised and withdrawn by a peer to sends the incremental routes advertised and withdrawn by a peer to
the monitoring station. the monitoring station.
o Peer Down Notification: A message sent to indicate a peering o Peer Down Notification: A message sent to indicate that a peering
session has gone down with information indicating the reason for session has gone down with information indicating the reason for
the session disconnect. the session disconnect.
o Stats Reports (SR): An ongoing dump of statistics that can be used o Stats Reports (SR): An ongoing dump of statistics that can be used
by the monitoring station as a high level indication of the by the monitoring station as a high-level indication of the
activity going on in the router. activity going on in the router.
o Peer Up Notification: A message sent to indicate a peering session o Peer Up Notification: A message sent to indicate that a peering
has come up. The message includes information regarding the data session has come up. The message includes information regarding
exchanged between the peers in their OPEN messages as well as the data exchanged between the peers in their OPEN messages, as
information about the peering TCP session itself. In addition to well as information about the peering TCP session itself. In
being sent whenever a peer transitions to ESTABLISHED state, a addition to being sent whenever a peer transitions to the
Peer Up Notification is sent for each peer in ESTABLISHED state Established state, a Peer Up Notification is sent for each peer in
when the BMP session itself comes up. the Established state when the BMP session itself comes up.
o Initiation: A means for the monitored router to inform the o Initiation: A means for the monitored router to inform the
monitoring station of its vendor, software version, and so on. monitoring station of its vendor, software version, and so on.
o Termination: A means for the monitored router to inform the o Termination: A means for the monitored router to inform the
monitoring station of why it is closing a BMP session. monitoring station of why it is closing a BMP session.
o Route Mirroring: a means for the monitored router to send verbatim o Route Mirroring: A means for the monitored router to send verbatim
duplicates of messages as received. Can be used to exactly mirror duplicates of messages as received. Can be used to exactly mirror
a monitored BGP session. Can also be used to report malformed BGP a monitored BGP session. Can also be used to report malformed BGP
PDUs. Protocol Data Units (PDUs).
3.2. Connection Establishment and Termination 3.2. Connection Establishment and Termination
BMP operates over TCP. All options are controlled by configuration BMP operates over TCP. All options are controlled by configuration
on the monitored router. No BMP message is ever sent from the on the monitored router. No BMP message is ever sent from the
monitoring station to the monitored router. The monitored router MAY monitoring station to the monitored router. The monitored router MAY
take steps to prevent the monitoring station from sending data (for take steps to prevent the monitoring station from sending data (for
example by half-closing the TCP session or setting its window size to example, by half-closing the TCP session or setting its window size
zero) or it MAY silently discard any data sent by the monitoring to 0) or it MAY silently discard any data sent by the monitoring
station. station.
The router may be monitored by one or more monitoring stations. With The router may be monitored by one or more monitoring stations. With
respect to each (router, monitoring station) pair, one party is respect to each (router and monitoring station) pair, one party is
active with respect to TCP session establishment, and the other party active with respect to TCP session establishment, and the other party
is passive. Which party is active and which is passive is controlled is passive. Which party is active and which is passive is controlled
by configuration. by configuration.
The passive party is configured to listen on a particular TCP port The passive party is configured to listen on a particular TCP port
and the active party is configured to establish a connection to that and the active party is configured to establish a connection to that
port. If the active party is unable to connect to the passive party, port. If the active party is unable to connect to the passive party,
it periodically retries the connection. Retries MUST be subject to it periodically retries the connection. Retries MUST be subject to
some variety of backoff. Exponential backoff with a default initial some variety of backoff. Exponential backoff with a default initial
backoff of 30 seconds and a maximum of 720 seconds is suggested. backoff of 30 seconds and a maximum of 720 seconds is suggested.
skipping to change at page 5, line 50 skipping to change at page 6, line 37
A router is configured to speak BMP to one or more monitoring A router is configured to speak BMP to one or more monitoring
stations. It MAY be configured to send monitoring information for stations. It MAY be configured to send monitoring information for
only a subset of its BGP peers. Otherwise, all BGP peers are assumed only a subset of its BGP peers. Otherwise, all BGP peers are assumed
to be monitored. to be monitored.
A BMP session begins when the active party (either router or A BMP session begins when the active party (either router or
management station, as determined by configuration) successfully management station, as determined by configuration) successfully
opens a TCP session (the "BMP session"). Once the session is up, the opens a TCP session (the "BMP session"). Once the session is up, the
router begins to send BMP messages. It MUST begin by sending an router begins to send BMP messages. It MUST begin by sending an
Initiation message. It subsequently sends a Peer Up message over the Initiation message. It subsequently sends a Peer Up message over the
BMP session for each of its monitored BGP peers that is in BMP session for each of its monitored BGP peers that is in the
Established state. It follows by sending the contents of its Adj- Established state. It follows by sending the contents of its Adj-
RIBs-In (pre-policy, post-policy or both, see Section 5) encapsulated RIBs-In (pre-policy, post-policy, or both, see Section 5)
in Route Monitoring messages. Once it has sent all the routes for a encapsulated in Route Monitoring messages. Once it has sent all the
given peer, it MUST send a End-of-RIB message for that peer; when routes for a given peer, it MUST send an End-of-RIB message for that
End-of-RIB has been sent for each monitored peer, the initial table peer; when End-of-RIB has been sent for each monitored peer, the
dump has completed. (A monitoring station that wishes only to gather initial table dump has completed. (A monitoring station that only
a table dump could close the connection once it has gathered an End- wants to gather a table dump could close the connection once it has
of-RIB or Peer Down message corresponding to each Peer Up message.) gathered an End-of-RIB or Peer Down message corresponding to each
Peer Up message.)
Following the initial table dump, the router sends incremental Following the initial table dump, the router sends incremental
updates encapsulated in Route Monitoring messages. It MAY updates encapsulated in Route Monitoring messages. It MAY
periodically send Stats Reports or even new Initiation messages, periodically send Stats Reports or even new Initiation messages,
according to configuration. If any new monitored BGP peer becomes according to configuration. If any new monitored BGP peer becomes
Established, a corresponding Peer Up message is sent. If any BGP Established, a corresponding Peer Up message is sent. If any BGP
peers for which Peer Up messages were sent transition out of the peers for which Peer Up messages were sent transition out of the
Established state, corresponding Peer Down messages are sent. Established state, corresponding Peer Down messages are sent.
A BMP session ends when the TCP session that carries it is closed for A BMP session ends when the TCP session that carries it is closed for
any reason. The router MAY send a Termination message prior to any reason. The router MAY send a Termination message prior to
closing the session. closing the session.
4. BMP Message Format 4. BMP Message Format
4.1. Common Header 4.1. Common Header
The following common header appears in all BMP messages. The rest of The following common header appears in all BMP messages. The rest of
the data in a BMP message is dependent on the "Message Type" field in the data in a BMP message is dependent on the Message Type field in
the common header. the common header.
0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Version | | Version |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Length | | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Msg. Type | | Msg. Type |
+---------------+ +---------------+
o Version (1 byte): Indicates the BMP version. This is set to '3' o Version (1 byte): Indicates the BMP version. This is set to '3'
for all messages defined in this specification. Version 0 is for all messages defined in this specification. ('1' and '2' were
reserved and MUST NOT be sent. used by draft versions of this document.) Version 0 is reserved
and MUST NOT be sent.
o Message Length (4 bytes): Length of the message in bytes o Message Length (4 bytes): Length of the message in bytes
(including headers, data and encapsulated messages, if any). (including headers, data, and encapsulated messages, if any).
o Message Type (1 byte): This identifies the type of the BMP o Message Type (1 byte): This identifies the type of the BMP
message. A BMP implementation MUST ignore unrecognized message message. A BMP implementation MUST ignore unrecognized message
types upon receipt. types upon receipt.
* Type = 0: Route Monitoring * Type = 0: Route Monitoring
* Type = 1: Statistics Report * Type = 1: Statistics Report
* Type = 2: Peer Down Notification * Type = 2: Peer Down Notification
* Type = 3: Peer Up Notification * Type = 3: Peer Up Notification
* Type = 4: Initiation Message * Type = 4: Initiation Message
* Type = 5: Termination Message * Type = 5: Termination Message
* Type = 6: Route Mirroring Message * Type = 6: Route Mirroring Message
4.2. Per-Peer Header 4.2. Per-Peer Header
The per-peer header follows the common header for most BMP messages. The per-peer header follows the common header for most BMP messages.
The rest of the data in a BMP message is dependent on the "Message The rest of the data in a BMP message is dependent on the Message
Type" field in the common header. Type field in the common header.
0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer Type | Peer Flags | | Peer Type | Peer Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer Distinguisher (present based on peer type) | | Peer Distinguisher (present based on peer type) |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer Address (16 bytes) | | Peer Address (16 bytes) |
~ ~ ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer AS | | Peer AS |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer BGP ID | | Peer BGP ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp (seconds) | | Timestamp (seconds) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp (microseconds) | | Timestamp (microseconds) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o Peer Type (1 byte): Identifies the type of the peer. Currently o Peer Type (1 byte): Identifies the type of peer. Currently, three
two types of peers are identified, types of peers are identified:
* Peer Type = 0: Global Instance Peer * Peer Type = 0: Global Instance Peer
* Peer Type = 1: RD Instance Peer * Peer Type = 1: RD Instance Peer
* Peer Type = 2: Local Instance Peer * Peer Type = 2: Local Instance Peer
o Peer Flags (1 byte): These flags provide more information about o Peer Flags (1 byte): These flags provide more information about
the peer. The flags are defined as follows. the peer. The flags are defined as follows:
0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|V|L|A| Reserved| |V|L|A| Reserved|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
* The V flag indicates the the Peer address is an IPv6 address. * The V flag indicates that the Peer address is an IPv6 address.
For IPv4 peers this is set to 0. For IPv4 peers, this is set to 0.
* The L flag, if set to 1, indicates the message reflects the
post-policy Adj-RIB-In (i.e., its path attributes reflect the * The L flag, if set to 1, indicates that the message reflects
application of inbound policy). It is set to 0 if the message the post-policy Adj-RIB-In (i.e., its path attributes reflect
reflects the pre-policy Adj-RIB-In. Locally-sourced routes the application of inbound policy). It is set to 0 if the
also carry an L flag of 1. See Section 5 for further detail. message reflects the pre-policy Adj-RIB-In. Locally sourced
This flag has no significance when used with route mirroring routes also carry an L flag of 1. See Section 5 for further
messages (Section 4.7). detail. This flag has no significance when used with route
* The A flag, if set to 1, indicates the message is formatted mirroring messages (Section 4.7).
using the legacy two-byte AS_PATH format. If set to 0, the
message is formatted using the four-byte AS_PATH format * The A flag, if set to 1, indicates that the message is
formatted using the legacy 2-byte AS_PATH format. If set to 0,
the message is formatted using the 4-byte AS_PATH format
[RFC6793]. A BMP speaker MAY choose to propagate the AS_PATH [RFC6793]. A BMP speaker MAY choose to propagate the AS_PATH
information as received from its peer, or it MAY choose to information as received from its peer, or it MAY choose to
reformat all AS_PATH information into four-byte format reformat all AS_PATH information into a 4-byte format
regardless of how it was received from the peer. In the latter regardless of how it was received from the peer. In the latter
case, AS4_PATH or AS4_AGGREGATOR path attributes SHOULD NOT be case, AS4_PATH or AS4_AGGREGATOR path attributes SHOULD NOT be
sent in the BMP UPDATE message. This flag has no significance sent in the BMP UPDATE message. This flag has no significance
when used with route mirroring messages (Section 4.7). when used with route mirroring messages (Section 4.7).
* The remaining bits are reserved for future use. They MUST be * The remaining bits are reserved for future use. They MUST be
transmitted as zero and their values MUST be ignored on transmitted as 0 and their values MUST be ignored on receipt.
receipt.
o Peer Distinguisher (8 bytes): Routers today can have multiple o Peer Distinguisher (8 bytes): Routers today can have multiple
instances (example: L3VPNs [RFC4364]). This field is present to instances (example: Layer 3 Virtual Private Networks (L3VPNs)
distinguish peers that belong to one address domain from the [RFC4364]). This field is present to distinguish peers that
other. belong to one address domain from the other.
If the peer is a "Global Instance Peer", this field is zero If the peer is a "Global Instance Peer", this field is zero-
filled. If the peer is a "RD Instance Peer", it is set to the filled. If the peer is a "RD Instance Peer", it is set to the
route distinguisher of the particular instance the peer belongs route distinguisher of the particular instance the peer belongs
to. If the peer is a "Local Instance Peer", it is set to a to. If the peer is a "Local Instance Peer", it is set to a
unique, locally-defined value. In all cases, the effect is that unique, locally defined value. In all cases, the effect is that
the combination of the Peer Type and Peer Distinguisher is the combination of the Peer Type and Peer Distinguisher is
sufficient to disambiguate peers for which other identifying sufficient to disambiguate peers for which other identifying
information might overlap. information might overlap.
o Peer Address: The remote IP address associated with the TCP o Peer Address: The remote IP address associated with the TCP
session over which the encapsulated PDU was received. It is 4 session over which the encapsulated PDU was received. It is 4
bytes long if an IPv4 address is carried in this field (with the bytes long if an IPv4 address is carried in this field (with the
12 most significant bytes zero-filled) and 16 bytes long if an 12 most significant bytes zero-filled) and 16 bytes long if an
IPv6 address is carried in this field. IPv6 address is carried in this field.
o Peer AS: The Autonomous System number of the peer from which the o Peer AS: The Autonomous System number of the peer from which the
encapsulated PDU was received. If a 16 bit AS number is stored in encapsulated PDU was received. If a 16-bit AS number is stored in
this field [RFC6793], it should be padded with zeroes in the 16 this field [RFC6793], it should be padded with zeroes in the 16
most significant bits. most significant bits.
o Peer BGP ID: The BGP Identifier of the peer from which the o Peer BGP ID: The BGP Identifier of the peer from which the
encapsulated PDU was received. encapsulated PDU was received.
o Timestamp: The time when the encapsulated routes were received o Timestamp: The time when the encapsulated routes were received
(one may also think of this as the time when they were installed (one may also think of this as the time when they were installed
in the Adj-RIB-In), expressed in seconds and microseconds since in the Adj-RIB-In), expressed in seconds and microseconds since
midnight (zero hour), January 1, 1970 (UTC). If zero, the time is midnight (zero hour), January 1, 1970 (UTC). If zero, the time is
skipping to change at page 9, line 34 skipping to change at page 10, line 34
two or more Information TLVs (Section 4.4) containing information two or more Information TLVs (Section 4.4) containing information
about the monitored router. The sysDescr and sysName Information about the monitored router. The sysDescr and sysName Information
TLVs MUST be sent, any others are optional. The string TLV MAY be TLVs MUST be sent, any others are optional. The string TLV MAY be
included multiple times. included multiple times.
4.4. Information TLV 4.4. Information TLV
The Information TLV is used by the Initiation (Section 4.3) and Peer The Information TLV is used by the Initiation (Section 4.3) and Peer
Up (Section 4.10) messages. Up (Section 4.10) messages.
0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Information Type | Information Length | | Information Type | Information Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Information (variable) | | Information (variable) |
~ ~ ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o Information Type (2 bytes): Type of information provided. Defined o Information Type (2 bytes): Type of information provided. Defined
types are: types are:
* Type = 0: String. The Information field contains a free-form * Type = 0: String. The Information field contains a free-form
UTF-8 string whose length is given by the "Information Length" UTF-8 string whose length is given by the Information Length
field. The value is administratively assigned. There is no field. The value is administratively assigned. There is no
requirement to terminate the string with a null (or any other requirement to terminate the string with a null (or any other
particular) character -- the length field gives its particular) character -- the Information Length field gives its
termination. If multiple strings are included, their ordering termination. If multiple strings are included, their ordering
MUST be preserved when they are reported. MUST be preserved when they are reported.
* Type = 1: sysDescr. The Information field contains an ASCII * Type = 1: sysDescr. The Information field contains an ASCII
string whose value MUST be set to be equal to the value of the string whose value MUST be set to be equal to the value of the
sysDescr MIB-II [RFC1213] object. sysDescr MIB-II [RFC1213] object.
* Type = 2: sysName. The Information field contains a ASCII * Type = 2: sysName. The Information field contains an ASCII
string whose value MUST be set to be equal to the value of the string whose value MUST be set to be equal to the value of the
sysName MIB-II [RFC1213] object. sysName MIB-II [RFC1213] object.
o Information Length (2 bytes): The length of the following o Information Length (2 bytes): The length of the following
Information field, in bytes. Information field, in bytes.
o Information (variable): Information about the monitored router, o Information (variable): Information about the monitored router,
according to the type. according to the type.
4.5. Termination Message 4.5. Termination Message
skipping to change at page 10, line 33 skipping to change at page 11, line 33
message is RECOMMENDED, a monitoring station must always be prepared message is RECOMMENDED, a monitoring station must always be prepared
for the session to terminate with no message. Once the router has for the session to terminate with no message. Once the router has
sent a termination message, it MUST close the TCP session without sent a termination message, it MUST close the TCP session without
sending any further messages. Likewise, the monitoring station MUST sending any further messages. Likewise, the monitoring station MUST
close the TCP session after receiving a termination message. close the TCP session after receiving a termination message.
The termination message consists of the common BMP header followed by The termination message consists of the common BMP header followed by
one or more TLVs containing information about the reason for the one or more TLVs containing information about the reason for the
termination, as follows: termination, as follows:
0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Information Type | Information Length | | Information Type | Information Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Information (variable) | | Information (variable) |
~ ~ ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o Information Type (2 bytes): Type of information provided. Defined o Information Type (2 bytes): Type of information provided. Defined
types are: types are:
* Type = 0: String. The Information field contains a free-form * Type = 0: String. The Information field contains a free-form
UTF-8 string whose length is given by the "Information Length" UTF-8 string whose length is given by the Information Length
field. Inclusion of this TLV is optional. It MAY be used to field. Inclusion of this TLV is optional. It MAY be used to
provide further detail for any of the defined reasons. provide further detail for any of the defined reasons.
Multiple String TLVs MAY be included in the message. Multiple String TLVs MAY be included in the message.
* Type = 1: Reason. The Information field contains a two-byte * Type = 1: Reason. The Information field contains a 2-byte code
code indicating the reason the connection was terminated. Some indicating the reason that the connection was terminated. Some
reasons may have further TLVs associated with them. Inclusion reasons may have further TLVs associated with them. Inclusion
of this TLV is REQUIRED. Defined reasons are: of this TLV is REQUIRED. Defined reasons are:
+ Reason = 0: Session administratively closed. The session + Reason = 0: Session administratively closed. The session
might be re-initiated. might be re-initiated.
+ Reason = 1: Unspecified reason. + Reason = 1: Unspecified reason.
+ Reason = 2: Out of resources. The router has exhausted + Reason = 2: Out of resources. The router has exhausted
resources available for the BMP session. resources available for the BMP session.
+ Reason = 3: Redundant connection. The router has determined + Reason = 3: Redundant connection. The router has determined
this connection is redundant with another one. that this connection is redundant with another one.
+ Reason = 4: Session permanently administratively closed, + Reason = 4: Session permanently administratively closed,
will not be re-initiated. Monitoring station should reduce will not be re-initiated. Monitoring station should reduce
(potentially to zero) the rate at which it attempts (potentially to 0) the rate at which it attempts
reconnection to the monitored router. reconnection to the monitored router.
o Information Length (2 bytes): The length of the following o Information Length (2 bytes): The length of the following
Information field, in bytes. Information field, in bytes.
o Information (variable): Information about the monitored router, o Information (variable): Information about the monitored router,
according to the type. according to the type.
4.6. Route Monitoring 4.6. Route Monitoring
Route Monitoring messages are used for initial synchronization of Route Monitoring messages are used for initial synchronization of the
ADJ-RIBs-In. They are also used for ongoing monitoring of ADJ-RIB-In ADJ-RIBs-In. They are also used for ongoing monitoring of the
state. Route monitoring messages are state-compressed. This is all ADJ-RIB-In state. Route monitoring messages are state-compressed.
discussed in more detail in Section 5. This is all discussed in more detail in Section 5.
Following the common BMP header and per-peer header is a BGP Update Following the common BMP header and per-peer header is a BGP Update
PDU. PDU.
4.7. Route Mirroring 4.7. Route Mirroring
Route Mirroring messages are used for verbatim duplication of Route Mirroring messages are used for verbatim duplication of
messages as received. A possible use for mirroring is exact messages as received. A possible use for mirroring is exact
mirroring of one or more monitored BGP sessions, without state mirroring of one or more monitored BGP sessions, without state
compression. Another possible use is mirroring of messages that have compression. Another possible use is the mirroring of messages that
been treated-as-withdraw [RFC7606], for debugging purposes. Mirrored have been treated-as-withdraw [RFC7606], for debugging purposes.
messages may be sampled, or may be lossless. The Messages Lost Mirrored messages may be sampled, or may be lossless. The Messages
Information code is provided to allow losses to be indicated. Lost Information code is provided to allow losses to be indicated.
Section 6 provides more detail. Section 6 provides more detail.
Following the common BMP header and per-peer header is a set of TLVs Following the common BMP header and per-peer header is a set of TLVs
that contain information about a message or set of messages. Each that contain information about a message or set of messages. Each
TLV comprises a two-byte type code, a two-byte length field, and a TLV comprises a 2-byte type code, a 2-byte length field, and a
variable-length value. Inclusion of any given TLV is OPTIONAL, variable-length value. Inclusion of any given TLV is OPTIONAL;
however at least one TLV SHOULD be included, otherwise what's the however, at least one TLV SHOULD be included, otherwise there's no
point of sending the message? Defined TLVs are as follows: point in sending the message. Defined TLVs are as follows:
o Type = 0: BGP Message. A BGP PDU. This PDU may or may not be an o Type = 0: BGP Message. A BGP PDU. This PDU may or may not be an
Update message. If the BGP Message TLV occurs in the Route Update message. If the BGP Message TLV occurs in the Route
Mirroring message, it MUST occur last in the list of TLVs. Mirroring message, it MUST occur last in the list of TLVs.
o Type = 1: Information. A two-byte code that provides information o Type = 1: Information. A 2-byte code that provides information
about the mirrored message or message stream. Defined codes are: about the mirrored message or message stream. Defined codes are:
* Code = 0: Errored PDU. The contained message was found to have * Code = 0: Errored PDU. The contained message was found to have
some error that made it unusable, causing it to be treated-as- some error that made it unusable, causing it to be treated-as-
withdraw [RFC7606]. A BGP Message TLV MUST also occur in the withdraw [RFC7606]. A BGP Message TLV MUST also occur in the
TLV list. TLV list.
* Code = 1: Messages Lost. One or more messages may have been * Code = 1: Messages Lost. One or more messages may have been
lost. This could occur, for example, if an implementation runs lost. This could occur, for example, if an implementation runs
out of available buffer space to queue mirroring messages. out of available buffer space to queue mirroring messages.
skipping to change at page 12, line 47 skipping to change at page 14, line 5
on when and on what event these reports have to be transmitted. It on when and on what event these reports have to be transmitted. It
is left to the implementation to determine transmission timings -- is left to the implementation to determine transmission timings --
however, configuration control should be provided of the timer and/or however, configuration control should be provided of the timer and/or
threshold values. This document only specifies the form and content threshold values. This document only specifies the form and content
of SR messages. of SR messages.
Following the common BMP header and per-peer header is a 4-byte field Following the common BMP header and per-peer header is a 4-byte field
that indicates the number of counters in the stats message where each that indicates the number of counters in the stats message where each
counter is encoded as a TLV. counter is encoded as a TLV.
0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stats Count | | Stats Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Each counter is encoded as follows, Each counter is encoded as follows:
0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stat Type | Stat Len | | Stat Type | Stat Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stat Data | | Stat Data |
~ ~ ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o Stat Type (2 bytes): Defines the type of the statistic carried in o Stat Type (2 bytes): Defines the type of the statistic carried in
the "Stat Data" field. the Stat Data field.
o Stat Len (2 bytes): Defines the length of the "Stat Data" Field. o Stat Len (2 bytes): Defines the length of the Stat Data field.
This specification defines the following statistics. A BMP This specification defines the following statistics. A BMP
implementation MUST ignore unrecognized stat types on receipt, and implementation MUST ignore unrecognized stat types on receipt, and
likewise MUST ignore unexpected data in the Stat Data field. likewise MUST ignore unexpected data in the Stat Data field.
Stats are either counters or gauges, defined as follows after the Stats are either counters or gauges, defined as follows after the
examples of [RFC1155] Section 3.2.3.3 and [RFC2856] Section 4 examples in Section 3.2.3.3 of [RFC1155] and Section 4 of [RFC2856],
respectively: respectively:
32-bit Counter: A non-negative integer which monotonically increases 32-bit Counter: A non-negative integer that monotonically increases
until it reaches a maximum value, when it wraps around and starts until it reaches a maximum value, when it wraps around and starts
increasing again from zero. It has a maximum value of 2^32-1 increasing again from 0. It has a maximum value of 2^32-1
(4294967295 decimal). (4294967295 decimal).
64-bit Gauge: non-negative integer, which may increase or decrease, 64-bit Gauge: A non-negative integer that may increase or decrease,
but shall never exceed a maximum value, nor fall below a minimum but shall never exceed a maximum value, nor fall below a minimum one.
value. The maximum value can not be greater than 2^64-1 The maximum value cannot be greater than 2^64-1 (18446744073709551615
(18446744073709551615 decimal), and the minimum value can not be decimal), and the minimum value cannot be smaller than 0. The value
smaller than 0. The value has its maximum value whenever the has its maximum value whenever the information being modeled is
information being modeled is greater than or equal to its maximum greater than or equal to its maximum value, and has its minimum value
value, and has its minimum value whenever the information being whenever the information being modeled is smaller than or equal to
modeled is smaller than or equal to its minimum value. If the its minimum value. If the information being modeled subsequently
information being modeled subsequently decreases below (increases decreases below the maximum value (or increases above the minimum
above) the maximum (minimum) value, the 64-bit Gauge also decreases value), the 64-bit Gauge also decreases (or increases).
(increases).
o Stat Type = 0: (32-bit Counter) Number of prefixes rejected by o Stat Type = 0: (32-bit Counter) Number of prefixes rejected by
inbound policy. inbound policy.
o Stat Type = 1: (32-bit Counter) Number of (known) duplicate prefix o Stat Type = 1: (32-bit Counter) Number of (known) duplicate prefix
advertisements. advertisements.
o Stat Type = 2: (32-bit Counter) Number of (known) duplicate o Stat Type = 2: (32-bit Counter) Number of (known) duplicate
withdraws. withdraws.
skipping to change at page 14, line 25 skipping to change at page 15, line 28
to ORIGINATOR_ID. to ORIGINATOR_ID.
o Stat Type = 6: (32-bit Counter) Number of updates invalidated due o Stat Type = 6: (32-bit Counter) Number of updates invalidated due
to AS_CONFED loop. to AS_CONFED loop.
o Stat Type = 7: (64-bit Gauge) Number of routes in Adj-RIBs-In. o Stat Type = 7: (64-bit Gauge) Number of routes in Adj-RIBs-In.
o Stat Type = 8: (64-bit Gauge) Number of routes in Loc-RIB. o Stat Type = 8: (64-bit Gauge) Number of routes in Loc-RIB.
o Stat Type = 9: Number of routes in per-AFI/SAFI Adj-RIB-In. The o Stat Type = 9: Number of routes in per-AFI/SAFI Adj-RIB-In. The
value is structured as: AFI (2 bytes), SAFI (1 byte), followed by value is structured as: 2-byte Address Family Identifier (AFI),
a 64-bit Gauge. 1-byte Subsequent Address Family Identifier (SAFI), followed by a
64-bit Gauge.
o Stat Type = 10: Number of routes in per-AFI/SAFI Loc-RIB. The o Stat Type = 10: Number of routes in per-AFI/SAFI Loc-RIB. The
value is structured as: AFI (2 bytes), SAFI (1 byte), followed by value is structured as: 2-byte AFI, 1-byte SAFI, followed by a
a 64-bit Gauge. 64-bit Gauge.
o Stat Type = 11: (32-bit Counter) Number of updates subjected to o Stat Type = 11: (32-bit Counter) Number of updates subjected to
treat-as-withdraw treatment [RFC7606]. treat-as-withdraw treatment [RFC7606].
o Stat Type = 12: (32-bit Counter) Number of prefixes subjected to o Stat Type = 12: (32-bit Counter) Number of prefixes subjected to
treat-as-withdraw treatment [RFC7606]. treat-as-withdraw treatment [RFC7606].
o Stat Type = 13: (32-bit Counter) Number of duplicate update o Stat Type = 13: (32-bit Counter) Number of duplicate update
messages received. messages received.
Although the current specification only specifies 4-byte counters and Although the current specification only specifies 4-byte counters and
8-byte gauges as "Stat Data", this does not preclude future versions 8-byte gauges as "Stat Data", this does not preclude future versions
from incorporating more complex TLV-type "Stat Data" (for example, from incorporating more complex TLV-type "Stat Data" (for example,
one that can carry prefix specific data). SR messages are optional. one that can carry prefix-specific data). SR messages are optional.
However if an SR message is transmitted, at least one statistic MUST However, if an SR message is transmitted, at least one statistic MUST
be carried in it. be carried in it.
4.9. Peer Down Notification 4.9. Peer Down Notification
This message is used to indicate a peering session was terminated. This message is used to indicate that a peering session was
terminated.
0 1 2 3 4 5 6 7 8 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
| Reason | 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 | Reason |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data (present if Reason = 1, 2 or 3) | | Data (present if Reason = 1, 2 or 3) |
~ ~ ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Reason indicates why the session was closed. Defined values are: Reason indicates why the session was closed. Defined values are:
o Reason 1: The local system closed the session. Following the o Reason 1: The local system closed the session. Following the
Reason is a BGP PDU containing a BGP NOTIFICATION message that Reason is a BGP PDU containing a BGP NOTIFICATION message that
would have been sent to the peer. would have been sent to the peer.
o Reason 2: The local system closed the session. No notification o Reason 2: The local system closed the session. No notification
message was sent. Following the reason code is a two-byte field message was sent. Following the reason code is a 2-byte field
containing the code corresponding to the FSM Event that caused the containing the code corresponding to the Finite State Machine
system to close the session (see Section 8.1 of [RFC4271]). Two (FSM) Event that caused the system to close the session (see
bytes both set to zero are used to indicate no relevant Event code Section 8.1 of [RFC4271]). Two bytes both set to 0 are used to
is defined. indicate that no relevant Event code is defined.
o Reason 3: The remote system closed the session with a notification o Reason 3: The remote system closed the session with a notification
message. Following the Reason is a BGP PDU containing the BGP message. Following the Reason is a BGP PDU containing the BGP
NOTIFICATION message as received from the peer. NOTIFICATION message as received from the peer.
o Reason 4: The remote system closed the session without a o Reason 4: The remote system closed the session without a
notification message. This includes any unexpected termination of notification message. This includes any unexpected termination of
the transport session, so in some cases both the local and remote the transport session, so in some cases both the local and remote
systems might consider this to apply. systems might consider this to apply.
o Reason 5: Information for this peer will no longer be sent to the o Reason 5: Information for this peer will no longer be sent to the
monitoring station for configuration reasons. This does not, monitoring station for configuration reasons. This does not,
strictly speaking, indicate the peer has gone down, but it does strictly speaking, indicate that the peer has gone down, but it
indicate the monitoring station will not receive updates for the does indicate that the monitoring station will not receive updates
peer. for the peer.
A Peer Down message implicitly withdraws all routes that had been A Peer Down message implicitly withdraws all routes that were
associated with the peer in question. A BMP implementation MAY omit associated with the peer in question. A BMP implementation MAY omit
sending explicit withdraws for such routes. sending explicit withdraws for such routes.
4.10. Peer Up Notification 4.10. Peer Up Notification
The Peer Up message is used to indicate a peering session has come up The Peer Up message is used to indicate that a peering session has
(i.e., has transitioned into ESTABLISHED state). Following the come up (i.e., has transitioned into the Established state).
common BMP header and per-peer header is the following: Following the common BMP header and per-peer header is the following:
0 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Local Address (16 bytes) | | Local Address (16 bytes) |
~ ~ ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Local Port | Remote Port | | Local Port | Remote Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sent OPEN Message | | Sent OPEN Message |
~ ~ ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Received OPEN Message | | Received OPEN Message |
skipping to change at page 16, line 29 skipping to change at page 17, line 36
~ ~ ~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
o Local Address: The local IP address associated with the peering o Local Address: The local IP address associated with the peering
TCP session. It is 4 bytes long if an IPv4 address is carried in TCP session. It is 4 bytes long if an IPv4 address is carried in
this field, as determined by the V flag (with the 12 most this field, as determined by the V flag (with the 12 most
significant bytes zero-filled) and 16 bytes long if an IPv6 significant bytes zero-filled) and 16 bytes long if an IPv6
address is carried in this field. address is carried in this field.
o Local Port: The local port number associated with the peering TCP o Local Port: The local port number associated with the peering TCP
session, or zero if no TCP session actually exists (see session, or 0 if no TCP session actually exists (see Section 8.2).
Section 8.2).
o Remote Port: The remote port number associated with the peering o Remote Port: The remote port number associated with the peering
TCP session, or zero if no TCP session actually exists (see TCP session, or 0 if no TCP session actually exists (see
Section 8.2). (The remote address can be found in the Peer Section 8.2). (The remote address can be found in the Peer
Address field of the fixed header.) Address field of the fixed header.)
o Sent OPEN Message: The full OPEN message transmitted by the o Sent OPEN Message: The full OPEN message transmitted by the
monitored router to its peer. monitored router to its peer.
o Received OPEN Message: The full OPEN message received by the o Received OPEN Message: The full OPEN message received by the
monitored router from its peer. monitored router from its peer.
o Information: Information about the peer, using the Information TLV o Information: Information about the peer, using the Information TLV
skipping to change at page 17, line 19 skipping to change at page 18, line 25
of each monitored peer. This is done by sending all routes stored in of each monitored peer. This is done by sending all routes stored in
the Adj-RIB-In of those peers using standard BGP Update messages, the Adj-RIB-In of those peers using standard BGP Update messages,
encapsulated in Route Monitoring messages. There is no requirement encapsulated in Route Monitoring messages. There is no requirement
on the ordering of messages in the peer dumps. When the initial dump on the ordering of messages in the peer dumps. When the initial dump
is completed for a given peer, this MUST be indicated by sending an is completed for a given peer, this MUST be indicated by sending an
End-of-RIB marker for that peer (as specified in Section 2 of End-of-RIB marker for that peer (as specified in Section 2 of
[RFC4724], plus the BMP encapsulation header). See also Section 9. [RFC4724], plus the BMP encapsulation header). See also Section 9.
A BMP speaker may send pre-policy routes, post-policy routes, or A BMP speaker may send pre-policy routes, post-policy routes, or
both. The selection may be due to implementation constraints (it is both. The selection may be due to implementation constraints (it is
possible a BGP implementation may not store, for example, routes that possible that a BGP implementation may not store, for example, routes
have been filtered out by policy). Pre-policy routes MUST have their that have been filtered out by policy). Pre-policy routes MUST have
L flag clear in the BMP header (see Section 4), post-policy routes their L flag clear in the BMP header (see Section 4), post-policy
MUST have their L flag set. When an implementation chooses to send routes MUST have their L flag set. When an implementation chooses to
both pre- and post-policy routes, it is effectively multiplexing two send both pre- and post-policy routes, it is effectively multiplexing
update streams onto the BMP session. The streams are distinguished two update streams onto the BMP session. The streams are
by their L flags. distinguished by their L flags.
If the implementation is able to provide information about when If the implementation is able to provide information about when
routes were received, it MAY provide such information in the BMP routes were received, it MAY provide such information in the BMP
timestamp field. Otherwise, the BMP timestamp field MUST be set to Timestamp field. Otherwise, the BMP Timestamp field MUST be set to
zero, indicating time is not available. 0, indicating that time is not available.
Ongoing monitoring is accomplished by propagating route changes in Ongoing monitoring is accomplished by propagating route changes in
BGP Update PDUs and forwarding those PDUs to the monitoring station, BGP Update PDUs and forwarding those PDUs to the monitoring station,
again using RM messages. When a change occurs to a route, such as an again using RM messages. When a change occurs to a route, such as an
attribute change, the router must update the monitoring station with attribute change, the router must update the monitoring station with
the new attribute. As discussed above, it MAY generate either an the new attribute. As discussed above, it MAY generate either an
update with the L flag clear, with it set, or two updates, one with update with the L flag clear, with it set, or two updates, one with
the L flag clear and the other with the L flag set. When a route is the L flag clear and the other with the L flag set. When a route is
withdrawn by a peer, a corresponding withdraw is sent to the withdrawn by a peer, a corresponding withdraw is sent to the
monitoring station. The withdraw MUST have its L flag set to monitoring station. The withdraw MUST have its L flag set to
correspond to that of any previous announcement; if the route in correspond to that of any previous announcement; if the route in
question was previously announced with L flag both clear and set, the question was previously announced with L flag both clear and set, the
withdraw MUST similarly be sent twice, with L flag clear and set. withdraw MUST similarly be sent twice, with L flag clear and set.
Multiple changed routes MAY be grouped into a single BGP UPDATE PDU Multiple changed routes MAY be grouped into a single BGP UPDATE PDU
when feasible, exactly as in the standard BGP protocol. when feasible, exactly as in the standard BGP protocol.
It's important to note RM messages are not replicated messages It's important to note that RM messages are not replicated messages
received from a peer. (Route mirroring (Section 6) is provided if received from a peer. (Route mirroring (Section 6) is provided if
this is required.) While the router should attempt to generate this is required.) While the router should attempt to generate
updates promptly there is a finite time that could elapse between updates promptly, there is a finite time that could elapse between
reception of an update, the generation an RM message, and its reception of an update, the generation an RM message, and its
transmission to the monitoring station. If there are state changes transmission to the monitoring station. If there are state changes
in the interim for that prefix, it is acceptable that the router in the interim for that prefix, it is acceptable that the router
generate the final state of that prefix to the monitoring station. generate the final state of that prefix to the monitoring station.
This is sometimes known as "state compression". The actual PDU This is sometimes known as "state compression". The actual PDU
generated and transmitted to the station might also differ from the generated and transmitted to the station might also differ from the
exact PDU received from the peer, for example due to differences exact PDU received from the peer, for example, due to differences
between how different implementations format path attributes. between how different implementations format path attributes.
6. Route Mirroring 6. Route Mirroring
Route Mirroring messages are provided for two primary reasons: First, Route Mirroring messages are provided for two primary reasons: First,
to enable an implementation to operate in a mode where it provides a to enable an implementation to operate in a mode where it provides a
full-fidelity view of all messages received from its peers, without full-fidelity view of all messages received from its peers, without
state compression. As we note in Section 5, BMP's normal operational state compression. As we note in Section 5, BMP's normal operational
mode cannot provide this. Implementors are strongly cautioned that mode cannot provide this. Implementors are strongly cautioned that
without state compression, an implementation could require unbounded without state compression, an implementation could require unbounded
storage to buffer messages queued to be mirrored. Route Mirroring is storage to buffer messages queued to be mirrored. Route Mirroring is
unlikely to be suitable for implementation in conventional routers, unlikely to be suitable for implementation in conventional routers,
and its use is NOT RECOMMENDED except in cases where implementors and its use is NOT RECOMMENDED except in cases where implementors
have carefully considered the tradeoffs. These tradeoffs include: have carefully considered the tradeoffs. These tradeoffs include:
router resource exhaustion, the potential to flow-block BGP peers, router resource exhaustion, the potential to interfere with the
and the slowing of routing convergence. transmission or reception of BGP UPDATE messages, and the slowing of
routing convergence.
The second application for Route Mirroring is for error reporting and The second application for Route Mirroring is for error reporting and
diagnosis. When [RFC7606] is in use, a router can process BGP diagnosis. When Revised Error Handling for BGP UPDATE messages
messages that are determined to contain errors, without resetting the [RFC7606] is in use, a router can process BGP messages that are
BGP session. Such messages MAY be mirrored. The buffering used for determined to contain errors, without resetting the BGP session.
such mirroring SHOULD be limited. If an errored message is unable to Such messages MAY be mirrored. The buffering used for such mirroring
be mirrored due to buffer exhaustion, a message with the "Messages SHOULD be limited. If an errored message is unable to be mirrored
Lost" code SHOULD be sent to indicate this. (This implies a buffer due to buffer exhaustion, a message with the "Messages Lost" code
should be reserved for this use.) SHOULD be sent to indicate this. (This implies that a buffer should
be reserved for this use.)
7. Stat Reports 7. Stat Reports
As outlined above, SR messages are used to monitor specific events As outlined above, SR messages are used to monitor specific events
and counters on the monitored router. One type of monitoring could and counters on the monitored router. One type of monitoring could
be to find out if there are an undue number of route advertisements be to find out if there are an undue number of route advertisements
and withdraws happening (churn) on the monitored router. Another and withdraws happening (churn) on the monitored router. Another
metric is to evaluate the number of looped AS-Paths on the router. metric is to evaluate the number of looped AS_PATHs on the router.
While this document proposes a small set of counters to begin with, While this document proposes a small set of counters to begin with,
the authors envision this list may grow in the future with new the authors envision that this list may grow in the future with new
applications that require BMP-style monitoring. applications that require BMP-style monitoring.
8. Other Considerations 8. Other Considerations
8.1. Multiple Instances 8.1. Multiple Instances
Some routers may support multiple instances of the BGP protocol, for Some routers may support multiple instances of the BGP protocol, for
example as "logical routers" or through some other facility. The BMP example, as "logical routers" or through some other facility. The
protocol relates to a single instance of BGP; thus, if a router BMP protocol relates to a single instance of BGP; thus, if a router
supports multiple BGP instances it should also support multiple BMP supports multiple BGP instances it should also support multiple BMP
instances (one per BGP instance). Different BMP instances SHOULD instances (one per BGP instance). Different BMP instances SHOULD
generate Initiation Messages that are distinct from one another, for generate Initiation Messages that are distinct from one another, for
example by using distinguishable sysNames or by inclusion of example, by using distinguishable sysNames or by the inclusion of
instance-identifying information in a string TLV. instance-identifying information in a string TLV.
8.2. Locally-Originated Routes 8.2. Locally Originated Routes
Some consideration is required for routes originated into BGP by the Some consideration is required for routes originated into BGP by the
local router, whether as a result of redistribution from a another local router, whether as a result of redistribution from another
protocol or for some other reason. protocol or for some other reason.
Such routes can be modeled as having been sent by the router to Such routes can be modeled as having been sent by the router to
itself, placing the router's own address in the Peer Address field of itself, placing the router's own address in the Peer Address field of
the header. It is RECOMMENDED that when doing so the router should the header. It is RECOMMENDED that when doing so, the router should
use the same address it has used as its local address for the BMP use the same address it has used as its local address for the BMP
session. Since in this case no transport session actually exists the session. Since in this case no transport session actually exists,
Local and Remote Port fields of the Peer Up message MUST be set to the Local and Remote Port fields of the Peer Up message MUST be set
zero. Clearly the OPEN Message fields of the Peer Up message will to 0. Clearly, the OPEN Message fields of the Peer Up message will
equally not have been physically transmitted, but should represent equally not have been transmitted physically, but should represent
the relevant capabilities of the local router. the relevant capabilities of the local router.
Also recall the L flag is used to indicate locally-sourced routes, Also, recall that the L flag is used to indicate locally sourced
see Section 4.2. routes, see Section 4.2.
9. Using BMP 9. Using BMP
Once the BMP session is established route monitoring starts dumping Once the BMP session is established, route monitoring starts dumping
the current snapshot as well as incremental changes simultaneously. the current snapshot as well as incremental changes simultaneously.
It is fine to have these operations occur concurrently. If the It is fine to have these operations occur concurrently. If the
initial dump visits a route and subsequently a withdraw is received, initial dump visits a route and subsequently a withdraw is received,
this will be forwarded to the monitoring station that would have to this will be forwarded to the monitoring station that would have to
correlate and reflect the deletion of that route in its internal correlate and reflect the deletion of that route in its internal
state. This is an operation a monitoring station would need to state. This is an operation that a monitoring station would need to
support regardless. support, regardless.
If the router receives a withdraw for a prefix even before the peer If the router receives a withdraw for a prefix even before the peer
dump procedure visits that prefix, then the router would clean up dump procedure visits that prefix, then the router would clean up
that route from its internal state and will not forward it to the that route from its internal state and will not forward it to the
monitoring station. In this case, the monitoring station may receive monitoring station. In this case, the monitoring station may receive
a bogus withdraw it can safely ignore. a bogus withdraw it can safely ignore.
10. IANA Considerations 10. IANA Considerations
IANA is requested to create registries for the following BMP IANA has created registries for the following BMP parameters, which
parameters, to be organized in a new group "BGP Monitoring Protocol are organized in a new group "BGP Monitoring Protocol (BMP)
(BMP) Parameters": Parameters".
10.1. BMP Message Types 10.1. BMP Message Types
This document defines seven message types for transferring BGP This document defines seven message types for transferring BGP
messages between cooperating systems (Section 4): messages between cooperating systems (Section 4):
o Type 0: Route Monitoring o Type 0: Route Monitoring
o Type 1: Statistics Report o Type 1: Statistics Report
o Type 2: Peer Down Notification o Type 2: Peer Down Notification
o Type 3: Peer Up Notification o Type 3: Peer Up Notification
o Type 4: Initiation o Type 4: Initiation
o Type 5: Termination o Type 5: Termination
o Type 6: Route Mirroring o Type 6: Route Mirroring
Type values 0 through 128 MUST be assigned using the "Standards Type values 0 through 127 MUST be assigned using the "Standards
Action" policy, and values 129 through 250 using the "Specification Action" policy, and values 128 through 250 using the "Specification
Required" policy defined in [RFC5226]. Values 251 through 254 are Required" policy defined in [RFC5226]. Values 251 through 254 are
"Experimental" and value 255 is reserved. Experimental, and value 255 is Reserved.
10.2. BMP Peer Types 10.2. BMP Peer Types
This document defines two types of peers for purposes of interpreting This document defines three types of peers for purposes of
the Peer Distinguisher field (Section 4.2): interpreting the Peer Distinguisher field (Section 4.2):
o Peer Type = 0: Global Instance Peer. o Peer Type = 0: Global Instance Peer
o Peer Type = 1: RD Instance Peer. o Peer Type = 1: RD Instance Peer
o Peer Type = 2: Local Instance Peer. o Peer Type = 2: Local Instance Peer
Peer Type values 0 through 127 MUST be assigned using the "Standards Peer Type values 0 through 127 MUST be assigned using the "Standards
Action" policy, and values 128 through 250 using the "Specification Action" policy, and values 128 through 250 using the "Specification
Required" policy, defined in [RFC5226]. Values 251 through 254 are Required" policy, defined in [RFC5226]. Values 251 through 254 are
"Experimental" and value 255 is reserved. Experimental, and value 255 is Reserved.
10.3. BMP Peer Flags 10.3. BMP Peer Flags
This document defines three bit flags in the Peer Flags field of the This document defines three bit flags in the Peer Flags field of the
Per-Peer Header (Section 4.2). The bits are numbered from zero (the per-peer header (Section 4.2). The bits are numbered from 0 (the
high-order, or leftmost, bit) to seven (the low-order, or rightmost, high-order, or leftmost, bit) to 7 (the low-order, or rightmost,
bit): bit):
o Flag 0: V flag. o Flag 0: V flag
o Flag 1: L flag. o Flag 1: L flag
o Flag 2: A flag. o Flag 2: A flag
Flags 3 through 7 MUST be assigned using the "Standards Action" Flags 3 through 7 are unassigned. The registration procedure for the
policy. registry is "Standards Action".
10.4. BMP Statistics Types 10.4. BMP Statistics Types
This document defines fourteen statistics types for statistics This document defines fourteen statistics types for statistics
reporting (Section 4.8): reporting (Section 4.8):
o Stat Type = 0: Number of prefixes rejected by inbound policy. o Stat Type = 0: Number of prefixes rejected by inbound policy
o Stat Type = 1: Number of (known) duplicate prefix advertisements. o Stat Type = 1: Number of (known) duplicate prefix advertisements
o Stat Type = 2: Number of (known) duplicate withdraws. o Stat Type = 2: Number of (known) duplicate withdraws
o Stat Type = 3: Number of updates invalidated due to CLUSTER_LIST o Stat Type = 3: Number of updates invalidated due to CLUSTER_LIST
loop. loop
o Stat Type = 4: Number of updates invalidated due to AS_PATH loop. o Stat Type = 4: Number of updates invalidated due to AS_PATH loop
o Stat Type = 5: Number of updates invalidated due to ORIGINATOR_ID. o Stat Type = 5: Number of updates invalidated due to ORIGINATOR_ID
o Stat Type = 6: Number of updates invalidated due to a loop found o Stat Type = 6: Number of updates invalidated due to a loop found
in AS_CONFED_SEQUENCE or AS_CONFED_SET. in AS_CONFED_SEQUENCE or AS_CONFED_SET
o Stat Type = 7: Number of routes in Adj-RIBs-In. o Stat Type = 7: Number of routes in Adj-RIBs-In
o Stat Type = 8: Number of routes in Loc-RIB. o Stat Type = 8: Number of routes in Loc-RIB
o Stat Type = 9: Number of routes in per-AFI/SAFI Adj-RIB-In. o Stat Type = 9: Number of routes in per-AFI/SAFI Adj-RIB-In
o Stat Type = 10: Number of routes in per-AFI/SAFI Loc-RIB. o Stat Type = 10: Number of routes in per-AFI/SAFI Loc-RIB
o Stat Type = 11: Number of updates subjected to treat-as-withdraw. o Stat Type = 11: Number of updates subjected to treat-as-withdraw
o Stat Type = 12: Number of prefixes subjected to treat-as-withdraw. o Stat Type = 12: Number of prefixes subjected to treat-as-withdraw
o Stat Type = 13: Number of duplicate update messages received. o Stat Type = 13: Number of duplicate update messages received
Stat Type values 0 through 32767 MUST be assigned using the Stat Type values 0 through 32767 MUST be assigned using the
"Standards Action" policy, and values 32768 through 65530 using the "Standards Action" policy, and values 32768 through 65530 using the
"Specification Required" policy, defined in [RFC5226]. Values 65531 "Specification Required" policy, defined in [RFC5226]. Values 65531
through 65534 are "Experimental" and value 65535 is reserved. through 65534 are Experimental, and value 65535 is Reserved.
10.5. BMP Initiation Message TLVs 10.5. BMP Initiation Message TLVs
This document defines three types for information carried in the This document defines three types for information carried in the
Initiation message (Section 4.3): Initiation message (Section 4.3):
o Type = 0: String. o Type = 0: String
o Type = 1: sysDescr. o Type = 1: sysDescr
o Type = 2: sysName. o Type = 2: sysName
Information type values 0 through 32767 MUST be assigned using the Information type values 0 through 32767 MUST be assigned using the
"Standards Action" policy, and values 32768 through 65530 using the "Standards Action" policy, and values 32768 through 65530 using the
"Specification Required" policy, defined in [RFC5226]. Values 65531 "Specification Required" policy, defined in [RFC5226]. Values 65531
through 65534 are "Experimental" and value 65535 is reserved. through 65534 are Experimental, and value 65535 is reserved.
10.6. BMP Termination Message TLVs 10.6. BMP Termination Message TLVs
This document defines two types for information carried in the This document defines two types for information carried in the
Termination message (Section 4.5): Termination message (Section 4.5):
o Type = 0: String. o Type = 0: String
o Type = 1: Reason. o Type = 1: Reason
Information type values 0 through 32767 MUST be assigned using the Information type values 0 through 32767 MUST be assigned using the
"Standards Action" policy, and values 32768 through 65530 using the "Standards Action" policy, and values 32768 through 65530 using the
"Specification Required" policy, defined in [RFC5226]. Values 65531 "Specification Required" policy, defined in [RFC5226]. Values 65531
through 65534 are "Experimental" and value 65535 is reserved. through 65534 are Experimental, and value 65535 is Reserved.
10.7. BMP Termination Message Reason Codes 10.7. BMP Termination Message Reason Codes
This document defines five types for information carried in the This document defines five types for information carried in the
Termination message (Section 4.5) Reason code,: Termination message (Section 4.5) Reason code:
o Type = 0: Administratively closed. o Type = 0: Administratively closed
o Type = 1: Unspecified reason. o Type = 1: Unspecified reason
o Type = 2: Out of resources. o Type = 2: Out of resources
o Type = 3: Redundant connection. o Type = 3: Redundant connection
o Type = 4: Permanently administratively closed. o Type = 4: Permanently administratively closed
Information type values 0 through 32767 MUST be assigned using the Information type values 0 through 32767 MUST be assigned using the
"Standards Action" policy, and values 32768 through 65530 using the "Standards Action" policy, and values 32768 through 65530 using the
"Specification Required" policy, defined in [RFC5226]. Values 65531 "Specification Required" policy, defined in [RFC5226]. Values 65531
through 65534 are "Experimental" and value 65535 is reserved. through 65534 are Experimental, and value 65535 is Reserved.
10.8. BMP Peer Down Reason Codes 10.8. BMP Peer Down Reason Codes
This document defines five types for information carried in the Peer This document defines five types for information carried in the Peer
Down Notification (Section 4.9) Reason code (and reserves one further Down Notification (Section 4.9) Reason code (and reserves one further
type): type):
o Type = 0 is reserved. o Type = 0 is Reserved.
o Type = 1: Local system closed, NOTIFICATION PDU follows. o Type = 1: Local system closed, NOTIFICATION PDU follows
o Type = 2: Local system closed, FSM Event follows. o Type = 2: Local system closed, FSM Event follows
o Type = 3: Remote system closed, NOTIFICATION PDU follows. o Type = 3: Remote system closed, NOTIFICATION PDU follows
o Type = 4: Remote system closed, no data. o Type = 4: Remote system closed, no data
o Type = 5: Peer de-configured. o Type = 5: Peer de-configured
Information type values 0 through 32767 MUST be assigned using the Information type values 0 through 32767 MUST be assigned using the
"Standards Action" policy, and values 32768 through 65530 using the "Standards Action" policy, and values 32768 through 65530 using the
"Specification Required" policy, defined in [RFC5226]. Values 65531 "Specification Required" policy, defined in [RFC5226]. Values 65531
through 65534 are "Experimental" and values 0 and 65535 are reserved. through 65534 are Experimental, and values 0 and 65535 are Reserved.
10.9. Route Mirroring TLVs 10.9. Route Mirroring TLVs
This document defines two types for information carried in the Route This document defines two types for information carried in the Route
Mirroring message (Section 4.7): Mirroring message (Section 4.7):
o Type = 0: BGP Message. o Type = 0: BGP Message
o Type = 1: Information. o Type = 1: Information
Information type values 0 through 32767 MUST be assigned using the Information type values 0 through 32767 MUST be assigned using the
"Standards Action" policy, and values 32768 through 65530 using the "Standards Action" policy, and values 32768 through 65530 using the
"Specification Required" policy, defined in [RFC5226]. Values 65531 "Specification Required" policy, defined in [RFC5226]. Values 65531
through 65534 are "Experimental" and value 65535 is reserved. through 65534 are Experimental, and value 65535 is Reserved.
10.10. BMP Route Mirroring Information Codes 10.10. BMP Route Mirroring Information Codes
This document defines two types for information carried in the Route This document defines two types for information carried in the Route
Mirroring Information (Section 4.7) code: Mirroring Information (Section 4.7) code:
o Type = 0: Errored PDU. o Type = 0: Errored PDU
o Type = 1: Messages Lost. o Type = 1: Messages Lost
Information type values 0 through 32767 MUST be assigned using the Information type values 0 through 32767 MUST be assigned using the
"Standards Action" policy, and values 32768 through 65530 using the "Standards Action" policy, and values 32768 through 65530 using the
"Specification Required" policy, defined in [RFC5226]. Values 65531 "Specification Required" policy, defined in [RFC5226]. Values 65531
through 65534 are "Experimental" and value 65535 is reserved. through 65534 are Experimental, and value 65535 is Reserved.
11. Security Considerations 11. Security Considerations
This document defines a mechanism to obtain a full dump or provide This document defines a mechanism to obtain a full dump or provide
continuous monitoring of a BGP speaker's BGP routes, including continuous monitoring of a BGP speaker's BGP routes, including
received BGP messages. This capability could allow an outside party received BGP messages. This capability could allow an outside party
to obtain information not otherwise obtainable. For example, to obtain information not otherwise obtainable. For example,
although it's hard to consider the content of BGP routes in the although it's hard to consider the content of BGP routes in the
public Internet to be confidential, BGP is used in private contexts public Internet to be confidential, BGP is used in private contexts
as well, for example for L3VPN [RFC4364]. As another example, a as well, for example, for L3VPN [RFC4364]. As another example, a
clever attacker might be able to infer the content of the monitored clever attacker might be able to infer the content of the monitored
router's import policy by comparing the pre-policy routes exposed by router's import policy by comparing the pre-policy routes exposed by
BMP, to post-policy routes exported in BGP. BMP, to post-policy routes exported in BGP.
Implementations of this protocol SHOULD require manual configuration Implementations of this protocol SHOULD require manual configuration
of the monitored and monitoring devices. of the monitored and monitoring devices.
Unless a transport that provides mutual authentication is used, an Unless a transport that provides mutual authentication is used, an
attacker could masquerade as the monitored router and trick a attacker could masquerade as the monitored router and trick a
monitoring station into accepting false information, or could monitoring station into accepting false information, or they could
masquerade as a monitoring station and gain unauthorized access to masquerade as a monitoring station and gain unauthorized access to
BMP data. Unless a transport that provides confidentiality is used, BMP data. Unless a transport that provides confidentiality is used,
a passive or active attacker could gain access to or tamper with the a passive or active attacker could gain access to, or tamper with,
BMP data in flight. the BMP data in flight.
Where the security considerations outlined above are a concern, users Where the security considerations outlined above are a concern, users
of this protocol should use IPsec [RFC4303] in tunnel mode with of this protocol should use IPsec [RFC4303] in tunnel mode with pre-
preshared keys. shared keys.
12. Acknowledgements
Thanks to Ebben Aries, Michael Axelrod, Serpil Bayraktar, Tim Evens,
Pierre Francois, Jeffrey Haas, John ji Ioannidis, John Kemp, Mack
McBride, Danny McPherson, David Meyer, Dimitri Papadimitriou, Tom
Petch, Robert Raszuk, Erik Romijn, Peter Schoenmaker and the members
of the GROW working group for their comments.
13. References 12. References
13.1. Normative References 12.1. Normative References
[RFC1213] McCloghrie, K. and M. Rose, "Management Information Base [RFC1213] McCloghrie, K. and M. Rose, "Management Information Base
for Network Management of TCP/IP-based internets: MIB-II", for Network Management of TCP/IP-based internets: MIB-II",
STD 17, RFC 1213, DOI 10.17487/RFC1213, March 1991, STD 17, RFC 1213, DOI 10.17487/RFC1213, March 1991,
<http://www.rfc-editor.org/info/rfc1213>. <http://www.rfc-editor.org/info/rfc1213>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 25, line 10 skipping to change at page 26, line 25
[RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet [RFC6793] Vohra, Q. and E. Chen, "BGP Support for Four-Octet
Autonomous System (AS) Number Space", RFC 6793, Autonomous System (AS) Number Space", RFC 6793,
DOI 10.17487/RFC6793, December 2012, DOI 10.17487/RFC6793, December 2012,
<http://www.rfc-editor.org/info/rfc6793>. <http://www.rfc-editor.org/info/rfc6793>.
[RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. [RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K.
Patel, "Revised Error Handling for BGP UPDATE Messages", Patel, "Revised Error Handling for BGP UPDATE Messages",
RFC 7606, DOI 10.17487/RFC7606, August 2015, RFC 7606, DOI 10.17487/RFC7606, August 2015,
<http://www.rfc-editor.org/info/rfc7606>. <http://www.rfc-editor.org/info/rfc7606>.
13.2. Informative References 12.2. Informative References
[RFC1155] Rose, M. and K. McCloghrie, "Structure and identification [RFC1155] Rose, M. and K. McCloghrie, "Structure and identification
of management information for TCP/IP-based internets", of management information for TCP/IP-based internets",
STD 16, RFC 1155, DOI 10.17487/RFC1155, May 1990, STD 16, RFC 1155, DOI 10.17487/RFC1155, May 1990,
<http://www.rfc-editor.org/info/rfc1155>. <http://www.rfc-editor.org/info/rfc1155>.
[RFC2856] Bierman, A., McCloghrie, K., and R. Presuhn, "Textual [RFC2856] Bierman, A., McCloghrie, K., and R. Presuhn, "Textual
Conventions for Additional High Capacity Data Types", Conventions for Additional High Capacity Data Types",
RFC 2856, DOI 10.17487/RFC2856, June 2000, RFC 2856, DOI 10.17487/RFC2856, June 2000,
<http://www.rfc-editor.org/info/rfc2856>. <http://www.rfc-editor.org/info/rfc2856>.
[RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)", [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)",
RFC 4303, DOI 10.17487/RFC4303, December 2005, RFC 4303, DOI 10.17487/RFC4303, December 2005,
<http://www.rfc-editor.org/info/rfc4303>. <http://www.rfc-editor.org/info/rfc4303>.
[RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private
Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February
2006, <http://www.rfc-editor.org/info/rfc4364>. 2006, <http://www.rfc-editor.org/info/rfc4364>.
Appendix A. Changes Between BMP Versions 1 and 2 Acknowledgements
o Added Peer Up Message
o Added L flag
o Editorial changes
Appendix B. Changes Between BMP Versions 2 and 3
o Added a 32-bit length field to the fixed header.
o Clarified error handling.
o Added new stat types: 5 (number of updates invalidated due to
ORIGINATOR_ID), 6 (number of updates invalidated due to
AS_CONFED_SEQUENCE/AS_CONFED_SET), 7 (number of routes in Adj-RIB-
In), 8 (number of routes in Loc-RIB), 9 (number of routes in Adj-
RIB-In, per AFI/SAFI), 10 (numer of routes in Loc-RIB, per AFI/
SAFI), 11 (number of updates subjected to treat-as-withdraw
treatment), 12 (number of prefixes subjected to treat-as-withdraw
treatment), and 13 (number of duplicate update messages received).
o Defined counters and gauges for use with stat types.
o For peer down messages, the relevant FSM event is to be sent in
type 2 messages. Added type 5 to indicate peer is no longer
monitored.
o Added local address and local and remote ports to the peer up Thanks to Ebben Aries, Michael Axelrod, Serpil Bayraktar, Tim Evens,
message. Also optional descriptive string. Pierre Francois, Jeffrey Haas, John Ioannidis, John Kemp, Mack
o Require End-of-RIB marker after initial dump. McBride, Danny McPherson, David Meyer, Dimitri Papadimitriou, Tom
o Added Initiation message with string content. Petch, Robert Raszuk, Erik Romijn, Peter Schoenmaker, and the members
o Permit multiplexing pre- and post-policy feeds onto a single BMP of the GROW working group for their comments.
session.
o Changed assignment policy for IANA registries.
o Changed "Loc-RIB" references to refer to "Post-Policy Adj-RIB-In",
plus other editorial changes.
o Introduced option for monitoring station to be active party in
initiating connection.
o Introduced Termination message.
o Added "route mirroring" mode.
o Added "A" flag to identify AS Path format in use.
Authors' Addresses Authors' Addresses
John Scudder (editor) John Scudder (editor)
Juniper Networks Juniper Networks
1194 N. Mathilda Ave 1194 N. Mathilda Ave.
Sunnyvale, CA 94089 Sunnyvale, CA 94089
USA United States
Email: jgs@juniper.net Email: jgs@juniper.net
Rex Fernando Rex Fernando
Cisco Systems Cisco Systems
170 W. Tasman Dr. 170 W. Tasman Dr.
San Jose, CA 95134 San Jose, CA 95134
USA United States
Email: rex@cisco.com Email: rex@cisco.com
Stephen Stuart Stephen Stuart
Google Google
1600 Amphitheatre Parkway 1600 Amphitheatre Parkway
Mountain View, CA 94043 Mountain View, CA 94043
USA United States
Email: sstuart@google.com Email: sstuart@google.com
 End of changes. 132 change blocks. 
357 lines changed or deleted 329 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/