| Internet-Draft | BMP New Statistics | November 2025 |
| Srivastava, et al. | Expires 23 May 2026 | [Page] |
RFC 7854 defines different BGP Monitoring Protocol (BMP) statistics message types to observe events that occur on a monitored router. This document defines new statistics type to monitor BMP Adj-RIB-In and Adj-RIB-Out Routing Information Bases (RIBs).¶
This Internet-Draft is submitted in full conformance with the 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 https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 23 May 2026.¶
Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Section 4.8 of [RFC7854] defines a number of different BGP Monitoring Protocol (BMP) statistics types to observe major events that occur on a monitored router. Stats are either counters or gauges. Section 6.2 of [RFC8671] also defines several BMP statistics types for Adj-RIB-Out of a monitored router.¶
New BMP statistics types are needed to enable more refined BGP route monitoring and analysis, improving operational maintenance and troubleshooting capabilities.¶
This document defines gauges for new BMP statistics. The applicability scope of these new gauges (Adj-RIB-In, Adj-RIB-Out, Loc-RIB) is provided in Section 4. The format of the BMP statistics message remains same as defined in [RFC7854].¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This document makes use of the following terms:¶
Adj-RIB-In: As defined in [RFC4271], "The Adj-RIBs-In contains unprocessed routing information that has been advertised to the local BGP speaker by its peers."¶
Pre-policy Adj-RIB-In: The result before applying the inbound policy to an Adj-RIB-In. Note that this is an explicit definition that aligns with the pre-policy Adj-RIB-In concept specified in Section 2 of [RFC7854].¶
Post-Policy Adj-RIB-In: As defined in Section 2 of [RFC7854].¶
Adj-RIB-Out: As defined in [RFC4271], "The Adj-RIBs-Out contains the routes for advertisement to specific peers by means of the local speaker's UPDATE messages."¶
Pre-policy Adj-RIB-Out: As defined in Section 3 of [RFC8671].¶
Post-policy Adj-RIB-Out: As defined in Section 3 of [RFC8671].¶
Loc-RIB: As defined in Section 1.1 of [RFC4271], "The Loc-RIB contains the routes that have been selected by the local BGP speaker's Decision Process." Note that the Loc-RIB state as monitored through BMP might also contain routes imported from other routing protocols such as an IGP or local static routes.¶
Primary route: A BGP route to a prefix that is considered the best route by the BGP decision process [RFC4271]. A prefix can have more than one primary route.¶
Backup route: A backup route is eligible for route selection, but it is not selected as the primary route and is also installed in the Loc-RIB. Backup routes are used for fast convergence in the event of failures.¶
Also, "implementation" is used following the same usage in [RFC7854].¶
This section defines different statistics type for Adj-RIB-In and Adj-RIB-Out monitoring type. Some of these statistics are also applicable to Loc-RIB; refer to Section 4 for more details.¶
The BMP Statistics Report Message carries statistic information in Type-Length-Value (TLV) formats. Each Statistic is encoded as a TLV (Stat Type, Stat Len, Stat Data) (Section 4.8 of [RFC7854]). "Stat Data" is being referred as "value" when defining various RIB Monitoring Statistics.¶
Statistics defined in this document can be categorized into two granularities: Global Statistics and Per-Address Family Identifier (AFI)/Subsequent Address Family Identifier (SAFI) [RFC4760] Statistics. Statistics defined with Per-AFI/SAFI descriptions belong to Per-AFI/SAFI Statistics, while other statistics belong to Global Statistics. Both a Global Statistic and its corresponding Per-AFI/SAFI Statistics can be reported simultaneously.¶
The AFI/SAFI are used to identify network layer protocols and associated routing information. The authoritative registries for AFI/SAFI values are maintained by IANA [IANA-AFI] [IANA-SAFI]. The Per-AFI/SAFI Statistics apply only to the AFI/SAFIs that a BGP speaker supports and negotiates with its peer.¶
For Global Statistics, the "Stat Data" (value) field is a single 64-bit unsigned integer gauge with "Stat Len" MUST be set to 8. Each global statistic MUST appear only once in a BMP Statistics Report Message.¶
For Per-AFI/SAFI Statistics, the "Stat Data" (value) field is a 11-byte structured value formatted as: 2-byte AFI, 1-byte SAFI, and 64-bit Gauge. The "Stat Len" MUST be set to 11. For any given per-AFI/SAFI Statistic, duplicate (AFI, SAFI) pairs MUST NOT appear within the same BMP Statistics Report Message.¶
If statistics apply to the Loc-RIB, the "Peer Type" field in the Per-Peer Header of the corresponding BMP Statistics Report Message MUST be set to 3 (Loc-RIB Instance Peer) [RFC9069]. Otherwise, the "Peer Type" MUST be set as defined in Section 4.2 of of [RFC7854].¶
A BMP implementation MUST ignore unrecognized stat types upon receipt and MUST exclude unsupported stat types upon transmission.¶
Type = 18: (64-bit Gauge) Current number of routes in pre-policy Adj-RIB-In. This gauge is similar to stats type 7 defined in [RFC7854] and makes it explicitly for the pre-policy Adj-RIB-In.¶
Type = 19: (64-bit Gauge) Current number of routes in per-AFI/SAFI pre-policy Adj-RIB-In. This gauge is similar to stats type 9 defined in Section 4.8 of [RFC7854] and makes it explicitly for the pre-policy Adj-RIB-In. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 20: (64-bit Gauge) Current number of routes in post-policy Adj-RIB-In.¶
Type = 21: (64-bit Gauge) Current number of routes in per-AFI/SAFI post-policy Adj-RIB-In. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 22: (64-bit Gauge) Current number of routes in per-AFI/SAFI rejected by inbound policy. This gauge is different from stats type 0 defined in Section 4.8 of [RFC7854]. The stats type 0 is a 32-counter which is a monotonically increasing number, while the stats type 22 is a 64-bit gauge which represents the current number of routes rejected by an inbound policy due to ongoing policy configuration changes. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 23: (64-bit Gauge) Current Number of routes in per-AFI/SAFI accepted by inbound policy. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 24: (64-bit Gauge) Current Number of routes in per-AFI/SAFI selected as primary route. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 25: (64-bit Gauge) Current Number of routes in per-AFI/SAFI selected as a backup route. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 26: (64-bit Gauge) Current Number of routes in per-AFI/SAFI suppressed by configured route damping policy. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge. 'Suppressed' refers to a path which has been declared suppressed by the BGP Route Flap Damping mechanism as described in Section 2.2 of [RFC2439].¶
Type = 27: (64-bit Gauge) Current Number of routes in per-AFI/SAFI marked as stale by Graceful Restart (GR) events. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge. 'Stale' refers to a path which has been declared stale by the BGP GR mechanism as described in Section 4.1 of [RFC4724].¶
Type = 28: (64-bit Gauge) Current Number of routes in per-AFI/SAFI marked as stale by Long-Lived Graceful Restart (LLGR). The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge. 'Stale' refers to a path which has been declared stale by the BGP LLGR mechanism as described in Section 4.3 of [RFC9494].¶
Type = 29: (64-bit Gauge) Current Number of routes left before exceeding the received route threshold as defined in Section 6.7 of [RFC4271].¶
Type = 30: (64-bit Gauge) Current Number of routes per-AFI/SAFI left before exceeding the received route threshold which corresponds to the upper bound of per-AFI/SAFI accepted routes following the model defined in Section 6.7 of [RFC4271]. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 31: (64-bit Gauge) Current Number of routes left before exceeding a license-customized route threshold. If no such license is configured, or if the license does not impose a hard limit, this value MUST NOT be reported.¶
Type = 32: (64-bit Gauge) Current Number of routes in per-AFI/SAFI left before exceeding a license-customized route threshold. If no such license is configured, or if the license does not impose a hard limit, this value MUST NOT be reported. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 33: (64-bit Gauge) Current number of routes rejected by exceeding the maximum AS_PATH length supported by the local configuration.¶
Type = 34: (64-bit Gauge) Current number of routes in per-AFI/SAFI rejected by exceeding the maximum AS_PATH length supported by the local configuration. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 35: (64-bit Gauge) Current number of routes in per-AFI/SAFI post-policy Adj-RIB-In invalidated through the Route Origin Authorization (ROA) of Resource Public Key Infrastructure (RPKI) [RFC6811]. This is total number of routes invalidated due to origin Autonomous System (AS) number mismatch and prefix length mismatch. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 36: (64-bit Gauge) Current number of routes in per-AFI/SAFI post-policy Adj-RIB-In validated by verifying route origin AS number through the ROA of RPKI [RFC6811]. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 37: (64-bit Gauge) Current number of routes in per-AFI/SAFI post-policy Adj-RIB-In whose RPKI route origin validation state is NotFound due to the absence of a matching ROA of RPKI [RFC6811]. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 38: (64-bit Gauge) Current number of routes in per-AFI/SAFI rejected by outbound policy. These routes are active routes which otherwise would have been advertised in absence of outbound policy which rejected them. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 39: (64-bit Gauge) Current number of routes filtered due to AS_PATH length exceeding the locally configured maximum.¶
Type = 40: (64-bit Gauge) Current number of routes in per-AFI/SAFI filtered due to AS_PATH length exceeding the locally configured maximum. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 41: (64-bit Gauge) Current number of routes in per-AFI/SAFI post-policy Adj-RIB-Out invalidated through the ROA of RPKI [RFC6811]. This is total number of routes invalidated due to origin AS number mismatch and prefix length mismatch. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 42: (64-bit Gauge) Current number of routes in per-AFI/SAFI post-policy Adj-RIB-Out validated by verifying route origin AS number through the ROA of RPKI [RFC6811]. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
Type = 43: (64-bit Gauge) Current number of routes in per-AFI/SAFI post-policy Adj-RIB-Out whose RPKI route origin validation state is NotFound due to the absence of a matching ROA of RPKI [RFC6811]. The value is structured as: 2-byte AFI, 1-byte SAFI, followed by a 64-bit Gauge.¶
This section briefly lists the statistics defined in this document and outlines their scope of application, as shown in Table 1.¶
+-------+----------+-----------+-------+
| Type |Adj-RIB-In|Adj-RIB-Out|Loc-RIB|
+-------+----------+-----------+-------+
| 18 | Y | N | N |
| 19 | Y | N | N |
| 20 | Y | N | N |
| 21 | Y | N | N |
| 22 | Y | N | N |
| 23 | Y | N | N |
| 24 | Y | N | Y |
| 25 | Y | N | Y |
| 26 | Y | N | Y |
| 27 | Y | N | Y |
| 28 | Y | N | Y |
| 29 | Y | N | N |
| 30 | Y | N | N |
| 31 | Y | N | Y |
| 32 | Y | N | Y |
| 33 | Y | N | N |
| 34 | Y | N | N |
| 35 | Y | N | N |
| 36 | Y | N | N |
| 37 | Y | N | N |
| 38 | N | Y | N |
| 39 | N | Y | N |
| 40 | N | Y | N |
| 41 | N | Y | N |
| 42 | N | Y | N |
| 43 | N | Y | N |
+-------+----------+-----------+-------+
Table 1: Scope of Application¶
This document specifies gauges for new BMP statistics. The format of BMP statistics messages remains unchanged from [RFC7854]. This section outlines the operational considerations for new BMP statistics.¶
This section outlines the considerations to produce gauges for BMP Statistics Report Messages.¶
Transmission scheduling and triggering mechanisms for new gauges are implementation-dependent. Implementations should determine appropriate report generation and delivery strategies, including configurable timing intervals and threshold values. The mechanism for controlling the reporting of new gauges should be consistent with that of existing types.¶
Some statistics are dependent on feature configurations, such as GR, LLGR, and RPKI, so the corresponding statistics should only be generated and sent when these features are enabled on the router. This statistics include Type 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, and 43.¶
Some statistics are also relevant for the Loc-RIB view [RFC9069], so they may apply to the Loc-RIB view after best-path selection is completed. This statistics include Type 24, 25, 26, 27, 28, 31, and 32. When this statistics apply to the Loc-RIB view, the Peer Type in the Per-Peer Header of the corresponding BMP Statistics Report Message MUST set to 3.¶
Certain statistics may have logical relationships (e.g., per-AFI/SAFI counts summing to global totals). Implementations MAY perform consistency checks but MUST NOT assume strict dependencies (due to potential race conditions or partial failures). Discrepancies (e.g., sum(per-AFI/SAFI) != global count) SHOULD be logged as warnings but MUST NOT disrupt protocol operation.¶
For backward compatibility, and absent policy otherwise, it is RECOMMENDED that monitored routers capable of generating both (Type 7 and Type 18) or (Type 9 and Type 19) BMP statistics should transmit both corresponding types simultaneously. This allows monitoring stations to process either format according to their needs without disrupting existing implementations that rely on Type 7 or Type 9. The selection of which statistic type(s) to generate within each pair should be treated as an implementation decision rather than a protocol requirement, with the monitoring station behavior for handling these statistic types remaining implementation-specific.¶
These gauges may reset due to session restart, manual clearance, or overflow. Implementations MUST track discontinuities and log this information.¶
This section outlines the considerations for the network operators who configure and use BMP statistics.¶
Operators SHOULD consider rate-limiting statistic updates to minimize performance impact on control-plane processes. Operators SHOULD enable only necessary statistics to reduce memory and CPU overhead. Implementations SHOULD also support per-router configuration of statistic subsets for collection and reporting.¶
The generation and transmission of type 27 and 28 during an active GR/LLGR event consumes additional control plane resources (e.g., CPU). Implementations should prioritize the core GR/LLGR convergence procedures. To avoid adversely impacting the restart process, an implementation may choose to sample this value at a lower frequency, buffer updates, or temporarily suspend reporting for this type during the most critical phases of a switchover.¶
Some implementations, or configurations in implementations, may discard routes that do not match policy and thus the accepted count (type 23) and the Adj-RIB-In counts (type 21) will be identical in such cases.¶
Procedures and protocol extensions defined in this document do not affect the BMP security model. All security and authentication mechanisms required by Section 11 of [RFC7854], Section 8 of [RFC8671], and Section 7 of [RFC9069] are also applicable to the gauges defined in this document. This document does not add any additional security considerations.¶
Monitored devices SHOULD be configured to implement rate-limited reporting of new gauges.¶
IANA has assigned the following new parameters in the BMP Statistics Types registry, part of the BMP parameters registry group.¶
This document requests IANA to update these entries as follows. Also, the document requests IANA to update the reference cited for the entries with the RFC number to be assigned to this document.¶
Type = 18: Number of routes currently in pre-policy Adj-RIB-In.¶
Type = 19: Number of routes currently in per-AFI/SAFI pre-policy Adj-RIB-In.¶
Type = 20: Number of routes currently in post-policy Adj-RIB-In.¶
Type = 21: Number of routes currently in per-AFI/SAFI post-policy Adj-RIB-In.¶
Type = 22: Number of routes currently in per-AFI/SAFI rejected by inbound policy.¶
Type = 23: Number of routes currently in per-AFI/SAFI accepted by inbound policy.¶
Type = 24: Number of routes currently in per-AFI/SAFI selected as primary route.¶
Type = 25: Number of routes currently in per-AFI/SAFI selected as a backup route.¶
Type = 26: Number of routes currently in per-AFI/SAFI suppressed by configured route damping policy.¶
Type = 27: Number of routes currently in per-AFI/SAFI marked as stale by GR events.¶
Type = 28: Number of routes currently in per-AFI/SAFI marked as stale by LLGR.¶
Type = 29: Number of routes currently left before exceeding the received route threshold.¶
Type = 30: Number of routes currently per-AFI/SAFI left before exceeding the received route threshold.¶
Type = 31: Number of routes currently left before exceeding a license-customized route threshold.¶
Type = 32: Number of routes currently in per-AFI/SAFI left before exceeding a license-customized route threshold.¶
Type = 33: Number of routes currently rejected due to exceeding the maximum AS_PATH length.¶
Type = 34: Number of routes currently in per-AFI/SAFI rejected due to exceeding the maximum AS_PATH length.¶
Type = 35: Number of routes currently in per-AFI/SAFI post-policy Adj-RIB-In invalidated after verifying route origin AS number through the ROA of RPKI.¶
Type = 36: Number of routes currently in per-AFI/SAFI post-policy Adj-RIB-In validated after verifying route origin AS number through the ROA of RPKI.¶
Type = 37: Number of routes currently in per-AFI/SAFI post-policy Adj-RIB-In whose RPKI route origin validation state is NotFound.¶
Type = 38: Number of routes currently in per-AFI/SAFI rejected by outbound policy.¶
Type = 39: Number of routes currently filtered due to AS_PATH length exceeding the locally configured maximum¶
Type = 40: Number of routes currently in per-AFI/SAFI filtered due to AS_PATH length exceeding the locally configured maximum.¶
Type = 41: Number of routes currently in per-AFI/SAFI post-policy Adj-RIB-Out invalidated after verifying route origin AS number through the ROA of RPKI.¶
Type = 42: Number of routes currently in per-AFI/SAFI post-policy Adj-RIB-Out validated after verifying route origin AS number through the ROA of RPKI.¶
Type = 43: Number of routes currently in per-AFI/SAFI post-policy Adj-RIB-Out whose RPKI route origin validation state is NotFound.¶
Note to the RFC Editor - remove this section before publication, as well as remove the reference to [RFC7942].¶
This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in [RFC7942]. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.¶
According to [RFC7942], "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".¶
Organization: New H3C Technologies.¶
Implementation: H3C CR16000, CR19000 series routers implementation of New BMP Statistics Type.¶
Description: Below New types have been implemented in above-mentioned New H3C Products (running Version 7.1.086 and above).¶
Maturity Level: Demo¶
Coverage:¶
Version: Draft-05¶
Licensing: N/A¶
Implementation experience: Nothing specific.¶
Contact: linchangwang.04414@h3c.com¶
Last updated: January 20, 2025¶
The author would like to thank Jeff Haas, Mohamed Boucadair, Thomas Graf, and Prasad S. Narasimha for their valuable input.¶
Thanks to Giuseppe Fioccola for the OPSDIR, Jouni Korhonen for the GENART, and Bruno Decraene for the RTGDIR review.¶
Thanks to Gunter van de Velde, Eric Vyncke, and Ketan Talaulikar for the IESG review.¶