<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-sp-grow-bmp-gen-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="GEN Message for BMP">Generic Event Notification (GEN) for BGP Monitoring Protocol (BMP)</title>

    <author initials="T." surname="Saad" fullname="Tarek Saad">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>CA</country>
        </postal>
        <email>tsaad@cisco.com</email>
      </address>
    </author>
    <author initials="P." surname="Narasimha" fullname="Prasad S. Narasimha">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>IND</country>
        </postal>
        <email>snprasad@cisco.com</email>
      </address>
    </author>

    <date year="2025" month="October" day="19"/>

    
    <workgroup>GROW</workgroup>
    <keyword>Internet-Draft</keyword> <keyword>BMP</keyword> <keyword>BGP</keyword> <keyword>Event Notification</keyword>

    <abstract>


<?line 30?>

<t>This document defines a new BMP message type: the Generic Event Notification
(GEN). The BMP GEN message provides a flexible mechanism for reporting a wide variety
of events related to BGP at different levels of hierarchy, such as routing
instance, AFI/SAFI, or peer level.  The BMP GEN message enables operators and automated
systems to receive detailed context for operational events, such as policy
triggers, administrative interventions, and state management notifications (e.g., RIB view unmonitor events).</t>



    </abstract>



  </front>

  <middle>


<?line 40?>

<section anchor="introduction"><name>Introduction</name>

<t>The BGP Monitoring Protocol (BMP) <xref target="RFC7854"></xref> provides network operators with
visibility into BGP message exchanges. Recent extensions, such as
<xref target="I-D.ietf-grow-bmp-rel"/>, increase the range of observable BGP-related events.
However, there is a need for a more generic, extensible message type capable of
reporting diverse operational events, including policy triggers, automated
network adjustments, administrative interventions, and notifications for
collector state management, such as route table purges.</t>

<t>This document introduces the BMP Generic Event Notification (GEN) message,
designed to flexibly report on such events with enough context to allow the
collector to take the appropriate action.</t>

<t>The BMP GEN message can be used to deliver a variety of notifications,
including a RIB View notification, which allows a BMP sender to request that
the BMP collector purge the state associated with specific peers and RIB views.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t><list style="symbols">
  <t>GEN: Generic Event Notification</t>
  <t>BMP: BGP Monitoring Protocol</t>
  <t>BGP: Border Gateway Protocol</t>
  <t>TLV: Type-Length-Value</t>
  <t>RIB: Routing Information Base</t>
</list></t>

</section>
<section anchor="motivation"><name>Motivation</name>

<t>The current BMP message types focus primarily on peer session events
and per-route updates. Network operators and automated systems often
require notification of a broader class of events, such as:</t>

<t><list style="symbols">
  <t>RIB state management, such as notifying the collector when a RIB view is no longer being monitored.</t>
  <t>Administrative resets, disables, or maintenance windows</t>
  <t>Notifications about the status of various internal FSM router states (e.g., Import Completed, Export Completed, etc.)</t>
  <t>Detection of anomalous behavior or threshold crossings</t>
</list></t>

<t>The BMP GEN message provides structured reporting of such events, including a
clear indication of the event type and related context.</t>

</section>
<section anchor="the-bmp-gen-message-format"><name>The BMP GEN Message Format</name>

<t>The BMP GEN message is a new BMP message type.</t>

<section anchor="the-bmp-message-common-header"><name>The BMP Message Common Header</name>

<t>The BMP GEN message uses the BMP message common header as defined in <xref target="RFC7854"/>:</t>

<figure title="The BMP message common header" anchor="fig-gen-msg-hdr"><artwork><![CDATA[
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    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Message Length                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Msg. Type   |
+---------------+
]]></artwork></figure>

<t>where a new Message Type = TBD1 is assigned to the BMP GEN message type.</t>

</section>
<section anchor="the-bmp-gen-message-body"><name>The BMP GEN Message Body</name>

<t>The BMP GEN message body is formatted as follows:</t>

<figure title="The BMP GEN message contents" anchor="fig-gen-msg"><artwork><![CDATA[
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
+---------------------------------------------------------------+
| Event Type (2 octets)       | Flags (2 octets)                |
+---------------------------------------------------------------+
|                    Timestamp (seconds)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Timestamp (microseconds)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Event Sub-TLVs (variable)                    |
+---------------------------------------------------------------+
]]></artwork></figure>

<t>The BMP GEN message is extensible for future event types.
It is meant to supplement, but not replace, existing BMP message types.</t>

<dl newline="true">
  <dt>Event Type:</dt>
  <dd>
    <t>Identifies the event class (see <xref target="evt-type"/> for example Event Types).</t>
  </dd>
  <dt>Flags:</dt>
  <dd>
    <t>Reserved for future use.</t>
  </dd>
  <dt>Timestamp:</dt>
  <dd>
    <t>The time when the event occurred, expressed as seconds and microseconds since midnight (00:00), January 1, 1970 (UTC). If both are zero, the time is unavailable. Precision of the timestamp is implementation-dependent.</t>
  </dd>
  <dt>Event Sub-TLVs:</dt>
  <dd>
    <t>Optional Sub-TLVs for additional context for the event that occurred (see <xref target="evt-subtlv"/> for example Sub-TLVs).</t>
  </dd>
</dl>

</section>
<section anchor="the-bmp-gen-message-fields"><name>The BMP GEN Message Fields</name>

<t>The following fields are defined for BMP GEN messages.</t>

<section anchor="evt-type"><name>Example Event Types</name>

<t>The following Event Types are defined:</t>

<t><list style="symbols">
  <t>Type=0 : RIB View Unmonitor</t>
  <t>Type=1 : Route Import Complete</t>
  <t>Type=2 : Peer Configured is Down</t>
</list></t>

</section>
<section anchor="evt-subtlv"><name>Event Sub-TLVs</name>

<t>The Event Sub-TLVs are encoded as a list of optional Sub-TLVs that
add context to the associated event.</t>

<t>All Event Sub-TLVs use a 2-octet Type field and a 2-octet Length field.
The Event Sub-TLV is defined as follows:</t>

<figure title="BMP GEN message optional Event Sub-TLVs" anchor="fig-list-subtlvs"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Type (2 octets)        |       Length (2 octets)       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\\                         Value                               \\
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The following are BMP GEN message Event Sub-TLV Types that are defined in this document:</t>

<texttable title="Event Sub-TLVs Types defined in this document" anchor="tab1">
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Length</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Value Format</ttcol>
      <c>0</c>
      <c>Variable</c>
      <c>Reason String</c>
      <c>UTF-8 string</c>
      <c>1</c>
      <c>1 octet</c>
      <c>RIB View</c>
      <c>see <xref target="sec-rib-view-subtlv"/></c>
      <c>2</c>
      <c>8 octets</c>
      <c>Route Distinguisher</c>
      <c>see <xref target="sec-route-distinguisher-subtlv"/></c>
      <c>3</c>
      <c>4 or 16 octets</c>
      <c>Peer Address</c>
      <c>see <xref target="sec-peer-address-subtlv"/></c>
      <c>4</c>
      <c>1 octet</c>
      <c>Reason Code</c>
      <c>see <xref target="sec-reason-code-subtlv"/></c>
</texttable>

</section>
<section anchor="sec-rib-view-subtlv"><name>RIB View Event Sub-TLV</name>

<t>The RIB View Event Sub-TLV identifies one or more RIB views that are relevant to the event.
The encoding of the RIB View Event Sub-TLV is shown in <xref target="fig-rib-view-subtlv"/>.</t>

<figure title="The RIB View Event Sub-TLV encoding" anchor="fig-rib-view-subtlv"><artwork><![CDATA[
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Type=1                 |       Length=1                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  RIB View     |
+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl newline="true">
  <dt>Type=1:</dt>
  <dd>
    <t>Identifies the RIB View Event Sub-TLV Type.</t>
  </dd>
  <dt>Length=1:</dt>
  <dd>
    <t>1-byte.</t>
  </dd>
  <dt>RIB View:</dt>
  <dd>
    <t>The RIB View value. This value is divided into 2 parts as shown in <xref target="rib-view-enc"/>.</t>
  </dd>
</dl>

<figure title="RIB View value encoding" anchor="rib-view-enc"><sourcecode type="~"><![CDATA[
                        +-+-+-+-+-+-+-+-+
                        |Type | View    |
                        +-+-+-+-+-+-+-+-+
]]></sourcecode></figure>

<t>The RIB views are encoded as a bitmap in 1-octet to allow designating multiple views at the same time. The 3 most significant bits designate the Type (Pre and/or Post).
The remaining 5 bits designate the specific RIB view (Adj-RIB-In, Adj-RIB-Out, and/or Local-RIB) as shown in <xref target="tab2"/>.</t>

<t>The following values are defined in this document:</t>

<texttable title="RIB Views" anchor="tab2">
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>View</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>001 (Pre)</c>
      <c>00001 (Adj-RIB-In)</c>
      <c>Adj-RIB-In Pre</c>
      <c>010 (Post)</c>
      <c>00001 (Adj-RIB-In)</c>
      <c>Adj-RIB-In Post</c>
      <c>001 (Pre)</c>
      <c>00010 (Adj-RIB-Out)</c>
      <c>Adj-RIB-Out Pre</c>
      <c>010 (Post)</c>
      <c>00010 (Adj-RIB-Out)</c>
      <c>Adj-RIB-Out Post</c>
      <c>000</c>
      <c>00100</c>
      <c>Local-RIB</c>
</texttable>

</section>
<section anchor="sec-text-expl-subtlv"><name>Reason String Event Sub-TLV</name>

<t>The Reason String Event Sub-TLV provides a UTF-8 encoded string
describing the event in human-readable form. This Sub-TLV is intended to assist
operators or automated systems in interpreting the context or rationale for the
event, such as "Adj-RIB-Out export stopped by operator" or "Peer remains in
down state".</t>

<t>The encoding of the Reason String Event Sub-TLV is shown in <xref target="fig-text-expl-subtlv"/>.</t>

<figure title="The Reason String Event Sub-TLV encoding" anchor="fig-text-expl-subtlv"><artwork><![CDATA[
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Type=0                 |       Length (Variable)       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\\                     Reason String                           \\
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl newline="true">
  <dt>Type=0:</dt>
  <dd>
    <t>Identifies the Reason String Event Sub-TLV Type.</t>
  </dd>
  <dt>Length (Variable):</dt>
  <dd>
    <t>The length of the string in bytes.</t>
  </dd>
  <dt>Reason String:</dt>
  <dd>
    <t>The UTF-8 string not null-terminated.</t>
  </dd>
</dl>

</section>
<section anchor="sec-route-distinguisher-subtlv"><name>Route Distinguisher Sub-TLV</name>

<t>The Route Distinguisher Event Sub-TLV allows identification of a particular VPN routing context.
When present in the BMP GEN list of Event Sub-TLVs, the IP address that directly follows the Route Distinguisher Event Sub-TLV MUST
be interpreted within the context of the routing instance associated with the
Route Distinguisher.</t>

<t>The encoding of the Route Distinguisher Event Sub-TLV is shown in <xref target="fig-route-distinguisher-subtlv"/>:</t>

<figure title="The Route Distinguisher Event Sub-TLV encoding" anchor="fig-route-distinguisher-subtlv"><artwork><![CDATA[
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Type=2                 |       Length=8                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Route Distinguisher                         |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl newline="true">
  <dt>Type=2:</dt>
  <dd>
    <t>Identifies the Route Distinguisher Event Sub-TLV Type.</t>
  </dd>
  <dt>Length=8:</dt>
  <dd>
    <t>The length in bytes of the Route Distinguisher field (always 8 bytes).</t>
  </dd>
  <dt>Route Distinguisher:</dt>
  <dd>
    <t>The Route Distinguisher value as per <xref target="RFC4364"/>.</t>
  </dd>
</dl>

</section>
<section anchor="sec-peer-address-subtlv"><name>Peer Address Event Sub-TLV</name>

<t>The Peer Address Event Sub-TLV identifies a BGP peer that is relevant to the
event. If more than one peer is relevant to the event, multiple Peer Address Sub-TLVs MAY be included.</t>

<t>The encoding of the Peer Address Event Sub-TLV is shown in <xref target="fig-peer-address-subtlv"/>:</t>

<figure title="The Peer Address Event Sub-TLV encoding" anchor="fig-peer-address-subtlv"><artwork><![CDATA[
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Type=3                 |       Length=(4 or 16)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Peer Address (4 or 16 bytes)                  |
~                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl newline="true">
  <dt>Type=3:</dt>
  <dd>
    <t>Identifies the Peer Address Event Sub-TLV Type.</t>
  </dd>
  <dt>Length=(4 or 16):</dt>
  <dd>
    <t>The length in bytes of the Peer Address. This
is 4 bytes for IPv4 address and 16-bytes for IPv6 address.</t>
  </dd>
  <dt>Peer Address:</dt>
  <dd>
    <t>The BGP Peer IPv4 or IPv6 address.</t>
  </dd>
</dl>

</section>
<section anchor="sec-reason-code-subtlv"><name>Reason Code Event Sub-TLV</name>

<t>The Reason Code Event Sub-TLV provides a 1-octet code indicating the reason for
the event. The encoding of the Reason Code Event Sub-TLV is shown in <xref target="fig-reas-code-subtlv"/>:</t>

<figure title="The Reason Code Event Sub-TLV encoding" anchor="fig-reas-code-subtlv"><artwork><![CDATA[
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Type=4                 |       Length=1                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reason Code   |
+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<dl newline="true">
  <dt>Type=4:</dt>
  <dd>
    <t>Identifies the Reason Code Event Sub-TLV Type.</t>
  </dd>
  <dt>Length=1:</dt>
  <dd>
    <t>1-byte.</t>
  </dd>
  <dt>Reason Code:</dt>
  <dd>
    <t>The Reason Code Value. The following Reason Code values are defined in this document:</t>
  </dd>
</dl>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>Value=0: Administrative (e.g., operator action or configuration change)</t>
    <t>Value=1: Periodic       (e.g., scheduled or timer-based)</t>
    <t>Value=2: Error          (e.g., protocol error, failure detected)</t>
  </list></t>
</li></ul>

<t>Additional values may be defined in future documents.</t>

</section>
</section>
<section anchor="use-cases"><name>Use Cases</name>

<section anchor="example-scenario-rib-view-unmonitor"><name>Example Scenario: RIB View Unmonitor</name>

<t>Description:</t>

<ul empty="true"><li>
  <t>A BMP sender can stop exporting a RIB view to a BMP collector at any time after
its initial export.  Without a notification from the BMP sender, the collector may maintain stale state.</t>
</li></ul>

<ul empty="true"><li>
  <t>A RIB View Unmonitor event notifies the BMP collector that the specific RIB view 
is no longer being monitored on the BMP sender and updates for that RIB view will no
longer be sent. The BMP collector, in this case, SHOULD purge any data associated
with that RIB view that was previously received.</t>
</li></ul>

<t>Scenario:</t>

<ul empty="true"><li>
  <t>Adj-RIB-Out Export Stopped Due to Configuration Change</t>
</li></ul>

<t>Background:</t>

<ul empty="true"><li>
  <t>A network operator decides to stop exporting the Adj-RIB-Out view for a particular peer (e.g., to reduce monitoring overhead or due to a policy change).</t>
</li></ul>

<t>Event:</t>

<ul empty="true"><li>
  <t>The halt of Adj-RIB-Out export for all peers to the BMP collector.</t>
</li></ul>

<t>Example BMP GEN Message:</t>

<ul empty="true"><li>
  <t>The router sends a BMP GEN message to the BMP collector to notify
that the Adj-RIB-Out view export is stopped for all peers and that any
associated state should be purged.</t>
</li></ul>

<figure><sourcecode type="json"><![CDATA[
{
  "eventType": 0,                           // RIB View Unmonitor
  "eventTimestampSeconds": 1712959200,      // Seconds
  "eventTimestampMicroseconds": 123,        // Microseconds
  "eventSubTLVs": [
    { "type": 0, "value": "Operator triggered for maintenance" },
                                            // Reason String
    { "type": 1, "value": [0, 0, 1, 0, 0, 0, 1, 0] }
                         // RIB View (bitmap for Adj-RIB-Out Pre)
  ]
}
]]></sourcecode></figure>

</section>
<section anchor="example-scenario-route-import-complete"><name>Example Scenario: Route Import Complete</name>

<t>Description:</t>

<ul empty="true"><li>
  <t>Router has completed the route import activity. The trigger could be the configuration of VPN AFI/SAFI or the relevant
neighbors coming up, among other events.</t>
</li></ul>

<ul empty="true"><li>
  <t>This event can be for:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>

    <figure><artwork><![CDATA[
- all routing instances (VRFs),
- a given routing instance, or
- a given AFI/SAFI.
]]></artwork></figure>
  </li></ul>
</li></ul>

<t>Scenario:</t>

<ul empty="true"><li>
  <t>A router has completed route import from VPN AFI/SAFI to all local routing instances (VRFs).</t>
</li></ul>

<t>Event:</t>

<ul empty="true"><li>
  <t>The completion of a full walk of VPN AFI/SAFI and route import activity.</t>
</li></ul>

<t>Example BMP GEN Message:</t>

<ul empty="true"><li>
  <t>The router sends a BMP GEN message to the BMP collector to notify
that import activity has completed.</t>
</li></ul>

<figure><sourcecode type="json"><![CDATA[
{
  "eventType": 1,                        // Route Import Complete
  "eventTimestampSeconds": 1712959200,   // Seconds
  "eventTimestampMicroseconds": 123      // Microseconds
}
]]></sourcecode></figure>

</section>
<section anchor="example-scenario-peer-configured-is-down"><name>Example Scenario: Peer Configured is Down</name>

<t>Description:</t>

<ul empty="true"><li>
  <t>The router has peers configured that are not administratively shut down but are not operationally up.
The duration for which they are down SHOULD be a configurable value on the router.</t>
</li></ul>

<ul empty="true"><li>
  <t>This event can be for:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>

    <figure><artwork><![CDATA[
- a given peer, or
- a set of peers.
]]></artwork></figure>
  </li></ul>
</li></ul>

<t>Scenario:</t>

<ul empty="true"><li>
  <t>The operator configures a BGP peer (198.51.100.2) under the routing instance identified by Type=1 RD (198.51.100.1:10).
The BGP peer remains in DOWN state after the configured 10-minute interval.</t>
</li></ul>

<t>Event:</t>

<ul empty="true"><li>
  <t>The BGP peer (RD=198.51.100.1:10, 198.51.100.2) does not come up after 10 minutes elapse from when it is configured.</t>
</li></ul>

<t>Example BMP GEN Message:</t>

<ul empty="true"><li>
  <t>The router sends a BMP GEN message to the BMP collector to notify that 
the BGP peer (RD=198.51.100.1:10, 198.51.100.2) is in DOWN state.</t>
</li></ul>

<t>Note: The Route Distinguisher is encoded as an 8-octet value per <xref target="RFC4364"/>.
 The value shown is a hexadecimal representation for illustration.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "eventType": 2,                              // Peer in Down
  "eventTimestampSeconds": 1712959200,         // Seconds
  "eventTimestampMicroseconds": 123,           // Microseconds
  "eventSubTLVs": [
    { "type": 0, "value": "Peer remains in down state" },
                                               // Reason String
    { "type": 2, "value": [0, 1, 198, 51, 100, 1, 0, 10] },
           // Route Distinguisher (8-octet value per RFC4364,
           // example: 198.51.100.1:10)
    { "type": 3, "value": "198.51.100.2" }     // Peer Address
  ]
}
]]></sourcecode></figure>

</section>
</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The BMP GEN messages may carry sensitive operational context. Implementations MUST
ensure integrity and authenticity, for example by using transport security as
recommended in <xref target="RFC7854"/>. Purge notifications can affect collector state and
SHOULD only be accepted from authorized BMP senders.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to assign the following from the "BGP Monitoring Protocol (BMP) Parameters" registry
(https://www.iana.org/assignments/bmp-parameters/).</t>

<section anchor="bmp-message-type"><name>BMP Message Type</name>

<t>A new BMP Message Type value (TBD1) is to be assigned for the BMP GEN message.</t>

</section>
<section anchor="bmp-gen-evt-types"><name>BMP GEN Event Types</name>

<t>IANA is requested to create a new registry for BMP GEN Event Types.
The following Event Types that are defined in this document (see <xref target="evt-type"/>):</t>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>      <dl>
        <dt>Type=0 :</dt>
        <dd>
          <t>RIB View Unmonitor</t>
        </dd>
      </dl>
    </t>
    <t>      <dl>
        <dt>Type=1 :</dt>
        <dd>
          <t>Route Import Complete</t>
        </dd>
      </dl>
    </t>
    <t>      <dl>
        <dt>Type=2 :</dt>
        <dd>
          <t>Peer Configured is Down</t>
        </dd>
      </dl>
    </t>
  </list></t>
</li></ul>

</section>
<section anchor="bmp-gen-event-sub-tlv-types"><name>BMP GEN Event Sub-TLV Types</name>

<t>IANA is requested to create a new registry for BMP GEN Event Sub-TLV Types. The Event Sub-TLV Types described
in <xref target="tab1"/> are defined in this document.</t>

</section>
</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors would like to thank Dhananjay Patki for his detailed review and
feedback. Additional thanks are extended to Jeff Haas, Luuk
Hendriks, and Ben Maddison for their valuable comments and suggestions.
Their insights greatly improved the quality and clarity of this document.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC7854">
  <front>
    <title>BGP Monitoring Protocol (BMP)</title>
    <author fullname="J. Scudder" initials="J." role="editor" surname="Scudder"/>
    <author fullname="R. Fernando" initials="R." surname="Fernando"/>
    <author fullname="S. Stuart" initials="S." surname="Stuart"/>
    <date month="June" year="2016"/>
    <abstract>
      <t>This document defines the BGP Monitoring Protocol (BMP), which can be used to monitor BGP sessions. BMP is intended to provide a convenient interface for obtaining route views. Prior to the introduction of BMP, screen scraping was the most commonly used approach to obtaining such views. The design goals are to keep BMP simple, useful, easily implemented, and minimally service affecting. BMP is not suitable for use as a routing protocol.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7854"/>
  <seriesInfo name="DOI" value="10.17487/RFC7854"/>
</reference>

<reference anchor="RFC4364">
  <front>
    <title>BGP/MPLS IP Virtual Private Networks (VPNs)</title>
    <author fullname="E. Rosen" initials="E." surname="Rosen"/>
    <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
    <date month="February" year="2006"/>
    <abstract>
      <t>This document describes a method by which a Service Provider may use an IP backbone to provide IP Virtual Private Networks (VPNs) for its customers. This method uses a "peer model", in which the customers' edge routers (CE routers) send their routes to the Service Provider's edge routers (PE routers); there is no "overlay" visible to the customer's routing algorithm, and CE routers at different sites do not peer with each other. Data packets are tunneled through the backbone, so that the core routers do not need to know the VPN routes. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4364"/>
  <seriesInfo name="DOI" value="10.17487/RFC4364"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.ietf-grow-bmp-rel">
   <front>
      <title>Logging of routing events in BGP Monitoring Protocol (BMP)</title>
      <author fullname="Paolo Lucente" initials="P." surname="Lucente">
         <organization>NTT</organization>
      </author>
      <author fullname="Camilo Cardona" initials="C." surname="Cardona">
         <organization>NTT</organization>
      </author>
      <date day="3" month="September" year="2025"/>
      <abstract>
	 <t>   The BGP Monitoring Protocol (BMP) does provision for BGP session
   event logging (Peer Up, Peer Down), state synchronization (Route
   Monitoring), debugging (Route Mirroring) and Statistics messages,
   among the others.  This document defines a new Route Event Logging
   (REL) message type for BMP with the aim of covering use-cases with
   affinity to alerting, reporting and on-change analysis.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-grow-bmp-rel-04"/>
   
</reference>




    </references>

</references>



  </back>

<!-- ##markdown-source:
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

-->

</rfc>

