<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liu-grow-bmp-multiple-peer-header-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="BMP Multi-Peer Header">Definition for BMP Multiple Peer Header</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-grow-bmp-multiple-peer-header-02"/>
    <author initials="Y." surname="Liu" fullname="Yisong Liu">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liuyisong@chinamobile.com</email>
      </address>
    </author>
    <author initials="C." surname="Lin" fullname="Changwang Lin">
      <organization>New H3C Technologies</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>linchangwang.04414@h3c.com</email>
      </address>
    </author>
    <author initials="P." surname="Narasimha" fullname="Prasad S. Narasimha">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <email>snprasad@cisco.com</email>
      </address>
    </author>
    <author initials="M." surname="Srivastava" fullname="Mukul Srivastava">
      <organization>Hewlett Packard Enterprise</organization>
      <address>
        <postal>
          <street>10 Technology Park Dr</street>
          <region>Westford, MA 01886</region>
          <country>United States of America</country>
        </postal>
        <email>mukul.srivastava@hpe.com</email>
      </address>
    </author>
    <date year="2026"/>
    <area>ops</area>
    <workgroup>GROW Working Group</workgroup>
    <keyword>BMP, multiple, peer, header</keyword>
    <abstract>
      <?line 69?>

<t>This document proposes a format of multiple peer header for
   aggregating BMP messages. It can be used to compress multiple BMP
   messages with per-peer header into one aggregated BMP message, which
   could reduce the amount of reported BMP messages and reduce network
   overhead.</t>
    </abstract>
  </front>
  <middle>
    <?line 77?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC7854"/> defines the format of BMP messages including Initiation
   message, Termination message, Route Monitoring message, Route
   Mirroring message, Stats Reports message, and Peer Down/Up
   Notification message. Except Initiation and Termination message, all
   other BMP messages contain a Per-Peer Header. For BMP messages that
   include a Per-Peer Header, referred to as BMP Per-Peer message, a
   common format is defined as shown in <xref target="fig-bmp-common-format"/>.</t>
      <figure anchor="fig-bmp-common-format">
        <name>Common Format of BMP Per-Peer Message</name>
        <artwork type="ascii-art"><![CDATA[
                  +------------------------------+
                  |       Common Header          |
                  +------------------------------+
                  |       Per-Peer Header        |
                  +------------------------------+
                  |       BMP TLV                |
                  +------------------------------+
]]></artwork>
      </figure>
      <t>Depending on the BMP message type in Common Header, the BMP TLV
   represents the corresponding BMP information.</t>
      <t>For multiple BMP Per-Peer messages, their BMP TLV may have both
   identical and differing parts. When transmitting BMP Per-Peer
   messages of the same type, these messages can be consolidated into a
   single message, retaining only one copy of the identical parts to
   reduce the message size, network overhead and improve overall
   network performance.</t>
      <t>This document defines a new BMP message type, referred to as
   Multi-Peer Header message. It can be used to compress multiple BMP
   messages of same type, each with a per-peer header, into a single
   aggregated BMP message, which could reduce the amount of reported
   BMP messages and reduce network overhead.</t>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
   capitals, as shown here.</t>
    </section>
    <section anchor="multi-peer-header-definition">
      <name>Multi-Peer Header Definition</name>
      <t>This section adds a new BMP message type for Multi-Peer Header,
   which is populated in the message type field of the Common Header.</t>
      <t>Message Type = TBD: Multi-Peer Header, Recommended value 7.</t>
      <t>The Multi-Peer Header mechanism defined in this document serves as
   a general framework for aggregating any BMP message type that includes
   a Per-Peer Header. While specific optimizations and detailed formats
   for particular message types (such as Statistics Reports) may be defined
   in future extensions, this document establishes the foundational structure
   that enables such optimizations.</t>
    </section>
    <section anchor="multi-peer-header-message-format">
      <name>Multi-Peer Header Message Format</name>
      <t>This section defines the BMP Multi-Peer Header message format, as
   shown in <xref target="fig-bmp-multi-peer-header-format"/>.</t>
      <figure anchor="fig-bmp-multi-peer-header-format">
        <name>BMP Multi-Peer Header Message Format</name>
        <artwork type="ascii-art"><![CDATA[
               +-------------------------------------+
               |       Common Header (Type = TBD)    |
               +-------------------------------------+
               |       Common Multi-Peer Header      |
               ~                                     ~
               +-------------------------------------+
               |       Common Information            |
               ~                                     ~
               +-------------------------------------+
]]></artwork>
      </figure>
      <t>In the BMP Multi-Peer Header message format, the Common Header is
   the same as that defined in Section 4.1 of <xref target="RFC7854"/>, the Common
   Multi-Peer Header carries the distinct Per-Peer Information of the
   corresponding BMP Per-Peer message, and the Common Information
   comprises the identical part of the corresponding BMP Per-Peer
   message.</t>
      <t>The Common Multi-Peer Header format is defined in Section 5. The
   Common Information format is defined differently based on various
   Message Types in the Common Multi-Peer Header.</t>
    </section>
    <section anchor="common-multi-peer-header-format">
      <name>Common Multi-Peer Header Format</name>
      <t>This section defines the format of the Common Multi-Peer Header in
   BMP Multi-Peer Header message, as shown in <xref target="fig-common-multi-peer-header-format"/>.
   The Multi-Peer Message Type maps to existing BMP message types that include a Per-Peer
   Header, as defined in <xref target="RFC7854"/> (such as Route Monitoring, Peer
   Down Notification and Peer Up Notification).</t>
      <t>The Common Multi-Peer Header can be used to construct a BMP Multi-Peer
   Header message with various Multi-Peer Message Type. The Wild
   Card Per-Peer Header is defined below and is similar to the Per-Peer
   Header defined in Section 4.2 of <xref target="RFC7854"/>. The Per-Peer Information
   is the different part of the corresponding BMP Per-Peer message.</t>
      <figure anchor="fig-common-multi-peer-header-format">
        <name>Common Multi-Peer Header Format</name>
        <artwork type="ascii-art"><![CDATA[
      +--------------------------------------------------------+
      |    Multi-Peer Message Type (1 byte)                    |
      +--------------------------------------------------------+
      |    Multi-Peer Message Length (2 byte)                  |
      +--------------------------------------------------------+
      |    Wild Card Per-Peer Header 1                         |
      +--------------------------------------------------------+
      |    Per-Peer Information Length 1 (2 bytes)             |
      +--------------------------------------------------------+
      |    Per-Peer Information 1                              |
      ~                                                        ~
      +--------------------------------------------------------+
      |    Wild Card Per-Peer Header N                         |
      +--------------------------------------------------------+
      |    Per-Peer Information Length N (2 bytes)             |
      +--------------------------------------------------------+
      |    Per-Peer Information N                              |
      ~                                                        ~
      +--------------------------------------------------------+
]]></artwork>
      </figure>
      <t>In the Common Multi-Peer Header format, The Multi-Peer Message Type
   definition is not included in this document, and it needs to be
   defined according to the specific application of BMP message type.</t>
      <t>The Multi-Peer Message Length is the length of Common Multi-Peer
   Header in bytes (including all Wild Card Per-Peer Headers, Per-Peer
   Information Lengths, and Per-Peer Information).</t>
      <t>The Per-Peer Information format can vary based on the various Multi-Peer
   Message Types. Each Wild Card Per-Peer Header could be followed
   by its unique/distinct Per-Peer Information corresponding the BMP
   Per-Peer Message. If no Per-Peer Information follows the Wild Card
   Per-Peer Header, the corresponding Per-Peer Information Length MUST
   be set to 0.</t>
      <t>This document defines an Wild Card Per-Peer Header, that could be
   used to apply to multiple peers, if desired. It is defined according
   to Per-Peer Header of <xref target="RFC7854"/>, as shown in <xref target="fig-wild-per-peer-header-format"/>.</t>
      <figure anchor="fig-wild-per-peer-header-format">
        <name>Wild Card Per-Peer Header Format</name>
        <artwork type="ascii-art"><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Peer Type   |  Peer Flags   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Peer Distinguisher (present based on peer type)       |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Peer Address (16 bytes)                       |
   ~                                                               ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Peer Mask (16 bytes)                          |
   ~                                                               ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Peer AS                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         Peer BGP ID                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Timestamp (seconds)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  Timestamp (microseconds)                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>Compared with Per-Peer Header define in Section 4.2 of <xref target="RFC7854"/>,
   the Peer Mask is added to indicate the mask of Peer Address.</t>
      <ul spacing="normal">
        <li>
          <t>When Peer Mask is 32 for IPv4 and 128 for IPv6 - the Peer Address
is used to indicate a specific peer (like the Peer Address of
Per-Peer Header in RFC 7854).</t>
        </li>
        <li>
          <t>When Peer Mask is 0 and Peer Address is 0 - the Wild Card Peer
Header applies to for all peers.</t>
        </li>
        <li>
          <t>Other non-zero values of Peer Mask - the Wild Card peer header
applies to multiple peers matching 'peer address' AND 'peer mask'
criteria.</t>
        </li>
      </ul>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <t>The Multi-Peer Header mechanism defined in this document is designed
   to optimize the transmission efficiency of BMP <xref target="RFC7854"/>
   by aggregating messages that share common data across multiple peers.
   This section outlines several practical use cases where applying the
   Multi-Peer Header can significantly reduce network overhead and improve
   processing scalability at the monitoring station.</t>
      <section anchor="aggregation-of-peer-down-notifications">
        <name>Aggregation of Peer Down Notifications</name>
        <t>In scenarios where a monitoring router experiences a common failure event
   (e.g., a link failure, maintenance action, or local software restart) that
   causes simultaneous BGP session discontinuities with multiple peers, multiple
   Peer Down Notification messages would typically be generated. These Peer Down
   Notification messages can be aggregated by using the Multi-Peer Header mechanism.</t>
        <ul spacing="normal">
          <li>
            <t>How it works: The <tt>Common Information</tt> section of the Multi-Peer Header Message
would contain the common <tt>Reason</tt> code and any associated <tt>Reason TLVs</tt>
(e.g., descriptive text) that apply to all affected sessions. Each distinct peer
session is then represented by a <tt>Wild Card Per-Peer Header</tt> (with its specific Peer
Address, AS, etc.) in the <tt>Common Multi-Peer Header</tt>. The <tt>Per-Peer Information</tt>
for each may be empty or contain peer-specific details if needed.</t>
          </li>
          <li>
            <t>Benefit: Instead of sending N individual Peer Down Notification messages
(each with a full Per-Peer Header and repeated Reason information), a single
aggregated message is transmitted. This drastically reduces the number of packets
during failure storms, easing the load on the network and the collection system.</t>
          </li>
        </ul>
      </section>
      <section anchor="optimized-route-monitoring-and-route-mirroring-for-common-updates">
        <name>Optimized Route Monitoring and Route Mirroring for Common Updates</name>
        <t>Route Monitoring and Route Mirroring messages are the core BMP message types that
   carry actual BGP UPDATE message. When similar BGP UPDATE messages affect multiple
   peers, aggregation using the Multi-Peer Header mechanism can significantly improve
   efficiency.</t>
        <ul spacing="normal">
          <li>
            <t>How it works: The identical parts of BGP UPDATE PDUs (Protocol Data Unit) form
the Common Information section. The Common Multi-Peer Header then lists the
different parts of the set of peers (identified by their Wild Card Per-Peer
Headers) associated with these BGP UPDATE PDUs.</t>
          </li>
          <li>
            <t>Benefit: Avoids transmitting multiple similar copies of the same, potentially
large, BGP UPDATE payload. This is particularly useful for recording widespread
routing events or anomalies in a bandwidth-efficient manner.</t>
          </li>
          <li>
            <t>Notes:  </t>
            <ul spacing="normal">
              <li>
                <t>Route Monitoring: This represents the most straightforward
and efficient use case for aggregation. Since standard Route
Monitoring messages primarily record which prefixes/paths
were advertised or withdrawn by which peer, aggregation does
not lose essential information.</t>
              </li>
              <li>
                <t>Route Mirroring: Implementers should be aware that this
aggregation loses the precise temporal ordering and per-peer
context that might be critical for some debugging purposes.
Its use should be configurable and appropriate to the
troubleshooting scenario.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="aggregation-of-peer-up-notifications">
        <name>Aggregation of Peer-up Notifications</name>
        <t>In scenarios where a monitoring router establishes BGP sessions with multiple peers that share
   common session parameters, Peer Up Notification messages can be efficiently aggregated using
   the Multi-Peer Header mechanism.</t>
        <ul spacing="normal">
          <li>
            <t>How it works: The 'Common Information' section would contain the shared parts of the Peer Up
Notification, such as:  </t>
            <ul spacing="normal">
              <li>
                <t>Identical local and remote capabilities (if negotiated to be the same across peers)</t>
              </li>
              <li>
                <t>Any other TLVs that are identical across the peer sessions</t>
              </li>
            </ul>
            <t>
Each distinct peer session is represented by a 'Wild Card Per-Peer Header' containing its
specific addressing information (Peer Address, Peer AS, etc.). Peer-specific details,
such as local address or unique TLVs, would be placed in the corresponding 'Per-Peer Information'
section.</t>
          </li>
          <li>
            <t>Benefit: When establishing sessions with a large group of similarly configured peers (e.g.,
route reflector clients or peers in a peer group), this aggregation avoids sending numerous
nearly identical Peer Up Notification messages. This significantly reduces the initial message
storm during network startup or maintenance operations.</t>
          </li>
        </ul>
        <t>Note: The effectiveness of this aggregation depends on the degree of commonality in session parameters.
   Peers within the same administrative group or those configured with identical templates are ideal
   candidates for this optimization.</t>
      </section>
      <section anchor="aggregation-of-statistics-reports">
        <name>Aggregation of Statistics Reports</name>
        <t>Statistics Reports messages, which convey various counter values per peer, can also benefit from
   the Multi-Peer Header mechanism, albeit with different trade-offs.</t>
        <ul spacing="normal">
          <li>
            <t>How it works: The 'Common Information' would typically contain only the Stat Type field
(identifying which counter is being reported). The actual counter values, which are almost
always peer-specific, are placed in the individual 'Per-Peer Information' sections along with
their respective 'Wild Card Per-Peer Headers'.</t>
          </li>
          <li>
            <t>Benefit: The primary optimization comes from header compression. Instead of sending N separate
BMP messages (each with its own Common Header and Per-Peer Header), a single aggregated message
carries one Common Header and multiple concise Per-Peer entries. This reduces:  </t>
            <ul spacing="normal">
              <li>
                <t>Network packet count (from N to 1)</t>
              </li>
              <li>
                <t>Processing overhead at both sender and receiver for handling multiple message headers</t>
              </li>
              <li>
                <t>Total bandwidth consumption by eliminating redundant header fields</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Notes:  </t>
            <ul spacing="normal">
              <li>
                <t>The aggregated message may become quite large if reporting statistics for many peers,
potentially exceeding the MTU and causing fragmentation. Implementations SHOULD provide
mechanisms to limit the number of peers included in a single aggregated message or to
split large reports appropriately.</t>
              </li>
              <li>
                <t>Since counter values are rarely identical across peers, the compression ratio for Statistics
Reports is generally lower than for other message types like Peer Down or Peer Up. However,
the reduction in protocol overhead remains significant.</t>
              </li>
              <li>
                <t>The timing of statistics collection and reporting should be considered. Aggregating
near-simultaneous reports from multiple peers maintains temporal coherence while reducing
message volume.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>All security considerations for BMP <xref target="RFC7854"/>apply equally to messages using the Multi-Peer
   Header mechanism.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests that IANA assign a following new message type
   in "BMP Message Types" registry of the BMP parameters namespace
   (https://www.iana.org/assignments/bmp-parameters/bmp-parameters.xhtml).</t>
      <ul spacing="normal">
        <li>
          <t>Type = TBD (recommended value: 7): Multi-Peer Header</t>
        </li>
      </ul>
      <t>Additionally, this document creates a new registry for "Multi-Peer Message Types"
   under the BMP parameters namespace. Future additions to this registry require
   either Standards Action or IESG Approval.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC7854" target="https://www.rfc-editor.org/info/rfc7854" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7854.xml">
        <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="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
  </back>

</rfc>
